'.tr('Descrizione').' '.tr('Q.tà').' '.tr('U.m.').' '.tr('Costo unitario').' '.tr('Iva').' '.tr('Imponibile').' '; /* Articoli e righe generiche */ $q_art = 'SELECT *, (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) { // 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 '
'.str_replace('_NUM_', $mancanti, tr('_NUM_ serial mancanti')).''; } if (!empty($serials)) { echo '
'.tr('SN').': '.implode(', ', $serials); } } } else { echo nl2br($r['descrizione']); } // Aggiunta riferimento a ordine if (!empty($r['idordine'])) { $rso = $dbo->fetchArray('SELECT numero, numero_esterno, data, dir FROM or_ordini JOIN or_tipiordine ON or_tipiordine.id = or_ordini.idtipoordine WHERE or_ordini.id='.prepare($r['idordine'])); $numero = ($rso[0]['numero_esterno'] != '') ? $rso[0]['numero_esterno'] : $rso[0]['numero']; $ref = $rso[0]['dir'] == 'entrata' ? 'Ordini cliente' : 'Ordini fornitore'; $ref_id = $r['idordine']; $descrizione = str_replace(['_NUM_', '_DATE_'], [$numero, Translator::dateToLocale($rso[0]['data'])], tr('Rif. ordine _NUM_ del _DATE_')); } if(!empty($descrizione)){ echo '
'.Modules::link($ref, $ref_id, $descrizione.' ', $descrizione); } echo ' '; echo ' '; if (!str_contains($r['descrizione'], 'SCONTO')) { echo ' '.Translator::numberToLocale($r['qta'] - $r['qta_evasa']).'
('.tr('Q.tà iniziale').': '.Translator::numberToLocale($r['qta']).')'; } else { echo '1'; } echo ' '; // Unità di misura echo ' '.$r['um'].' '; // Costo unitario echo ' '.Translator::numberToLocale($r['subtotale'] / $r['qta']).' €'; if ($r['sconto_unitario'] > 0) { echo '
- sconto '.Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; } echo ' '; // Iva echo ' '.Translator::numberToLocale($r['iva']).' €
'.$r['desc_iva'].' '; // Imponibile echo ' '.Translator::numberToLocale($r['subtotale'] - $r['sconto']).' € '; // Possibilità di rimuovere una riga solo se il ddt non è evaso echo ' '; if ($records[0]['stato'] != 'Evaso' && !str_contains($r['descrizione'], 'SCONTO')) { echo "
"; if (!empty($r['idarticolo'])) { echo " "; } else { echo " "; } echo "
"; if (!empty($r['idarticolo']) && $r['abilita_serial']) { echo " "; } echo "
"; } if (!str_contains($r['descrizione'], 'SCONTO')) { echo '
'; } echo ' '; } } echo ' '; // Calcoli $imponibile = sum(array_column($rs, 'subtotale')); $sconto = sum(array_column($rs, 'sconto')); $iva = sum(array_column($rs, 'iva')); $imponibile_scontato = sum($imponibile, -$sconto); $totale_iva = sum($iva, $records[0]['iva_rivalsainps']); $totale = sum([ $imponibile_scontato, $records[0]['rivalsainps'], $totale_iva, ]); $netto_a_pagare = sum([ $totale, $marca_da_bollo, -$records[0]['ritenutaacconto'], ]); // IMPONIBILE echo ' '.strtoupper(tr('Imponibile')).': '.Translator::numberToLocale($imponibile).' € '; if (abs($sconto) > 0) { // SCONTO echo ' '.strtoupper(tr('Sconto')).': '.Translator::numberToLocale($sconto).' € '; // IMPONIBILE SCONTATO echo ' '.strtoupper(tr('Imponibile scontato')).': '.Translator::numberToLocale($imponibile_scontato).' € '; } // RIVALSA INPS if (abs($records[0]['rivalsainps']) > 0) { echo ' '.strtoupper(tr('Rivalsa INPS')).': '.Translator::numberToLocale($records[0]['rivalsainps']).' € '; } if (abs($totale_iva) > 0) { echo ' '.strtoupper(tr('IVA')).': '.Translator::numberToLocale($totale_iva).' € '; } // TOTALE echo ' '.strtoupper(tr('Totale')).': '.Translator::numberToLocale($totale).' € '; // Mostra marca da bollo se c'è if (abs($records[0]['bollo']) > 0) { echo ' '.strtoupper(tr('Marca da bollo')).': '.Translator::numberToLocale($records[0]['bollo']).' € '; } // RITENUTA D'ACCONTO if (abs($records[0]['ritenutaacconto']) > 0) { echo ' '.strtoupper(tr("Ritenuta d'acconto")).': '.Translator::numberToLocale($records[0]['ritenutaacconto']).' € '; } // NETTO A PAGARE if ($totale != $netto_a_pagare) { echo ' '.strtoupper(tr('Netto a pagare')).': '.Translator::numberToLocale($netto_a_pagare).' € '; } echo ' '; echo ' ';