mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 00:46:44 +01:00
Merge branch 'master' into 2.4
This commit is contained in:
commit
a6844f502b
@ -96,7 +96,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom
|
||||
unset($pieces[$cont - 1]);
|
||||
}
|
||||
|
||||
$module_query = implode('ORDER', $pieces).' ORDER BY `'.$total['order_by'][$order['column']].'` '.$order['dir'];
|
||||
$module_query = implode('ORDER', $pieces).' ORDER BY '.$total['order_by'][$order['column']].' '.$order['dir'];
|
||||
}
|
||||
|
||||
// Calcolo di eventuali somme
|
||||
|
@ -23,6 +23,10 @@
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": ">=5.6",
|
||||
|
||||
"ext-mbstring": "*",
|
||||
"ext-pdo_mysql": "*",
|
||||
|
||||
"aluguest/ical-easy-reader": "^1.5",
|
||||
"danielstjules/stringy": "^3.1",
|
||||
"ezyang/htmlpurifier": "^4.8",
|
||||
@ -41,6 +45,9 @@
|
||||
"symfony/translation": "^3.3",
|
||||
"symfony/var-dumper": "^3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.10"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"": "src/"
|
||||
|
@ -40,6 +40,9 @@ menu:
|
||||
api:
|
||||
text: API
|
||||
relativeUrl: api.html
|
||||
contribuire:
|
||||
text: Contribuire
|
||||
relativeUrl: contributing.html
|
||||
structure:
|
||||
name: Approfondimenti
|
||||
items:
|
||||
|
@ -1,3 +1,7 @@
|
||||
---
|
||||
currentMenu: contribuire
|
||||
---
|
||||
|
||||
# Contribuire
|
||||
|
||||
Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto!
|
||||
@ -28,7 +32,7 @@ PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aum
|
||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs).
|
||||
|
||||
EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto.
|
||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
|
||||
La configurazione può essere trovata nel file [.editorconfig](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
|
||||
|
||||
Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti.
|
||||
|
@ -1,84 +0,0 @@
|
||||
---
|
||||
currentMenu: contribuire
|
||||
---
|
||||
|
||||
# Contribuire
|
||||
|
||||
Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto!
|
||||
|
||||
Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community.
|
||||
Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione...
|
||||
|
||||
Non serve essere degli esperti programmatori per aiutarci! :smile_cat:
|
||||
|
||||
Leggi le seguenti sezioni per scoprire come ti consigliamo di procedere.
|
||||
Se ti serve un aiuto, crea una issue su GitHub.
|
||||
|
||||
<!-- TOC depthFrom:2 depthTo:6 orderedList:false updateOnSave:true withLinks:true -->
|
||||
|
||||
- [Linee guida](#linee-guida)
|
||||
- [Codice di condotta](#codice-di-condotta)
|
||||
- [Stile del codice](#stile-del-codice)
|
||||
- [Prima contribuzione](#prima-contribuzione)
|
||||
- [Problemi di sicurezza](#problemi-di-sicurezza)
|
||||
- [Segnalare un bug](#segnalare-un-bug)
|
||||
- [Pull Request](#pull-request)
|
||||
- [Community](#community)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
## Linee guida
|
||||
|
||||
Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adottare alcune linee guida per facilitare la collaborazione tra più persone.
|
||||
|
||||
### Codice di condotta
|
||||
|
||||
Per il momento non abbiamo adottato un vero e proprio codice di condotta, ma ti chiediamo di essere il più civile possibile nel comunicare con gli altri per questo progetto.
|
||||
|
||||
### Stile del codice
|
||||
|
||||
Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo stile del codice:
|
||||
- [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)
|
||||
- [EditorConfig](http://editorconfig.org>)
|
||||
|
||||
PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità.
|
||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs).
|
||||
|
||||
EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto.
|
||||
La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig).
|
||||
|
||||
Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti.
|
||||
|
||||
## Prima contribuzione
|
||||
|
||||
Sei insicuro su cosa potresti lavorare per contribuire al progetto?
|
||||
|
||||
Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare.
|
||||
|
||||
## Problemi di sicurezza
|
||||
|
||||
Se trovi un problema di sicurezza, NON aprire una issue. Inviaci un'email all'indirizzo `info at openstamanager dot com`.
|
||||
|
||||
Per capire se hai individuato un problema di sicurezza, prova a farti queste domande:
|
||||
|
||||
* Posso accedere a qualcosa a cui non dovrei avere accesso?
|
||||
* Posso disabilitare qualcosa per altre persone?
|
||||
|
||||
Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza.
|
||||
Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email.
|
||||
|
||||
## Segnalare un bug
|
||||
|
||||
Se hai individuato un bug e desideri segnalarlo, apri una nuova issue provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/ISSUE_TEMPLATE.md).
|
||||
|
||||
Se vuoi suggerire una miglioramento di qualche tipo oppure una nuova funzionalità, sentiti libero di aprire una issue apposita dove spieghi dettagliatamente la modifica che vorresti, la sua utilità e il suo funzionamento generale
|
||||
|
||||
## Pull Request
|
||||
|
||||
Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nuova funzionalità, apri una nuova Pull Request provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/PULL_REQUEST_TEMPLATE.md).
|
||||
|
||||
## Community
|
||||
|
||||
Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo <http://www.openstamanager.com/forum/>.
|
||||
|
||||
Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente.
|
@ -170,7 +170,7 @@ switch (post('op')) {
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
foreach ($rs as $value) {
|
||||
$non_rimovibili = seriali_non_rimuovibili('id_riga_documenti', $value['id'], $dir);
|
||||
$non_rimovibili = seriali_non_rimuovibili('id_riga_documento', $value['id'], $dir);
|
||||
if (!empty($non_rimovibili)) {
|
||||
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
||||
|
||||
@ -293,14 +293,14 @@ switch (post('op')) {
|
||||
$idanagrafica = $rs[0]['idanagrafica'];
|
||||
$data = $rs[0]['data'];
|
||||
$codice = $rs[0]['codice'];
|
||||
|
||||
|
||||
//Fatturo le ore di lavoro raggruppate per costo orario
|
||||
$rst = $dbo->fetchArray('SELECT SUM( ROUND( TIMESTAMPDIFF( MINUTE, orario_inizio, orario_fine ) / 60, '.get_var('Cifre decimali per quantità').' ) ) AS tot_ore, SUM(prezzo_ore_consuntivo) AS tot_prezzo_ore_consuntivo, prezzo_ore_unitario FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).' GROUP BY prezzo_ore_unitario');
|
||||
|
||||
|
||||
//Aggiunta riga intervento sul documento
|
||||
for( $i=0; $i<sizeof($rst); $i++ ){
|
||||
for ($i = 0; $i < sizeof($rst); ++$i) {
|
||||
$ore = $rst[$i]['tot_ore'];
|
||||
|
||||
|
||||
// Calcolo iva
|
||||
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
|
||||
$rs = $dbo->fetchArray($query);
|
||||
@ -320,7 +320,7 @@ switch (post('op')) {
|
||||
$query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto"));
|
||||
$rs = $dbo->fetchArray($query);
|
||||
$ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale'];
|
||||
|
||||
|
||||
$query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
|
||||
$dbo->query($query);
|
||||
}
|
||||
|
@ -27,11 +27,43 @@ $_SESSION['superselect']['ddt'] = $dir;
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
|
||||
<?php
|
||||
if ($dir == 'entrata') {
|
||||
$rs2 = $dbo->fetchArray('SELECT piva, codice_fiscale, citta, indirizzo, cap, provincia FROM an_anagrafiche WHERE idanagrafica='.prepare($records[0]['idanagrafica']));
|
||||
$campi_mancanti = [];
|
||||
|
||||
if ($rs2[0]['piva'] == '') {
|
||||
if ($rs2[0]['codice_fiscale'] == '') {
|
||||
array_push($campi_mancanti, 'codice fiscale');
|
||||
}
|
||||
}
|
||||
if ($rs2[0]['citta'] == '') {
|
||||
array_push($campi_mancanti, 'citta');
|
||||
}
|
||||
if ($rs2[0]['indirizzo'] == '') {
|
||||
array_push($campi_mancanti, 'indirizzo');
|
||||
}
|
||||
if ($rs2[0]['cap'] == '') {
|
||||
array_push($campi_mancanti, 'C.A.P.');
|
||||
}
|
||||
|
||||
if (sizeof($campi_mancanti) > 0) {
|
||||
echo "<div class='alert alert-warning'><i class='fa fa-warning'></i> Prima di procedere alla stampa completa i seguenti campi dell'anagrafica:<br/><b>".implode(', ', $campi_mancanti).'</b><br/>
|
||||
'.Modules::link('Anagrafiche', $records[0]['idanagrafica'], tr('Vai alla scheda anagrafica'), null).'</div>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
<div class="pull-right">
|
||||
|
||||
<button type="button" class="btn btn-primary" onclick="if( confirm('Duplicare questa fattura?') ){ $('#form-copy').submit(); }"><i class="fa fa-copy"></i> <?php echo tr('Duplica fattura'); ?></button>
|
||||
|
||||
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <?php echo tr('Salva modifiche'); ?></button>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="row">
|
||||
@ -320,33 +352,12 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') {
|
||||
<div class="pull-right">
|
||||
<!-- Stampe -->
|
||||
<?php
|
||||
|
||||
//stampa solo per fatture di vendita
|
||||
if ($dir == 'entrata') {
|
||||
$rs2 = $dbo->fetchArray('SELECT piva, codice_fiscale, citta, indirizzo, cap, provincia FROM an_anagrafiche WHERE idanagrafica='.prepare($records[0]['idanagrafica']));
|
||||
$campi_mancanti = [];
|
||||
|
||||
if ($rs2[0]['piva'] == '') {
|
||||
if ($rs2[0]['codice_fiscale'] == '') {
|
||||
array_push($campi_mancanti, 'codice fiscale');
|
||||
}
|
||||
}
|
||||
if ($rs2[0]['citta'] == '') {
|
||||
array_push($campi_mancanti, 'citta');
|
||||
}
|
||||
if ($rs2[0]['indirizzo'] == '') {
|
||||
array_push($campi_mancanti, 'indirizzo');
|
||||
}
|
||||
if ($rs2[0]['cap'] == '') {
|
||||
array_push($campi_mancanti, 'C.A.P.');
|
||||
}
|
||||
|
||||
if ($dir == 'entrata') {
|
||||
if (sizeof($campi_mancanti) > 0) {
|
||||
echo "<div class='alert alert-warning'><i class='fa fa-warning'></i> Prima di procedere alla stampa completa i seguenti campi dell'anagrafica:<br/><b>".implode(', ', $campi_mancanti).'</b><br/>
|
||||
'.Modules::link('Anagrafiche', $records[0]['idanagrafica'], tr('Vai alla scheda anagrafica'), null).'</div>';
|
||||
} else {
|
||||
echo '{( "name": "button", "type": "print", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}';
|
||||
}
|
||||
if (sizeof($campi_mancanti) > 0) {
|
||||
echo '{( "name": "button", "type": "print", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "class": "btn-info disabled" )}';
|
||||
} else {
|
||||
echo '{( "name": "button", "type": "print", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -563,7 +563,7 @@ switch (post('op')) {
|
||||
if (directory($docroot.'/files/interventi')) {
|
||||
if (post('firma_base64') != '') {
|
||||
// Salvataggio firma
|
||||
$firma_file = 'firma_'.time().'.png';
|
||||
$firma_file = 'firma_'.time().'.jpg';
|
||||
$firma_nome = post('firma_nome');
|
||||
|
||||
$data = explode(',', post('firma_base64'));
|
||||
|
@ -33,7 +33,7 @@ if (get('anteprima') !== null) {
|
||||
}
|
||||
|
||||
?>
|
||||
<form action="<?php echo $rootdir; ?>/editor.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>" method="post" id="form-firma" class="hide">
|
||||
<form class="canvas" action="<?php echo $rootdir; ?>/editor.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>" method="post" id="form-firma">
|
||||
<input type="hidden" name="op" value="firma">
|
||||
<input type="hidden" name="backto" value="record-edit">
|
||||
|
||||
@ -74,7 +74,9 @@ if (get('anteprima') !== null) {
|
||||
saveButton = document.querySelector("[data-action=save]"),
|
||||
canvas = document.getElementById("canvas");
|
||||
|
||||
var signaturePad = new SignaturePad(canvas);
|
||||
var signaturePad = new SignaturePad(canvas, {
|
||||
backgroundColor: 'rgb(255,255,255)'
|
||||
});
|
||||
|
||||
function resizeCanvas() {
|
||||
image_data = signaturePad.toDataURL();
|
||||
@ -99,7 +101,7 @@ if (get('anteprima') !== null) {
|
||||
if (signaturePad.isEmpty()) {
|
||||
alert("Please provide signature first.");
|
||||
} else {
|
||||
image_data = signaturePad.toDataURL();
|
||||
image_data = signaturePad.toDataURL("image/jpeg", 100);
|
||||
$('#firma_base64').val(image_data);
|
||||
}
|
||||
});
|
||||
|
67
modules/interventi/bulk.php
Normal file
67
modules/interventi/bulk.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
switch (post('op')) {
|
||||
case 'export-bulk':
|
||||
$dir = DOCROOT.'/files/export_interventi/';
|
||||
directory($dir.'tmp/');
|
||||
|
||||
// Rimozione dei contenuti precedenti
|
||||
$files = glob($dir.'/*.zip');
|
||||
foreach ($files as $file) {
|
||||
delete($file);
|
||||
}
|
||||
|
||||
// Selezione delle fatture da stampare
|
||||
$records = $dbo->fetchArray('SELECT in_interventi.id, in_interventi.codice, data_richiesta, ragione_sociale FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE in_interventi.id IN('.implode(',', $id_records).')');
|
||||
|
||||
if (!empty($records)) {
|
||||
foreach ($records as $r) {
|
||||
//$numero = !empty($r['numero_esterno']) ? $r['numero_esterno'] : $r['numero'];
|
||||
$numero = $r['codice'];
|
||||
|
||||
$numero = str_replace(['/', '\\'], '-', $numero);
|
||||
|
||||
// Gestione della stampa
|
||||
$rapportino_nome = sanitizeFilename($numero.' '.date('Y_m_d', strtotime($r['data_richiesta'])).' '.$r['ragione_sociale'].'.pdf');
|
||||
$filename = slashes($dir.'tmp/'.$rapportino_nome);
|
||||
|
||||
$_GET['idintervento'] = $r['id']; // Fix temporaneo per la stampa
|
||||
$idintervento = $r['id']; // Fix temporaneo per la stampa
|
||||
//$ptype = ($r['descrizione'] == 'Fattura accompagnatoria di vendita') ? 'fatture_accompagnatorie' : 'fatture';
|
||||
|
||||
$ptype = 'interventi';
|
||||
|
||||
require DOCROOT.'/pdfgen.php';
|
||||
}
|
||||
|
||||
$dir = slashes($dir);
|
||||
$file = slashes($dir.'interventi_'.time().'.zip');
|
||||
|
||||
// Creazione zip
|
||||
if (extension_loaded('zip')) {
|
||||
create_zip($dir.'tmp/', $file);
|
||||
|
||||
// Invio al browser dello zip
|
||||
download($file);
|
||||
|
||||
// Rimozione dei contenuti
|
||||
delete($dir.'tmp/');
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return [
|
||||
'export-bulk' => [
|
||||
'text' => tr('Esporta stampe'),
|
||||
'data' => [
|
||||
'msg' => tr('Vuoi davvero esportare tutte le stampe in un archivio?'),
|
||||
'button' => tr('Procedi'),
|
||||
'class' => 'btn btn-lg btn-warning',
|
||||
'blank' => true,
|
||||
],
|
||||
],
|
||||
];
|
@ -189,12 +189,12 @@ switch (post('op')) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'adddescrizione':
|
||||
if (!empty($id_record)) {
|
||||
$descrizione = post('descrizione');
|
||||
$query = 'INSERT INTO or_righe_ordini(idordine, descrizione, is_descrizione) VALUES('.prepare($id_record).', '.prepare($descrizione).', 1)';
|
||||
|
||||
|
||||
if ($dbo->query($query)) {
|
||||
$_SESSION['infos'][] = tr('Riga descrittiva aggiunta!');
|
||||
}
|
||||
@ -287,10 +287,10 @@ switch (post('op')) {
|
||||
$iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
|
||||
$desc_iva = $rs[0]['descrizione'];
|
||||
|
||||
if($is_descrizione==0){
|
||||
if ($is_descrizione == 0) {
|
||||
// Modifica riga generica sul documento
|
||||
$query = 'UPDATE or_righe_ordini SET idiva='.prepare($idiva).', desc_iva='.prepare($rs[0]['descrizione']).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga);
|
||||
}else{
|
||||
} else {
|
||||
$query = 'UPDATE or_righe_ordini SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga);
|
||||
}
|
||||
if ($dbo->query($query)) {
|
||||
@ -313,7 +313,7 @@ switch (post('op')) {
|
||||
$rs = $dbo->fetchArray($query);
|
||||
|
||||
foreach ($rs as $value) {
|
||||
$non_rimovibili = seriali_non_rimuovibili('id_riga_documenti', $value['id'], $dir);
|
||||
$non_rimovibili = seriali_non_rimuovibili('id_riga_documento', $value['id'], $dir);
|
||||
if (!empty($non_rimovibili)) {
|
||||
$_SESSION['errors'][] = tr('Alcuni serial number sono già stati utilizzati!');
|
||||
|
||||
|
@ -11,11 +11,11 @@ $n1 = sizeof($rs1);
|
||||
|
||||
// Livello 1
|
||||
for ($x = 0; $x < $n1; ++$x) {
|
||||
$totale_attivita = 0.00;
|
||||
$totale_passivita = 0.00;
|
||||
$totale_attivita = [];
|
||||
$totale_passivita = [];
|
||||
|
||||
$costi = 0.00;
|
||||
$ricavi = 0.00;
|
||||
$costi = [];
|
||||
$ricavi = [];
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Economico') {
|
||||
echo "<hr><h2 class=\"pull-left\">Conto economico</h2>\n";
|
||||
@ -55,7 +55,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " <table class='table table-striped table-hover table-condensed' style='margin-bottom:0;'>\n";
|
||||
|
||||
for ($z = 0; $z < $n3; ++$z) {
|
||||
$totale_conto_liv3 = 0.00;
|
||||
$totale_conto_liv3 = [];
|
||||
|
||||
echo " <tr><td>\n";
|
||||
|
||||
@ -103,7 +103,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo ' <div id="conto_'.$rs3[$z]['id']."\" style=\"display:none;\">\n";
|
||||
|
||||
if (sizeof($rs) > 0) {
|
||||
$totale_conto_liv3 = 0.00;
|
||||
$totale_conto_liv3 = [];
|
||||
|
||||
echo " <table class='table table-bordered table-hover table-condensed table-striped'>\n";
|
||||
echo " <tr><th>Causale</th>\n";
|
||||
@ -118,7 +118,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
if ($rs[$i]['iddocumento'] != '') {
|
||||
$module = ($rs[$i]['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id'];
|
||||
echo "<a data-toggle='modal' data-title='Dettagli movimento...' data-target='#bs-popup' class='clickable' data-href='".$rootdir.'/modules/partitario/dettagli_movimento.php?id_movimento='.$rs[$i]['id'].'&id_conto='.$rs[$i]['idconto'].'&id_module='.$module."' >".$rs[$i]['descrizione']."</a>\n";
|
||||
// echo " <a href='".$rootdir.'/editor.php?id_module='.$module.'&id_record='.$rs[$i]['iddocumento']."'>".$rs[$i]['descrizione']."</a>\n";
|
||||
// echo " <a href='".$rootdir.'/editor.php?id_module='.$module.'&id_record='.$rs[$i]['iddocumento']."'>".$rs[$i]['descrizione']."</a>\n";
|
||||
} else {
|
||||
echo ' <span>'.$rs[$i]['descrizione']."</span>\n";
|
||||
}
|
||||
@ -138,9 +138,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " <td></td></tr>\n";
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
$totale_conto_liv3 += $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = $rs[$i]['totale'];
|
||||
} else {
|
||||
$totale_conto_liv3 -= $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = -$rs[$i]['totale'];
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,9 +151,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " </td>\n";
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
$totale_conto_liv3 += $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = $rs[$i]['totale'];
|
||||
} else {
|
||||
$totale_conto_liv3 -= $rs[$i]['totale'];
|
||||
$totale_conto_liv3[] = -$rs[$i]['totale'];
|
||||
}
|
||||
}
|
||||
echo " </td></tr>\n";
|
||||
@ -161,16 +161,16 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
|
||||
// Somma dei totali
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
if ($totale_conto_liv3 > 0) {
|
||||
$totale_attivita += $totale_conto_liv3;
|
||||
if (sum($totale_conto_liv3) > 0) {
|
||||
$totale_attivita[] = abs(sum($totale_conto_liv3));
|
||||
} else {
|
||||
$totale_passivita += $totale_conto_liv3;
|
||||
$totale_passivita[] = abs(sum($totale_conto_liv3));
|
||||
}
|
||||
} else {
|
||||
if ($totale_conto_liv3 > 0) {
|
||||
$totale_ricavi += $totale_conto_liv3;
|
||||
if (sum($totale_conto_liv3) > 0) {
|
||||
$totale_ricavi[] = abs(sum($totale_conto_liv3));
|
||||
} else {
|
||||
$totale_costi += $totale_conto_liv3;
|
||||
$totale_costi[] = abs(sum($totale_conto_liv3));
|
||||
}
|
||||
}
|
||||
echo " </table>\n";
|
||||
@ -179,7 +179,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " </td>\n";
|
||||
|
||||
echo " <td width='100' align='right' valign='top'>\n";
|
||||
echo Translator::numberToLocale($totale_conto_liv3)." €\n";
|
||||
echo Translator::numberToLocale(sum($totale_conto_liv3))." €\n";
|
||||
echo " </td></tr>\n";
|
||||
} // Fine livello3
|
||||
|
||||
@ -194,9 +194,9 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
|
||||
if ($rs1[$x]['descrizione'] == 'Patrimoniale') {
|
||||
// Riepilogo
|
||||
$attivita = abs($totale_attivita);
|
||||
$passivita = abs($totale_passivita);
|
||||
$utile_perdita = abs($totale_ricavi) - abs($totale_costi);
|
||||
$attivita = abs(sum($totale_attivita));
|
||||
$passivita = abs(sum($totale_passivita));
|
||||
$utile_perdita = abs(sum($totale_ricavi)) - abs(sum($totale_costi));
|
||||
if ($utile_perdita < 0) {
|
||||
$pareggio1 = $attivita + abs($utile_perdita);
|
||||
$pareggio2 = abs($passivita);
|
||||
@ -231,7 +231,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " <p align='right'><big>Perdita d'esercizio:</big></p>\n";
|
||||
echo "</th>\n";
|
||||
echo "<td align='right'>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale($utile_perdita)." €</big></p>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale(sum($utile_perdita))." €</big></p>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td></td>\n";
|
||||
echo "<td></td><td></td></tr>\n";
|
||||
@ -240,7 +240,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " <p align='right'><big>Utile:</big></p>\n";
|
||||
echo "</th>\n";
|
||||
echo "<td align='right'>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale($utile_perdita)." €</big></p>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale(sum($utile_perdita))." €</big></p>\n";
|
||||
echo "</td></tr>\n";
|
||||
}
|
||||
|
||||
@ -249,7 +249,7 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
||||
echo "</th>\n";
|
||||
echo "<td align='right'>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale($pareggio1)." €</big></p>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale(sum($pareggio1))." €</big></p>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td></td>\n";
|
||||
|
||||
@ -258,13 +258,13 @@ for ($x = 0; $x < $n1; ++$x) {
|
||||
echo " <p align='right'><big>Totale a pareggio:</big></p>\n";
|
||||
echo "</th>\n";
|
||||
echo "<td align='right'>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale($pareggio2)." €</big></p>\n";
|
||||
echo " <p align='right'><big>".Translator::numberToLocale(sum($pareggio2))." €</big></p>\n";
|
||||
echo "</td></tr>\n";
|
||||
|
||||
echo '</table>';
|
||||
} else {
|
||||
echo "<p align='right'><big><b>RICAVI:</b> ".Translator::numberToLocale($totale_ricavi)." €</big></p>\n";
|
||||
echo "<p align='right'><big><b>COSTI:</b> ".Translator::numberToLocale(abs($totale_costi))." €</big></p>\n";
|
||||
echo "<p align='right'><big><b>UTILE/PERDITA:</b> ".Translator::numberToLocale($totale_ricavi - abs($totale_costi))." €</big></p>\n";
|
||||
echo "<p align='right'><big><b>RICAVI:</b> ".Translator::numberToLocale(sum($totale_ricavi))." €</big></p>\n";
|
||||
echo "<p align='right'><big><b>COSTI:</b> ".Translator::numberToLocale(sum(abs($totale_costi)))." €</big></p>\n";
|
||||
echo "<p align='right'><big><b>UTILE/PERDITA:</b> ".Translator::numberToLocale(sum($totale_ricavi) - sum(abs($totale_costi)))." €</big></p>\n";
|
||||
}
|
||||
}
|
||||
|
@ -38,8 +38,8 @@ $d1 = new DateTime($start);
|
||||
$d2 = new DateTime($end);
|
||||
$count = $d1->diff($d2)->m + ($d1->diff($d2)->y * 12) + 1;
|
||||
|
||||
$fatturato = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||
$acquisti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||
$fatturato = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||
$acquisti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, YEAR(co_documenti.data) AS year, MONTH(co_documenti.data) AS month FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='uscita' AND co_tipidocumento.descrizione!='Bozza' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY YEAR(co_documenti.data), MONTH(co_documenti.data) ORDER BY YEAR(co_documenti.data) ASC, MONTH(co_documenti.data) ASC');
|
||||
|
||||
$month = intval($d1->format('m')) - 1;
|
||||
for ($i = 0; $i < $count; ++$i) {
|
||||
@ -111,9 +111,9 @@ $(document).ready(function() {
|
||||
</script>';
|
||||
|
||||
// Clienti top
|
||||
$clienti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15');
|
||||
$clienti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15');
|
||||
|
||||
$totale = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end));
|
||||
$totale = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end));
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
|
@ -87,7 +87,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"gulp": "gulp",
|
||||
"release-OSM": "yarn run develop-OSM && gulp release",
|
||||
"release-OSM": "yarn run develop-OSM && php composer.phar install --no-dev && gulp release",
|
||||
"develop-OSM": "yarn install && yarn run install-OSM && yarn run assets-OSM",
|
||||
"install-OSM": "php composer.phar update",
|
||||
"assets-OSM": "yarn upgrade && yarn run build-OSM",
|
||||
|
@ -6,7 +6,7 @@ $default_header$
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<!-- Dati Fattura -->
|
||||
<!-- Dati Ddt -->
|
||||
<div class="col-xs-6">
|
||||
<div class="text-center" style="height:5mm;">
|
||||
<b>$tipo_doc$</b>
|
||||
@ -61,7 +61,7 @@ $default_header$
|
||||
<td class="border-full" style="height:20mm;">
|
||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||
<p>$c_ragionesociale$</p>
|
||||
<p>$c_indirizzo$ $c_citta_full$</p>
|
||||
<p>$c_indirizzo$<br>$c_citta_full$</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
@ -65,7 +65,7 @@ $default_header$
|
||||
<td colspan=2 class="border-full"'.(!$fattura_accompagnatoria ? ' style="height:20mm;"' : '').'>
|
||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||
<p>$c_ragionesociale$</p>
|
||||
<p>$c_indirizzo$ $c_citta_full$</p>
|
||||
<p>$c_indirizzo$<br>$c_citta_full$</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
@ -24,7 +24,7 @@ echo "
|
||||
<th class='text-center' style='width:50%'>".tr('Descrizione', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:10%'>".tr('Q.tà', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:15%'>".tr('Prezzo unitario', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:15%'>".tr('Imponibile', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:15%'>".tr('Importo', [], ['upper' => true])."</th>
|
||||
<th class='text-center' style='width:10%'>".tr('IVA', [], ['upper' => true]).' (%)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -4,30 +4,51 @@ echo '
|
||||
$default_header$
|
||||
<br>
|
||||
|
||||
<div class="text-center" style="height:5mm;">
|
||||
<b>$tipo_doc$</b>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td class="border-full text-center">
|
||||
<p class="small-bold">'.tr('Nr. documento', [], ['upper' => true]).'</p>
|
||||
<p>$numero_doc$</p>
|
||||
</td>
|
||||
<!-- Dati Ordine -->
|
||||
<div class="col-xs-6">
|
||||
<div class="text-center" style="height:5mm;">
|
||||
<b>$tipo_doc$</b>
|
||||
</div>
|
||||
|
||||
<td class="border-right border-bottom border-top text-center">
|
||||
<p class="small-bold">'.tr('Data documento', [], ['upper' => true]).'</p>
|
||||
<p>$data$</p>
|
||||
</td>
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<td class="border-full text-center">
|
||||
<p class="small-bold">'.tr('Nr. documento', [], ['upper' => true]).'</p>
|
||||
<p>$numero_doc$</p>
|
||||
</td>
|
||||
|
||||
<td class="border-right border-bottom border-top text-center">
|
||||
<p class="small-bold">'.tr('Pagamanto', [], ['upper' => true]).'</p>
|
||||
<p>$pagamento$</p>
|
||||
</td>
|
||||
<td class="border-right border-bottom border-top text-center">
|
||||
<p class="small-bold">'.tr('Data documento', [], ['upper' => true]).'</p>
|
||||
<p>$data$</p>
|
||||
</td>
|
||||
|
||||
<td class="border-right border-bottom border-top center text-center">
|
||||
<p class="small-bold">'.tr('Foglio', [], ['upper' => true]).'</p>
|
||||
<p>{PAGENO}/{nb}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>';
|
||||
<td class="border-right border-bottom border-top text-center">
|
||||
<p class="small-bold">'.tr('Pagamento', [], ['upper' => true]).'</p>
|
||||
<p>$pagamento$</p>
|
||||
</td>
|
||||
|
||||
<td class="border-right border-bottom border-top center text-center">
|
||||
<p class="small-bold">'.tr('Foglio', [], ['upper' => true]).'</p>
|
||||
<p>{PAGENO}/{nb}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Dati Cliente/Fornitore -->
|
||||
<div class="col-xs-5 col-xs-offset-1">
|
||||
<table class="table" style="width:100%;margin-top:5mm;">
|
||||
<tr>
|
||||
<td class="border-full" style="height:20mm;">
|
||||
<p class="small-bold">'.tr('Spett.le', [], ['upper' => true]).'</p>
|
||||
<p>$c_ragionesociale$</p>
|
||||
<p>$c_indirizzo$<br> $c_citta_full$</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
</div>';
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
$module_name = 'Preventivi';
|
||||
$module_name = 'Ordini';
|
||||
|
||||
// Lettura info fattura
|
||||
$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM or_tipiordine WHERE or_tipiordine.id=idtipoordine) AS tipo_doc, (SELECT descrizione FROM co_pagamenti WHERE id=idpagamento) AS tipo_pagamento FROM or_ordini WHERE id='.prepare($id_record));
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'header-height' => 55,
|
||||
'header-height' => 65,
|
||||
];
|
||||
|
@ -52,7 +52,7 @@ if ($_GET['lev'] == '3') {
|
||||
<tbody>\n";
|
||||
|
||||
// Inizializzo saldo finale
|
||||
$saldo_finale = 0;
|
||||
$saldo_finale = [];
|
||||
|
||||
// Calcolo saldo iniziale
|
||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
|
||||
@ -82,19 +82,19 @@ if ($_GET['lev'] == '3') {
|
||||
|
||||
$body .= " <tr><td class='br bb padded text-center'>".Translator::dateToLocale($rs[$i]['data'])."</td><td class='br bb padded'>".$rs[$i]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
|
||||
|
||||
$saldo_finale += $rs[$i]['totale'];
|
||||
$saldo_finale[] = $rs[$i]['totale'];
|
||||
}
|
||||
|
||||
if ($saldo_finale < 0) {
|
||||
if ( sum($saldo_finale) < 0) {
|
||||
$dare = '';
|
||||
$avere = abs($saldo_finale);
|
||||
$avere = abs( sum($saldo_finale) );
|
||||
} else {
|
||||
$dare = abs($saldo_finale);
|
||||
$dare = abs( sum($saldo_finale) );
|
||||
$avere = '';
|
||||
}
|
||||
|
||||
// Mostro il saldo finale
|
||||
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO FINALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale(abs($dare))."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale(abs($avere))."</b></td></tr>\n";
|
||||
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO FINALE</b></td><td class='br bb padded text-right'><b>".Translator::numberToLocale( abs( sum($dare) ) )."</b></td><td class='bb padded text-right'><b>".Translator::numberToLocale( abs( sum($avere) ) )."</b></td></tr>\n";
|
||||
|
||||
$body .= " </tbody>
|
||||
</table>\n";
|
||||
@ -110,33 +110,34 @@ elseif ($_GET['lev'] == '2') {
|
||||
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
|
||||
|
||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||
$v_dare = [];
|
||||
$v_avere = [];
|
||||
|
||||
// Inizializzo saldo finale
|
||||
$saldo_finale = 0;
|
||||
$saldo_finale = [];
|
||||
|
||||
// Calcolo saldo iniziale
|
||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
||||
$saldo_iniziale = $rs[0]['totale'];
|
||||
$saldo_finale = $saldo_iniziale;
|
||||
$saldo_finale[] = $saldo_iniziale;
|
||||
|
||||
if ($saldo_iniziale < 0) {
|
||||
$dare = '';
|
||||
$avere = abs($saldo_iniziale);
|
||||
if ( $saldo_iniziale < 0) {
|
||||
$v_avere[] = abs( $saldo_iniziale );
|
||||
} else {
|
||||
$dare = abs($saldo_iniziale);
|
||||
$avere = '';
|
||||
$v_dare[] = abs( $saldo_iniziale );
|
||||
}
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rs[$i]['totale'] >= 0) {
|
||||
$dare += abs($rs[$i]['totale']);
|
||||
$v_dare[] = abs($rs[$i]['totale']);
|
||||
} else {
|
||||
$avere += abs($rs[$i]['totale']);
|
||||
$v_avere[] = abs($rs[$i]['totale']);
|
||||
}
|
||||
}
|
||||
|
||||
$totale = $dare - $avere;
|
||||
$totale = sum($v_dare) - sum($v_avere);
|
||||
|
||||
if ($totale >= 0) {
|
||||
$dare = Translator::numberToLocale(abs($totale));
|
||||
@ -155,11 +156,11 @@ elseif ($_GET['lev'] == '2') {
|
||||
}
|
||||
|
||||
// Stampa completa bilancio
|
||||
elseif ($_GET['lev'] == '1') {
|
||||
$ricavi = 0;
|
||||
$costi = 0;
|
||||
$totale_attivita = 0;
|
||||
$totale_passivita = 0;
|
||||
elseif (get('lev') == '1') {
|
||||
$ricavi = [];
|
||||
$costi = [];
|
||||
$totale_attivita = [];
|
||||
$totale_passivita = [];
|
||||
|
||||
$body .= "<table style='table-layout:fixed; border-bottom:1px solid #777; border-right:1px solid #777; border-left:1px solid #777;' cellpadding='0' cellspacing='0'>
|
||||
<col width='80'><col width='452'><col width='80'><col width='80'>
|
||||
@ -179,31 +180,31 @@ elseif ($_GET['lev'] == '1') {
|
||||
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
|
||||
|
||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||
$dare = 0;
|
||||
$avere = 0;
|
||||
$v_dare = [];
|
||||
$v_avere = [];
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rs[$i]['totale'] >= 0) {
|
||||
$dare += abs($rs[$i]['totale']);
|
||||
$v_dare[] = abs($rs[$i]['totale']);
|
||||
} else {
|
||||
$avere += abs($rs[$i]['totale']);
|
||||
$v_avere[] = abs($rs[$i]['totale']);
|
||||
}
|
||||
}
|
||||
|
||||
$totale = $dare - $avere;
|
||||
$totale = sum($v_dare) - sum($v_avere);
|
||||
|
||||
if ($totale >= 0) {
|
||||
$dare = abs($totale);
|
||||
$avere = 0;
|
||||
$totale_attivita += $dare;
|
||||
$costi += abs($dare);
|
||||
$totale_attivita[] = $dare;
|
||||
$costi[] = abs($dare);
|
||||
} else {
|
||||
$dare = 0;
|
||||
$avere = abs($totale);
|
||||
$totale_passivita += $avere;
|
||||
$ricavi += abs($avere);
|
||||
$totale_passivita[] = $avere;
|
||||
$ricavi[] = abs($avere);
|
||||
}
|
||||
|
||||
// Mostro il saldo finale del conto di livello 3
|
||||
@ -214,15 +215,15 @@ elseif ($_GET['lev'] == '1') {
|
||||
|
||||
// Stampa "Costi/Ricavi" se conto economico
|
||||
if ($rs1[0]['descrizione'] == 'Economico') {
|
||||
$body .= " <tr><th colspan='3' class='br bb padded'>RICAVI</th><th align='right' class='bb padded'>".Translator::numberToLocale($ricavi)."</th></tr>\n";
|
||||
$body .= " <tr><th colspan='3' class='br bb padded'>COSTI</th><th align='right' class='bb padded'>".Translator::numberToLocale($costi)."</th></tr>\n";
|
||||
$body .= " <tr><th colspan='3' class='br padded'>UTILE</th><th class='padded' align='right'>".Translator::numberToLocale($ricavi - $costi)."</th></tr>\n";
|
||||
$body .= " <tr><th colspan='3' class='br bb padded'>RICAVI</th><th align='right' class='bb padded'>".Translator::numberToLocale( sum($ricavi) )."</th></tr>\n";
|
||||
$body .= " <tr><th colspan='3' class='br bb padded'>COSTI</th><th align='right' class='bb padded'>".Translator::numberToLocale( sum($costi) )."</th></tr>\n";
|
||||
$body .= " <tr><th colspan='3' class='br padded'>UTILE</th><th class='padded' align='right'>".Translator::numberToLocale( sum($ricavi) - sum($costi) )."</th></tr>\n";
|
||||
}
|
||||
|
||||
// Stampa "Attività/Passività" se stato patrimoniale
|
||||
else {
|
||||
$costi = 0;
|
||||
$ricavi = 0;
|
||||
$costi = [];
|
||||
$ricavi = [];
|
||||
|
||||
// Ciclo fra il conto economico per calcolare l'utile o la perdita
|
||||
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE NOT id="'.$idconto.'" ORDER BY numero DESC');
|
||||
@ -237,29 +238,29 @@ elseif ($_GET['lev'] == '1') {
|
||||
|
||||
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
||||
// Inizializzo saldo finale
|
||||
$saldo_finale = 0;
|
||||
$saldo_finale = [];
|
||||
|
||||
// Calcolo saldo iniziale
|
||||
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$_SESSION['period_start'].'"');
|
||||
$dare = 0;
|
||||
$avere = 0;
|
||||
$dare = [];
|
||||
$avere = [];
|
||||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC');
|
||||
|
||||
for ($i = 0; $i < sizeof($rs); ++$i) {
|
||||
if ($rs[$i]['totale'] >= 0) {
|
||||
$dare += abs($rs[$i]['totale']);
|
||||
$dare[] = abs($rs[$i]['totale']);
|
||||
} else {
|
||||
$avere += abs($rs[$i]['totale']);
|
||||
$avere[] = abs($rs[$i]['totale']);
|
||||
}
|
||||
}
|
||||
|
||||
$totale = $dare - $avere;
|
||||
$totale = sum($dare) - sum($avere);
|
||||
|
||||
if ($totale >= 0) {
|
||||
$costi += abs($totale);
|
||||
$costi[] = abs($totale);
|
||||
} else {
|
||||
$ricavi += abs($totale);
|
||||
$ricavi[] = abs($totale);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -269,9 +270,9 @@ elseif ($_GET['lev'] == '1') {
|
||||
$body .= " </table>\n";
|
||||
|
||||
// Tabella di riepilogo finale
|
||||
$totale_attivita = abs($totale_attivita);
|
||||
$totale_passivita = abs($totale_passivita);
|
||||
$utile_perdita = abs($ricavi) - abs($costi);
|
||||
$totale_attivita = abs( sum($totale_attivita) );
|
||||
$totale_passivita = abs( sum($totale_passivita) );
|
||||
$utile_perdita = abs( sum($ricavi) ) - abs( sum($costi) );
|
||||
|
||||
if ($utile_perdita < 0) {
|
||||
$pareggio1 = $totale_attivita + abs($utile_perdita);
|
||||
|
@ -86,6 +86,7 @@ if (!empty($interventi)) {
|
||||
$int = array_merge($int, get_costi_intervento($int['id']));
|
||||
$int['sconto'] = ($int['manodopera_addebito'] - $int['manodopera_scontato']) + ($int['viaggio_addebito'] - $int['viaggio_scontato']);
|
||||
$int['subtotale'] = $int['manodopera_scontato'] + $int['viaggio_scontato'];
|
||||
$sconto[] = $int['sconto_globale'];
|
||||
|
||||
echo '
|
||||
<tr>
|
||||
@ -205,7 +206,7 @@ if (!empty($interventi)) {
|
||||
|
||||
// Articoli per intervento
|
||||
foreach ($interventi as $int) {
|
||||
$righe = $dbo->fetchArray("SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice, (SELECT CONCAT_WS(serial, 'SN: ', ', ') FROM mg_prodotti WHERE mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo) AS serials FROM `mg_articoli_interventi` WHERE idintervento =".prepare($int['id']).' ORDER BY idarticolo ASC');
|
||||
$righe = $dbo->fetchArray("SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice, (SELECT CONCAT_WS(serial, 'SN: ', ', ') FROM mg_prodotti WHERE mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo AND mg_prodotti.id_riga_intervento = mg_articoli_interventi.idintervento) AS serials FROM `mg_articoli_interventi` WHERE idintervento =".prepare($int['id']).' ORDER BY idarticolo ASC');
|
||||
|
||||
foreach ($righe as $r) {
|
||||
echo '
|
||||
|
@ -7,3 +7,13 @@ ALTER TABLE `zz_files` ADD `id_plugin` int(11) AFTER `id_module`;
|
||||
-- Aggiunto valore NULL a idarticolo in co_righe2_contratti
|
||||
-- ALTER TABLE `co_righe2_contratti` CHANGE `idarticolo` `idarticolo` int(11);
|
||||
-- UPDATE `co_righe2_contratti` SET `idarticolo` = NULL WHERE `idarticolo` = 0;
|
||||
|
||||
-- Aggiornamento ORDER BY nei moduli Fatture, DDT, Ordini, Preventivi, Contratti e Interventi
|
||||
UPDATE `zz_views` SET `order_by` = 'CAST(numero_esterno AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Fatture di vendita', 'Fatture di acquisto', 'Ordini cliente', 'Ordini fornitore', 'Ddt di vendita', 'Ddt di acquisto'));
|
||||
|
||||
UPDATE `zz_views` SET `order_by` = 'CAST(in_interventi.codice AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi');
|
||||
|
||||
UPDATE `zz_views` SET `order_by` = 'CAST(numero AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Ordini Preventivi', 'Contratti'));
|
||||
|
||||
-- Query per ignorare i punti nella ricerca in Ragione sociale
|
||||
-- UPDATE `zz_views` SET `search_inside` = CONCAT('REPLACE(', `query`, ', ''.'', '''') LIKE |search|') WHERE `name` = 'Ragione sociale';
|
||||
|
Loading…
x
Reference in New Issue
Block a user