Jump to content

click.png

click.png

click.png

click.png click.png click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

  • Posts

    16
  • Joined

  • Last visited

Contact Methods

  • Website URL
    http://www.afa.inf.br

Recent Profile Visitors

785 profile views

[email protected]'s Achievements

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

8

Reputation

  1. Gerado pelo próprio site da Kaspersky o e--mail retornou minutos depois com mensagem que a conta não existe. Your message to [email protected] couldn't be delivered. kaspersky.cs.br wasn't found at digitalriver.com.
  2. Enviei um e-mail para o pessoal da Kaspersky, pedindo providências. Mandei um e-mail agora, inclusive mencionando esse post e a dificuldade de todos os usuários.
  3. Mesmo problema com dois clientes. Kaspersky, e gravação de arquivos no servidor.
  4. Consultas incrementais, como melhorei as minhas... Crie um Timer, ele será responsável por executar suas consultas. Propriedades do Timer Interval = 300 // aqui vc configura a sensibilidade da coisa... Enabled = false procedure TF_PDV.Edit_ProdutoChange(Sender: TObject); begin Timer.enabled := false; // reset do timer a cada teclagem Timer.enabled := true; if empty(Edit_Produto.Text) then begin Timer.enabled := false; // campo vazio.... Timer desligado Query_Produtos.Close; // Consulta de produtos é fechada (necessário no meu caso) end; end; procedure TF_PDV.TimerTimer(Sender: TObject); begin Timer.enabled := false; // Timer atingiu o tempo, se desliga e dispara a consulta. Filtra_Produtos(Edit_Produto.Text); // Função que dispara a consulta do produtos end; Funcionamento Quando o campo que vc utiliza receberem uma informação (onChange por exemplo) esse evento irá resetar o timer e assim não desperdiçará uma ou mais consultas com as teclagens iniciais, até o usuário terminar ou fazer uma pausa em sua digitação. No meu caso 300 milisegundos deram conta do recado... ou seja, quando o usuário está teclando, sem saber a cada tecla na verdade ele está postergado o disparo da consulta, assim que ele faz uma pausa o timer inicia a contagem do tempo, e se atingir o liminar que você definiu pronto, a consulta ocorre, se antes disso o distinto usuário pressionar outra tecla, o timer é interrompido e ninguém perde tempo com disparados desnecessários das consultas; se o campo estiver vazio o timer é desligado. Fica minha contribuição. Abel F. de Angelis AFA - Assessoria e Informática Ltda
  5. Problema hoje 12/11/2018 cliente que usa certificado Certisign em pendrive. Retirado o pendrive. Reiniciado o micro Recolocado o pendrive Tudo voltou ao normal. Obs: Windows 7, micro com todas as atualizações.
  6. Olá Barbosa, Não consegui identificar quando tive o problema. Acredito que são muitas as DLL envolvidas, cada projeto pode utilizar um conjunto diferente, para criptografia, forma de envio, relatórios, etc. Não sei se o ACBr utiliza a função "LoadLibrary" para carregar as DLL, caso utilize minha sugestão é padronizar para "LoadSafeLibrary". Se achar viável e me der uma orientação básica posso fazer a modificação em cada um dos arquivos nos fontes e subir para vocês avaliarem. Fico à disposição..
  7. Como não pretendo alterar as rotinas que carregam as DLL vou ficar com o comando set8087cw(4978); no meu código fonte. Barbosa, se você puder sugerir aos responsáveis pelo código que carrega as DLL de utilizarem "LoadSafeLibrary" ao invés de "LoadLibrary" como o Thomas Mueller sugere, de repente, evitamos futuros efeitos colaterais. Obrigado por seu post.
  8. Caro Felipe, não estava com dúvida ou problema, apenas colaborando com o grupo.
  9. A nossa rotina de importação permite que o usuário escolha cProd ou cEAN e agora faz validações extras para avisar o usuário. Obrigado pelos comentários !!!
  10. A ideia de um identificador único e exclusivo me parece a melhor opção. A meu ver, um código que "agrupe" diversos produtos não é de fato um GTIN e quebra a ideia de identificadores exclusivos, pois não faz o principal, que é diferenciar um item de outro. Isso traz transtornos pois impede por exemplo: A) A Importação direta dos itens de uma compra. B) Na hora do check-out, a utilização do código de barras do fabricante que por ventura já esteja impresso. C) A contagem direta do inventário através de coletores de dados. D) A troca direta de informações entre fornecedor e cliente, ou seja sempre alguma informação complementar sempre terá que ser anexada. Minha recomendação para quem precisa de GTIN é um código para cada produto, seja por distinção de tamanho, cor ou qualquer outro detalhe que o diferencie pois quando dependemos de usuários e operadores para complementar as informações geramos a oportunidade de erros. Imagine uma esteira automática que lê o código de barras e separa por tamanho, já não iria funcionar. Relaciono esse problema diretamente à situação de uma tabela onde não se tem um ID para cada registro e a chave de relacionamento seja composta por mais de um campo...transtorno permanente. Independente do meu ponto de vista, cada um sabe onde o "calo aperta". Abraços. Sobre o exemplo que citei não existe GTIN que começe com '00000' ou seja, tem alguém muito criativo tentando inventar uma maneira de preencher o campo.
  11. Olá Daniel, checadas as configurações do ACBr.inc informo que elas não interferem em nada nessa questão.
  12. Caso os colegas façam importação de NFe tomem cuidado com usuários que conseguem "inventar" certas informações na NFe. Basicamente um de nossos cliente estava com problemas ao importar a NFe. Analisando o XML percebemos que o fornecedor enviou com um EAN que não existe 0000012345670 e para melhorar repetiu esse código em três dos itens da NFe. Não é uma beleza ? "Toca" fazer rotina para tratar esse tipo de informação furada... -<det nItem="7"> -<prod> <cProd>423794</cProd> <cEAN>0000012345670</cEAN> <xProd>ESM COLORAMA S/BL EXTRA BRILHO 6UN P LOREA</xProd> <NCM>33043000</NCM> <CEST>2001200</CEST> <CFOP>5405</CFOP> ... -<det nItem="8"> -<prod> <cProd>423772</cProd> <cEAN>0000012345670</cEAN> <xProd>ESM COLORAMA S/BL LEITE DE COCO CREM 6UN LOREA</xProd> <NCM>33043000</NCM> <CEST>2001200</CEST> <CFOP>5405</CFOP> ... -<det nItem="9"> -<prod> <cProd>423773</cProd> <cEAN>0000012345670</cEAN> <xProd>ESM COLORAMA S/BL PETALA BRANCA CREM 6UN LOREA</xProd> <NCM>33043000</NCM> <CEST>2001200</CEST> <CFOP>5405</CFOP> ...
  13. Ok vou checar e ver se estudo um pouco mais sobre o projeto como um todo. Obrigado.
  14. Problema começou a ocorrer em 8/8/2018. Após atualização diversas no Windows 7 e no ACBr comecei a ter problemas pois as exceções de divisão por zero pararam de ocorrer, algo simples como: var a,b,c: real; begin a := 10; b := 0; c := a / b; end; Simplesmente "passava batido" inclusive ao debugar, e curiosamente "c" retornava com o valor INF que é a constante Infinity. O projeto foi testado em máquinas diferentes com versões do Delphi também diferentes Seattle e Tokyo, (o que me tomou um tempo lascado) pois desconfiada que pudesse ser um problema no compilador ou na máquina e depois no meu projeto; mas tudo atualizado até o último bit e e o problema persistiu. Um projeto novo, em ambas as máquinas, gerava a exceção, diferentemente do projeto existente que insistia em trazer a constante INF. Após pensar em largar tudo e fazer medicina (kkk), desmantelei o projeto existente e ao retirar os componentes do ABCr as exceções voltaram a ocorrer. Investigando mais a fundo notei que quando se utiliza a linguagem C o padrão de retorno são as constantes, e isso é válido para objetos COM e eventualmente DLL que possamos acessar. Então acredito que alguma DLL que eu esteja utilizando nesse projeto onde utilizo o ACBr (NFe, SAT e Extrato com o Fortes Report) modifica o controle de ponto flutuante do processador para que ele faça o que é chamado de "mascaramento de exceção". Essa modificação persiste e afeta o meu projeto como um todo. Lendo um pouco mais, aparentemente esse problema só ocorre nos ambientes de 32 bits. Após 3 dias, lendo e pesquisando, para resolver a questão coloquei no form create a seguinte rotina: set8087cw(4978); Essa camaradinha aí em cima controla a precisão dos cálculos de ponto flutuante e esse valor 4978 (hex $1372) define "mostrar todas as exceções" eu não sabia e para achá-lo utilizei a função get8087cw(word), depois pesquisando mais um pouco encontrei a informação. Feito isso as exceções voltaram a aparecer... Agora é só esperar o próximo comportamento esquisito, do nada, aparecer. Se eu escrevi alguma bobagem e alguém souber mais sobre esse assunto por favor contribuam para que possamos aprender um pouco mais. http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/System_Set8087CW.html
  15. Só consegui implementando a tag fatura. -<cobr> -<fat> <nFat>2320</nFat> <vOrig>411.00</vOrig> <vLiq>411.00</vLiq> </fat> -<dup> <nDup>2320 1-1</nDup> <dVenc>2018-08-25</dVenc> <vDup>411.00</vDup> </dup> </cobr> -<pag> -<detPag> <tPag>14</tPag> <vPag>411.00</vPag> </detPag> </pag>
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.