. */ 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 ' '; // 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 ' '; // Dati cliente if (!empty($preventivo) or !empty($contratto)) { 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 ' '; // Richiesta // Rimosso nl2br, non necessario con ckeditor echo ' '; // Descrizione // Rimosso nl2br, non necessario con ckeditor echo '
'.tr('Rapporto attività', [], ['upper' => true]).'

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

'.$c_ragionesociale.'

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

'.$s_indirizzo.' '.$s_cap.' - '.$s_citta.' ('.strtoupper((string) $s_provincia).')

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

'.$c_indirizzo.' '.$c_cap.' - '.$c_citta.' ('.strtoupper((string) $c_provincia).')

'.tr('Attività n.', [], ['upper' => true]).'

'.$documento['codice'].'

'.tr('Data richiesta', [], ['upper' => true]).'

'.Translator::dateToLocale($documento['data_richiesta']).'

'.tr('Preventivo n.', [], ['upper' => true]).'

'.(!empty($preventivo) ? $preventivo['numero'].' del '.Translator::dateToLocale($preventivo['data_bozza']) : 'Nessuno').'

'.tr('Contratto n.', [], ['upper' => true]).'

'.(!empty($contratto) ? $contratto['numero'].' del '.Translator::dateToLocale($contratto['data_bozza']) : 'Nessuno').'

'.tr('P.Iva', [], ['upper' => true]).'

'.strtoupper((string) $c_piva).'

'.tr('C.F.', [], ['upper' => true]).'

'.strtoupper((string) $c_codicefiscale).'

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

'.$c_telefono.'

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

'.$c_cellulare.'

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

'.implode(', ', $impianti).'

'.tr('Tipo intervento', [], ['upper' => true]).'

'.$documento->tipo->getTranslation('title').'

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

'.$documento['richiesta'].'

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

'.$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((string) $key), '', $riga['descrizione']); } $source_type = $riga::class; if (!setting('Visualizza riferimento su ogni riga in stampa')) { echo $riga['descrizione']; } else { echo nl2br((string) $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', 'Attività', Models\Locale::getPredefined()->id)); $checks = $structure->mainChecks($id_record); if (!empty($checks)) { echo ' '; $structure = Module::find((new Module())->getByField('title', 'Attività', 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', 'Attività', 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'].'
'; } }