Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

A258-Cadastro de terceiros com CNPJ CPF duplicado

Sumário

Sistema: Gerenciador de Aplicativos Prosoft (GAP)

...


Scroll Only

Autor do artigo: atualizado por Joao.Fonseca

(Não remova esse quadro)




Quando a falha ocorre?


O objetivo deste artigo é auxiliar na correção do cadastro de terceiros com o CNPJ CPF duplicado.

Informações Adicionais: Não se aplica.

...

Como corrigir?


O Cadastro de Terceiros está com registros duplicados no sistema.

1- Acesse no menu do Windows Iniciar, digite PCC e tecle Enter.

Image Removed

2- Acesse a base ?PROEMPxx com a senha Master do banco de dados.
(Onde "?" corresponde a unidade de mapeamento e "xx" ao número da Proemp utilizada)

...

Aviso

Importante:

...

Antes de qualquer alteração na base de dados é necessário realizar o backup da base geral ?PROEMPxx.


Image Added

4- Acesse a tabela prg_terceiro_btr.

5- Execute o comando abaixo para remover índices da tabela prg_terceiro_btr:

DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr1";
DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr2";
DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr3";
DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr4";
DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr5";
DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr6";
DROP INDEX "prg_terceiro_btr"."iprg_terceiro_btr7";

6- Acesse a tabela prg_terceiro_compl.

7- Execute o comando abaixo para remover remover índices e relacionamentos da tabela prg_terceiro_compl:

DROP INDEX "prg_terceiro_compl"."iprg_terceiro_compl1";

ALTER TABLE "prg_terceiro_compl"(
  DROP CONSTRAINT cterceiro_compl00,
  DROP CONSTRAINT cterceiro_compl01);

8- Acesse a tabela prg_endereco.

9- Execute o comando abaixo para remover relacionamentos da tabela prg_endereco:

ALTER TABLE "prg_endereco"(
  DROP CONSTRAINT cendereco01,
  DROP CONSTRAINT cendereco02,
  DROP CONSTRAINT cendereco03,
  DROP CONSTRAINT cendereco00 );

10- Após a remoção dos índices da tabela prg_terceiro_btr, prg_terceiro_compl e prg_endereco execute o seguinte comando abaixo:

select cnpjcpf from prg_terceiro_btr group by cnpjcpf having count (cnpjcpf)>1;


Aviso

...

Este comando retornará todos os registros com cnpj e cpf duplicados na base de dados da tabela prg_terceiro_btr.

...


Image Added

“Obs: Note que foi localizado um terceiro com cnpjcpf duplicado conforme imagem

...

.”


11-  Para localizar  qual terceiro esta com o cnpj ou cpf duplicado execute o seguinte comando abaixo.

select * from "prg_terceiro_btr" where cnpjcpf = '61602199003057';

Image Removed

12-

...

Altere  o numero do campo cnpjcpf que está duplicado manualmente na base de dados.

...

Image Added

14- Execute o comando abaixo para criar índices da tabela prg_terceiro_btr:

CREATE UNIQUE NOT MODIFIABLE INDEX "iprg_terceiro_btr1" USING 0 ON "prg_terceiro_btr"("codigobtr");
CREATE UNIQUE INDEX "iprg_terceiro_btr2" USING 1 ON "prg_terceiro_btr"("cnpjcpf");
CREATE UNIQUE INDEX "iprg_terceiro_btr3" USING 2 ON "prg_terceiro_btr"("razsoc", "codigobtr");
CREATE UNIQUE INDEX "iprg_terceiro_btr4" USING 3 ON "prg_terceiro_btr"("apelido", "codigobtr");
CREATE UNIQUE INDEX "iprg_terceiro_btr5" USING 4 ON "prg_terceiro_btr"("personalidad", "cnpjcpf");
CREATE UNIQUE INDEX "iprg_terceiro_btr6" USING 5 ON "prg_terceiro_btr"("personalidad", "razsoc", "codigobtr");
CREATE UNIQUE INDEX "iprg_terceiro_btr7" USING 6 ON "prg_terceiro_btr"("personalidad", "codigobtr");

15- Execute o comando abaixo para criar índices e relacionamentos da tabela prg_terceiro_compl:

CREATE UNIQUE INDEX "iprg_terceiro_compl1" USING 1 ON "prg_terceiro_compl"("codigo");
ALTER TABLE prg_terceiro_compl ADD CONSTRAINT cterceiro_compl00 FOREIGN KEY ("fk_cnae_id") REFERENCES prg_cnae2007 ON UPDATE RESTRICT  ON DELETE RESTRICT;
ALTER TABLE prg_terceiro_compl ADD CONSTRAINT cterceiro_compl01 FOREIGN KEY ("fk_cnae_ant") REFERENCES prg_cnae ON UPDATE RESTRICT  ON DELETE RESTRICT;

16 - Execute o comando abaixo para criar relacionamentos da tabela prg_endereco:

ALTER TABLE prg_endereco ADD CONSTRAINT cendereco01 FOREIGN KEY ("fk_muni_id") REFERENCES prg_municipio ON UPDATE RESTRICT  ON DELETE RESTRICT ;
ALTER TABLE prg_endereco ADD CONSTRAINT cendereco02 FOREIGN KEY ("fk_pais_id") REFERENCES prg_pais ON UPDATE RESTRICT  ON DELETE RESTRICT ;
ALTER TABLE prg_endereco ADD CONSTRAINT cendereco03 FOREIGN KEY ("fk_terceiro_id") REFERENCES prg_terceiro_compl ON UPDATE RESTRICT  ON DELETE RESTRICT ;
ALTER TABLE prg_endereco ADD CONSTRAINT cendereco00 FOREIGN KEY ("fk_sigla_uf") REFERENCES prg_uf

...


Scroll Only
(Não remova esse quadro)


HTML
<div id="text-end"></div>




<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag2(){dataLayer.push(arguments);}
  gtag2('js', new Date());

  gtag2('config', 'UA-193974933-1');


  function gtagevents (action,category) {
     console.log(category + ':' + action);
     gtag2('event',action,{event_category:category,event_label: document.title});
  };

</script>

<script src="https://player.vimeo.com/api/player.js"></script>
<script>
    (function(){
        // RASTREIO DE USO DO VÍDEO
        function gtagvideo(action){
           gtagevents(action,'Video')
        }

        var iframe = document.querySelector('iframe');
        var player = new Vimeo.Player(iframe);

        var seeking = false;
        var priorTime = 0;
        var currentTime = 0;
        var reportouFinalDoConteudo = false;

        // se pausar o play é acionado também.
        player.on('play', function(data) {
            if(data.seconds == 0){ 
              gtagvideo('video-iniciado');
            }
            priorTime = data.seconds;             
        });

        player.on('ended', function() {
            gtagvideo('video-finalizado');
        });

        //seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
        // pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
        player.on('seeking', function(data) {               
            seeking = true;
        });


        player.on('pause',function(data){
            gtagvideo('video-pausado');    
        });

        player.on('timeupdate', function(data) {
            if(seeking){
                if(currentTime < priorTime){
                    gtagvideo('video-voltando');    
                }
                if(currentTime > priorTime){
                    gtagvideo('video-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = data.seconds;


           var finalDoConteudo = (data.duration - data.seconds) < 5;
           if(finalDoConteudo && !reportouFinalDoConteudo){
            gtagvideo('conteudo-finalizado')
            reportouFinalDoConteudo = true;
           }
        });

        player.on('fullscreenchange', function() {
            gtagvideo('video-fullscreen');
        });
    })();
</script>

<script>
 // RASTREIO DO USO DE AUDIO
 (function(){
    function gtagaudio(action){
           gtagevents(action,'Audio')
    }            

    var audio = document.querySelector("audio");

    var seeking = false;
    var priorTime = 0;
    var currentTime = 0;

    audio.addEventListener('play',function(){
        if(audio.currentTime == 0){
          gtagaudio('audio-iniciado');
        }
        priorTime = audio.currentTime;        
    });

    audio.addEventListener('ended',function(){
        gtagaudio('audio-finalizado');
    });

    audio.addEventListener('pause',function(){
        gtagaudio('audio-pausado');
    });

    audio.addEventListener('seeking', function(data) {               
        seeking = true;
    });

    audio.addEventListener('timeupdate', function(data) {               
        if(seeking){
                if(currentTime < priorTime){
                    gtagaudio('audio-voltando');    
                }
                if(currentTime > priorTime){
                    gtagaudio('audio-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = audio.currentTime;
    });    
 })();
 </script>

<script>
    (function(){
        var terminou = false;
        //RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
        document.addEventListener('scroll',() => {
            if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
                if(!terminou){
                    terminou = true;
                    gtagevents('artigo-lido','Pagina')
                }
            }else{
                terminou = false;
            }
                
        });
    })();
 </script>