Nesse artigo você vai ver o passo a passo das configurações para utilização do Wshop com Toten - Busca Preços

1º passo: Wshop

  • Acesse Wshop > Configurações e manutenção > PDV > Configurações Gerais > Outros > "Utiliza módulo de carga de balança / Toten" e marque esta opção;

  • Faça uma exportação no servidor offline.

2º passo: Servidor Offline

  • Clique com o botão direito do mouse no ícone do servidor offline;

  • Selecione a opção Outros Recursos;

  • Em seguida clique em "Geração de Arquivo para Balança e Terminal de Consulta".

3º passo: Configurações

Os campos a seguir variam conforme o modelo de Toten usado, como Gertec e Tanca, por exemplo.  

Realize as configurações dos campos conforme orientado no manual do Fabricante, sendo eles: 

  • Tamanho do campo: Deve ser definido por campo (será usado para relacionamento com "Campos do Wshop");

  • Defina a posição do alinhamento: se esquerda ou direita;

  • Preenchimento: Brancos, Zeros ou não preencher;

  • Campos do Wshop: Após definir o tamanho do campo, selecione a opção correspondente que será levada no layout, como, por exemplo (Tamanho do campo - 10 / Campos do Wshop - Preço), em seguida clique no botão da seta para adicionar;



  • Decimais do preço: selecione dentre 2,3 e 4 quantos campos devem ser considerados para os décimos de preço;

  • Preço sem separador decimal: autoexplicativo;

  • Suprimir último delimitador de campos: autoexplicativo;

  • Delimitador de campos: varia conforme o modelo, mas é comum o uso do | (pipe)

  • Texto fixo: autoexplicativo

  • Nome do arquivo que será gerado: por padrão o sistema traz como "Toten", podendo ser alterado;

  • Diretório para gravação do arquivo: selecione o diretório onde o sistema irá gerar o arquivo TXT a ser importado no aplicativo do Toten;

  • Código para exportação: escolha uma das opções disponíveis como, por exemplo: chamada, fornecedor, personalizado, EAN, etc.

Mas caso o produto não contenha o código selecionado, o sistema levará o código principal definido na retaguarda. 

4º Passo: Gerando o arquivo

Após realizar as configurações, clique no botão "Gerar Arquivo".

Nesse momento será criado um TXT no formato configurado, para ser importado no aplicativo do Toten.

Veja um exemplo de arquivo txt gerado:

Lembrando que o arquivo deve ser gerado conforme o layout de cada modelo de Toten, então se tiverem informações específicas a serem usadas, o T.I ou o suporte do Toten devem informar. 

5º Passo: Importando o arquivo no aplicativo

Nesse exemplo será demonstrado como realizar a importação pelo aplicativo  "Gertec TC Server". (Lembrando que a Alterdata não indica um modelo específico a ser usado.) 

  • Ao abrir o aplicativo, será exibida uma tela de Configurações de Banco de Dados;

  • São 3 opções disponíveis: Interno, Externo (JDBC) e Externo (arquivo de texto);

  • Escolha a última opção (para o exemplo atual): Externo (arquivo de texto);

  • Aponte o diretório onde foi gerado o arquivo pelo "Geração de Arquivo para Balança e Terminal de Consulta";

  • Clique em OK para concluir a importação e inserir os produtos no Banco de Dados do Toten.

Informações importantes:

  • O caminho do banco da GERTEC ServerUni é C:\Gertec\ServUni 2.0 \BD.

  • O APP deles importa automaticamente o arquivo PRICETAB.txt que tiver neste diretório citado.

  • Este caminho pode ser configurado em "Geração de Arquivo para Balança e Terminal de Consulta"  e todas as vezes que o servidor offline exportar, o arquivo será atualizado.

  • É importante salvar um CENÁRIO após realizar as parametrizações.

Todas as vezes que o módulo de configurações é aberto, ele vem em branco. Para não precisar reconfigurar, o ideal é salvar o cenário, assim basta apontá-lo e o sistema trará todas as configurações realizadas.

Autor do artigo: Rebarbosa.prime.shop - duplicado do artigo Toten: Busca Preço - (Servidor Offline)

(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>