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 '
-
-
- '.tr('Descrizione riga').'
- '.tr('Imponibile').'
- ';
-
- foreach ($righe as $riga) {
- echo '
-
-
- '.$riga['desc_riga'].'
-
-
-
- '.moneyFormat($riga['imponibile']).'
-
- ';
- }
-
- $totale_imponibile = sum(array_column($righe, 'imponibile'));
-
- echo '
-
- '.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 '
-
- '.tr('Conto').'
- '.tr('Dare').'
- '.tr('Avere').'
- ';
-
-$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 '
-
-
-
-
- {[ "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" ]}
+ ';
// Dare
echo '
-
- {[ "type": "number", "name": "dare['.$i.']", "id": "dare'.$i.'", "value": "'.($riga['dare'] ?: 0).'" ]}
- ';
+
+ {[ "type": "number", "name": "dare['.$id.']", "id": "dare'.$id.'", "value": "'.($riga['dare'] ?: 0).'" ]}
+ ';
// Avere
echo '
-
- {[ "type": "number", "name": "avere['.$i.']", "id": "avere'.$i.'", "value": "'.($riga['avere'] ?: 0).'" ]}
-
- ';
+
+ {[ "type": "number", "name": "avere['.$id.']", "id": "avere'.$id.'", "value": "'.($riga['avere'] ?: 0).'" ]}
+
+ ';
}
-// Totale per controllare sbilancio
-echo '
+function renderTabella($nome, $righe, $id_scadenza_default = null)
+{
+ global $counter;
+
+ echo '
+
+
+ '.tr('Aggiungi').'
+
+
+
'.$nome.'
+
+
+
+
+ '.tr('Conto').'
+ '.tr('Dare').'
+ '.tr('Avere').'
+
+
+
+ ';
+
+ foreach ($righe as $riga) {
+ renderRiga($counter++, $riga);
+ }
+
+ // Totale per controllare sbilancio
+ echo '
+
+
+
'.tr('Totale').': ';
-// Totale dare
-echo '
+ // Totale dare
+ echo '
- '.currency().'
+ '.currency().'
';
-// Totale avere
-echo '
+ // Totale avere
+ echo '
- '.currency().'
+ '.currency().'
';
-// Verifica sbilancio
+ echo '
+
+
';
+
+ // 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) {