.
*/
include_once __DIR__.'/../../core.php';
// Verifico se è già stata eseguita l'apertura bilancio
$bilancio_gia_aperto = $dbo->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 '
';
// 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 '
';
// 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 '
';
// 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).'
';
}
echo '
'.tr('Descrizione').'
'.tr('Importo').'
'.tr('Importo reddito').'
';
// Possibilità di inserire un nuovo conto
echo '
';
}
// 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 '