salix/db/routines/hedera/procedures/order_configure.sql

57 lines
1.2 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_configure`(
vSelf INT,
vDelivery DATE,
vDeliveryMethod VARCHAR(45),
vAgency INT,
vAddress INT)
BEGIN
/**
* Creates an order with passed parameters. If passed parameters are wrong
* it returns an error.
*
* @param vSelf The order id
* @param vDelivery Delivery date
* @param vDeliveryMethod Delivery method code
* @param vAgency Agency id
* @param vAddress Address id, @NULL for pickup
*/
DECLARE vCompany INT;
DECLARE vDeliveryMethodId INT;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vSelf = NULL;
DECLARE EXIT HANDLER FOR SQLSTATE '45000'
BEGIN
ROLLBACK;
RESIGNAL;
END;
START TRANSACTION;
CALL order_checkEditable(vSelf);
SELECT id INTO vDeliveryMethodId
FROM vn.deliveryMethod
WHERE code = vDeliveryMethod;
IF vDeliveryMethod = 'PICKUP' AND vAddress IS NULL THEN
SELECT defaultAddressFk INTO vAddress
FROM myClient;
END IF;
UPDATE `order`
SET date_send = vDelivery,
delivery_method_id = vDeliveryMethodId,
agency_id = vAgency,
address_id = vAddress,
configured = util.VN_NOW()
WHERE
id = vSelf;
CALL order_update(vSelf);
CALL order_checkConfig(vSelf);
COMMIT;
END$$
DELIMITER ;