. */ include_once __DIR__.'/../../core.php'; use Models\Module; use Modules\Anagrafiche\Anagrafica; use Modules\Contratti\Contratto; use Modules\DDT\DDT; use Modules\Fatture\Fattura; use Modules\Interventi\Components\Sessione; use Modules\Interventi\Intervento; use Modules\Ordini\Ordine; use Modules\Preventivi\Preventivo; $calendar_id = filter('calendar_id'); $start = filter('start'); $end = filter('end'); $anagrafica = Anagrafica::withTrashed()->find($id_record); if (empty($anagrafica)) { return; } // Preventivi $preventivi = Preventivo::whereBetween('data_bozza', [$start, $end]) ->where('idanagrafica', $id_record) ->where('default_revision', 1) ->get(); $totale_preventivi = $preventivi->sum('totale_imponibile'); // Contratti $contratti = Contratto::whereBetween('data_bozza', [$start, $end]) ->where('idanagrafica', $id_record) ->get(); $totale_contratti = $contratti->sum('totale_imponibile'); // Ordini cliente $ordini_cliente = Ordine::whereBetween('data', [$start, $end]) ->where('idanagrafica', $id_record) ->get(); $totale_ordini_cliente = $ordini_cliente->sum('totale_imponibile'); // Interventi e Ore lavorate $interventi = []; // Clienti if ($anagrafica->isTipo('Cliente')) { $interventi = $dbo->fetchArray('SELECT in_interventi.id FROM in_interventi WHERE in_interventi.idanagrafica='.prepare($id_record).' AND data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end)); $sessioni = $dbo->fetchArray('SELECT in_interventi_tecnici.id FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi.id = in_interventi_tecnici.idintervento WHERE in_interventi.idanagrafica='.prepare($id_record).' AND in_interventi_tecnici.orario_inizio BETWEEN '.prepare($start).' AND '.prepare($end)); } // Tecnici elseif ($anagrafica->isTipo('Tecnico')) { $interventi = $dbo->fetchArray('SELECT in_interventi.id FROM in_interventi INNER JOIN in_interventi_tecnici ON in_interventi.id = in_interventi_tecnici.idintervento WHERE in_interventi_tecnici.idtecnico='.prepare($id_record).' AND data_richiesta BETWEEN '.prepare($start).' AND '.prepare($end)); $sessioni = $dbo->fetchArray('SELECT in_interventi_tecnici.id FROM in_interventi_tecnici WHERE in_interventi_tecnici.idtecnico='.prepare($id_record).' AND in_interventi_tecnici.orario_inizio BETWEEN '.prepare($start).' AND '.prepare($end)); } $interventi = Intervento::whereIn('id', array_column($interventi, 'id'))->get(); $totale_interventi = $interventi->sum('totale_imponibile'); if ($sessioni) { $sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get(); $totale_ore_lavorate = $sessioni->sum('ore'); } // Ddt in uscita $ddt_uscita = DDT::whereBetween('data', [$start, $end]) ->where('idanagrafica', $id_record) ->whereHas('tipo', function ($query) { $query->where('dt_tipiddt.dir', '=', 'entrata'); }) ->get(); $totale_ddt_uscita = $ddt_uscita->sum('totale_imponibile'); // Fatture di vendita $segmenti = $dbo->select('zz_segments', 'id', [], ['autofatture' => 0]); $fatture_vendita = Fattura::whereBetween('data', [$start, $end]) ->where('idanagrafica', $id_record) ->whereHas('tipo', fn ($query) => $query->where('co_tipidocumento.dir', '=', 'entrata') ->where('co_tipidocumento.reversed', '=', 0)) ->whereIn('id_segment', array_column($segmenti, 'id')) ->get(); $note_credito = Fattura::whereBetween('data', [$start, $end]) ->where('idanagrafica', $id_record) ->whereHas('tipo', fn ($query) => $query->where('co_tipidocumento.dir', '=', 'entrata') ->where('co_tipidocumento.reversed', '=', 1)) ->get(); $totale_fatture_vendita = $fatture_vendita->sum('totale_imponibile') - $note_credito->sum('totale_imponibile'); echo '