Ir para conteúdo
  • Cadastre-se

Nelson A Sousa

Membros
  • Total de ítens

    358
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Nelson A Sousa postou

  1. Olá, Notei que o Demo C# estava retornando o erro de validação: 252-Rejeição: Ambiente informado diverge do Ambiente de recebimento (Tipo do ambiente da NF-e difere do ambiente do Web Service) O enumerador na AcbrLib.Core consta como 0-Produção e 1-Homologação, creio que deveria ser alterado: namespace ACBrLib.Core.DFe { public enum TipoAmbiente { taProducao = 1, taHomologacao = 2 } }
  2. Olá @Daniel Simoes, Obrigado pela resposta! Acabei encontrando a solução por aqui, eu tenho um mau hábito de declarar objetos na abertura dos formulários, para uso com escopo geral dentro do form. Então eu declarei a AcbrLib no evento load e fui trabalhando com ela dentro do form. Só que ao chegar na hora de Assinar() a NFCe estava dando o erro descrito. Acabei mudando a forma de trabalhar e fiz o dispose() e recarga da lib em cada método onde era necessária. O erro acabou por cessar.
  3. Olá, pessoal, Boa tarde! Ao validar um XMl usando a AcbrLib.NFe a bibilioteca está tentando localizar a pasta de Schemas na raiz do EXE, ignorando a pasta configurada no INI. No meu INI está: PathSchemas=C:\Methodus\Gerente\Schemas\ Está retornando o erro de que não encontra o arquivo na pasta do EXE.
  4. Olá, Os fontes são totalmente liberados para os usuários do fórum. Basta acessar pelo SVN, e compilar suas dlls com o Lazarus.
  5. Ok, @Rafael Dias, Eu agradeço muito a atenção!
  6. Obrigado @Rafael Dias Quanto ao erro de salvamento do arquivo AcbrLib.INI eu descobri onde está o erro. Está na declaração/utilização dos métodos ACBrNFe.ConfigLer() e ACBrNFe.ConfigGravar(): Para que a Lib respeite a pasta da inicialização os métodos devem ser utilizados sem o parâmetro, ou com o mesmo parâmetro da inicialização. No demo existe um método intermediário que está passando um parâmetro diferente: LoadConfig(string file = "ACBrLib.ini") <--- Viu? Passando somente o nome do arquivo INI assume a pasta raiz do EXE. Dá uma conferida lá no demo pra vc ver. Acredito que o tópico possa ser encerrado...obrigado a todos!!!
  7. @Rafael Dias, O inicio de tudo isso foram as 2 classes abaixo...rsrsrs. Poderia verificar a possibilidade de acrescentá-las na AcbrLib.Core na pasta Serial? SerialBaud.cs SerialDataBits.cs
  8. Olá @Rafael Dias, Bom dia! Muito obrigado pela atenção! Segue anexo uma cópia completa: FrmMain.cs ACBrNFe.cs
  9. Olá, Dê uma olhada no manual, é "completasso"!!! https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca16.html
  10. Acabei refazendo os testes, SVN revision 19490. Usei o demo C# que acompanha o AcbrLib. Limpei a pasta debug. Recompilei a dll no Lazarus, estou usando a x86 - AcbrNFe32.dll. Informei minha pasta na inicialização: public FrmMain() { InitializeComponent(); ACBrNFe = new ACBrNFe(Path.Combine(@"C:\BKP", "ACBrLib.ini")); } Somente compilei, abri e fechei o demo sem efetuar alteração nenhuma. Foram criados 2 AcbrLib.INI, um na pasta de inicialização, e outro na pasta raiz do EXE, no caso a debug da demo. Voltei a compilar e efetuei apenas uma mudança nas configurações, informei um número de série qualquer de certificado. A mudança só foi efetuada no INI da pasta raiz do EXE. A única mudança que fiz no demo foi informar a inicialização conforme acima. @Rafael Dias, A alteração e leitura do INI só é efetuada na pasta correta informando-se o path em ConfigLer() e ConfigGravar().
  11. Desculpe @Rafael Dias, Mas você está se referindo à classe C# do demo? ou as alterações realizadas foram nos fontes? O SVN acusou a revisão 19490.
  12. Olá @Rafael Dias, Acabei de realizar um teste utilizando o Demo. Acho que ainda não solucionou, o path informado na inicialização não é respeitado ao se salvar as configurações. O arquivo é criado no path da inicialização, porém ao se realizar alterações e clicar no botão de salvar as configurações as configurações são salvas na pasta raiz do EXE. Mas acho que descobri onde está o "erro". Eu estava pressupondo que o path informado na inicialização, era armazenado de forma global na LIB. Isso não acontece. A solução está em se informar o path do arquivo de configurações sempre que for trabalhar com ele. Ou seja, sempre que utilizar ACBrNFe.ConfigLer("Infomar o mesmo path da inicialização"), e, também ao se utilizar ACBrNFe.ConfigGravar(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini")); Resumindo, usar sempre: ACBrNFe = new ACBrNFe(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini")); ACBrNFe.ConfigLer(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini")); ACBrNFe.ConfigGravar(Path.Combine(@"C:\SuaPasta", "ACBrLib.ini"));
  13. Olá, Verifique se o sistema está mesmo fechando, ou, sendo enviado "para trás". Use ALT + TAB para navegar pelas janelas abertas.
  14. Olá @Daniel Simoes, Me coloco à disposição caso queiram fazer algo conjuntamente na hora de reproduzir o problema. É só escolher o meio de comunicação, Skype, WhatsApp...qualquer um, é só avisar. Skype: nelsonasousa WhatsApp: (32)98847-3655
  15. Se eu puder dar uma sugestão, Não seria melhor se evitar usar arquivos de configuração na raiz do EXE? Digo isso por causa da distribuição por ClickOnce. A cada envio de atualização a pasta raiz é modificada e as configurações em arquivos INI ou XML vão pro espaço. Por isso tenho dado preferencia para informar a pasta de inicialização, entende?
  16. Bom dia a todos! @Rafael Dias, Acabo de executar um teste com as mudanças: 1 - Limpei a pasta de inicialização , pagando todos os INIs e LOGs: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); 2 - Limpei a pasta raiz do EXE (minha pasta DEBUG): 3 - Declarei private ACBrNFe _AcbrNFe; com escopo para todo o formulário. 4 - Inicializei a lib conforme código do item 1. 5 - Verifiquei a pasta de inicialização e foi criado um ACBrLib.ini nela, bem como na pasta raiz do EXE. Porém ambos de conteúdo diferente. Segue arquivos abaixo. 6 - Alterei a impressora posprinter para Daruma e o baud pra 1200, o arquivo da pasta de inicialização não foi modificado, o da pasta raiz do EXE é que sofreu as mudanças. Veja abaixo os arquivos. Conclusão: A LIB leva em consideração a pasta que indicamos para criação do INI, porém segue trabalhando com o INI da pasta raiz do EXE. Repare que, mesmo no momento da criação do INI, o mesmo é criado com conteúdo diferente nas pastas. O da pasta de inicialização é bem maior que o da pasta EXE. Pelo que percebi devem haver 2 métodos na LIB realizando o mesmo procedimento, só que um está mais completo que o outro. Pelo menos é o que aparenta. Um abraço e obrigado pela atenção!!! ACBrLib_Raiz_EXE.ini ACBrLib_Pasta_Inicializacao.ini ACBrLib_Pasta_Inicializacao_Apos_Alteracao.ini ACBrLib_Raiz_EXE_Apos_Alteracao.ini
  17. Ok, @Rafael Dias , Vou testar amanhã cedo!
  18. ok, lá vai: 1 - Limpe tudo da raiz do EXE, no meu caso pasta DEBUG do minha IDE. 2 - Apague o AcbrLib.ini da pasta de inicialização, no meu caso NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini". Você tem que informar uma pasta diferente da raiz do EXE, ok? 3 - no escopo do formulário: private ACBrNFe _AcbrNFe; 4 - no evento load do formulário: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); 5 - Apenas abra o formulário e verifique se os arquivos AcbrLib.ini foram criados na pasta da inicialização e na raiz do EXE. 6 - Verifique o conteúdo dos arquivos, no meu caso tentei efetuar a leitura da seção PosPrinter_Device e ela não foi encontrada no arquivo da pasta da inicialização.
  19. @Rafael Dias, Efetuei o primeiro teste utilizando apenas a AcbrLib.NFe, inicializei assim: No escopo do formulário: private ACBrNFe _AcbrNFe; No evento Load do formulário: _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Apenas abri o formulário para a criação e primeira carga do INI e o que aconteceu foi: Foram criados 2 AcbrLib.INI, um na pasta que informei na inicialização, e outro na raiz do EXE (pasta debug). Apesar de terem o mesmo nome AcbrLib.ini, os dois tem conteúdo diferentes. Quando faço a leitura do criado na inicialização a seção AcbrPosPrinter_Device e suas chaves não são encontradas. Porém veja que estão no INI criado na raiz do EXE. ACBrLib_Raiz_do_EXE.ini ACBrLib_Pasta_Inicializacao.ini
  20. Olá @Rafael Dias, Eu acho que já testei com apenas uma LIB inicializada, mas vou repetir o teste pra sanar a dúvida.
  21. Eu consegui um progresso aqui retirando o escopo das declarações para o formulário inteiro e restringindo ao escopo do método. Por exemplo, como eu dividi o formulário de configurações dentro de um TABControl, eu usei o evento GotFocus() da TAB selecionada para ler os dados do INI e carregar os controles dentre desta TAB. Ao terminar de carregar todos os controles da TAB, eu finalizo a LIB que inicializei. Para salvar os dados alterados dentro de cada TAB, eu utilizei o evento LostFocus() da mesma. Novamente eu inicializo a LIB, faço a gravação dos valores no INI com ConfigGravarValor(), e finalizo novamente a LIB inicializada. Usando dessa forma, ou seja, inicializando, manipulando, e finalizando cada LIB dentro dos métodos, no caso GotFocus() para carga e leitura dos dados do INI, e, LostFocus() para gravação do INI, eu consegui salvar os dados. Mas, ainda notei que sempre é criado um AcbrLib.INI na raiz do EXE, só que este contém apenas as seções e chaves da LIB que foi fechada por último. Notei também que, para manipular os dados GERAIS, é necessário usar-se a AcbrLib.NFe, as outras que utilizei aqui, posprinter e ETQ não manipulam estes dados, apesar de criar o INI com os dados GERAIS padrão. Ah, e como estou utilizando a demo do C#, eu tive que criar os métodos de finalização para que pudesse finalizar a LIB após sua utilização dentro do eventos. public void FinalizarNFe() { var method = GetMethod<Delegates.NFE_Finalizar>(); var ret = ExecuteMethod(() => method()); CheckResult(ret); }
  22. Não mudo não @Daniel Simoes, eu faço a declaração: ACBrNFe _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Após isso uso apenas _AcbrNFe para realizar a leitura do INI e as alterações. Para reproduzir o que faço aqui siga: 1 - Deleto (limpo) a pasta Debug da minha IDE. 2 - Deleto o AcbrLib.INI e todos os logs da pasta NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini" 3 - Compilo meu sistema e abro a tela de configurações, no evento load() já faço as declarações de cunho global para a tela que abri: _AcbrPos = new ACBrPosPrinter(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); 4 - Vou até a pasta NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini" e verifico a criação do AcbrLib,INI. Que no caso é criado corrtamente. 5 - Vou até a pasta DEBUG(raiz do EXE) e verifico se foi criado um AcbrLib.ini. Neste caso NÂO É CRIADO!!! 6 - Faço alguma alteração qualquer usando a PosPrinterLib e a AcbrNFeLib, no meu caso apenas selecionei o modelo como Daruma e coloquei o Baud como 1200. 7 - Vou até a pasta que indiquei ao declarar (NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini") e vejo que o INI não foi alterado. 8 - Vou até a pasta DEBUG (raiz do EXE) e vejo que foi criado um segundo AcbrLib.INI, este sim com as alterações, mas somente com as alterações da Lib que foi fechada por último. Esse é o roteiro do que fiz para descobrir que apenas são salvas as alterações da última LIB fechada. E salvas na pasta raiz do EXE, não na pasta que informei.
  23. Fiz um segundo teste alterando as posições de: _AcbrNFe.ConfigGravar(); _AcbrPos.ConfigGravar(); para: _AcbrPos.ConfigGravar(); _AcbrNFe.ConfigGravar(); e o resultado está no arquivo anexo. Parece que a lib que lida de forma mais completa com o INI é a AcbrLib.NFe, pois alterou os dados gerais, etc. Porém ignorou as alterações da PosPrinter. O @Daniel Simoes matou a charada lá em cima, cada LIB carrega uma cópia do INI para a memória e salva sem consultar o disco. A solução para isto é até simples, basta construir-alterar-salvar cada LIBde forma separada, mesmo dentro do mesmo formulário, ou seja, usar métodos com declarações privadas. O problema que restou é que a leitura do INI é feita na pasta que informamos, e a gravação na raiz do EXE. Acho que é isso...rsrsrsrs ACBrLib_Segunda_Alteracao.ini
  24. Vou passar um passo a passo do que estou fazendo: 1 - Faço a construção: _AcbrPos = new ACBrPosPrinter(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); _AcbrNFe = new ACBrNFe(NgGlobais.PubPastaEmpresa + @"\Dados\Logs\ACBrLib.ini"); Após a construção a AcbrLib.INI é criada na pasta que eu indiquei, veja abaixo o arquivo AcbrLib_Criada.INI. 2 - Faço as alterações, pra efeito de teste, alterei apenas o baud da PosPrinter pra 1200 e a impressora para Daruma: _AcbrNFe.ConfigGravarValor(ACBrSessao.Emissor, "RazaoSocial", _empresa.Empresa); --> veja que envio a alteração Razão social com a AcbrNFe. _AcbrPos.ConfigGravarValor(ACBrSessao.PosPrinter, "Modelo", (ACBrPosPrinterModelo)CboModeloEscPos.SelectedValue); --> Aqui o comando de alteração da impressora. _AcbrPos.ConfigGravarValor(ACBrSessao.PosPrinter_Device, "Baud", (int)(SerialBaud)CboVelocidadeEscPos.SelectedValue); --> Aqui o comando de alteração do baud. Finalizo tudo com: _AcbrNFe.ConfigGravar(); _AcbrPos.ConfigGravar(); nesta mesma sequência. A AcbrLib.INi é mantido na pasta que eu informo, veja arquivo abaixo (AcbrLib.INI_Mantida). E por fim, é criado na raiz do EXE outro AcbrLib.INI com as alterações (AcbrLib_Apos_Alteracoes). Infelizmente o log não foi criado!! ACBrLib_Criada.ini ACBrLib_Mantida.ini ACBrLib_Apos_Alteração.ini
  25. Bom dia! Sim, estou usando a Demo C# da AcbrLib.NFe, AcbrLib.ETQ, AcbrLib.CHQ e a AcbrLib.PosPrinter.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...