Skip to content

Commit 1895902

Browse files
committed
fix: selezione seriali
1 parent 3d7afef commit 1895902

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

modules/articoli/ajax/select.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,37 @@
342342
$where[] = 'mg_prodotti.id_articolo='.prepare($superselect['idarticolo']);
343343
$where[] = 'mg_prodotti.dir=\'uscita\'';
344344
$where[] = 'mg_prodotti.id=(SELECT MAX(id) FROM mg_prodotti AS prodotti WHERE prodotti.id_articolo=mg_prodotti.id_articolo AND prodotti.serial=mg_prodotti.serial)';
345+
// Escludi i serial già venduti, considerando la data di carico effettiva (DDT se esiste, altrimenti fattura)
346+
$where[] = 'mg_prodotti.serial NOT IN (
347+
SELECT DISTINCT vendite.serial
348+
FROM mg_prodotti AS vendite
349+
INNER JOIN co_righe_documenti AS riga_vendita ON vendite.id_riga_documento = riga_vendita.id
350+
INNER JOIN co_documenti AS doc_vendita ON riga_vendita.iddocumento = doc_vendita.id
351+
WHERE vendite.dir = \'entrata\'
352+
AND vendite.id_articolo = mg_prodotti.id_articolo
353+
AND vendite.serial IS NOT NULL
354+
AND doc_vendita.data >= COALESCE(
355+
(
356+
SELECT MIN(ddt.data)
357+
FROM mg_prodotti AS acquisti_ddt
358+
INNER JOIN dt_righe_ddt AS riga_ddt ON acquisti_ddt.id_riga_ddt = riga_ddt.id
359+
INNER JOIN dt_ddt AS ddt ON riga_ddt.idddt = ddt.id
360+
WHERE acquisti_ddt.serial = mg_prodotti.serial
361+
AND acquisti_ddt.id_articolo = mg_prodotti.id_articolo
362+
AND acquisti_ddt.dir = \'uscita\'
363+
),
364+
(
365+
SELECT MIN(doc_acquisto.data)
366+
FROM mg_prodotti AS acquisti_fat
367+
INNER JOIN co_righe_documenti AS riga_acquisto ON acquisti_fat.id_riga_documento = riga_acquisto.id
368+
INNER JOIN co_documenti AS doc_acquisto ON riga_acquisto.iddocumento = doc_acquisto.id
369+
WHERE acquisti_fat.serial = mg_prodotti.serial
370+
AND acquisti_fat.id_articolo = mg_prodotti.id_articolo
371+
AND acquisti_fat.dir = \'uscita\'
372+
AND acquisti_fat.id_riga_ddt IS NULL
373+
)
374+
)
375+
)';
345376

346377
if (!empty($search)) {
347378
$search_fields[] = '`mg_prodotti`.`serial` LIKE '.prepare('%'.$search.'%');

0 commit comments

Comments
 (0)