Skip to content

Commit 7ed1c28

Browse files
committed
refactor: usa prezzi listino anagrafica in generazione DDT
1 parent cd85336 commit 7ed1c28

1 file changed

Lines changed: 36 additions & 1 deletion

File tree

modules/ddt/actions.php

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,10 +356,45 @@
356356
// Aggiornamento seriali dalla riga dell'ordine
357357
if ($copia->isArticolo()) {
358358
if ($tipo == 'Ddt in uscita' || $tipo == 'Ddt in entrata') {
359-
// TODO: estrarre il listino corrispondente se presente
360359
$originale = ArticoloOriginale::find($riga->id_articolo);
361360

362361
$prezzo = ($tipo == 'Ddt in entrata' ? $originale->prezzo_vendita : $originale->prezzo_acquisto);
362+
363+
// Estrazione del prezzo dal listino dell'anagrafica se presente
364+
$id_listino = $ddt->anagrafica->id_listino;
365+
if ($id_listino) {
366+
$prezzi_listino = database()->fetchArray(
367+
'SELECT prezzo_unitario, minimo, massimo FROM mg_listini_articoli
368+
INNER JOIN mg_listini ON mg_listini_articoli.id_listino = mg_listini.id
369+
WHERE mg_listini_articoli.id_listino = '.prepare($id_listino).'
370+
AND mg_listini_articoli.id_articolo = '.prepare($riga->id_articolo).'
371+
AND mg_listini_articoli.dir = '.prepare($dir).'
372+
AND mg_listini.attivo = 1
373+
AND mg_listini.data_attivazione <= NOW()
374+
AND (mg_listini_articoli.data_scadenza IS NULL OR mg_listini_articoli.data_scadenza >= NOW())
375+
AND (mg_listini.data_scadenza_predefinita IS NULL OR mg_listini.data_scadenza_predefinita >= NOW())
376+
AND (mg_listini_articoli.minimo IS NULL OR mg_listini_articoli.minimo <= '.prepare($qta).')
377+
AND (mg_listini_articoli.massimo IS NULL OR mg_listini_articoli.massimo >= '.prepare($qta).')'
378+
);
379+
380+
$prezzo_listino_selezionato = null;
381+
$prezzo_listino_predefinito = null;
382+
383+
foreach ($prezzi_listino as $prezzo_listino) {
384+
if ($prezzo_listino['minimo'] == null && $prezzo_listino['massimo'] == null) {
385+
$prezzo_listino_predefinito = $prezzo_listino;
386+
} else {
387+
$prezzo_listino_selezionato = $prezzo_listino;
388+
}
389+
}
390+
391+
$prezzo_listino_finale = $prezzo_listino_selezionato ?: $prezzo_listino_predefinito;
392+
393+
if ($prezzo_listino_finale) {
394+
$prezzo = $prezzo_listino_finale['prezzo_unitario'];
395+
}
396+
}
397+
363398
if ($dir == 'entrata') {
364399
$id_iva = ($ddt->anagrafica->id_iva_vendite ?: setting('Iva predefinita'));
365400
} else {

0 commit comments

Comments
 (0)