- ';
+ | ';
// Lettura sessioni di lavoro
$sessioni = $intervento->sessioni;
@@ -84,15 +79,15 @@ if (!empty($interventi)) {
'.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.').' |
+ '.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.').' |
';
foreach ($sessioni as $sessione) {
@@ -113,6 +108,23 @@ if (!empty($interventi)) {
'.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' |
'.moneyFormat($sessione->prezzo_diritto_chiamata).' |
';
+
+ // Raggruppamento per tipologia descrizione
+ $tipologie[$sessione->tipo->descrizione]['ore'] += $sessione->ore;
+ $tipologie[$sessione->tipo->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $tipologie[$sessione->tipo->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
+
+ // Raggruppamento per tecnico
+ $tecnici[$sessione->anagrafica->ragione_sociale]['ore'] += $sessione->ore;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['km'] += $sessione->km;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
+
+ // Raggruppamento per stato intervento
+ $stati_intervento[$intervento->stato->descrizione]['colore'] = $intervento->stato->colore;
+ $stati_intervento[$intervento->stato->descrizione]['ore'] += $sessione->ore;
+ $stati_intervento[$intervento->stato->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $stati_intervento[$intervento->stato->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
}
echo '
@@ -143,6 +155,10 @@ if (!empty($interventi)) {
'.moneyFormat($articolo->spesa).' |
'.moneyFormat($articolo->imponibile).$sconto.' |
';
+
+ // Raggruppamento per categoria articolo
+ $materiali[$articolo->articolo->categoria->nome]['costo'] += $articolo->spesa;
+ $materiali[$articolo->articolo->categoria->nome]['ricavo'] += $articolo->imponibile - $articolo->sconto;
}
echo '
@@ -213,47 +229,11 @@ if (!empty($interventi)) {
'.moneyFormat($totale_costo).'
';
- echo '
-
- '.moneyFormat($totale_addebito).'
- | ';
-
echo '
'.moneyFormat($totale).'
|
- ';
-
- $stati = $interventi->groupBy('idstatointervento');
- if (count($stati) > 0) {
- // Totali per stato
- echo '
-
-
- '.tr('Totale interventi per stato', [], ['upper' => true]).'
- |
- ';
-
- foreach ($stati as $interventi_collegati) {
- $stato = $interventi_collegati->first()->stato;
- $totale_stato = sum(array_column($interventi_collegati->toArray(), 'totale_imponibile'));
-
- echo '
-
- |
-
-
- '.$stato->descrizione.':
- |
-
-
- '.moneyFormat($totale_stato).'
- |
- ';
- }
- }
-
- echo '
+
';
}
@@ -330,8 +310,114 @@ if (empty($totale_ore_contratto)) {
'.tr('Per monitorare il consumo ore, inserisci almeno una riga con unità di misura "ore"').'.
';
}
+ echo '
+
+
+
+
+ '.tr('Tipologia').' |
+ '.tr('Ore').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($tipologie);
+ foreach ($tipologie as $key => $tipologia){
+ $margine = $tipologia['ricavo'] - $tipologia['costo'];
+ $margine_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int)((($tipologia['ricavo'] / $tipologia['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($tipologia['ore']).' |
+ '.Translator::numberToLocale($tipologia['costo']).' € |
+ '.Translator::numberToLocale($tipologia['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
-echo '
+
+
+
+ '.tr('Tecnici').' |
+ '.tr('Ore').' |
+ '.tr('km').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($tecnici);
+ foreach ($tecnici as $key => $tecnico){
+ $margine = $tecnico['ricavo'] - $tecnico['costo'];
+ $margine_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int)((($tecnico['ricavo'] / $tecnico['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($tecnico['ore']).' |
+ '.(int)$tecnico['km'].' |
+ '.Translator::numberToLocale($tecnico['costo']).' € |
+ '.Translator::numberToLocale($tecnico['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+
+
+ '.tr('Stato').' |
+ '.tr('Ore').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($stati_intervento);
+ foreach ($stati_intervento as $key => $stato){
+ $margine = $stato['ricavo'] - $stato['costo'];
+ $margine_prc = ($stato['ricavo'] && $stato['costo']) ? (int)((($stato['ricavo'] / $stato['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($stato['ore']).' |
+ '.Translator::numberToLocale($stato['costo']).' € |
+ '.Translator::numberToLocale($stato['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+ '.tr('Materiale').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($materiali);
+ foreach ($materiali as $key => $materiale){
+ $margine = $materiale['ricavo'] - $materiale['costo'];
+ $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($materiale['costo']).' € |
+ '.Translator::numberToLocale($materiale['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
';
/*
diff --git a/modules/ordini/plugins/ordini.consuntivo.php b/modules/ordini/plugins/ordini.consuntivo.php
index ce8a259cf..c3bec70c6 100644
--- a/modules/ordini/plugins/ordini.consuntivo.php
+++ b/modules/ordini/plugins/ordini.consuntivo.php
@@ -21,8 +21,6 @@ include_once __DIR__.'/../../../core.php';
use Modules\Interventi\Intervento;
-// CONSUNTIVO
-
// Tabella con riepilogo interventi
$interventi = Intervento::where('id_ordine', $id_record)->get();
if (!empty($interventi)) {
@@ -30,11 +28,10 @@ if (!empty($interventi)) {
'.tr('Attività').' |
- '.tr('Ore').' |
- '.tr('Km').' |
- '.tr('Costo').' |
- '.tr('Addebito').' |
- '.tr('Tot. scontato').' |
+ '.tr('Ore').' |
+ '.tr('Km').' |
+ '.tr('Costo').' |
+ '.tr('Tot. scontato').' |
';
// Tabella con i dati
@@ -62,10 +59,6 @@ if (!empty($interventi)) {
'.moneyFormat($intervento->spesa).'
-
- '.moneyFormat($intervento->imponibile).'
- |
-
'.moneyFormat($intervento->totale_imponibile).'
|
@@ -74,7 +67,7 @@ if (!empty($interventi)) {
// Riga con dettagli
echo '
- ';
+ | ';
// Lettura sessioni di lavoro
$sessioni = $intervento->sessioni;
@@ -83,15 +76,15 @@ if (!empty($interventi)) {
'.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.').' |
+ '.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.').' |
';
foreach ($sessioni as $sessione) {
@@ -112,6 +105,23 @@ if (!empty($interventi)) {
'.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' |
'.moneyFormat($sessione->prezzo_diritto_chiamata).' |
';
+
+ // Raggruppamento per tipologia descrizione
+ $tipologie[$sessione->tipo->descrizione]['ore'] += $sessione->ore;
+ $tipologie[$sessione->tipo->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $tipologie[$sessione->tipo->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
+
+ // Raggruppamento per tecnico
+ $tecnici[$sessione->anagrafica->ragione_sociale]['ore'] += $sessione->ore;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['km'] += $sessione->km;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
+
+ // Raggruppamento per stato intervento
+ $stati_intervento[$intervento->stato->descrizione]['colore'] = $intervento->stato->colore;
+ $stati_intervento[$intervento->stato->descrizione]['ore'] += $sessione->ore;
+ $stati_intervento[$intervento->stato->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $stati_intervento[$intervento->stato->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
}
echo '
@@ -142,6 +152,10 @@ if (!empty($interventi)) {
'.moneyFormat($articolo->spesa).' |
'.moneyFormat($articolo->imponibile).$sconto.' |
';
+
+ // Raggruppamento per categoria articolo
+ $materiali[$articolo->articolo->categoria->nome]['costo'] += $articolo->spesa;
+ $materiali[$articolo->articolo->categoria->nome]['ricavo'] += $articolo->imponibile - $articolo->sconto;
}
echo '
@@ -184,11 +198,11 @@ if (!empty($interventi)) {
}
$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'));
+ $totale_ore = sum(array_column($array_interventi, 'ore_totali'));
// Totali
echo '
@@ -212,47 +226,11 @@ if (!empty($interventi)) {
'.moneyFormat($totale_costo).'
';
- echo '
-
- '.moneyFormat($totale_addebito).'
- | ';
-
echo '
'.moneyFormat($totale).'
|
- ';
-
- $stati = $interventi->groupBy('idstatointervento');
- if (count($stati) > 0) {
- // Totali per stato
- echo '
-
-
- '.tr('Totale interventi per stato', [], ['upper' => true]).'
- |
- ';
-
- foreach ($stati as $interventi_collegati) {
- $stato = $interventi_collegati->first()->stato;
- $totale_stato = sum(array_column($interventi_collegati->toArray(), 'totale_imponibile'));
-
- echo '
-
- |
-
-
- '.$stato->descrizione.':
- |
-
-
- '.moneyFormat($totale_stato).'
- |
- ';
- }
- }
-
- echo '
+
';
}
@@ -277,6 +255,114 @@ if ($diff > 0) {
echo '
+
+
+
+
+
+ '.tr('Tipologia').' |
+ '.tr('Ore').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($tipologie);
+ foreach ($tipologie as $key => $tipologia){
+ $margine = $tipologia['ricavo'] - $tipologia['costo'];
+ $margine_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int)((($tipologia['ricavo'] / $tipologia['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($tipologia['ore']).' |
+ '.Translator::numberToLocale($tipologia['costo']).' € |
+ '.Translator::numberToLocale($tipologia['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+ '.tr('Tecnici').' |
+ '.tr('Ore').' |
+ '.tr('km').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($tecnici);
+ foreach ($tecnici as $key => $tecnico){
+ $margine = $tecnico['ricavo'] - $tecnico['costo'];
+ $margine_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int)((($tecnico['ricavo'] / $tecnico['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($tecnico['ore']).' |
+ '.(int)$tecnico['km'].' |
+ '.Translator::numberToLocale($tecnico['costo']).' € |
+ '.Translator::numberToLocale($tecnico['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+
+
+ '.tr('Stato').' |
+ '.tr('Ore').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($stati_intervento);
+ foreach ($stati_intervento as $key => $stato){
+ $margine = $stato['ricavo'] - $stato['costo'];
+ $margine_prc = ($stato['ricavo'] && $stato['costo']) ? (int)((($stato['ricavo'] / $stato['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($stato['ore']).' |
+ '.Translator::numberToLocale($stato['costo']).' € |
+ '.Translator::numberToLocale($stato['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+ '.tr('Materiale').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($materiali);
+ foreach ($materiali as $key => $materiale){
+ $margine = $materiale['ricavo'] - $materiale['costo'];
+ $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($materiale['costo']).' € |
+ '.Translator::numberToLocale($materiale['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
';
/*
diff --git a/modules/preventivi/plugins/preventivi.consuntivo.php b/modules/preventivi/plugins/preventivi.consuntivo.php
index af70ab127..f980e390e 100755
--- a/modules/preventivi/plugins/preventivi.consuntivo.php
+++ b/modules/preventivi/plugins/preventivi.consuntivo.php
@@ -21,8 +21,6 @@ include_once __DIR__.'/../../../core.php';
use Modules\Interventi\Intervento;
-// CONSUNTIVO
-
// Tabella con riepilogo interventi
$interventi = Intervento::where('id_preventivo', $id_record)->get();
if (!empty($interventi)) {
@@ -30,11 +28,10 @@ if (!empty($interventi)) {
'.tr('Attività').' |
- '.tr('Ore').' |
- '.tr('Km').' |
- '.tr('Costo').' |
- '.tr('Addebito').' |
- '.tr('Tot. scontato').' |
+ '.tr('Ore').' |
+ '.tr('Km').' |
+ '.tr('Costo').' |
+ '.tr('Tot. scontato').' |
';
// Tabella con i dati
@@ -62,10 +59,6 @@ if (!empty($interventi)) {
'.moneyFormat($intervento->spesa).'
-
- '.moneyFormat($intervento->imponibile).'
- |
-
'.moneyFormat($intervento->totale_imponibile).'
|
@@ -74,7 +67,7 @@ if (!empty($interventi)) {
// Riga con dettagli
echo '
- ';
+ | ';
// Lettura sessioni di lavoro
$sessioni = $intervento->sessioni;
@@ -83,15 +76,15 @@ if (!empty($interventi)) {
'.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.').' |
+ '.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.').' |
';
foreach ($sessioni as $sessione) {
@@ -112,6 +105,23 @@ if (!empty($interventi)) {
'.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' |
'.moneyFormat($sessione->prezzo_diritto_chiamata).' |
';
+
+ // Raggruppamento per tipologia descrizione
+ $tipologie[$sessione->tipo->descrizione]['ore'] += $sessione->ore;
+ $tipologie[$sessione->tipo->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $tipologie[$sessione->tipo->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
+
+ // Raggruppamento per tecnico
+ $tecnici[$sessione->anagrafica->ragione_sociale]['ore'] += $sessione->ore;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['km'] += $sessione->km;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $tecnici[$sessione->anagrafica->ragione_sociale]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
+
+ // Raggruppamento per stato intervento
+ $stati_intervento[$intervento->stato->descrizione]['colore'] = $intervento->stato->colore;
+ $stati_intervento[$intervento->stato->descrizione]['ore'] += $sessione->ore;
+ $stati_intervento[$intervento->stato->descrizione]['costo'] += $sessione->costo_manodopera + $sessione->costo_viaggio + $sessione->costo_diritto_chiamata;
+ $stati_intervento[$intervento->stato->descrizione]['ricavo'] += $sessione->prezzo_manodopera - $sessione->sconto_totale_manodopera + $sessione->prezzo_viaggio - $sessione->sconto_totale_viaggio + $sessione->prezzo_diritto_chiamata - $sessione->sconto_totale_viaggio;
}
echo '
@@ -142,6 +152,10 @@ if (!empty($interventi)) {
'.moneyFormat($articolo->spesa).' |
'.moneyFormat($articolo->imponibile).$sconto.' |
';
+
+ // Raggruppamento per categoria articolo
+ $materiali[$articolo->articolo->categoria->nome]['costo'] += $articolo->spesa;
+ $materiali[$articolo->articolo->categoria->nome]['ricavo'] += $articolo->imponibile - $articolo->sconto;
}
echo '
@@ -184,11 +198,11 @@ if (!empty($interventi)) {
}
$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'));
+ $totale_ore = sum(array_column($array_interventi, 'ore_totali'));
// Totali
echo '
@@ -212,47 +226,11 @@ if (!empty($interventi)) {
'.moneyFormat($totale_costo).'
';
- echo '
-
- '.moneyFormat($totale_addebito).'
- | ';
-
echo '
'.moneyFormat($totale).'
|
- ';
-
- $stati = $interventi->groupBy('idstatointervento');
- if (count($stati) > 0) {
- // Totali per stato
- echo '
-
-
- '.tr('Totale interventi per stato', [], ['upper' => true]).'
- |
- ';
-
- foreach ($stati as $interventi_collegati) {
- $stato = $interventi_collegati->first()->stato;
- $totale_stato = sum(array_column($interventi_collegati->toArray(), 'totale_imponibile'));
-
- echo '
-
- |
-
-
- '.$stato->descrizione.':
- |
-
-
- '.moneyFormat($totale_stato).'
- |
- ';
- }
- }
-
- echo '
+
';
}
@@ -277,6 +255,114 @@ if ($diff > 0) {
echo '
+
+
+
+
+
+ '.tr('Tipologia').' |
+ '.tr('Ore').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($tipologie);
+ foreach ($tipologie as $key => $tipologia){
+ $margine = $tipologia['ricavo'] - $tipologia['costo'];
+ $margine_prc = ($tipologia['ricavo'] && $tipologia['costo']) ? (int)((($tipologia['ricavo'] / $tipologia['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($tipologia['ore']).' |
+ '.Translator::numberToLocale($tipologia['costo']).' € |
+ '.Translator::numberToLocale($tipologia['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+ '.tr('Tecnici').' |
+ '.tr('Ore').' |
+ '.tr('km').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($tecnici);
+ foreach ($tecnici as $key => $tecnico){
+ $margine = $tecnico['ricavo'] - $tecnico['costo'];
+ $margine_prc = ($tecnico['ricavo'] && $tecnico['costo']) ? (int)((($tecnico['ricavo'] / $tecnico['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($tecnico['ore']).' |
+ '.(int)$tecnico['km'].' |
+ '.Translator::numberToLocale($tecnico['costo']).' € |
+ '.Translator::numberToLocale($tecnico['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+
+
+ '.tr('Stato').' |
+ '.tr('Ore').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($stati_intervento);
+ foreach ($stati_intervento as $key => $stato){
+ $margine = $stato['ricavo'] - $stato['costo'];
+ $margine_prc = ($stato['ricavo'] && $stato['costo']) ? (int)((($stato['ricavo'] / $stato['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($stato['ore']).' |
+ '.Translator::numberToLocale($stato['costo']).' € |
+ '.Translator::numberToLocale($stato['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
+
+
+
+ '.tr('Materiale').' |
+ '.tr('Costo').' |
+ '.tr('Ricavo').' |
+ '.tr('Margine').' |
+ ';
+ ksort($materiali);
+ foreach ($materiali as $key => $materiale){
+ $margine = $materiale['ricavo'] - $materiale['costo'];
+ $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100;
+ echo '
+
+ '.$key.' |
+ '.Translator::numberToLocale($materiale['costo']).' € |
+ '.Translator::numberToLocale($materiale['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+ ';
+ }
+ echo '
+
+
+
';
/*
| | |