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'].'
'.$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.'
'.$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'].'
'.$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.'
'.$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.'
';
}
$body = str_replace('|percorso|', $percorso, $body);
$body = str_replace('|info_fornitore|', $f_ragionesociale.'
'.$f_indirizzo.'
'.$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 .= "
\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 .= " | SALDO INIZIALE | ".Translator::numberToLocale(abs($dare), 2)." | ".Translator::numberToLocale(abs($avere), 2)." |
\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']), 2);
$avere = '';
} else {
$dare = '';
$avere = Translator::numberToLocale(abs($rs[$i]['totale']), 2);
}
$body .= " ".Translator::dateToLocale($rs[$i]['data'])." | ".$rs[$i]['descrizione']." | ".$dare." | ".$avere." |
\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 .= " | SALDO FINALE | ".Translator::numberToLocale(abs($dare), 2)." | ".Translator::numberToLocale(abs($avere), 2)." |
\n";
$body .= "
\n";
}
// Stampa da livello 2
elseif (get('lev') == '2') {
$body .= "
\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), 2);
$avere = '';
} else {
$dare = '';
$avere = Translator::numberToLocale(abs($totale), 2);
}
// Mostro il saldo finale del conto di livello 3
$body .= " | ".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']." | ".$dare." | ".$avere." |
\n";
}
$body .= "
\n";
}
// Stampa completa bilancio
elseif (get('lev') == '1') {
$ricavi = 0;
$costi = 0;
$totale_attivita = 0;
$totale_passivita = 0;
$body .= "
\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 .= " ".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']." |
\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 .= " | ".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']." | ".Translator::numberToLocale(abs($dare), 2)." | ".Translator::numberToLocale(abs($avere), 2)." |
\n";
}
}
}
// Stampa "Costi/Ricavi" se conto economico
if ($rs1[0]['descrizione'] == 'Economico') {
$body .= " RICAVI | ".Translator::numberToLocale($ricavi, 2)." |
\n";
$body .= " COSTI | ".Translator::numberToLocale($costi, 2)." |
\n";
$body .= " UTILE | ".Translator::numberToLocale($ricavi - $costi, 2)." |
\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 .= " \n";
$body .= "
\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 .= "
\n";
// Attività
$body .= " TOTALE ATTIVITÀ | ".Translator::numberToLocale($totale_attivita, 2)." | \n";
// Passività
$body .= " PASSIVITÀ | ".Translator::numberToLocale($totale_passivita, 2)." |
\n";
if ($utile_perdita < 0) {
// Perdita d'esercizio
$body .= " PERDITA D'ESERCIZIO | ".Translator::numberToLocale(abs($utile_perdita), 2)." | \n";
// Utile
$body .= " | |
\n";
} else {
// Perdita d'esercizio
$body .= " | | \n";
// Utile
$body .= " UTILE | ".Translator::numberToLocale(abs($utile_perdita), 2)." |
\n";
}
// PAREGGIO 1
$body .= " TOTALE A PAREGGIO | ".Translator::numberToLocale($pareggio1, 2)." | \n";
// PAREGGIO 2
$body .= " TOTALE A PAREGGIO | ".Translator::numberToLocale($pareggio2, 2)." |
\n";
}
$body .= "
\n";
}
$report_name = 'mastrino.pdf';