fetchArray($q); $idcliente = $rscontratti[0]['idanagrafica']; $rs = $dbo->fetchArray("SELECT SUM(qta) AS totale_ore, SUM(subtotale) as totale_budget FROM `co_righe2_contratti` WHERE um='ore' AND idcontratto=\"".$idcontratto.'"'); $contratto_tot_ore = $rs[0]['totale_ore']; $contratto_tot_budget = $rs[0]['totale_budget']; // carica report html $report = file_get_contents($docroot.'/templates/contratti_cons/contratto.html'); $body = file_get_contents($docroot.'/templates/contratti_cons/contratto_body.html'); include_once $docroot.'/templates/pdfgen_variables.php'; $totale = 0; $contratti = []; $ore = []; $totale_ore_impiegate = 0; $costo_orario = []; $costo_km = []; $diritto_chiamata = []; $tot_ore_consuntivo = []; $tot_km_consuntivo = []; $tot_dirittochiamata = []; $km = []; $ntecnici = []; $tecnici = []; $costi_orari = []; $costi_km = []; $idinterventi = ["''"]; // Ciclo tra le righe degli interventi da programmare $rs_righe = $dbo->fetchArray('SELECT * FROM co_righe_contratti WHERE idcontratto="'.$idcontratto.'" ORDER BY data_richiesta ASC'); $totrows = sizeof($rs_righe); for ($r = 0; $r < sizeof($rs_righe); ++$r) { if (!empty($rs_righe[$r]['id'])) { $totale_ore = 0; $totale_km = 0; $totale_diritto_chiamata = 0; $q = 'SELECT id, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data, (SELECT SUM(km) FROM in_interventi_tecnici GROUP BY idintervento HAVING idintervento=in_interventi.id) AS km, (SELECT SUM(prezzo_ore_consuntivo) 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` FROM in_interventi WHERE id="'.$rs_righe[$r]['idintervento'].'"'; $rscontrattii = $dbo->fetchArray($q); if (sizeof($rscontrattii) == 1) { // Lettura numero tecnici collegati all'intervento $query = 'SELECT an_anagrafiche.idanagrafica, prezzo_ore_consuntivo, prezzo_km_consuntivo, prezzo_ore_unitario, prezzo_km_unitario, prezzo_dirittochiamata, ragione_sociale, orario_inizio, orario_fine, in_interventi_tecnici.km FROM in_interventi_tecnici LEFT OUTER JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE idintervento="'.$rscontrattii[0]['id'].'"'; $rst = $dbo->fetchArray($query); $n_tecnici = sizeof($rst); $tecnici_full = ''; $t = 0; for ($j = 0; $j < $n_tecnici; ++$j) { $t1 = datediff('n', $rst[$j]['orario_inizio'], $rst[$j]['orario_fine']); $orario = ''; if (floatval($t1) > 0) { $orario .= Translator::timestampToLocale($rst[$j]['orario_inizio']).' - '.Translator::timestampToLocale($rst[$j]['orario_fine']); } $tecnici_full .= ''.$rst[$j]['ragione_sociale'].' ('.$orario.')
'.Translator::numberToLocale($t1 / 60, 2).'h x '.Translator::numberToLocale($rst[$j]['prezzo_ore_unitario'], 2).' €/h
'.Translator::numberToLocale($rst[$j]['km'], 2).'km x '.Translator::numberToLocale($rst[$j]['prezzo_km_unitario'], 2).' km/h
'.Translator::numberToLocale($rst[$j]['prezzo_dirittochiamata'], 2)."€ d.c.

\n"; // Conteggio ore totali $t += $t1 / 60; $totale_ore += $rst[$j]['prezzo_ore_consuntivo']; $totale_km += $rst[$j]['prezzo_km_consuntivo']; $totale_diritto_chiamata += $rst[$j]['prezzo_dirittochiamata']; } $totale_ore_impiegate += $t; $desc = str_replace("\n", '
', $rscontratti[$i]['descrizione']); $line = 'Intervento '.$rscontrattii[0]['codice'].' del '.Translator::dateToLocale($rscontrattii[0]['data']).'
'.$desc; array_push($contratti, $line); array_push($tot_ore_consuntivo, $totale_ore); array_push($tot_km_consuntivo, $totale_km); array_push($tot_dirittochiamata, $totale_diritto_chiamata); array_push($ntecnici, $n_tecnici); array_push($tecnici, $tecnici_full); array_push($idinterventi, "'".$rscontrattii[0]['codice']."'"); } } // Visualizzo i dati degli interventi programmati else { $line = 'Da programmare entro il '.Translator::dateToLocale($rs_righe[$r]['data_richiesta']); array_push($contratti, $line); array_push($km, 0); array_push($ore, 0); array_push($costo_orario, 0); array_push($costo_km, 0); array_push($diritto_chiamata, 0); array_push($tot_ore_consuntivo, 0); array_push($tot_km_consuntivo, 0); array_push($ntecnici, 0); array_push($tecnici, '-'); } } $body .= '> CONSUNTIVO CONTRATTO: '.$rscontratti[0]['nome']."\n"; $body .= ''.str_replace("\n", '
', $rscontratti[0]['cdescrizione'])."

\n"; // Sostituisco i valori tra | | con il valore del campo del db $body .= preg_replace('/|(.+?)|/', $rscontratti[0]['${1}'], $body); if (sizeof($contratti) > 0) { // Tabella con riepilogo interventi, km e ore $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; // Tabella con i dati for ($j = 0; $j < sizeof($contratti); ++$j) { // Intervento (+ tecnici) $body .= "\n"; // Subtotale $subtotale = $tot_ore_consuntivo[$j] + $km[$j] * $costo_km[$j] + $diritto_chiamata[$j]; $body .= "\n"; $totale += $subtotale; $totale_consuntivo += $tot_ore_consuntivo[$j] + $tot_km_consuntivo[$j]; } $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "
InterventiTecniciSubtotale
\n"; $body .= ' '.$contratti[$j]."".$tecnici[$j]."\n"; $body .= "\n"; $body .= ' '.Translator::numberToLocale($subtotale, 2)."\n"; $body .= "
\n"; $body .= "Totale:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale, 2)." €\n"; $body .= "
\n"; } $body .= "
\n"; // Conteggio articoli utilizzati $query = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE 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 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 MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_righe_interventi.idintervento) AS data_intervento FROM in_righe_interventi 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"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "\n"; $diff = Translator::numberToLocale($contratto_tot_budget - $totale_intervento_consuntivo, 2); $body .= "\n"; $body .= "\n"; $body .= "\n"; $body .= "
\n"; $body .= "TOTALE CONSUNTIVO:\n"; $body .= "\n"; $totale_intervento_consuntivo = Translator::numberToLocale($totale + $totale_articoli + $totale_spese, 2); $body .= ''.$totale_intervento_consuntivo." €\n"; $body .= "
\n"; $body .= "BUDGET TOTALE (NO IVA):\n"; $body .= "\n"; $contratto_tot_budget = Translator::numberToLocale($contratto_tot_budget, 2); $body .= ''.$contratto_tot_budget." €\n"; $body .= "
\n"; $body .= "RAPPORTO BUDGET/SPESA (NO IVA):\n"; $body .= "\n"; $body .= ''.$diff." €\n"; $body .= "
\n"; $body .= "ORE RESIDUE:\n"; $body .= "\n"; $diff2 = Translator::numberToLocale($contratto_tot_ore - $totale_ore_impiegate, 2); $body .= "$diff2  (ore erogate: ".Translator::numberToLocale($totale_ore_impiegate, 2).' - ore in contratto: '.Translator::numberToLocale($contratto_tot_ore, 2).")\n"; $body .= "
\n"; $report_name = 'contratto_'.$idcontratto.'_cons.pdf';