<?php include_once __DIR__.'/../../core.php'; // 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 ' <hr> <h2>'.$titolo.'</h2> <div class="pull-right"> <br>'.Prints::getLink('Mastrino', $conto_primo['id'], null, tr('Stampa'), null, 'lev=1').' </div> <div class="clearfix"></div> <div style="padding-left:10px;">'; // Livello 2 $query2 = "SELECT * FROM `co_pianodeiconti2` WHERE idpianodeiconti1='".$conto_primo['id']."' ORDER BY numero ASC"; $secondo_livello = $dbo->fetchArray($query2); foreach ($secondo_livello as $conto_secondo) { // Livello 2 echo ' <div> '.Prints::getLink('Mastrino', $conto_secondo['id'], 'btn-info btn-xs', '', null, 'lev=2').' <b>'.$conto_secondo['numero'].' '.$conto_secondo['descrizione'].'</b><br> </div> <div style="padding-left:10px;"> <table class="table table-striped table-hover table-condensed" style="margin-bottom:0;">'; // Livello 3 $query3 = 'SELECT `co_pianodeiconti3`.*, `clienti`.`idanagrafica` AS id_cliente, `fornitori`.`idanagrafica` AS id_fornitore FROM `co_pianodeiconti3` LEFT OUTER JOIN `an_anagrafiche` `clienti` ON `clienti`.`idconto_cliente` = `co_pianodeiconti3`.`id` LEFT OUTER JOIN `an_anagrafiche` `fornitori` ON `fornitori`.`idconto_fornitore` = `co_pianodeiconti3`.`id` 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 = $dbo->fetchNum('SELECT id FROM co_movimenti WHERE idconto = '.prepare($conto_terzo['id'])); // Calcolo totale conto da elenco movimenti di questo conto $query = 'SELECT co_movimenti.*, dir FROM co_movimenti LEFT OUTER JOIN co_documenti ON co_movimenti.iddocumento = co_documenti.id LEFT OUTER JOIN co_tipidocumento ON co_documenti.idtipodocumento = co_tipidocumento.id WHERE co_movimenti.idconto='.prepare($conto_terzo['id']).' AND co_movimenti.data >= '.prepare($_SESSION['period_start']).' AND co_movimenti.data <= '.prepare($_SESSION['period_end']).' ORDER BY co_movimenti.data DESC'; $movimenti = $dbo->fetchArray($query); $totale_conto = sum(array_column($movimenti, 'totale')); $totale_conto = ($conto_primo['descrizione'] == 'Patrimoniale') ? $totale_conto : -$totale_conto; // 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 ' <tr style="'.(!empty($movimenti) ? '' : 'opacity: 0.5;').'"> <td><span class="clickable" id="movimenti-'.$conto_terzo['id'].'">'; if (!empty($movimenti)) { echo ' <a href="javascript:;" class="btn btn-primary btn-xs plus-btn"><i class="fa fa-plus"></i></a>'; } $id_anagrafica = $conto_terzo['id_cliente'] ?: $conto_terzo['id_fornitore']; echo ' <span class="hide tools">'; // Stampa mastrino if (!empty($movimenti)) { echo ' '.Prints::getLink('Mastrino', $conto_terzo['id'], 'btn-info btn-xs', '', null, 'lev=3'); } if ($numero_movimenti <= 0 && !empty($conto_terzo['can_delete'])) { echo ' <a class="btn btn-danger btn-xs ask" data-toggle="tooltip" title="'.tr('Elimina').'" data-backto="record-list" data-op="del" data-idconto="'.$conto_terzo['id'].'"> <i class="fa fa-trash"></i> </a>'; } // Possibilità di modificare il nome del conto livello3 if (!empty($conto_terzo['can_edit'])) { echo ' <button type="button" class="btn btn-warning btn-xs" data-toggle="tooltip" title="Modifica questo conto..." onclick="launch_modal(\'Modifica conto\', \''.$structure->fileurl('edit_conto.php').'?id='.$conto_terzo['id'].'\');"> <i class="fa fa-edit"></i> </button>'; } echo ' </span> '.$conto_secondo['numero'].'.'.$conto_terzo['numero'].' '.$conto_terzo['descrizione'].' '.(isset($id_anagrafica) ? Modules::link('Anagrafiche', $id_anagrafica, 'Anagrafica', null) : '').' </span> <div id="conto_'.$conto_terzo['id'].'" style="display:none;"></div> </td> <td width="100" align="right" valign="top"> '.moneyFormat(sum($totale_conto), 2).' </td> </tr>'; } echo ' </table>'; // Possibilità di inserire un nuovo conto echo ' <button type="button" class="btn btn-xs btn-primary" data-toggle="tooltip" title="'.tr('Aggiungi un nuovo conto...').'" onclick="add_conto('.$conto_secondo['id'].')"> <i class="fa fa-plus-circle"></i> </button> <br><br> </div>'; } echo ' </div> <table class="table table-condensed table-hover">' ; // 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 ' <tr> <th class="text-right"> <big>'.tr('Totale attività').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat($attivita, 2).'</big> </td> <td width="50"></td>'; // Passività echo ' <th class="text-right"> <big>'.tr('Passività').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat($passivita, 2).'</big> </td> </tr>'; // Perdita d'esercizio if ($utile_perdita < 0) { echo ' <tr> <th class="text-right"> <big>'.tr("Perdita d'esercizio").':</big> </th> <td class="text-right"> <big>'.moneyFormat(sum($utile_perdita), 2).'</big> </td> <td></td> <td></td> <td></td> </tr>'; } else { echo ' <tr> <td></td> <td></td> <td></td> <th class="text-right"> <big>'.tr('Utile').':</big> </th> <td class="text-right"> <big>'.moneyFormat(sum($utile_perdita), 2).'</big> </td> </tr>'; } // Totale a pareggio echo ' <tr> <th class="text-right"> <big>'.tr('Totale a pareggio').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat(sum($pareggio1), 2).'</big> </td> <td width="50"></td> <th class="text-right"> <big>'.tr('Totale a pareggio').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat(sum($pareggio2), 2).'</big> </td> </tr>'; } else { echo ' <tr> <th class="text-right"> <big>'.tr('Ricavi').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat(sum($totale_ricavi), 2).'</big> </td> </tr> <tr> <th class="text-right"> <big>'.tr('Costi').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat(sum($totale_costi), 2).'</big> </td> </tr> <tr> <th class="text-right"> <big>'.tr('Utile/perdita').':</big> </th> <td class="text-right" width="150"> <big>'.moneyFormat(sum($totale_ricavi) - abs(sum($totale_costi)), 2).'</big> </td> </tr>'; } echo ' </table>'; } echo ' <script> $(document).ready(function(){ $("span[id^=movimenti-]").each(function() { $(this).on("mouseover", function() { $(this).find(".tools").removeClass("hide"); }); $(this).on("mouseleave", function() { $(this).find(".tools").addClass("hide"); }); $(this).on("click", function() { var movimenti = $(this).parent().find("div[id^=conto_]"); if(!movimenti.html()) { var id_conto = movimenti.attr("id").split("_").pop(); load_movimenti(movimenti.attr("id"), id_conto); } else { movimenti.slideToggle(); } $(this).find(".plus-btn i").toggleClass("fa-plus").toggleClass("fa-minus"); }); }) }); function add_conto(id) { launch_modal("'.tr('Nuovo conto').'", "'.$structure->fileurl('add_conto.php').'?id=" + id); } function load_movimenti(selector, id_conto) { $("#main_loading").show(); $.ajax({ url: "'.$structure->fileurl('dettagli_conto.php').'", type: "get", data: { id_module: globals.id_module, id_conto: id_conto, }, success: function(data){ $("#" + selector).html(data); $("#" + selector).slideToggle(); $("#main_loading").fadeOut(); } }); } </script>';