45 lines
1.4 KiB
MySQL
45 lines
1.4 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getMovable`(vTicketFk INT, vDatedNew DATETIME, vWarehouseFk INT)
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Cálcula el stock movible para los artículos de un ticket
|
||
|
* vDatedNew debe ser menor que vDatedOld, en los otros casos se
|
||
|
* asume que siempre es posible
|
||
|
*
|
||
|
* @param vTicketFk -> Ticket
|
||
|
* @param vDatedNew -> Nueva fecha
|
||
|
* @return Sales con Movible
|
||
|
*/
|
||
|
DECLARE vDatedOld DATETIME;
|
||
|
SET vDatedNew = DATE_ADD(vDatedNew, INTERVAL 1 DAY);
|
||
|
|
||
|
SELECT t.shipped INTO vDatedOld
|
||
|
FROM ticket t
|
||
|
WHERE t.id = vTicketFk;
|
||
|
|
||
|
CALL item_getStock(vWarehouseFk, vDatedNew, NULL);
|
||
|
CALL item_getMinacum(vWarehouseFk, vDatedNew, DATEDIFF(DATE_SUB(vDatedOld, INTERVAL 1 DAY), vDatedNew), NULL);
|
||
|
|
||
|
SELECT s.id,
|
||
|
s.itemFk,
|
||
|
s.quantity,
|
||
|
s.concept,
|
||
|
s.price,
|
||
|
s.reserved,
|
||
|
s.discount,
|
||
|
i.image,
|
||
|
i.subName,
|
||
|
il.stock + IFNULL(im.amount, 0) AS movable
|
||
|
FROM ticket t
|
||
|
JOIN sale s ON s.ticketFk = t.id
|
||
|
JOIN item i ON i.id = s.itemFk
|
||
|
LEFT JOIN tmp.itemMinacum im ON im.itemFk = s.itemFk AND im.warehouseFk = vWarehouseFk
|
||
|
LEFT JOIN tmp.itemList il ON il.itemFk = s.itemFk
|
||
|
WHERE t.id = vTicketFk;
|
||
|
|
||
|
DROP TEMPORARY TABLE IF EXISTS tmp.itemList;
|
||
|
DROP TEMPORARY TABLE IF EXISTS tmp.itemMinacum;
|
||
|
|
||
|
END$$
|
||
|
DELIMITER ;
|