$item) { if ($key == $keySearch) { return true; } elseif (is_array($item) && findKey($item, $keySearch)) { echo $key; return true; } } return false; } $report_name = 'ordine_'.$numero_ord.'.pdf'; $has_image = false; // RIGHE ORDINE $righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `or_righe_ordini`.`idarticolo`), '') AS codice_articolo, IFNULL((SELECT `immagine` FROM `mg_articoli` WHERE `id` = `or_righe_ordini`.`idarticolo`), '') AS immagine_articolo, (SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_ordine` = `or_righe_ordini`.`id`) AS seriali, (SELECT `percentuale` FROM `co_iva` WHERE `id` = `or_righe_ordini`.`idiva`) AS perc_iva FROM `or_righe_ordini` WHERE idordine=".prepare($id_record).' ORDER BY `order`'); //controllo se gli articoli nell'ordine hanno un'immagine if (findKey($righe, 'immagine_articolo')) { if (!empty($righe[(findKey($righe, 'immagine_articolo') - 1)]['immagine_articolo'])) { $has_image = true; } } $autofill = [ 'count' => 0, // Conteggio delle righe 'words' => 70, // Numero di parolo dopo cui contare una riga nuova 'rows' => 20, // Numero di righe massimo presente nella pagina 'additional' => 15, // Numero di righe massimo da aggiungere 'columns' => (($has_image) ? 6 : 5), // Numero di colonne della tabella ]; $sconto = []; $imponibile = []; $iva = []; // Intestazione tabella per righe echo " "; if ($has_image) { echo " '; } echo " '; foreach ($righe as $r) { $count = 0; $count += ceil(strlen($r['descrizione']) / $autofill['words']); $count += substr_count($r['descrizione'], PHP_EOL); echo ' '; if ($has_image) { echo ' '; } echo ' '; echo " '; if ($options['pricing']) { // Prezzo unitario echo " '; // Imponibile echo " '; } else { echo ' '; } // Iva echo ' '; $autofill['count'] += $count; $sconto[] = $r['sconto']; $imponibile[] = $r['subtotale']; $iva[] = $r['iva']; } $sconto = sum($sconto); $imponibile = sum($imponibile); $iva = sum($iva); $totale = $imponibile - $sconto; echo ' |autofill| '; // TOTALE COSTI FINALI if ($options['pricing']) { // Totale imponibile echo ' '; // Eventuale sconto incondizionato if (!empty($sconto)) { echo ' '; // Imponibile scontato echo ' '; } // IVA echo ' '; $totale = sum($totale, $iva); // TOTALE echo ' '; } echo '
".tr('Immagine', [], ['upper' => true]).'".tr('Descrizione', [], ['upper' => true])." ".tr('Q.tà', [], ['upper' => true])." ".tr('Prezzo unitario', [], ['upper' => true])." ".tr('Importo', [], ['upper' => true])." ".tr('IVA', [], ['upper' => true]).' (%)
'; if (!empty($r['immagine_articolo'])) { echo ''; } echo ' '; echo ' '.nl2br($r['descrizione']); // Codice articolo if (!empty($r['codice_articolo'])) { echo '
'.tr('COD. _COD_', [ '_COD_' => $r['codice_articolo'], ]).''; if ($count <= 1) { $count += 0.4; } } // Seriali if (!empty($r['seriali'])) { echo '
'.tr('SN').': '.$r['seriali'].''; if ($count <= 1) { $count += 0.4; } } echo '
"; if (empty($r['is_descrizione'])) { echo ' '.(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'], 'qta')).' '.$r['um']; } echo ' "; if (empty($r['is_descrizione'])) { echo ' '.(empty($r['qta']) || empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'] / $r['qta'])).' €'; if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'), ]).''; if ($count <= 1) { $count += 0.4; } } } echo '
"; if (empty($r['is_descrizione'])) { echo ' '.(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'])).' €'; if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto']), '_TYPE_' => '€', ]).''; if ($count <= 1) { $count += 0.4; } } } echo '
- -'; if (empty($r['is_descrizione'])) { echo ' '.Translator::numberToLocale($r['perc_iva']); } echo '
'.tr('Imponibile', [], ['upper' => true]).': '.Translator::numberToLocale($imponibile).' €
'.tr('Sconto', [], ['upper' => true]).': -'.Translator::numberToLocale($sconto).' €
'.tr('Imponibile scontato', [], ['upper' => true]).': '.Translator::numberToLocale($totale).' €
'.tr('Totale IVA', [], ['upper' => true]).': '.Translator::numberToLocale($iva).' €
'.tr('Quotazione totale', [], ['upper' => true]).': '.Translator::numberToLocale($totale).' €
'; if (!empty($records[0]['note'])) { echo '

'.tr('Note', [], ['upper' => true]).':

'.nl2br($records[0]['note']).'

'; }