44 lines
1.6 KiB
MySQL
44 lines
1.6 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_GetVisible`(vWarehouse SMALLINT, vItem INT)
|
||
|
BEGIN
|
||
|
DECLARE vTomorrow DATETIME DEFAULT TIMESTAMPADD(DAY, 1, util.VN_CURDATE());
|
||
|
|
||
|
INSERT INTO tmp.itemVisible (item_id, visible)
|
||
|
SELECT item_id, SUM(amount) amount
|
||
|
FROM (
|
||
|
SELECT i.itemFk AS item_id, quantity AS amount
|
||
|
FROM itemTicketOut i
|
||
|
LEFT JOIN ticketState ts ON ts.ticketFk = i.ticketFk
|
||
|
JOIN state s ON s.id = ts.stateFk
|
||
|
LEFT JOIN (SELECT DISTINCT saleFk
|
||
|
FROM saleTracking st
|
||
|
JOIN state s ON s.id = st.stateFk
|
||
|
WHERE st.created > util.VN_CURDATE()
|
||
|
AND (s.isPicked OR st.isChecked)
|
||
|
) stPrevious ON `stPrevious`.`saleFk` = i.saleFk
|
||
|
WHERE i.warehouseFk = vWarehouse
|
||
|
AND (vItem IS NULL OR i.itemFk = vItem)
|
||
|
AND (s.isPicked OR i.reserved OR stPrevious.saleFk )
|
||
|
AND i.shipped >= util.VN_CURDATE() AND i.shipped < vTomorrow
|
||
|
UNION ALL
|
||
|
SELECT iei.itemFk, quantity
|
||
|
FROM itemEntryIn iei
|
||
|
WHERE (iei.isReceived != FALSE /*OR ip.modificationDate > util.VN_CURDATE()*/)
|
||
|
AND iei.landed >= util.VN_CURDATE() AND iei.landed < vTomorrow
|
||
|
AND iei.warehouseInFk = vWarehouse
|
||
|
AND (vItem IS NULL OR iei.itemFk = vItem)
|
||
|
AND iei.isVirtualStock is FALSE
|
||
|
UNION ALL
|
||
|
SELECT itemFk, quantity
|
||
|
FROM itemEntryOut
|
||
|
WHERE isDelivered != FALSE
|
||
|
AND shipped >= util.VN_CURDATE() AND shipped < vTomorrow
|
||
|
AND warehouseOutFk = vWarehouse
|
||
|
AND (vItem IS NULL OR itemFk = vItem)
|
||
|
) t
|
||
|
GROUP BY item_id
|
||
|
ON DUPLICATE KEY UPDATE
|
||
|
visible = IFNULL(stock,0) + VALUES(visible);
|
||
|
END$$
|
||
|
DELIMITER ;
|