CREATE OR REPLACE PROCEDURE IMPORTA_MANUAL(
P_CDCIA      IN COMPANHIA.CDCIA   %TYPE,
P_CDFILIORIG IN FILIAL   .CDFILIAL%TYPE,
P_CDFILIDEST IN FILIAL   .CDFILIAL%TYPE,
P_CDMANCIA   IN VARCHAR2,
P_CDCIADEST  IN COMPANHIA.CDCIA   %TYPE)
AS
V_CDMANCIA     MANUALCIA.CDMANCIA  %TYPE;
V_CDESPEPROD   ESPEPROD .CDESPEPROD%TYPE;
V_CDESPPRODAUX ESPEPROD .CDESPEPROD%TYPE;

BEGIN

   SELECT NVL(MAX(CDMANCIA),0)
   INTO V_CDMANCIA
   FROM MANUALCIA
   WHERE (CDFILIAL   = P_CDFILIDEST) AND
         (CDCIA      = P_CDCIADEST     ) AND
         (IDTPMANUAL = 'M'         );

   FOR C_MAN IN(SELECT CDMANCIA,LPAD(V_CDMANCIA+ROWNUM,4,'0') CDMANDES,
                       IDTPMANUAL,DSMANUAL,DTINCMANCIA,CDOPEMANCIA,
                       DTINIVGMA,DTFIMVGMA,IDPROTMA,DTCUSTOMAN
                FROM MANUALCIA
                WHERE (CDFILIAL   = P_CDFILIORIG) AND
                      (CDCIA      = P_CDCIA     ) AND
                      (IDTPMANUAL = 'M'         ) AND
                      (INSTR(NVL(P_CDMANCIA,CDMANCIA),CDMANCIA)>0)) LOOP

      INSERT INTO MANUALCIA
         (CDFILIAL,CDCIA,CDMANCIA,IDTPMANUAL,DSMANUAL,
          DTINCMANCIA,CDOPEMANCIA,IDSITMANCIA,DTINIVGMA,DTFIMVGMA,
          IDPROTMA,DTCUSTOMAN)
      VALUES
         (P_CDFILIDEST,P_CDCIADEST,C_MAN.CDMANDES,C_MAN.IDTPMANUAL,C_MAN.DSMANUAL,
          SYSDATE,C_MAN.CDOPEMANCIA,'1',C_MAN.DTINIVGMA,C_MAN.DTFIMVGMA,
          C_MAN.IDPROTMA,C_MAN.DTCUSTOMAN);

      FOR C_ESP IN (SELECT EP.CDPRODUTO,EP.CDESPEPROD,EP.NMESPEPROD,EP.DTVALESPEPRO,
                           EP.DTINCESPEPRO,EP.QTPADESPEPRO,EP.CDFILIAL,EP.CDOPERADOR,
                           EP.CDCIA,EP.CDMANCIA,EP.IDTPMANUAL,EP.IDCOMPPADRAO,
                           EP.DTAPRESENTA,EP.NMFOTOESP,EP.DTEFETIVA,EP.DTREVISAO
                    FROM ESPEPROD EP, PRODUTO PR
                    WHERE (EP.CDFILIAL     = P_CDFILIORIG  ) AND
                          (EP.CDCIA        = P_CDCIA       ) AND
                          (EP.CDMANCIA     = C_MAN.CDMANCIA) AND
                          (EP.IDTPMANUAL   = 'M'           ) AND
                          (PR.CDPRODUTO    = EP.CDPRODUTO  ) AND
                          (PR.IDPRODCOMISS = '1'           )) LOOP

         SELECT LPAD(TO_CHAR(NVL(MAX(TO_NUMBER(CDESPEPROD)),0)+1),10,'0')
         INTO V_CDESPEPROD
         FROM ESPEPROD
         WHERE (CDPRODUTO = C_ESP.CDPRODUTO);

         INSERT INTO ESPEPROD
           (CDFILIAL,CDCIA,CDMANCIA,CDOPERADOR,
            CDPRODUTO,CDESPEPROD,NMESPEPROD,DTVALESPEPRO,
            DTINCESPEPRO,QTPADESPEPRO,IDTPMANUAL,
            IDCOMPPADRAO,DTAPRESENTA,NMFOTOESP,DTEFETIVA,
            DTREVISAO)
         VALUES
           (P_CDFILIDEST,P_CDCIADEST,C_MAN.CDMANDES,C_ESP.CDOPERADOR,
            C_ESP.CDPRODUTO,V_CDESPEPROD,C_ESP.NMESPEPROD,C_ESP.DTVALESPEPRO,
            C_ESP.DTINCESPEPRO,C_ESP.QTPADESPEPRO,C_ESP.IDTPMANUAL,
            C_ESP.IDCOMPPADRAO,C_ESP.DTAPRESENTA,C_ESP.NMFOTOESP,C_ESP.DTEFETIVA,
            C_ESP.DTREVISAO);

        FOR C_COM IN (SELECT CP.CDPRODUTO,CP.CDESPEPROD,CP.CDTIPOCOMP,
                             CP.CDPRODINSUMO,CP.IDUTAPROVREQ,CP.QTINSUMO,
                             CP.CDTIPOINSU,CP.SGUNIDADE,CP.IDSEMIACCOMP,
                             CP.IDUTILOTEPR,CP.CDPRODUTOAUX,CP.CDESPPRODAUX,
                             CP.NRORDCOMP,CP.TXCOMITCOMP,CP.IDIMPCOMPDEL,
                             CP.VRLOADCOMP,CP.DSLOADCOMP,CP.QTBRUTINSPRO,
                             CP.VRPRENDINSPR, EP.NMESPEPROD,EP.DTVALESPEPRO,
                             EP.DTINCESPEPRO,EP.QTPADESPEPRO,EP.CDFILIAL, EP.CDOPERADOR,
                             EP.CDCIA,EP.CDMANCIA,EP.IDTPMANUAL,EP.IDCOMPPADRAO,
                             EP.DTAPRESENTA,EP.NMFOTOESP,EP.DTEFETIVA,EP.DTREVISAO
                      FROM COMPPROD CP, PRODUTO PR, ESPEPROD EP
                      WHERE (CP.CDPRODUTO    = C_ESP.CDPRODUTO ) AND
                            (CP.CDESPEPROD   = C_ESP.CDESPEPROD) AND
                            (CP.CDPRODUTO    = EP.CDPRODUTO   ) AND
                            (CP.CDESPEPROD   = EP.CDESPEPROD  ) AND
                            (PR.CDPRODUTO    = CP.CDPRODINSUMO ) AND
                            (PR.IDPRODCOMISS = '2'             )) LOOP

           SELECT LPAD(TO_CHAR(NVL(MAX(CDESPEPROD),0)+1),10,'0')
           INTO V_CDESPPRODAUX
           FROM ESPEPROD
           WHERE (CDPRODUTO = C_COM.CDPRODINSUMO);

           INSERT INTO ESPEPROD
             (CDFILIAL,CDCIA,CDMANCIA,CDOPERADOR,
              CDPRODUTO,CDESPEPROD,NMESPEPROD,DTVALESPEPRO,
              DTINCESPEPRO,QTPADESPEPRO,IDTPMANUAL,
              IDCOMPPADRAO,DTAPRESENTA,NMFOTOESP,DTEFETIVA,
              DTREVISAO)
           VALUES
             (P_CDFILIDEST,P_CDCIADEST,C_MAN.CDMANDES,C_COM.CDOPERADOR,
              C_COM.CDPRODINSUMO,V_CDESPPRODAUX,C_COM.NMESPEPROD,C_COM.DTVALESPEPRO,
              C_COM.DTINCESPEPRO,C_COM.QTPADESPEPRO,C_COM.IDTPMANUAL,
              C_COM.IDCOMPPADRAO,C_COM.DTAPRESENTA,C_COM.NMFOTOESP,C_COM.DTEFETIVA,
              C_COM.DTREVISAO);

           INSERT INTO COMPPROD
           (CDPRODUTO,CDESPEPROD,CDTIPOCOMP,CDPRODINSUMO,
            IDUTAPROVREQ,QTINSUMO,CDTIPOINSU,SGUNIDADE,
            IDSEMIACCOMP,IDUTILOTEPR,CDPRODUTOAUX,
            CDESPPRODAUX,NRORDCOMP,TXCOMITCOMP,
            IDIMPCOMPDEL,VRLOADCOMP,DSLOADCOMP,
            QTBRUTINSPRO,VRPRENDINSPR)
           VALUES
           (C_COM.CDPRODUTO,V_CDESPEPROD,C_COM.CDTIPOCOMP,C_COM.CDPRODINSUMO,
            C_COM.IDUTAPROVREQ,C_COM.QTINSUMO,C_COM.CDTIPOINSU,C_COM.SGUNIDADE,
            C_COM.IDSEMIACCOMP,C_COM.IDUTILOTEPR,C_COM.CDPRODUTOAUX,
            V_CDESPPRODAUX,C_COM.NRORDCOMP,C_COM.TXCOMITCOMP,
            C_COM.IDIMPCOMPDEL,C_COM.VRLOADCOMP,C_COM.DSLOADCOMP,
            C_COM.QTBRUTINSPRO,C_COM.VRPRENDINSPR);

           INSERT INTO COMPPROD
           (CDPRODUTO,CDESPEPROD,CDTIPOCOMP,CDPRODINSUMO,
            IDUTAPROVREQ,QTINSUMO,CDTIPOINSU,SGUNIDADE,
            IDSEMIACCOMP,IDUTILOTEPR,CDPRODUTOAUX,CDESPPRODAUX,
            NRORDCOMP,TXCOMITCOMP,IDIMPCOMPDEL,VRLOADCOMP,
            DSLOADCOMP,QTBRUTINSPRO,VRPRENDINSPR)
           SELECT CP.CDPRODUTO,V_CDESPPRODAUX,CP.CDTIPOCOMP,CP.CDPRODINSUMO,
                  CP.IDUTAPROVREQ,CP.QTINSUMO,CP.CDTIPOINSU,CP.SGUNIDADE,
                  CP.IDSEMIACCOMP,CP.IDUTILOTEPR,C_COM.CDPRODUTO, V_CDESPEPROD,
                  CP.NRORDCOMP,CP.TXCOMITCOMP,CP.IDIMPCOMPDEL,CP.VRLOADCOMP,
                  CP.DSLOADCOMP,CP.QTBRUTINSPRO,CP.VRPRENDINSPR
           FROM COMPPROD CP, PRODUTO PR
           WHERE (CP.CDPRODUTO             = C_COM.CDPRODUTOAUX) AND
                 (CP.CDESPEPROD            = C_COM.CDESPPRODAUX) AND
                 (PR.CDPRODUTO             = CP.CDPRODINSUMO ) AND
                 (NVL(PR.IDPRODCOMISS,'3') = '3'             );
         END LOOP;
      END LOOP;
   END LOOP;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('IMPORTA_MANUAL','5.85.000'); END;
/

