DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`entry_getForLogiflora`(vLanded DATE, vWarehouseFk INT)
	RETURNS int(11)
	NOT DETERMINISTIC
	READS SQL DATA
BEGIN
	
	/**
	 * Devuelve una entrada para Logiflora. Si no existe la crea.
	 * 
	 * @param vLanded Fecha de llegada al almacén
	 * @param vWarehouseFk Identificador de vn.warehouse
	 */

	DECLARE vTravelFk INT;
	DECLARE vEntryFk INT;
    	DECLARE previousEntryFk INT;
 
    SET vTravelFk = vn.travel_getForLogiflora(vLanded, vWarehouseFk);
    
    IF vLanded THEN
    
		SELECT IFNULL(MAX(id),0) INTO vEntryFk 
			FROM vn.entry
			WHERE travelFk = vTravelFk 
				AND isRaid;

		IF NOT vEntryFk THEN
		
			INSERT INTO vn.entry(travelFk, supplierFk, commission, companyFk, currencyFk, isRaid)
				SELECT vTravelFk, s.id, 4, c.id, cu.id, TRUE
					FROM vn.supplier s
						JOIN vn.company c ON c.code = 'VNL'
						JOIN vn.currency cu ON cu.code = 'EUR'
					WHERE s.name = 'KONINKLIJE COOPERATIEVE BLOEMENVEILING FLORAHOLLAN';
					
			SELECT MAX(id) INTO vEntryFk 
				FROM vn.entry
				WHERE travelFk = vTravelFk;
				
		END IF;
        
	END IF;	

	SELECT entryFk INTO previousEntryFk 
		FROM edi.warehouseFloramondo wf
        	WHERE wf.warehouseFk = vWarehouseFk;
    
	IF IFNULL(previousEntryFk,0) != vEntryFk THEN
		
		UPDATE buy b 
			SET b.printedStickers = 0 
			WHERE entryFk = previousEntryFk;

		DELETE FROM buy WHERE entryFk = previousEntryFk;
        
		DELETE FROM entry WHERE id = previousEntryFk;
  
	END IF;
	
	RETURN vEntryFk;
    
END$$
DELIMITER ;
