. */ use Carbon\Carbon; use Models\Module; use Modules\Checklists\Check; include_once __DIR__.'/../../core.php'; $d_qta = (int) setting('Cifre decimali per quantità in stampa'); $d_importi = (int) setting('Cifre decimali per importi in stampa'); $d_totali = (int) setting('Cifre decimali per totali in stampa'); /* Dati intervento */ echo ' '; if (!empty($preventivo)) { echo ' '; } elseif (!empty($contratto)) { echo ' '; } echo ' '; // Dati cliente echo ' '; // Codice fiscale o P.Iva if (!empty($c_piva)) { echo ' '; } else { echo ' '; } echo ''; // Indirizzo if (!empty($s_indirizzo) or !empty($s_cap) or !empty($s_citta) or !empty($s_provincia)) { echo ' '; } elseif (!empty($c_indirizzo) or !empty($c_cap) or !empty($c_citta) or !empty($c_provincia)) { echo ' '; } echo ' '; // riga 3 // Elenco impianti su cui è stato fatto l'intervento $rs2 = $dbo->fetchArray('SELECT *, (SELECT nome FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS nome, (SELECT matricola FROM my_impianti WHERE id=my_impianti_interventi.idimpianto) AS matricola FROM my_impianti_interventi WHERE idintervento='.prepare($id_record)); $impianti = []; for ($j = 0; $j < count($rs2); ++$j) { $impianti[] = ''.$rs2[$j]['nome']."(".$rs2[$j]['matricola'].')'; } echo ' '; // Tipo intervento echo ' '; // Richiesta // Rimosso nl2br, non necessario con ckeditor echo ' '; // Descrizione // Rimosso nl2br, non necessario con ckeditor echo ' '; echo '
'.tr('Rapporto attività e interventi', [], ['upper' => true]).'
'.tr('Intervento n.').': '.$documento['codice'].' '.tr('Data richiesta').': '.Translator::dateToLocale($documento['data_richiesta']).''.tr('Preventivo n.').': '.(!empty($preventivo) ? $preventivo['numero'].' del '.Translator::dateToLocale($preventivo['data_bozza']) : '').''.tr('Contratto n.').': '.(!empty($contratto) ? $contratto['numero'].' del '.Translator::dateToLocale($contratto['data_bozza']) : '').'
'.tr('Cliente').': '.$c_ragionesociale.' '.tr('P.Iva').': '.strtoupper($c_piva).' '.tr('C.F.').': '.strtoupper($c_codicefiscale).'
'.((!empty($s_indirizzo)) ? tr('Via').': '.$s_indirizzo.'' : '').' '.((!empty($s_cap)) ? tr('CAP').': '.$s_cap.'' : '').' '.((!empty($s_citta)) ? tr('Città').': '.$s_citta.'' : '').' '.((!empty($s_provincia)) ? tr('Provincia').': '.strtoupper($s_provincia).'' : '').'
'.((!empty($c_indirizzo)) ? tr('Via').': '.$c_indirizzo.'' : '').' '.((!empty($c_cap)) ? tr('CAP').': '.$c_cap.'' : '').' '.((!empty($c_citta)) ? tr('Città').': '.$c_citta.'' : '').' '.((!empty($c_provincia)) ? tr('Provincia').': '.strtoupper($c_provincia).'' : '').'
'.tr('Telefono').': '.$c_telefono.''; if (!empty($c_cellulare)) { echo ' - '.tr('Cellulare').': '.$c_cellulare.''; } echo '
'.tr('Impianti').': '.implode(', ', $impianti).'
'.tr('Tipo intervento').': '.$documento->tipo->getTranslation('title').'
'.tr('Richiesta').':

'.$documento['richiesta'].'

'.tr('Descrizione').':

'.$documento['descrizione'].'

'; $righe = $documento->getRighe(); 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; } } } } if (!$righe->isEmpty()) { echo ' '; foreach ($righe as $riga) { if (setting('Formato ore in stampa') == 'Sessantesimi') { if ($riga->um == 'ore') { $qta = Translator::numberToHours($riga->qta); } else { $qta = Translator::numberToLocale($riga->qta, $d_qta); } } else { $qta = Translator::numberToLocale($riga->qta, $d_qta); } // Articolo echo ' '; // Quantità echo ' '; // Prezzo unitario echo ' '; // Prezzo totale echo ' '; } echo ' '; if ($options['pricing']) { // Totale spese aggiuntive echo ' '; } echo '
'.tr('Materiale utilizzato e spese aggiuntive', [], ['upper' => true]).'
'.tr('Descrizione').' '.tr('Q.tà').' '.tr('Prezzo unitario').' '.tr('Importo').'
'; $text = ''; foreach ($riferimenti as $key => $riferimento) { if (in_array($riga->id, $riferimento)) { if ($riga->id === $riferimento[0]) { $riga_ordine = $riga->getOriginalComponent()->getDocument(); $text = ''.$key.'
'; if ($options['pricing']) { $text = $text.'
'; } $text = $text.'
'; echo nl2br($text); } } $riga['descrizione'] = str_replace('Rif. '.strtolower($key), '', $riga['descrizione']); } $source_type = get_class($riga); if (!setting('Visualizza riferimento su ogni riga in stampa')) { echo $riga['descrizione']; } else { echo nl2br($riga['descrizione']); } if ($riga->isArticolo()) { echo nl2br('
'.$riga->codice.''); } if ($riga->isArticolo()) { // Seriali $seriali = $riga->serials; if (!empty($seriali)) { $text = tr('SN').': '.implode(', ', $seriali); echo ' '.$text.''; } } echo '
'.$qta.' '.$riga->um.' '.($options['pricing'] ? moneyFormat($riga->prezzo_unitario_corrente, $d_importi) : '-'); if ($options['pricing'] && $riga->sconto > 0) { $text = discountInfo($riga, false); echo '
'.$text.''; } echo '
'.($options['pricing'] ? moneyFormat($riga->importo, $d_importi) : '-').'
'.tr('Totale', [], ['upper' => true]).': '.moneyFormat($righe->sum('importo'), $d_totali).'
'; } // INTESTAZIONE ELENCO TECNICI echo ' '; // Sessioni di lavoro dei tecnici $sessioni = $documento->sessioni->sortBy('orario_inizio'); foreach ($sessioni as $i => $sessione) { echo ' '; // Nome tecnico echo ' '; $inizio = new Carbon($sessione['orario_inizio']); $fine = new Carbon($sessione['orario_fine']); if ($inizio->isSameDay($fine)) { $orario = timestampFormat($inizio).' - '.timeFormat($fine); } else { $orario = timestampFormat($inizio).' - '.timestampFormat($fine); } // Orario echo ' '; // Spazio aggiuntivo if ($i == 0) { echo ' '; } else { echo ' '; } echo ' '; } // Ore lavorate if (setting('Formato ore in stampa') == 'Sessantesimi') { $ore_totali = Translator::numberToHours($documento->ore_totali); } else { $ore_totali = Translator::numberToLocale($documento->ore_totali, $d_totali); } echo ' '; // Costo totale manodopera if ($options['pricing']) { echo ' '; } else { echo ' '; } // Timbro e firma $firma = !empty($documento['firma_file']) ? '' : ''; echo ' '; // Totale km echo ' '; // Costo trasferta if ($options['pricing']) { echo ' '; } else { echo ' '; } // Diritto di chiamata if ($options['pricing']) { echo ' '; } else { echo ' '; } // Calcoli $imponibile = abs($documento->imponibile); $sconto = $documento->sconto; $totale_imponibile = abs($documento->totale_imponibile); $totale_iva = abs($documento->iva); $totale = abs($documento->totale); $netto_a_pagare = abs($documento->netto); $show_sconto = $sconto > 0; // TOTALE COSTI FINALI if ($options['pricing']) { // Totale imponibile echo ' '; // Eventuale sconto totale if ($show_sconto) { echo ' '; // Totale imponibile echo ' '; } // IVA // Totale intervento echo ' '; // TOTALE INTERVENTO echo ' '; } echo '
'.tr('Ore tecnici', [], ['upper' => true]).'
'.tr('Tecnico').' '.tr('Orario').' '.tr('I dati del ricevente verrano trattati in base alla normativa europea UE 2016/679 del 27 aprile 2016 (GDPR)').'
'.$sessione->anagrafica->ragione_sociale.' ('.$sessione->tipo->getTranslation('title').') '.$orario.' '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati nel rispetto delle vigenti normative tecniche').'
'.tr('Ore lavorate').':
'.$ore_totali.'
'.tr('Totale manodopera').':
'.moneyFormat($sessioni->sum('prezzo_manodopera'), $d_totali).'
- '.$firma.'
'; if (empty($documento['firma_file'])) { echo ' ('.tr('Timbro e firma leggibile').')'; } else { echo ' '.$documento['firma_nome'].''; } echo '
'.tr('Km percorsi').':
'.Translator::numberToLocale($documento->km_totali, $d_qta).'
'.tr('Costi di trasferta').':
'.moneyFormat($sessioni->sum('prezzo_viaggio'), $d_totali).'
- '.tr('Diritto di chiamata').':
'.moneyFormat($sessioni->sum('prezzo_diritto_chiamata'), $d_totali).'
-
'.tr('Imponibile', [], ['upper' => true]).': '.moneyFormat($show_sconto ? $imponibile : $totale_imponibile, $d_totali).'
'.tr('Sconto', [], ['upper' => true]).': '.moneyFormat($sconto, $d_totali).'
'.tr('Totale imponibile', [], ['upper' => true]).': '.moneyFormat($totale_imponibile, $d_totali).'
'.tr('Iva', [], ['upper' => true]).': '.moneyFormat($totale_iva, $d_totali).'
'.tr('Totale intervento', [], ['upper' => true]).': '.moneyFormat($totale, $d_totali).'
'; if ($options['checklist']) { $structure = Module::find((new Module())->getByField('title', 'Interventi', Models\Locale::getPredefined()->id)); $checks = $structure->mainChecks($id_record); if (!empty($checks)) { echo ' '; $structure = Module::find((new Module())->getByField('title', 'Interventi', Models\Locale::getPredefined()->id)); $checks = $structure->mainChecks($id_record); foreach ($checks as $check) { echo renderChecklistHtml($check); } $impianti_collegati = $dbo->fetchArray('SELECT * FROM my_impianti_interventi INNER JOIN my_impianti ON my_impianti_interventi.idimpianto = my_impianti.id WHERE idintervento = '.prepare($id_record)); foreach ($impianti_collegati as $impianto) { $checks = Check::where('id_module_from', (new Module())->getByField('title', 'Impianti', Models\Locale::getPredefined()->id))->where('id_record_from', $impianto['id'])->where('id_module', (new Module())->getByField('title', 'Interventi', Models\Locale::getPredefined()->id))->where('id_record', $id_record)->where('id_parent', null)->get(); if (sizeof($checks)) { echo ' '; foreach ($checks as $check) { echo renderChecklistHtml($check); } } } echo '
CHECKLIST
'.tr('Impianto', [], ['upper' => true]).' '.$impianto['matricola'].' - '.$impianto['nome'].'
'; } }