Skip to content

Commit 7cda1b9

Browse files
refactor: migliorie bulk aggiorna prezzi listini articoli
1 parent 6fad996 commit 7cda1b9

2 files changed

Lines changed: 35 additions & 12 deletions

File tree

modules/articoli/bulk.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@
3737

3838
switch (post('op')) {
3939
case 'change_purchase_price':
40+
$percentuale = post('percentuale');
4041
foreach ($id_records as $id) {
4142
$articolo = Articolo::find($id);
42-
$percentuale = post('percentuale');
43-
44-
$new_prezzo_acquisto = $articolo->prezzo_acquisto + ($articolo->prezzo_acquisto * $percentuale / 100);
43+
$new_prezzo_acquisto = $articolo->prezzo_acquisto - ($articolo->prezzo_acquisto * $percentuale / 100);
4544
$articolo->prezzo_acquisto = $new_prezzo_acquisto;
4645
$articolo->save();
4746

4847
if (!empty($articolo->id_fornitore)) {
4948
$prezzo_predefinito = DettaglioPrezzo::dettaglioPredefinito($articolo->id, $articolo->id_fornitore, 'uscita')->first();
49+
$new_prezzo_acquisto = $new_prezzo_acquisto * 100 / (100 - $prezzo_predefinito->sconto_percentuale);
5050
$prezzo_predefinito->setPrezzoUnitario($new_prezzo_acquisto);
5151
$prezzo_predefinito->save();
5252
}
@@ -572,7 +572,7 @@
572572
'text' => '<span><i class="fa fa-refresh"></i> '.tr('Aggiorna prezzo di acquisto').'</span>',
573573
'data' => [
574574
'title' => tr('Aggiornare il prezzo di acquisto per gli articoli selezionati?'),
575-
'msg' => tr('Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.').'<br><br>{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}',
575+
'msg' => tr('Per indicare un rincaro inserire la percentuale con il segno meno, al contrario per uno sconto inserire la percentuale senza segno.').'<br><br>{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}',
576576
'button' => tr('Procedi'),
577577
'class' => 'btn btn-lg btn-warning',
578578
'blank' => false,

modules/listini/bulk.php

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,35 @@
9292
break;
9393

9494
case 'change_prezzo':
95-
foreach ($id_records as $id) {
96-
$listino = DettaglioPrezzo::find($id);
97-
98-
$prezzo_unitario_new = $listino->prezzo_unitario + ($listino->prezzo_unitario * post('percentuale') / 100);
95+
$applica_sconto_prezzo = post('applica_sconto_prezzo', false);
96+
$percentuale = post('percentuale');
9997

100-
$listino->setPrezzoUnitario($prezzo_unitario_new);
101-
$listino->save();
98+
foreach ($id_records as $id) {
99+
$dettaglio = DettaglioPrezzo::find($id);
100+
101+
if ($applica_sconto_prezzo) {
102+
// Applica lo sconto direttamente al prezzo e azzera lo sconto percentuale
103+
$prezzo_unitario_new = $dettaglio->prezzo_unitario - ($dettaglio->prezzo_unitario * $percentuale / 100);
104+
$dettaglio->setPrezzoUnitario($prezzo_unitario_new);
105+
$dettaglio->sconto_percentuale = 0;
106+
} else {
107+
// Imposta lo sconto percentuale
108+
$dettaglio->sconto_percentuale = $percentuale;
109+
}
110+
111+
$dettaglio->save();
112+
113+
// Se il listino è il fornitore predefinito dell'articolo, aggiorna il prezzo di acquisto
114+
$articolo = Articolo::find($dettaglio->id_articolo);
115+
if ($articolo->id_fornitore == $dettaglio->id_anagrafica && $dettaglio->dir == 'uscita') {
116+
if ($applica_sconto_prezzo) {
117+
$prezzo_acquisto_calcolato = $prezzo_unitario_new;
118+
} else {
119+
$prezzo_acquisto_calcolato = $dettaglio->prezzo_unitario - ($dettaglio->prezzo_unitario * $percentuale / 100);
120+
}
121+
$articolo->prezzo_acquisto = $prezzo_acquisto_calcolato;
122+
$articolo->save();
123+
}
102124
}
103125

104126
flash()->info(tr('Listini aggiornati!'));
@@ -134,8 +156,9 @@
134156
$operations['change_prezzo'] = [
135157
'text' => '<span><i class="fa fa-refresh"></i> '.tr('Aggiorna prezzo unitario').'</span>',
136158
'data' => [
137-
'title' => tr('Aggiornare il prezzo unitario per i listini selezionati?'),
138-
'msg' => tr('Per indicare uno sconto inserire la percentuale con il segno meno, al contrario per un rincaro inserire la percentuale senza segno.').'<br><br>{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}',
159+
'title' => tr('Aggiornare lo sconto percentuale per i listini selezionati?'),
160+
'msg' => tr('Per indicare un rincaro inserire la percentuale con il segno meno, al contrario per uno sconto inserire la percentuale senza segno.').'<br><br>{[ "type": "number", "label": "'.tr('Percentuale sconto/magg.').'", "name": "percentuale", "required": 1, "icon-after": "%" ]}
161+
{[ "type": "checkbox", "label": "'.tr('Applica sconto direttamente al prezzo').'", "name": "applica_sconto_prezzo", "help": "'.tr('Se selezionato, lo sconto viene applicato direttamente al prezzo e lo sconto percentuale viene azzerato.').'" ]}',
139162
'button' => tr('Procedi'),
140163
'class' => 'btn btn-lg btn-warning',
141164
'blank' => false,

0 commit comments

Comments
 (0)