get(); if (!empty($interventi)) { echo ' '; // Tabella con i dati foreach ($interventi as $intervento) { // Riga per il singolo intervento echo ' '; // Riga con dettagli echo ' '; } $array_interventi = $interventi->toArray(); $totale_ore = sum(array_column($array_interventi, 'ore_totali')); $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')); // Totali echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; echo ' '; // Totali per stato echo ' '; $stati = $interventi->groupBy('idstatointervento'); 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 preventivo $budget = $preventivo->totale_imponibile; $diff = sum($budget, -$totale); echo '

'.tr('Rapporto budget/spesa').':
'; if ($diff > 0) { echo ' +'.moneyFormat($diff).''; } elseif ($diff < 0) { echo ' '.moneyFormat($diff).''; } else { echo ' '.moneyFormat($diff).''; } echo '


'; /* Stampa consuntivo */ echo '
'.Prints::getLink('Consuntivo preventivo', $id_record, 'btn-primary', tr('Stampa consuntivo')).'
'; // Aggiunta interventi se il preventivo é aperto o in attesa o pagato (non si possono inserire interventi collegati ad altri preventivi) if (in_array($record['stato'], ['Accettato', 'In lavorazione', 'Pagato'])) { echo '
{[ "type": "select", "label": "'.tr('Aggiungi un altro intervento a questo preventivo').'", "name": "idintervento", "values": "query=SELECT id, CONCAT(\'Intervento \', codice, \' del \', DATE_FORMAT(IFNULL((SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento=in_interventi.id), data_richiesta), \'%d/%m/%Y\')) AS descrizione FROM in_interventi WHERE id_preventivo IS NULL AND id NOT IN( SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN( SELECT idintervento FROM co_promemoria WHERE idintervento IS NOT NULL) AND idanagrafica='.prepare($record['idanagrafica']).'" ]}
'; }