. */ include_once __DIR__.'/../../../core.php'; $record['abilita_serial'] = ($record['serial'] > 0) ? 1 : $record['abilita_serial']; if (empty($record['abilita_serial'])) { echo ' '; } // Visualizzo, in base alle impostazioni scelte, se il magazzino verrà movimentato $message = setting("Movimenta il magazzino durante l'inserimento o eliminazione dei lotti/serial number") ? tr("L'inserimento e la rimozione dei seriali modificherà la quantità dell'articolo!") : tr("L'inserimento e la rimozione dei seriali non movimenterà la quantità dell'articolo!"); echo '
'.$message.'
'; // Inserimento seriali echo ' '; // Elenco if (empty(get('modal'))) { echo '

'.tr('Elenco seriali').'

'; // Conteggio totale prodotti $rs = $dbo->fetchArray('SELECT COUNT(id) AS tot FROM mg_prodotti WHERE id_articolo='.prepare($id_record)); $tot_prodotti = $rs[0]['tot']; // Visualizzazione di tutti i prodotti $search_serial = get('search_serial'); $query = 'SELECT id, serial, created_at FROM mg_prodotti WHERE serial IS NOT NULL AND id_articolo='.prepare($id_record).(!empty($search_serial) ? ' AND serial LIKE '.prepare('%'.$search_serial.'%') : '').' GROUP BY serial ORDER BY created_at DESC, serial DESC, lotto DESC, altro DESC'; $rs2 = $dbo->fetchArray($query); echo ' '; for ($i = 0; $i < count($rs2); ++$i) { echo ' '; echo ' '; // Ricerca acquisti $acquisti = $dbo->fetchArray('SELECT * FROM mg_prodotti WHERE dir=\'uscita\' AND id_articolo='.prepare($id_record).' AND (id_riga_documento IS NOT NULL OR id_riga_ordine IS NOT NULL OR id_riga_ddt IS NOT NULL) AND serial='.prepare($rs2[$i]['serial'])); if (!empty($acquisti)) { echo ' '; } // Non venduto else { echo ' '; } // Ricerca vendite $vendite = $dbo->fetchArray('SELECT * FROM mg_prodotti WHERE dir=\'entrata\' AND id_articolo='.prepare($id_record).' AND serial='.prepare($rs2[$i]['serial'])); if (!empty($vendite)) { echo ' '; } // Non venduto else { // Documento di vendita echo ' '; } echo ' '; } echo '
'.tr('Serial').' '.tr('Data di creazione').' '.tr('Documento di acquisto').' '.tr('Prezzo di acquisto').' '.tr('Documento di vendita').' '.tr('Prezzo di vendita').' #
'.$rs2[$i]['serial'].''.Translator::timestampToLocale($rs2[$i]['created_at']).''; $totali = []; foreach ($acquisti as $acquisto) { // Acquistato su fatture if (!empty($acquisto['id_riga_documento'])) { $module = 'Fatture di acquisto'; // Ricerca vendite su fatture $query = 'SELECT *, `co_tipidocumento_lang`.`title` AS tipo_documento, `co_tipidocumento`.`dir`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`, `co_documenti`.`data` FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_righe_documenti`.`iddocumento` = `co_documenti`.`id` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id` = `co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `co_righe_documenti`.`id`='.prepare($acquisto['id_riga_documento']); $data = $dbo->fetchArray($query); $id = $data[0]['iddocumento']; } // Acquistato su ddt elseif (!empty($acquisto['id_riga_ddt'])) { $module = 'Ddt in entrata'; $query = 'SELECT *, `dt_tipiddt_lang`.`title` AS tipo_documento, `dt_tipiddt`.`dir` AS `dir`, `dt_ddt`.`numero` AS numero, `dt_ddt`.`data` AS data, `dt_ddt`.`numero_esterno` AS numero_esterno FROM `dt_righe_ddt` INNER JOIN `dt_ddt` ON `dt_righe_ddt`.`idddt` = `dt_ddt`.`id` INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt` = `dt_tipiddt`.`id` LEFT JOIN `dt_tipiddt_lang` ON (`dt_tipiddt`.`id` = `dt_tipiddt_lang`.`id_record` AND `dt_tipiddt_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `dt_righe_ddt`.`id`='.prepare($acquisto['id_riga_ddt']); $data = $dbo->fetchArray($query); $id = $data[0]['idddt']; } // Inserito su ordini elseif (!empty($acquisto['id_riga_ordine'])) { $module = 'Ordini cliente'; // Ricerca inserimenti su ordini $query = 'SELECT *, `or_tipiordine_lang`.`title` AS tipo_documento, `or_tipiordine`.`dir`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_ordini`.`data` FROM `or_righe_ordini` INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine`=`or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`ididtipordine`=`or_tipiordine`.`id` LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine`.`id` = `or_tipiordine_lang`.`id_record` AND `or_tipiordine_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `or_righe_ordini`.`id`='.prepare($acquisto['id_riga_ordine']); $data = $dbo->fetchArray($query); $id = $data[0]['idordine']; } $totali[] = [$data[0]['prezzo_unitario'] - $data[0]['sconto_unitario'], $data[0]['iva_unitaria']]; $numero = !empty($data[0]['numero_esterno']) ? $data[0]['numero_esterno'] : $data[0]['numero']; $text = tr('_DOC_ num. _NUM_ del _DATE_', [ '_DOC_' => $data[0]['tipo_documento'], '_NUM_' => $numero, '_DATE_' => Translator::dateToLocale($data[0]['data']), ]).(!empty($extra) ? ' '.$extra : ''); echo Modules::link($module, $id, $text).'
'; } echo '
'; foreach ($totali as $value) { $subtotale = $value[0]; $iva = $value[1]; echo ' '.moneyFormat($subtotale + $iva).''; if (!empty($subtotale) && !empty($iva)) { echo ' ('.Translator::numberToLocale($subtotale).' + '.Translator::numberToLocale($iva).')'; } echo '
'; } echo '
'; $totali = []; foreach ($vendite as $vendita) { // Venduto su fatture if (!empty($vendita['id_riga_documento'])) { $module = 'Fatture di vendita'; // Ricerca vendite su fatture $query = 'SELECT *, `co_tipidocumento_lang`.`title` AS tipo_documento, `co_tipidocumento`.`dir`, `co_documenti`.`numero`, `co_documenti`.`numero_esterno`,`co_documenti`.`data` FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_righe_documenti`.`iddocumento`=`co_documenti`.`id` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id`=`co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `co_righe_documenti`.`id`='.prepare($vendita['id_riga_documento']); $data = $dbo->fetchArray($query); $id = $data[0]['iddocumento']; } // Venduto su ddt elseif (!empty($vendita['id_riga_ddt'])) { $module = 'Ddt in uscita'; $query = 'SELECT *, `dt_tipiddt_lang`.`title` AS tipo_documento, `dt_ddt`.`dir`, `dt_ddt`.`numero`, `dt_ddt`.`numero_esterno`, `dt_ddt`.`data` FROM `dt_righe_ddt` INNER JOIN `dt_ddt` ON `dt_righe_ddt`.`idddt`=`dt_ddt`.`id` INNER JOIN `dt_tipiddt` ON `dt_ddt`.`idtipoddt`=`dt_tipiddt`.`id` LEFT JOIN `dt_tipiddt_lang` ON (`dt_tipiddt_lang`.`id_record`=`dt_tipiddt`.`id` AND `dt_tipiddt_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `dt_righe_ddt`.`id`='.prepare($vendita['id_riga_ddt']); $data = $dbo->fetchArray($query); $id = $data[0]['idddt']; } // Inserito su ordini elseif (!empty($vendita['id_riga_ordine'])) { $module = 'Ordini cliente'; // Ricerca inserimenti su ordini $query = 'SELECT *, `or_tipiordine_lang`.`title` AS tipo_ordine, `or_ordini`.`dir`, `or_ordini`.`numero`, `or_ordini`.`numero_esterno`, `or_ordini`.`data` FROM `or_righe_ordini` INNER JOIN `or_ordini` ON `or_righe_ordini`.`idordine`=`or_ordini`.`id` INNER JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine`=`or_tipiordine`.`id` LEFT JOIN `or_tipiordine_lang` ON (`or_tipiordine_lang`.`id_record`=`or_tipiordine`.`id` AND `or_tipiordine_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `or_righe_ordini`.`id`='.prepare($vendita['id_riga_ordine']); $data = $dbo->fetchArray($query); $id = $data[0]['idordine']; } // Inserito su intervento elseif (!empty($vendita['id_riga_intervento'])) { $module = 'Interventi'; // Ricerca inserimenti su interventi $query = 'SELECT in_righe_interventi.*, in_interventi.codice, ( SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=in_righe_interventi.idintervento LIMIT 0,1 ) AS data FROM in_righe_interventi JOIN in_interventi ON in_interventi.id = in_righe_interventi.idintervento WHERE in_righe_interventi.id='.prepare($vendita['id_riga_intervento']); $data = $dbo->fetchArray($query); $id = $data[0]['idintervento']; $data[0]['tipo_documento'] = tr('Intervento').' '.$data[0]['codice']; } // Inserito su contratto elseif (!empty($vendita['id_riga_contratto'])) { $module = 'Contratti'; // Ricerca vendite su contratti $query = 'SELECT *, "Contratto" AS tipo_documento, ( SELECT data_bozza FROM co_contratti WHERE id=idcontratto ) AS data, ( SELECT numero FROM co_contratti WHERE id=idcontratto ) AS numero FROM co_righe_contratti WHERE co_righe_contratti.id='.prepare($vendita['id_riga_contratto']); $data = $dbo->fetchArray($query); $id = $data[0]['idcontratto']; } // Inserito su vendita banco elseif (!empty($vendita['id_riga_venditabanco'])) { $module = 'Vendita al banco'; // Ricerca vendite su contratti $query = 'SELECT *, "Vendita al banco" AS tipo_documento, ( SELECT data FROM vb_venditabanco WHERE id=idvendita ) AS data, ( SELECT numero FROM vb_venditabanco WHERE id=idvendita ) AS numero FROM vb_righe_venditabanco WHERE vb_righe_venditabanco.id='.prepare($vendita['id_riga_venditabanco']); $data = $dbo->fetchArray($query); $id = $data[0]['idvendita']; } $totali[] = [$data[0]['prezzo_unitario'] - $data[0]['sconto_unitario'], $data[0]['iva_unitaria']]; $numero = !empty($data[0]['numero_esterno']) ? $data[0]['numero_esterno'] : $data[0]['numero']; $text = tr('_DOC_ num. _NUM_ del _DATE_', [ '_DOC_' => $data[0]['tipo_documento'], '_NUM_' => $numero, '_DATE_' => Translator::dateToLocale($data[0]['data']), ]); echo Modules::link($module, $id, $text).'
'; } echo '
'; foreach ($totali as $value) { $subtotale = $value[0]; $iva = $value[1]; echo ' '.moneyFormat($subtotale + $iva).''; if (!empty($subtotale) && !empty($iva)) { echo ' ('.Translator::numberToLocale($subtotale).' + '.Translator::numberToLocale($iva).')'; } echo '
'; } echo '
'; } echo ' ';