fetchArray($queryc); for ($i = 0; $i < sizeof($rsc); ++$i) { $colori[$rsc[$i]['idstatointervento']] = $rsc[$i]['colore']; $stati[$rsc[$i]['idstatointervento']] = $rsc[$i]['descrizione']; } $totale_costo = 0; $totale_addebito = 0; $totale = 0; $totale_stato = []; // Tabella con riepilogo interventi $rsi = $dbo->fetchArray('SELECT in_interventi.id, in_interventi.idstatointervento, (SELECT completato FROM in_statiintervento WHERE in_statiintervento.idstatointervento = in_interventi.idstatointervento) AS completato, (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 MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM co_promemoria INNER JOIN in_interventi ON co_promemoria.idintervento=in_interventi.id WHERE co_promemoria.idcontratto='.prepare($id_record).' UNION SELECT in_interventi.id, in_interventi.idstatointervento, (SELECT completato FROM in_statiintervento WHERE in_statiintervento.idstatointervento = in_interventi.idstatointervento) AS completato, (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 MIN(km) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS km FROM in_interventi WHERE id_contratto = '.prepare($id_record).' ORDER BY id DESC'); if (!empty($rsi)) { echo ' '; // Tabella con i dati foreach ($rsi as $int) { $intervento = \Modules\Interventi\Intervento::find($int['id']); $totale_stato[$int['idstatointervento']] = sum($totale_stato[$int['idstatointervento']], $intervento->totale_imponibile); // Riga intervento singolo echo ' '; // Riga con dettagli echo ' '; $totale_ore_interventi += $int['ore']; $totale_ore_completate += !empty($int['completato']) ? $int['ore'] : 0; $totale_km += $int['km']; $totale_costo += $int['totale_costo']; $totale_addebito += $int['totale_addebito']; $totale += $int['totale_scontato']; } // Totali echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; // Totali per stato echo ' '; foreach ($totale_stato as $stato => $tot) { echo ' '; } echo '
'.tr('Attività').' '.tr('Ore').' '.tr('Km').' '.tr('Costo').' '.tr('Addebito').' '.tr('Tot. scontato').'
'.Modules::link('Interventi', $int['id'], tr('Intervento _NUM_ del _DATE_', [ '_NUM_' => $int['codice'], '_DATE_' => Translator::dateToLocale($int['inizio']), ])).' '.Translator::numberToLocale($int['ore']).' '.Translator::numberToLocale($int['km']).' '.Translator::numberToLocale($intervento->spesa).' '.Translator::numberToLocale($intervento->imponibile).' '.Translator::numberToLocale($intervento->totale_imponibile).'
'; /** * Lettura sessioni di lavoro. */ $rst = $dbo->fetchArray('SELECT in_interventi_tecnici.*, ragione_sociale FROM in_interventi_tecnici LEFT OUTER JOIN an_anagrafiche ON in_interventi_tecnici.idtecnico=an_anagrafiche.idanagrafica WHERE idintervento='.prepare($int['id'])); if (!empty($rst)) { echo ' '; foreach ($rst as $r) { // Visualizzo lo sconto su ore o km se c'è $sconto_ore = ($r['sconto'] != 0) ? '
'.moneyFormat(-$r['sconto']).'' : ''; $sconto_km = ($r['scontokm'] != 0) ? '
'.moneyFormat(-$r['scontokm']).'' : ''; // Aggiungo lo sconto globale nel totale ore if ($int['sconto_globale'] > 0) { $sconto_ore .= ' '.moneyFormat(-$int['sconto_globale']).''; } echo ' '; } echo '
'.tr('Tecnico').' '.tr('Tipo attività').' '.tr('Ore').' '.tr('Km').' '.tr('Costo orario').' '.tr('Costo km').' '.tr('Diritto ch.').' '.tr('Costo addebitato').' '.tr('Prezzo km').' '.tr('Diritto ch.').'
'.$r['ragione_sociale'].' '.$r['idtipointervento'].' '.Translator::numberToLocale($r['ore']).' '.Translator::numberToLocale($r['km']).' '.Translator::numberToLocale($r['prezzo_ore_consuntivo_tecnico']).' '.Translator::numberToLocale($r['prezzo_km_consuntivo_tecnico']).' '.Translator::numberToLocale($r['prezzo_dirittochiamata_tecnico']).' '.Translator::numberToLocale($r['prezzo_ore_consuntivo']).$sconto_ore.' '.Translator::numberToLocale($r['prezzo_km_consuntivo']).$sconto_km.' '.Translator::numberToLocale($r['prezzo_dirittochiamata']).'
'; } /** * Lettura articoli utilizzati. */ $rst = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento='.prepare($int['id'])); if (!empty($rst)) { echo ' '; foreach ($rst as $r) { // Visualizzo lo sconto su ore o km se c'è $sconto = ($r['sconto'] != 0) ? '
'.moneyFormat(-$r['sconto']).'' : ''; echo ' '; } echo '
'.tr('Materiale').' '.tr('Q.tà').' '.tr('Prezzo di acquisto').' '.tr('Prezzo di vendita').'
'.Modules::link('Articoli', $r['idarticolo'], $r['descrizione']).(!empty($extra) ? ''.implode(', ', $extra).'' : '').' '.Translator::numberToLocale($r['qta'], 'qta').' '.Translator::numberToLocale($r['prezzo_acquisto'] * $r['qta']).' '.Translator::numberToLocale($r['prezzo_vendita'] * $r['qta']).$sconto.'
'; } /** * Lettura spese aggiuntive. */ $rst = $dbo->fetchArray('SELECT * FROM in_righe_interventi WHERE idintervento='.prepare($int['id'])); if (!empty($rst)) { echo ' '; foreach ($rst as $r) { // Visualizzo lo sconto su ore o km se c'è $sconto = ($r['sconto'] != 0) ? '
'.moneyFormat(-$r['sconto']).'' : ''; echo ' '; } echo '
'.tr('Altre spese').' '.tr('Q.tà').' '.tr('Prezzo di acquisto').' '.tr('Prezzo di vendita').'
'.$r['descrizione'].' '.Translator::numberToLocale($r['qta'], 'qta').' '.Translator::numberToLocale($r['prezzo_acquisto'] * $r['qta']).' '.Translator::numberToLocale($r['prezzo_vendita'] * $r['qta']).$sconto.'
'; } echo '
'.tr('Totale').' '.Translator::numberToLocale($totale_ore_interventi).' '.Translator::numberToLocale($totale_km).' '.Translator::numberToLocale($totale_costo).' '.Translator::numberToLocale($totale_addebito).' '.Translator::numberToLocale($totale).'

'.tr('Totale interventi per stato', [], ['upper' => true]).'
'.$stati[$stato].': '.Translator::numberToLocale($tot).'
'; } /* Bilancio del contratto */ $rs = $dbo->fetchArray('SELECT SUM(subtotale - sconto) AS budget FROM co_righe_contratti WHERE idcontratto='.prepare($id_record)); $budget = $rs[0]['budget']; $rs = $dbo->fetchArray("SELECT SUM(qta) AS totale_ore FROM `co_righe_contratti` WHERE um='ore' AND idcontratto=".prepare($id_record)); $totale_ore_contratto = $rs[0]['totale_ore']; $diff = sum($budget, -$totale); if ($diff > 0) { $bilancio = ''.moneyFormat($diff).''; } elseif ($diff < 0) { $bilancio = ''.moneyFormat($diff).''; } else { $bilancio = ''.moneyFormat($diff).''; } echo '
'.tr('Rapporto budget/spesa').':
'.$bilancio.'


'; if (!empty($totale_ore_contratto)) { echo '
'.tr('Ore in contratto').': '.Translator::numberToLocale($totale_ore_contratto).'
'.tr('Ore erogate totali').': '.Translator::numberToLocale($totale_ore_interventi).' '.tr('Ore residue totali').': '.Translator::numberToLocale(floatval($totale_ore_contratto) - floatval($totale_ore_interventi)).'
'.tr('Ore erogate concluse').': '.Translator::numberToLocale($totale_ore_completate).' '.tr('Ore residue').': '.Translator::numberToLocale(floatval($totale_ore_contratto) - floatval($totale_ore_completate)).'
'; } else { echo '

'.tr('Per monitorare il consumo ore, inserisci almeno una riga con unità di misura "ore"').'.

'; } echo '
'; /* Stampa consuntivo */ echo '
'.Prints::getLink('Consuntivo contratto', $id_record, 'btn-primary', tr('Stampa consuntivo')).'
';