Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 17-07-2023 em todas as áreas

  1. A situação: Está ocorrendo um problema no cliente, você decide usar um dos exemplos disponibilizados pelo ACBr para testar se o problema está no seu software. Então, você copia o executável para a máquina do cliente, inicia-o e, ao tentar emitir um DFe, recebe a mensagem " XML Node não pode ser nulo". Ou então, seu próprio software funciona corretamente em sua máquina, mas ao instalá-lo na máquina de um cliente e tentar emitir um DFe, a mensagem "XMLNode não pode ser nulo" é exibida na tela. A causa e a solução: Os componentes do ACBr fazem uso de algumas DLLs para diversas funções, incluindo a assinatura de XMLs. A configuração que determina qual mecanismo será usado para isso pode ser definida na configuração ACBrDFe.Configuracoes.Geral.SSLXmlSignLib, que pode ter os valores xsXmlSec, xsMsXml, xsMsXmlCapicom¹ e xsLibXml2². ¹ Capicom foi descontinuada e, por isso, não recomendamos o seu uso. Veja mais detalhes AQUI. ² Apesar das outras opções, recomendamos fortemente a utilização do LibXML2. Mais detalhes AQUI. Quando você recebe a mensagem de Xml Node não pode ser nulo, na maioria das vezes, ela está relacionada a esta configuração. Portanto, o primeiro passo a ser tomado é verificar se uma das opções possíveis foi configurada na configuração SSLXmlSignLib (lembrando que xsNone equivale a não ter nada configurado). Se uma das opções foi definida, o próximo passo é verificar se a DLL³ foi distribuída corretamente e se está disponível. Uma forma de certificar-se disso é escolher as DLLs de acordo com a arquitetura com a qual sua aplicação foi compilada, encontrando-as neste link e colocá-las no mesmo diretório da sua aplicação. ³ As dlls referidas são da LibXML2
    5 pontos
  2. Obrigado pelas informações. A título de informação, verifiquei também que o governo disponibiliza uma tabela com os NCMs com Incidência Monofásica: http://sped.rfb.gov.br/arquivo/show/1638 Mas ai entra a informação do contador, como o @Alexandre de Paula muito bem informou. Caso mais alguém tenha algo a nos ajudar sobre o assunto, vamos debater
    2 pontos
  3. Boa tarde @Luiz Antonio Ubaldini, Além da orientação do @Diego Foliene recomendo sempre levar em conta a orientação do responsável contábil da empresa. Apesar das automações de cadastros serem muito úteis é preciso levar em conta a responsabilidade pelo preenchimento dos dados e em alguns casos se você fizer uma automação que possa ser contra a orientação do responsável, o seu sistema (você) passa a ser responsável pelas informações. Enfim, lembre-se sempre de acordar com o cliente e contabilidade, se possível por escrito, como e de que forma os dados serão preenchidos.
    2 pontos
  4. Boa tarde @AnDes Sistemas Você tem que criar uma assinatura html, vou te passar o link de outro post para que você solucione seu problema. Leia até o final.
    2 pontos
  5. Boa tarde, Veja no programa de exemplo como ler o XML da DI. ../trunk2/Exemplos/ACBrDFe/ACBrDI/
    2 pontos
  6. Olá pessoal Estivemos batendo a cabeça a alguns dias com um problema na leitura de peso da balança Urano, onde em algumas situações o peso retornado pelo componente era o peso da TARA definido na balança. Analisando os Logs gerados pelo Acbr BAL, identificamos que em algumas poucas situações a balança não retornava a string PESO L, conforme exemplo abaixo tirado da linha 31296 do log que está em anexo -------------------------------------------------------------------------------- ATIVAR - 13/07/23 11:43:31:714 - Modelo: Urano - Porta: COM7 Device: BAUD=9600 DATA=8 PARITY=N STOP=1 HANDSHAKE= MAXBANDWIDTH=0 SENDBYTESCOUNT=0 SENDBYTESINTERVAL=0 -------------------------------------------------------------------------------- -- 13/07 11:43:31:714 - - 11:43:31:714 TX -> � -- 13/07 11:43:32:321 - - 11:43:32:321 RX <- �������� �DATA: 00/00/00 VALID.: 00/00/00 TARA: 0.790kg -- 13/07 11:43:32:321 - UltimoPesoLido: 0,79 - Resposta: �������� �DATA: 00/00/00 VALID.: 00/00/00 TARA: 0.790kg -- 13/07 11:43:32:841 - Quando esta String retornava da balança, o código que interpreta o peso identificava que era o protocolo USE-P2, quando não era o caso, conforme o exemplo abaixo: function TACBrBALUranoPOP.InterpretarRepostaPeso(const aResposta: AnsiString): Double; var wResposta: AnsiString; wPos, wQtd: Integer; begin Result := 0; wResposta := aResposta; wPos := Pos('PESO L:', wResposta); // Protocolo USE-CB2 if (wPos > 0) then begin wResposta := Copy(wResposta,wPos, 16); wPos := Pos(':', wResposta); if (Length(wResposta) > 1) then begin wQtd := (Pos('g', wResposta) - 2); wQtd := wQtd - (wPos + 1); wResposta := Copy(wResposta, wPos + 2, wQtd); //123456 end; end else begin wPos := Pos('kg', wResposta); // Protocolo USE-P2 if (wPos > 0) then wResposta := copy(wResposta, wPos-7, 6) else wResposta := ''; end; if (wResposta = EmptyStr) then Exit; { Ajustando o separador de Decimal corretamente } wResposta := StringReplace(wResposta, '.', DecimalSeparator, [rfReplaceAll]); wResposta := StringReplace(wResposta, ',', DecimalSeparator, [rfReplaceAll]); try { Já existe ponto decimal ? } if (Pos(DecimalSeparator, wResposta) > 0) then Result := StrToFloat(wResposta) else Result := (StrToInt(wResposta) / 1000); except case PadLeft(Trim(wResposta),1)[1] of 'I': Result := -1; { Instavel } 'N': Result := -2; { Peso Negativo } //'S': Result := -10; { Sobrecarga de Peso } else Result := 0; end; end; end; Vejam que na function original ele verifica se existe a string PESO L:, caso não exista, vai para o ELSE onde busca apenas pela string kg, recuando 7 caracteres para obter o peso ali informado. Nessa situação, com o retorno que veio com a TARA na string, o componente retorna erroneamente o peso da TARA. Fizemos uma correção aqui para evitar isso, que não sei se é a melhor opção nesse caso pois estou bastante enferrujado no PASCAL, mas resolveu o problema. Segue: function TACBrBALUranoPOP.InterpretarRepostaPeso(const aResposta: AnsiString): Double; var wResposta: AnsiString; wPos, wQtd, wsPosTara: Integer; begin Result := 0; wResposta := aResposta; wPos := Pos('PESO L:', wResposta); // Protocolo USE-CB2 if (wPos > 0) then begin wResposta := Copy(wResposta,wPos, 16); wPos := Pos(':', wResposta); if (Length(wResposta) > 1) then begin wQtd := (Pos('g', wResposta) - 2); wQtd := wQtd - (wPos + 1); wResposta := Copy(wResposta, wPos + 2, wQtd); //123456 end; end else begin wsPosTara := Pos('TARA:', wResposta); if (wsPosTara > 0) wsResposta := ''; else begin wPos := Pos('kg', wResposta); // Protocolo USE-P2 if (wPos > 0) then wResposta := copy(wResposta, wPos-7, 6) else wResposta := ''; end; end; if (wResposta = EmptyStr) then Exit; { Ajustando o separador de Decimal corretamente } wResposta := StringReplace(wResposta, '.', DecimalSeparator, [rfReplaceAll]); wResposta := StringReplace(wResposta, ',', DecimalSeparator, [rfReplaceAll]); try { Já existe ponto decimal ? } if (Pos(DecimalSeparator, wResposta) > 0) then Result := StrToFloat(wResposta) else Result := (StrToInt(wResposta) / 1000); except case PadLeft(Trim(wResposta),1)[1] of 'I': Result := -1; { Instavel } 'N': Result := -2; { Peso Negativo } //'S': Result := -10; { Sobrecarga de Peso } else Result := 0; end; end; end; Nesse caso o componente vai verificar se existe a string TARA antes de assumir que o protocolo USE-P2 está em uso. Se encontrar, ignora e não retorna peso nenhum. Em anexo log do ACBR usado no exemplo Log Urano protocolo USE-CB2.zip
    1 ponto
  7. Após atualização do ACbr começou a da erro na hora de chamar o TEF, notei que a classe estava enviando 01 ao invés de CTR conforme os logs em anexo. Então voltei a versão do ACBr e o problema foi resolvido. Estou abrindo o Tópico para analise da equipe do ACBr. ACBrTefLog.txt ACBrTefLog_com_erro.txt
    1 ponto
  8. Boa tarde a todos. Eu fiz o procedimento de atualização hoje, no qual veio as mudanças que foram efetuadas na pcteCTeW.pas e deu certo conforme a instrução do Italo. O estranho é que na sexta tentei colocar na pcteConsts.pas a constante conforme foi feito e não chegou a funcionar. Eu devo ter feito algo errado. Mas agradeço pela sugestão e feedback. Um abraço a todos.
    1 ponto
  9. Boa tarde, No modelo da documentação a seção IdentificacaoNFSe está comentada como Provedor Infisc - Layout Proprio Essa seção será considerada por este provedor. Teste o número e a série na IdentificacaoRps
    1 ponto
  10. Boa tarde! Na Tabela de Combustíveis Sujeitos à Tributação Monofásica eles são identificados pelo cProdANP.
    1 ponto
  11. Funcionou! Muito obrigado Italo! Desculpe a demora na resposta aqui, mas encontrei um problema no tratamento de retorno de "lote em processamento" desse provedor, testando envio assíncrono de lote de RPS. Não consegui entender o problema exatamente, mas parece que a resposta da consulta de situação está retornando sucesso, mesmo quando retorna com erros - situação que deveria ser tratada como insucesso, pelo código do provedor. Analisarei detalhadamente esse caso da resposta, e se o problema for no provedor, eu tento corrigir e abro um novo tópico específico.
    1 ponto
  12. Complementando a resposta do @Daniel InfoCotidiano o programa exemplo em Delphi tem exatamente a informação desse tópico.
    1 ponto
  13. Boa tarde Senhores, eu que pixoteei , tinham ainda alguns DCU na pasta dos fontes dos sistema, exclui e ja funcionou, obrigado e perdão por abusar do do forum por uma situação que eu poderia ter conferido desde o inicio!
    1 ponto
  14. Boa tarde Elias. Grato pelo pronto retorno. Neste meio tempo alterei o fonte desabilitando a consistência e consegui gerar a cobrança. A título de informação, a API v2 do BB está intermitente, verificando o forum deles me deparei com várias pessoas relatando 404 ao criar o PIX. Na insistência, a cobrança é criada. Obrigado.
    1 ponto
  15. if (ACBrTEFD1.RespostasPendentes[i].Rede = Venda.Pagamentos[IndicePagto].Rede) and (ACBrTEFD1.RespostasPendentes[i].NSU = Venda.Pagamentos[IndicePagto].NSU) and (RoundABNT(ACBrTEFD1.RespostasPendentes[i].ValorTotal,2) = RoundABNT(Venda.Pagamentos[IndicePagto].ValorPago,2)) then Result := ACBrTEFD1.RespostasPendentes[i]; Teste novamente este mesmo valor e confirme se ele sempre apresenta o problema. Depois teste colocando o RoundABNT() Confirme também a sugestão do Daniel, verificando se o NSU está vindo com a mesma máscara.
    1 ponto
  16. Olá @TiagoTecchio, Realmente essa validação estava incorreta. Acabei de enviar ao SVN uma possível correção. Por favor atualize seus fontes do SVN e efetue novamente o teste. (Rev. 30129)
    1 ponto
  17. Essa condição com Double também é "perigosa", pois algum valor irrisório mas casas decimais pode estar gerando uma diferença. Talvez um RoundABNT aí seria interessante.
    1 ponto
  18. Minha teoria, é que o NSU possa estar diferente (sem zeros a esquerda, por exemplo).. e esse IF, falhe if (ACBrTEFD1.RespostasPendentes[i].Rede = Venda.Pagamentos[IndicePagto].Rede) and (ACBrTEFD1.RespostasPendentes[i].NSU = Venda.Pagamentos[IndicePagto].NSU) and (ACBrTEFD1.RespostasPendentes[i].ValorTotal = Venda.Pagamentos[IndicePagto].ValorPago) then Result := ACBrTEFD1.RespostasPendentes[i];
    1 ponto
  19. Boa tarde @rpaulogio Já o fiz, esta com o time validando para poder subir p o SVN. Aviso por aqui assim q estiver disponível nos repositórios.
    1 ponto
  20. Boa tarde Pessoal. No .ini eu consegui configurar o parâmetro NomeLongoNFSe e deu certo para o que eu precisava. Seguem duas observações: 1. Na Lib, embora funcione carregando o parâmetro do .ini, não tem a propriedade para configurar via aplicação. Este ponto para meu caso não é um problema, mas estou relatando para caso vocês achem interessante, disponibilizar a propriedade para configuração também via Lib. 2. No meu caso fiz da seguinte maneira: gerei o arquivo na pasta padrão(propriedade PathPDF) e depois renomeei de acordo com o meu padrão. Obrigado
    1 ponto
  21. @Gilvan Oliveira, Realmente notei algo estranho em um commit recente no Commit [r30008] Já apliquei a reversão Commit [r30127]
    1 ponto
  22. Olá. Fazendo um teste, creio que enviei a UNIT errada, pois esta não está compilando. Segue correção ACBrBALUranoPOP.pas
    1 ponto
  23. Ocorre no exemplo também, e agora testei com o método de cancelamento da NFC-e e o mesmo problema também ocorre. Havia citado o problema no discord, e o Diego Folieni já fez o teste e relatou que o problema também estava acontecendo no ambiente de vocês. Apenas criei o tópico para documentar.
    1 ponto
  24. Bom dia, Feito a atualização e uma nova reinstalação resolveu o problema da rejeição. Obrigado pela atenção.
    1 ponto
  25. Bom dia Wallace, O componente verifica se a propriedade de configuração: Configuracoes.Arquivos.TabServicosExt esta com o valor True, caso afirmativo ele procura pelo arquivo: TabServicos.txt dentro da pasta do EXE se achar procura pelo código do ItemListaServico, se encontrar retorna a descrição. Por outro lado se o valor da propriedade de configuração for False ele procura pelo código em uma tabela interna (código do componente) se achar retorna a descrição. Tanto nessa tabela interna quanto no arquivo TabServicos.txt existe o código 14.13, se não esta aparecendo a descrição do mesmo pode ser que você tenha ativado a propriedade de configuração e não copiou o arquivo txt ou o provedor esta retornando o código de uma forma não esperada pelo componente. Esse arquivo txt se encontra na mesma pasta do programa exemplo feito em Delphi.
    1 ponto
  26. Bom dia, Criada a TK-4209 para avaliar a contribuição. Obrigado
    1 ponto
  27. 1 ponto
  28. Bom dia! Foi enviado ao SVN na Rev-30125 alterações visando corrigir este problema. As mesmas estarão disponíveis para testar na próxima compilação do Monitor.
    1 ponto
  29. Boa noite, Complementando, segue documentação da lib sobre o parâmetro detalhado pelo Italo, utilize (0)False ou (1)True https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca22.html NomeLongoNFSe Define o Nome Longo NFSe: 0 = Não 1 = Sim
    1 ponto
  30. Boa noite Elisângela, Quanto a sua primeira pergunta a resposta é sim, na propriedade XmlNfse você tem o XML da NFS-e e pode usar o seu conteúdo para salvar no banco de dados. Com relação a sua segunda pergunta, só vamos descobrir se isso ocorre comparando o DANFSE impresso pelo componente com o do link retornado pelo provedor.
    1 ponto
  31. Bom dia pessoal! Foi publicado no dia 12/07/2023 na página do e-Social notícia informando que a data da entrada em produção dos eventos de processos trabalhistas será no dia 1º de outubro de 2023 (01/10/2023).
    1 ponto
  32. Boa noite, Obrigado pela colaboração. As implementações da NT 02/2023 e revisão da versão 2.1.2, que foi liberada esta semana, serão feitas na próxima semana e seus fontes serão analisados também.
    1 ponto
  33. Boa noite, Obrigado pela colaboração. As implementações da NT 02/2023 e revisão da versão 2.1.2, que foi liberada esta semana, serão feitas na próxima semana e seus fontes serão analisados também.
    1 ponto
  34. Boa tarde Jovito, O componente tem uma propriedade de configuração chamada: NomeLongoNFSe (boolean). Não sei se ela esta disponível na Lib. Se essa propriedade estiver com o valor True, o nome do XML da NFS-e vai ser composto por 37 dígitos: UF (2), Ano (2), Mês (2), CNPJ (14), Modelo (2), Numero (15). Desta forma é possível separa notas com o mesmo numero de empresas distintas, uma vez que o CNPJ vão ser diferentes.
    1 ponto
  35. Bom dia @C4Dev Obrigado por reportar. Sempre que precisar postar Log ou trechos longos, anexe em arquivos para ficar mais organizado o fórum. Vi que você citou que fez a correção e testou, por favor anexe a unit modificada para que nossa equipe possa analisar. Como não temos relatos semelhantes, pode anexar a documentação que consta esta alteração, este campo. Muito Obrigado !
    1 ponto
  36. @Patrick Knopf Subimos uma correção, por favor atualizar os fontes, reinstale o ACBr
    1 ponto
  37. Bom dia Léo, Favor atualizar os fontes, reinstale o ACBr e faça novos testes.
    1 ponto
  38. Boa tarde, Estes arquivos são do envio, anexe os arquivos de retorno. Caso não estejam sendo gerados, aumente o Timeout para 30k ou mais, pois pode estar interrompendo o processo.
    1 ponto
  39. consegui instalando novamente o ACBrInstall desmarcando a opção “Deixar somente a pasta LibXXX no library path”. Obrigado!!!
    1 ponto
×
×
  • 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...