81 lines
2.1 KiB
SQL
81 lines
2.1 KiB
SQL
DROP PROCEDURE IF EXISTS vn.item_getLack;
|
|
|
|
DELIMITER $$
|
|
$$
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(
|
|
IN vForce BOOLEAN DEFAULT TRUE,
|
|
IN vDays INT DEFAULT 2,
|
|
IN vId INT DEFAULT NULL,
|
|
IN vLongname INT DEFAULT NULL,
|
|
IN vSupplier VARCHAR DEFAULT NULL,
|
|
IN vColor VARCHAR DEFAULT NULL,
|
|
IN vSize INT DEFAULT NULL,
|
|
IN vOrigen VARCHAR DEFAULT NULL,
|
|
IN vLack INT DEFAULT NULL
|
|
)
|
|
|
|
BEGIN
|
|
/**
|
|
* Calcula una tabla con el máximo negativo visible para cada producto y almacen
|
|
*
|
|
* @param vForce Fuerza el recalculo del stock
|
|
* @param vDays Numero de dias a considerar
|
|
* @param vSearch Filtro items
|
|
**/
|
|
|
|
CALL `cache`.stock_refresh(vForce);
|
|
CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL);
|
|
CALL item_getMinETD();
|
|
CALL item_zoneClosure();
|
|
|
|
|
|
SELECT i.id itemFk,
|
|
i.longName,
|
|
w.id warehouseFk,
|
|
p.`name` producer,
|
|
i.`size`,
|
|
i.category,
|
|
w.name warehouse,
|
|
SUM(IFNULL(sub.amount,0)) lack,
|
|
i.inkFk,
|
|
IFNULL(im.timed, util.midnight()) timed,
|
|
IFNULL(izc.timed, util.midnight()) minTimed
|
|
FROM (SELECT item_id,
|
|
warehouse_id,
|
|
amount
|
|
FROM cache.stock
|
|
WHERE amount > 0
|
|
UNION ALL
|
|
SELECT itemFk,
|
|
warehouseFk,
|
|
amount
|
|
FROM tmp.itemMinacum
|
|
) sub
|
|
JOIN warehouse w ON w.id = sub.warehouse_id
|
|
JOIN item i ON i.id = sub.item_id
|
|
LEFT JOIN producer p ON p.id = i.producerFk
|
|
JOIN itemType it ON it.id = i.typeFk
|
|
JOIN itemCategory ic ON ic.id = it.categoryFk
|
|
LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id
|
|
LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id
|
|
WHERE w.isForTicket
|
|
AND ic.display
|
|
AND it.code != 'GEN'
|
|
AND (vId IS NULL OR i.id = vId)
|
|
AND (vLongname IS NULL OR i.longName = vLongname)
|
|
AND (vSupplier IS NULL OR p.`name` LIKE CONCAT('%', vSupplier, '%'))
|
|
AND (vColor IS NULL OR vColor = i.inkFk)
|
|
AND (vSize IS NULL OR vSize = i.`size`)
|
|
AND (vOrigen IS NULL OR vOrigen = w.name)
|
|
AND (vLack IS NULL OR vLack = lack)
|
|
|
|
GROUP BY i.id, w.id
|
|
HAVING lack < 0;
|
|
|
|
DROP TEMPORARY TABLE tmp.itemMinacum;
|
|
DROP TEMPORARY TABLE tmp.itemMinETD;
|
|
DROP TEMPORARY TABLE tmp.itemZoneClosure;
|
|
END
|
|
$$
|
|
DELIMITER ;
|