Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 2157 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á 2157 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...