. */ include_once __DIR__.'/../../core.php'; $v_iva = []; $v_totale = []; $prezzi_ivati = setting('Utilizza prezzi di vendita comprensivi di IVA'); // Creazione righe fantasma $autofill = new Util\Autofill(6, 70); $rows_per_page = $rows_per_page ?: ($fattura_accompagnatoria ? 24 : 26); $autofill->setRows($rows_per_page, 0); // Intestazione tabella per righe echo " '; // Righe documento if (setting('Raggruppa attività per tipologia in fattura')) { $righe = get_righe_composte($documento); } else { $righe = $documento->getRighe(); } $num = 0; if (!setting('Visualizza riferimento su ogni riga in stampa')) { $riferimenti = []; $id_rif = []; foreach ($righe as $riga) { $riferimento = ($riga->getOriginalComponent() ? $riga->getOriginalComponent()->getDocument()->getReference() : null); if (!empty($riferimento)) { if (!array_key_exists($riferimento, $riferimenti)) { $riferimenti[$riferimento] = []; } if (!in_array($riga->id, $riferimenti[$riferimento])) { $id_rif[] = $riga->id; $riferimenti[$riferimento][] = $riga->id; } } } } foreach ($righe as $riga) { ++$num; $r = $riga->toArray(); $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $riga->iva); $v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], $riga->totale_imponibile); echo ' '; if (!$riga->isDescrizione()) { echo ' '; // Prezzo unitario echo ' '; // Imponibile echo ' '; // Iva echo ' '; } else { echo ' '; } echo ' '; $autofill->next(); } foreach ($v_iva as $desc_iva => $tot_iva) { $autofill->count($desc_iva, true); } echo ' |autofill|
".tr('#', [], ['upper' => true])." ".tr('Descrizione', [], ['upper' => true])." ".tr('Q.tà', [], ['upper' => true])." ".tr('Prezzo unitario', [], ['upper' => true])." ".tr('Importo', [], ['upper' => true])." ".tr('IVA', [], ['upper' => true]).' (%)
'; $text = ''; foreach ($riferimenti as $key => $riferimento) { if (in_array($riga->id, $riferimento)) { if ($riga->id === $riferimento[0]) { $riga_ordine = $database->fetchOne('SELECT numero_cliente, data_cliente FROM or_ordini WHERE id = '.prepare($riga->idordine)); if (!setting('Visualizza numero ordine cliente')) { if (!empty($riga_ordine['numero_cliente']) && !empty($riga_ordine['data_cliente'])) { $text = $text.'Ordine n. '.$riga_ordine['numero_cliente'].' del '.Translator::dateToLocale($riga_ordine['data_cliente']).'
'; } } $r['descrizione'] = str_replace("\nRif. ".strtolower((string) $key), '', $r['descrizione']); if (preg_match("/Rif\.(.*)/s", $r['descrizione'], $rif2)) { $r['descrizione'] = str_replace('\nRif.'.strtolower($rif2[1] ?: ''), '', $r['descrizione']); $text .= ''.$rif2[0].'
'; } $text .= ''.$key.'
'; echo ' '.nl2br($text); $autofill->count($text); } } $r['descrizione'] = preg_replace("/(\r\n|\r|\n)Rif\.(.*)/s", '', (string) $r['descrizione']); } $source_type = $riga::class; $autofill->count($r['descrizione']); echo $num.' '.nl2br((string) $r['descrizione']); if ($riga->isArticolo()) { echo '
'.$riga->codice.'
'; $autofill->count($riga->codice, true); } if ($riga->isArticolo()) { // Seriali $seriali = $riga->serials; if (!empty($seriali)) { $text = tr('SN').': '.implode(', ', $seriali); echo ' '.$text.''; $autofill->count($text, true); } } // Informazioni su CIG, CUP, ... if ($riga->hasOriginalComponent()) { $documento_originale = $riga->getOriginalComponent()->getDocument(); $num_item = $documento_originale['num_item']; $codice_commessa = $documento_originale['codice_commessa']; $codice_cig = $documento_originale['codice_cig']; $codice_cup = $documento_originale['codice_cup']; $id_documento_fe = $documento_originale['id_documento_fe']; $extra_riga = replace('_ID_DOCUMENTO__NUMERO_RIGA__CODICE_COMMESSA__CODICE_CIG__CODICE_CUP_', [ '_ID_DOCUMENTO_' => $id_documento_fe ? 'DOC: '.$id_documento_fe : null, '_NUMERO_RIGA_' => $num_item ? ', NRI: '.$num_item : null, '_CODICE_COMMESSA_' => $codice_commessa ? ', COM: '.$codice_commessa : null, '_CODICE_CIG_' => $codice_cig ? ', CIG: '.$codice_cig : null, '_CODICE_CUP_' => $codice_cup ? ', CUP: '.$codice_cup : null, ]); echo '
'.$extra_riga.''; } echo '
'.Translator::numberToLocale(abs($riga->qta), $d_qta).' '.$r['um'].' '.moneyFormat($prezzi_ivati ? $riga->prezzo_unitario_ivato : $riga->prezzo_unitario, $d_importi); if ($riga->sconto > 0) { $text = discountInfo($riga, false); echo '
'.$text.''; $autofill->count($text, true); } echo '
'.moneyFormat($prezzi_ivati ? ($riga->totale_imponibile + $riga->iva) : $riga->totale_imponibile, $d_importi).' '.Translator::numberToLocale($riga->aliquota->percentuale, 0).'
'; // Aggiungo diciture particolari per l'anagrafica cliente $dicitura = $dbo->fetchOne('SELECT `diciturafissafattura` AS dicitura FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($id_cliente)); if (!empty($dicitura['dicitura'])) { echo '

'.nl2br((string) $dicitura['dicitura']).'

'; } // Aggiungo diciture per condizioni iva particolari foreach ($v_iva as $key => $value) { $dicitura = $dbo->fetchOne('SELECT `dicitura` FROM `co_iva` LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `title` = '.prepare($key)); if (!empty($dicitura['dicitura'])) { echo '

'.nl2br((string) $dicitura['dicitura']).'

'; } } echo ' '; echo ' '; echo ' '; echo '
'; if (!empty($record['note'])) { echo '

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

'.nl2br((string) $record['note']).'

'; $autofill->count($record['note'], true); } echo '
';