diff --git a/modules/contratti/plugins/contratti.consuntivo.php b/modules/contratti/plugins/contratti.consuntivo.php index ef8a5b795..59552660b 100755 --- a/modules/contratti/plugins/contratti.consuntivo.php +++ b/modules/contratti/plugins/contratti.consuntivo.php @@ -29,11 +29,10 @@ if (!empty($interventi)) { - - - - - + + + + '; // Tabella con i dati @@ -63,10 +62,6 @@ if (!empty($interventi)) { '.moneyFormat($intervento->spesa).' - - @@ -75,7 +70,7 @@ if (!empty($interventi)) { // Riga con dettagli echo ' -
'.tr('Attività').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Addebito').''.tr('Tot. scontato').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Tot. scontato').'
- '.moneyFormat($intervento->imponibile).' - '.moneyFormat($intervento->totale_imponibile).'
'; + '; // Lettura sessioni di lavoro $sessioni = $intervento->sessioni; @@ -84,15 +79,15 @@ if (!empty($interventi)) { - - - - - - - - - + + + + + + + + + '; foreach ($sessioni as $sessione) { @@ -113,6 +108,23 @@ if (!empty($interventi)) { '; + + // 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)) { '; + + // 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 ' - '; - 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('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.').'
'.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' '.moneyFormat($sessione->prezzo_diritto_chiamata).'
'.moneyFormat($articolo->spesa).' '.moneyFormat($articolo->imponibile).$sconto.'
- '.moneyFormat($totale_addebito).' - '.moneyFormat($totale).'
-
'.tr('Totale interventi per stato', [], ['upper' => true]).' -
- '.$stato->descrizione.': - - '.moneyFormat($totale_stato).' -
'; } @@ -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 ' +
+
+ + + + + + + + '; + 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 ' + + + + + + + '; + } + echo ' +
'.tr('Tipologia').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($tipologia['ore']).''.Translator::numberToLocale($tipologia['costo']).' €'.Translator::numberToLocale($tipologia['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
-echo ' +
+ + + + + + + + + '; + 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 ' + + + + + + + + '; + } + echo ' +
'.tr('Tecnici').''.tr('Ore').''.tr('km').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($tecnico['ore']).''.(int)$tecnico['km'].''.Translator::numberToLocale($tecnico['costo']).' €'.Translator::numberToLocale($tecnico['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+
+ +
+
+ + + + + + + + '; + 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 ' + + + + + + + '; + } + echo ' +
'.tr('Stato').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.'
'.Translator::numberToLocale($stato['ore']).''.Translator::numberToLocale($stato['costo']).' €'.Translator::numberToLocale($stato['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+ +
+ + + + + + + '; + 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 ' + + + + + + '; + } + echo ' +
'.tr('Materiale').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+
'; /* 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)) { - - - - - + + + + '; // Tabella con i dati @@ -62,10 +59,6 @@ if (!empty($interventi)) { '.moneyFormat($intervento->spesa).' - - @@ -74,7 +67,7 @@ if (!empty($interventi)) { // Riga con dettagli echo ' -
'.tr('Attività').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Addebito').''.tr('Tot. scontato').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Tot. scontato').'
- '.moneyFormat($intervento->imponibile).' - '.moneyFormat($intervento->totale_imponibile).'
'; + '; // Lettura sessioni di lavoro $sessioni = $intervento->sessioni; @@ -83,15 +76,15 @@ if (!empty($interventi)) { - - - - - - - - - + + + + + + + + + '; foreach ($sessioni as $sessione) { @@ -112,6 +105,23 @@ if (!empty($interventi)) { '; + + // 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)) { '; + + // 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 ' - '; - 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('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.').'
'.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' '.moneyFormat($sessione->prezzo_diritto_chiamata).'
'.moneyFormat($articolo->spesa).' '.moneyFormat($articolo->imponibile).$sconto.'
- '.moneyFormat($totale_addebito).' - '.moneyFormat($totale).'
-
'.tr('Totale interventi per stato', [], ['upper' => true]).' -
- '.$stato->descrizione.': - - '.moneyFormat($totale_stato).' -
'; } @@ -277,6 +255,114 @@ if ($diff > 0) { echo '

+ +
+
+ + + + + + + + '; + 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 ' + + + + + + + '; + } + echo ' +
'.tr('Tipologia').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($tipologia['ore']).''.Translator::numberToLocale($tipologia['costo']).' €'.Translator::numberToLocale($tipologia['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+ +
+ + + + + + + + + '; + 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 ' + + + + + + + + '; + } + echo ' +
'.tr('Tecnici').''.tr('Ore').''.tr('km').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($tecnico['ore']).''.(int)$tecnico['km'].''.Translator::numberToLocale($tecnico['costo']).' €'.Translator::numberToLocale($tecnico['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+
+ +
+
+ + + + + + + + '; + 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 ' + + + + + + + '; + } + echo ' +
'.tr('Stato').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.'
'.Translator::numberToLocale($stato['ore']).''.Translator::numberToLocale($stato['costo']).' €'.Translator::numberToLocale($stato['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+ +
+ + + + + + + '; + 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 ' + + + + + + '; + } + echo ' +
'.tr('Materiale').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+
'; /* 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)) { - - - - - + + + + '; // Tabella con i dati @@ -62,10 +59,6 @@ if (!empty($interventi)) { '.moneyFormat($intervento->spesa).' - - @@ -74,7 +67,7 @@ if (!empty($interventi)) { // Riga con dettagli echo ' -
'.tr('Attività').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Addebito').''.tr('Tot. scontato').''.tr('Ore').''.tr('Km').''.tr('Costo').''.tr('Tot. scontato').'
- '.moneyFormat($intervento->imponibile).' - '.moneyFormat($intervento->totale_imponibile).'
'; + '; // Lettura sessioni di lavoro $sessioni = $intervento->sessioni; @@ -83,15 +76,15 @@ if (!empty($interventi)) { - - - - - - - - - + + + + + + + + + '; foreach ($sessioni as $sessione) { @@ -112,6 +105,23 @@ if (!empty($interventi)) { '; + + // 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)) { '; + + // 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 ' - '; - 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('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.').'
'.moneyFormat($sessione->prezzo_viaggio).$sconto_km.' '.moneyFormat($sessione->prezzo_diritto_chiamata).'
'.moneyFormat($articolo->spesa).' '.moneyFormat($articolo->imponibile).$sconto.'
- '.moneyFormat($totale_addebito).' - '.moneyFormat($totale).'
-
'.tr('Totale interventi per stato', [], ['upper' => true]).' -
- '.$stato->descrizione.': - - '.moneyFormat($totale_stato).' -
'; } @@ -277,6 +255,114 @@ if ($diff > 0) { echo '

+ +
+
+ + + + + + + + '; + 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 ' + + + + + + + '; + } + echo ' +
'.tr('Tipologia').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($tipologia['ore']).''.Translator::numberToLocale($tipologia['costo']).' €'.Translator::numberToLocale($tipologia['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+ +
+ + + + + + + + + '; + 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 ' + + + + + + + + '; + } + echo ' +
'.tr('Tecnici').''.tr('Ore').''.tr('km').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($tecnico['ore']).''.(int)$tecnico['km'].''.Translator::numberToLocale($tecnico['costo']).' €'.Translator::numberToLocale($tecnico['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+
+ +
+
+ + + + + + + + '; + 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 ' + + + + + + + '; + } + echo ' +
'.tr('Stato').''.tr('Ore').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.'
'.Translator::numberToLocale($stato['ore']).''.Translator::numberToLocale($stato['costo']).' €'.Translator::numberToLocale($stato['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+ +
+ + + + + + + '; + 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 ' + + + + + + '; + } + echo ' +
'.tr('Materiale').''.tr('Costo').''.tr('Ricavo').''.tr('Margine').'
'.$key.''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
+
+
'; /*