CREATE OR REPLACE
FUNCTION RETORNA_CUSTO_NF
   (P_CDFILIAL   IN NOTAFISCAL.CDFILIAL%TYPE,
    P_NRLANCTOESTQ  IN  varchar2,
    P_DTCOMPCTBL    IN  DATE,
    P_CDPRODUTO     IN  PRODUTO.CDPRODUTO%TYPE) RETURN FLOAT
AS
    V_CDFILIAL float;
    V_CDFILIRECE FLOAT;
    v_vrcust   float;
    V_NRNOTAFISC VARCHAR2(12);
begin
   begin
    select NF.CDFILIEMIT, NF.CDFILIRECE, NF.NRNOTAFISC
      INTO V_CDFILIAL, V_CDFILIRECE, V_NRNOTAFISC
      from lanctoestoq l, notafiscal nf
     where l.cdfilial   = P_CDFILIAL
       and l.NRLANCESTQ = P_NRLANCTOESTQ
       and l.cdfilial = nf.cdfilial
       and l.nrlanctonf = nf.nrlanctonf;
   EXCEPTION 
    when no_data_found then
     V_CDFILIAL := 0;
   END;
   
   BEGIN
    SELECT VRCUSTOCTBL
      into v_vrcust
      FROM CUSTMEDCTBL
     WHERE CDFILIAL = V_CDFILIAL
       AND CDPRODUTO = P_CDPRODUTO
       AND DTCOMPCTBL =  (SELECT MAX(DTCOMPCTBL)
                            FROM CUSTMEDCTBL
                           WHERE CDPRODUTO = P_CDPRODUTO
                             AND CDFILIAL  = V_CDFILIAL
                             AND DTCOMPCTBL <= P_DTCOMPCTBL
                             AND VRCUSTOCTBL <> 0);
   exception
    when no_data_found then
     v_vrcust := 0;
   end;
   
   IF V_VRCUST = 0 THEN
    BEGIN
    SELECT VRCUSTOCTBL
      into v_vrcust
      FROM CUSTMEDCTBL
     WHERE CDFILIAL = V_CDFILIRECE
       AND VRCUSTOCTBL > 0
       AND CDPRODUTO = P_CDPRODUTO
       AND DTCOMPCTBL =  (SELECT MAX(DTCOMPCTBL)
                            FROM CUSTMEDCTBL
                           WHERE CDPRODUTO = P_CDPRODUTO
                             AND CDFILIAL  = V_CDFILIRECE
                             AND DTCOMPCTBL <= P_DTCOMPCTBL);
   exception
    when no_data_found then
     v_vrcust := 0;
   end;

   END IF;
   return(v_vrcust);
end;
/
-- VERSAO --
BEGIN ATUVEROBJ('RETORNA_CUSTO_NF','5.33.xxx'); END;
/

 
