CREATE OR REPLACE FUNCTION public.fnc_busca_quantidade_estoque_total( var_filial_stq integer, var_filial_pro integer, var_produto integer, var_data date) RETURNS numeric LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ DECLARE quant numeric; BEGIN SELECT COALESCE(SUM(stq_saldo_estoque.quantidade),0) INTO quant FROM stq_saldo_estoque WHERE stq_saldo_estoque.filial_stq = var_filial_stq AND stq_saldo_estoque.filial_pro = var_filial_pro AND stq_saldo_estoque.produto = var_produto AND (stq_saldo_estoque.almoxarifado, stq_saldo_estoque.sequencia_lote, stq_saldo_estoque.data) IN( SELECT almoxarifado, sequencia_lote, MAX(data) FROM stq_saldo_estoque WHERE filial_stq = var_filial_stq AND produto = var_produto AND data <= var_data GROUP BY almoxarifado, sequencia_lote); RETURN quant; END; $BODY$; ALTER FUNCTION public.fnc_busca_quantidade_estoque_total(integer, integer, integer, date) OWNER TO postgres;