From 3821054407b84999d5209c3c7925ed717f99bbb2 Mon Sep 17 00:00:00 2001
From: FabioL <1647128+loviuz@users.noreply.github.com>
Date: Wed, 31 Jul 2024 10:57:13 +0200
Subject: [PATCH] Miglioramento stampa intervento
---
templates/base/style.css | 4 +
templates/interventi/body.php | 429 +++++++++++++++++++---------------
2 files changed, 249 insertions(+), 184 deletions(-)
diff --git a/templates/base/style.css b/templates/base/style.css
index 2da59d2ec..c89d4da7d 100755
--- a/templates/base/style.css
+++ b/templates/base/style.css
@@ -139,3 +139,7 @@ table#contents tbody td {
.cell-padded {
padding: 4px;
}
+
+.bg-gray{
+ background: #eee;
+}
\ No newline at end of file
diff --git a/templates/interventi/body.php b/templates/interventi/body.php
index 18b5c8527..97d12a593 100755
--- a/templates/interventi/body.php
+++ b/templates/interventi/body.php
@@ -27,142 +27,156 @@ $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
-*/
+$sessioni = $documento->sessioni->sortBy('orario_inizio');
+
+$firma = !empty($documento['firma_file']) ? '' : '';
+
echo '
+
'.tr('Rapporto attività', [], ['upper' => true]).' | +'.tr('Cliente', [], ['upper' => true]).' |
||||||||
---|---|---|---|---|---|---|---|---|---|
- '.tr('Cliente', [], ['upper' => true]).': + |
+ '.tr('Cliente', [], ['upper' => true]).': |
- - '.$c_ragionesociale.' + | + '.$c_ragionesociale.' | '; // Indirizzo if (!empty($s_indirizzo) or !empty($s_cap) or !empty($s_citta) or !empty($s_provincia)) { echo ' -
- '.tr('Indirizzo', [], ['upper' => true]).': + |
+ '.tr('Indirizzo', [], ['upper' => true]).': |
- '.$s_indirizzo.' '.$s_cap.' - '.$s_citta.' ('.strtoupper((string) $s_provincia).') + '.$s_indirizzo.' '.$s_cap.' - '.$s_citta.' ('.strtoupper((string) $s_provincia).') | '; } elseif (!empty($c_indirizzo) or !empty($c_cap) or !empty($c_citta) or !empty($c_provincia)) { echo '
- '.tr('Indirizzo', [], ['upper' => true]).': +'.tr('Indirizzo', [], ['upper' => true]).': |
- '.$c_indirizzo.' '.$c_cap.' - '.$c_citta.' ('.strtoupper((string) $c_provincia).') + '.$c_indirizzo.' '.$c_cap.' - '.$c_citta.' ('.strtoupper((string) $c_provincia).') | '; } echo '|
- '.tr('Attività n.', [], ['upper' => true]).': +'.tr('P.Iva', [], ['upper' => true]).': |
- '.$documento['codice'].' + '.strtoupper((string) $c_piva).' |
- '.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]).': +'.tr('C.F.', [], ['upper' => true]).': |
- '.strtoupper((string) $c_piva).' - | -
- '.tr('C.F.', [], ['upper' => true]).': - |
- - '.strtoupper((string) $c_codicefiscale).' + '.strtoupper((string) $c_codicefiscale).' | ||||||
- '.tr('Telefono', [], ['upper' => true]).': +'.tr('Telefono', [], ['upper' => true]).': |
- '.$c_telefono.' + '.$c_telefono.' |
- '.tr('Cellulare', [], ['upper' => true]).': +'.tr('Cellulare', [], ['upper' => true]).': |
- '.$c_cellulare.' + '.$c_cellulare.' + | +
+ '.tr('Rapporto attività', [], ['upper' => true]).'+ |
+ |||||||||
---|---|---|---|---|---|---|---|---|---|
+ '.tr('Codice', [], ['upper' => true]).': + |
+ + '.$documento['codice'].' + | + +
+ '.tr('Data richiesta', [], ['upper' => true]).': + |
+ + '.Translator::dateToLocale($documento['data_richiesta']).' + | + +
+ '.tr('Tipologia', [], ['upper' => true]).': + |
+ + '.$documento->tipo->getTranslation('title').' | ||||
+ |
+ '.tr('Preventivo n.', [], ['upper' => true]).': + |
+ + '.(!empty($preventivo) ? $preventivo['numero'].' del '.Translator::dateToLocale($preventivo['data_bozza']) : '-').' + | +
+ '.tr('Contratto n.', [], ['upper' => true]).': + |
+ + '.(!empty($contratto) ? $contratto['numero'].' del '.Translator::dateToLocale($contratto['data_bozza']) : '-').' + | +|||||
- '.tr('Impianti', [], ['upper' => true]).': +'.tr('Impianti', [], ['upper' => true]).': |
- - '.implode(', ', $impianti).' - | -
- '.tr('Tipo intervento', [], ['upper' => true]).': - |
- - '.$documento->tipo->getTranslation('title').' + + | + '.implode(', ', $impianti).' | |||||
- '.tr('Richiesta', [], ['upper' => true]).': - |
- + |
+ '.tr('Richiesta', [], ['upper' => true]).': '.$documento['richiesta'].' |
|||||||
- '.tr('Descrizione', [], ['upper' => true]).': - |
- + |
+ '.tr('Descrizione', [], ['upper' => true]).': '.$documento['descrizione'].' |
- '.tr('Materiale utilizzato e spese aggiuntive', [], ['upper' => true]).' + |
+ '.tr('Materiale utilizzato e spese aggiuntive', [], ['upper' => true]).' |
||||||||
---|---|---|---|---|---|---|---|---|---|
- '.tr('Descrizione').' - | ++ '.tr('Descrizione', [], ['upper' => true]).' + | -- '.tr('Q.tà').' - | ++ '.tr('Q.tà', [], ['upper' => true]).' + | -- '.tr('Prezzo unitario').' - | ++ '.tr('Prezzo unitario', [], ['upper' => true]).' + | -- '.tr('Importo').' - | ++ '.tr('Importo', [], ['upper' => true]).' + | '; @@ -292,13 +304,13 @@ if (!$righe->isEmpty()) { // Quantità echo ' - | + | '.$qta.' '.$riga->um.' | '; // Prezzo unitario echo ' -+ | '.($options['pricing'] ? moneyFormat($riga->prezzo_unitario_corrente, $d_importi) : '-'); if ($options['pricing'] && $riga->sconto > 0) { @@ -313,7 +325,7 @@ if (!$righe->isEmpty()) { // Prezzo totale echo ' - | + | '.($options['pricing'] ? moneyFormat($riga->importo, $d_importi) : '-').' | '; @@ -326,12 +338,12 @@ if (!$righe->isEmpty()) { // Totale spese aggiuntive echo '
- '.tr('Totale', [], ['upper' => true]).': + | + '.tr('Totale', [], ['upper' => true]).' | -- '.moneyFormat($righe->sum('importo'), $d_totali).' + | + '.moneyFormat($righe->sum('importo'), $d_totali).' |
- '.tr('Ore tecnici', [], ['upper' => true]).' + |
+ '.tr('Ore tecnici', [], ['upper' => true]).' |
||||||||
---|---|---|---|---|---|---|---|---|---|
- '.tr('Tecnico').' - | ++ '.tr('Tecnico', [], ['upper' => true]).' + | -- '.tr('Orario').' - | ++ '.tr('Orario', [], ['upper' => true]).' + | -+ | '.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').') - | '; - - $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 ' -- '.$orario.' - | '; - - // Spazio aggiuntivo - if ($i == 0) { +$i = 0; +if (count($sessioni) > 0) { + foreach ($sessioni as $id => $sessione) { echo ' -- '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati nel rispetto delle vigenti normative tecniche').' - | '; - } else { - echo ' -'; - } + | ||||||
+ '.$sessione->anagrafica->ragione_sociale.' + ('.$sessione->tipo->getTranslation('title').') + | '; + + $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 ' ++ '.$orario.' + | '; + + + // Testo lavori eseguiti 1/2 + if ($i == 0) { + echo ' ++ '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati nel rispetto delle vigenti normative tecniche').' + | '; + } + + // Firma 1/3 + if ($i == 1) { + echo ' +
+ '.$firma.' '; + + + if (empty($documento['firma_file'])) { + echo ' ('.tr('Timbro e firma leggibile').')'; + } else { + echo ' '.$documento['firma_nome'].''; + } + + echo ' + | ';
+ }
+
+ echo '
+ ';
+
+ $i++;
+ }
}
// Ore lavorate
@@ -417,49 +449,61 @@ if (setting('Formato ore in stampa') == 'Sessantesimi') {
echo '
||||||
- '.tr('Ore lavorate').': '.$ore_totali.' + '.tr('Ore lavorate', [], ['upper' => true]).' '.$ore_totali.' | ';
// Costo totale manodopera
if ($options['pricing']) {
echo '
- '.tr('Totale manodopera').': '.moneyFormat($sessioni->sum('prezzo_manodopera'), $d_totali).' + '.tr('Totale manodopera', [], ['upper' => true]).' '.moneyFormat($sessioni->sum('prezzo_manodopera'), $d_totali).' | ';
} else {
echo '
- | '; } -// Timbro e firma -$firma = !empty($documento['firma_file']) ? '' : ''; -echo ' -+// Testo lavori eseguiti 2/2 +if (count($sessioni) == 0) { + echo ' + | + '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati nel rispetto delle vigenti normative tecniche').' + | '; +} + +// Firma 2/3 +if (count($sessioni) == 1) { + echo '
'.$firma.' '; -if (empty($documento['firma_file'])) { - echo ' ('.tr('Timbro e firma leggibile').')'; -} else { - echo ' '.$documento['firma_nome'].''; + + if (empty($documento['firma_file'])) { + echo ' ('.tr('Timbro e firma leggibile').')'; + } else { + echo ' '.$documento['firma_nome'].''; + } + + echo ' + | ';
}
echo '
-
||||
- '.tr('Km percorsi').': '.Translator::numberToLocale($documento->km_totali, $d_qta).' + '.tr('Km percorsi', [], ['upper' => true]).' '.Translator::numberToLocale($documento->km_totali, $d_qta).' | ';
// Costo trasferta
if ($options['pricing']) {
echo '
- '.tr('Costi di trasferta').': '.moneyFormat($sessioni->sum('prezzo_viaggio'), $d_totali).' + '.tr('Costi di trasferta', [], ['upper' => true]).' '.moneyFormat($sessioni->sum('prezzo_viaggio'), $d_totali).' | ';
} else {
echo '
@@ -470,13 +514,30 @@ if ($options['pricing']) {
if ($options['pricing']) {
echo '
- '.tr('Diritto di chiamata').': '.moneyFormat($sessioni->sum('prezzo_diritto_chiamata'), $d_totali).' + '.tr('Diritto di chiamata', [], ['upper' => true]).' '.moneyFormat($sessioni->sum('prezzo_diritto_chiamata'), $d_totali).' | ';
} else {
echo '
- | '; } +// Firma 3/3 +if (count($sessioni) == 0) { + echo '
+ '.$firma.' '; + + + if (empty($documento['firma_file'])) { + echo ' ('.tr('Timbro e firma leggibile').')'; + } else { + echo ' '.$documento['firma_nome'].''; + } + + echo ' + | ';
+}
+
+
// Calcoli
$imponibile = abs($documento->imponibile);
$sconto = $documento->sconto;
@@ -492,38 +553,38 @@ if ($options['pricing']) {
// Totale imponibile
echo '
|||||
- '.tr('Imponibile', [], ['upper' => true]).': + | + '.tr('Imponibile', [], ['upper' => true]).' | -+ | '.moneyFormat($show_sconto ? $imponibile : $totale_imponibile, $d_totali).' - + | ||||||
- '.tr('Sconto', [], ['upper' => true]).': + | + '.tr('Sconto', [], ['upper' => true]).' | -- '.moneyFormat($sconto, $d_totali).' - | ++ '.moneyFormat($sconto, $d_totali).' + | ||||||
- '.tr('Totale imponibile', [], ['upper' => true]).': + | + '.tr('Totale imponibile', [], ['upper' => true]).' | -- '.moneyFormat($totale_imponibile, $d_totali).' - | ++ '.moneyFormat($totale_imponibile, $d_totali).' + | ||||||
- '.tr('Iva', [], ['upper' => true]).': + | + '.tr('Iva', [], ['upper' => true]).' | -- '.moneyFormat($totale_iva, $d_totali).' - | ++ '.moneyFormat($totale_iva, $d_totali).' + | ||||||
- '.tr('Totale intervento', [], ['upper' => true]).': + | + '.tr('Totale', [], ['upper' => true]).' | -+ | '.moneyFormat($totale, $d_totali).' - + |
- CHECKLIST + CHECKLIST | |
---|---|
- '.tr('Impianto', [], ['upper' => true]).' '.$impianto['matricola'].' - '.$impianto['nome'].' + '.tr('Impianto', [], ['upper' => true]).' '.$impianto['matricola'].' - '.$impianto['nome'].' |