$_GET['search_codice'], 'descrizione' => $_GET['search_descrizione'], 'categoria' => $_GET['search_categoria'], 'subcategoria' => $_GET['search_subcategoria'], 'tipo' => $_GET['search_tipo'], 'fornitore' => $_GET['search_fornitore'], 'barcode' => $_GET['search_barcode'], ]; foreach ($search as $name => $value) { if ($value == 'undefined') { $search[$name] = null; } } $search['tipo'] = $search['tipo'] ?: 'solo prodotti attivi'; // Filtri effettivi $where = [ 'deleted_at IS NULL', 'servizio = 0', ]; if ($search['tipo'] == 'solo prodotti attivi') { $where[] = 'attivo = 1'; } elseif ($search['tipo'] == 'solo prodotti non attivi') { $where[] = 'attivo = 0'; } if (!empty($search['codice'])) { $where[] = "(REPLACE(codice, '.', '') LIKE ".prepare('%'.$search['codice'].'%').' OR codice LIKE '.prepare('%'.$search['codice'].'%').')'; } if (!empty($search['descrizione'])) { $where[] .= "REPLACE(descrizione, '.', '') LIKE ".prepare('%'.$search['descrizione'].'%'); } if (!empty($search['categoria'])) { $where[] = 'id_categoria IN (SELECT id FROM mg_categorie WHERE nome LIKE '.prepare('%'.$search['categoria'].'%').' AND parent IS NULL)'; } if (!empty($search['subcategoria'])) { $where[] = 'id_sottocategoria IN (SELECT id FROM mg_categorie WHERE nome LIKE '.prepare('%'.$search['subcategoria'].'%').' AND parent NOT NULL)'; } if (!empty($search['fornitore'])) { $where[] = 'id_fornitore IN (SELECT idanagrafica FROM an_anagrafiche WHERE ragione_sociale LIKE '.prepare('%'.$search['fornitore'].'%').')'; } if (!empty($search['barcode'])) { $where[] = "(REPLACE(barcode, '.', '') LIKE ".prepare('%'.$search['barcode'].'%').' OR barcode LIKE '.prepare('%'.$search['barcode'].'%').')'; } $period_end = $_SESSION['period_end']; $query = 'SELECT *, (SELECT SUM(qta) FROM mg_movimenti WHERE mg_movimenti.idarticolo=mg_articoli.id AND (mg_movimenti.idintervento IS NULL) AND data <= '.prepare($period_end).') AS qta FROM mg_articoli LEFT OUTER JOIN (SELECT id, nome FROM mg_categorie) AS categoria ON mg_articoli.id_categoria = categoria.id WHERE 1=1 ORDER BY codice ASC'; $query = str_replace('1=1', '1=1'.(!empty($where) ? ' AND '.implode(' AND ', $where) : ''), $query); $rs = $dbo->fetchArray($query); echo '

'.tr('Inventario al _DATE_', [ '_DATE_' => Translator::dateToLocale($period_end), ], ['upper' => true]).'

'; $totali = []; foreach ($rs as $r) { $valore_magazzino = $r['prezzo_acquisto'] * $r['qta']; echo ' '; $totali[] = $valore_magazzino; } // Totali $totale_acquisto = sum($totali); $totale_qta = sum(array_column($rs, 'qta')); echo '
'.tr('Codice', [], ['upper' => true]).' '.tr('Categoria', [], ['upper' => true]).' '.tr('Descrizione', [], ['upper' => true]).' '.tr('Prezzo di vendita', [], ['upper' => true]).' '.tr('Q.tà', [], ['upper' => true]).' '.tr('Prezzo di acquisto', [], ['upper' => true]).' '.tr('Valore totale', [], ['upper' => true]).'
'.$r['codice'].' '.$r['nome'].' '.$r['descrizione'].' '.moneyFormat($r['prezzo_vendita']).' '.Translator::numberToLocale($r['qta']).' '.$r['um'].' '.moneyFormat($r['prezzo_acquisto']).' '.moneyFormat($valore_magazzino).'
'.tr('Totale', [], ['upper' => true]).': '.Translator::numberToLocale($totale_qta).' '.moneyFormat($totale_acquisto).'
';