DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`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 ;