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

'.tr('Preventivo 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']).'


'; } $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 in_interventi WHERE in_interventi.id_preventivo='.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']; $sconto[] = $int['sconto_globale']; echo ' '; echo ' '; $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']).' '.moneyFormat($int['sconto']).' '.moneyFormat($int['subtotale']).'
'.tr('Totale', [], ['upper' => true]).': '.Translator::numberToLocale($ore).' '.Translator::numberToLocale($km).' '.moneyFormat($sconto_int).' '.moneyFormat($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 AND mg_prodotti.id_riga_intervento = mg_articoli_interventi.idintervento) 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['codice'], '_DATE_' => Translator::dateToLocale($int['inizio']), ]).'.'; echo '
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].' ".moneyFormat($r['prezzo_vendita']); if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()), ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.moneyFormat($netto); if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto']), '_TYPE_' => currency(), ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.tr('Totale materiale utilizzato', [], ['upper' => true]).': '.moneyFormat($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['codice'], '_DATE_' => Translator::dateToLocale($int['inizio']), ]).'.'; echo '
'.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].' ".moneyFormat($r['prezzo_vendita']); if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()), ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.moneyFormat($netto); if ($r['sconto'] > 0) { echo "
- ".tr('sconto _TOT_ _TYPE_', [ '_TOT_' => Translator::numberToLocale($r['sconto']), '_TYPE_' => currency(), ]).''; if ($count <= 1) { $count += 0.4; } } echo '
'.tr('Totale spese aggiuntive', [], ['upper' => true]).': '.moneyFormat($totale_spese).'
'; } } // TOTALE COSTI FINALI $sconto = sum($sconto); $imponibile = sum($imponibile); $totale = $imponibile - $sconto; //$rs = $dbo->fetchArray('SELECT SUM(subtotale) as budget FROM `co_righe_preventivi` WHERE idpreventivo = '.prepare($id_record)); //$budget = $rs[0]['budget']; $budget = get_imponibile_preventivo($id_record); //pulisco da informazioni irrilevanti (imponibile,iva) $show = false; $rapporto = floatval($budget) - floatval($totale); // Totale imponibile echo ' '; if ($show) { echo ''; // Eventuale sconto incondizionato if (!empty($sconto)) { echo ' '; // Imponibile scontato echo ' '; } // IVA $rs = $dbo->fetchArray('SELECT * FROM co_iva WHERE co_iva.id = '.prepare(setting('Iva predefinita'))); $percentuale_iva = $rs[0]['percentuale']; $iva = $totale / 100 * $percentuale_iva; echo ' '; //$totale = sum($totale, $iva); } // TOTALE echo ' '; // BUDGET echo ' '; // RAPPORTO echo ' '; echo'
'.tr('Imponibile', [], ['upper' => true]).': '.moneyFormat($imponibile).'
'.tr('Sconto', [], ['upper' => true]).': -'.moneyFormat($sconto).'
'.tr('Imponibile scontato', [], ['upper' => true]).': '.moneyFormat($totale).'
'.tr('Iva (_PRC_%)', [ '_PRC_' => Translator::numberToLocale($percentuale_iva, 0), ], ['upper' => true]).': '.moneyFormat($iva).'
'.tr('Totale consuntivo (no iva)', [], ['upper' => true]).': '.moneyFormat($totale).'
'.tr('Budget (no IVA)', [], ['upper' => true]).': '.moneyFormat($budget).'
'.tr('Rapporto budget/spesa (no IVA)', [], ['upper' => true]).': '.moneyFormat($rapporto).'
';