. */ include_once __DIR__.'/../../../core.php'; use Modules\Interventi\Intervento; // Tabella con riepilogo interventi $interventi = Intervento::where('id_contratto', $id_record)->get(); $totale_ore_completate = 0; if (!empty($interventi)) { echo ' '; // Tabella con i dati foreach ($interventi as $intervento) { $totale_ore_completate += !empty($intervento->stato->is_completato) ? $intervento->ore_totali : 0; // Riga per il singolo intervento echo ' '; // Riga con dettagli echo ' '; } $array_interventi = $interventi->toArray(); $totale_km = sum(array_column($array_interventi, 'km_totali')); $totale_costo = sum(array_column($array_interventi, 'spesa')); $totale_addebito = sum(array_column($array_interventi, 'imponibile')); $totale = sum(array_column($array_interventi, 'totale_imponibile')); $totale_ore = sum(array_column($array_interventi, 'ore_totali')); // Totali echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; $stati = $interventi->groupBy('idstatointervento'); if (count($stati) > 0) { // Totali per stato echo ' '; foreach ($stati as $interventi_collegati) { $stato = $interventi_collegati->first()->stato; $totale_stato = sum(array_column($interventi_collegati->toArray(), 'totale_imponibile')); echo ' '; } } echo '
'.tr('Attività').' '.tr('Ore').' '.tr('Km').' '.tr('Costo').' '.tr('Addebito').' '.tr('Tot. scontato').'
'.Modules::link('Interventi', $intervento->id, tr('Intervento num. _NUM_ del _DATE_', [ '_NUM_' => $intervento->codice, '_DATE_' => Translator::dateToLocale($intervento->inizio), ])).' '.numberFormat($intervento->ore_totali).' '.numberFormat($intervento->km_totali).' '.moneyFormat($intervento->spesa).' '.moneyFormat($intervento->imponibile).' '.moneyFormat($intervento->totale_imponibile).'
'; // Lettura sessioni di lavoro $sessioni = $intervento->sessioni; if (!empty($sessioni)) { echo ' '; foreach ($sessioni as $sessione) { // Visualizzo lo sconto su ore o km se c'è $sconto_ore = !empty($sessione->sconto_totale_manodopera) ? '
'.moneyFormat(-$sessione->sconto_totale_manodopera).'' : ''; $sconto_km = !empty($sessione->sconto_totale_viaggio) ? '
'.moneyFormat(-$sessione->sconto_totale_viaggio).'' : ''; echo ' '; } echo '
'.tr('Tecnico').' '.tr('Tipo attività').' '.tr('Ore').' '.tr('Km').' '.tr('Costo ore').' '.tr('Costo km').' '.tr('Diritto ch.').' '.tr('Prezzo ore').' '.tr('Prezzo km').' '.tr('Diritto ch.').'
'.$sessione->anagrafica->ragione_sociale.' '.$sessione->tipo->descrizione.' '.numberFormat($sessione->ore).' '.numberFormat($sessione->km).' '.moneyFormat($sessione->costo_manodopera).' '.moneyFormat($sessione->costo_viaggio).' '.moneyFormat($sessione->costo_diritto_chiamata).' '.moneyFormat($sessione->prezzo_manodopera).$sconto_ore.' '.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' '.moneyFormat($sessione->prezzo_diritto_chiamata).'
'; } // Lettura articoli utilizzati $articoli = $intervento->articoli; if (!$articoli->isEmpty()) { echo ' '; foreach ($articoli as $articolo) { $sconto = !empty($articolo->sconto) ? '
'.moneyFormat(-$articolo->sconto).'' : ''; echo ' '; } echo '
'.tr('Materiale').' '.tr('Q.tà').' '.tr('Prezzo di acquisto').' '.tr('Prezzo di vendita').'
'.Modules::link('Articoli', $articolo->idarticolo, $articolo->descrizione).' '.numberFormat($articolo->qta, 'qta').' '.moneyFormat($articolo->spesa).' '.moneyFormat($articolo->imponibile).$sconto.'
'; } // Lettura spese aggiuntive $righe = $intervento->righe; if (!$righe->isEmpty()) { echo ' '; foreach ($righe as $riga) { $sconto = !empty($riga->sconto) ? '
'.moneyFormat(-$riga->sconto).'' : ''; echo ' '; } echo '
'.tr('Altre spese').' '.tr('Q.tà').' '.tr('Prezzo di acquisto').' '.tr('Prezzo di vendita').'
'.$riga->descrizione.' '.numberFormat($riga->qta, 'qta').' '.moneyFormat($riga->spesa).' '.moneyFormat($riga->imponibile).$sconto.'
'; } echo '
'.tr('Totale').' '.numberFormat($totale_ore).' '.numberFormat($totale_km).' '.moneyFormat($totale_costo).' '.moneyFormat($totale_addebito).' '.moneyFormat($totale).'

'.tr('Totale interventi per stato', [], ['upper' => true]).'
'.$stato->descrizione.': '.moneyFormat($totale_stato).'
'; } /* 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.'


'; echo '
'; if (!empty($totale_ore_contratto)) { echo ' '; } echo ' '; if (!empty($totale_ore_contratto)) { echo ' '; } echo ' '; if (!empty($totale_ore_contratto)) { echo ' '; } echo '
'.tr('Ore a contratto').': '.Translator::numberToLocale($totale_ore_contratto).'
'.tr('Ore erogate totali').': '.Translator::numberToLocale($totale_ore).'
'.tr('Ore residue totali').': '.Translator::numberToLocale(floatval($totale_ore_contratto) - floatval($totale_ore)).'
'.tr('Ore erogate concluse').': '.Translator::numberToLocale($totale_ore_completate).'
'.tr('Ore residue concluse').': '.Translator::numberToLocale(floatval($totale_ore_contratto) - floatval($totale_ore_completate)).'
'; if (empty($totale_ore_contratto)) { 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')).'
';