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 ;