gest366/templates/partitario_mastrino/pdfgen.partitario_mastrino.php

368 lines
15 KiB
PHP
Raw Permalink Normal View History

2021-02-24 20:40:04 +00:00
<?php
$idconto = $html->form( 'idconto' );
$module_name = "Piano dei conti";
include_once( $docroot."/lib/permissions_check.php" );
//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( "pdfgen_variables.php" );
//Calcolo il percorso piano dei conti
if( $html->form('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>&nbsp;&nbsp;&nbsp;&nbsp;".$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>&nbsp;&nbsp;".$percorso;
}
elseif( $html->form('lev') == '2' ){
$rs = $dbo->fetchArray("SELECT idpianodeiconti1, CONCAT_WS(' ', numero, descrizione ) AS descrizione FROM co_pianodeiconti2 WHERE id=\"".$idconto."\"");
$percorso = $rs[0]['descrizione']."<br>&nbsp;&nbsp;&nbsp;&nbsp;".$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>&nbsp;&nbsp;".$percorso;
}
elseif( $html->form('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>&nbsp;<br>&nbsp;";
}
$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|", date("d/m/Y", strtotime($_SESSION['period_start'])), $body );
$body = str_replace( "|period_end|", date("d/m/Y", strtotime($_SESSION['period_end'])), $body );
//Stampa da livello 3
if( $html->form('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>".number_format( abs($dare), get_var("Cifre decimali"), ",", "." )."</b></td><td class='bb padded text-right'><b>".number_format( abs($avere), get_var("Cifre decimali"), ",", "." )."</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 = number_format( abs($rs[$i]['totale']), get_var("Cifre decimali"), ",", "." );
$avere = "";
}
else{
$dare = "";
$avere = number_format( abs($rs[$i]['totale']), get_var("Cifre decimali"), ",", "." );
}
$body .= " <tr><td class='br bb padded text-center'>".date( "d/m/Y", strtotime($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>".number_format( abs($dare), get_var("Cifre decimali"), ",", "." )."</b></td><td class='bb padded text-right'><b>".number_format( abs($avere), get_var("Cifre decimali"), ",", "." )."</b></td></tr>\n";
$body .=" </tbody>
</table>\n";
}
//Stampa da livello 2
elseif( $html->form('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 = number_format( abs($totale), get_var("Cifre decimali"), ",", "." );
$avere = "";
}
else{
$dare = "";
$avere = number_format( abs($totale), get_var("Cifre decimali"), ",", "." );
}
//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( $html->form('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'>".number_format( abs($dare), get_var("Cifre decimali"), ",", "." )."</td><td class='bb padded text-right'>".number_format( abs($avere), get_var("Cifre decimali"), ",", "." )."</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'>".number_format( $ricavi, 2, ",", "." )."</th></tr>\n";
$body .= " <tr><th colspan='3' class='br bb padded'>COSTI</th><th align='right' class='bb padded'>".number_format( $costi, 2, ",", "." )."</th></tr>\n";
$body .= " <tr><th colspan='3' class='br padded'>UTILE</th><th class='padded' align='right'>".number_format( $ricavi - $costi, 2, ",", "." )."</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&Agrave;</th><th align='right' class='bb br padded'>".number_format( $totale_attivita, get_var("Cifre decimali"), ",", "." )."</th>\n";
//Passività
$body .= " <th class='br bb padded'>PASSIVIT&Agrave;</th><th align='right' class='bb padded'>".number_format( $totale_passivita, get_var("Cifre decimali"), ",", "." )."</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'>".number_format( abs($utile_perdita), get_var("Cifre decimali"), ",", "." )."</th>\n";
//Utile
$body .= " <th class='br bb padded'>&nbsp;</th><th align='right' class='bb padded'>&nbsp;</th></tr>\n";
} else {
//Perdita d'esercizio
$body .= " <tr><th class='br bb padded'>&nbsp;</th><th align='right' class='bb br padded'>&nbsp;</th>\n";
//Utile
$body .= " <th class='br bb padded'>UTILE</th><th align='right' class='bb padded'>".number_format( abs($utile_perdita), get_var("Cifre decimali"), ",", "." )."</th></tr>\n";
}
//PAREGGIO 1
$body .= " <tr><th class='br padded'>TOTALE A PAREGGIO</th><th align='right' class='br padded'>".number_format( $pareggio1, get_var("Cifre decimali"), ",", "." )."</th>\n";
//PAREGGIO 2
$body .= " <th class='br padded'>TOTALE A PAREGGIO</th><th align='right' class='padded'>".number_format( $pareggio2, get_var("Cifre decimali"), ",", "." )."</th></tr>\n";
}
$body .=" </tbody>
</table>\n";
}
$report_name = "mastrino.pdf";
?>