create or replace FUNCTION QTDE_LIQ_REC( 
P_CDPRATO IN PRATO.CDPRATO%TYPE, 
P_CDFILAUXPRAT  IN PRATO.CDFILAUXPRAT%TYPE, 
P_CDPRODUTO IN PRODUTO.CDPRODUTO%TYPE, 
P_CDFILIAL IN FILIAL.CDFILIAL%TYPE, 
P_CDSERVFILI SERVICO.CDSERVFILI%TYPE) RETURN NUMBER 
AS 
V_QTPROD NUMBER; 
 
BEGIN 
SELECT NVL(REC.QTPROD, 0) AS QTPROD  
  INTO V_QTPROD 
  FROM 
(SELECT 'P' AS IDTIPO, CDFILAUXPRAT, CDPRATO,  
       NULL AS CDFILIAL, NULL AS CDSERVFILI, CDPRODUTO,  
       QTPRODPRAT AS QTPROD 
  FROM RECEPADR 
 WHERE CDFILAUXPRAT = P_CDFILAUXPRAT 
   AND CDPRATO      = P_CDPRATO 
   AND CDPRODUTO    = P_CDPRODUTO 
UNION ALL 
SELECT 'F' AS IDTIPO, CDFILAUXPRAT, CDPRATO,  
       CDFILIAL, NULL AS CDSERVFILI, CDPRODUTO, 
       QTPRODRECLOC AS QTPROD 
  FROM RECEFILI 
 WHERE CDFILAUXPRAT = P_CDFILAUXPRAT 
   AND CDPRATO      = P_CDPRATO 
   AND CDPRODUTO    = P_CDPRODUTO 
   AND CDFILIAL     = P_CDFILIAL 
UNION ALL 
SELECT 'S' AS IDTIPO, CDFILAUXPRAT, CDPRATO,  
       CDFILIAL, CDSERVFILI, CDPRODUTO, 
       QTPRODRECSER AS QTPROD 
  FROM RECESERV 
 WHERE CDFILAUXPRAT = P_CDFILAUXPRAT 
   AND CDPRATO      = P_CDPRATO 
   AND CDPRODUTO    = P_CDPRODUTO 
   AND CDFILIAL     = P_CDFILIAL 
   AND CDSERVFILI   = P_CDSERVFILI) REC 
WHERE REC.IDTIPO = RECEITA_UTILIZADA(P_CDPRATO, P_CDFILAUXPRAT, P_CDFILIAL, P_CDSERVFILI); 
  
   RETURN V_QTPROD; 
END; 
/

-- VERSAO --
BEGIN ATUVEROBJ('QTDE_LIQ_REC','6.05.000'); END;
/
