81 lines
1.8 KiB
SQL
81 lines
1.8 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_setVisibleDiscard`(
|
|
vItemFk INT,
|
|
vWarehouseFk INT,
|
|
vQuantity INT,
|
|
vAddressFk INT)
|
|
BEGIN
|
|
/**
|
|
* Procedimiento para dar dar de baja/alta un item, si vAdressFk es NULL
|
|
* se entiende que se da de alta y se toma el addressFk de la configuración
|
|
*
|
|
* @param vItemFk Identificador del ítem
|
|
* @param vWarehouseFk id del warehouse
|
|
* @param vQuantity a dar de alta/baja
|
|
* @param vAddressFk id address
|
|
*/
|
|
|
|
DECLARE vTicketFk INT;
|
|
DECLARE vClientFk INT;
|
|
DECLARE vDefaultCompanyFk INT;
|
|
DECLARE vCalc INT;
|
|
DECLARE vAddressShortage INT;
|
|
|
|
SELECT barcodeToItem(vItemFk) INTO vItemFk;
|
|
|
|
SELECT DEFAULT(companyFk) INTO vDefaultCompanyFk
|
|
FROM vn.ticket LIMIT 1;
|
|
|
|
IF vAddressFk IS NULL THEN
|
|
SELECT pc.shortageAddressFk INTO vAddressShortage
|
|
FROM productionConfig pc ;
|
|
ELSE
|
|
SET vAddressShortage = vAddressFk;
|
|
END IF;
|
|
|
|
SELECT a.clientFk INTO vClientFk
|
|
FROM address a
|
|
WHERE a.id = vAddressShortage;
|
|
|
|
SELECT t.id INTO vTicketFk
|
|
FROM ticket t
|
|
JOIN address a ON a.id = t.addressFk
|
|
JOIN ticketState ts ON ts.ticketFk = t.id
|
|
WHERE t.warehouseFk = vWarehouseFk
|
|
AND a.id = vAddressShortage
|
|
AND DATE(t.shipped) = util.VN_CURDATE()
|
|
AND ts.code = 'DELIVERED'
|
|
LIMIT 1;
|
|
|
|
CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk);
|
|
|
|
IF vTicketFk IS NULL THEN
|
|
CALL ticket_add(
|
|
vClientFk,
|
|
util.VN_CURDATE(),
|
|
vWarehouseFk,
|
|
vDefaultCompanyFk,
|
|
vAddressFk,
|
|
NULL,
|
|
NULL,
|
|
util.VN_CURDATE(),
|
|
account.myUser_getId(),
|
|
FALSE,
|
|
vTicketFk);
|
|
END IF;
|
|
|
|
INSERT INTO sale(ticketFk, itemFk, concept, quantity)
|
|
SELECT vTicketFk,
|
|
vItemFk,
|
|
name,
|
|
vQuantity
|
|
FROM item
|
|
WHERE id = vItemFk;
|
|
|
|
UPDATE cache.visible
|
|
SET visible = visible - vQuantity
|
|
WHERE calc_id = vCalc
|
|
AND item_id = vItemFk;
|
|
END$$
|
|
DELIMITER ;
|