CREATE OR REPLACE
PROCEDURE COPIA_PROSPECT_CLIENTE
  (P_CDPROSPECT IN PROSPECT.CDPROSPECT%TYPE,
   P_NRINSJURPROS IN PROSPECT.NRINSJURPROS%TYPE,
   P_NMRAZSOCPROS IN PROSPECT.NMRAZSOCPROS%TYPE,
   P_NMCOMPRZSCLI IN CLIENTE.NMCOMPRZSCLI%TYPE,
   P_NMFANTPROS IN PROSPECT.NMFANTPROS%TYPE,
   P_IDTPIJURPROS IN PROSPECT.IDTPIJURPROS%TYPE,
   P_CDCLIENTE IN CLIENTE.CDCLIENTE%TYPE,
   P_CDOPERADOR IN VARCHAR2,
   P_MESREAJUSTE IN CLIENTE.NRMESREAJCLIE%TYPE,
   P_BOCOMMITCHANGES IN BOOLEAN)
AS
   V_CDPROSPECT VARCHAR2(21);
   V_IDTPIJURPROS VARCHAR2(1);
   V_NRINSJURPROS VARCHAR2(20);
   V_NMRAZSOCPROS VARCHAR2(50);
   V_NMFANTPROS VARCHAR2(50);
   V_NRINSESTPROS VARCHAR2(20);
   V_CDATIVCLI VARCHAR2(10);
   V_CDSEGMER VARCHAR2(5);
   V_VRFATUPROS DOUBLE PRECISION;
   V_NRFUNCPROS VARCHAR2(5);
   V_NRUNOPPROS VARCHAR2(5);
   V_DSHOPAPROS VARCHAR2(50);
   V_DTCADAPROS DATE;
   V_IDSITUPROS VARCHAR2(1);
   V_CDMODODIVULG VARCHAR2(5);
   V_NMMODODIVULG VARCHAR2(30);
   V_IDIDIOMA VARCHAR2(3);
   V_CDINTECLIE VARCHAR2(2);
   V_DSOBSERVPROS LONG RAW;
   V_DTHROBSPROSP DATE;
   V_NRPARCNEGOCIO NUMBER;
   V_NRENDCOBRCLIE NUMBER;
   V_CDCLIENTE VARCHAR2(21);
   V_VERIFICA NUMBER;
   V_STATUST1 VARCHAR2(10);
   V_STATUST2 VARCHAR2(10);
   V_STATUST3 VARCHAR2(10);
   V_COUNTPARCERIA NUMBER;
   V_NOVOPARCERIA VARCHAR2(20);
BEGIN
   BEGIN
/*    -- VERIFICA SE EXISTE A TRIGGER GERA_PARCNEGOCIO_CLIENTE NO BANCO DE DADOS
      SELECT COUNT(*), NVL(MAX(STATUS), 'DISABLED')
        INTO V_VERIFICA, V_STATUST1
        FROM USER_TRIGGERS
       WHERE TRIGGER_NAME = 'GERA_PARCNEGOCIO_CLIENTE'
         AND STATUS = 'ENABLED';
      IF V_VERIFICA > 0 THEN
         -- DESABILITA TRIGGER GERA_PARCNEGOCIO_CLIENTE PARA REALIZAR A INCLUSÃO DO NOVO CLIENTE
         EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_PARCNEGOCIO_CLIENTE DISABLE';
      END IF;
      -- VERIFICA SE EXISTE A TRIGGER GERA_ENDERECOPARC_ENDCLIE NO BANCO DE DADOS
      SELECT COUNT(*), NVL(MAX(STATUS), 'DISABLED')
        INTO V_VERIFICA, V_STATUST2
        FROM USER_TRIGGERS
       WHERE TRIGGER_NAME = 'GERA_ENDERECOPARC_ENDCLIE'
         AND STATUS = 'ENABLED';
      IF V_VERIFICA > 0 THEN
         -- DESABILITA TRIGGER GERA_ENDERECOPARC_ENDCLIE PARA REALIZAR A INCLUSÃO DOS ENDEREÇOS
         EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_ENDERECOPARC_ENDCLIE DISABLE';
      END IF;
      -- VERIFICA SE EXISTE A TRIGGER GERA_RELAC_PARCNEG_INTECLIE NO BANCO DE DADOS
      SELECT COUNT(*), NVL(MAX(STATUS), 'DISABLED')
        INTO V_VERIFICA, V_STATUST3
        FROM USER_TRIGGERS
       WHERE TRIGGER_NAME = 'GERA_RELAC_PARCNEG_INTECLIE'
         AND STATUS = 'ENABLED';
      IF V_VERIFICA > 0 THEN
         -- DESABILITA TRIGGER GERA_RELAC_PARCNEG_INTECLIE PARA REALIZAR A INCLUSÃO DOS INTERLOCUTORES
         EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_RELAC_PARCNEG_INTECLIE DISABLE';
      END IF; */
      -- PEGA OS DADOS DO PROSPECT
      SELECT P.CDPROSPECT, P.IDTPIJURPROS, P.NRINSJURPROS, P.NMRAZSOCPROS, P.NMFANTPROS,
             P.NRINSESTPROS, P.CDATIVCLI, P.CDSEGMER, P.VRFATUPROS, P.NRFUNCPROS,
             P.NRUNOPPROS, P.DSHOPAPROS, P.DTCADAPROS, P.IDSITUPROS, P.CDMODODIVULG,
             M.NMMODODIVULG, P.IDIDIOMA, P.NRPARCNEGOCIO
        INTO V_CDPROSPECT, V_IDTPIJURPROS, V_NRINSJURPROS, V_NMRAZSOCPROS, V_NMFANTPROS,
             V_NRINSESTPROS, V_CDATIVCLI, V_CDSEGMER, V_VRFATUPROS, V_NRFUNCPROS,
             V_NRUNOPPROS, V_DSHOPAPROS, V_DTCADAPROS, V_IDSITUPROS, V_CDMODODIVULG,
             V_NMMODODIVULG, V_IDIDIOMA, V_NRPARCNEGOCIO
        FROM MODODIVULG M, PROSPECT P
       WHERE P.CDPROSPECT = P_CDPROSPECT
         AND M.CDMODODIVULG (+)  = P.CDMODODIVULG;
      -- INSERE OS DADOS DO PROSPECT NO CLIENTE
      INSERT INTO CLIENTE
        (CDCLIENTE, IDTPIJURCLIE, NRINSJURCLIE, NMRAZSOCCLIE, NMFANTCLIE, NRINSESTCLIE, DTCADACLPROS,
         VRFATUCLIE, NRFUNCCLIE, NRUNOPCLIE, CDMODODIVULG, CDATIVCLI, CDSEGMER, DSHOMEPACLI, IDIDIOMA,
         DTCADACLIE, NMCOMPRZSCLI, NRPARCNEGOCIO, NRMESREAJCLIE, IDUTLICEUSO, IDLIBGERPER, NRDIAVALPERS)
      VALUES
        (P_CDCLIENTE, P_IDTPIJURPROS, P_NRINSJURPROS, P_NMRAZSOCPROS, P_NMFANTPROS, V_NRINSESTPROS, V_DTCADAPROS,
         V_VRFATUPROS, V_NRFUNCPROS, V_NRUNOPPROS, V_CDMODODIVULG, V_CDATIVCLI, V_CDSEGMER, V_DSHOPAPROS, V_IDIDIOMA,
         SYSDATE, P_NMCOMPRZSCLI, V_NRPARCNEGOCIO, P_MESREAJUSTE, 'S', 'S', 60);
      -- VERIFICA SE PARA O PARCEIRO DE NEGÓCIO EXISTE A PARCERIA 'CLIENTE' CADASTRADA
      SELECT COUNT(*) INTO V_COUNTPARCERIA
        FROM PARCERIA
       WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO
         AND CDTIPOPARCEIRO = 'CLIENTE';
      -- SE NÃO EXISTIR A PARCERIA 'CLIENTE'...
      IF V_COUNTPARCERIA = 0 THEN
         -- EXECUTA A FUNÇÃO PARA GERAR NOVO CODIGO DE PARCERIA
         NOVO_CODIGO_SC('PARCERIA', V_NOVOPARCERIA);
         V_NOVOPARCERIA := SUBSTR(V_NOVOPARCERIA, 11, 10);
         -- INCLUI NA TABELA DE PARCERIA (RELATIONE) UM NOVO REGISTRO, INDICANDO A NOVA PARCERIA
         INSERT INTO PARCERIA
           (NRPARCERIA, NRPARCNEGOCIO, CDTIPOPARCEIRO)
         VALUES
           (V_NOVOPARCERIA, V_NRPARCNEGOCIO, 'CLIENTE');
      END IF;
      -- ATUALIZA O PARCEIRO DE NEGÓCIOS, ALTERANDO DE PROSPECT PARA CLIENTE
      UPDATE PARCNEGOCIO
         SET CDTIPOPARCPRINCIPAL = 'CLIENTE'
       WHERE NRPARCNEGOCIO = V_NRPARCNEGOCIO;
      -- LOOP PARA PEGAR TODOS OS ENDEREÇOS DO PROSPECT E PASSAR PARA O CLIENTE
      FOR C_ENDERECO IN
        (SELECT E.CDPROSPECT, E.IDTPENDEPROS, E.CDPAIS, E.SGESTADO, E.CDMUNICIPIO, E.DSENDEPROS,
                E.NMBAIRPROS, E.NRCEPPROS, E.NRTELEPROS, E.NRRAMALPROS, E.NRTELEXPROS, E.NRFAXPROS,
                E.NMCONTPROS, E.DSEMAILPROS, E.NRTELEPROS1, E.NRRAMALPROS1, E.NRTELRESIPRO,
                E.NRCELULARPRO, B.NMPAIS, C.NMMUNICIPIO, E.NRENDERECOPARC
           FROM MUNICIPIO C, PAIS B, ENDEPROSPECT E
          WHERE E.CDPROSPECT = P_CDPROSPECT
            AND B.CDPAIS = E.CDPAIS
            AND C.CDPAIS = E.CDPAIS
            AND C.SGESTADO = E.SGESTADO
            AND C.CDMUNICIPIO = E.CDMUNICIPIO) LOOP
         -- INSERE O ENDEREÇO DO PROSPECT NO ENDEREÇO DO CLIENTE DE ACORDO COM O IDTPENDEPROS
         INSERT INTO ENDECLIE
           (CDCLIENTE, IDTPENDECLIE, CDPAIS, SGESTADO, CDMUNICIPIO,
            DSENDECLIE, NMBAIRCLIE, NRCEPCLIE, NRTELECLIE,
            NRRAMALCLIE, NRTELEXCLIE, NRFAXCLIE, NMCONTCLIE,
            DSEMAILCLIE, NRTELECLIE1, NRRAMALCLIE1, NRTELRESICLI,
            NRCELULARCLI, NRENDERECOPARC)
         VALUES
           (P_CDCLIENTE, C_ENDERECO.IDTPENDEPROS, C_ENDERECO.CDPAIS, C_ENDERECO.SGESTADO, C_ENDERECO.CDMUNICIPIO,
            C_ENDERECO.DSENDEPROS, C_ENDERECO.NMBAIRPROS, C_ENDERECO.NRCEPPROS, C_ENDERECO.NRTELEPROS,
            C_ENDERECO.NRRAMALPROS, C_ENDERECO.NRTELEXPROS, C_ENDERECO.NRFAXPROS, C_ENDERECO.NMCONTPROS,
            C_ENDERECO.DSEMAILPROS, C_ENDERECO.NRTELEPROS1, C_ENDERECO.NRRAMALPROS1, C_ENDERECO.NRTELRESIPRO,
            C_ENDERECO.NRCELULARPRO, C_ENDERECO.NRENDERECOPARC);
      END LOOP;
      --VERIFICA SE O ENDEREÇO DE COBRANÇA DO CLIENTE JÁ EXISTE SE NÃO COPIA DO ENDEREÇO PRINCIPAL
      SELECT COUNT(*)
        INTO V_NRENDCOBRCLIE
        FROM ENDECLIE
       WHERE CDCLIENTE = P_CDCLIENTE
         AND IDTPENDECLIE = 'C';
      IF V_NRENDCOBRCLIE = 0 THEN
         INSERT INTO ENDECLIE
           (CDCLIENTE, IDTPENDECLIE, CDPAIS, SGESTADO, CDMUNICIPIO,
            DSENDECLIE, NMBAIRCLIE, NRCEPCLIE, NRTELECLIE,
            NRRAMALCLIE, NRTELEXCLIE, NRFAXCLIE, NMCONTCLIE,
            DSEMAILCLIE, NRTELECLIE1, NRRAMALCLIE1, NRTELRESICLI, NRCELULARCLI)
         SELECT E.CDCLIENTE, 'C' AS IDTPENDECLIE, E.CDPAIS, E.SGESTADO, E.CDMUNICIPIO,
                E.DSENDECLIE, E.NMBAIRCLIE, E.NRCEPCLIE, E.NRTELECLIE,
                E.NRRAMALCLIE, E.NRTELEXCLIE, E.NRFAXCLIE, E.NMCONTCLIE,
                E.DSEMAILCLIE, E.NRTELECLIE1, E.NRRAMALCLIE1, E.NRTELRESICLI, E.NRCELULARCLI
           FROM MUNICIPIO C, PAIS B, ENDECLIE E
          WHERE E.CDCLIENTE = P_CDCLIENTE
            AND E.IDTPENDECLIE = 'P'
            AND B.CDPAIS = E.CDPAIS
            AND C.CDPAIS = E.CDPAIS
            AND C.SGESTADO = E.SGESTADO
            AND C.CDMUNICIPIO = E.CDMUNICIPIO;
      END IF;
      -- LOOP PARA PEGAR OS INTERLOCUTORES DO PROSPECT
      FOR C_INTERPROSP IN
        (SELECT I.CDPROSPECT, I.CDINTEPROS, I.CDPAIS, I.SGESTADO, I.CDMUNICIPIO, I.IDTPINTEPROS,
                I.NMINTEPROS, I.DSCARGINPROS, I.DTNASCINPROS, I.NRTEL1INPROS, I.NRRAM1INPROS,
                I.NRTEL2INPROS, I.NRRAM2INPROS, I.NRFAXINPROS, I.IDENDEINPROS, I.DSENDEINPROS,
                I.NMBAIRINPROS, I.NRCEPINPROS, I.DSEMAILIPROS, I.IDSTINTEPROS, I.NRCELULINPRO,
                I.NRTELREINPRO, P.NMPAIS, M.NMMUNICIPIO, I.CDCARGOINTERLOC, C.NMCARGOINTERLOC, I.NRRELACIONAPARC
           FROM INTEPROSP I, PAIS P, MUNICIPIO M, CARGOINTERLOC C
          WHERE (I.CDPROSPECT = P_CDPROSPECT)
            AND (I.CDPAIS = P.CDPAIS(+))
            AND (I.CDPAIS = M.CDPAIS(+))
            AND (I.SGESTADO = M.SGESTADO(+))
            AND (I.CDMUNICIPIO = M.CDMUNICIPIO(+))
            AND (I.CDCARGOINTERLOC = C.CDCARGOINTERLOC(+))
          ORDER BY I.CDINTEPROS) LOOP
         -- INCLUSÃO DO INTERLOCUTOR DO PROSPECT NO INTERLOCUTOR DO CLIENTE
         INSERT INTO INTECLIE
           (CDCLIENTE, CDINTECLIE, NMINTECLIE, DSCARGINCLIE, IDTPINTECLIE,
            CDPAIS, SGESTADO, CDMUNICIPIO, DTNASCINCLIE, NRTEL1INCLIE,
            NRRAM1INCLIE, NRTEL2INCLIE, NRRAM2INCLIE, NRFAXINCLIE, IDENDEINCLIE,
            DSENDEINCLIE, NMBAIRINCLIE, NRCEPINCLIE,  DSEMAILICLIE, IDSTINTECLIE,
            NRCELULINCLI, NRTELREINCLI, CDCARGOINTERLOC, NRRELACIONAPARC)
         VALUES
           (P_CDCLIENTE, LPAD(C_INTERPROSP.CDINTEPROS, 2, '0'), C_INTERPROSP.NMINTEPROS, C_INTERPROSP.DSCARGINPROS, C_INTERPROSP.IDTPINTEPROS,
            C_INTERPROSP.CDPAIS, C_INTERPROSP.SGESTADO, C_INTERPROSP.CDMUNICIPIO, C_INTERPROSP.DTNASCINPROS, C_INTERPROSP.NRTEL1INPROS,
            C_INTERPROSP.NRRAM1INPROS, C_INTERPROSP.NRTEL2INPROS, C_INTERPROSP.NRRAM2INPROS, C_INTERPROSP.NRFAXINPROS, C_INTERPROSP.IDENDEINPROS,
            C_INTERPROSP.DSENDEINPROS, C_INTERPROSP.NMBAIRINPROS, C_INTERPROSP.NRCEPINPROS, C_INTERPROSP.DSEMAILIPROS, C_INTERPROSP.IDSTINTEPROS,
            C_INTERPROSP.NRCELULINPRO, C_INTERPROSP.NRTELREINPRO, C_INTERPROSP.CDCARGOINTERLOC, C_INTERPROSP.NRRELACIONAPARC);
      END LOOP;
      -- ALTERA AS INFORMAÇÕES DO CONTATO DO PROSPECT PARA O CLIENTE
      FOR C_CONTATO IN
        (SELECT CDFILIAL, NRCONTATO
           FROM CONTATO
          WHERE CDPROSPECT = P_CDPROSPECT) LOOP
         UPDATE CONTATO
            SET IDTPCONTATO = 'C', CDPROSPECT = NULL, CDCLIENTE = P_CDCLIENTE
          WHERE (CDFILIAL = C_CONTATO.CDFILIAL)
            AND (NRCONTATO = C_CONTATO.NRCONTATO);
         -- LOOP COM AS EVOLCONT DO PROSPECT
         FOR C_EVOLCONT IN
           (SELECT CDFILIAL, NRCONTATO, DTHREVOLCONT, CDPROSPECT, CDCLIENTE, CDINTECLIE, CDINTEPROS
              FROM EVOLCONT
             WHERE CDFILIAL = C_CONTATO.CDFILIAL
               AND NRCONTATO = C_CONTATO.NRCONTATO) LOOP
            BEGIN
               SELECT CDCLIENTE, CDINTECLIE
                 INTO V_CDCLIENTE, V_CDINTECLIE
                 FROM INTECLIE
                WHERE CDCLIENTE = P_CDCLIENTE
                  AND CDINTECLIE = (SELECT MAX(CDINTECLIE) CDINTECLIE
                       FROM(SELECT CDINTECLIE
                                             FROM INTECLIE
                                            WHERE CDCLIENTE = P_CDCLIENTE
                                              AND CDINTECLIE = LPAD(C_EVOLCONT.CDINTEPROS, 2, '0')
                                            UNION
                                           SELECT MIN(CDINTECLIE) CDINTECLIE
                                             FROM INTECLIE
                                            WHERE CDCLIENTE = P_CDCLIENTE
                                              AND NOT EXISTS (SELECT CDINTECLIE
                                                                FROM INTECLIE
                                                               WHERE CDCLIENTE = P_CDCLIENTE
                                                                 AND CDINTECLIE = LPAD(C_EVOLCONT.CDINTEPROS, 2, '0'))));
            EXCEPTION
               WHEN NO_DATA_FOUND THEN V_CDINTECLIE := NULL;
            END;
            -- UPDATA A EVOLCONT MUDANDO DO PROSPECT PARA O CLIENTE
            IF V_CDINTECLIE IS NOT NULL THEN
               UPDATE EVOLCONT
                  SET CDCLIENTE = V_CDCLIENTE, CDINTECLIE = V_CDINTECLIE,
                      CDPROSPECT = NULL, CDINTEPROS = NULL, IDTPEVOLCONT = 'C'
                WHERE CDFILIAL = C_EVOLCONT.CDFILIAL
                  AND NRCONTATO = C_EVOLCONT.NRCONTATO
                  AND DTHREVOLCONT = C_EVOLCONT.DTHREVOLCONT;
            END IF;
         END LOOP;
      END LOOP;
      -- ALTERA AS INFORMAÇÕES DA ACAO DO PROSPECT PARA O CLIENTE
      FOR C_ACAO IN
        (SELECT CDFILIAL, NRACAO
           FROM ACAO
          WHERE CDPROSPECT = P_CDPROSPECT
            AND IDTPMOTIVADO = 'P') LOOP
         UPDATE ACAO
            SET IDTPMOTIVADO = 'C', CDPROSPECT = NULL, CDCLIENTE = P_CDCLIENTE
          WHERE (CDFILIAL = C_ACAO.CDFILIAL)
            AND (NRACAO = C_ACAO.NRACAO);
      END LOOP;
      -- ALTERA AS INFORMAÇÕES DA TAREFA DO PROSPECT PARA O CLIENTE
      FOR C_TAREFA IN
        (SELECT CDFILIAL, NRTAREFA
           FROM TAREFA
          WHERE CDPROSPECT = P_CDPROSPECT
            AND IDTIPTAREFA = 'P') LOOP
         UPDATE TAREFA
            SET IDTIPTAREFA = 'C', CDPROSPECT = NULL, CDCLIENTE = P_CDCLIENTE
          WHERE (CDFILIAL = C_TAREFA.CDFILIAL)
            AND (NRTAREFA = C_TAREFA.NRTAREFA);
      END LOOP;
      -- ALTERA AS INFORMAÇÕES DA OBSERVPROSP PARA A OBSERVAÇÃO DO CLIENTE
      BEGIN
         SELECT DSOBSERVPROS, DTHROBSPROSP
           INTO V_DSOBSERVPROS, V_DTHROBSPROSP
           FROM OBSERVPROSP
          WHERE CDPROSPECT = P_CDPROSPECT;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN V_DSOBSERVPROS := NULL;
      END;
      IF V_DSOBSERVPROS <> NULL THEN
         -- GRAVA A OBSERVAÇÃO DO PROSPECT NO CLIENTE
         INSERT INTO OBSERVCLIE
           (CDCLIENTE, DTHROBSCLIE, CDOPERADOR, DSOBSERVCLIE)
         VALUES
           (P_CDCLIENTE, V_DTHROBSPROSP, P_CDOPERADOR, V_DSOBSERVPROS);
         -- DELETA A OBSERVAÇÃO DO PROSPECT
         DELETE
           FROM OBSERVPROSP
          WHERE CDPROSPECT = P_CDPROSPECT
            AND DTHROBSPROSP = V_DTHROBSPROSP;
      END IF;
      -- LOOP DA MOVOCORR PARA TRANSFERIR OS REGISTROS DO PROSPECT PRO CLIENTE
      FOR C_MOVOCORR IN
        (SELECT CDFILILANCMO, NROCORRMOV
           FROM MOVOCORR
          WHERE CDPROSPECT = P_CDPROSPECT
            AND IDSITUMOVOCORR = 'P') LOOP
         -- UPDATA OS REGISTROS DA MOVOCORR PARA O CLIENTE
         UPDATE MOVOCORR
            SET CDCLIENTE = P_CDCLIENTE, IDSITUMOVOCORR = 'C', CDPROSPECT = NULL
          WHERE CDFILILANCMO = C_MOVOCORR.CDFILILANCMO
            AND NROCORRMOV = C_MOVOCORR.NROCORRMOV;
      END LOOP;
      -- LOOP DA AUDITORIA PARA TRANSFERIR OS REGISTROS DO PROSPECT PARA O CLIENTE
      FOR C_AUDITORIA IN
        (SELECT CDFILIAL, NRAUDITORIA
           FROM AUDITORIA
          WHERE CDPROSPECT = P_CDPROSPECT
            AND IDTPAUDITADO = 'R') LOOP
         -- UPDATA OS REGISTROS DA AUDITORIA PARA O CLIENTE
         UPDATE AUDITORIA
            SET CDCLIENTE = P_CDCLIENTE, IDTPAUDITADO = 'C', CDPROSPECT = NULL
          WHERE CDFILIAL = C_AUDITORIA.CDFILIAL
            AND NRAUDITORIA = C_AUDITORIA.NRAUDITORIA;
      END LOOP;
      -- LOOP DA PROPOSTAFAS PARA TRANSFERIR OS REGISTROS DO PROSPECT PARA O CLIENTE
      FOR C_PROPOSTAFAS IN
        (SELECT NRPROPOSFAS, NRVERPROPFAS
           FROM PROPOSTAFAS
          WHERE CDPROSPECT = P_CDPROSPECT
            AND IDCLIENPROSP = 'P') LOOP
         -- UPDATA O REGISTRO DA PROPOSTAFAS PARA O CLIENTE
         UPDATE PROPOSTAFAS
            SET CDCLIENTE = P_CDCLIENTE, IDCLIENPROSP = 'C', CDPROSPECT = NULL, NRMESREAJPROP = P_MESREAJUSTE
          WHERE NRPROPOSFAS = C_PROPOSTAFAS.NRPROPOSFAS
            AND NRVERPROPFAS = C_PROPOSTAFAS.NRVERPROPFAS;
      END LOOP;
      -- LOOP DA MALADIRETA PARA TRANSFERIR OS REGISTROS DO PROSPECT PARA O CLIENTE
      FOR C_MALADIRETA IN
        (SELECT CDTIPOCORR, CDOPERADOR, DTMALADIRE, CDMALADIRE, CDINTEPROS
           FROM MALADIRETA
          WHERE CDPROSPECT = P_CDPROSPECT) LOOP
         -- UPDATA O REGISTRO DA MALADIRETA PARA O CLIENTE
         UPDATE MALADIRETA
            SET CDCLIENTE = P_CDCLIENTE, CDINTECLIE = LPAD(C_MALADIRETA.CDINTEPROS, 2, '0'), CDPROSPECT = NULL, CDINTEPROS = NULL
          WHERE CDTIPOCORR = C_MALADIRETA.CDTIPOCORR
            AND CDOPERADOR = C_MALADIRETA.CDOPERADOR
            AND DTMALADIRE = C_MALADIRETA.DTMALADIRE
            AND CDMALADIRE = C_MALADIRETA.CDMALADIRE;
      END LOOP;
      -- CRIA REGISTROS NA PARCLIEFAS PARA O CLIENTE
      -- IDTPFATUCLIE = '1' Customização
      INSERT INTO PARCLIEFAS
        (CDCLIENTE, IDTPFATUCLIE, DSFATURCLIE,
         DSBOLETCLIE, CDTIPOSERV, CDEMPRESA,
         IDFATURAPFILI, IDFATMESATUCLIE, CDGERENTEIMPCLI,
         IDGERANFUNIFICA, VRPERCAJUSTEINV)
      VALUES
        (P_CDCLIENTE, '1', 'Prestação de serviços de processamento de dados.',
         'Prestação de serviços de processamento de dados.', NULL, '01',
         'N', 'N', NULL,
         'N', 0);
     --IDTPFATUCLIE = '2' Licença de Uso
      INSERT INTO PARCLIEFAS
        (CDCLIENTE, IDTPFATUCLIE, DSFATURCLIE,
         DSBOLETCLIE, CDTIPOSERV, CDEMPRESA,
         IDFATURAPFILI, IDFATMESATUCLIE, CDGERENTEIMPCLI,
         IDGERANFUNIFICA, VRPERCAJUSTEINV)
      VALUES
        (P_CDCLIENTE, '2', 'Cessão de direito de uso do sistema.',
         'Cessão de direito de uso do sistema.', NULL, '01',
         'N', 'N', NULL,
         'N', 0);
      --IDTPFATUCLIE = '3' Mensalidade (manutenção/customização)
      INSERT INTO PARCLIEFAS
        (CDCLIENTE, IDTPFATUCLIE, DSFATURCLIE,
         DSBOLETCLIE, CDTIPOSERV, CDEMPRESA,
         IDFATURAPFILI, IDFATMESATUCLIE, CDGERENTEIMPCLI,
         IDGERANFUNIFICA, VRPERCAJUSTEINV)
      VALUES
        (P_CDCLIENTE, '3', 'Manutenção no processamento de dados.',
         'Manutenção ref a [MM/YYYY].', NULL, '01',
         'N', 'N', NULL,
         'N', 0);
      --IDTPFATUCLIE = '5' Mão de obra
      INSERT INTO PARCLIEFAS
        (CDCLIENTE, IDTPFATUCLIE, DSFATURCLIE,
         DSBOLETCLIE, CDTIPOSERV, CDEMPRESA,
         IDFATURAPFILI, IDFATMESATUCLIE, CDGERENTEIMPCLI,
         IDGERANFUNIFICA, VRPERCAJUSTEINV)
      VALUES
        (P_CDCLIENTE, '5', 'Suporte no processamento de dados ref prop COMxxxxxx-x.',
         'Prestação de serviços.', NULL, '01',
         'N', 'N', NULL,
         'N', 0);
      --IDTPFATUCLIE = '6' Service Desk (Suporte)
      INSERT INTO PARCLIEFAS
        (CDCLIENTE, IDTPFATUCLIE, DSFATURCLIE,
         DSBOLETCLIE, CDTIPOSERV, CDEMPRESA,
         IDFATURAPFILI, IDFATMESATUCLIE, CDGERENTEIMPCLI,
         IDGERANFUNIFICA, VRPERCAJUSTEINV)
      VALUES
        (P_CDCLIENTE, '6', 'Prestação de serviços.',
        'Prestação de serviços.', NULL, '01',
         'N', 'N', NULL,
         'N', 0);
      --DELETA OS REGISTROS DA TABELA OPERPROSPECT
      DELETE
        FROM OPERPROSPECT
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA OS REGISTROS DO ESTINTERESSE
      DELETE
        FROM ESTINTERESSE
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA OS REGISTROS DO ESCOPROS
      DELETE
        FROM ESCOPROS
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA OS REGISTROS DO PROSPFILIAL
      DELETE
        FROM PROSPFILIAL
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA OS REGISTROS DO HISTQUALPROS
      DELETE
        FROM HISTQUALPROS
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA OS REGISTROS DO QUALIFPROSP
      DELETE
        FROM QUALIFPROSP
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA OS REGISTROS DO CURSOPROSPECT
      DELETE
        FROM CURSOPROSPECT
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA O ENDEREÇO DO PROSPECT
      DELETE
        FROM ENDEPROSPECT
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA O INTERLOCUTOR DO PROSPECT
      DELETE
        FROM INTEPROSP
       WHERE CDPROSPECT = P_CDPROSPECT;
      -- DELETA O PROSPECT
      DELETE
        FROM PROSPECT
       WHERE CDPROSPECT = P_CDPROSPECT;
      IF P_BOCOMMITCHANGES THEN
         COMMIT;
      END IF;
/*    -- VERIFICA SE EXISTE A TRIGGER GERA_PARCNEGOCIO_CLIENTE NO BANCO DE DADOS
      SELECT COUNT(*)
        INTO V_VERIFICA
        FROM USER_TRIGGERS
       WHERE TRIGGER_NAME = 'GERA_PARCNEGOCIO_CLIENTE';
      IF (V_STATUST1 = 'ENABLED') AND (V_VERIFICA > 0) THEN
         -- HABILITA TRIGGER GERA_PARCNEGOCIO_CLIENTE
         EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_PARCNEGOCIO_CLIENTE ENABLE';
      END IF;
      -- VERIFICA SE EXISTE A TRIGGER GERA_ENDERECOPARC_ENDCLIE NO BANCO DE DADOS
      SELECT COUNT(*)
        INTO V_VERIFICA
        FROM USER_TRIGGERS
       WHERE TRIGGER_NAME = 'GERA_ENDERECOPARC_ENDCLIE';
      IF (V_STATUST2 = 'ENABLED') AND (V_VERIFICA > 0) THEN
         -- HABILITA TRIGGER GERA_ENDERECOPARC_ENDCLIE
         EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_ENDERECOPARC_ENDCLIE ENABLE';
      END IF;
      -- VERIFICA SE EXISTE A TRIGGER GERA_RELAC_PARCNEG_INTECLIE NO BANCO DE DADOS
      SELECT COUNT(*)
        INTO V_VERIFICA
        FROM USER_TRIGGERS
       WHERE TRIGGER_NAME = 'GERA_RELAC_PARCNEG_INTECLIE';
      IF (V_STATUST3 = 'ENABLED') AND (V_VERIFICA > 0) THEN
         -- HABILITA TRIGGER GERA_RELAC_PARCNEG_INTECLIE
         EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_RELAC_PARCNEG_INTECLIE ENABLE';
      END IF; */
   EXCEPTION
      -- VERIFICA SE EXISTE A TRIGGER NO BANCO DE DADOS
      WHEN OTHERS THEN BEGIN
         SELECT COUNT(*)
           INTO V_VERIFICA
           FROM USER_TRIGGERS
          WHERE TRIGGER_NAME = 'GERA_PARCNEGOCIO_CLIENTE';
          IF (V_STATUST1 = 'ENABLED') AND (V_VERIFICA > 0) THEN
            -- HABILITA TRIGGER GERA_PARCNEGOCIO_CLIENTE
            EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_PARCNEGOCIO_CLIENTE ENABLE';
          END IF;
         -- VERIFICA SE EXISTE A TRIGGER GERA_ENDERECOPARC_ENDCLIE NO BANCO DE DADOS
         SELECT COUNT(*)
           INTO V_VERIFICA
           FROM USER_TRIGGERS
          WHERE TRIGGER_NAME = 'GERA_ENDERECOPARC_ENDCLIE';
          IF (V_STATUST2 = 'ENABLED') AND (V_VERIFICA > 0) THEN
             -- HABILITA TRIGGER GERA_ENDERECOPARC_ENDCLIE
             EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_ENDERECOPARC_ENDCLIE ENABLE';
          END IF;
         -- VERIFICA SE EXISTE A TRIGGER GERA_RELAC_PARCNEG_INTECLIE NO BANCO DE DADOS
         SELECT COUNT(*)
           INTO V_VERIFICA
           FROM USER_TRIGGERS
          WHERE TRIGGER_NAME = 'GERA_RELAC_PARCNEG_INTECLIE';
          IF (V_STATUST3 = 'ENABLED') AND (V_VERIFICA > 0) THEN
             -- HABILITA TRIGGER GERA_RELAC_PARCNEG_INTECLIE
             EXECUTE IMMEDIATE 'ALTER TRIGGER GERA_RELAC_PARCNEG_INTECLIE ENABLE';
          END IF;
      END;
   END;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('COPIA_PROSPECT_CLIENTE', '5.20.001'); END;
/