Skip to content

Commit 9276bb6

Browse files
committed
fix: stampa inventario con filtri
1 parent 30ad090 commit 9276bb6

1 file changed

Lines changed: 19 additions & 14 deletions

File tree

templates/magazzino_inventario/body.php

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@
3636
Query::setSegments(false);
3737
$query = Query::getQuery($structure, $where, 0, []);
3838

39-
$query = Modules::replaceAdditionals($structure->id, $query);
40-
41-
// Modifiche alla query principale
42-
$query = preg_replace('/FROM[\s\t\n]+`mg_articoli`/s', 'FROM `mg_articoli` LEFT JOIN (SELECT `idarticolo`, SUM(`qta`) AS qta_totale FROM `mg_movimenti` WHERE `data` <='.prepare($period_end).' GROUP BY `idarticolo`) movimenti ON `movimenti`.`idarticolo`=`mg_articoli`.`id` ', (string) $query);
39+
$movimenti_where = '`data` <='.prepare($period_end);
40+
if (post('tipo') == 'nozero') {
41+
$query = preg_replace('/FROM[\s\t\n]+`mg_articoli`/s', 'FROM `mg_articoli` INNER JOIN (SELECT `idarticolo`, SUM(`qta`) AS qta_totale FROM `mg_movimenti` WHERE '.$movimenti_where.' GROUP BY `idarticolo` HAVING SUM(`qta`) > 0) movimenti ON `movimenti`.`idarticolo`=`mg_articoli`.`id` ', (string) $query);
42+
} else {
43+
$query = preg_replace('/FROM[\s\t\n]+`mg_articoli`/s', 'FROM `mg_articoli` LEFT JOIN (SELECT `idarticolo`, SUM(`qta`) AS qta_totale FROM `mg_movimenti` WHERE '.$movimenti_where.' GROUP BY `idarticolo`) movimenti ON `movimenti`.`idarticolo`=`mg_articoli`.`id` ', (string) $query);
44+
}
4345
$query = preg_replace('/^SELECT/', 'SELECT `movimenti`.`qta_totale`, ', (string) $query);
4446

4547
if (post('acquisto') == 'standard') {
@@ -56,10 +58,6 @@
5658
$text = "alla media ponderata dell'articolo";
5759
}
5860

59-
if (post('tipo') == 'nozero') {
60-
$query = str_replace('1=1', '1=1 AND `qta_totale` > 0', $query);
61-
}
62-
6361
$query = str_replace('1=1', '1=1 AND servizio = 0', $query);
6462

6563
$data = Query::executeAndCount($query);
@@ -94,23 +92,30 @@
9492
$totale_qta = 0;
9593
$totali = [];
9694

95+
$articoli_ids = array_column($data['results'], 'id');
96+
$articoli = Articolo::whereIn('id', $articoli_ids)->get()->keyBy('id');
97+
9798
foreach ($data['results'] as $r) {
98-
$articolo = Articolo::find($r['id']);
99-
$qta = $r['qta_totale'];
100-
$valore_magazzino = $r['acquisto'] * $qta;
99+
$articolo = $articoli[$r['id']] ?? null;
100+
if (!$articolo) {
101+
continue;
102+
}
103+
104+
$qta_filtrata = $r['qta_totale'] ?? 0;
105+
$valore_magazzino = ($articolo->fattore_um_secondaria != 0 ? $articolo->fattore_um_secondaria : 1) * $articolo->prezzo_acquisto * $qta_filtrata;
101106

102107
echo '
103108
<tr>
104109
<td>'.$articolo->codice.'</td>
105110
<td>'.$r['Categoria'].'</td>
106111
<td>'.$articolo->getTranslation('title').'</td>
107112
<td class="text-right">'.moneyFormat($articolo->prezzo_vendita).'</td>
108-
<td class="text-right">'.Translator::numberToLocale($qta).' '.$articolo->um.'</td>
109-
<td class="text-right">'.moneyFormat($r['acquisto']).'</td>
113+
<td class="text-right">'.Translator::numberToLocale($qta_filtrata).' '.$articolo->um.'</td>
114+
<td class="text-right">'.moneyFormat($articolo->prezzo_acquisto).'</td>
110115
<td class="text-right">'.moneyFormat($valore_magazzino).'</td>
111116
</tr>';
112117

113-
$totale_qta += $r['Q.tà'];
118+
$totale_qta += $qta_filtrata;
114119
$totali[] = $valore_magazzino;
115120
}
116121

0 commit comments

Comments
 (0)