CREATE OR REPLACE PROCEDURE EXPORTA_PR_PROD_TEK
IS
   V_CDPRODINTE   VARCHAR2(20);
   V_CDALMOXARIFE VARCHAR2(6);
   V_QTPRACABADO  FLOAT;
   V_SGUNIDADE    VARCHAR2(10);
   V_DTLANCMOVI   DATE;
   V_IDINTERFACE  VARCHAR2(5);
   
   V_CDFILIAL     VARCHAR2(4);
   V_NRORDPROD    VARCHAR2(10);
   V_NRSUBORDPROD VARCHAR2(1);
   V_CDSUBPRODETA VARCHAR2(10);
   V_NRSUBPRETAOP VARCHAR2(3);
   V_CDPRODUTO    VARCHAR2(10);
   V_NRPRODACAB   VARCHAR2(3);
   V_TIPOCUSTO    INTEGER;
   V_VRCUSTOPROD  FLOAT;
   V_CDLOCALESTOQ VARCHAR2(6);
   V_NRLOTEESTQ   VARCHAR2(20);
   V_NRSUBLOTE    VARCHAR2(4);
   
   CURSOR C_PRODACABADO IS
      SELECT P.CDPRODINTE, I.CDALMOXARIFE, PA.QTPRACABADO, P.SGUNIDADE, I.DTLANCMOVI,
             PA.CDFILIAL, PA.NRORDPROD, PA.NRSUBORDPROD, PA.CDSUBPRODETA, PA.NRSUBPRETAOP, PA.CDPRODUTO, PA.NRPRODACAB,
             I.CDLOCALESTOQ, I.NRLOTEESTQ, I.NRSUBLOTE
        FROM PRODACABADO PA, PRODUTO P, LANCTOESTOQ L, ITLANCTOEST I, ORDPRODUCAO O
       WHERE PA.CDPRODUTO    = P.CDPRODUTO
         AND PA.CDFILIAL     = L.CDFILIAL
         AND PA.NRLANCESTQ   = L.NRLANCESTQ
         AND I.CDFILIAL      = L.CDFILIAL
         AND I.NRLANCESTQ    = L.NRLANCESTQ
         AND PA.CDFILIAL     = O.CDFILIAL
         AND PA.NRORDPROD    = O.NRORDPROD
         AND PA.NRSUBORDPROD = O.NRSUBORDPROD
         AND O.IDSITORDPROD  = '3'
         AND PA.CDFILIAL     = '9999'
         AND PA.DTEXPORTA_RIQ IS NULL;
BEGIN
   V_IDINTERFACE := 'Alta';
   
   OPEN C_PRODACABADO;
   LOOP
      FETCH C_PRODACABADO INTO V_CDPRODINTE, V_CDALMOXARIFE, V_QTPRACABADO, V_SGUNIDADE, V_DTLANCMOVI,
                               V_CDFILIAL, V_NRORDPROD, V_NRSUBORDPROD, V_CDSUBPRODETA, V_NRSUBPRETAOP, V_CDPRODUTO, V_NRPRODACAB,
                               V_CDLOCALESTOQ, V_NRLOTEESTQ, V_NRSUBLOTE;
      EXIT WHEN C_PRODACABADO%NOTFOUND;
      
      BEGIN
         SELECT TO_NUMBER(IDTCUSNFROMA)
           INTO V_TIPOCUSTO
           FROM PARAMFILIAL
          WHERE CDFILIAL = V_CDFILIAL;
      EXCEPTION
         WHEN OTHERS THEN
            V_TIPOCUSTO := 3;
      END;
      
      BEGIN
         SELECT NVL(CUSTO_PRODUTO_LCEST(V_CDFILIAL, P.CDPRODESTO, V_TIPOCUSTO,  TO_DATE(V_DTLANCMOVI), SYSDATE,
                                        V_CDALMOXARIFE, V_CDLOCALESTOQ, V_NRLOTEESTQ, V_NRSUBLOTE),0) * P.VRFATOCONV AS VRCUSTOPROD
           INTO V_VRCUSTOPROD
           FROM PRODUTO P
          WHERE CDPRODUTO = V_CDPRODUTO;      
      EXCEPTION
         WHEN OTHERS THEN
            V_VRCUSTOPROD := 0;
      END;
      
      INSERT INTO INT_PRODACAB_TEK(CDPRODEXTERNO, CDALMOXARIFE, QTLANCTOEST, SGUNIDADE, DTENTRSAID, IDINTERFACE,
                                   DTGRAVACAO, HRGRAVACAO, VRCUSTOPROD)
      VALUES(V_CDPRODINTE, V_CDALMOXARIFE, V_QTPRACABADO, V_SGUNIDADE, V_DTLANCMOVI, V_IDINTERFACE,
             TRUNC(SYSDATE), TO_CHAR(SYSDATE, 'HH24:MI'), V_VRCUSTOPROD);
      
      UPDATE PRODACABADO
         SET DTEXPORTA_RIQ = SYSDATE
       WHERE CDFILIAL      = V_CDFILIAL
         AND NRORDPROD     = V_NRORDPROD
         AND NRSUBORDPROD  = V_NRSUBORDPROD
         AND CDSUBPRODETA  = V_CDSUBPRODETA
         AND NRSUBPRETAOP  = V_NRSUBPRETAOP
         AND CDPRODUTO     = V_CDPRODUTO
         AND NRPRODACAB    = V_NRPRODACAB;
   END LOOP;
   CLOSE C_PRODACABADO;   
EXCEPTION
   WHEN OTHERS THEN
      IF C_PRODACABADO%ISOPEN THEN
         CLOSE C_PRODACABADO;
      END IF;
      
      RAISE;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('EXPORTA_PR_PROD_TEK','6.39.014'); END;
/
