Ir para conteúdo
  • Cadastre-se

dev botao

Alteração Nfse Catanduvas-Sc Provedor Pronim


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

Recommended Posts

Boa tarde,

 

Logo depois da alteração da revisão 7877 onde foi posto um "or" na condição "if self.Configuracoes.Certificados.AssinaRPS or AssinaRPS"

da unit ACBrNFSeNotasFiscais não consegui mais validar NFSe para a cidade de catanduvas.

Para enviar o rps para a cidade de catanduvas - sc não deve ser assinado o RPS, para contornar esse problema tive que criar um parametro na função  ACBrNFSe.Enviar.

 

 

segue no anexo as units alteradas para validar NFSe para a cidade de Catanduvas - SC Provedor Pronim

 

 

ACBrNFSe.pas

ACBrProvedorPronim.pas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Julio,

 

Da forma que você fez criando mais uma propriedade no método, obriga o desenvolvedor a saber qual é o valor que tem que ser passado dependendo do provedor.

 

No meu entendimento se deve ou não realizar a assinatura, isso tem que ser parametrizado na Unit de cada provedor, ficando desta forma transparente para o desenvolvedor.

 

Você sabe que para o provedor XYZ deve-se passar o valor False para a propriedade ABC e outro que esta começando agora não vai saber e consequentemente não vai funcionar uma vez que o método assume o valor True na falta do mesmo.

 

Até alguém lembrar que tem que passar o valor diferente dependendo do provedor, já se passou um bom tempo.

 

Pensando desta forma fiz algumas alterações e criei uma propriedade interna chamada AssinaGerar.

 

Agora temos o AssinaRPS, AssinaLote e AssinaGerar.

 

Alguns provedores possuem o método Gerar alem do Enviar, qual a diferença?

 

O Enviar permite que seja enviado um lote contendo de 1 até 50 RPS assinados um a um ou não.

 

O Gerar permite que seja enviado um único RPS assinado ou não.

 

O problema que alguns provedores ao enviar o lote os RPS não devem ser assinados, somente o lote, mas por outro lado ao enviar através do método Gerar o RPS tem que ser assinado.

  • Curtir 1
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo,

 

Baixei os fontes alterados, porém ainda estou com o problema de Assinatura do hash não confere.

 

Quando é assinado um lote para a cidade de Catanduvas - SC o atributo ConfigCidade.Identificador = ''id'' deve estar minusculo, pois ao chegar na função

AssinarLoteRps o valor de    Self.Items[0].XML_LoteRps  é  diferente do valor de Self.Items[0].XML_LoteRps_Ass, pois um esta o identificador "Id" e outro com "id", Percebi 

que depois que foi alterado a propriedade   ConfigCidade.Identificador := 'Id'; // Alterado para poder Assinar no Schema é id, é que surgiu este problema.

 

Estou enviado a unit para com a alteração abaixo

 

   4204004: begin
      ConfigCidade.AssinaLote := True; // Catanduvas/SC
      ConfigCidade.Identificador := 'id';
   end;
 

Estou começando agora a utilizar os recurso dos componentes ACBr, se você tiver uma idéia melhor será bem vinda.

 

Obrigado pela atenção.

 

ACBrProvedorPronim.pas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Julio,

 

Se o identificador for "id" com o i minusculo ao tentar assinar o lote usando o Capicom, a assinatura não será realizada gerando uma exceção.

 

Para manter o identificador todo em minusculo a assinatura não pode ser realizada.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa tarde, Ítalo!

 

Não consegui entender a sua Mensagem no commit Revision: 8082 no dia 09/01/2015 e acredito que estou enviando de alguma forma incorreta os lotes, sendo que fiquei hoje a tarde comparando os fontes alterados para tentar encontrar alguma diferença na cidade de catanduvas - SC e a principio não encontrei.

 

E estou com a seguinte rejeição, posteriormente update realizado neste mês:

<Mensagem>Assinatura do Hash nao confere</Mensagem><Correcao>Reenvie asssinatura do Hash conforme algoritmo estabelecido no Manual de Instrucao da NFS-e</Correcao>

 

Faço o envio da seguinte forma:

ACBrNFSe.Enviar(NR_LOTE, False);

 

Saberia me orientar para correção do problema?

 

Fico no aguardo de um auxílio!

Editado por MauricioGuedes
Link para o comentário
Compartilhar em outros sites

Boa tarde, Ítalo!

 

Não consegui entender a sua Mensagem no commit Revision: 8082 no dia 09/01/2015 e acredito que estou enviando de alguma forma incorreta os lotes, sendo que fiquei hoje a tarde comparando os fontes alterados para tentar encontrar alguma diferença na cidade de catanduvas - SC e a principio não encontrei.

 

E estou com a seguinte rejeição, posteriormente update realizado neste mês:

<Mensagem>Assinatura do Hash nao confere</Mensagem><Correcao>Reenvie asssinatura do Hash conforme algoritmo estabelecido no Manual de Instrucao da NFS-e</Correcao>

 

Faço o envio da seguinte forma:

ACBrNFSe.Enviar(NR_LOTE, False);

 

Saberia me orientar para correção do problema?

 

Fico no aguardo de um auxílio!

 

Como posso resolver o problema de Assinatura do hash não confere? tem algum sugestão?

 

Alguma Resposta para a duvida do MauricioGuedes ou  do julio_cld? 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde a todos,

 

Quando ocorre a rejeição: assinatura não confere, significa que o XML foi alterado após ter sido assinado.

 

Alguns provedores resolveram colocar o identificador todo em minusculo, ou seja, "id" onde a grande maioria usa "Id" (a letra i em maiúsculo).

 

Se deixar tudo em minusculo ocorre erro ao tentar assinar, se colocar o i em maiúsculo a assinatura ocorre mas depois o lote não é validado pois o schema não reconhece o atributo.

 

O que fazer então?

 

Não assinar? Se não assinar o Web Services rejeita acusando a falta da assinatura.

Se assinar com o identificador alterado e depois alterar para "id" pode ocorrer rejeição: assinatura não confere.

 

Criar uma DLL em C que seja capaz de assinar sem alterar o identificador?

  • Curtir 1
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde!

no provedor proNIM

no atributo

ConfigCidade.Identificador := 'id'; // Alterado para poder Assinar no Schema é id

estava maísculo o "Id", modifiquei o mesmo para minúsculo e funcionou, emitiu a nota fiscal,

como devo proceder?

 

pelo que entendi, você acha que para outras cidades, vai dar problema?

Editado por MauricioGuedes
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Boa tarde!

no provedor proNIM

no atributo

ConfigCidade.Identificador := 'id'; // Alterado para poder Assinar no Schema é id

estava maísculo o "Id", modifiquei o mesmo para minúsculo e funcionou, emitiu a nota fiscal,

como devo proceder?

 

pelo que entendi, você acha que para outras cidades, vai dar problema?

Com a alteração que o MauricioGuedes indicou a fazer consegui emitir uma NFSe normalmente em Catanduvas, será que podemos deixar assim?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

como vcs estão fazendo para enviar a nota?

 

estou tentando pela primeira vez e nao está dando certo, aparece a mensagem  "Erro Desconhecido ao Enviar o Lote"

 

ACBrNFSe1.Enviar('1', False);
ACBrNFSe1.NotasFiscais.Items[0].SaveToFile('C:\TESTE.XML');
ACBrNFSe1.Configuracoes.Arquivos.NomeLongoNFSe := True;
ACBrNFSe1.NotasFiscais.Imprimir;
ACBrNFSe1.NotasFiscais.ImprimirPDF;
Link para o comentário
Compartilhar em outros sites

Barrys, consegui solucionar o problema de Catanduvas - SC, tirando do Case do métodoGetConfigCidade na Classe TProvedorPronim para assinar o Lote, verifique se sua cidade esta para assinar o lote, pois caso teja, você deverá inserir no case, pois não conseguir encontrar a mesma lá.

Fazendo esta alteração, realize os testes necessário, segue abaixo como faço o envio de uma nota fiscal de serviços:

 

 try
    pCarregarNFSe(idNfContabil, ISS_RETIDO);
    ACBrNFSe.Enviar(NR_LOTE, False);
  except
    on Excessao: Exception do
    begin
      FNr_lote          := NR_LOTE;
      FNr_recibo        := '';
      FNr_protocolo     := ACBrNFSe.NotasFiscais.Items[0].NFSe.Protocolo;
      FHr_Processamento := ACBrNFSe.NotasFiscais.Items[0].NFSe.dhRecebimento;
      FChave            := '';
      FNr_nota          := ACBrNFSe.NotasFiscais.Items[0].NFSe.Numero;
      FPathXml          := ACBrNFSe.Configuracoes.Geral.PathSalvar;
      FCaminhoXml       := ACBrNFSe.Configuracoes.Geral.PathSalvar+'\Ger\'+IntToStr(NR_LOTE)+'-env-lot.xml';
      FStatus           := IIF(ACBrNFSe.NotasFiscais.Items[0].NFSe.Situacao='3',85,86);
      Messagedlg('Ocorreu o seguinte erro ao gerar nota de serviço: ' + Excessao.Message + ' Consulte a nota no formulário de manutenção!', mtError, [mbOk], -1);
      Exit;
    end;
  end;

 

 

 

OBS: Faço desta forma, pois eu faço algumas validações depois e salvo o arquivo xml manualmente, mas o componente Acbr configurado corretamente, faz a gravação do arquivo para você.

Editado por MauricioGuedes
Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...