Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2072 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde.

Estou com alguma dificuldade para gerar o campo infRespTec.hashCSRT.

Meu grupo infresptec está saindo com erro no hashCSRT.

ACBRNfe1.Configuracoes.RespTec.CSRT = G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO

Chave = 33190310894867000191552070000001771000001779

CSRT_ValorInicial :=
       ACBRNfe1.Configuracoes.RespTec.CSRT + Chave;

hashCSRT_RespTec := getHashSHA1(CSRT_ValorInicial);

hashCSRT_RespTec = 4eRY3At/QvYyBzHW7/ouqjwJw9E=

ACBrNFe1.NotasFiscais.Add.NFe.infRespTec.hashCSRT := hashCSRT_RespTec;
 

Após enviar para Sefaz

image.png.d3fe9cb2a0d91e704cb96e50448cec66.png

Alguma sugestão?

Agradeço.

 

Eduardo Sena

 

Postado

Boa tarde, havia feito a postagem abaixo em outro tópico relacionado porém o tópico foi fechado e não obtive retorno, é o mesma situação que a postagem acima:

Estive analisando os tópicos e pelo que pude compreender para destacar os dados de CSRT bastaria preencher as configurações ACBRNFe.configuracoes.RespTec.IdCSRT e ACBRNFe.configuracoes.CSRT que seria gerado o HASH automaticamente pelo componente, porém quando preencho esses valores está me retornando o seguinte HASH:

<hashCSRT>- A {W t 5ubOaewa:</hashCSRT>

Onde não passa na validação conforme a resposta acima.

 

OBS: Utilizei o mesmo CSRT da NT para teste: G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO 

         Não utilizei o mesmo idCSRT pois no componente este o campo idCSRT é um inteiro, quando forneço o valor de 01 por ser um inteiro é convertido em 1. No meu ver também é um problema.

Postado
13 horas atrás, Daniel Simoes disse:

Onde você obteve um IdCSRT  ?

@Italo Jurisato Junior, parece que a rotina que computou o Hash, não transformou o resultado para Base64

Bom dia,

Utilizei um ID aleatório para testes.

Tentei utilizar o ID da NT 2018.005 que seri 01, porém como o campo no componente é um inteiro não está funcionado, pois é retirado o 0 da frente, ficando apenas 1.

  • Administradores
Postado

Bom dia.

Os dados referentes ao IDSCRT foram postergados indefinidamente conforme NT 2018.005 v.120... Tente informar este grupo conforme  o tópico a seguir

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
14 horas atrás, Daniel Simoes disse:

Onde você obteve um IdCSRT  ?

@Italo Jurisato Junior, parece que a rotina que computou o Hash, não transformou o resultado para Base64

A minha rotina getHashSHA1 calcula o HASH, gerando um string Hexa (40 caracteres) e eu uso outra rotina para transformar em um string de 20 caracteres (HexToAscii), depois submeto esse resultado ao EncodeBase64, que gera um string de 28 caracteres, que foi informado aí. O que ocorre é que eu atribuo para o campo "infRespTec.hashCSRT" o valor, mas quando a nota é transmitida, o valor que aparece é o que printei, e não o que informei.

 

14 horas atrás, Daniel Simoes disse:

Onde você obteve um IdCSRT  ?

@Italo Jurisato Junior, parece que a rotina que computou o Hash, não transformou o resultado para Base64

 

Postado
16 horas atrás, João Paulo Müller disse:

Boa tarde, havia feito a postagem abaixo em outro tópico relacionado porém o tópico foi fechado e não obtive retorno, é o mesma situação que a postagem acima:

Estive analisando os tópicos e pelo que pude compreender para destacar os dados de CSRT bastaria preencher as configurações ACBRNFe.configuracoes.RespTec.IdCSRT e ACBRNFe.configuracoes.CSRT que seria gerado o HASH automaticamente pelo componente, porém quando preencho esses valores está me retornando o seguinte HASH:

<hashCSRT>- A {W t 5ubOaewa:</hashCSRT>

Onde não passa na validação conforme a resposta acima.

 

OBS: Utilizei o mesmo CSRT da NT para teste: G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO 

         Não utilizei o mesmo idCSRT pois no componente este o campo idCSRT é um inteiro, quando forneço o valor de 01 por ser um inteiro é convertido em 1. No meu ver também é um problema.

"Para quem esta com os fontes atualizados e reinstalados, ao selecionar o componente ACBrNFe ou ACBrCTe ou ACBrMDFe vai notar no Object Inspector em Configurações o grupo RespTec e dentro deste as propriedades idCSRT e CSRT.

O grupo <infRespTec> contem as seguintes informações: CNPJ, Nome, e-mail, telefone, idCSRT e HashCSRT do Responsável Técnico.

Sendo que as duas ultimas são geradas automaticamente se as propriedades idCSRT e CSRT forem informadas."

Li isso agora. Será que está aí o problema? Eu estou calculando  o HASH e não aguardando a geração automática deste. Também usei o CSRT exemplo da NT.

Postado

Bom dia, acredito que o ideal seria deixar o proprio componente calcular, apenas parametrizando os campos idCSRT e CSRT nas configurações.

Porém, conforme havia comentado acima, está com problema nessa rotina, o HASH não está correto. Pode ser que seja apenas o encode para base64 conforme relatou o Daniel.

Postado

Entendi! Mas se o próprio componente vai calcular, não precisamos mandar concatenar o CSRT com a Chave, nem fazer SHA1 nem Encode... Eu fiz um teste passando o idCSRT (1) e o CSRT (G8063VRTNDMO886SFNK5LDUDEI24XJ22YIPO) sem calcular e atribuir para o campo hashCSRT e continuou rejeitando...

  • Consultores
Postado

Bom dia a todos,

Favor anexar um XML gerado com os campos idCSRT e hashCSRT.

Outra coisa, devemos configurar o componente alimentando as propriedades: idCSRT e CSRT.

Os campos que são gerados no XML são calculados automaticamente, uma vez que o hashCSRT se utiliza da chave do documento que esta sendo gerado mais o CSRT.

Já existe alguma SEFAZ fornecendo o idCSRT e CSRT para os desenvolvedores?

Que eu saiba ainda não.

Outra coisa importante, ocorreu uma atualização dos Schemas na NF-e onde foi corrigido o tamanho do hashCSRT.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Olá pessoal, 

Realizei a alteração sugerida pelo Daniel e a principio funcionou corretamente, ao menos passou na validação.

Em 21/03/2019 at 18:47, Daniel Simoes disse:

Onde você obteve um IdCSRT  ?

@Italo Jurisato Junior, parece que a rotina que computou o Hash, não transformou o resultado para Base64

 

Original

Unit ACBrDFeUtil, linha 471: 

function CalcularHashCSRT(const ACSRT, AChave: String): string;
begin
  Result := SHA1(ACSRT + AChave);
end;

 

Alteração

function CalcularHashCSRT(const ACSRT, AChave: String): string;
begin
  Result := EncodeBase64(SHA1(ACSRT + AChave));
end;

 

Grupo RespTec XML:

<infRespTec>
  <CNPJ>XXXXXXXX</CNPJ> 
  <xContato>XXXXXXX</xContato> 
  <email>XXXXXX</email> 
  <fone>XXXXXXXXX</fone> 
  <idCSRT>01</idCSRT> 
  <hashCSRT>BZwkyscVlyYgWGWsGL1zmlF3Nxg=</hashCSRT> 
</infRespTec>

 

Postado

Caso queiram fechar esse tópico, fiquem à vontade! Lembrando que o valor do hashCSRT foi atribuído ao campo.

infRespTec.hashCSRT := CalcularHashCSRT(ACSRT, AChave);

Obrigado a todos que responderam e contribuíram com idéias e/ou sugestões.

  • Curtir 2
  • Este tópico foi criado há 2072 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.