'.tr('Descrizione').' '.tr('Q.tà').' '.tr('U.m.').' '.tr('Costo unitario').' '.tr('Iva').' '.tr('Imponibile').' '; $q = 'SELECT *, round(sconto_unitario,'.Settings::get('Cifre decimali per importi').') AS sconto_unitario, round(sconto,'.Settings::get('Cifre decimali per importi').') AS sconto, round(subtotale,'.Settings::get('Cifre decimali per importi').') AS subtotale, (SELECT codice FROM mg_articoli WHERE mg_articoli.id=`or_righe_ordini`.`idarticolo`) AS codice FROM `or_righe_ordini` WHERE idordine='.prepare($id_record).' ORDER BY `order`'; $rs = $dbo->fetchArray($q); if (!empty($rs)) { foreach ($rs as $r) { $extra = ''; $ref_modulo = null; $ref_id = null; $delete = !empty($r['idarticolo']) ? 'unlink_articolo' : 'unlink_riga'; $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_ordine='.prepare($r['id'])), 'serial'); $mancanti = $r['qta'] - count($serials); if ($mancanti > 0) { $extra = 'class="warning"'; } else { $mancanti = 0; } } echo ' '.Modules::link($ref_modulo, $ref_id, $r['descrizione']); 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 { if ($r['lotto'] != '') { echo '
Lotto: '.$r['lotto']; } if ($r['serial'] != '') { echo '
SN: '.$r['serial']; } if ($r['altro'] != '') { echo '
'.$r['altro']; } } } // Aggiunta dei riferimenti ai documenti // Preventivo if (!empty($r['idpreventivo'])) { $data = $dbo->fetchArray('SELECT numero, data_bozza AS data FROM co_preventivi WHERE id='.prepare($r['idpreventivo'])); $ref_modulo = 'Preventivi'; $ref_id = $r['idpreventivo']; $documento = tr('Preventivo'); } if (!empty($ref_modulo) && !empty($ref_id)) { $documento = Stringy\Stringy::create($documento)->toLowerCase(); if (!empty($data)) { $descrizione = tr('Rif. _DOC_ num. _NUM_ del _DATE_', [ '_DOC_' => $documento, '_NUM_' => $data[0]['numero'], '_DATE_' => Translator::dateToLocale($data[0]['data']), ]); } else { $descrizione = tr('_DOC_ di riferimento _ID_ eliminato', [ '_DOC_' => $documento->upperCaseFirst(), '_ID_' => $ref_id, ]); } echo '
'.Modules::link($ref_modulo, $ref_id, $descrizione, $descrizione); } echo ' '; echo ' '; if (empty($r['is_descrizione'])) { if (empty($r['sconto_globale'])) { echo ' '.Translator::numberToLocale($r['qta'] - $r['qta_evasa']).'
('.tr('Q.tà iniziale').': '.Translator::numberToLocale($r['qta']).')'; } else { echo '1'; } } echo ' '; // Unità di misura echo ' '; if (empty($r['is_descrizione'])) { echo ' '.$r['um']; } echo ' '; // Costo unitario echo ' '; if (empty($r['is_descrizione'])) { echo ' '.Translator::numberToLocale($r['subtotale'] / $r['qta']).' €'; if ($r['sconto_unitario'] > 0) { echo '
'.tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'), ]).''; } } echo ' '; // Iva echo ' '; if (empty($r['is_descrizione'])) { echo ' '.Translator::numberToLocale($r['iva']).' €
'.$r['desc_iva'].''; } echo ' '; // Imponibile echo ' '; if (empty($r['is_descrizione'])) { echo ' '.Translator::numberToLocale($r['subtotale'] - $r['sconto']).' €'; } echo ' '; // Possibilità di rimuovere una riga solo se l'ordine non è evaso echo ' '; if ( $records[0]['flag_completato'] == 0 && empty($r['sconto_globale']) ) { echo "
"; if (!empty($r['idarticolo'])) { echo " "; } echo "
"; if (!empty($r['idarticolo']) && $r['abilita_serial']) { echo " "; } echo "
"; } if (empty($r['sconto_globale'])) { 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 ' '.tr('Imponibile', [], ['upper' => true]).': '.Translator::numberToLocale($imponibile).' € '; // SCONTO if (abs($sconto) > 0) { echo ' '.tr('Sconto', [], ['upper' => true]).': '.Translator::numberToLocale($sconto).' € '; // IMPONIBILE SCONTATO echo ' '.tr('Imponibile scontato', [], ['upper' => true]).': '.Translator::numberToLocale($imponibile_scontato).' € '; //$totale -= $sconto; } // RIVALSA INPS if (abs($records[0]['rivalsainps']) > 0) { echo ' '.tr('Rivalsa INPS', [], ['upper' => true]).': '.Translator::numberToLocale($records[0]['rivalsainps']).' € '; } // IVA if (abs($totale_iva) > 0) { echo ' '.tr('Iva', [], ['upper' => true]).': '.Translator::numberToLocale($totale_iva).' € '; } // TOTALE echo ' '.tr('Totale', [], ['upper' => true]).': '.Translator::numberToLocale($totale).' € '; // Mostra marca da bollo se c'è if (abs($records[0]['bollo']) > 0) { echo ' '.tr('Marca da bollo', [], ['upper' => true]).': '.Translator::numberToLocale($records[0]['bollo']).' € '; } // RITENUTA D'ACCONTO if (abs($records[0]['ritenutaacconto']) > 0) { echo ' '.tr("Ritenuta d'acconto", [], ['upper' => true]).': '.Translator::numberToLocale($records[0]['ritenutaacconto']).' € '; } // NETTO A PAGARE if ($totale != $netto_a_pagare) { echo ' '.tr('Netto a pagare', [], ['upper' => true]).': '.Translator::numberToLocale($netto_a_pagare).' € '; } echo ' '; echo ' ';