diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 0e7326ae5..96f081f50 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -159,7 +159,7 @@ switch (post('op')) { $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; $desc_iva = $rs2[0]['descrizione']; - $dbo->query('INSERT INTO co_righe2_contratti(idcontratto, idiva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto) VALUES ('.prepare($id_record).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe2_contratti AS t WHERE idcontratto='.prepare($id_record).'))'); + $dbo->query('INSERT INTO co_righe2_contratti(idcontratto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, um, qta, sconto, sconto_unitario, tipo_sconto, `order`) VALUES ('.prepare($id_record).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($um).', '.prepare($qta).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe2_contratti AS t WHERE idcontratto='.prepare($id_record).'))'); $_SESSION['infos'][] = tr('Articolo aggiunto!'); @@ -229,6 +229,21 @@ switch (post('op')) { } break; + case 'update_position': + $start = filter('start'); + $end = filter('end'); + $id = filter('id'); + + if ($start > $end) { + $dbo->query('UPDATE `co_righe2_contratti` SET `order`=`order` + 1 WHERE `order`>='.prepare($end).' AND `order`<'.prepare($start).' AND `idcontratto`='.prepare($id_record)); + $dbo->query('UPDATE `co_righe2_contratti` SET `order`='.prepare($end).' WHERE id='.prepare($id)); + } elseif ($end != $start) { + $dbo->query('UPDATE `co_righe2_contratti` SET `order`=`order` - 1 WHERE `order`>'.prepare($start).' AND `order`<='.prepare($end).' AND `idcontratto`='.prepare($id_record)); + $dbo->query('UPDATE `co_righe2_contratti` SET `order`='.prepare($end).' WHERE id='.prepare($id)); + } + + break; + // eliminazione contratto case 'delete': $dbo->query('DELETE FROM co_contratti WHERE id='.prepare($id_record)); diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php index 8a6749569..ba9ecc8c2 100644 --- a/modules/contratti/row-list.php +++ b/modules/contratti/row-list.php @@ -11,96 +11,105 @@ $totale_da_evadere = 0.00; /* ARTICOLI */ -$q_art = 'SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record); -$rs_art = $dbo->fetchArray($q_art); +$rs_art = $dbo->fetchArray('SELECT * FROM co_righe2_contratti WHERE idcontratto='.prepare($id_record).' ORDER BY `order`'); $imponibile_art = 0.0; $iva_art = 0.0; echo ' - - - - - - - - - '; + + + + + + + + + + + + '; // se ho almeno un articolo caricato mostro la riga if (!empty($rs_art)) { foreach ($rs_art as $r) { // descrizione echo ' - - '; + + '; // q.tà echo ' - '; + '; // um echo ' - '; + '; // costo unitario echo ' - '; + '; // iva echo ' - '; + '; // Imponibile echo ' - '; + '; // Possibilità di rimuovere una riga solo se il preventivo non è stato pagato echo ' - - '; + + '; $iva_art += $r['iva']; $imponibile_art += $r['subtotale'] - $r['sconto']; @@ -109,6 +118,9 @@ if (!empty($rs_art)) { } } +echo ' + '; + // SCONTO if (abs($sconto_art) > 0) { // Totale imponibile scontato @@ -185,3 +197,31 @@ echo ' echo '
'.tr('Descrizione').''.tr('Q.tà').''.tr('U.m.').''.tr('Costo unitario').''.tr('Iva').''.tr('Imponibile').'
'.tr('Descrizione').''.tr('Q.tà').''.tr('U.m.').''.tr('Costo unitario').''.tr('Iva').''.tr('Imponibile').'
- '.nl2br($r['descrizione']).' -
+ '.nl2br($r['descrizione']).' + - '.Translator::numberToLocale($r['qta']).' - + '.Translator::numberToLocale($r['qta']).' + - '.$r['um'].' - + '.$r['um'].' + - '.Translator::numberToLocale($r['subtotale'] / $r['qta']).' € - + '.Translator::numberToLocale($r['subtotale'] / $r['qta']).' € + - '.Translator::numberToLocale($r['iva'])." €
- ".$r['desc_iva'].' -
+ '.Translator::numberToLocale($r['iva'])." €
+ ".$r['desc_iva'].' +
- '.Translator::numberToLocale($r['subtotale']).' €'; + + '.Translator::numberToLocale($r['subtotale']).' €'; if ($r['sconto_unitario'] > 0) { echo ' -
- sconto '.Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; +
- sconto '.Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; } echo ' -
'; + '; if ($records[0]['stato'] != 'Pagato' && empty($r['sconto_globale'])) { echo ' -
- - - - - + + + + + + -
'; +
'; echo " - - "; + + "; echo ' -
- '; +
+ '; + } + + if (empty($r['sconto_globale'])) { + echo ' +
+ +
'; } echo ' -
'; + +echo ' +'; diff --git a/modules/fatture/add_intervento.php b/modules/fatture/add_intervento.php index 51e47dfef..c6b280d15 100644 --- a/modules/fatture/add_intervento.php +++ b/modules/fatture/add_intervento.php @@ -34,7 +34,7 @@ echo ' $rs = $dbo->fetchArray('SELECT in_interventi.id, CONCAT(\'Intervento numero \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione, IF(idclientefinale='.prepare($idanagrafica).', \'Interventi conto terzi\', \'Interventi diretti\') AS `optgroup`FROM in_interventi WHERE (idanagrafica='.prepare($idanagrafica).' OR idclientefinale='.prepare($idanagrafica).') AND NOT idstatointervento=\'DENY\' AND in_interventi.id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND NOT in_interventi.id IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND NOT in_interventi.id IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)'); foreach ($rs as $key => $value) { - $rs[$key]['prezzo'] = get_costi_intervento($value['id'])['totale_manodopera']; + $rs[$key]['prezzo'] = get_costi_intervento($value['id'])['totale']; } // Intervento diff --git a/modules/interventi/add_righe.php b/modules/interventi/add_righe.php index 5c6b76135..3e58ddc41 100644 --- a/modules/interventi/add_righe.php +++ b/modules/interventi/add_righe.php @@ -94,7 +94,12 @@ echo ' '; echo ' - + +
+
+ +
+
'; echo ' diff --git a/modules/interventi/ajax_costi.php b/modules/interventi/ajax_costi.php index 7e61001f1..2dc6639f2 100644 --- a/modules/interventi/ajax_costi.php +++ b/modules/interventi/ajax_costi.php @@ -55,7 +55,7 @@ if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') { '.tr('Totale', [], ['upper' => true]).' '.Translator::numberToLocale($costi['totale_costi']).' € '.Translator::numberToLocale($costi['totale_addebito']).' € - '.Translator::numberToLocale($costi['totale_manodopera']).' € + '.Translator::numberToLocale($costi['totale']).' € '; } diff --git a/modules/interventi/modutil.php b/modules/interventi/modutil.php index 12ae4b71e..9e63776c5 100644 --- a/modules/interventi/modutil.php +++ b/modules/interventi/modutil.php @@ -186,7 +186,7 @@ function get_costi_intervento($id_intervento) ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') ), 0) AS ricambi_addebito, COALESCE(SUM( - ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.') * ROUND(qta, '.$decimals.') + ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.') ), 0) AS ricambi_scontato FROM mg_articoli_interventi WHERE idintervento='.prepare($id_intervento)); @@ -199,7 +199,7 @@ function get_costi_intervento($id_intervento) ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') ), 0) AS altro_addebito, COALESCE(SUM( - ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.') * ROUND(qta, '.$decimals.') + ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.') ), 0) AS altro_scontato FROM in_righe_interventi WHERE idintervento='.prepare($id_intervento)); @@ -220,7 +220,7 @@ function get_costi_intervento($id_intervento) $result['altro_addebito'], ]); - $totale_manodopera = sum([ + $result['totale_scontato'] = sum([ $result['manodopera_scontato'], $result['viaggio_scontato'], $result['ricambi_scontato'], @@ -229,10 +229,10 @@ function get_costi_intervento($id_intervento) // Calcolo dello sconto globale $sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM in_interventi WHERE id='.prepare($id_intervento))[0]; - $result['sconto_globale'] = ($sconto['tipo_sconto_globale'] == 'PRC') ? $totale_manodopera * $sconto['sconto_globale'] / 100 : $sconto['sconto_globale']; + $result['sconto_globale'] = ($sconto['tipo_sconto_globale'] == 'PRC') ? $result['totale_scontato'] * $sconto['sconto_globale'] / 100 : $sconto['sconto_globale']; $result['sconto_globale'] = round($result['sconto_globale'], $decimals); - $result['totale_manodopera'] = sum($totale_manodopera, -$result['sconto_globale']); + $result['totale'] = sum($result['totale_scontato'], -$result['sconto_globale']); return $result; } diff --git a/modules/preventivi/plugins/preventivi.consuntivo.php b/modules/preventivi/plugins/preventivi.consuntivo.php index 5482e3e6a..2b8573d22 100644 --- a/modules/preventivi/plugins/preventivi.consuntivo.php +++ b/modules/preventivi/plugins/preventivi.consuntivo.php @@ -42,7 +42,7 @@ if (!empty($rsi)) { // Tabella con i dati foreach ($rsi as $int) { $int = array_merge($int, get_costi_intervento($int['id'])); - $totale_stato[$int['idstatointervento']] = sum($totale_stato[$int['idstatointervento']], $int['totale_manodopera']); + $totale_stato[$int['idstatointervento']] = sum($totale_stato[$int['idstatointervento']], $int['totale']); // Riga intervento singolo echo ' diff --git a/pdfgen.php b/pdfgen.php index cb35c1d9c..047442023 100644 --- a/pdfgen.php +++ b/pdfgen.php @@ -47,7 +47,7 @@ if (file_exists($docroot.'/templates/'.$ptype.'/init.php')) { Permissions::check(); // Operazioni di sostituzione - include $docroot.'/templates/pdfgen_variables.php'; + include $docroot.'/templates/info.php'; // Generazione dei contenuti della stampa ob_start(); diff --git a/templates/base/style.css b/templates/base/style.css index 456a9047e..65f6cb747 100644 --- a/templates/base/style.css +++ b/templates/base/style.css @@ -93,6 +93,10 @@ table.table-bordered th { background: #ddd; } +table.table-bordered thead tr:nth-child(2) th { + background: #eee; +} + #contents th { font-size: 80%; } @@ -107,3 +111,7 @@ table.table-bordered td, table.table-bordered th { border: 1px solid #aaa; } + +td.middle { + vertical-align: middle !important; +} diff --git a/templates/ddt/body.php b/templates/ddt/body.php index 71b3095b0..4f45d0d8b 100644 --- a/templates/ddt/body.php +++ b/templates/ddt/body.php @@ -112,7 +112,7 @@ foreach ($rs_gen as $r) { if ($r['perc_iva'] > 0) { echo ' - '.$r['perc_iva']; + '.Translator::numberToLocale($r['perc_iva'], 2); } echo ' diff --git a/templates/fatture/body.php b/templates/fatture/body.php index 7c59a1f1a..09eaf8304 100644 --- a/templates/fatture/body.php +++ b/templates/fatture/body.php @@ -120,7 +120,7 @@ foreach ($righe as $r) { "; if ($r['perc_iva'] > 0) { echo ' - '.$r['perc_iva']; + '.Translator::numberToLocale($r['perc_iva'], 2); } echo ' diff --git a/templates/interventi/body.php b/templates/interventi/body.php index e02cc0d91..f011de449 100644 --- a/templates/interventi/body.php +++ b/templates/interventi/body.php @@ -12,53 +12,53 @@ $report_name = 'intervento_'.$idintervento.'.pdf'; echo ' - + - - - - + + + + '; - // Dati cliente +// Dati cliente echo ' '; -//Codice fiscale +// Codice fiscale echo ' '; -//riga 2 +// riga 2 echo ' '; echo ' '; -//riga 3 -//Elenco impianti su cui è stato fatto l'intervento +// 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($idintervento)); $impianti = []; for ($j = 0; $j < sizeof($rs2); ++$j) { @@ -67,146 +67,111 @@ for ($j = 0; $j < sizeof($rs2); ++$j) { echo ' '; -if (!empty($records[0]['richiesta'])) { - //Richiesta - echo ' +// Richiesta +echo ' '; -} -if (!empty($records[0]['descrizione_intervento'])) { - //descrizione - echo ' +// Descrizione +echo ' - - - - + '; -} + echo '
RAPPORTO OPERAZIONI E INTERVENTI'.tr('Rapporto operazioni e interventi', [], ['upper' => true]).'
Intervento numero: '.$records[0]['codice'].'Data: '.Translator::dateToLocale($records[0]['data_richiesta']).'Preventivo No: '.$records[0]['numero_preventivo'].'Contratto No: '.$records[0]['numero_contratto'].''.tr('Intervento numero').': '.$records[0]['codice'].''.tr('Data').': '.Translator::dateToLocale($records[0]['data_richiesta']).''.tr('Preventivo No').': '.$records[0]['numero_preventivo'].''.tr('Contratto No').': '.$records[0]['numero_contratto'].'
- Cliente: '.$c_ragionesociale.' + '.tr('Cliente').': '.$c_ragionesociale.' - P.iva: '.strtoupper($c_piva).' + '.tr('P.Iva').': '.strtoupper($c_piva).'
- Via: '.$c_indirizzo.' - - Cap: '.$c_cap.' - - Comune: '.$c_citta.' ('.strtoupper($c_provincia).') + '.tr('Via').': '.$c_indirizzo.' - + '.tr('CAP').': '.$c_cap.' - + '.tr('Comune').': '.$c_citta.' ('.strtoupper($c_provincia).')
- Telefono: '.$c_telefono.''; + '.tr('Telefono').': '.$c_telefono.''; if (!empty($c_cellulare)) { - echo' - Cellulare: '.$c_cellulare.''; + echo' - '.tr('Cellulare').': '.$c_cellulare.''; } echo '
- Impianti: '.implode(', ', $impianti).' + '.tr('Impianti').': '.implode(', ', $impianti).'
- Richiesta: + '.tr('Richiesta').':

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

Descrizione:
'.nl2br($records[0]['descrizione_intervento']).' + '.tr('Descrizione').': +

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

+
'; $totale = []; // MATERIALE UTILIZZATO - -// Conteggio articoli utilizzati -$rs2 = $dbo->fetchArray('SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, SUM(qta) AS sumqta FROM `mg_articoli_interventi` HAVING idintervento='.prepare($idintervento)." AND NOT idarticolo='0' ORDER BY idarticolo ASC"); +$rs2 = $dbo->fetchArray('SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art FROM `mg_articoli_interventi` WHERE idintervento='.prepare($idintervento)." AND NOT idarticolo='0' ORDER BY idarticolo ASC"); if (!empty($rs2)) { echo ' - - +
+ + + + - - - + + - - + - + - + + + - - - - - - '; - - $totale_articoli = []; + '; foreach ($rs2 as $r) { echo ' - '; + '; // Codice echo ' - '; + '; // Descrizione echo ' - '; + '; // Quantità echo ' - '; - - // Prezzo unitario - echo ' - '; - - // Sconto unitario - if ($r['sconto_unitario'] > 0) { - $sconto = Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €'); - } else { - $sconto = '-'; - } - - echo ' - '; + '; // Netto - $netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['sumqta']; - + $netto = $r['prezzo_vendita'] * $r['qta'] - $r['sconto']; echo ' - - '; - - // Totale - $totale_articoli[] = $netto; + + '; } - $totale_articoli = sum($totale_articoli); - $totale[] = $totale_articoli; + echo ' + '; // Totale spesa articoli if ($visualizza_costi) { echo ' - - + '; } @@ -220,105 +185,77 @@ if (!empty($rs2)) { $rs2 = $dbo->fetchArray('SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($idintervento).' ORDER BY id ASC'); if (!empty($rs2)) { echo ' -
+ '.tr('Materiale utilizzato', [], ['upper' => true]).' +
- '.tr('Materiale utilizzato', [], ['upper' => true]).' -
+ '.tr('Codice').' +
- '.tr('Codice').' - + '.tr('Descrizione').' + - '.tr('Descrizione').' - + '.tr('Q.tà').' + - '.tr('Q.tà').' - + '.tr('Prezzo').' +
- '.tr('Prezzo listino').' - - '.tr('Sconto').' - - '.tr('Subtot. netto').' -
- '.$r['codice_art'].' - + '.$r['codice_art'].' + - '.$r['descrizione'].' - + '.$r['descrizione'].' + - '.Translator::numberToLocale($r['sumqta'], 2).' '.$r['um'].' - - '.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').' - - '.($visualizza_costi ? $sconto : '-').' - + '.Translator::numberToLocale($r['qta'], 2).' '.$r['um'].' + - '.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').' -
+ '.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').' +
+ '.tr('Totale materiale utilizzato', [], ['upper' => true]).': - '.Translator::numberToLocale($totale_articoli, 2).' € - + '.Translator::numberToLocale($costi_intervento['ricambi_scontato'], 2).' € +
- +
+ + + + - - - + + - - + - + - + + + - - - - - - '; - - $totale_righe = []; + '; foreach ($rs2 as $r) { // Articolo echo ' - - '; // Quantità echo ' - '; // Prezzo unitario - echo ' - '; - // Sconto unitario - if ($r['sconto_unitario'] > 0) { - $sconto = Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €'); - } else { - $sconto = '-'; - } - - echo ' - '; - // Prezzo totale - $netto = ($r['prezzo_vendita'] - $r['sconto']) * $r['qta']; - + $netto = $r['prezzo_vendita'] * $r['qta'] - $r['sconto']; echo ' - '; - - // Subtot - $totale_righe[] = $netto; } - - $totale_righe = sum($totale_righe); - $totale[] = $totale_righe; + echo ' + '; if ($visualizza_costi) { // Totale spese aggiuntive echo ' - - + '; } @@ -328,326 +265,210 @@ if (!empty($rs2)) { // FINE SPESE AGGIUNTIVE -// ORE TECNICI + FIRMA -echo ' -
+ '.tr('Spese aggiuntive', [], ['upper' => true]).' +
- '.tr('Spese aggiuntive', [], ['upper' => true]).' -
+ '.tr('Descrizione').' +
- - + '.tr('Q.tà').' + - '.tr('Descrizione').' - + '.tr('Prezzo unitario').' + - '.tr('Q.tà').' - + '.tr('Subtot.').' +
- '.tr('Prezzo listino').' - - '.tr('Sconto').' - - '.tr('Subtot. netto').' -
'.nl2br($r['descrizione']).' + '.Translator::numberToLocale($r['qta'], 2).' + '.($visualizza_costi ? Translator::numberToLocale($r['prezzo_vendita'], 2).' €' : '-').' - '.($visualizza_costi ? $sconto : '-').' - + '.($visualizza_costi ? Translator::numberToLocale($netto, 2) : '-').'
+ '.tr('Totale spese aggiuntive', [], ['upper' => true]).': - '.Translator::numberToLocale($totale_righe, 2).' € - + '.Translator::numberToLocale($costi_intervento['altro_scontato'], 2).' € +
- - - - - '; - // INTESTAZIONE ELENCO TECNICI echo ' - - +
- '.tr('Ore tecnici', [], ['upper' => true]).' -
- '.tr('Tecnico').' -
+ + + + + + - + - + - + - - '; + + + + + '; // Sessioni di lavoro dei tecnici $rst = $dbo->fetchArray('SELECT an_anagrafiche.*, in_interventi_tecnici.* FROM in_interventi_tecnici JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE in_interventi_tecnici.idintervento='.prepare($idintervento).' ORDER BY in_interventi_tecnici.orario_inizio'); -$totale_ore = 0; -$totale_costo_ore = 0; -$totale_costo_km = 0; -$totale_sconto = 0; -$totale_sconto_km = 0; -$totale_manodopera = 0; -$totale_viaggio = 0; - -foreach ($rst as $r) { +foreach ($rst as $i => $r) { echo ' '; // nome tecnico echo ' - '; // data echo ' - '; // ora inizio echo ' - '; // ora fine echo ' - '; - - // Sconto - echo ' - - '; - - $totale_ore += $r['ore']; - $totale_km += $r['km']; - - $totale_costo_ore = sum($totale_costo_ore, $r['prezzo_ore_consuntivo']); - $totale_sconto = sum($totale_sconto, $r['sconto']); - - $totale_costo_km = sum($totale_costo_km, $r['prezzo_km_consuntivo']); - $totale_sconto_km = sum($totale_sconto_km, $r['scontokm']); -} - -$totale_manodopera = sum($totale_costo_ore, -$totale_sconto); -$totale_viaggio = sum($totale_costo_km, -$totale_sconto_km); - -$totale_intervento = sum($totale_manodopera, $totale_viaggio); - -$totale[] = $totale_intervento; - -echo ' -
+ '.tr('Ore tecnici', [], ['upper' => true]).' +
+ '.tr('Tecnico').' + - '.tr('Data').' - + '.tr('Data').' + - '.tr('Dalle').' - + '.tr('Dalle').' + - '.tr('Alle').' - + '.tr('Alle').' + - '.tr('Sconto').' -
+ '.tr('I dati del ricevente verrano trattati in base al D.lgs n. 196/2003').' +
+ '.$r['ragione_sociale'].' + '.Translator::dateToLocale($r['orario_inizio'], '-').' + '.Translator::timeToLocale($r['orario_inizio'], '-').' + '.Translator::timeToLocale($r['orario_fine'], '-').' - - '.($r['sconto_unitario'] > 0 ? Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €') : '-').' -
'; - -// ore lavorate -echo ' - - - - - - - - - - - - - - '; - -// Ore lavoro -echo ' - - - - - - '; -if ($visualizza_costi) { - echo ' - - - '; -} else { - echo ' - - '; -} - -echo ' - '; - -// Ore di viaggio -if ($totale_km > 0) { - echo ' - - - - - - '; - - if ($visualizza_costi) { + // Spazio aggiuntivo + if ($i == 0) { echo ' - - - '; } else { echo ' - - '; + '; } - echo ' - '; -} -// Subtotale manodopera + viaggio -if ($visualizza_costi) { echo ' - - - - '; } echo ' -
- '.tr('Descrizione').' - - '.tr('Q.tà').' - - '.tr('Prezzo listino').' - - '.tr('Subtot. netto').' -
- '.tr('Ore tecnici').' - - '.Translator::numberToLocale($totale_ore, 2).' ore - '.Translator::numberToLocale($totale_costo_ore, 2).' € - - '.Translator::numberToLocale($totale_manodopera, 2).' € - --
- '.tr('Km / viaggio').' - - '.Translator::numberToLocale($totale_km, 2).' km - - '.Translator::numberToLocale($totale_costo_km, 2).' € - - '.Translator::numberToLocale($totale_viaggio, 2).' € + + '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati').' --
- '.tr('Totale intervento', [], ['upper' => true]).': - - '.Translator::numberToLocale($totale_intervento, 2).' € -
'; + '; -$totale = sum($totale); - -// TOTALE COSTI FINALI +// Ore lavorate if ($visualizza_costi) { + $ore = get_ore_intervento($idintervento); + + $costo_orario = $records[0]['tot_ore_consuntivo'] - $records[0]['tot_dirittochiamata']; + + if ($ore > 0) { + $costo_orario /= $ore; + } + echo ' -
+ + '.tr('Ore lavorate').':
'.Translator::numberToLocale($ore, 2).' + '; - - - '; - - // Totale imponibile + // Costo orario echo ' - - + '; + + // Costo totale manodopera + echo ' + '; +} else { + echo ' + '; +} + +// Timbro e firma +$firma = !empty($records[0]['firma_file']) ? '' : ''; +echo ' + '; +// TOTALE COSTI FINALI +if ($visualizza_costi) { + // Totale imponibile + echo ' + + + + + '; + // Eventuale sconto incondizionato - if ($records[0]['sconto_globale'] > 0) { - $prc = ($records[0]['tipo_sconto'] == 'PRC'); - $records[0]['sconto_globale'] = $prc ? $totale * $records[0]['sconto_globale'] / 100 : $records[0]['sconto_globale']; - - $sconto = Translator::numberToLocale($records[0]['sconto_globale'], ($prc ? 0 : 2)).($prc ? '%' : '€'); - - $totale = sum($totale, -$records[0]['sconto_globale']); - + if (!empty($costi_intervento['sconto_globale'])) { echo ' - - + '; // Imponibile scontato echo ' - - + '; } // Leggo iva da applicare - $q1 = 'SELECT percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita')); - $rs1 = $dbo->fetchArray($q1); + $rs1 = $dbo->fetchArray('SELECT percentuale FROM co_iva WHERE id='.prepare(get_var('Iva predefinita'))); $percentuale_iva = $rs1[0]['percentuale']; - $iva = ($totale / 100 * $percentuale_iva); + $iva = ($costi_intervento['totale'] / 100 * $percentuale_iva); // IVA // Totale intervento echo ' - - '; - $totale = sum($totale, $iva); + $totale = sum($costi_intervento['totale'], $iva); // TOTALE INTERVENTO echo ' - - -
- '.tr('Imponibile', [], ['upper' => true]).': - + '.tr('Costo orario').':
'.Translator::numberToLocale($costo_orario, 2).''; -
- '.Translator::numberToLocale($totale, 2).' € + if ($records[0]['tot_dirittochiamata'] != 0) { + echo ' + + '.Translator::numberToLocale($records[0]['tot_dirittochiamata'], 2).' d.c.'; + } + + echo ' + + '.tr('Manodopera').':
'.Translator::numberToLocale($costi_intervento['manodopera_scontato'], 2).' +
+ '.$firma.'
+ ('.tr('Timbro e firma leggibile').'.)
+ '.tr('Imponibile', [], ['upper' => true]).': + + '.Translator::numberToLocale($costi_intervento['totale_scontato'], 2).' € +
+ '.tr('Sconto incondizionato', [], ['upper' => true]).': - -'.Translator::numberToLocale($sconto, 2).' € - + -'.Translator::numberToLocale($costi_intervento['sconto_globale'], 2).' € +
+ '.tr('Imponibile scontato', [], ['upper' => true]).': - '.Translator::numberToLocale($totale, 2).' € - + '.Translator::numberToLocale($costi_intervento['totale'], 2).' € +
+ '.tr('Iva (_PRC_%)', [ '_PRC_' => Translator::numberToLocale($percentuale_iva, 0), ], ['upper' => true]).': + '.Translator::numberToLocale($iva, 2).' € - +
+ '.tr('Totale intervento', [], ['upper' => true]).': + '.Translator::numberToLocale($totale, 2).' € - -
-
'; -} - -// timbro e firma -if ($records[0]['firma_file'] != '') { - $firma = ''; -} else { - $firma = ''; + + '; } echo ' -
- - - - - - -
- '.tr('Si dichiara che i lavori sono stati eseguiti ed i materiali installati').'.
- '.tr('I dati del ricevente verrano trattati in base al D.lgs n. 196/2003').'. -
- '.$firma.'
- ('.tr('Timbro e firma leggibile').'.) -
'; diff --git a/templates/interventi/init.php b/templates/interventi/init.php index b256ccc8a..f59b3b1a9 100644 --- a/templates/interventi/init.php +++ b/templates/interventi/init.php @@ -10,6 +10,8 @@ $module_name = 'Interventi'; $query = 'SELECT in_interventi.*, (SELECT numero FROM co_contratti WHERE id=(SELECT idcontratto FROM co_righe_contratti WHERE idintervento=in_interventi.id)) AS numero_contratto, (SELECT numero FROM co_preventivi WHERE id=(SELECT idpreventivo FROM co_preventivi_interventi WHERE idintervento=in_interventi.id ORDER BY idpreventivo DESC LIMIT 0,1)) AS numero_preventivo, (SELECT SUM(prezzo_dirittochiamata) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_dirittochiamata`, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km`, (SELECT SUM(ore*prezzo_ore_unitario) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_ore_consuntivo`, (SELECT SUM(prezzo_km_consuntivo) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS `tot_km_consuntivo`, in_interventi.descrizione AS `descrizione_intervento`, richiesta FROM in_interventi INNER JOIN in_tipiintervento ON in_interventi.idtipointervento=in_tipiintervento.idtipointervento WHERE id='.prepare($idintervento).' '.Modules::getAdditionalsQuery('Interventi'); $records = $dbo->fetchArray($query); +$costi_intervento = get_costi_intervento($idintervento); + $id_cliente = $records[0]['idanagrafica']; $id_sede = $records[0]['idsede'];