|
356 | 356 | // Aggiornamento seriali dalla riga dell'ordine |
357 | 357 | if ($copia->isArticolo()) { |
358 | 358 | if ($tipo == 'Ddt in uscita' || $tipo == 'Ddt in entrata') { |
359 | | - // TODO: estrarre il listino corrispondente se presente |
360 | 359 | $originale = ArticoloOriginale::find($riga->id_articolo); |
361 | 360 |
|
362 | 361 | $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 | + |
363 | 398 | if ($dir == 'entrata') { |
364 | 399 | $id_iva = ($ddt->anagrafica->id_iva_vendite ?: setting('Iva predefinita')); |
365 | 400 | } else { |
|
0 commit comments