mirror of
https://github.com/devcode-it/openstamanager.git
synced 2024-12-29 01:00:00 +01:00
0f37c587e1
Aggiornamento della stampa del consuntivo del contratto al nuovo sistema. Miglioramento della gestione automatica della formattazione dei numeri con decimali predefiniti.
320 lines
15 KiB
PHP
320 lines
15 KiB
PHP
<?php
|
|
|
|
include_once __DIR__.'/../../core.php';
|
|
|
|
$idconto = get('idconto');
|
|
$module_name = 'Piano dei conti';
|
|
|
|
// carica report html
|
|
$report = file_get_contents($docroot.'/templates/partitario_mastrino/partitario.html');
|
|
$body = file_get_contents($docroot.'/templates/partitario_mastrino/partitario_body.html');
|
|
include_once $docroot.'/templates/pdfgen_variables.php';
|
|
|
|
// Calcolo il percorso piano dei conti
|
|
if (get('lev') == '3') {
|
|
$rs = $dbo->fetchArray("SELECT idpianodeiconti2, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti3 WHERE id=\"".$idconto.'"');
|
|
$percorso = $rs[0]['descrizione'];
|
|
$idpianodeiconti2 = $rs[0]['idpianodeiconti2'];
|
|
|
|
$rs = $dbo->fetchArray("SELECT idpianodeiconti1, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti2 WHERE id=\"".$idpianodeiconti2.'"');
|
|
$percorso = $rs[0]['descrizione'].'<br> '.$percorso;
|
|
$idpianodeiconti1 = $rs[0]['idpianodeiconti1'];
|
|
|
|
$rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idpianodeiconti1.'"');
|
|
|
|
($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico';
|
|
$percorso = $descrizione.'<br> '.$percorso;
|
|
} elseif (get('lev') == '2') {
|
|
$rs = $dbo->fetchArray("SELECT idpianodeiconti1, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti2 WHERE id=\"".$idconto.'"');
|
|
$percorso = $rs[0]['descrizione'].'<br> '.$percorso;
|
|
$idpianodeiconti1 = $rs[0]['idpianodeiconti1'];
|
|
|
|
$rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idpianodeiconti1.'"');
|
|
|
|
($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico';
|
|
$percorso = $descrizione.'<br> '.$percorso;
|
|
} elseif (get('lev') == '1') {
|
|
$rs = $dbo->fetchArray("SELECT CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti1 WHERE id=\"".$idconto.'"');
|
|
|
|
($rs[0]['descrizione'] == '01 Patrimoniale') ? $descrizione = 'Stato patrimoniale' : $descrizione = 'Conto economico';
|
|
$percorso = $descrizione.'<br> <br> ';
|
|
}
|
|
|
|
$body = str_replace('|percorso|', $percorso, $body);
|
|
$body = str_replace('|info_fornitore|', $f_ragionesociale.'<br>'.$f_indirizzo.'<br>'.$f_citta, $body);
|
|
$body = str_replace('|period_start|', Translator::dateToLocale($_SESSION['period_start']), $body);
|
|
$body = str_replace('|period_end|', Translator::dateToLocale($_SESSION['period_end']), $body);
|
|
|
|
// Stampa da livello 3
|
|
if (get('lev') == '3') {
|
|
$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'>
|
|
<tbody>\n";
|
|
|
|
// Inizializzo saldo finale
|
|
$saldo_finale = 0;
|
|
|
|
// Calcolo saldo iniziale
|
|
$rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"');
|
|
$saldo_iniziale = $rs[0]['totale'];
|
|
$saldo_finale = $saldo_iniziale;
|
|
|
|
if ($saldo_iniziale < 0) {
|
|
$dare = '';
|
|
$avere = abs($saldo_iniziale);
|
|
} else {
|
|
$dare = abs($saldo_iniziale);
|
|
$avere = '';
|
|
}
|
|
|
|
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'><b>SALDO INIZIALE</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";
|
|
|
|
$rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$idconto.'" 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 = Translator::numberToLocale(abs($rs[$i]['totale']));
|
|
$avere = '';
|
|
} else {
|
|
$dare = '';
|
|
$avere = Translator::numberToLocale(abs($rs[$i]['totale']));
|
|
}
|
|
|
|
$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'];
|
|
}
|
|
|
|
if ($saldo_finale < 0) {
|
|
$dare = '';
|
|
$avere = abs($saldo_finale);
|
|
} else {
|
|
$dare = abs($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 .= " </tbody>
|
|
</table>\n";
|
|
}
|
|
|
|
// Stampa da livello 2
|
|
elseif (get('lev') == '2') {
|
|
$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'>
|
|
<tbody>\n";
|
|
|
|
// Ciclo fra i sotto-conti di livello 2
|
|
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"');
|
|
|
|
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
|
// Inizializzo saldo finale
|
|
$saldo_finale = 0;
|
|
|
|
// 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;
|
|
|
|
if ($saldo_iniziale < 0) {
|
|
$dare = '';
|
|
$avere = abs($saldo_iniziale);
|
|
} else {
|
|
$dare = abs($saldo_iniziale);
|
|
$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']);
|
|
} else {
|
|
$avere += abs($rs[$i]['totale']);
|
|
}
|
|
}
|
|
|
|
$totale = $dare - $avere;
|
|
|
|
if ($totale >= 0) {
|
|
$dare = Translator::numberToLocale(abs($totale));
|
|
$avere = '';
|
|
} else {
|
|
$dare = '';
|
|
$avere = Translator::numberToLocale(abs($totale));
|
|
}
|
|
|
|
// Mostro il saldo finale del conto di livello 3
|
|
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".$dare."</td><td class='bb padded text-right'>".$avere."</td></tr>\n";
|
|
}
|
|
|
|
$body .= " </tbody>
|
|
</table>\n";
|
|
}
|
|
|
|
// Stampa completa bilancio
|
|
elseif (get('lev') == '1') {
|
|
$ricavi = 0;
|
|
$costi = 0;
|
|
$totale_attivita = 0;
|
|
$totale_passivita = 0;
|
|
|
|
$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'>
|
|
<tbody>\n";
|
|
|
|
// Ciclo fra il conto principale scelto (Economico o Patrimoniale)
|
|
$rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC');
|
|
|
|
for ($x = 0; $x < sizeof($rs1); ++$x) {
|
|
// Ciclo fra i sotto-conti di livello 1
|
|
$rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"');
|
|
|
|
for ($y = 0; $y < sizeof($rs2); ++$y) {
|
|
$body .= " <tr><th class='bb padded' colspan='4'><b>".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']."</b></th></tr>\n";
|
|
|
|
// Ciclo fra i sotto-conti di livello 2
|
|
$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;
|
|
|
|
$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']);
|
|
} else {
|
|
$avere += abs($rs[$i]['totale']);
|
|
}
|
|
}
|
|
|
|
$totale = $dare - $avere;
|
|
|
|
if ($totale >= 0) {
|
|
$dare = abs($totale);
|
|
$avere = 0;
|
|
$totale_attivita += $dare;
|
|
$costi += abs($dare);
|
|
} else {
|
|
$dare = 0;
|
|
$avere = abs($totale);
|
|
$totale_passivita += $avere;
|
|
$ricavi += abs($avere);
|
|
}
|
|
|
|
// Mostro il saldo finale del conto di livello 3
|
|
$body .= " <tr><td class='br bb padded'></td><td class='br bb padded'>".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."</td><td class='br bb padded text-right'>".Translator::numberToLocale(abs($dare))."</td><td class='bb padded text-right'>".Translator::numberToLocale(abs($avere))."</td></tr>\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
// 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";
|
|
}
|
|
|
|
// Stampa "Attività/Passività" se stato patrimoniale
|
|
else {
|
|
$costi = 0;
|
|
$ricavi = 0;
|
|
|
|
// 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');
|
|
|
|
for ($x = 0; $x < sizeof($rs1); ++$x) {
|
|
// Ciclo fra i sotto-conti di livello 1
|
|
$rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"');
|
|
|
|
for ($y = 0; $y < sizeof($rs2); ++$y) {
|
|
// Ciclo fra i sotto-conti di livello 2
|
|
$rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"');
|
|
|
|
for ($z = 0; $z < sizeof($rs3); ++$z) {
|
|
// Inizializzo saldo finale
|
|
$saldo_finale = 0;
|
|
|
|
// 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;
|
|
|
|
$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']);
|
|
} else {
|
|
$avere += abs($rs[$i]['totale']);
|
|
}
|
|
}
|
|
|
|
$totale = $dare - $avere;
|
|
|
|
if ($totale >= 0) {
|
|
$costi += abs($totale);
|
|
} else {
|
|
$ricavi += abs($totale);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$body .= " </tbody>\n";
|
|
$body .= " </table>\n";
|
|
|
|
// Tabella di riepilogo finale
|
|
$totale_attivita = abs($totale_attivita);
|
|
$totale_passivita = abs($totale_passivita);
|
|
$utile_perdita = abs($ricavi) - abs($costi);
|
|
|
|
if ($utile_perdita < 0) {
|
|
$pareggio1 = $totale_attivita + abs($utile_perdita);
|
|
$pareggio2 = abs($totale_passivita);
|
|
} else {
|
|
$pareggio1 = $totale_attivita;
|
|
$pareggio2 = abs($totale_passivita) + abs($utile_perdita);
|
|
}
|
|
|
|
$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='173'><col width='173'><col width='173'><col width='173'>
|
|
<tbody>\n";
|
|
|
|
// Attività
|
|
$body .= " <tr><th class='br bb padded'>TOTALE ATTIVITÀ</th><th align='right' class='bb br padded'>".Translator::numberToLocale($totale_attivita)."</th>\n";
|
|
|
|
// Passività
|
|
$body .= " <th class='br bb padded'>PASSIVITÀ</th><th align='right' class='bb padded'>".Translator::numberToLocale($totale_passivita)."</th></tr>\n";
|
|
|
|
if ($utile_perdita < 0) {
|
|
// Perdita d'esercizio
|
|
$body .= " <tr><th class='br bb padded'>PERDITA D'ESERCIZIO</th><th align='right' class='bb br padded'>".Translator::numberToLocale(abs($utile_perdita))."</th>\n";
|
|
|
|
// Utile
|
|
$body .= " <th class='br bb padded'> </th><th align='right' class='bb padded'> </th></tr>\n";
|
|
} else {
|
|
// Perdita d'esercizio
|
|
$body .= " <tr><th class='br bb padded'> </th><th align='right' class='bb br padded'> </th>\n";
|
|
|
|
// Utile
|
|
$body .= " <th class='br bb padded'>UTILE</th><th align='right' class='bb padded'>".Translator::numberToLocale(abs($utile_perdita))."</th></tr>\n";
|
|
}
|
|
|
|
// PAREGGIO 1
|
|
$body .= " <tr><th class='br padded'>TOTALE A PAREGGIO</th><th align='right' class='br padded'>".Translator::numberToLocale($pareggio1)."</th>\n";
|
|
|
|
// PAREGGIO 2
|
|
$body .= " <th class='br padded'>TOTALE A PAREGGIO</th><th align='right' class='padded'>".Translator::numberToLocale($pareggio2)."</th></tr>\n";
|
|
}
|
|
|
|
$body .= " </tbody>
|
|
</table>\n";
|
|
}
|
|
|
|
$report_name = 'mastrino.pdf';
|