Ir para conteúdo
  • Cadastre-se

Victor Sousa

Membros
  • Total de ítens

    6
  • Registro em

  • Última visita

Tudo que Victor Sousa postou

  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
×
×
  • 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...
The popup will be closed in 10 segundos...