Versões comparadas

Chave

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


Scroll Only

Autor do artigo: Joao.Fonseca

(Não remova esse quadro)




Quando a situação ocorre?


Ao importar notas pelo analisador fiscal, é retornada a mensagem: |2-Nota Fiscal 0000000000 já digitada com esses dados! e ao consultar a nota na rotina de escrituração essa não é exibida. 

No exemplo em questão  falha ocorre ao pesquisar notas no intervalo de 01-05-2023 até 31/05/2023.

Ao consultar as notas na rotina de escrituração essas não são exibidas

Mas ao consultar no banco de dados as notas de entrada no intervalo de 01-05-2023 até 31/05/2023. São retornados registros

select * from "nota015823" where
escrit >= '2023-01-01' and escrit < '2023-02-01'
and tpnota = 1

Como corrigir?


Aviso

O processo de correção deve ser efetuado em nível 2 de instalações. Antes de aplicar a correção, efetue o backup da base da empresa

A situação ocorre pois as notas foram importadas usando o layout incorreto, no exemplo abaixo iremos tratar a situação onde a nota de entrada foi importada usando o layout de Saida.


1 - No banco de dados efetue a seguinte consulta para verificar se existem layouts com nomes redundantes:

select * from PPROEMP01.layout where nome = 'SIMPLES'

No exemplo em questão existem dois layouts distintos. Entrada e saída, atribuidos do mesmo nome: SIMPLES

2 - Para correção no GAP acesse: fiscal > documentos de entrada e saida > definição de telas para digitação.

3 - Atribua um novo nome para os layouts duplicados. No exemplo em questão ficou da seguinte forma

Notas de Entrada: SIMPLES ENTRADA

Notas de Saída: SIMPLES SAÍDA


4 - Na tabela referente as notas efetue a seguinte consulta:

n.escrit: Corresponde ao intervalo das notas que será realizada a pesquisa
n.fk_layout_id: corresponde ao codigo do layout utilzado. No exemplo abaixo é utilizado o código 14: Simples Saida
tpnota: corresponde ao tipo da nota, no comando abaixo é utilizado o tipo 1 - Entrada

select 
    n.numnota,
    n.fk_empresa_id,
    ec.id,
    ec.codigo,
    n.escrit,
    n.contab,
    n.fk_cfop_id,
    c.codigo,
    n.fk_layout_id,
    l.nome,
    l.tpmod,
    n.tpnota
from "nota015823" n 
inner join PPROEMP01.cfop c on c.id = n.fk_cfop_id 
inner join PPROEMP01.layout l on l.id = n.fk_layout_id 
inner join PPROEMP01.prg_empresa_compl ec on ec.id = n.fk_empresa_id
where n.escrit >= '2023-01-01' and n.escrit < '2023-06-01' 
AND n.fk_layout_id = 14 
AND n.tpnota = 1

A consulta retornará as notas escrituradas com layout incorreto.

5 - Execute a seguinte consulta:

select 

    'UPDATE nota015823 SET fk_layout_id = 16 WHERE id = ' + cast(n.id as varchar(10)) + ';' as cmd
from "nota015823" n 
WHERE n.escrit >= '2023-01-01' and n.escrit < '2023-02-01' 
AND n.fk_layout_id = 14
and n.tpnota = 1;

Será retornado o comando de update para ajustar o layout de todas as notas de entrada com layout de saída.

Selecione todas as linhas e clique na opção Copy selected text to Clipboard

6 - Execute os comandos obtidos com a opção EXECUTE SQL All Statements

6 - Consulte novamente as notas na rotina de escrituração


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>