DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`buy_getLastWithoutInventory`( vItemFk INT, vWarehouseFk INT ) RETURNS int(11) DETERMINISTIC BEGIN /** * Retorna la última compra que no sea inventario. * * @param vItemFk Id del artículo * @param vWarehouseFk Id del almacén * @return Id de compra */ DECLARE vBuyFk INT; SELECT b.id INTO vBuyFk FROM buy b JOIN entry e ON e.id = b.entryFk JOIN travel t ON t.id = e.travelFk WHERE e.id <> (SELECT defaultEntry FROM entryConfig) AND e.supplierFk <> (SELECT supplierFk FROM inventoryConfig) AND e.typeFk <> 'inventory' AND b.itemFk = vItemFk AND (t.warehouseInFk = vWarehouseFk OR t.warehouseInFk IS NULL) ORDER BY ABS(DATEDIFF(util.VN_CURDATE(), t.landed)), e.created DESC LIMIT 1; RETURN vBuyFk; END$$ DELIMITER ;