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

'.tr('Contratto num. _NUM_ del _DATE_', [ '_NUM_' => $records[0]['numero'], '_DATE_' => Translator::dateToLocale($records[0]['data']), ], ['upper' => true]).'

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

$c_ragionesociale$

$c_indirizzo$ $c_citta_full$

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

$c_piva$

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

$c_codicefiscale$
'; // Descrizione if (!empty($records[0]['descrizione'])) { echo '

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


'; } $totale_ore_impiegate = 0; $sconto = []; $imponibile = []; $interventi = $dbo->fetchArray('SELECT *, in_interventi.id, in_interventi.codice, (SELECT GROUP_CONCAT(DISTINCT ragione_sociale) FROM in_interventi_tecnici JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = in_interventi_tecnici.idtecnico WHERE idintervento=in_interventi.id) AS tecnici, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS inizio, (SELECT SUM(ore) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS ore, (SELECT SUM(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_righe_contratti JOIN in_interventi ON co_righe_contratti.idintervento=in_interventi.id WHERE co_righe_contratti.idcontratto='.prepare($id_record).' ORDER BY inizio DESC'); if (!empty($interventi)) { // Interventi echo " '; $ore = []; $km = []; $sconto_int = []; $imponibile_int = []; foreach ($interventi as $int) { $int = array_merge($int, get_costi_intervento($int['id'])); $int['sconto'] = ($int['manodopera_addebito'] - $int['manodopera_scontato']) + ($int['viaggio_addebito'] - $int['viaggio_scontato']); $int['subtotale'] = $int['manodopera_scontato'] + $int['viaggio_scontato']; echo ' '; echo ' '; // Calcolo il totale delle ore lavorate $tecnici = $dbo->fetchArray('SELECT orario_inizio, orario_fine FROM in_interventi_tecnici WHERE idintervento='.prepare($int['id'])); foreach ($tecnici as $tecnico) { $totale_ore_impiegate += datediff('n', $tecnico['orario_inizio'], $tecnico['orario_fine']) / 60; } $ore[] = $int['ore']; $km[] = $int['km']; $sconto_int[] = $sconto; $imponibile_int[] = $int['subtotale']; } $ore = sum($ore); $km = sum($km); $sconto_int = sum($sconto_int); $imponibile_int = sum($imponibile_int); $totale_int = $imponibile_int - $sconto_int; $sconto[] = $sconto_int; $imponibile[] = $imponibile_int; echo ' '; // Totale interventi echo ' '; echo '
".tr('Attività', [], ['upper' => true])." ".tr('Ore', [], ['upper' => true])." ".tr('Km', [], ['upper' => true])." ".tr('Sconto', [], ['upper' => true])." ".tr('Imponibile', [], ['upper' => true]).'
'.tr('Intervento num. _NUM_ del _DATE_', [ '_NUM_' => $int['codice'], '_DATE_' => Translator::dateToLocale($int['inizio']), ]); if (!empty($int['tecnici'])) { echo '
'.tr('Tecnici').': '.str_replace(',', ', ', $int['tecnici']).'.'; } echo '
'.Translator::numberToLocale($int['ore']).' '.Translator::numberToLocale($int['km']).' '.Translator::numberToLocale($int['sconto']).' € '.Translator::numberToLocale($int['subtotale']).' €
'.tr('Totale', [], ['upper' => true]).': '.Translator::numberToLocale($ore).' '.Translator::numberToLocale($km).' '.Translator::numberToLocale($sconto_int).' € '.Translator::numberToLocale($totale_int).' €
'; $count = $dbo->fetchArray('SELECT COUNT(*) FROM `mg_articoli_interventi` WHERE idintervento IN ('.implode(',', array_column($interventi, 'id')).')'); if (!empty($count)) { echo ' '; $sconto_art = []; $imponibile_art = []; // Articoli per intervento foreach ($interventi as $int) { $righe = $dbo->fetchArray("SELECT *, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice, (SELECT CONCAT_WS(serial, 'SN: ', ', ') FROM mg_prodotti WHERE mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo) AS serials FROM `mg_articoli_interventi` WHERE idintervento =".prepare($int['id']).' ORDER BY idarticolo ASC'); foreach ($righe as $r) { echo ' '; // Descrizione echo ' '; // Quantità echo ' '; // Prezzo unitario echo " '; // Netto $netto = $r['prezzo_vendita'] * $r['qta']; echo ' '; $sconto_art[] = $r['sconto']; $imponibile_art[] = $r['prezzo_vendita'] * $r['qta']; } } echo ' '; $sconto_art = sum($sconto_art); $imponibile_art = sum($imponibile_art); $totale_art = $imponibile_art - $sconto_art; $sconto[] = $sconto_art; $imponibile[] = $imponibile_art; // Totale spesa articoli echo ' '; echo '
'.tr('Materiale utilizzato', [], ['upper' => true]).'
'.tr('Descrizione').' '.tr('Q.tà').' '.tr('Prezzo').' '.tr('Importo').'
'.$r['descrizione']; // Codice if (!empty($r['codice'])) { echo '
'.tr('COD. _COD_', [ '_COD_' => $r['codice'], ]).''; } echo '
'.tr('Intervento num. _NUM_ del _DATE_', [ '_NUM_' => $int['id'], '_DATE_' => Translator::dateToLocale($int['inizio']), ]).'.'; echo '
'.Translator::numberToLocale($r['qta']).' '.$r['um'].' ".Translator::numberToLocale($r['prezzo_vendita']).' €'; if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'), ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.Translator::numberToLocale($netto).' €'; if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto']), '_TYPE_' => '€', ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.tr('Totale materiale utilizzato', [], ['upper' => true]).': '.Translator::numberToLocale($totale_art).' €
'; } // Altre spese per intervento $count = $dbo->fetchArray('SELECT COUNT(*) FROM `in_righe_interventi` WHERE idintervento IN ('.implode(',', array_column($interventi, 'id')).')'); if (!empty($count)) { echo ' '; $sconto_spese = []; $imponibile_spese = []; // Articoli per intervento foreach ($interventi as $int) { $righe = $dbo->fetchArray('SELECT * FROM `in_righe_interventi` WHERE idintervento ='.prepare($int['id']).' ORDER BY id ASC'); foreach ($righe as $r) { echo ' '; // Descrizione echo ' '; // Quantità echo ' '; // Prezzo unitario echo " '; // Netto $netto = $r['prezzo_vendita'] * $r['qta']; echo ' '; $sconto_spese[] = $r['sconto']; $imponibile_spese[] = $r['prezzo_vendita'] * $r['qta']; } } echo ' '; $sconto_spese = sum($sconto_spese); $imponibile_spese = sum($imponibile_spese); $totale_spese = $imponibile_spese - $sconto_spese; $sconto[] = $sconto_spese; $imponibile[] = $imponibile_spese; // Totale spese aggiuntive echo ' '; echo '
'.tr('Spese aggiuntive', [], ['upper' => true]).'
'.tr('Descrizione').' '.tr('Q.tà').' '.tr('Prezzo').' '.tr('Importo').'
'.$r['descrizione']; echo '
'.tr('Intervento num. _NUM_ del _DATE_', [ '_NUM_' => $int['id'], '_DATE_' => Translator::dateToLocale($int['inizio']), ]).'.'; echo '
'.Translator::numberToLocale($r['qta']).' '.$r['um'].' ".Translator::numberToLocale($r['prezzo_vendita']).' €'; if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'), ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.Translator::numberToLocale($netto).' €'; if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto']), '_TYPE_' => '€', ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.tr('Totale spese aggiuntive', [], ['upper' => true]).': '.Translator::numberToLocale($totale_spese).' €
'; } } // TOTALE COSTI FINALI $sconto = sum($sconto); $imponibile = sum($imponibile); $totale = $imponibile - $sconto; $rs = $dbo->fetchArray("SELECT SUM(subtotale) as budget FROM `co_righe2_contratti` WHERE idcontratto = ".prepare($id_record)); $budget = $rs[0]['budget']; $rs = $dbo->fetchArray("SELECT SUM(qta) AS totale_ore FROM `co_righe2_contratti` WHERE um='ore' AND idcontratto = ".prepare($id_record)); $totale_ore = $rs[0]['totale_ore']; $rapporto = $budget - $totale; // Totale imponibile echo ' '; // Eventuale sconto incondizionato if (!empty($sconto)) { echo ' '; // Imponibile scontato echo ' '; } // IVA $rs = $dbo->fetchArray('SELECT * FROM co_iva WHERE co_iva.id = '.prepare(get_var('Iva predefinita'))); $percentuale_iva = $rs[0]['percentuale']; $iva = $totale / 100 * $percentuale_iva; echo ' '; $totale = sum($totale, $iva); // TOTALE echo ' '; // BUDGET echo ' '; // RAPPORTO echo ' '; // ORE RESIDUE if (!empty($totale_ore)) { echo ' '; } echo'
'.tr('Imponibile', [], ['upper' => true]).': '.Translator::numberToLocale($imponibile).' €
'.tr('Sconto', [], ['upper' => true]).': -'.Translator::numberToLocale($sconto).' €
'.tr('Imponibile scontato', [], ['upper' => true]).': '.Translator::numberToLocale($totale).' €
'.tr('Iva (_PRC_%)', [ '_PRC_' => Translator::numberToLocale($percentuale_iva, 0), ], ['upper' => true]).': '.Translator::numberToLocale($iva).' €
'.tr('Totale consuntivo', [], ['upper' => true]).': '.Translator::numberToLocale($totale).' €
'.tr('Budget (no IVA)', [], ['upper' => true]).': '.Translator::numberToLocale($budget).' €
'.tr('Rapporto budget/spesa (no IVA)', [], ['upper' => true]).': '.Translator::numberToLocale($rapporto).' €
'.tr('Ore residue', [], ['upper' => true]).': '.Translator::numberToLocale($totale_ore - $totale_ore_impiegate).'

'.tr('Ore erogate').': '.Translator::numberToLocale($totale_ore_impiegate).'

'.tr('Ore in contratto').': '.Translator::numberToLocale($totale_ore).'

';