diff --git a/modules/contratti/plugins/contratti.consuntivo.php b/modules/contratti/plugins/contratti.consuntivo.php index 59552660b..ac96acd97 100755 --- a/modules/contratti/plugins/contratti.consuntivo.php +++ b/modules/contratti/plugins/contratti.consuntivo.php @@ -156,9 +156,15 @@ if (!empty($interventi)) { '.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; + // Raggruppamento per articolo con lo stesso prezzo + $ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta; + $costo = $articolo->spesa / $articolo->qta; + $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->descrizione; + + $materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id; + $materiali_art[$descrizione][$ricavo][$costo]['qta'] += $articolo->qta; + $materiali_art[$descrizione][$ricavo][$costo]['costo'] += $articolo->spesa; + $materiali_art[$descrizione][$ricavo][$costo]['ricavo'] += $articolo->imponibile - $articolo->sconto; } echo ' @@ -189,6 +195,11 @@ if (!empty($interventi)) { '.moneyFormat($riga->spesa).' '.moneyFormat($riga->imponibile).$sconto.' '; + + // Raggruppamento per riga + $materiali_righe[$riga->descrizione]['qta'] += $riga->qta; + $materiali_righe[$riga->descrizione]['costo'] += $riga->spesa; + $materiali_righe[$riga->descrizione]['ricavo'] += $riga->imponibile - $riga->sconto; } echo ' @@ -398,17 +409,37 @@ if (empty($totale_ore_contratto)) { + '; - ksort($materiali); - foreach ($materiali as $key => $materiale){ + ksort($materiali_art); + foreach ($materiali_art as $key => $materiali_array1){ + foreach ($materiali_array1 as $materiali_array2){ + foreach ($materiali_array2 as $materiale){ + $margine = $materiale['ricavo'] - $materiale['costo']; + $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100; + echo ' + + + + + + + '; + } + } + } + + ksort($materiali_righe); + foreach ($materiali_righe as $key => $materiale){ $margine = $materiale['ricavo'] - $materiale['costo']; $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100; echo ' + diff --git a/modules/ordini/plugins/ordini.consuntivo.php b/modules/ordini/plugins/ordini.consuntivo.php index c3bec70c6..d0d4b9ac4 100644 --- a/modules/ordini/plugins/ordini.consuntivo.php +++ b/modules/ordini/plugins/ordini.consuntivo.php @@ -153,9 +153,15 @@ 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; + // Raggruppamento per articolo con lo stesso prezzo + $ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta; + $costo = $articolo->spesa / $articolo->qta; + $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->descrizione; + + $materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id; + $materiali_art[$descrizione][$ricavo][$costo]['qta'] += $articolo->qta; + $materiali_art[$descrizione][$ricavo][$costo]['costo'] += $articolo->spesa; + $materiali_art[$descrizione][$ricavo][$costo]['ricavo'] += $articolo->imponibile - $articolo->sconto; } echo ' @@ -186,6 +192,11 @@ if (!empty($interventi)) { '; + + // Raggruppamento per riga + $materiali_righe[$riga->descrizione]['qta'] += $riga->qta; + $materiali_righe[$riga->descrizione]['costo'] += $riga->spesa; + $materiali_righe[$riga->descrizione]['ricavo'] += $riga->imponibile - $riga->sconto; } echo ' @@ -340,20 +351,40 @@ if ($diff > 0) {
-
'.tr('Materiale').''.tr('Qtà').' '.tr('Costo').' '.tr('Ricavo').' '.tr('Margine').'
'.Modules::link('Articoli', $materiale['id'], $key).''.$materiale['qta'].''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
'.$key.''.$materiale['qta'].' '.Translator::numberToLocale($materiale['costo']).' € '.Translator::numberToLocale($materiale['ricavo']).' € '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.moneyFormat($articolo->imponibile).$sconto.'
'.moneyFormat($riga->spesa).' '.moneyFormat($riga->imponibile).$sconto.'
+
+ '; - ksort($materiali); - foreach ($materiali as $key => $materiale){ + ksort($materiali_art); + foreach ($materiali_art as $key => $materiali_array1){ + foreach ($materiali_array1 as $materiali_array2){ + foreach ($materiali_array2 as $materiale){ + $margine = $materiale['ricavo'] - $materiale['costo']; + $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100; + echo ' + + + + + + + '; + } + } + } + + ksort($materiali_righe); + foreach ($materiali_righe as $key => $materiale){ $margine = $materiale['ricavo'] - $materiale['costo']; $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100; echo ' + diff --git a/modules/preventivi/plugins/preventivi.consuntivo.php b/modules/preventivi/plugins/preventivi.consuntivo.php index f980e390e..3a0454f76 100755 --- a/modules/preventivi/plugins/preventivi.consuntivo.php +++ b/modules/preventivi/plugins/preventivi.consuntivo.php @@ -153,9 +153,15 @@ 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; + // Raggruppamento per articolo con lo stesso prezzo + $ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta; + $costo = $articolo->spesa / $articolo->qta; + $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->descrizione; + + $materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id; + $materiali_art[$descrizione][$ricavo][$costo]['qta'] += $articolo->qta; + $materiali_art[$descrizione][$ricavo][$costo]['costo'] += $articolo->spesa; + $materiali_art[$descrizione][$ricavo][$costo]['ricavo'] += $articolo->imponibile - $articolo->sconto; } echo ' @@ -186,6 +192,11 @@ if (!empty($interventi)) { '; + + // Raggruppamento per riga + $materiali_righe[$riga->descrizione]['qta'] += $riga->qta; + $materiali_righe[$riga->descrizione]['costo'] += $riga->spesa; + $materiali_righe[$riga->descrizione]['ricavo'] += $riga->imponibile - $riga->sconto; } echo ' @@ -343,17 +354,37 @@ if ($diff > 0) {
'.tr('Materiale').''.tr('Qtà').' '.tr('Costo').' '.tr('Ricavo').' '.tr('Margine').'
'.Modules::link('Articoli', $materiale['id'], $key).''.$materiale['qta'].''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
'.$key.''.$materiale['qta'].' '.Translator::numberToLocale($materiale['costo']).' € '.Translator::numberToLocale($materiale['ricavo']).' € '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)'.moneyFormat($articolo->imponibile).$sconto.'
'.moneyFormat($riga->spesa).' '.moneyFormat($riga->imponibile).$sconto.'
+ '; - ksort($materiali); - foreach ($materiali as $key => $materiale){ + ksort($materiali_art); + foreach ($materiali_art as $key => $materiali_array1){ + foreach ($materiali_array1 as $materiali_array2){ + foreach ($materiali_array2 as $materiale){ + $margine = $materiale['ricavo'] - $materiale['costo']; + $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100; + echo ' + + + + + + + '; + } + } + } + + ksort($materiali_righe); + foreach ($materiali_righe as $key => $materiale){ $margine = $materiale['ricavo'] - $materiale['costo']; $margine_prc = ($materiale['ricavo'] && $materiale['costo']) ? (int)((($materiale['ricavo'] / $materiale['costo']) - 1) * 100) : 100; echo ' +
'.tr('Materiale').''.tr('Qtà').' '.tr('Costo').' '.tr('Ricavo').' '.tr('Margine').'
'.Modules::link('Articoli', $materiale['id'], $key).''.$materiale['qta'].''.Translator::numberToLocale($materiale['costo']).' €'.Translator::numberToLocale($materiale['ricavo']).' €'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)
'.$key.''.$materiale['qta'].' '.Translator::numberToLocale($materiale['costo']).' € '.Translator::numberToLocale($materiale['ricavo']).' € '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%)