$value) { if (!empty($value) && starts_with($field, 'search_')) { $field_name = str_replace('search_', '', $field); $field_name = str_replace('__', ' ', $field_name); $field_name = str_replace('-', ' ', $field_name); array_push($search_filters, '`'.$field_name.'` LIKE "%'.$value.'%"'); } } } if (!empty($search_filters)) { $module_query = str_replace('2=2', '2=2 AND ('.implode(' AND ', $search_filters).') ', $module_query); } // Filtri derivanti dai permessi (eventuali) $module_query = Modules::replaceAdditionals($id_module, $module_query); $interventi = $dbo->fetchArray($module_query); // Se il cliente è uno solo carico la sua intestazione, altrimenti la lascio in bianco $idcliente = $interventi[0]['idanagrafica']; $singolo_cliente = true; for ($i = 0; $i < sizeof($interventi) && $singolo_cliente; ++$i) { if ($interventi[$i]['idanagrafica'] != $idcliente) { $singolo_cliente = false; } } if (!$singolo_cliente) { $idcliente = ''; } // carica report html $report = file_get_contents($docroot.'/templates/riepilogo_interventi/intervento.html'); $body = file_get_contents($docroot.'/templates/riepilogo_interventi/intervento_body.html'); if (!$singolo_cliente) { $body = str_replace('Spett.le', '', $body); } include_once $docroot.'/templates/pdfgen_variables.php'; $totrows = sizeof($interventi); $totale_km = 0.00; $totale = 0.00; $totale_calcolato = 0.00; $info_intervento = []; $ore = []; $km = []; $ntecnici = []; $tecnici = []; $costi_orari = []; $costi_km = []; $diritto_chiamata = []; $costo_ore_cons = []; $costo_km_cons = []; $diritto_chiamata_cons = []; $idinterventi = ['0']; $costi_interventi = []; foreach ($interventi as $intervento) { // Lettura dati dei tecnici dell'intervento corrente $sessioni = $dbo->fetchArray('SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico FROM in_interventi_tecnici WHERE idintervento='.prepare($intervento['id'])); $riga_tecnici = "\n"; foreach ($sessioni as $sessione) { $riga_tecnici .= "\n"; $riga_tecnici .= "\n"; array_push($costi_orari, floatval($sessione['prezzo_ore_unitario'])); array_push($costi_km, floatval($sessione['prezzo_km_unitario'])); array_push($diritto_chiamata, floatval($sessione['prezzo_dirittochiamata'])); array_push($costo_ore_cons, floatval($sessione['prezzo_ore_consuntivo'])); array_push($costo_km_cons, floatval($sessione['prezzo_km_consuntivo'])); array_push($diritto_chiamata_cons, floatval($sessione['prezzo_dirittochiamata_consuntivo'])); array_push($km, floatval($sessione['km'])); $totale_km += floatval($sessione['km']); } $riga_tecnici .= "
\n".$sessione['nome_tecnico']."\n\n".Translator::dateToLocale($sessione['orario_inizio']).' - '.Translator::timeToLocale($sessione['orario_inizio']).'-'.Translator::timeToLocale($sessione['orario_fine'])."\n"; $riga_tecnici .= "
\n"; $line = 'Intervento '.$intervento['Numero'].' del '.Translator::timestampToLocale($intervento['Data inizio'])."
".nl2br($intervento['richiesta'])."

\n"; // Se l'elenco non è di un singolo cliente stampo anche la sua ragione sociale if (!$singolo_cliente) { $line .= '
Cliente: '.$intervento['Ragione sociale']."\n"; } array_push($info_intervento, $line); array_push($ntecnici, $n_tecnici); array_push($tecnici, $riga_tecnici); array_push($ore, get_ore_intervento($intervento['id'])); $totale_dirittochiamata += floatval($rs[$i]['prezzo_dirittochiamata']); array_push($idinterventi, "'".$intervento['id']."'"); array_push($costi_interventi, get_costi_intervento($intervento['id'])); } $body .= 'RIEPILOGO INTERVENTI DAL '.Translator::dateToLocale($_SESSION['period_start']).' al '.Translator::dateToLocale($_SESSION['period_end'])."

\n"; // Sostituisco i valori tra | | con il valore del campo del db $body .= preg_replace('/|(.+?)|/', $interventi[0]['${1}'], $body); if (sizeof($info_intervento) > 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"; $body .= "\n"; // Tabella con i dati for ($i = 0; $i < sizeof($info_intervento); ++$i) { $subtotale_consuntivo = $costi_interventi[$i]['totale_addebito']; $totale_consuntivo += $costi_interventi[$i]['totale_addebito']; //$subtotale_consuntivo = floatval($costo_ore_cons[$i] + $costo_km_cons[$i] + $diritto_chiamata_cons[$i]); //$totale_consuntivo += $subtotale_consuntivo; //$subtotale_calcolato = $costi_orari[$i] * $ore[$i] + $costi_km[$i] * $km[$i] + $diritto_chiamata[$i]; //$totale_calcolato += $subtotale_calcolato; $subtotale_calcolato = $costi_interventi[$i]['totale_scontato']; $totale_calcolato += $costi_interventi[$i]['totale_scontato']; $costi_orari[$i] = ($costi_interventi[$i]['manodopera_addebito'] / $ore[$i]); $body .= "\n"; // Totale km $body .= '\n"; // Costo km $body .= '\n"; // Totale ore $body .= '\n"; // Costo ore $body .= '\n"; // Diritto chiamata $body .= '\n"; // Subtot $body .= '\n"; } $body .= "\n"; // Totale costo km $body .= "\n"; $body .= "\n"; // Totale costo ore $body .= "\n"; $body .= "\n"; // Totale diritto chiamata $body .= "\n"; $body .= "\n"; // Riga dello sconto $sconto = $totale_calcolato - $totale_consuntivo; if ($sconto != 0) { /* $body .= "\n\n"; */ $body .= "\n"; } $totale_intervento_scontato = $totale_calcolato - $sconto; $body .= "\n"; $body .= "
\n"; $body .= "Interventi\n"; $body .= "\n"; $body .= "km\n"; $body .= "\n"; $body .= "Costo unitario al km\n"; $body .= "\n"; $body .= "Ore\n"; $body .= "\n"; $body .= "Costo medio unitario all’ora\n"; $body .= "\n"; $body .= "Diritto chiamata\n"; $body .= "\n"; $body .= "Subtotale\n"; $body .= "
\n"; $body .= '
'.$info_intervento[$i].'
Tecnici:

'.$tecnici[$i]."
\n"; $body .= "
'; $body .= '
'.Translator::numberToLocale($km[$i])."
\n"; $body .= "
'; $body .= '
'.Translator::numberToLocale($costi_km[$i])."
\n"; $body .= "
'; $body .= '
'.Translator::numberToLocale($ore[$i])."
\n"; $body .= "
'; $body .= '
'.Translator::numberToLocale($costi_orari[$i])."
\n"; $body .= "
'; $body .= '
'.Translator::numberToLocale($diritto_chiamata[$i])."
\n"; $body .= "
'; $body .= '
'.Translator::numberToLocale($subtotale_calcolato)."
\n"; $body .= "
\n"; $body .= "Totale:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_km)."\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale(sum($ore))."\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_dirittochiamata)."\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_calcolato)." €\n"; $body .= "
\n"; $body .= "Arrotondamenti:\n"; $body .= "\n"; $body .= "".Translator::numberToLocale( -$sconto)." €\n"; $body .= "
\n"; $body .= "Totale scontato:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_calcolato - $sconto)." €\n"; $body .= "

\n"; } // Conteggio articoli utilizzati $query = "SELECT *, (SELECT percentuale FROM co_iva WHERE id=(SELECT idiva_vendita FROM mg_articoli WHERE id=idarticolo)) AS prciva_vendita, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=mg_articoli_interventi.idintervento GROUP BY idintervento HAVING idintervento=mg_articoli_interventi.idintervento) AS data_intervento, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno, (SELECT codice FROM mg_articoli WHERE id=idarticolo) AS codice_art, CONCAT_WS(serial, 'SN: ', ', ') AS codice, SUM(qta) AS sumqta FROM `mg_articoli_interventi` JOIN mg_prodotti ON mg_articoli_interventi.idarticolo = mg_prodotti.id_articolo 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"; $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 '.$rs2[$i]['idintervento'].' 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)." €\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($netto * $qta)."\n"; $body .= "
\n"; $body .= "TOTALE MATERIALE UTILIZZATO:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_articoli)." €\n"; $body .= "

\n"; } // Conteggio spese aggiuntive $query = 'SELECT *, (SELECT orario_inizio FROM in_interventi_tecnici WHERE idintervento=in_righe_interventi.idintervento GROUP BY idintervento HAVING idintervento=in_righe_interventi.idintervento ORDER BY orario_inizio) 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"; $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 '.$rs2[$i]['idintervento'].' del '.Translator::dateToLocale($rs2[$i]['data_intervento'])."\n"; $body .= "
\n"; $body .= ''.Translator::numberToLocale($rs2[$i]['qta'])."\n"; $body .= "\n"; $netto = $rs2[$i]['prezzo_vendita']; $body .= ''.Translator::numberToLocale($netto)." €\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($netto * $qta)." €\n"; $body .= "
\n"; $body .= "ALTRE SPESE:\n"; $body .= "\n"; $body .= ''.Translator::numberToLocale($totale_spese)." €\n"; $body .= "

\n"; } // Totale complessivo intervento $body .= "

\n"; $body .= 'TOTALE INTERVENTI: '.Translator::numberToLocale($totale_intervento_scontato + $totale_articoli + $totale_spese)." €\n"; $body .= "

\n"; $report_name = 'riepilogo_interventi.pdf';