-- =====================================================================
-- Comercial Comissaria
-- =====================================================================
-- @h:\sistemas\dba\sql\oracle\1501_COCSTP_ImpCustoProduto.sql
-- =====================================================================

CREATE OR REPLACE PROCEDURE IMPORTA_CUSTO_PRODUTO (
  P_CDFILIAL     IN FILIAL.CDFILIAL%TYPE,
  P_DATA         IN DELIVERY.DTEMISDEL%TYPE,
  P_NIVEL        IN PRODUTO.CDNVPRODUTO%TYPE,
  P_CDPRODUTO    IN PRODUTO.CDPRODUTO%TYPE,
  P_CDOPERADOR   IN SERVPLANO.CDUSRRESPSP%TYPE
) AS
  V_VRCOMLIQ     ITLANCTOEST.VRUNILANCTO%TYPE;
  V_VRCOMBRU     ITLANCTOEST.VRUNILANCTO%TYPE;
  V_VRMEDLIQ     ITLANCTOEST.VRUNILANCTO%TYPE;
  V_VRMEDBRU     ITLANCTOEST.VRUNILANCTO%TYPE;
  V_TESTE1       NUMBER;
  V_TESTE2       NUMBER;

BEGIN

  DELETE FROM PRODUTOAP
  WHERE (DTCUSTOAP = P_DATA)     AND
        (CDFILIAL  = P_CDFILIAL) AND
        (CDPRODUTO LIKE P_CDPRODUTO);

  FOR CUR_PROD IN (
    SELECT PR.CDPRODUTO
    FROM PRODUTO PR, PRODFILI PF
    WHERE (PR.CDNVPRODUTO   = P_NIVEL      ) AND
          (PR.CDPRODUTO     = PR.CDPRODESTO) AND
          (PR.CDPRODUTO  LIKE P_CDPRODUTO  ) AND
          (PF.CDPRODUTO (+) = PR.CDPRODUTO ) AND
          (PF.IDPRODATIV(+) = 'A'          ) AND
          (PR.IDPRODATIVPR  = 'S'          ) AND
          (PF.CDFILIAL  (+) = P_CDFILIAL   ) AND
          (PR.IDPRODCOMISS  IS NULL        )) LOOP

    SELECT NVL(MAX(VRLANCTOEST),0), NVL(MAX(VRLANCTOBRUT),0)
    INTO   V_VRCOMLIQ, V_VRCOMBRU
    FROM   ITLANCTOEST IT
    WHERE  (IT.CDFILIMOVI = P_CDFILIAL) AND
           (IT.IDTIPOMOVI = '2'   ) AND
           (IT.CDPRODMOVI = CUR_PROD.CDPRODUTO) AND
           (IT.DTLANCMOVI = (SELECT MAX(DTLANCMOVI)
                             FROM   ITLANCTOEST
                             WHERE (CDFILIMOVI = IT.CDFILIAL        ) AND
                                   (CDPRODMOVI = CUR_PROD.CDPRODUTO ) AND
                                   (IDTIPOMOVI  = '2'               ) AND
                                   (DTLANCMOVI <= P_DATA)));

    SELECT NVL(MAX(VRESTOQDIA/QTESTOQDIA),0),
           NVL(MAX(VRESTOQBRUT/QTESTOQDIA),0)
    INTO   V_VRMEDLIQ, V_VRMEDBRU
    FROM   POSESTDIA PO
    WHERE (PO.CDFILIAL   = P_CDFILIAL        ) AND
          (PO.CDPRODUTO  = CUR_PROD.CDPRODUTO) AND
          (PO.QTESTOQDIA <> 0                ) AND
          (PO.DTPOSIESTQ = (SELECT MAX(DTPOSIESTQ)
                            FROM POSESTDIA
                            WHERE (CDFILIAL   =  P_CDFILIAL        )	AND
                                  (CDPRODUTO  =  CUR_PROD.CDPRODUTO) AND
                                  (QTESTOQDIA <> 0                 ) AND
                                  (DTPOSIESTQ <= P_DATA)));


    INSERT INTO PRODUTOAP
    (CDFILIAL, DTCUSTOAP,  CDPRODUTO,VRULTCLIQAP,
     VRULTCBRUAP,VRMEDLIQAP,VRMEDBRUAP,DTHRIMPCUSTO,
     CDOPIMPCUSTO)
    VALUES
    (P_CDFILIAL,P_DATA,CUR_PROD.CDPRODUTO,V_VRCOMLIQ,
     V_VRCOMBRU,V_VRMEDLIQ, V_VRMEDBRU,SYSDATE,
     P_CDOPERADOR);

  END LOOP;
END;
/
