'.tr('Descrizione').' '.tr('Q.tà').' '.tr('U.m.').' '.tr('Costo unitario').' '.tr('Iva').' '.tr('Imponibile').' '; /* Articoli e righe generiche */ $q_art = 'SELECT *, round(sconto_unitario,'.setting('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.setting('Cifre decimali per importi').') AS sconto, round(subtotale,'.setting('Cifre decimali per importi').') AS subtotale, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice FROM `dt_righe_ddt` WHERE idddt='.prepare($id_record).' ORDER BY `order`'; $rs = $dbo->fetchArray($q_art); if (!empty($rs)) { foreach ($rs as $r) { $extra = ''; $mancanti = 0; // Individuazione dei seriali if (!empty($r['idarticolo']) && !empty($r['abilita_serial'])) { $serials = array_column($dbo->fetchArray('SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND id_riga_ddt='.prepare($r['id'])), 'serial'); $mancanti = $r['qta'] - count($serials); if ($mancanti > 0) { $extra = 'class="warning"'; } else { $mancanti = 0; } } echo ' '; if (!empty($r['idarticolo'])) { echo ' '.Modules::link('Articoli', $r['idarticolo'], $r['codice'].' - '.$r['descrizione']); if (!empty($r['abilita_serial'])) { if (!empty($mancanti)) { echo '
'.tr('_NUM_ serial mancanti', [ '_NUM_' => $mancanti, ]).''; } if (!empty($serials)) { echo '
'.tr('SN').': '.implode(', ', $serials); } } } else { echo nl2br($r['descrizione']); } // Aggiunta dei riferimenti ai documenti $ref = doc_references($r, $dir, ['idddt']); if (!empty($ref)) { echo '
'.Modules::link($ref['module'], $ref['id'], $ref['description'], $ref['description']); } echo ' '; echo ' '; if (empty($r['is_descrizione'])) { echo ' '.Translator::numberToLocale($r['qta'] - $r['qta_evasa'], 'qta').' / '.Translator::numberToLocale($r['qta'], 'qta').''; } echo ' '; // Unità di misura echo ' '; if (empty($r['is_descrizione'])) { echo ' '.$r['um']; } echo ' '; // Costo unitario echo ' '; if (empty($r['is_descrizione'])) { echo ' '.moneyFormat($r['subtotale'] / $r['qta']); if (abs($r['sconto_unitario']) > 0) { $text = $r['sconto_unitario'] > 0 ? tr('sconto _TOT_ _TYPE_') : tr('maggiorazione _TOT_ _TYPE_'); echo '
'.replace($text, [ '_TOT_' => Translator::numberToLocale(abs($r['sconto_unitario'])), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()), ]).''; } } echo ' '; // Iva echo ' '; if (empty($r['is_descrizione'])) { echo ' '.moneyFormat($r['iva']).'
'.$r['desc_iva'].''; } echo ' '; // Imponibile echo ' '; if (empty($r['is_descrizione'])) { echo ' '.moneyFormat($r['subtotale'] - $r['sconto']); } echo ' '; // Possibilità di rimuovere una riga solo se il ddt non è evaso echo ' '; if ($record['flag_completato'] == 0) { echo "
"; if (!empty($r['idarticolo']) && $r['abilita_serial']) { echo " "; } echo "
"; } echo '
'; echo ' '; } } echo ' '; // Calcoli $imponibile = abs($ddt->imponibile); $sconto = $ddt->sconto; $totale_imponibile = abs($ddt->totale_imponibile); $iva = abs($ddt->iva); $totale = abs($ddt->totale); // IMPONIBILE echo ' '.tr('Imponibile', [], ['upper' => true]).': '.moneyFormat($imponibile, 2).' '; // SCONTO if (!empty($sconto)) { echo ' '.tr('Sconto/maggiorazione', [], ['upper' => true]).': '.moneyFormat($sconto, 2).' '; // TOTALE IMPONIBILE echo ' '.tr('Totale imponibile', [], ['upper' => true]).': '.moneyFormat($totale_imponibile, 2).' '; } // IVA echo ' '.tr('IVA', [], ['upper' => true]).': '.moneyFormat($iva, 2).' '; // TOTALE echo ' '.tr('Totale', [], ['upper' => true]).': '.moneyFormat($totale, 2).' '; echo ' '; echo ' ';