From 1c3b993f576c8de859f4c410e5dda03a34c90ee6 Mon Sep 17 00:00:00 2001 From: MatteoPistorello Date: Fri, 28 May 2021 15:07:10 +0200 Subject: [PATCH] Settati prezzi di listino nella creazione dell'ordine fornitore --- modules/ordini/actions.php | 25 ++++++++++++++++--- .../dettagli_articolo/src/DettaglioPrezzo.php | 20 +++++++++++---- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index c60359850..9fa02a8d3 100755 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -28,6 +28,7 @@ use Modules\Ordini\Components\Sconto; use Modules\Ordini\Ordine; use Modules\Ordini\Tipo; use Modules\Preventivi\Preventivo; +use Plugins\DettagliArticolo\DettaglioPrezzo; $module = Modules::get($id_module); @@ -473,8 +474,16 @@ switch (post('op')) { // Impostazione al prezzo di acquisto per Articoli if ($copia->isArticolo()) { $articolo = $copia->articolo; - $fornitore = $articolo->dettaglioFornitore($anagrafica->id); // Informazioni del fornitore - $copia->setPrezzoUnitario($fornitore ? $fornitore->prezzo_acquisto : $articolo->prezzo_acquisto, $copia->aliquota->id); + + $fornitore = DettaglioPrezzo::dettagli($riga->idarticolo, $anagrafica->id, $dir, $qta)->first(); + if(empty($fornitore)){ + $fornitore = DettaglioPrezzo::dettaglioPredefinito($riga->idarticolo, $anagrafica->id, $dir)->first(); + } + + $prezzo_unitario = $fornitore->prezzo_unitario-($fornitore->prezzo_unitario*$fornitore->percentuale/100); + + $copia->setPrezzoUnitario($fornitore ? $prezzo_unitario : $articolo->prezzo_acquisto, $copia->aliquota->id); + $copia->setSconto($fornitore->sconto_percentuale ?: 0, 'PRC'); } $copia->save(); @@ -529,8 +538,16 @@ switch (post('op')) { // Impostazione al prezzo di acquisto per Articoli if ($copia->isArticolo()) { $articolo = $copia->articolo; - $fornitore = $articolo->dettaglioFornitore($anagrafica->id); // Informazioni del fornitore - $copia->setPrezzoUnitario($fornitore ? $fornitore->prezzo_acquisto : $articolo->prezzo_acquisto, $copia->aliquota->id); + + $fornitore = DettaglioPrezzo::dettagli($riga->idarticolo, $anagrafica->id, $dir, $qta)->first(); + if(empty($fornitore)){ + $fornitore = DettaglioPrezzo::dettaglioPredefinito($riga->idarticolo, $anagrafica->id, $dir)->first(); + } + + $prezzo_unitario = $fornitore->prezzo_unitario-($fornitore->prezzo_unitario*$fornitore->percentuale/100); + + $copia->setPrezzoUnitario($fornitore ? $prezzo_unitario : $articolo->prezzo_acquisto, $copia->aliquota->id); + $copia->setSconto($fornitore->sconto_percentuale ?: 0, 'PRC'); } $copia->save(); diff --git a/plugins/dettagli_articolo/src/DettaglioPrezzo.php b/plugins/dettagli_articolo/src/DettaglioPrezzo.php index 235b5db85..54e55e1ff 100644 --- a/plugins/dettagli_articolo/src/DettaglioPrezzo.php +++ b/plugins/dettagli_articolo/src/DettaglioPrezzo.php @@ -96,12 +96,22 @@ class DettaglioPrezzo extends Model ->whereNull('massimo'); } - public static function dettagli($id_articolo, $id_anagrafica, $direzione) + public static function dettagli($id_articolo, $id_anagrafica, $direzione, $qta=null) { - return self::where('id_articolo', $id_articolo) + $dettagli = self::where('id_articolo', $id_articolo) ->where('id_anagrafica', $id_anagrafica) - ->where('dir', $direzione) - ->whereNotNull('minimo') - ->whereNotNull('massimo'); + ->where('dir', $direzione); + + if($qta==null){ + $dettagli = $dettagli + ->whereNotNull('minimo') + ->whereNotNull('massimo'); + } else{ + $dettagli = $dettagli + ->where('minimo', '<=', $qta) + ->where('massimo', '>=', $qta); + } + + return $dettagli; } }