Winthor: Caixa específico sempre imprimindo DANFE em Contingência

Outros caixas operando normalmente.

  1. Certifique-se de que a data/hora reportada pelo Windows está correta;
  2. Apague o valor de TEMPOCONTINGENCIA (uma data/hora) no arquivo PCAUX2075.ini;
  3. Reinicie a rotina 2075.

Pelo menos isso foi o que eu vi o suporte da TOTVS fazer remotamente.

A TOTVS tem um texto sobre esse assunto, mas só parece se aplicar a toda a operação em contingência.

 

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Winthor: Dicas sobre a rotina 2092 – Busca Preço

A rotina 2092 é a rotina usada como intermediário entre terminais de consulta como o Gertec TC505/TC504 e o servidor principal Winthor. Você a executa em uma máquina qualquer e configura o IP dessa máquina como servidor  nos terminais de consulta.

Para reconhecer novos terminais, vá em Serviços, clique em Desativar e depois em Ativar. O terminal deverá aparecer. Se aparecer como “não cadastrado”, abra a aba cadastro e insira as informações do terminal. Se o terminal não for cadastrado a rotina 2092 sempre vai responder a toda consulta com “Não encontrado”.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Winthor: Configuração da impressora na rotina 2075

Ela não existe. Na verdade a rotina imprime na impressora padrão do Windows.

Mover a impressora Bematech não-fiscal para outra porta USB (especialmente por troca da placa-mãe) pode eventualmente fazer com que a impressão não saia mais, porque o Winthor está imprimindo na porta serial virtual errada. Eu não tive tempo para checar se poderia resolver isso através de configuração da impressora mas desinstalar o driver e instalar de novo resolve o problema.

1 comentário
  • Snow_man - 310 Comentários

    Resolve sim, porque o software da Bematech faz o ajuste da porta usb com a serial virtual. É o melhor modo de ajustar quando muda de porta usb.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Um pouco sobre a complexidade do Winthor

A operação do Winthor numa empresa de varejo hoje requer quatro servidores:

  • Servidor principal Linux (Oracle) – requer a assistência de um DBA Oracle pois a TOTVS não dá suporte a ele;
  • Servidor DocFiscal Windows – Responsável por toda comunicação com a SEFAZ;
  • Servidor WTA (Winthor Anywhere) Windows – Requerido para atualização dos programas (rotinas) e para a operação do DocFiscal;
  • Servidor de faturamento Windows – responsável por coletar as vendas dos caixas e enviar para o servidor principal;

Eu estou atendendo a uma empresa que tem duas operações desse tipo e por isso tem oito servidores dedicados ao Winthor.

Por um lado eu acho que usar servidores distintos reduz o risco de uma atualização em um requisito do sistema conflitar com a operação de outro e facilita a manutenção e a redundância. Por outro lado gera um problema para manter quatro máquinas rodando e sincronizadas. Você só percebe esse último problema quando se depara com a necessidade de mover uma ou mais delas entre redes e alterar os respectivos endereços IP e se pergunta: “onde eu tenho que configurar cada um dos servidores e cada um dos clientes que acessam esses servidores para não quebrar a operação?”

Depois que você sabe é “fácil”, mas como eu esperava as configurações são espalhadas:

  • Mudança no endereço IP do servidor principal:
    • No próprio servidor, além da óbvia mudança do IP na configuração do Linux é preciso editar o arquivo listener.ora;
    • Cada estação que acessa o chamado “menu Winthor” precisa ter o arquivo tnsnames.ora editado;
    • Cada caixa precisa ter o “dblink” recriado pelo menu F5 “Manutenção checkout” da 2075 pois do contrário apesar de supostamente a operação da 2075 ser “offline” existe uma carga obrigatória no início do dia que não poderá ser feita e a rotina se recusará a abrir o caixa;
    • O servidor DocFiscal precisa ser reconfigurado com novo endereço via sua interface web.
  • Mudança no endereço IP do servidor DocFiscal precisa ser informada na rotina 132;
  • Mudança no endereço IP do servidor WTA precisa ser informada na rotina 132;
  • Mudança no endereço IP dos caixas precisa ser informada ao servidor de faturamento no programa de gerenciamento;

Virtualizar todas as máquinas Windows é uma possibilidade, mas o número de outros problemas que tenho a resolver é tão alto que isso vai ficando para depois.

Sobre o servidor principal, no início eu estranhei a TOTVS não dar suporte a ele mas depois a razão disso ficou mais clara. Aparentemente a TOTVS quer deixar evidente que os dados pertencem ao cliente e que ela só fornece um conjunto de programas para manipulá-los. Na maioria dos sistemas comerciais que eu já vi só quem sabe a senha do banco de dados é o suporte técnico do sistema comercial mas com o Winthor, pelo contrário, a TOTVS não sabe a senha, o que já sugere que ela seja diferente para cada cliente, o que por sua vez dificulta a criação de um vírus que tenha como alvo o servidor principal Winthor nacionalmente. E é o cliente que precisa digitar as credenciais durante a instalação dos softwares. Infelizmente o fato de ser usado um SGBD tão complexo quanto o Oracle e ser necessária a contratação de um DBA para cuidar de seus problemas é um ponto negativo.

E justamente o fato do cliente saber a senha permitiu a existência de processos paralelos para obter informações do banco. Um deles já existia quando eu cheguei e eu acabei tendo que criar outro: um programa para consultar o banco de dados e gerar etiquetas de preços com código de barras para os produtos nas gôndolas. O processo anterior era enrolado demais até para mim e estava com uns bugs muito estranhos (do tipo que faz você arregalar os olhos e dizer baixinho: “mas que p***ra é essa?!”) então decidi que criar um software, além de ser um exercício de programação para Oracle, iria me poupar de dores de cabeça com as chamadas de suporte para o processo existente.

O servidor da faturamento roda também um servidor FTP Filezilla. Na primeira vez que vi isso rodando eu não sabia ainda o propósito e tive ânsia de desativar, mas me contive porque tudo era possível nessa empresa. Mais tarde fiquei sabendo que é por FTP que os caixas transferem informações para o servidor de faturamento.  Um problema aí: as credenciais são padrão para toda instalação do Winthor: usuário “caixa” e senha “caixa”. O mesmo ocorre nos caixas: cada um deles tem um servidor Oracle XE com as mesmas credenciais, onde estão armazenadas todas as informações sobre as vendas. Por que o servidor de faturamento precisa de um servidor de FTP para receber as informações quando poderia buscar as informações diretamente nos servidores em cada caixa ainda é um mistério para mim. Um vírus dedicado ao Winthor (ou um funcionário mal intencionado) pode apagar/alterar todas as informações dos caixas (testado) e, se o usuário FTP tiver permissões de apagamento (acaba de me ocorrer que tenho que checar isso) bagunçar tudo no servidor de faturamento também.

 

 

12 comentários
  • Vitor - 1 Comentário

    Já estava com saudades dos seus posts haha.
    Por curiosidade, em qual linguagem programou a solução para gerar as etiquetas de preços?

    • Jefferson - 6.606 Comentários

      Delphi. É a única linguagem com a qual me sinto confortável. Hoje mesmo eu tive que escrever dois programas em Java na faculdade, mas detesto essa linguagem.

  • Jefferson - 6.606 Comentários

    Encontrei outro problema provocado pela mudança no IP do servidor Oracle. O “CCW Agente”, necessário para a operação da Central de Controle Winthor (CCW) deixa de funcionar e você não consegue mais usar a CCW para atualizar o sistema. Eu não sei se é possível corrigir isso em alguma configuração, mas atualizar o CCW Agente resolveu, porque o instalador pergunta tudo de novo.

  • Marcos - 2 Comentários

    Jefferson, tudo bem?

    Estou querendo instalar o WinThor para avaliar melhor as funcionalidades, sabe informar como posso encontrar os scripts para instalar o banco de dados.

    Atualmente tenho o seguinte link que disponibiliza diversos arquivos porém não tem uma documentação para ser seguida.

    Link: http://servicos.pcinformatica.com.br/autoservico/instaladores/

    • Jefferson - 6.606 Comentários

      Até onde sei essa informação não é pública e apenas os DBAs credenciados pela PCSistemas/TOTVS sabem oficialmente como fazer. O banco de dados é instalado pelo DBA durante a implantação do sistema.

      Tenha me mente que ter um DBA responsável pelo banco (não precisa ser um funcionário em tempo integral, pode ser um contrato) é um dos requerimentos da contratação do sistema Winthor.

    • Jefferson - 6.606 Comentários

      Outra coisa: este link que você encontrou é apenas para os softwares do “autoserviço”, que é como eles chamam o faturamento/caixas. Uma instalação completa do Winthor tem centenas de outros módulos (“rotinas”) e mesmo que você consiga achar o instalador do cliente ou baixar as centenas de rotinas manualmente e ainda conseguir instalar/configurar o servidor Oracle, eu acho difícil você conseguir rodar alguma coisa sem o arquivo de licença.

  • Renan - 4 Comentários

    QUAL LINGUAGEM É UTILIZADA PARA CRIAR AS ROTINAS NO WINTHOR?
    EU CONSIGO CRIAR ALGUMAS COISAS UTILIZANDO JAVA E CONECTANDO NO BANCO DE DADOS, PORÉM AINDA ASSIM, VEJO QUE NÃO É A MESMA COISA, PQ NÃO SEI COMO QUE É CADASTRADO COMO ROTINA DENTRO DO PROPRIO WINTHOR.

    • Jefferson - 6.606 Comentários

      A linguagem parece ser Delphi, mas não creio que saber a linguagem vá te ajudar.

      • Renan - 4 Comentários

        Então mano, como eu te falei, eu faço alguns programas, não necessariamente rotinas, utilizo o acesso e tenho conhecimento das tabelas do banco.

        Inclusive fiz um programa para coletores a quinze dias atrás, porém só estava querendo saber mesmo pra ver se me ajuda em alguma coisa.

        Eu só não entendi o que quis dizer quando falou que saber a linguagem não me ajudaria muito.

        Tem alguma complexidade além?
        Algo que não saiba? É isso?

        Eu quero começar a fazer de forma correta igual o pessoal faz, porém eles cobram muito caro por coisas que eu sei que é simples pq eu sou desenvolvedor, mas cobrar 10k em um programa que faz apenas um select no bd é foda.

        E outra, seria pra fazer pra empresa que eu trabalho mesmo sabe.

        Deixar de fazer no Java e passar a fazer como é de fato feito.

        Me Desculpa pela caixa alta anteriormente, não tinha percebido.

        Gostei de seu site, estou terminando de desenvolver um também, quero fazer algumas postagens voltado a desenvolvimento web e desktop

        • Jefferson - 6.606 Comentários

          Você disse que não sabe “como é cadastrado como rotina dentro do próprio Winthor”

          A PC Sistemas (agora TOTVS) pode ter implementado uma API para isso, pode haver um arquivo de configuração em algum lugar, a lista pode estar em uma tabela no banco de dados ou a rotina pode até ser “hardcoded” no programa menu. Nada disso tem a ver com linguagem usada.

          Já coisas como a agilidade do programa, sim, tem a ver com a linguagem/compilador usado.

          • Renan - 4 Comentários

            Obrigado,
            Descobri todas as resposta para minhas dúvidas sobre o Winthor, sou curioso demais, cavei cavei até achar.

            Obrigado pelas dicas.

            Mas agora já sei como o sistema funciona e posso continuar desenvolvendo as rotinas de forma mais prazerosa e de forma correta.

            Abraços.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Winthor: Número excessivo de NFC-es sendo enviadas em contingência

Nota: eu tive dificuldade com o plural de NFC-e e segui o que estava recomendado aqui.

No Winthor existe um servidor dedicado chamado de DocFiscal que é encarregado de todas as operações envolvendo a SEFAZ. A rotina 2075 no caixa ao efetuar uma venda envia o cupom para o DocFiscal que por sua vez pede autorização à SEFAZ e repassa o resultado ao caixa. Caso haja um problema nessa comunicação o cupom é emitido “em contingência”, isto é: o consumidor recebe um cupom mesmo sem a devida (?!) autorização do governo, mas a empresa tem um prazo para regularizar isso. No caso do Winthor isso é feito no fechamento de cada caixa, quando todos os cupons emitidos em contingência são reenviados (assim a operação me explicou).

O cenário é o que descrevi no post anterior. No caso o servidor DocFiscal também estava na outra cidade o que significava que cada emissão de cupom dependia da confiabilidade de dois acessos à internet. E ao final de cada dia uma dezena de cupons tinha sido enviada em contingência. Mesmo assim eu achei que havia algo errado porque o volume de vendas era baixo e seria preciso muita instabilidade para coincidir justamente da venda ser feita quando houvesse problema em um dos links. Eu não consegui detectar essa instabilidade. E desconfiei que a latência também tivesse algo a ver com isso, porque em momentos de congestão do link (alguém fazendo upload ou download em qualquer uma das pontas) essa podia subir para vários segundos. Um possível “timeout” poderia estar ocorrendo.

Na mesma operação de mover o servidor principal eu também movi o servidor DocFiscal para a mesma rede local dos caixas e esse problema também foi resolvido. A operação me disse que o número de cupons emitidos em contingência caiu para um por semana.

 

1 comentário
Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Winthor: Rotina 2075 levando até 15 minutos para completar uma carga

No Winthor a “Rotina 2075” é o programa usando nos caixas, também chamado de “Winthor Varejo”. Supostamente (falarei sobre isso em outro post) essa rotina funciona completamente offline, pois mantém seu próprio banco de dados local (Oracle) em cada caixa com todo o necessário para efetuar uma venda. O processo de sincronizar esse banco de dados local com o banco principal, também Oracle, é chamado de “carga”.

Quando cheguei a essa empresa fiquei espantado com o fato dessa carga levar até 15 minutos. O servidor principal ficava em outra cidade e essa comunicação ocorria via internet usando uma VPN, mas ainda assim não se justificava, porque o banco de dados era pequeno, a banda efetiva (testado) era de 3.5Mbps e uma observação do uso da rede durante a carga mostrava que uma fração desprezível dessa banda estava sendo usada. Não havia congestão do link pois essa demora acontecia a qualquer hora, mesmo quando as empresas nas duas cidades ainda estavam fechadas.

Isso era um problema para a operação, porque qualquer mudança de preços efetuada durante o dia levava no mínimo 15 minutos para ser propagada. “No mínimo” porque como o caixa não podia operar durante esse processo isso tinha que ser feito em um caixa de cada vez. Também era um problema para a manutenção, porque muitos testes envolviam efetuar a carga e às vezes era preciso fazer isso múltiplas vezes.

A única pista que eu tinha da razão estava na latência. Um ping através dessa VPN levava no mínimo 70ms, não sendo incomum ficar em um mínimo de 100ms. Eu suspeitei de programação mal feita. Em vez de coletar toda a informação em um pacote só e aí esses 100ms seriam irrelevantes, a 2075 provavelmente estava dividindo a carga em milhares de querys. Digamos que você tenha 10 mil produtos cadastrados e consulte cada um deles individualmente: numa rede local, cabeada, cuja latência não passa de 1ms essas querys não devem levar mais que (10000×0,001) 10 segundos e um “erro” desses passa despercebido. Mas quando a latência é 100 vezes maior temos 1000s (16 minutos) desperdiçados para efetuar a mesma operação. Note que não é preciso usar uma VPN para ter esse tipo de problema. Basta querer conectar os caixas via Wi-Fi para ter latências piores.

Por essa e outras razões ficou decidido mover o servidor principal para a mesma rede local dos caixas, na outra cidade. Depois que efetuei essa operação, que exigiu semanas de planejamento por causa da complexidade do Winthor, a carga dos caixas passou a levar até 15s.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Winthor: Nota fiscal “esperando resposta da SEFAZ” na rotina 1452 há mais de 12h

Segui o explicado no único texto da TOTVS que encontrei sobre o assunto mas não encontrei a causa do problema. Pior que isso: o procedimento indicado de reabilitar a nota para envio não surtia efeito algum.

Isso foi às 18h30 e a loja deveria ter fechado às 18h. Tiveram que fazer a entrega da mercadoria sem nota fiscal mesmo.

O problema resolveu-se sozinho quando o depto de vendas emitiu outra nota cerca de 14h depois, já no dia seguinte. Quando a nova nota bateu na SEFAZ, “automagicamente” veio a resposta da primeira.

Meu melhor palpite é que a SEFAZ demorou mais que o normal para responder ao envio e a rotina 1452 não estava consultando periodicamente para saber se havia uma resposta. Quando a segunda nota bateu lá finalmente a 1452 “pingou” o site da SEFAZ e recebeu as duas respostas.

2 comentários
  • Snow_man - 310 Comentários

    Cara, agora que também estou dia a dia no varejo, sinto a dificuldade às vezes.
    Em dias agitados (véspera do dia das mães, por exemplo) várias nfce-s ficam na fila, sem enviar, ou envia e fica com o status de aguardando recibo, um caos.

    • Jefferson - 6.606 Comentários

      Meu problema nessa empresa é que também estou fazendo o papel do “cara do sistema”. Em todas as outras, problemas do sistema são resolvidos com os respectivos desenvolvedores. Mas devido à complexidade do Winthor e a falta de treinamento dos usuários tudo passa por mim, incluindo problemas claramente do domínio contábil/fiscal. Para a sorte de todos, o “sysadmin” que eu substituí é um cara extremamente gente boa que tem uma boa vontade imensa e mesmo trabalhando em outra empresa está sempre disposto a ajudar e muitos problemas que envolvem a operação do Winthor são resolvidos com a ajuda dele.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Winthor

Winthor é um sistema de gestão empresarial (ERP) desenvolvido pela PC Sistemas que agora pertence à TOTVS (que, a propósito, parece estar absorvendo todo o mercado). Eu tive o meu primeiro contato com ele meses atrás em um novo cliente e vou começar a fazer posts sobre o assunto, que receberão a tag “winthor”.

É bom deixar avisado aqui que o Winthor é um sistema demasiadamente complexo e eu não tive treinamento nele, assim como muitos dos usuários aos quais estou dando suporte. Muito do que eu vou relatar provavelmente parecerá trivial para o usuário experiente, mas poderá ser útil para técnicos de manutenção que acabem se encontrando numa situação similar à minha. A PC Sistemas/TOTVS mantém uma extensa base de conhecimento sobre o Winthor online mas nem de longe ela é o suficiente para entender o sistema.

O suporte da TOTVS é surpreendentemente rápido, embora nem sempre dê uma resposta satisfatória.

1 comentário
  • Snow_man - 310 Comentários

    obaaaaaaaaaa, está vivo e falando de ERP, muito bom!
    Não lembro de conhecer esse aí, vou curtir muito, e espero prints do sistema, ok?!

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »