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)) {
'.tr('Materiale').' |
+ '.tr('Qtà').' |
'.tr('Costo').' |
'.tr('Ricavo').' |
'.tr('Margine').' |
';
- 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 '
+
+ '.Modules::link('Articoli', $materiale['id'], $key).' |
+ '.$materiale['qta'].' |
+ '.Translator::numberToLocale($materiale['costo']).' € |
+ '.Translator::numberToLocale($materiale['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+
';
+ }
+ }
+ }
+
+ 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 '
'.$key.' |
+ '.$materiale['qta'].' |
'.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 c3bec70c6..d0d4b9ac4 100644
--- a/modules/ordini/plugins/ordini.consuntivo.php
+++ b/modules/ordini/plugins/ordini.consuntivo.php
@@ -153,9 +153,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 '
@@ -186,6 +192,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 '
@@ -340,20 +351,40 @@ if ($diff > 0) {
-
+
'.tr('Materiale').' |
+ '.tr('Qtà').' |
'.tr('Costo').' |
'.tr('Ricavo').' |
'.tr('Margine').' |
';
- 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 '
+
+ '.Modules::link('Articoli', $materiale['id'], $key).' |
+ '.$materiale['qta'].' |
+ '.Translator::numberToLocale($materiale['costo']).' € |
+ '.Translator::numberToLocale($materiale['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+
';
+ }
+ }
+ }
+
+ 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 '
'.$key.' |
+ '.$materiale['qta'].' |
'.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 f980e390e..3a0454f76 100755
--- a/modules/preventivi/plugins/preventivi.consuntivo.php
+++ b/modules/preventivi/plugins/preventivi.consuntivo.php
@@ -153,9 +153,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 '
@@ -186,6 +192,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 '
@@ -343,17 +354,37 @@ if ($diff > 0) {
'.tr('Materiale').' |
+ '.tr('Qtà').' |
'.tr('Costo').' |
'.tr('Ricavo').' |
'.tr('Margine').' |
';
- 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 '
+
+ '.Modules::link('Articoli', $materiale['id'], $key).' |
+ '.$materiale['qta'].' |
+ '.Translator::numberToLocale($materiale['costo']).' € |
+ '.Translator::numberToLocale($materiale['ricavo']).' € |
+ '.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |
+
';
+ }
+ }
+ }
+
+ 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 '
'.$key.' |
+ '.$materiale['qta'].' |
'.Translator::numberToLocale($materiale['costo']).' € |
'.Translator::numberToLocale($materiale['ricavo']).' € |
'.Translator::numberToLocale($margine).' € ('.$margine_prc.'%) |