2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
2017-09-04 10:24:44 +02:00
$idconto = get ( 'idconto' );
2017-08-04 16:28:16 +02:00
$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
2017-09-04 10:24:44 +02:00
if ( get ( 'lev' ) == '3' ) {
2017-08-04 16:28:16 +02:00
$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 ;
2017-09-04 10:24:44 +02:00
} elseif ( get ( 'lev' ) == '2' ) {
2017-08-04 16:28:16 +02:00
$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 ;
2017-09-04 10:24:44 +02:00
} elseif ( get ( 'lev' ) == '1' ) {
2017-08-04 16:28:16 +02:00
$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
2017-09-04 10:24:44 +02:00
if ( get ( 'lev' ) == '3' ) {
2017-08-04 16:28:16 +02:00
$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 = '' ;
}
2017-09-21 10:01:07 +02:00
$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 " ;
2017-08-04 16:28:16 +02:00
$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 ) {
2017-09-21 10:01:07 +02:00
$dare = Translator :: numberToLocale ( abs ( $rs [ $i ][ 'totale' ]));
2017-08-04 16:28:16 +02:00
$avere = '' ;
} else {
$dare = '' ;
2017-09-21 10:01:07 +02:00
$avere = Translator :: numberToLocale ( abs ( $rs [ $i ][ 'totale' ]));
2017-08-04 16:28:16 +02:00
}
$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
2017-09-21 10:01:07 +02:00
$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 " ;
2017-08-04 16:28:16 +02:00
$body .= " </tbody>
</ table > \n " ;
}
// Stampa da livello 2
2017-09-04 10:24:44 +02:00
elseif ( get ( 'lev' ) == '2' ) {
2017-08-04 16:28:16 +02:00
$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 ) {
2017-09-21 10:01:07 +02:00
$dare = Translator :: numberToLocale ( abs ( $totale ));
2017-08-04 16:28:16 +02:00
$avere = '' ;
} else {
$dare = '' ;
2017-09-21 10:01:07 +02:00
$avere = Translator :: numberToLocale ( abs ( $totale ));
2017-08-04 16:28:16 +02:00
}
// 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
2017-09-04 10:24:44 +02:00
elseif ( get ( 'lev' ) == '1' ) {
2017-08-04 16:28:16 +02:00
$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
2017-09-21 10:01:07 +02:00
$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 " ;
2017-08-04 16:28:16 +02:00
}
}
}
// Stampa "Costi/Ricavi" se conto economico
if ( $rs1 [ 0 ][ 'descrizione' ] == 'Economico' ) {
2017-09-21 10:01:07 +02:00
$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 " ;
2017-08-04 16:28:16 +02:00
}
// 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à
2017-09-21 10:01:07 +02:00
$body .= " <tr><th class='br bb padded'>TOTALE ATTIVITÀ</th><th align='right' class='bb br padded'> " . Translator :: numberToLocale ( $totale_attivita ) . " </th> \n " ;
2017-08-04 16:28:16 +02:00
// Passività
2017-09-21 10:01:07 +02:00
$body .= " <th class='br bb padded'>PASSIVITÀ</th><th align='right' class='bb padded'> " . Translator :: numberToLocale ( $totale_passivita ) . " </th></tr> \n " ;
2017-08-04 16:28:16 +02:00
if ( $utile_perdita < 0 ) {
// Perdita d'esercizio
2017-09-21 10:01:07 +02:00
$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 " ;
2017-08-04 16:28:16 +02:00
// 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
2017-09-21 10:01:07 +02:00
$body .= " <th class='br bb padded'>UTILE</th><th align='right' class='bb padded'> " . Translator :: numberToLocale ( abs ( $utile_perdita )) . " </th></tr> \n " ;
2017-08-04 16:28:16 +02:00
}
// PAREGGIO 1
2017-09-21 10:01:07 +02:00
$body .= " <tr><th class='br padded'>TOTALE A PAREGGIO</th><th align='right' class='br padded'> " . Translator :: numberToLocale ( $pareggio1 ) . " </th> \n " ;
2017-08-04 16:28:16 +02:00
// PAREGGIO 2
2017-09-21 10:01:07 +02:00
$body .= " <th class='br padded'>TOTALE A PAREGGIO</th><th align='right' class='padded'> " . Translator :: numberToLocale ( $pareggio2 ) . " </th></tr> \n " ;
2017-08-04 16:28:16 +02:00
}
$body .= " </tbody>
</ table > \n " ;
}
$report_name = 'mastrino.pdf' ;