. */ include_once __DIR__.'/../../core.php'; 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'); $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', function ($query) { return $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', function ($query) { return $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 '

'.tr('Dal _START_ al _END_', [ '_START_' => dateFormat($start), '_END_' => dateFormat($end), ]).' - '.tr('Periodo _NUM_', [ '_NUM_' => $calendar_id, ]).'

'.tr('Preventivi').' '.($preventivi->count() > 0 ? ''.tr('Visualizza').' ' : '').'
'.$preventivi->count().'
'.moneyFormat($totale_preventivi).'
'.tr('Contratti').' '.($contratti->count() > 0 ? ''.tr('Visualizza').' ' : '').'
'.$contratti->count().'
'.moneyFormat($totale_contratti).'
'.tr('Ordini cliente').' '.($ordini_cliente->count() > 0 ? ''.tr('Visualizza').' ' : '').'
'.$ordini_cliente->count().'
'.moneyFormat($totale_ordini_cliente).'
'.tr('Attività').''; if ($anagrafica->isTipo('Cliente')) { echo ' '.($interventi->count() > 0 ? ''.tr('Visualizza').' ' : '').''; } else { echo ' '.($interventi->count() > 0 ? ''.tr('Visualizza').' ' : '').''; } echo '
'.$interventi->count().'
'.moneyFormat($totale_interventi).'
'.tr('Ddt in uscita').' '.($ddt_uscita->count() > 0 ? ''.tr('Visualizza').' ' : '').'
'.$ddt_uscita->count().'
'.moneyFormat($totale_ddt_uscita).'
'.tr('Fatture').' '.($fatture_vendita->count() + $note_credito->count() > 0 ? ''.tr('Visualizza').' ' : '').'
'.($fatture_vendita->count() + $note_credito->count()).'
'.moneyFormat($totale_fatture_vendita).'
'.tr('Ore lavorate').''; if ($anagrafica->isTipo('Cliente')) { echo ' '.($sessioni->count() > 0 ? ''.tr('Visualizza').' ' : '').''; } else { echo ' '.($sessioni->count() > 0 ? ''.tr('Visualizza').' ' : '').''; } echo '
'.numberFormat($totale_ore_lavorate, 0).'
';