CREATE OR REPLACE PROCEDURE EFETIVA_SUBGRU_DUPLICADO
(
P_CDFILIAL IN VARCHAR2,
P_CDCIA IN VARCHAR2,
P_CDMANCIA IN VARCHAR2,
P_NRSERVICOCIAFILI IN NUMBER,
P_CDCLASSE IN VARCHAR2,
P_CDSUBGRU IN VARCHAR2,
P_NRSEQSUBGRUSEMAM IN VARCHAR2,
P_CDOPERADOR IN VARCHAR2,
P_NRORG IN NUMBER 
)
AS
V_SEQ VARCHAR2(20);
V_NRSEQSUBGRUSEMAM NUMBER;
V_NRORDSUBGRUSEMAM NUMBER;
V_NRSEQSUBGRUORI NUMBER;
V_CONTADOR NUMBER;
V_IDPROPSUBSEMAM VARCHAR2(1); 
V_QTPROPSUBSEMAM FLOAT;
V_DTINIVGSUMA DATE; 
V_DTFIMVGSUMA DATE;
V_QT_SUBGRU_ITEMFAT NUMBER;
V_SUBGRUPO_N_EFET NUMBER;
BEGIN
   NOVO_CODIGO_NT('SUBGRUSEMAM', V_SEQ);
   V_NRSEQSUBGRUSEMAM := TO_NUMBER(V_SEQ);

   SELECT MAX(NRSEQSUBGRUSEMAM)
     INTO V_NRSEQSUBGRUORI
     FROM SUBGRUSEMAM
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU;

   SELECT MAX(DTINIVGSUMA), MAX(DTFIMVGSUMA), COUNT(1)
     INTO V_DTINIVGSUMA, V_DTFIMVGSUMA, V_SUBGRUPO_N_EFET
     FROM AUXSUBGRUSEMAM
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM
     AND IDATIVO = 'S';

   /*Nao permite reaplicar a efetivacao*/
   IF V_SUBGRUPO_N_EFET = 0 THEN
      RETURN;
   END IF;

   IF V_DTINIVGSUMA IS NULL OR V_DTFIMVGSUMA IS NULL OR
      V_DTINIVGSUMA > V_DTFIMVGSUMA THEN
      /*Operacao bloqueada. Subgrupo nao possui data de vigencia informada ou a vigencia e invalida*/
      RAISE_APPLICATION_ERROR(-20000, 'APPERRMSGSTR' || 'APP-00091' || 'APPERRMSGEND');
   END IF;

   INSERT INTO SUBGRUSEMAM
   (CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI,
    CDCLASSE, CDSUBGRU, NRSEQSUBGRUSEMAM,
    IDPROPSUBSEMAM, QTPROPSUBSEMAM, DTINIVGSUMA, DTFIMVGSUMA, NRORDSUBGRUSEMAM,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI,
    CDCLASSE, CDSUBGRU, V_NRSEQSUBGRUSEMAM,
    IDPROPSUBSEMAM, QTPROPSUBSEMAM, DTINIVGSUMA, DTFIMVGSUMA, NRORDSUBGRUSEMAM,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, 'S'
     FROM AUXSUBGRUSEMAM
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM
     AND IDATIVO = 'S';

   INSERT INTO PROPSUBGRUSE
   (CDFILIAL, CDCIA, CDMANCIA,
    NRSERVICOCIAFILI, CDCLASSE, 
    CDSUBGRU, NRSEQSUBGRUSEMAM, 
    QTPAXDE, QTPAXATE, QTSUBGRUPO,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA,
          NRSERVICOCIAFILI, CDCLASSE,
          CDSUBGRU, V_NRSEQSUBGRUSEMAM,
          QTPAXDE, QTPAXATE, QTSUBGRUPO,
          NRORG, NRORGINCLUSAO, NRORGULTATU,
          CDOPERINCLUSAO, CDOPERULTATU,
          DTULTATU, DTINCLUSAO, IDATIVO
    FROM AUXPROPSUBGRUSE
   WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;

   INSERT INTO PROCIASUBSEMAM
   (CDFILIAL, CDCIA, CDMANCIA,
    NRSERVICOCIAFILI, CDCLASSE, 
    CDSUBGRU, NRSEQSUBGRUSEMAM,
    CDPRODUTO, QTPRODUTOCIA, NRORDEM,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA,
    NRSERVICOCIAFILI, CDCLASSE, 
    CDSUBGRU, V_NRSEQSUBGRUSEMAM,
    CDPRODUTO, QTPRODUTOCIA, NRORDEM,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO
     FROM AUXPROCIASUBSEMAM
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;
   
   INSERT INTO CICLOSUBGRUSEMAM
   (CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI,
    CDCLASSE, CDSUBGRU, NRSEQSUBGRUSEMAM,
    CDCICLO, NRITAIRVISION, FGFOTOSUBSEMAM, FGFOTOSUBSEMAMT,
    DTEFETSUMA, DTREVISUMA, DSSUBGRUPOIMP,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)    
   SELECT CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI,
    CDCLASSE, CDSUBGRU, V_NRSEQSUBGRUSEMAM,
    CDCICLO, NRITAIRVISION, FGFOTOSUBSEMAM, FGFOTOSUBSEMAMT,
    DTEFETSUMA, DTREVISUMA, DSSUBGRUPOIMP,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO
     FROM AUXCICLOSUBGRUSEMAM
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;
      
   INSERT INTO MONTASUBSEMAM 
   (CDFILIAL, CDCIA, CDMANCIA, 
    NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, NRSEQSUBGRUSEMAM,
    CDCICLO, DSMONTASUBSEMAM, DSMONTASUBSEMAMHTML, 
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA, 
    NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, V_NRSEQSUBGRUSEMAM,
    CDCICLO, DSMONTASUBSEMAM, DSMONTASUBSEMAMHTML, 
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO
     FROM AUXMONTASUBSEMAM
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU
      AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;

   INSERT INTO PRODSUBSEMAM
   (CDFILIAL, CDCIA, CDMANCIA,
    NRSERVICOCIAFILI, CDCLASSE, 
    CDSUBGRU, NRSEQSUBGRUSEMAM,
    CDPRODUTO, CDCICLO, QTPRODSUMA,
    TXCOPRODSUMA, NRITAIRVISION, NRORDEM,
    QTGRAMATURA, VRPESOGRAMATURA,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA,
    NRSERVICOCIAFILI, CDCLASSE, 
    CDSUBGRU, V_NRSEQSUBGRUSEMAM,
    CDPRODUTO, CDCICLO, QTPRODSUMA,
    TXCOPRODSUMA, NRITAIRVISION, NRORDEM,
    QTGRAMATURA, VRPESOGRAMATURA,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO
     FROM AUXPRODSUBSEMAM
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;

   INSERT INTO RECSUBSEMAM
   (CDFILIAL, CDCIA, CDMANCIA, 
    NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, NRSEQSUBGRUSEMAM,
    CDCICLO, CDRECEITA, QTRECSUMA, TXCOMRECSUMA, NRITAIRVISION, 
    NRORDEM, QTGRAMATURA, VRPESOGRAMATURA, 
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA, 
    NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, V_NRSEQSUBGRUSEMAM,
    CDCICLO, CDRECEITA, QTRECSUMA, TXCOMRECSUMA, NRITAIRVISION, 
    NRORDEM, QTGRAMATURA, VRPESOGRAMATURA, 
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO
     FROM AUXRECSUBSEMAM
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM; 
   
   INSERT INTO SUBGRUPRINCIPALMENU
   (CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, NRSEQSUBGRUSEMAM,
    CDCICLO, CDSUBGRUPRIN, NRSEQSUBGRUSEMAMPRIN,
    NRORG, NRORGINCLUSAO, NRORGULTATU,
    CDOPERINCLUSAO, CDOPERULTATU,
    DTULTATU, DTINCLUSAO, IDATIVO)
   SELECT CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, V_NRSEQSUBGRUSEMAM,
          CDCICLO, CDSUBGRUPRIN, NRSEQSUBGRUSEMAMPRIN,
          NRORG, NRORGINCLUSAO, NRORGULTATU,
          CDOPERINCLUSAO, CDOPERULTATU,
          DTULTATU, DTINCLUSAO, IDATIVO
     FROM AUXSUBGRUPRINCMENU
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU
      AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;
   
   
   SELECT MAX(IDPROPSUBSEMAM), MAX(QTPROPSUBSEMAM)
     INTO V_IDPROPSUBSEMAM, V_QTPROPSUBSEMAM
     FROM SUBGRUSEMAM
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU
      AND NRSEQSUBGRUSEMAM = V_NRSEQSUBGRUSEMAM;

   /*
      Verifica se houve alteracao em composicao do subgrupo. Se nao: preencher vinculo na tabela PRECOSESUBGRU e preencher SUBGRUTABPRECOM automaticamente
   */      
   FOR CUR_CICLO_ALT IN 
   (SELECT C.CDCICLO FROM AUXCICLOSUBGRUSEMAM C
     WHERE C.CDFILIAL = P_CDFILIAL
       AND C.CDCIA = P_CDCIA
       AND C.CDMANCIA = P_CDMANCIA
       AND C.NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
       AND C.CDCLASSE = P_CDCLASSE
       AND C.CDSUBGRU = P_CDSUBGRU
       AND C.NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM
       AND C.CDCICLO NOT IN -- Somente ciclos que nao sofreram alteracao de composicao
    (   
    SELECT NVL(A.CDCICLO, R.CDCICLO) AS CDCICLO
      FROM (SELECT CDCICLO, CDRECEITA, QTRECSUMA, QTGRAMATURA, VRPESOGRAMATURA
              FROM AUXRECSUBSEMAM
             WHERE CDFILIAL = P_CDFILIAL
               AND CDCIA = P_CDCIA
               AND CDMANCIA = P_CDMANCIA
               AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
               AND CDCLASSE = P_CDCLASSE
               AND CDSUBGRU = P_CDSUBGRU
               AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM) A
           FULL OUTER JOIN 
           (SELECT CDCICLO, CDRECEITA, QTRECSUMA, QTGRAMATURA, VRPESOGRAMATURA
              FROM RECSUBSEMAM
             WHERE CDFILIAL = P_CDFILIAL
               AND CDCIA = P_CDCIA
               AND CDMANCIA = P_CDMANCIA
               AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
               AND CDCLASSE = P_CDCLASSE
               AND CDSUBGRU = P_CDSUBGRU
               AND NRSEQSUBGRUSEMAM = V_NRSEQSUBGRUORI
            ) R ON A.CDCICLO = R.CDCICLO AND 
                   A.CDRECEITA = R.CDRECEITA
     WHERE ( 
           NVL(A.CDRECEITA, '>>>VAZIO<<<') <> NVL(R.CDRECEITA, '>>>VAZIO<<<') OR
           NVL(A.QTRECSUMA, 0.00) <> NVL(R.QTRECSUMA, 0.00) OR
           NVL(A.QTGRAMATURA, 0.00) <> NVL(R.QTGRAMATURA, 0.00) OR
           NVL(A.VRPESOGRAMATURA, 0.00) <> NVL(R.VRPESOGRAMATURA, 0.00)
           )
    UNION
    SELECT NVL(A.CDCICLO, R.CDCICLO) AS CDCICLO
      FROM (SELECT CDCICLO, CDPRODUTO, QTPRODSUMA, QTGRAMATURA, VRPESOGRAMATURA
              FROM AUXPRODSUBSEMAM
             WHERE CDFILIAL = P_CDFILIAL
               AND CDCIA = P_CDCIA
               AND CDMANCIA = P_CDMANCIA
               AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
               AND CDCLASSE = P_CDCLASSE
               AND CDSUBGRU = P_CDSUBGRU
               AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM) A
           FULL OUTER JOIN 
           (SELECT CDCICLO, CDPRODUTO, QTPRODSUMA, QTGRAMATURA, VRPESOGRAMATURA
              FROM PRODSUBSEMAM
             WHERE CDFILIAL = P_CDFILIAL
               AND CDCIA = P_CDCIA
               AND CDMANCIA = P_CDMANCIA
               AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
               AND CDCLASSE = P_CDCLASSE
               AND CDSUBGRU = P_CDSUBGRU
               AND NRSEQSUBGRUSEMAM = V_NRSEQSUBGRUORI
            ) R ON A.CDCICLO = R.CDCICLO AND 
                   A.CDPRODUTO = R.CDPRODUTO
     WHERE ( 
           NVL(A.CDPRODUTO, '>>>VAZIO<<<') <> NVL(R.CDPRODUTO, '>>>VAZIO<<<') OR
           NVL(A.QTPRODSUMA, 0.00) <> NVL(R.QTPRODSUMA, 0.00) OR
           NVL(A.QTGRAMATURA, 0.00) <> NVL(R.QTGRAMATURA, 0.00) OR
           NVL(A.VRPESOGRAMATURA, 0.00) <> NVL(R.VRPESOGRAMATURA, 0.00)
           )
    )
   ) LOOP
      
      /*Insere uma duplicata do vinculo do subgrupo anterior para esse subgrupo*/
      INSERT INTO PRECOSESUBGRU
      (CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, CDCICLO,
       NRSEQSUBGRUSEMAM, NRSEQPRECOSESUBGRU, NRSERVICOCIAFILIPRECO,
       NRORG, NRORGINCLUSAO, NRORGULTATU,
       DTINCLUSAO, DTULTATU,
       CDOPERINCLUSAO, CDOPERULTATU, IDATIVO)
      SELECT CDFILIAL, CDCIA, CDMANCIA, NRSERVICOCIAFILI, CDCLASSE, CDSUBGRU, CDCICLO,
             V_NRSEQSUBGRUSEMAM, NRSEQPRECOSESUBGRU, NRSERVICOCIAFILIPRECO,
             P_NRORG, P_NRORG, P_NRORG,
             SYSDATE, SYSDATE,
             P_CDOPERADOR, P_CDOPERADOR, 'S'
        FROM PRECOSESUBGRU
       WHERE CDFILIAL = P_CDFILIAL
         AND CDCIA = P_CDCIA
         AND CDMANCIA = P_CDMANCIA
         AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
         AND CDCLASSE = P_CDCLASSE 
         AND CDSUBGRU = P_CDSUBGRU
         AND NRSEQSUBGRUSEMAM = V_NRSEQSUBGRUORI
         AND CDCICLO = CUR_CICLO_ALT.CDCICLO;

      /*Pesquisa precos vinculados ao subgrupo anterior. Se encontrado, preenche a tabela de relacao com o novo subgrupo*/
      FOR CUR_PRECOSUBGRU IN
      (
      SELECT CDFILIAL, CDCIA, NRTABPRECO, NRSERVICOCIAFILIPRECO, CDCLASSE, CDCICLO, NRSEQPRECO, MAX(VRPRECOSUBGRU) AS VRPRECOSUBGRU, MAX(VRPRECOSUBGRUD) AS VRPRECOSUBGRUD
        FROM SUBGRUTABPRECOM        
       WHERE CDFILIAL = P_CDFILIAL
         AND CDCIA = P_CDCIA
         AND CDMANCIA = P_CDMANCIA
         AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
         AND CDCLASSE = P_CDCLASSE
         AND CDSUBGRU = P_CDSUBGRU
         AND NRSEQSUBGRUSEMAM = V_NRSEQSUBGRUORI
         AND CDCICLO = CUR_CICLO_ALT.CDCICLO
       GROUP BY CDFILIAL, CDCIA, NRTABPRECO, NRSERVICOCIAFILIPRECO, CDCLASSE, CDCICLO, NRSEQPRECO
      ) LOOP
        
        /*Verifica se o item de faturamento encontrado esta vinculado somente a este subgrupo*/
        SELECT COUNT(1)
          INTO V_QT_SUBGRU_ITEMFAT
          FROM
        (
        SELECT DISTINCT NRSERVICOCIAFILI, CDSUBGRU
          FROM SUBGRUTABPRECOM
         WHERE CDFILIAL = CUR_PRECOSUBGRU.CDFILIAL
           AND CDCIA = CUR_PRECOSUBGRU.CDCIA
           AND NRTABPRECO = CUR_PRECOSUBGRU.NRTABPRECO
           AND NRSERVICOCIAFILIPRECO = CUR_PRECOSUBGRU.NRSERVICOCIAFILIPRECO
           AND CDCLASSE = CUR_PRECOSUBGRU.CDCLASSE
           AND CDCICLO = CUR_PRECOSUBGRU.CDCICLO
           AND NRSEQPRECO = CUR_PRECOSUBGRU.NRSEQPRECO
        );

        /*Verifica se o item de faturamento encontrado esta vinculado somente a este subgrupo (independente da vigencia)*/
        IF V_QT_SUBGRU_ITEMFAT = 1 THEN

          NOVO_CODIGO_NT('SUBGRUTABPRECOM' || CUR_PRECOSUBGRU.CDFILIAL || CUR_PRECOSUBGRU.CDCIA || CUR_PRECOSUBGRU.NRTABPRECO || TO_CHAR(CUR_PRECOSUBGRU.NRSEQPRECO), V_SEQ);

          INSERT INTO SUBGRUTABPRECOM
          (CDFILIAL, CDCIA, NRTABPRECO, NRSERVICOCIAFILIPRECO, 
           CDCLASSE, CDCICLO, NRSEQPRECO, NRSUBGRUTABPRECOM,
           CDMANCIA, NRSERVICOCIAFILI, CDSUBGRU, NRSEQSUBGRUSEMAM,
           IDPROPSUBSEMAM, QTPROPSUBSEMAM,
           VRPRECOSUBGRU, VRPRECOSUBGRUD,
           NRORG, NRORGINCLUSAO, NRORGULTATU,
           DTINCLUSAO, DTULTATU,
           CDOPERINCLUSAO, CDOPERULTATU, IDATIVO)
          VALUES
          (CUR_PRECOSUBGRU.CDFILIAL, CUR_PRECOSUBGRU.CDCIA, CUR_PRECOSUBGRU.NRTABPRECO, CUR_PRECOSUBGRU.NRSERVICOCIAFILIPRECO, 
           CUR_PRECOSUBGRU.CDCLASSE, CUR_PRECOSUBGRU.CDCICLO, CUR_PRECOSUBGRU.NRSEQPRECO, TO_NUMBER(V_SEQ),
           P_CDMANCIA, P_NRSERVICOCIAFILI, P_CDSUBGRU, V_NRSEQSUBGRUSEMAM,
           V_IDPROPSUBSEMAM, V_QTPROPSUBSEMAM,
           CUR_PRECOSUBGRU.VRPRECOSUBGRU, CUR_PRECOSUBGRU.VRPRECOSUBGRUD,
           P_NRORG, P_NRORG, P_NRORG,
           SYSDATE, SYSDATE,
           P_CDOPERADOR, P_CDOPERADOR, 'S');
        END IF;
        
      END LOOP;

   END LOOP;

   UPDATE AUXSUBGRUPRINCMENU
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;


   UPDATE AUXRECSUBSEMAM
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;

   UPDATE AUXPRODSUBSEMAM
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;
   
   UPDATE AUXMONTASUBSEMAM
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU
      AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;     

   UPDATE AUXCICLOSUBGRUSEMAM
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;

   UPDATE AUXPROCIASUBSEMAM
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU
      AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;
   
   UPDATE AUXPROPSUBGRUSE
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
      AND CDCIA = P_CDCIA
      AND CDMANCIA = P_CDMANCIA
      AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
      AND CDCLASSE = P_CDCLASSE
      AND CDSUBGRU = P_CDSUBGRU
      AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;

   UPDATE AUXSUBGRUSEMAM
      SET IDATIVO = 'N',
          DTULTATU = SYSDATE,
          CDOPERULTATU = P_CDOPERADOR
    WHERE CDFILIAL = P_CDFILIAL
     AND CDCIA = P_CDCIA
     AND CDMANCIA = P_CDMANCIA
     AND NRSERVICOCIAFILI = P_NRSERVICOCIAFILI
     AND CDCLASSE = P_CDCLASSE
     AND CDSUBGRU = P_CDSUBGRU
     AND NRSEQSUBGRUSEMAM = P_NRSEQSUBGRUSEMAM;
END;
/