diff --git a/assets/src/js/sidebar.js b/assets/src/js/sidebar.js index 67f495014..74c8b93e0 100644 --- a/assets/src/js/sidebar.js +++ b/assets/src/js/sidebar.js @@ -21,7 +21,7 @@ $(document).ready(function () { $list.parent().parent().find('i.fa-angle-left').removeClass('fa-angle-left').addClass('fa-angle-down'); } -// Menu ordinabile + // Menu ordinabile $(".sidebar-menu").sortable({ cursor: 'move', diff --git a/modules/partitario/dettagli_conto.php b/modules/partitario/dettagli_conto.php index f6085615e..4c35783bd 100644 --- a/modules/partitario/dettagli_conto.php +++ b/modules/partitario/dettagli_conto.php @@ -2,13 +2,21 @@ include_once __DIR__.'/../../core.php'; +$prima_nota = Modules::get('Prima nota'); + $id_conto = get('id_conto'); // 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($id_conto).' AND co_movimenti.data >= '.prepare($_SESSION['period_start']).' AND co_movimenti.data <= '.prepare($_SESSION['period_end']).' ORDER BY co_movimenti.data DESC'; +$query = 'SELECT co_movimenti.*, + SUM(totale) AS totale, + 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($id_conto).' AND + co_movimenti.data >= '.prepare($_SESSION['period_start']).' AND + co_movimenti.data <= '.prepare($_SESSION['period_end']).' +GROUP BY co_movimenti.idmastrino +ORDER BY co_movimenti.data DESC'; $movimenti = $dbo->fetchArray($query); if (!empty($movimenti)) { @@ -30,8 +38,7 @@ if (!empty($movimenti)) { if (!empty($movimento['iddocumento'])) { $modulo_fattura = ($movimento['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id']; - echo ' - '.$movimento['descrizione'].''; + echo Modules::link($prima_nota->id, $movimento['idmastrino'], $movimento['descrizione']); } else { echo ' '.$movimento['descrizione'].''; @@ -72,8 +79,8 @@ if (!empty($movimenti)) { '; } else { diff --git a/modules/partitario/dettagli_movimento.php b/modules/partitario/dettagli_movimento.php deleted file mode 100644 index 07ed58e74..000000000 --- a/modules/partitario/dettagli_movimento.php +++ /dev/null @@ -1,39 +0,0 @@ -fetchArray($query); - -echo ' - - - - - '; - - foreach ($righe as $riga) { - echo ' - - - - - '; - } - - $totale_imponibile = sum(array_column($righe, 'imponibile')); - - echo ' - - - - -
'.tr('Descrizione riga').''.tr('Imponibile').'
- '.$riga['desc_riga'].' - - '.moneyFormat($riga['imponibile']).' -
'.tr('Totali').': '.moneyFormat($totale_imponibile).'
- -'.Modules::link($id_module, $righe[0]['iddocumento'], $righe[0]['desc_fatt'], null, 'class="btn btn-info btn-block"'); diff --git a/modules/primanota/add.php b/modules/primanota/add.php index 67586f769..dc488bcb7 100644 --- a/modules/primanota/add.php +++ b/modules/primanota/add.php @@ -48,6 +48,7 @@ foreach ($id_scadenze as $id_scadenza) { $righe_documento = []; $righe_documento[] = [ + 'iddocumento' => null, 'id_scadenza' => $scadenza['id'], 'id_conto' => null, 'dare' => ($dir == 'entrata') ? 0 : $scadenza['rata'], @@ -55,6 +56,7 @@ foreach ($id_scadenze as $id_scadenza) { ]; $righe_documento[] = [ + 'iddocumento' => null, 'id_scadenza' => $scadenza['id'], 'id_conto' => $id_conto_controparte, 'dare' => ($dir == 'entrata') ? $scadenza['rata'] : 0, @@ -78,9 +80,7 @@ $numeri = []; $counter = 0; $id_documenti = array_unique($id_documenti); - -$idanagrafica_mov = 0; - +$id_anagrafica_movimenti = null; foreach ($id_documenti as $id_documento) { $fattura = Fattura::find($id_documento); $tipo = $fattura->tipo; @@ -92,10 +92,10 @@ foreach ($id_documenti as $id_documento) { continue; } - if ($fattura->idanagrafica != $idanagrafica_mov && $idanagrafica_mov != '') { - $idanagrafica_mov = 0; - } else { - $idanagrafica_mov = $fattura->idanagrafica; + if(empty($id_anagrafica_movimenti)){ + $id_anagrafica_movimenti = $fattura->idanagrafica; + }elseif ($fattura->idanagrafica != $id_anagrafica_movimenti) { + $id_anagrafica_movimenti = null; } $numeri[] = !empty($fattura['numero_esterno']) ? $fattura['numero_esterno'] : $fattura['numero']; @@ -111,11 +111,7 @@ foreach ($id_documenti as $id_documento) { $id_conto_controparte = $fattura->anagrafica[$conto_field]; // Lettura delle scadenza della fattura - if (sizeof($id_scadenze) > 0) { - $scadenze = $dbo->fetchArray('SELECT id, ABS(da_pagare - pagato) AS rata FROM co_scadenziario WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) > ABS(pagato) AND id IN("'.implode('","', $id_scadenze).'") ORDER BY YEAR(scadenza) ASC, MONTH(scadenza) ASC'); - } else { - $scadenze = $dbo->fetchArray('SELECT id, ABS(da_pagare - pagato) AS rata FROM co_scadenziario WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) > ABS(pagato) ORDER BY YEAR(scadenza) ASC, MONTH(scadenza) ASC'); - } + $scadenze = $dbo->fetchArray('SELECT id, ABS(da_pagare - pagato) AS rata, iddocumento FROM co_scadenziario WHERE iddocumento='.prepare($id_documento).' AND ABS(da_pagare) > ABS(pagato) ORDER BY YEAR(scadenza) ASC, MONTH(scadenza) ASC'); // Selezione prima scadenza if ($singola_scadenza && !empty($scadenze)) { @@ -124,27 +120,10 @@ foreach ($id_documenti as $id_documento) { $righe_documento = []; - // Riga aziendale - $totale = sum(array_column($scadenze, 'rata')); - - if ($totale != 0) { - if ($nota_credito) { - $totaleA = -$totale; - } else { - $totaleA = $totale; - } - - $righe_azienda[] = [ - 'id_scadenza' => $scadenze[0]['id'], - 'id_conto' => $id_conto_aziendale, - 'dare' => ($dir == 'entrata') ? $totaleA : 0, - 'avere' => ($dir == 'entrata') ? 0 : $totaleA, - ]; - } - // Riga controparte foreach ($scadenze as $scadenza) { $righe_documento[] = [ + 'iddocumento' => $scadenza['iddocumento'], 'id_scadenza' => $scadenza['id'], 'id_conto' => $id_conto_controparte, 'dare' => ($dir == 'entrata' && !$nota_credito && !$is_insoluto) ? 0 : $scadenza['rata'], @@ -152,37 +131,57 @@ foreach ($id_documenti as $id_documento) { ]; } + // Riga aziendale + $totale = sum(array_column($scadenze, 'rata')); + + if ($totale != 0) { + if ($nota_credito) { + $totale_rata = -$totale; + } else { + $totale_rata = $totale; + } + + $righe_documento[] = [ + 'iddocumento' => $scadenze[0]['iddocumento'], + 'id_scadenza' => $scadenze[0]['id'], + 'id_conto' => $id_conto_aziendale, + 'dare' => ($dir == 'entrata') ? $totale_rata : 0, + 'avere' => ($dir == 'entrata') ? 0 : $totale_rata, + ]; + } + $righe = array_merge($righe, $righe_documento); } - +/* $k = 0; foreach ($righe_azienda as $key => $riga_azienda) { if ($righe_azienda[$key]['id_conto'] != $righe_azienda[$key - 1]['id_conto']) { ++$k; } + $riga_documento[$k]['iddocumento'] = $riga_azienda['iddocumento']; + $riga_documento[$k]['id_scadenza'] = $riga_azienda['id_scadenza']; $riga_documento[$k]['id_conto'] = $riga_azienda['id_conto']; $riga_documento[$k]['dare'] += $riga_azienda['dare']; $riga_documento[$k]['avere'] += $riga_azienda['avere']; -} +$righe = array_merge($righe, $righe_azienda); +}*/ -foreach ($riga_documento as $key => $value) { - //Inverto dare e avere per importi negativi - if ($riga_documento[$key]['dare'] < 0 || $riga_documento[$key]['avere'] < 0) { - $tmp = abs($riga_documento[$key]['dare']); - $riga_documento[$key]['dare'] = abs($riga_documento[$key]['avere']); - $riga_documento[$key]['avere'] = $tmp; +// Inverto dare e avere per importi negativi +foreach ($righe as $key => $value) { + if ($righe[$key]['dare'] < 0 || $righe[$key]['avere'] < 0) { + $tmp = abs($righe[$key]['dare']); + $righe[$key]['dare'] = abs($righe[$key]['avere']); + $righe[$key]['avere'] = $tmp; } } -$righe = array_merge($righe, $riga_documento); - // Descrizione $numero_scadenze = count($id_scadenze); $numero_documenti = count($id_documenti); if ($numero_documenti + $numero_scadenze > 1) { - if ($idanagrafica_mov != 0) { - $an = Anagrafica::find($idanagrafica_mov); + if (!empty($id_anagrafica_movimenti)) { + $an = Anagrafica::find($id_anagrafica_movimenti); $descrizione = 'Pag. fatture '.$an->ragione_sociale.' num. '.implode(', ', $numeri); } else { @@ -280,7 +279,7 @@ include $structure->filepath('movimenti.php'); $(document).ready(function(e) { $("#bs-popup #add-form").on("submit", function(e) { - return calcolaBilancio(); + return controllaConti(); }); $('#bs-popup #modello_primanota').change(function() { diff --git a/modules/primanota/edit.php b/modules/primanota/edit.php index a7db782a2..90d033db9 100644 --- a/modules/primanota/edit.php +++ b/modules/primanota/edit.php @@ -66,7 +66,7 @@ include $structure->filepath('movimenti.php'); diff --git a/modules/primanota/movimenti.php b/modules/primanota/movimenti.php index 033ec67ff..5dae3a8ab 100644 --- a/modules/primanota/movimenti.php +++ b/modules/primanota/movimenti.php @@ -2,115 +2,262 @@ include_once __DIR__.'/../../core.php'; -echo ' - - - - - '; - -$max = max(count($righe), 10); -for ($i = 0; $i < $max; ++$i) { - $required = ($i <= 1); - $riga = $righe[$i]; +use Modules\Fatture\Fattura; +function renderRiga($id, $riga) +{ // Conto echo ' - - - - '; + + + + '; // Dare echo ' - '; + '; // Avere echo ' - - '; + + '; } -// Totale per controllare sbilancio -echo ' +function renderTabella($nome, $righe, $id_scadenza_default = null) +{ + global $counter; + + echo ' +
+ + +

'.$nome.'

+ +
'.tr('Conto').''.tr('Dare').''.tr('Avere').'
- {[ "type": "select", "name": "idconto['.$i.']", "id": "conto'.$i.'", "value": "'.($riga['id_conto'] ?: '').'", "ajax-source": "conti", "required": "'.$required.'" ]} -
+ {[ "type": "select", "name": "idconto['.$id.']", "id": "conto'.$id.'", "value": "'.($riga['id_conto'] ?: '').'", "ajax-source": "conti" ]} + - {[ "type": "number", "name": "dare['.$i.']", "id": "dare'.$i.'", "value": "'.($riga['dare'] ?: 0).'" ]} - + {[ "type": "number", "name": "dare['.$id.']", "id": "dare'.$id.'", "value": "'.($riga['dare'] ?: 0).'" ]} + - {[ "type": "number", "name": "avere['.$i.']", "id": "avere'.$i.'", "value": "'.($riga['avere'] ?: 0).'" ]} -
+ {[ "type": "number", "name": "avere['.$id.']", "id": "avere'.$id.'", "value": "'.($riga['avere'] ?: 0).'" ]} +
+ + + + + + + + + '; + + foreach ($righe as $riga) { + renderRiga($counter++, $riga); + } + + // Totale per controllare sbilancio + echo ' + + + '; -// Totale dare -echo ' + // Totale dare + echo ' '; -// Totale avere -echo ' + // Totale avere + echo ' '; -// Verifica sbilancio + echo ' + +
'.tr('Conto').''.tr('Dare').''.tr('Avere').'
'.tr('Totale').': - '.currency().' + '.currency().' - '.currency().' + '.currency().'
'; + + // Verifica dello sbilancio + echo ' +
+ '.tr('Sbilancio di _MONEY_', [ + '_MONEY_' => ' '.currency(), + ]).' +
+'; +} + +$counter = 0; +$righe = collect($righe); + +// Elenco per documenti +$scadenze = $righe + ->where('iddocumento', '<>', '') + ->groupBy('iddocumento'); +foreach ($scadenze as $id_documento => $righe) { + $documento = Fattura::find($id_documento); + + $nome = tr('Documento num. _NUM_', [ + '_NUM_' => $documento['numero_esterno'] ?: $documento['numero'], + ]); + + renderTabella($nome, $righe, $righe->first()['id_scadenza']); +} + +// Elenco per scadenze +$scadenze = $righe + ->where('iddocumento', '=', '') + ->where('id_scadenza', '<>', '') + ->groupBy('id_scadenza'); +foreach ($scadenze as $id_scadenza => $righe) { + $nome = tr('Scadenza num. _ID_', [ + '_ID_' => $id_scadenza, + ]); + + renderTabella($nome, $righe, $righe->first()['id_scadenza']); +} + +// Elenco generale +$righe_generali = $righe + ->where('iddocumento', '=', '') + ->where('id_scadenza', '=', ''); +if ($righe_generali->isEmpty()) { + $righe_generali->push([]); + $righe_generali->push([]); +} +$nome = tr('Generale'); + +renderTabella($nome, $righe_generali); + +// Nuova riga echo ' - - - - - - - '; + + '; + +renderRiga('-id-', [ + 'id_scadenza' => '-id_scadenza-', +]); + +echo ' + +
'; echo ' '; diff --git a/templates/partitario_mastrino/pdfgen.partitario_mastrino.php b/templates/partitario_mastrino/pdfgen.partitario_mastrino.php index 120a42e1c..bdf44c246 100644 --- a/templates/partitario_mastrino/pdfgen.partitario_mastrino.php +++ b/templates/partitario_mastrino/pdfgen.partitario_mastrino.php @@ -58,7 +58,7 @@ if ($_GET['lev'] == '3') { $saldo_finale = []; // Calcolo saldo iniziale - $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$date_start.'"'); + $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < '.prepare($date_start).''); $saldo_iniziale = $rs[0]['totale']; $saldo_finale = $saldo_iniziale; @@ -72,7 +72,14 @@ if ($_GET['lev'] == '3') { $body .= " SALDO INIZIALE".moneyFormat(abs($dare), 2)."".moneyFormat(abs($avere), 2)."\n"; - $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$idconto.'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC'); + $rs = $dbo->fetchArray('SELECT *, SUM(totale) AS totale + FROM co_movimenti + WHERE idconto='.prepare($idconto).' AND + data >= '.prepare($date_start).' AND + data <= '.prepare($date_end).' + GROUP BY idmastrino + ORDER BY data ASC'); + // Inizializzo saldo finale $saldo_finale2 = []; for ($i = 0; $i < sizeof($rs); ++$i) { @@ -121,7 +128,7 @@ elseif ($_GET['lev'] == '2') { $saldo_finale = []; // Calcolo saldo iniziale - $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$date_start.'"'); + $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < '.prepare($date_start).''); $saldo_iniziale = $rs[0]['totale']; $saldo_finale[] = $saldo_iniziale; @@ -131,7 +138,7 @@ elseif ($_GET['lev'] == '2') { $v_dare[] = abs($saldo_iniziale); } - $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC'); + $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= '.prepare($date_start).' AND data <= '.prepare($date_end).' ORDER BY data ASC'); for ($i = 0; $i < sizeof($rs); ++$i) { if ($rs[$i]['totale'] >= 0) { @@ -187,7 +194,7 @@ elseif (get('lev') == '1') { $v_dare = []; $v_avere = []; - $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC'); + $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= '.prepare($date_start).' AND data <= '.prepare($date_end).' ORDER BY data ASC'); for ($i = 0; $i < sizeof($rs); ++$i) { if ($rs[$i]['totale'] >= 0) { @@ -245,11 +252,11 @@ elseif (get('lev') == '1') { $saldo_finale = []; // Calcolo saldo iniziale - $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$date_start.'"'); + $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < '.prepare($date_start).''); $dare = []; $avere = []; - $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$date_start.'" AND data <= "'.$date_end.'" ORDER BY data ASC'); + $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= '.prepare($date_start).' AND data <= '.prepare($date_end).' ORDER BY data ASC'); for ($i = 0; $i < sizeof($rs); ++$i) { if ($rs[$i]['totale'] >= 0) {