create or replace PROCEDURE ENVIA_ORDEM_PRODUCAO
IS
V_CDEXPORTEMPR         PARAMEMPRESA.CDEXPORTEMPR%TYPE;
V_CDEMPRESA            FILIAL.CDEMPRESA%TYPE;
V_CDFILIAL             FILIAL.CDFILIAL%TYPE;
V_CDEXFILIAL           PARAMFILIAL.CDEXFILIAL%TYPE;
V_CDPRODINTE           PRODUTO.CDPRODINTE%TYPE;
V_CDPRODUTO            PRODUTO.CDPRODUTO%TYPE;
V_NRORDPROD            ORDPRODUCAO.NRORDPROD%TYPE;
V_NRSUBORDPROD         ORDPRODUCAO.NRSUBORDPROD%TYPE;
V_DTGERORDPROD         ORDPRODUCAO.DTGERORDPROD%TYPE;
V_QTAPRODPREOP         ORDPRODUCAO.QTAPRODPREOP%TYPE;
V_DTPREVISTA           ORDPRODUCAO.DTHRFIMPREOP%TYPE;
V_IDSITORDPROD         ORDPRODUCAO.IDSITORDPROD%TYPE;
V_NRSEQENTRADA         FLOAT;
V_NRSEQSAIDA           FLOAT;
V_IDTIPOPLANEJ         FLOAT;
V_NRSEMANA             FLOAT;
V_IDALTERADO           FLOAT;
V_DTINTEGRACAO         DATE;
V_NRLOTEESTQ           VARCHAR2(20);
V_NRSUBLOTE            VARCHAR2(4);
V_IDMODELOBALANCA      VARCHAR2(2);

CURSOR C_ORDPRODUCAO IS 
SELECT PE.CDEXPORTEMPR, 
       F.CDEMPRESA, 
       F.CDFILIAL, 
       PF.CDEXFILIAL,
       PR.CDPRODINTE,
       PR.CDPRODUTO,
       OP.NRORDPROD,
       OP.NRSUBORDPROD,
       OP.DTGERORDPROD,
       OP.QTAPRODPREOP,
       TO_CHAR(OP.DTHRFIMPREOP,'DD/MM/YYYY') AS DTPREVISTA,
       1 AS NRSEQENTRADA,
       1 AS NRSEQSAIDA,
       CASE WHEN OP.IDSITORDPROD = '2' THEN 0 ELSE 1 END AS IDSITORDPROD,
       1 AS IDTIPOPLANEJ,
       0 AS NRSEMANA,
       1 AS IDALTERADO,
       '' AS DTINTEGRACAO,
       OP.NRLOTEESTQ,
       OP.NRSUBLOTE
  FROM ORDPRODUCAO OP
 INNER JOIN PRODUTO PR
    ON OP.CDPRODUTO = PR.CDPRODUTO
 INNER JOIN PARAMFILIAL PF
    ON OP.CDFILIAL = PF.CDFILIAL
 INNER JOIN FILIAL F
    ON PF.CDFILIAL = F.CDFILIAL
 INNER JOIN PARAMEMPRESA PE
    ON F.CDEMPRESA = PE.CDEMPRESA
 INNER JOIN PRODFILI PRF
    ON OP.CDPRODUTO = PRF.CDPRODUTO
   AND PRF.IDUTILPESAGEM   = 'S';

BEGIN
   OPEN C_ORDPRODUCAO;
   LOOP
      FETCH C_ORDPRODUCAO INTO V_CDEXPORTEMPR, V_CDEMPRESA, V_CDFILIAL, V_CDEXFILIAL, V_CDPRODINTE, V_CDPRODUTO, V_NRORDPROD, V_NRSUBORDPROD, V_DTGERORDPROD, 
                               V_QTAPRODPREOP, V_DTPREVISTA, V_NRSEQENTRADA, V_NRSEQSAIDA, V_IDSITORDPROD, V_IDTIPOPLANEJ, V_NRSEMANA, V_IDALTERADO, 
                               V_DTINTEGRACAO, V_NRLOTEESTQ, V_NRSUBLOTE;
      EXIT WHEN C_ORDPRODUCAO%NOTFOUND; 
      
            INSERT INTO USR_ORDPRODUCAO(CDEXPORTEMPR, CDEMPRESA, CDFILIAL, CDEXFILIAL, CDPRODINTE, CDPRODUTO, NRORDPROD, NRSUBORDPROD, DTGERORDPROD, 
                                        QTAPRODPREOP, DTPREVISTA, NRSEQENTRADA, NRSEQSAIDA, IDSITORDPROD, IDTIPOPLANEJ, NRSEMANA, IDALTERADO, 
                                        DTINTEGRACAO, NRLOTEESTQ, NRSUBLOTE)

            VALUES(V_CDEXPORTEMPR, V_CDEMPRESA,  V_CDFILIAL,     V_CDEXFILIAL, V_CDPRODINTE,   V_CDPRODUTO,    V_NRORDPROD, V_NRSUBORDPROD, V_DTGERORDPROD, 
                   V_QTAPRODPREOP, V_DTPREVISTA, V_NRSEQENTRADA, V_NRSEQSAIDA, V_IDSITORDPROD, V_IDTIPOPLANEJ, V_NRSEMANA,  V_IDALTERADO, 
                   V_DTINTEGRACAO, V_NRLOTEESTQ, V_NRSUBLOTE);

           COMMIT;

   END LOOP;
   
   BEGIN 
      SELECT IDMODELOBALANCA
        INTO V_IDMODELOBALANCA
        FROM PARAMAN;
   EXCEPTION
      WHEN OTHERS THEN
            V_IDMODELOBALANCA := 'XXX';
   END;
   
   CASE WHEN V_IDMODELOBALANCA = '99' THEN LNK_USR_ORDPRODUCAO; --MODELO DE INTEGRACAO LENKE PROPACK
        ELSE V_IDMODELOBALANCA := 'XXX'; 
   END CASE; 
   
   COMMIT;   

END;
/
-- VERSAO --
BEGIN ATUVEROBJ('ENVIA_ORDEM_PRODUCAO','6.39.005'); END;
/
