Artsio
Membros-
Total de ítens
76 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
Artsio's Achievements
-
975 - Obrigatoria a informacao do identificador do CSRT e do Hash do CSRT
um tópico no fórum postou Artsio Dúvidas Gerais sobre o ACBr
o Componente o TACBrNFe não está gerando as tags do ID, e hashCSRt do Responsável Técnico, começou aparecer alguns dias. Acho que é algum problema no componente, pois mesmo preenchendo com o token informado pela receita ainda continua dando essa mensagem. ex: FACBrNFe.Configuracoes.RespTec.idCSRT := 1; FACBrNFe.Configuracoes.RespTec.CSRT := '1234567890123456789012345678'; o nome, cnpj estão sendo gerado, mas esses dois que não... Tentei no exemplo de cima e continua dando o mesmo erro. Nesse outro exemplo aqui também dá o mesmo erro: infRespTec.idCSRT := FInfRespTec^.IdCsrt; infRespTec.hashCSRT := CalcularHashCSRT(FInfRespTec^.TokenCsrt, FACBrNFe.NotasFiscais.Items[0].NFe.infNFe.ID); -
Erro nos Campos Informação do Responsável Técnico
um tópico no fórum postou Artsio NFC-e - Nota Fiscal do Consumidor Eletrônica
Na NFe do Paraná começou de uns dias aparecer o seguinte: "Obrigatorio Informação do CSRT e do Hash CSRT" Foi cadastrado na receita e gerado o código CSRT e mesmo assim, colocando não gera no xml. with infRespTec do begin CNPJ := FInfRespTec^.Cnpj; xContato := FInfRespTec^.Contato; email := FInfRespTec^.Email; fone := FInfRespTec^.Fone; idCSRT := FInfRespTec^.IdCsrt; hashCSRT := CalcularHashCSRT(FInfRespTec^.TokenCsrt, FACBrNFe.NotasFiscais.Items[0].NFe.infNFe.ID); end; Já coloquei até manualmente e nada, nos campos idCSRT e hashCSRT não aparece no xml -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Bom dia! Depois de quebrar a cabeça a única maneira que consegui resolver foi editar o "ACBr_DFeComum" e acionar a função "DestroyLibXml2Interface()" da interface "ACBrLibXml2.pas" que libera a dll "LibXML2" da memória, nos "Destroy" das classes: "TACBrXmlDocument()" e "TDFeSSLXmlSignLibXml2"; Código que foi acrescentado: Unit: ACBrDFeXsLibXml2: destructor TDFeSSLXmlSignLibXml2.Destroy; begin DestroyLibXml2Interface(); inherited Destroy; end; Unit: ACBrXmlDocument: destructor TACBrXmlDocument.Destroy; begin if xmlRootElement <> nil then xmlRootElement.Free; if xmlDocInternal <> nil then xmlFreeDoc(xmlDocInternal); DestroyLibXml2Interface(); inherited Destroy; end; Sei que o "DestroyLibXml2Interface()" já é chamado no finalization da unit "ACBrLibXml2". Seja o que for por uso de thread, concorrência, as chamadas seguintes para o endereço de memória dessa dll compartilhada estão dando violação de endereço memória, e causam os retornos de leitura vazia do xml. Talvez vcs poderiam criar um branch para com o carregamento estático dessa dll, para testar. -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
-
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Nos meus testes aqui consegui ver que está carregando a dll dinamicamente "libxml2.dll" na memória Só quando vai chamar a função "loadedDoc := xmlParseDoc(PAnsiChar(ansistring(AXmlDocument))); dá o erro 15/08/2024 17:07:56: "TACBrXmlDocument.LoadFromXml" : Linha: 1351 15/08/2024 17:07:56: LibXml2File: C:\_ROTUMA\FGE\WIN32\libxml2.dll 15/08/2024 17:07:56: "TACBrXmlDocument.LoadFromXml" : Linha: 1356 15/08/2024 17:07:56: "TACBrXmlDocument.LoadFromXml" : Exception: Access violation at address 7728F953 in module 'ntdll.dll'. Write of address 00000014 15/08/2024 17:07:56: "TACBrXmlDocument.LoadFromXml" : Linha: 1384 procedure TACBrXmlDocument.LoadFromXml(AXmlDocument: string); var loadedDoc: xmlDocPtr; loadedRoot: xmlNodePtr; begin LogSalvar('"TACBrXmlDocument.LoadFromXml" : Linha: 1351'); // a linha abaixo foi comentada pois segundo o DSA consome muito a CPU e causa lentidão // AXmlDocument := NativeStringToUTF8(AXmlDocument); try LogSalvar('LibXml2File: '+LibXml2File); LogSalvar('"TACBrXmlDocument.LoadFromXml" : Linha: 1356'); loadedDoc := xmlParseDoc(PAnsiChar(ansistring(AXmlDocument))); LogSalvar('"TACBrXmlDocument.LoadFromXml" : Linha: 1358'); except on E: Exception do LogSalvar('"TACBrXmlDocument.LoadFromXml" : Exception: '+e.Message); end; if loadedDoc <> nil then begin xmlFreeDoc(xmlDocInternal); xmlDocInternal := loadedDoc; loadedRoot := xmlDocGetRootElement(xmlDocInternal); if loadedRoot <> nil then begin xmlRootElement.Free; xmlRootElement := TACBrXmlNode.Create(Self, loadedRoot); end else begin raise EACBrXmlException.Create(xmlGetLastError()^.message); end; end else begin raise EACBrXmlException.Create(xmlGetLastError()^.message); end; end; -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Tem alguma ideia que possa estar testando se esta dll está sendo carregada? Ou que possa estar fazendo para descubrir a origem do problema? -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Não tive tempo de testar no exemplo, mas vou ver se consigo simular algo parecido com o nosso. Testei no Síncrono e Assíncrono e também ocorre. -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Aqui no nosso Sistema, as bpls e dlls, são todas carregadas dinamicamente, tem esse detalhe, pode ser por isso. Só está ocorrendo na NFCe, os xml de retorno estão certo, voltando correto, mas por algum motivo não consegue pegar os dados na leitura do xml de retorno. (CStats, Protocolo, estão vazios) Se eu fechar a tela depois do erro, e abrir novamente e dar consulta, retorna o status e protocolo, correto. Se tivesse uma função, por exemplo: "Refresh" no componente, ou algo assim para liberar da instância de memória os atributos que carregou a dll com violação de memória, Daria para usar o consultar para pegar o retorno. -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Qual a alternativa que vcs propõe, já por conta desse Bug, pois no meu projeto, limpei td do ACBr na máquina, dll, e recompilei e nada. Continua dando esse problema de retorno vazio na NFCe, que internamente é um action violation ntdll.dll? -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Qual era a dll anterior que estava sendo usada? Pois pelo visto esta dll libxml2.dll tá dando problema com capicom.dll pois o sistema nosso não funciona nem a pau com WinCrypt, e olha que já testamos em várias maquinas de clientes foram mais de 10, e não funciona. Até assinamos na época o ACBrPro e não foi de ajuda. Poderiam ter deixado como configuração para retrocompatibilidade, porque agora ferrou de vez. Tem mais de 400 notas pendentes de clientes... -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Pude constatar através dos logs que houve alterações nessas funções de leitura do xml... Para mim é essa classe TACBrXmlDocument que está com algum problema TACBrXmlDocument ? -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
No meu limpei todas dll e com WinCrypt não funciona nada, Mas esses erros estão correndo na leitura do retorno do xml. Para mim descubrir o "Action Violation" tive que entrar no código fonte do ACBr na unit " ACBrNFe.RetConsSit", onde adicionei o exception e salvei num logo para descobrir o erro, senão tava procurando vento. function TRetConsSitNFe.LerXml: Boolean; var Document: TACBrXmlDocument; ANode, ANodeAux: TACBrXmlNode; ANodeArray: TACBrXmlNodeArray; ok: Boolean; i: Integer; Item : TRetEventoNFeCollectionItem; begin Document := TACBrXmlDocument.Create; try try Result := False; if XmlRetorno = '' then Exit; Document.LoadFromXml(XmlRetorno); ANode := Document.Root; if ANode <> nil then begin versao := ObterConteudoTag(ANode.Attributes.Items['versao']); verAplic := ObterConteudoTag(ANode.Childrens.FindAnyNs('verAplic'), tcStr); tpAmb := StrToTpAmb(ok, ObterConteudoTag(ANode.Childrens.FindAnyNs('tpAmb'), tcStr)); cUF := ObterConteudoTag(ANode.Childrens.FindAnyNs('cUF'), tcInt); nRec := ObterConteudoTag(ANode.Childrens.FindAnyNs('nRec'), tcStr); cStat := ObterConteudoTag(ANode.Childrens.FindAnyNs('cStat'), tcInt); xMotivo := ObterConteudoTag(ANode.Childrens.FindAnyNs('xMotivo'), tcStr); dhRecbto := ObterConteudoTag(ANode.Childrens.FindAnyNs('dhRecbto'), tcDatHor); chNFe := ObterConteudoTag(ANode.Childrens.FindAnyNs('chNFe'), tcStr); case cStat of 100, 101, 104, 110, 150, 151, 155, 301, 302, 303: begin ANodeAux := ANode.Childrens.FindAnyNs('protNFe'); if ANodeAux <> nil then begin // A propriedade XMLprotNFe contem o XML que traz o resultado do // processamento da NF-e. XMLprotNFe := ANodeAux.OuterXml; ANodeAux := ANodeAux.Childrens.FindAnyNs('infProt'); if ANodeAux <> nil then begin protNFe.tpAmb := StrToTipoAmbiente(ok, ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('tpAmb'), tcStr)); protNFe.verAplic := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('verAplic'), tcStr); protNFe.chDFe := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('chNFe'), tcStr); protNFe.dhRecbto := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('dhRecbto'), tcDatHor); protNFe.nProt := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('nProt'), tcStr); protNFe.digVal := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('digVal'), tcStr); protNFe.cStat := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('cStat'), tcInt); protNFe.xMotivo := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('xMotivo'), tcStr); protNFe.cMsg := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('cMsg'), tcInt); protNFe.xMsg := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('xMsg'), tcStr); end; end; end; end; retCancNFe.cStat := 0; if cStat in [101, 151, 155] then begin ANodeAux := ANode.Childrens.FindAnyNs('infCanc'); if ANodeAux <> nil then begin retCancNFe.tpAmb := StrToTpAmb(ok, ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('tpAmb'), tcStr)); retCancNFe.verAplic := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('verAplic'), tcStr); retCancNFe.cStat := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('cStat'), tcInt); retCancNFe.xMotivo := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('xMotivo'), tcStr); retCancNFe.cUF := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('cUF'), tcInt); retCancNFe.chNFe := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('chNFe'), tcStr); retCancNFe.dhRecbto := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('dhRecbto'), tcDatHor); retCancNFe.nProt := ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('nProt'), tcStr); end; end; if Assigned(procEventoNFe) then procEventoNFe.Free; procEventoNFe := TRetEventoNFeCollection.Create; try ANodeArray := ANode.Childrens.FindAllAnyNs('procEventoNFe'); if Assigned(ANodeArray) then begin for i := Low(ANodeArray) to High(ANodeArray) do begin AnodeAux := ANodeArray[i]; Item := procEventoNFe.New; Item.RetEventoNFe.XmlRetorno := AnodeAux.OuterXml; Item.RetEventoNFe.XML := AnodeAux.OuterXml; Item.RetEventoNFe.LerXml; end; end; finally Result := True; end; end; // Result := True; except on E: Exception do begin {$IFDEF TESTAR} LogSalvar('"TRetConsSitNFe.LerXml" : Exception: ' + E.Message); {$ENDIF} Result := False; end; end; finally FreeAndNil(Document); end; end; Adicionei esse código... {$IFDEF TESTAR} LogSalvar('"TRetConsSitNFe.LerXml" : Exception: ' + E.Message); {$ENDIF} -
Exceção ao Enviar NFCe
Artsio replied to Artsio's tópico in NFC-e - Nota Fiscal do Consumidor Eletrônica
Já usei exemplo de TD a forma possível, e o problema está nessa função LerXml que é uma função interna do ACBr. Seja como for seria bom vcs darem uma revisão nessa função... Atualizei umas 10 vezes, desde esse problema e nada... Fiz atualização dll, schemas, td que é possível e nada
