96 lines
2.7 KiB
SQL
96 lines
2.7 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_componentMakeUpdate`(
|
|
vTicketFk INT,
|
|
vClientFk INT,
|
|
vCurrencyFk INT,
|
|
vNickname VARCHAR(50),
|
|
vAgencyModeFk INT,
|
|
vAddressFk INT,
|
|
vZoneFk INT,
|
|
vWarehouseFk INT,
|
|
vCompanyFk INT,
|
|
vShipped DATETIME,
|
|
vLanded DATE,
|
|
vIsDeleted BOOLEAN,
|
|
vHasToBeUnrouted BOOLEAN,
|
|
vOption VARCHAR(25)
|
|
)
|
|
BEGIN
|
|
/**
|
|
* Modifica en el ticket los campos que se le pasan por parámetro
|
|
* y cambia sus componentes
|
|
*
|
|
* @param vTicketFk Id del ticket a modificar
|
|
* @param vClientFk nuevo cliente
|
|
* @param vCurrencyFk moneda
|
|
* @param vNickname nuevo alias
|
|
* @param vAgencyModeFk nueva agencia
|
|
* @param vAddressFk nuevo consignatario
|
|
* @param vZoneFk nueva zona
|
|
* @param vWarehouseFk nuevo almacen
|
|
* @param vCompanyFk nueva empresa
|
|
* @param vShipped nueva fecha del envio de mercancia
|
|
* @param vLanded nueva fecha de recepcion de mercancia
|
|
* @param vIsDeleted si se borra el ticket
|
|
* @param vHasToBeUnrouted si se le elimina la ruta al ticket
|
|
* @param vOption opcion para el case del proc ticketComponentUpdateSale
|
|
*/
|
|
DECLARE vPrice DECIMAL(10,2);
|
|
DECLARE vBonus DECIMAL(10,2);
|
|
|
|
CALL ticket_componentPreview (vTicketFk, vLanded, vAddressFk, vZoneFk, vWarehouseFk);
|
|
|
|
IF (SELECT addressFk FROM ticket WHERE id = vTicketFk) <> vAddressFk THEN
|
|
UPDATE ticket t
|
|
JOIN address a ON a.id = vAddressFk
|
|
SET t.nickname = a.nickname
|
|
WHERE t.id = vTicketFk;
|
|
END IF;
|
|
|
|
CALL zone_getShipped(vLanded, vAddressFk, vAgencyModeFk, TRUE);
|
|
|
|
SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus
|
|
FROM tmp.zoneGetShipped
|
|
WHERE shipped BETWEEN DATE(vShipped) AND util.dayEnd(vShipped)
|
|
AND warehouseFk = vWarehouseFk
|
|
LIMIT 1;
|
|
|
|
UPDATE ticket
|
|
SET clientFk = vClientFk,
|
|
nickname = vNickname,
|
|
agencyModeFk = vAgencyModeFk,
|
|
addressFk = vAddressFk,
|
|
zoneFk = vZoneFk,
|
|
zonePrice = vPrice,
|
|
zoneBonus = vBonus,
|
|
warehouseFk = vWarehouseFk,
|
|
companyFk = vCompanyFk,
|
|
landed = vLanded,
|
|
shipped = vShipped,
|
|
isDeleted = vIsDeleted,
|
|
currencyFk = vCurrencyFk
|
|
WHERE id = vTicketFk;
|
|
|
|
IF vHasToBeUnrouted THEN
|
|
UPDATE ticket SET routeFk = NULL
|
|
WHERE id = vTicketFk;
|
|
END IF;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.sale;
|
|
CREATE TEMPORARY TABLE tmp.sale
|
|
(PRIMARY KEY (saleFk))
|
|
ENGINE = MEMORY
|
|
SELECT id saleFk, vWarehouseFk warehouseFk
|
|
FROM sale s WHERE s.ticketFk = vTicketFk;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent;
|
|
CREATE TEMPORARY TABLE tmp.ticketComponent
|
|
SELECT * FROM tmp.ticketComponentPreview;
|
|
|
|
CALL ticketComponentUpdateSale (vOption);
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent;
|
|
DROP TEMPORARY TABLE tmp.sale, tmp.zoneGetShipped, tmp.ticketComponentPreview;
|
|
END$$
|
|
DELIMITER ;
|