From 07282fb4fcf8920e4208da9cff00f1c8ccdb4c1a Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Mon, 1 Feb 2021 16:02:41 +0100 Subject: [PATCH] Aggiunta stampa bilancio --- modules/partitario/edit.php | 1 + templates/bilancio/body.php | 300 ++++++++++++++++++++++++++++++++++ templates/bilancio/header.php | 26 +++ templates/bilancio/init.php | 82 ++++++++++ update/2_4_22.sql | 5 +- 5 files changed, 413 insertions(+), 1 deletion(-) create mode 100644 templates/bilancio/body.php create mode 100644 templates/bilancio/header.php create mode 100644 templates/bilancio/init.php diff --git a/modules/partitario/edit.php b/modules/partitario/edit.php index 561a51a96..230ef8aad 100755 --- a/modules/partitario/edit.php +++ b/modules/partitario/edit.php @@ -32,6 +32,7 @@ if ($bilancio_gia_aperto) { echo '
+ '.Prints::getLink('Bilancio', null, 'btn btn-lg btn-info', tr('Stampa bilancio'), 'fa fa-print').' diff --git a/templates/bilancio/body.php b/templates/bilancio/body.php new file mode 100644 index 000000000..b7daf203f --- /dev/null +++ b/templates/bilancio/body.php @@ -0,0 +1,300 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +// Stato Patrimoniale +echo ' +

Stato Patrimoniale

+ + + + + +
+ + + + + + + + + + + + + '; + // Mostra le righe delle attività + foreach($liv2_patrimoniale as $liv2_p){ + if($liv2_p['totale']>0){ + $totale_attivita += $liv2_p['totale']; + echo ' + + + + + '; + + foreach($liv3_patrimoniale as $liv3_p){ + // Visualizzo solo i conti di livello 3 relativi al conto di livello 2 + if($liv2_p['id'] == $liv3_p['idpianodeiconti2']){ + echo ' + + + + + '; + } + + } + if($liv2_p['descrizione']=="Crediti clienti e crediti diversi"){ + echo ' + + + + + '; + } elseif($liv2_p['descrizione']=="Debiti fornitori e debiti diversi") { + echo ' + + + + + '; + } + } + } + echo ' + + + + '; + if($utile_perdita>0){ + echo ' + + + + + + + + '; + } + echo ' + +
Attività
CONTODESCRIZIONESALDO
'.$liv2_p['numero'].''.$liv2_p['descrizione'].''.numberFormat($liv2_p['totale']).'
'.$liv3_p['numero'].''.$liv3_p['descrizione'].''.numberFormat($liv3_p['totale']).'
Clienti'.numberFormat($crediti_clienti).'
Fornitori'.numberFormat($debiti_fornitori).'
Totale Attività
'.numberFormat(abs($totale_attivita)).'
Perdita
'.numberFormat(abs($utile_perdita)).'
Totale a pareggio
'.numberFormat(abs($totale_attivita)+abs($utile_perdita)).'
+
+ + + + + + + + + + + + + + '; + $i=0; + // Mostra le righe delle passività + foreach($liv2_patrimoniale as $liv2_p){ + if($liv2_p['totale']<0){ + $totale_passivita += $liv2_p['totale']; + echo ' + + + + + '; + + foreach($liv3_patrimoniale as $liv3_p){ + if($liv2_p['id'] == $liv3_p['idpianodeiconti2']){ + echo ' + + + + + '; + } + } + if($liv2_p['descrizione']=="Crediti clienti e crediti diversi"){ + echo ' + + + + + '; + } elseif($liv2_p['descrizione']=="Debiti fornitori e debiti diversi") { + echo ' + + + + + '; + } + } + } + echo ' + + + + '; + if($utile_perdita<0){ + echo ' + + + + + + + + '; + } + echo ' + +
Passività
CONTODESCRIZIONESALDO
'.$liv2_p['numero'].''.$liv2_p['descrizione'].''.numberFormat(abs($liv2_p['totale'])).'
'.$liv3_p['numero'].''.$liv3_p['descrizione'].''.numberFormat(abs($liv3_p['totale'])).'
Clienti'.numberFormat(abs($crediti_clienti)).'
Fornitori'.numberFormat(abs($debiti_fornitori)).'
Totale Passività
'.numberFormat(abs($totale_passivita)).'
Utile
'.numberFormat(abs($utile_perdita)).'
Totale a pareggio
'.numberFormat(abs($totale_passivita)+abs($utile_perdita)).'
+
'; + +// Conto economico +echo ' + +

Conto Economico

+ + + + + +
+ + + + + + + + + + + + + '; + // Mostra le righe dei costi + foreach($liv2_economico as $liv2_e){ + if($liv2_e['totale']>0){ + $totale_costi += $liv2_e['totale']; + echo ' + + + + + '; + + foreach($liv3_economico as $liv3_e){ + if($liv2_e['id'] == $liv3_e['idpianodeiconti2']){ + echo ' + + + + + '; + } + } + } + } + echo ' + + + + '; + if($utile_perdita<0){ + echo ' + + + + + + + + '; + } + echo ' + +
Costi
CONTODESCRIZIONESALDO
'.$liv2_e['numero'].''.$liv2_e['descrizione'].''.numberFormat($liv2_e['totale']).'
'.$liv3_e['numero'].''.$liv3_e['descrizione'].''.numberFormat($liv3_e['totale']).'
Totale costi
'.numberFormat(abs($totale_costi)).'
Utile
'.numberFormat(abs($utile_perdita)).'
Totale a pareggio
'.numberFormat(abs($totale_costi)+abs($utile_perdita)).'
+
+ + + + + + + + + + + + + + '; + // Mostra le righe dei ricavi + foreach($liv2_economico as $liv2_e){ + if($liv2_e['totale']<0){ + $totale_ricavi += $liv2_e['totale']; + echo ' + + + + + '; + + foreach($liv3_economico as $liv3_e){ + if($liv2_e['id'] == $liv3_e['idpianodeiconti2']){ + echo ' + + + + + '; + } + } + } + } + echo ' + + + + '; + if($utile_perdita>0){ + echo ' + + + + + + + + '; + } + echo ' + +
Ricavi
CONTODESCRIZIONESALDO
'.$liv2_e['numero'].''.$liv2_e['descrizione'].''.numberFormat(abs($liv2_e['totale'])).'
'.$liv3_e['numero'].''.$liv3_e['descrizione'].''.numberFormat(abs($liv3_e['totale'])).'
Totale ricavi
'.numberFormat(abs($totale_ricavi)).'
Perdita
'.numberFormat(abs($utile_perdita)).'
Totale a pareggio
'.numberFormat(abs($totale_ricavi)+abs($utile_perdita)).'
+
'; \ No newline at end of file diff --git a/templates/bilancio/header.php b/templates/bilancio/header.php new file mode 100644 index 000000000..1bffe2534 --- /dev/null +++ b/templates/bilancio/header.php @@ -0,0 +1,26 @@ +. + */ + + +echo ' +
+
STAMPA BILANCIO '.dateFormat($date_start).' - '.dateFormat($date_end).'
+
'.$azienda['ragione_sociale'].'
+

+

ESERCIZIO '.$esercizio.'


'; \ No newline at end of file diff --git a/templates/bilancio/init.php b/templates/bilancio/init.php new file mode 100644 index 000000000..aaf7547a6 --- /dev/null +++ b/templates/bilancio/init.php @@ -0,0 +1,82 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +use Carbon\Carbon; + +$azienda = $dbo->fetchOne('SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica='.setting('Azienda predefinita')); +$date_start = $_SESSION['period_start']; +$date_end = $_SESSION['period_end']; +$esercizio = new Carbon($date_start); +$esercizio = $esercizio->format('Y'); + +$liv2_patrimoniale = $dbo->fetchArray('SELECT co_pianodeiconti2.numero AS numero, co_pianodeiconti2.descrizione AS descrizione, SUM(totale) AS totale, co_pianodeiconti2.id AS id FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Patrimoniale"))) AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end).' GROUP BY idpianodeiconti2 ORDER BY co_pianodeiconti2.numero'); + +$liv2_economico = $dbo->fetchArray('SELECT co_pianodeiconti2.numero AS numero, co_pianodeiconti2.descrizione AS descrizione, SUM(totale) AS totale, co_pianodeiconti2.id AS id FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Economico"))) AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end).' GROUP BY idpianodeiconti2 ORDER BY co_pianodeiconti2.numero'); + +$liv3_patrimoniale = $dbo->fetchArray('SELECT co_pianodeiconti3.numero AS numero, co_pianodeiconti3.descrizione AS descrizione, SUM(totale) AS totale, co_pianodeiconti3.idpianodeiconti2 AS idpianodeiconti2 FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Patrimoniale"))) AND idpianodeiconti2!='.prepare($fornitori).' AND co_pianodeiconti3.id NOT IN (SELECT idconto_cliente FROM an_anagrafiche) AND co_pianodeiconti3.id NOT IN (SELECT idconto_fornitore FROM an_anagrafiche) AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end).' GROUP BY idconto ORDER BY co_pianodeiconti2.numero'); + +$liv3_economico = $dbo->fetchArray('SELECT co_pianodeiconti3.numero AS numero, co_pianodeiconti3.descrizione AS descrizione, SUM(totale) AS totale, co_pianodeiconti3.idpianodeiconti2 AS idpianodeiconti2 FROM `co_movimenti` INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Economico"))) AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end).' GROUP BY idconto ORDER BY co_pianodeiconti2.numero'); + +$utile_perdita = $dbo->fetchOne('SELECT SUM(totale) AS totale FROM `co_movimenti` WHERE idconto IN(SELECT id FROM co_pianodeiconti3 WHERE idpianodeiconti2 IN(SELECT id FROM co_pianodeiconti2 WHERE idpianodeiconti1=(SELECT id FROM co_pianodeiconti1 WHERE descrizione="Economico")))AND co_movimenti.data>='.prepare($date_start).' AND co_movimenti.data<='.prepare($date_end))['totale']; + +$debiti_fornitori = $dbo->fetchArray(' +SELECT + co_pianodeiconti3.numero AS numero, + co_pianodeiconti3.descrizione AS descrizione, + SUM(totale) AS totale, + co_pianodeiconti3.idpianodeiconti2 AS idpianodeiconti2 +FROM + `co_movimenti` + INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id + INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id +WHERE + co_pianodeiconti2.descrizione="Debiti fornitori e debiti diversi" + AND co_pianodeiconti3.id IN (SELECT idconto_fornitore FROM an_anagrafiche) + AND co_movimenti.data>='.prepare($date_start).' + AND co_movimenti.data<='.prepare($date_end).' +GROUP BY + idconto +ORDER BY + co_pianodeiconti2.numero'); + +$debiti_fornitori = sum(array_column($debiti_fornitori, 'totale')); + +$crediti_clienti = $dbo->fetchArray(' +SELECT + co_pianodeiconti3.numero AS numero, + co_pianodeiconti3.descrizione AS descrizione, + SUM(totale) AS totale, + co_pianodeiconti3.idpianodeiconti2 AS idpianodeiconti2 +FROM + `co_movimenti` + INNER JOIN co_pianodeiconti3 ON co_movimenti.idconto=co_pianodeiconti3.id + INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id +WHERE + co_pianodeiconti2.descrizione="Crediti clienti e crediti diversi" + AND co_pianodeiconti3.id IN (SELECT idconto_cliente FROM an_anagrafiche) + AND co_movimenti.data>='.prepare($date_start).' + AND co_movimenti.data<='.prepare($date_end).' +GROUP BY + idconto +ORDER BY + co_pianodeiconti2.numero'); + +$crediti_clienti = sum(array_column($crediti_clienti, 'totale')); \ No newline at end of file diff --git a/update/2_4_22.sql b/update/2_4_22.sql index 89cf09827..443cefc4e 100644 --- a/update/2_4_22.sql +++ b/update/2_4_22.sql @@ -76,4 +76,7 @@ ALTER TABLE `co_movimenti_modelli` ADD `totale` DECIMAL(15,6) NOT NULL AFTER `id ALTER TABLE `co_preventivi` ADD `garanzia` TEXT NOT NULL AFTER `condizioni_fornitura`; -- Modificata lunghezza campo Partita iva -ALTER TABLE `an_anagrafiche` CHANGE `piva` `piva` VARCHAR(16) NOT NULL; \ No newline at end of file +ALTER TABLE `an_anagrafiche` CHANGE `piva` `piva` VARCHAR(16) NOT NULL; + +-- Aggiunta stampa bilancio +INSERT INTO `zz_prints` (`id`, `id_module`, `is_record`, `name`, `title`, `filename`, `directory`, `previous`, `options`, `icon`, `version`, `compatibility`, `order`, `predefined`, `default`, `enabled`) VALUES (NULL, (SELECT `id` FROM `zz_modules` WHERE name='Piano dei conti'), '1', 'Bilancio', 'Bilancio', 'Bilancio', 'bilancio', '', '', 'fa fa-print', '', '', '0', '0', '1', '1'); \ No newline at end of file