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 ;