fetchArray($q); $idcliente = $rspreventivii[0]['idanagrafica']; $budget = Translator::numberToLocale($rspreventivii[0]['budget'], 2); // carica report html $report = file_get_contents($docroot.'/templates/preventivi_cons/preventivo.html'); $body = file_get_contents($docroot.'/templates/preventivi_cons/preventivo_body.html'); include_once $docroot.'/templates/pdfgen_variables.php'; $totrows = sizeof($rspreventivii); $totale_km = 0; $totale_ore = 0; $totale = 0; $preventivi = []; $ore = []; $km = []; $dc = []; $ntecnici = []; $tecnici = []; $costi_orari = []; $costi_km = []; $idinterventi = []; if ($totrows > 0) { for ($i = 0; $i < $totrows; ++$i) { if (!empty($rspreventivii[$i]['codice'])) { // Lettura numero tecnici collegati all'intervento $query = 'SELECT an_anagrafiche.idanagrafica, ragione_sociale, in_interventi_tecnici.ore, in_interventi_tecnici.km, prezzo_dirittochiamata FROM in_interventi_tecnici LEFT OUTER JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE idintervento="'.$rspreventivii[$i]['id'].'"'; $rst = $dbo->fetchArray($query); $n_tecnici = sizeof($rst); $tecnici_full = []; $dc_tecnici = 0; $t = 0; for ($j = 0; $j < $n_tecnici; ++$j) { $t1 = $rst[$j]['ore']; array_push($tecnici_full, $rst[$j]['ragione_sociale']); // Conteggio ore totali $t += $rst[$j]['ore']; $dc_tecnici += $rst[$j]['prezzo_dirittochiamata']; } $desc = str_replace("\n", '
  ', ''.$rspreventivii[$i]['descrizione'].''); $line = 'Attività '.$rspreventivii[$i]['codice'].' del '.Translator::dateToLocale($rspreventivii[$i]['data'])."
\n  ".$desc; array_push($preventivi, $line); array_push($km, $rspreventivii[$i]['km']); array_push($ore, $t); array_push($dc, $dc_tecnici); array_push($ntecnici, $n_tecnici); array_push($tecnici, implode(', ', array_unique($tecnici_full))); $totale_ore += $t; $totale_km += floatval($rspreventivii[$i]['km']); $totale_diritto_chiamata += $dc_tecnici; } } } $body .= 'PREVENTIVO: '.$rspreventivii[0]['nome']."

\n"; $body .= ''.str_replace("\n", '
', $rspreventivii[0]['cdescrizione'])."

\n"; // Sostituisco i valori tra | | con il valore del campo del db $body .= preg_replace('/|(.+?)|/', $rspreventivii[0]['${1}'], $body); if (sizeof($preventivi) > 0) { // Tabella con riepilogo interventi, km e ore $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; // Tabella con i dati for ($j = 0; $j < sizeof($preventivi); ++$j) { $body .= "\n"; // Km $body .= "\n"; // Costo unitario km $body .= "\n"; // Ore $body .= "\n"; // Costo unitario ore $body .= "\n"; // Diritto chiamata $body .= "\n"; // Subtotale $subtotale = $rspreventivii[$j]['src_costo_km'] * $km[$j] + $rspreventivii[$j]['src_costo_orario'] * $ore[$j] + $rspreventivii[$j]['src_diritto_chiamata']; $body .= "\n"; $totale += $subtotale; $totale_consuntivo += $rspreventivii[$j]['tot_ore_consuntivo'] + $rspreventivii[$j]['tot_km_consuntivo']; array_push($idinterventi, "'".$rspreventivii[$j]['id']."'"); } $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; // Riga dello sconto // $sconto = $totale_consuntivo - $totale; // $sconto = 0; if ($sconto != 0) { /* $body .= "\n\n"; */ $body .= "\n"; } // Fine riga dello sconto $totale_intervento_consuntivo += $totale_consuntivo; $totale_intervento_consuntivo = $totale; $body .= "\n"; $body .= "
AttivitàKmCosto al kmOreCosto orarioDiritto ch.Subtotale
\n"; $body .= $preventivi[$j]."
\n"; $body .= 'Tecnici:
'.$tecnici[$j]."
\n"; $body .= "
\n"; $body .= Translator::numberToLocale($km[$j], 2); $body .= "\n"; $body .= Translator::numberToLocale($rspreventivii[$j]['src_costo_km'], 2); $body .= "\n"; $body .= Translator::numberToLocale($ore[$j], 2); $body .= "\n"; $body .= Translator::numberToLocale($rspreventivii[$j]['src_costo_orario'], 2); $body .= "\n"; $body .= Translator::numberToLocale($dc[$j], 2); $body .= "\n"; $body .= Translator::numberToLocale($subtotale, 2); // Sconto ore + km if ($rspreventivii[$j]['tot_sconto_ore'] + $rspreventivii[$j]['tot_sconto_km'] > 0) { $body .= "
".Translator::numberToLocale(-($rspreventivii[$j]['tot_sconto_ore'] + $rspreventivii[$j]['tot_sconto_km']), 2).''; } $body .= "
\n"; $body .= "Totale:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_km, 2)."\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_ore, 2)."\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_diritto_chiamata, 2)."\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale, 2)." €\n"; $body .= "
\n"; $body .= "Arrotondamenti:\n"; $body .= "\n"; $body .= "".Translator::numberToLocale( $sconto, 2)." €\n"; $body .= "
\n"; $body .= "Totale:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_consuntivo, 2)." €\n"; $body .= "
\n"; } $body .= "
\n"; // Conteggio articoli utilizzati $query = "SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento = mg_articoli_interventi.idintervento) AS data_intervento, (SELECT percentuale FROM co_iva WHERE id=mg_articoli_interventi.idiva_vendita) AS prciva_vendita, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, GROUP_CONCAT( CONCAT_WS(lotto, 'Lotto: ', ', '), CONCAT_WS(serial, 'SN: ', ', '), CONCAT_WS(altro, 'Altro: ', '') SEPARATOR '
') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` GROUP BY idarticolo, idintervento, lotto HAVING ".(!empty($idinterventi) ? 'idintervento IN('.implode(',', $idinterventi).') AND ' : '')." NOT idarticolo='0' ORDER BY idarticolo ASC"; $rs2 = $dbo->fetchArray($query); if (sizeof($rs2) > 0) { $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $totale_articoli = 0.00; for ($i = 0; $i < sizeof($rs2); ++$i) { // Articolo $body .= "\n"; // Quantità $qta = $rs2[$i]['sumqta']; $body .= "\n"; // Prezzo unitario $body .= "\n"; // Prezzo di vendita $body .= "\n"; $totale_articoli += $netto * $qta; } // Totale spesa articoli $body .= "\n"; $body .= "\n"; $body .= "
Materiale utilizzato per gli interventi
\n"; $body .= "Articolo\n"; $body .= "\n"; $body .= "Q.tà\n"; $body .= "\n"; $body .= "Prezzo unitario\n"; $body .= "\n"; $body .= "Subtot\n"; $body .= "
\n"; $body .= ''.nl2br($rs2[$i]['descrizione'])."\n"; if ($rs2[$i]['codice'] != '' && $rs2[$i]['codice'] != 'Lotto: , SN: , Altro: ') { $body .= '
'.$rs2[$i]['codice']."\n"; } $body .= '
Intervento del '.Translator::dateToLocale($rs2[$i]['data_intervento'])."\n"; $body .= "
\n"; $body .= ''.$rs2[$i]['sumqta']."\n"; $body .= "\n"; $netto = $rs2[$i]['prezzo_vendita']; $netto = $netto + $netto / 100 * $rs2[$i]['prc_guadagno']; $iva = $netto / 100 * $rs2[$i]['prciva_vendita']; $body .= ''.Translator::numberToLocale($netto, 2)." €\n"; $body .= "\n"; $body .= "".Translator::numberToLocale($netto * $qta, 2)."\n"; $body .= "
\n"; $body .= "TOTALE MATERIALE UTILIZZATO:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_articoli, 2)." €\n"; $body .= "

\n"; } // Conteggio spese aggiuntive $query = 'SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento = in_righe_interventi.idintervento) AS data_intervento FROM in_righe_interventi '.(!empty($idinterventi) ? 'WHERE idintervento IN('.implode(',', $idinterventi).')' : '').' ORDER BY id ASC'; $rs2 = $dbo->fetchArray($query); if (sizeof($rs2) > 0) { $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $totale_spese = 0.00; for ($i = 0; $i < sizeof($rs2); ++$i) { // Articolo $body .= "\n"; // Quantità $qta = $rs2[$i]['qta']; $body .= "\n"; // Prezzo unitario $body .= "\n"; // Prezzo di vendita $body .= "\n"; $totale_spese += $netto * $qta; } // Totale spese aggiuntive $body .= "\n"; $body .= "\n"; $body .= "
Spese aggiuntive
\n"; $body .= "Descrizione\n"; $body .= "\n"; $body .= "Q.tà\n"; $body .= "\n"; $body .= "Prezzo unitario\n"; $body .= "\n"; $body .= "Subtot\n"; $body .= "
\n"; $body .= ''.$rs2[$i]['descrizione']."
\n"; $body .= 'Intervento del '.Translator::dateToLocale($rs2[$i]['data_intervento'])."\n"; $body .= "
\n"; $body .= ''.Translator::numberToLocale($rs2[$i]['qta'], 2)."\n"; $body .= "\n"; $netto = $rs2[$i]['prezzo']; $body .= ''.Translator::numberToLocale($netto, 2)." €\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($netto * $qta, 2)." €\n"; $body .= "
\n"; $body .= "ALTRE SPESE:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_spese, 2)." €\n"; $body .= "

\n"; } // Totale complessivo intervento $body .= "\n"; $body .= "\n"; // IMPONIBILE $body .= "\n"; $body .= "\n"; // IVA $q = "SELECT * FROM co_iva INNER JOIN zz_settings WHERE co_iva.id = zz_settings.valore AND zz_settings.nome = 'Iva predefinita' "; $rs = $dbo->fetchArray($q); $percentuale_iva = $rs[0]['percentuale']; $body .= "\n"; $body .= "\n"; // TOTALE (IMPONIBILE + IVA) $body .= "\n"; $body .= "\n"; // BUDGET $body .= "\n"; $body .= "\n"; $body .= "\n"; $diff = Translator::numberToLocale($budget - $totale, 2); $body .= "\n"; $body .= "
\n"; $body .= "IMPONIBILE:\n"; $body .= "\n"; $totale = Translator::numberToLocale($totale_intervento_consuntivo + $totale_articoli + $totale_spese, 2); $body .= ''.Translator::numberToLocale($totale_intervento_consuntivo + $totale_articoli + $totale_spese, 2)." €\n"; $body .= "
\n"; $body .= 'IVA ('.number_format($percentuale_iva, 0)."%):\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale(($totale_intervento_consuntivo + $totale_articoli + $totale_spese) / 100 * $percentuale_iva, 2)." €\n"; $body .= "
\n"; $body .= "TOTALE CONSUNTIVO:\n"; $body .= "\n"; $totale_ivato = Translator::numberToLocale(($totale_intervento_consuntivo + $totale_articoli + $totale_spese) + ($totale_intervento_consuntivo + $totale_articoli + $totale_spese) / 100 * $percentuale_iva, 2); $body .= ''.$totale_ivato." €\n"; $body .= "
\n"; $body .= "BUDGET (NO IVA):\n"; $body .= "\n"; $body .= ''.$budget." €\n"; $body .= "
\n"; $body .= "RAPPORTO BUDGET/SPESA (NO IVA):\n"; $body .= "\n"; $body .= ''.$diff." €\n"; $body .= "
\n"; $report_name = 'preventivo_'.$idpreventivo.'_cons.pdf';