57 lines
1.2 KiB
MySQL
57 lines
1.2 KiB
MySQL
|
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 ;
|