DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_getWithParameters`(
	vClientFk INT, 
	vWarehouseFk INT,
	vShipped DATE, 
	vAddressFk INT, 
	vCompanyFk INT, 
	vAgencyModeFk INT,
	OUT vTicketFk INT
	)
BEGIN
/**
 * Devuelve un ticket con los parametros, en caso de no existir lo crea
 *
 * @param vClientFk Cliente
 * @param vWarehouseFk almacen
 * @param vShipped Fecha de preparacion
 * @param vAddressFk Consignatario
 * @param vCompanyFk Empresa
 * @param vAgencyModeFk agencia
 */  
 
	SELECT t.id INTO vTicketFk
		FROM vn.ticket t
		WHERE t.clientFk <=> vClientFk
			AND t.warehouseFk <=> vWarehouseFk
            AND (t.shipped <=> vShipped OR vShipped IS NULL)
            AND (t.addressFk <=> vAddressFk OR vAddressFk IS NULL)
            AND (t.companyFk <=> vCompanyFk OR vCompanyFk IS NULL)
            AND (t.agencyModeFk <=> vAgencyModeFk OR vAgencyModeFk IS NULL)
		LIMIT 1;
        
	IF vTicketFk IS NULL THEN
		CALL vn.ticket_add(
				vClientFk,
				IFNULL(vShipped, util.VN_CURDATE()),
				vWarehouseFk,
				vCompanyFk,
				vAddressFk,
				vAgencyModeFk,
				NULL,
				vShipped,
				`account`.`myUser_getId`(),
				TRUE,
				vTicketFk
			);
    END IF;
END$$
DELIMITER ;