A partir da versão 6.1406 do Shop, você terá disponível o BI Documentos. Um módulo que possibilitará você realizar uma análise empresarial, com informações relacionadas aos seus documentos, produtos, vendedores, caixa/usuário, forma de pagamento, entre outros.

Ao acessá-lo, teremos dois relatórios. Documentos e Notas Fiscais, onde você visualiza todos os dados dos seus documentos e ainda personaliza a visualização de colunas da forma que preferir. E dentro dessa opção, temos os Itens dos documentos, onde te apresenta os produtos referentes ao documento em questão. 

Temos também a opção de relatório Extrato de Produtos, que possui uma aba para acesso a todos os dados de seus produtos ligados aos documentos do período.

  1. No Shop, clique em: Vendas → Mais → BI Documentos.
  2. Na aba Filtros → Geral → Períodos, informe o período do documento, podendo ser: emissão, referência ou emissão eletrônica.
  3. Em Relatórios, informe quais relatórios deseja visualizar, podendo ser: Documentos e Notas Fiscais e Extrato de Produtos. No relatório de documentos e notas fiscais é possível marcar para serem exibidos os itens dos documentos. 
  4. Em Filtros dos documentos, marque os tipos que documentos que deseja visualizar. 
  5. Ao lado, existem diversos filtros que você pode fazer, como, por exemplo: filtrar documentos que tenham operações específicas, formas de pagamento específicas, entre outros. 
  6. Após inserir os filtros, clique em Gerar Relatório.

O sistema vai processar as informações e gerar duas abas: Documentos e Notas Fiscais e Extrato de Produtos, onde será possível visualizar os documentos e os produtos movimentados no período escolhido. 

         

Será possível incluir ou retirar colunas das abas documentos e notas fiscais e extrato de produtos, através da opção personalizar coluna. 

As informações poderão ser impressas ou exportadas para excel, através das opções Imprimir e Exportar para Excel. 

Ainda será possível visualizar a linha do tempo do documento ou produto selecionado. Basta dar dois cliques sobre a informação ou clicar na opção Linha do Tempo. 

Autor do artigo: Leticia.uca

(Não remova esse quadro)

Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como:

  1. Escreva na voz ativa,
  2. Numere o passo a passo,
  3. Evite utilização de imagens,
  4. Escreva no tempo presente, na primeira pessoa e no imperativo (em passo a passos).


Essas informações não se tornam parte do conteúdo em sua nova página, elas ficam ocultas e só aparecem para usuário logado e se o artigo/dica estiver em modo de edição!




(Não remova esse quadro)
Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição!
<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>







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


<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-19PXZY9EEV"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag3(){dataLayer.push(arguments);}
  gtag3('js', new Date());

  gtag3('config', 'G-19PXZY9EEV');


  function gtagevents (action,category) {
     console.log(category + ':' + action);
     gtag3('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;
        var reportouMetadeAssistido = 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('video-conteudo-finalizado')
            reportouFinalDoConteudo = true;
           }


           var metadeAssistido = data.seconds > (data.duration/2);
           if(metadeAssistido && !reportouMetadeAssistido){
              gtagvideo('video-metade-assistido')
              reportouMetadeAssistido = 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(){
        const tamanhoDaTela = window.innerHeight;
        let terminou = false;
        let chegouNaMetade = false;
        // se não remover o tamanho da tela do meio da página, o evento só será disparado quando o meio da página estiver acima da área visível. 
        //  fazendo dessa forma assim que o meio da página estiver visível na base da janela o evento será disparado.
        const meioDoTexto = (document.getElementById('text-end').getBoundingClientRect().top / 2) - tamanhoDaTela;
        //RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
        document.addEventListener('scroll',() => {            
            if(document.getElementById('text-end').getBoundingClientRect().top < tamanhoDaTela){
                if(!terminou){
                    terminou = true;
                    gtagevents('artigo-lido','Pagina')
                }
            }else{                
                terminou = false;
            } 

            //RASTREIO DE LEITURA ATÉ O MEIO DA PÁGINA
            if(meioDoTexto < window.scrollY) {
                if(!chegouNaMetade){
                  gtagevents('artigo-lido-ate-metade','Pagina');
                  chegouNaMetade = true;
                }
            } else {
               chegouNaMetade = false;
            }
        });
    })();
 </script>