Jump to content

Victor Sousa

Membros
  • Posts

    6
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Victor Sousa's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputation

  1. Boa tarde, atualizei o ACBr e notei que a função de Ler do arquivo TXT não está atualizada. Alguém sabe se tem alguém já fazendo essa alteração? Se eu não me engano nem quando saiu o campo nFCI foi atualizado.
  2. Esse problema voltou a acontecer no final do ano passado, somente no webservice do paraná, e eu só consegui resolver seguindo esse tópico: http://testewordpress.net63.net/?p=842
  3. Boa tarde, gostaria de saber o motivo de esta alteração ainda não ter sido atualizada no SVN. O sistema de recebimento que desenvolvi utilizando o ACBr já funciona há mais de 1 ano e seu comportamento é idêntico ao Visualizador de documentos da SEFAZ. MarkApollo, eu uso os componentes Capicom para validar assinatura e nunca tive problema com relação a haver quebras de linha tanto no campo SignatureValue quanto no campo X509Certificate. Posso garantir que o bug não está nas dlls do capicom. A função de ValidarAssinatura normalmente não é utilizada no desenvolvimento dos softwares de Emissão, então suponho que esta alteração não influenciará no funcionamento dos softwares já implementados com o ACBr. Esse sítio me ajudou muito a entender como funciona a assinatura digital em arquivos xml: http://www.di-mgt.com.au/xmldsig2.html O arquivo que o Eliomar anexou está modificado exatamente do jeito que eu descrevi.
  4. Olá de novo, eu não sei se vocês tiveram o mesmo problema, mas as assinaturas de algumas notas que apresentavam acentos não estavam sendo validadas corretamente. Para resolver essa questão, em relação à última postagem fiz a seguinte alteração em azul: 2. A function LoadFromFile da Unit ACBrNFeNotasFiscais ficou assim: function TNotasFiscais.LoadFromFile(CaminhoArquivo: string): boolean; var LocNFeR : TNFeR; ArquivoXML: TStringList; XML : AnsiString; XMLInalterado : AnsiString; begin try ArquivoXML := TStringList.Create; ArquivoXML.LoadFromFile(CaminhoArquivo, TEncoding.UTF8); XMLInalterado := ArquivoXML.Text; Result := True; while pos('',ArquivoXML.Text) > 0 do begin if pos('',ArquivoXML.Text) > 0 then begin XML := copy(ArquivoXML.Text,1,pos('',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('',ArquivoXML.Text)+10,length(ArquivoXML.Text))); end else begin XML := copy(ArquivoXML.Text,1,pos('',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('',ArquivoXML.Text)+6,length(ArquivoXML.Text))); end; LocNFeR := TNFeR.Create(Self.Add.NFe); try LocNFeR.Leitor.Arquivo := XML; LocNFeR.LerXml; Items[self.Count-1].XML := LocNFeR.Leitor.Arquivo; Items[self.Count-1].XMLInalterado := XMLInalterado; Items[self.Count-1].NomeArq := CaminhoArquivo; GerarNFe; finally LocNFeR.Free; end; end; ArquivoXML.Free; except raise; Result := False; end; end; Grato
  5. Olá, descobri qual o problema da validação de assinatura. O problema é que no parâmetro da função ValidaAssinatura (NotaUtil.ValidaAssinatura) estava sendo passado a property XML da classe NotaFiscal, e o read dessa property (a function GetNFeXML) gera um novo XML a partir das properties da classe NFe. E ao gerar o XML pela function GetNFeXML algumas propriedades são alteradas: 1. Os atributos versao e ID da tag InfNFe são invertidos de ordem; 2. As tags que possuem casas decimais variáveis (por exemplo, 0-10) estão sendo fixadas com o tamanho máximo; 3. Alguns caracteres de quebra de linha estão sendo removidos. Para corrigir o problema, passei como parâmetro da função NotaUtil.ValidaAssinatura o ArquiloXML lido do arquivo e não alterado. As alterações foram: 1. Criei a property XMLInalterado na classe NotaFiscal da Unit ACBrNFeNotasFiscais: NotaFiscal = class(TCollectionItem) private FNFe: TNFe; FXML: AnsiString; FXMLInalterado: AnsiString; . . property XML: AnsiString read GetNFeXML write FXML; property XMLInalterado: AnsiString read FXMLInalterado write FXMLInalterado; 2. A function LoadFromFile da Unit ACBrNFeNotasFiscais ficou assim: function TNotasFiscais.LoadFromFile(CaminhoArquivo: string): boolean; var LocNFeR : TNFeR; ArquivoXML: TStringList; XML : AnsiString; XMLInalterado : AnsiString; begin try ArquivoXML := TStringList.Create; ArquivoXML.LoadFromFile(CaminhoArquivo); XMLInalterado := ArquivoXML.Text; Result := True; while pos('',ArquivoXML.Text) > 0 do begin if pos('',ArquivoXML.Text) > 0 then begin XML := copy(ArquivoXML.Text,1,pos('',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('',ArquivoXML.Text)+10,length(ArquivoXML.Text))); end else begin XML := copy(ArquivoXML.Text,1,pos('',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('',ArquivoXML.Text)+6,length(ArquivoXML.Text))); end; LocNFeR := TNFeR.Create(Self.Add.NFe); try LocNFeR.Leitor.Arquivo := XML; LocNFeR.LerXml; Items[self.Count-1].XML := LocNFeR.Leitor.Arquivo; Items[self.Count-1].XMLInalterado := XMLInalterado; Items[self.Count-1].NomeArq := CaminhoArquivo; GerarNFe; finally LocNFeR.Free; end; end; ArquivoXML.Free; except raise; Result := False; end; end; 3. A function ValidaAssinatura da Unit ACBrNFeNotasFiscais ficou assim: function TNotasFiscais.ValidaAssinatura(out Msg : String) : Boolean; var i: Integer; FMsg : AnsiString; begin for i:= 0 to Self.Count-1 do begin if not(NotaUtil.ValidaAssinatura(('')+ ''), FMsg)) then begin Result := False; Msg := 'Falha na validação da assinatura da nota '+ IntToStr(Self.Items.NFe.Ide.nNF)+sLineBreak+FMsg end else Result := True; end; end; Se eu cometi algum equívoco por favor me avisem.
  6. Olá, estou com o mesmo problema que o markapollo. Anfm, você poderia dar uma estimativa de quando solucionará este problema? E se for demorar muito, devido à falta de tempo ou por ser uma modificação muito trabalhosa, você poderia dar uma dica de como resolvermos este problema? Grato
×
×
  • 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.