feat(available): refs #8408 available refreshing now includes time #3395

Merged
pako merged 5 commits from 8408-Disponible-por-zonas-y-horas into dev 2025-01-29 12:57:14 +00:00
6 changed files with 22 additions and 12 deletions

View File

@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_refres
OUT `vCalc` INT, OUT `vCalc` INT,
`vRefresh` INT, `vRefresh` INT,
`vWarehouse` INT, `vWarehouse` INT,
`vDated` DATE `vAvailabled` DATETIME
) )
proc: BEGIN proc: BEGIN
DECLARE vStartDate DATE; DECLARE vStartDate DATE;
@ -12,6 +12,7 @@ proc: BEGIN
DECLARE vInventoryDate DATE; DECLARE vInventoryDate DATE;
DECLARE vLifeScope DATE; DECLARE vLifeScope DATE;
DECLARE vWarehouseFkInventory INT; DECLARE vWarehouseFkInventory INT;
DECLARE vDated DATE;
DECLARE EXIT HANDLER FOR SQLEXCEPTION DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN BEGIN
@ -19,13 +20,17 @@ proc: BEGIN
RESIGNAL; RESIGNAL;
END; END;
IF vDated < util.VN_CURDATE() THEN IF vAvailabled < util.VN_CURDATE() THEN
LEAVE proc; LEAVE proc;
END IF; END IF;
SET vDated = DATE(vAvailabled);
SET vAvailabled = vDated + INTERVAL HOUR(vAvailabled) HOUR;
CALL vn.item_getStock(vWarehouse, vDated, NULL); CALL vn.item_getStock(vWarehouse, vDated, NULL);
SET vParams = CONCAT_WS('/', vWarehouse, vDated); SET vParams = CONCAT_WS('/', vWarehouse, vAvailabled);
CALL cache_calc_start (vCalc, vRefresh, 'available', vParams); CALL cache_calc_start (vCalc, vRefresh, 'available', vParams);
IF !vRefresh THEN IF !vRefresh THEN
@ -87,11 +92,10 @@ proc: BEGIN
SELECT i.itemFk, i.landed, i.quantity SELECT i.itemFk, i.landed, i.quantity
FROM vn.itemEntryIn i FROM vn.itemEntryIn i
JOIN itemRange ir ON ir.itemFk = i.itemFk JOIN itemRange ir ON ir.itemFk = i.itemFk
LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk
WHERE i.landed >= vStartDate WHERE i.landed >= vStartDate
AND IFNULL(i.availabled, i.landed) <= vAvailabled
AND (ir.ended IS NULL OR i.landed <= ir.ended) AND (ir.ended IS NULL OR i.landed <= ir.ended)
AND i.warehouseInFk = vWarehouse AND i.warehouseInFk = vWarehouse
AND ISNULL(wf.entryFk)
UNION ALL UNION ALL
SELECT i.itemFk, i.shipped, i.quantity SELECT i.itemFk, i.shipped, i.quantity
FROM vn.itemEntryOut i FROM vn.itemEntryOut i

View File

@ -15,8 +15,6 @@ BEGIN
* *
* @return tmp.itemList(itemFk, stock, visible, available) * @return tmp.itemList(itemFk, stock, visible, available)
*/ */
DECLARE vIsLogifloraDay BOOL DEFAULT vn.isLogifloraDay(vDated, vWarehouseFk);
SET vDated = TIMESTAMP(vDated, '00:00:00'); SET vDated = TIMESTAMP(vDated, '00:00:00');
CREATE OR REPLACE TEMPORARY TABLE tmp.itemList CREATE OR REPLACE TEMPORARY TABLE tmp.itemList
@ -36,14 +34,11 @@ BEGIN
UNION ALL UNION ALL
SELECT iei.itemFk, iei.quantity SELECT iei.itemFk, iei.quantity
FROM itemEntryIn iei FROM itemEntryIn iei
LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = iei.entryFk
JOIN item i ON i.id = iei.itemFk JOIN item i ON i.id = iei.itemFk
WHERE iei.landed >= util.VN_CURDATE() WHERE iei.landed >= util.VN_CURDATE()
AND iei.landed < vDated AND iei.landed < vDated
AND iei.warehouseInFk = vWarehouseFk AND iei.warehouseInFk = vWarehouseFk
AND (vItemFk IS NULL OR iei.itemFk = vItemFk) AND (vItemFk IS NULL OR iei.itemFk = vItemFk)
AND (wf.entryFk IS NULL OR vIsLogifloraDay)
AND NOT (iei.landed > util.VN_CURDATE() AND i.isFloramondo)
UNION ALL UNION ALL
SELECT ieo.itemFk, ieo.quantity SELECT ieo.itemFk, ieo.quantity
FROM itemEntryOut ieo FROM itemEntryOut ieo
@ -52,7 +47,6 @@ BEGIN
AND ieo.shipped < vDated AND ieo.shipped < vDated
AND ieo.warehouseOutFk = vWarehouseFk AND ieo.warehouseOutFk = vWarehouseFk
AND (vItemFk IS NULL OR ieo.itemFk = vItemFk) AND (vItemFk IS NULL OR ieo.itemFk = vItemFk)
AND NOT (ieo.shipped > util.VN_CURDATE() AND i.isFloramondo)
) sub ) sub
GROUP BY itemFk GROUP BY itemFk
HAVING stock; HAVING stock;

View File

@ -16,5 +16,9 @@ BEGIN
IF NEW.awbFk IS NOT NULL THEN IF NEW.awbFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.id); CALL travel_throwAwb(NEW.id);
END IF; END IF;
IF NEW.availabled < NEW.landed THEN
CALL util.throw('The travel availabled cannot be earlier than landed');
END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -40,5 +40,9 @@ BEGIN
IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
CALL travel_throwAwb(NEW.id); CALL travel_throwAwb(NEW.id);
END IF; END IF;
IF NEW.availabled < NEW.landed THEN
CALL util.throw('The travel availabled cannot be earlier than landed');
END IF;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -7,7 +7,8 @@ AS SELECT `t`.`warehouseInFk` AS `warehouseInFk`,
`b`.`quantity` AS `quantity`, `b`.`quantity` AS `quantity`,
`t`.`isReceived` AS `isReceived`, `t`.`isReceived` AS `isReceived`,
`t`.`isRaid` AS `isVirtualStock`, `t`.`isRaid` AS `isVirtualStock`,
`e`.`id` AS `entryFk` `e`.`id` AS `entryFk`,
`t`.`availabled`
FROM ( FROM (
( (
`vn`.`buy` `b` `vn`.`buy` `b`

View File

@ -0,0 +1,3 @@
-- Place your SQL code here
ALTER TABLE vn.travel ADD IF NOT EXISTS availabled DATETIME NULL
pako marked this conversation as resolved
Review

es molt especific availabled, perque tambe se podria dir visibled, perque a la vegada també estará visible.
Proposta: La taula travel te el camp landingHour, que jo gastaria ixe perque esta en desus per açò, canviant el tipo a datetime.

es molt especific availabled, perque tambe se podria dir visibled, perque a la vegada també estará visible. Proposta: La taula travel te el camp landingHour, que jo gastaria ixe perque esta en desus per açò, canviant el tipo a datetime.
Review

jo deixaria el landingHour per si es volguera fer servir per a organitzar les arrivades reals. El nou camp no pot ser visibled perque no fa referència al moment en el que arriven les coses, sino al moment en el que volem que apareguen a la venta. Per eixample, arriven coses que es tarda varios dies en etiquetar, i en eixe cas el availabled té tot el sentit. El nom del camp es auto-definidor, com sempre anem intentant....

jo deixaria el landingHour per si es volguera fer servir per a organitzar les arrivades reals. El nou camp no pot ser visibled perque no fa referència al moment en el que arriven les coses, sino al moment en el que volem que apareguen a la venta. Per eixample, arriven coses que es tarda varios dies en etiquetar, i en eixe cas el availabled té tot el sentit. El nom del camp es auto-definidor, com sempre anem intentant....
COMMENT 'Indicates the moment in time when the goods become available for picking';