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

60 lines
1.2 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`myOrder_newWithDate`(
OUT vSelf INT,
vLandingDate DATE)
BEGIN
/**
* Crea una nueva orden para el usuario actual especificando
* una fecha de entrega.
*
* @param vSelf Id de la nueva orden
* @param vLandingDate Fecha de entrega
*/
DECLARE vCompany INT;
DECLARE vDeliveryMethodId INT;
DECLARE vAgencyMode INT;
DECLARE vAddress INT;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vSelf = NULL;
DECLARE EXIT HANDLER FOR SQLSTATE '45000'
BEGIN
ROLLBACK;
SET vSelf = NULL;
RESIGNAL;
END;
START TRANSACTION;
SELECT a.agencyModeFk, a.id
INTO vAgencyMode, vAddress
FROM myClient c
JOIN vn.address a ON a.id = c.defaultAddressFk;
SELECT deliveryMethodFk INTO vDeliveryMethodId
FROM vn.agencyMode am
WHERE am.id = vAgencyMode;
IF vCompany IS NULL
THEN
SELECT defaultCompanyFk INTO vCompany
FROM orderConfig;
END IF;
INSERT INTO `order`
SET
customer_id = account.myUser_getId(),
date_send = vLandingDate,
delivery_method_id = vDeliveryMethodId,
agency_id = vAgencyMode,
address_id = vAddress,
source_app = 'WEB',
company_id = vCompany;
SET vSelf = LAST_INSERT_ID();
CALL order_checkConfig(vSelf);
COMMIT;
END$$
DELIMITER ;