fetchNum('SELECT id FROM co_movimenti WHERE is_apertura=1 AND data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end'])); $msg = tr('Sei sicuro di voler aprire il bilancio?'); $btn_class = 'btn-info'; if ($bilancio_gia_aperto) { $msg .= ' '.tr('I movimenti di apertura già esistenti verranno annullati e ricreati').'.'; $btn_class = 'btn-default'; } echo '
'; // Livello 1 $query1 = 'SELECT * FROM `co_pianodeiconti1` ORDER BY id DESC'; $primo_livello = $dbo->fetchArray($query1); foreach ($primo_livello as $conto_primo) { $totale_attivita = []; $totale_passivita = []; $costi = []; $ricavi = []; $titolo = $conto_primo['descrizione'] == 'Economico' ? tr('Conto economico') : tr('Stato patrimoniale'); echo '

'.$titolo.'

'.Prints::getLink('Mastrino', $conto_primo['id'], null, tr('Stampa'), null, 'lev=1').'
'; // Livello 2 $query2 = 'SELECT * FROM `co_pianodeiconti2` WHERE idpianodeiconti1 = '.prepare($conto_primo['id']).' ORDER BY numero ASC'; $secondo_livello = $dbo->fetchArray($query2); foreach ($secondo_livello as $conto_secondo) { // Livello 2 echo '
'.Prints::getLink('Mastrino', $conto_secondo['id'], 'btn-info btn-xs', '', null, 'lev=2').'
'.$conto_secondo['numero'].' '.$conto_secondo['descrizione'].'
'; // Livello 3 $query3 = 'SELECT `co_pianodeiconti3`.*, movimenti.numero_movimenti, movimenti.totale, movimenti.totale_reddito, anagrafica.idanagrafica, anagrafica.deleted_at FROM `co_pianodeiconti3` LEFT OUTER JOIN ( SELECT idanagrafica, idconto_cliente, idconto_fornitore, deleted_at FROM an_anagrafiche ) AS anagrafica ON co_pianodeiconti3.id IN (anagrafica.idconto_cliente, anagrafica.idconto_fornitore) LEFT OUTER JOIN ( SELECT COUNT(idconto) AS numero_movimenti, idconto, SUM(ROUND(totale, 2)) AS totale, SUM(ROUND(totale_reddito, 2)) AS totale_reddito FROM co_movimenti WHERE data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end']).' GROUP BY idconto ) movimenti ON co_pianodeiconti3.id=movimenti.idconto WHERE `idpianodeiconti2` = '.prepare($conto_secondo['id']).' ORDER BY numero ASC'; $terzo_livello = $dbo->fetchArray($query3); foreach ($terzo_livello as $conto_terzo) { // Se il conto non ha documenti collegati posso eliminarlo $numero_movimenti = $conto_terzo['numero_movimenti']; $totale_conto = $conto_terzo['totale']; $totale_reddito = $conto_terzo['totale_reddito']; if ($conto_primo['descrizione'] != 'Patrimoniale') { $totale_conto = -$totale_conto; $totale_reddito = -$totale_reddito; } // Somma dei totali if ($conto_primo['descrizione'] == 'Patrimoniale') { if ($totale_conto > 0) { $totale_attivita[] = abs($totale_conto); } else { $totale_passivita[] = abs($totale_conto); } } else { if ($totale_conto > 0) { $totale_ricavi[] = abs($totale_conto); } else { $totale_costi[] = abs($totale_conto); } } echo ' '; } echo '
'.tr('Descrizione').' '.tr('Importo').' '.tr('Importo reddito').'
'; // Possibilità di esplodere i movimenti del conto if (!empty($numero_movimenti)) { echo ' '; } // Span con i pulsanti echo ' '; // Possibilità di visionare l'anagrafica $id_anagrafica = $conto_terzo['idanagrafica']; $anagrafica_deleted = $conto_terzo['deleted_at']; if (isset($id_anagrafica)) { echo Modules::link('Anagrafiche', $id_anagrafica, ' '); } // Stampa mastrino if (!empty($numero_movimenti)) { echo ' '.Prints::getLink('Mastrino', $conto_terzo['id'], 'btn-info btn-xs', '', null, 'lev=3'); } // Pulsante per aggiornare il totale reddito del conto di livello 3 if ($conto_secondo['dir'] == 'uscita') { echo ' '; } // Pulsante per modificare il nome del conto di livello 3 echo ' '; // Possibilità di eliminare il conto se non ci sono movimenti collegati if ($numero_movimenti <= 0) { echo ' '; } echo ' '; // Span con info del conto echo '  '.$conto_secondo['numero'].'.'.$conto_terzo['numero'].' '.$conto_terzo['descrizione'].($conto_terzo['percentuale_deducibile']<100 ? ' ('.tr('deducibile al _PERC_%', ['_PERC_' => Translator::numberToLocale($conto_terzo['percentuale_deducibile'],0)]).')' : '').' '.moneyFormat($totale_conto, 2).' '.moneyFormat($totale_reddito, 2).'
'.tr('Descrizione').' '.tr('Importo').' '.tr('Importo reddito').'
'; // Possibilità di inserire un nuovo conto echo '

'; } echo '
'; // Riepiloghi if ($conto_primo['descrizione'] == 'Patrimoniale') { $attivita = abs(sum($totale_attivita)); $passivita = abs(sum($totale_passivita)); $utile_perdita = abs(sum($totale_ricavi)) - abs(sum($totale_costi)); if ($utile_perdita < 0) { $pareggio1 = $attivita + abs($utile_perdita); $pareggio2 = abs($passivita); } else { $pareggio1 = $attivita; $pareggio2 = abs($passivita) + abs($utile_perdita); } // Attività echo ' '; // Passività echo ' '; // Perdita d'esercizio if ($utile_perdita < 0) { echo ' '; } else { echo ' '; } // Totale a pareggio echo ' '; } else { echo ' '; } echo '
'.tr('Totale attività').': '.moneyFormat($attivita, 2).' '.tr('Passività').': '.moneyFormat($passivita, 2).'
'.tr("Perdita d'esercizio").': '.moneyFormat(sum($utile_perdita), 2).'
'.tr('Utile').': '.moneyFormat(sum($utile_perdita), 2).'
'.tr('Totale a pareggio').': '.moneyFormat(sum($pareggio1), 2).' '.tr('Totale a pareggio').': '.moneyFormat(sum($pareggio2), 2).'
'.tr('Ricavi').': '.moneyFormat(sum($totale_ricavi), 2).'
'.tr('Costi').': '.moneyFormat(sum($totale_costi), 2).'
'.tr('Utile/perdita').': '.moneyFormat(sum($totale_ricavi) - abs(sum($totale_costi)), 2).'
'; } // Verifico se è già stata eseguita l'apertura bilancio $bilancio_gia_chiuso = $dbo->fetchNum('SELECT id FROM co_movimenti WHERE is_chiusura=1 AND data BETWEEN '.prepare($_SESSION['period_start']).' AND '.prepare($_SESSION['period_end'])); $msg = tr('Sei sicuro di voler aprire il bilancio?'); $btn_class = 'btn-info'; if ($bilancio_gia_chiuso) { $msg .= ' '.tr('I movimenti di apertura già esistenti verranno annullati e ricreati').'.'; $btn_class = 'btn-default'; } echo '

';