Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado
1 hora atrás, João Paulo Müller disse:

Aproveitando aqui o assunto de mais de um serviço por nota.

Tenho implementado para enviar sempre um serviço por nota, se na construção da nota o usuário por mais de um item, percorro os itens e faço a geração de uma NFSe para cada item.

Sabem me dizer se teria algum problema? Pois no padrão ABRASF é suportado apenas um item por nota certo? Acho que essa implementação de vários itens na Descrição fica meio estranho...

No manual de integração tem um parte que explica como faz para enviar mais de um item por nota, fica assim:

<Servico>
<Valores>...</Valores>
<ItemListaServico></ItemListaServico>
<Discriminacao>{[[Descricao=Descrição do item 1][itemServico=102][aliquota=0.03][Quantidade=2]
[ValorUnitario=2000][Deducoes=0][DescontoCondicionado=0][DescontoIncondicionado=0]]
[[Descricao=Descrição do item 2][itemServico=901][aliquota=0.04][Quantidade=1.6580][ValorUnitario=150.9880]
[Deducoes=5.32][DescontoCondicionado=8.2][DescontoIncondicionado=2.99]]}</Discriminacao>
<InformacoesComplementares></InformacoesComplementares>
<CodigoMunicipio></CodigoMunicipio>
<CodigoPais></CodigoPais>
</Servico>

e se eu envio assim e vou no site da publica conferir, fica certo, os itens aparecem formatados um embaixo do outro, então acho que é apenas o relatório que não está tratando isso.

Postado
1 minuto atrás, Italo Jurisato Junior disse:

or fazerem testes

 

10 minutos atrás, João Paulo Müller disse:

No arquivo Publica.ini

Pelo que pude perceber a unica alteração (tirando as duplicidades) do arquivo editado para o arquivo do repositório foi a configuração de assinatura:

Repositório


[Assinar]
RPS=1
Lote=0
URI=1

Editado


[Assinar]
RPS=0
Lote=1
URI=0

Realizando apenas  essa alterações no arquivo original (Repositório) já é possível transmitir as notas.

Não sei se essas alterações está corretas ou poderão impactar em outros municípios.

Apenas analisei os arquivos do repositório (que não está funcionado para Chapecó) com o arquivo publicado aqui no tópico (que está funcionando)

Lembrando que tive que voltar a Revison sem as ultimas alterações realizadas para funcionar

Exato, esqueci essa parte da assinatura.

Postado
26 minutos atrás, Cesar Balbinott disse:

No manual de integração tem um parte que explica como faz para enviar mais de um item por nota, fica assim:


<Servico>
<Valores>...</Valores>
<ItemListaServico></ItemListaServico>
<Discriminacao>{[[Descricao=Descrição do item 1][itemServico=102][aliquota=0.03][Quantidade=2]
[ValorUnitario=2000][Deducoes=0][DescontoCondicionado=0][DescontoIncondicionado=0]]
[[Descricao=Descrição do item 2][itemServico=901][aliquota=0.04][Quantidade=1.6580][ValorUnitario=150.9880]
[Deducoes=5.32][DescontoCondicionado=8.2][DescontoIncondicionado=2.99]]}</Discriminacao>
<InformacoesComplementares></InformacoesComplementares>
<CodigoMunicipio></CodigoMunicipio>
<CodigoPais></CodigoPais>
</Servico>

e se eu envio assim e vou no site da publica conferir, fica certo, os itens aparecem formatados um embaixo do outro, então acho que é apenas o relatório que não está tratando isso.

Certo Cesar, compreendi.

Aqui vou manter um item por NFSe, pois caso contrario terei que alterar toda e estrutura do módulo.

Como tenho um módulo e estou integrando diversos provedores no mesmo módulo, pode ser que encontro provedores que não suportam mais de um item por nota, ai terei problemas...

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

Bom dia Everson,

Você está conseguindo transmitir com o ACBR na ultima revision e os arquivos do repositório?

Não ocorreu o erro que citei anteriormente quando atualizou para a ultima revision?

 

Bom dia, vou voltar a testar agora, mas com a ultima revisão acabei tendo problemas, resultava na seguinte mensagem: Falha ao Assinar - Consultar Situação do Lote: Erro: Falha ao interpretar o XML "xmlParseDoc"

Coincidentemente em sequencia veio o erro: Arquivo enviado fora da estrutura do arquivo XML de entrada. Envie um arquivo dentro do schema do arquivo XML de entrada o qual acabou atrapalhando meus testes, retrocedi a versão anterior, o erro acima parou, mas este continuou, até que do nada voltou a funcionar, e em seguida veio a explicação do @Cesar Balbinott do porque acontecia.

Postado

@everson.turossi eu espero que não aconteça isso em produção também, já pensou o cliente receber uma mensagem assim Arquivo enviado fora da estrutura do arquivo XML de entrada. Envie um arquivo dentro do schema do arquivo XML de entrada.

Alguém já emitiu alguma no ambiente de produção? Ou será que ainda não foi liberado?

  • Administradores
Postado

Bom dia.

30 minutos atrás, Eduardo Muller disse:

Cancelamento da NFS-e alguém está conseguindo fazer?

Por favor, não misture os assuntos..

Crie um novo tópico  e informe oque está ocorrendo quando você tenta realizar o cancelamento.

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 (editado)
3 horas atrás, Cesar Balbinott disse:

@everson.turossi eu espero que não aconteça isso em produção também, já pensou o cliente receber uma mensagem assim Arquivo enviado fora da estrutura do arquivo XML de entrada. Envie um arquivo dentro do schema do arquivo XML de entrada.

Alguém já emitiu alguma no ambiente de produção? Ou será que ainda não foi liberado?

Conforme resposta da Publica a previsão é para amanha.

Citar

Quem está responsável pela migração é outra equipe aqui da empresa, e a informação que tenho é que amanhã será disponibilizado o sistema em produção

Pessoal, estou com a base de outro cliente aqui agora, do município de Mafra, para verificar se também esta ocorrendo o erro de cancelamento, pois já observei em outro tópico que há problemas com o cancelamento em outro município no qual o provedor é Publica.

 

Quero ver essa questão do cancelamento para tentar rodar em produção amanha

Editado por João Paulo Müller
  • Curtir 1
Postado
6 minutos atrás, Italo Jurisato Junior disse:

Bom dia a todos,

Seria interessante obter do provedor um XML de pedido de cancelamento para comparar com o que é gerado pelo componente, assim vamos saber o que esta a mais ou a menos e tentar corrigir.

Bom dia Italo,

Segue em anexo o XML de exemplo da publica (Exemplo_Cancelar.xml) e o XML gerado pelo componente (Cancelamento_Atual).xml

EXEMPLO_Cancelar.xml

Cancelamento_atual.xml

  • Consultores
Postado

Bom dia João,

Chegou a comparar os dois?

Note que o XML gerado pelo componente o atributo ID esta vazio, já o do exemplo contem um valor que no caso é a palavra "assinar".

Outra diferença é que no XML gerado pelo componente tem a tag <MotivoCancelamento> que não existe no XML de exemplo.

Terceiro é o prefixo "ds:" que aparece em todos os elementos da assinatura, prefixo este não gerado pelo componente, alias nunca vi colocar prefixo na assinatura.

Logo é preciso fazer uma alteração no componente para que seja gerado um ID para o cancelamento e não seja gerado a tag <MotivoCancelamento> para o provedor em questão.

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
26 minutos atrás, Italo Jurisato Junior disse:

Bom dia João,

Chegou a comparar os dois?

Note que o XML gerado pelo componente o atributo ID esta vazio, já o do exemplo contem um valor que no caso é a palavra "assinar".

Outra diferença é que no XML gerado pelo componente tem a tag <MotivoCancelamento> que não existe no XML de exemplo.

Terceiro é o prefixo "ds:" que aparece em todos os elementos da assinatura, prefixo este não gerado pelo componente, alias nunca vi colocar prefixo na assinatura.

Logo é preciso fazer uma alteração no componente para que seja gerado um ID para o cancelamento e não seja gerado a tag <MotivoCancelamento> para o provedor em questão.

Então, a questão da Tag <MotivoCancelamento> acredito não ter no exemplo pois é opcional.

Referente ao atributo ID vazio no cancelamento já havia reparado, porém não tenho muito conhecimento da estrutura do componente e não estava localizando onde fazer a alteração.

Vou analisar novamente para tentar implementar a alteração.

  • Consultores
Postado

João,

Unit ACBrNFSeWebSerices:

procedure TNFSeCancelarNfse.DefinirDadosMsg;
 

      proEquiplano,
      proISSCuritiba,
      proPronimv2,
//      proPublica,       <== Linha 4611 comentar essa linha
      proSP,
      proNotaBlu,
      proSMARAPD,
      proIPM: FURI := '';
 

Se os seus fontes estão atualizados é essa linha que você deve comentar

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

Não estou com os fontes atualizados devido aqueles problemas na ultima atualização.

Você havia subido umas alterações para uma correção na consulta da situação do lote, após essa alteração estava dando alguns problemas.

Afinal, é necessário essas alterações na situação do lote? Pois sem as alterações realizadas está funcionando a consulta de situação do lote.

 

4 minutos atrás, Italo Jurisato Junior disse:

João,

Unit ACBrNFSeWebSerices:

procedure TNFSeCancelarNfse.DefinirDadosMsg;
 

      proEquiplano,
      proISSCuritiba,
      proPronimv2,
//      proPublica,       <== Linha 4611 comentar essa linha
      proSP,
      proNotaBlu,
      proSMARAPD,
      proIPM: FURI := '';
 

Se os seus fontes estão atualizados é essa linha que você deve comentar

Vou localizar a linha e alterar.

  • Consultores
Postado

João, 

A alteração que fiz foi com base no Schema, agora se o provedor disponibiliza um Schema diferente do que foi implementado no webservice ai a coisa complica.

Para mim, demostra uma falta de profissionalismo desse provedor.

A linha que lhe pedi para comentar, note que é ela que faz com que o valor de URI fique em branco e é ele que é usado como valor do ID.

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
4 horas atrás, Italo Jurisato Junior disse:

João, 

A alteração que fiz foi com base no Schema, agora se o provedor disponibiliza um Schema diferente do que foi implementado no webservice ai a coisa complica.

Para mim, demostra uma falta de profissionalismo desse provedor.

A linha que lhe pedi para comentar, note que é ela que faz com que o valor de URI fique em branco e é ele que é usado como valor do ID.

Comentei a linha citada, é gerado o id da tag, porém da mesma forma obtenho o erro de Assinatura.

Segue XML em anexo.

Estou em contato com a Publica pra tentar cancelar uma nota com uma antiga versão que tenho compilado que funciona, para comprarmos os XML.

 

Postado
1 hora atrás, João Paulo Müller disse:

Comentei a linha citada, é gerado o id da tag, porém da mesma forma obtenho o erro de Assinatura.

Segue XML em anexo.

Estou em contato com a Publica pra tentar cancelar uma nota com uma antiga versão que tenho compilado que funciona, para comprarmos os XML.

 

Jão, ta funcionando, só usar os xmls de exemplo que eu enviei, ta normal na publica, é só a assinatura do ACBr que esta errada, precisa identificar a tag de assinatura e assinar a URI tbm, só isso!

  • Consultores
Postado

Boa tarde pessoal,

Como não tenho nenhum cliente que emite NFS-e e muito menos para a cidade de Chapecó/SC e nem tenho contato com o provedor e pelo que notei vocês sim, tem clientes e contato com o provedor, tenho certeza que vocês terão mais chances de fazer as devidas correções.

Encontrando por favor anexe as units alteradas para que possamos analisar o que foi feito, pois precisamos garantir que não vá ocorrer algum efeito colateral com os demais provedores.

  • Curtir 1
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 (editado)

Entrei em contato com o pessoal da Publica novamente, passando nosso arquivo com a assinatura incorreta e assinatura de exemplo deles, solicitei se seria possível nos indicar onde está o problemas, mas relataram que estão em processo de monitoramento da NFS-e que está em produção e não irão poder ajudar no momento.

Forneceram um XML Assinado para exemplo. Anexei o arquivo aqui, alguém saberia dizer o que compõem o ID do elemento  <InfPedidoCancelamento id="C201900000011630">? No meu ver parece ter relação com o número da Nota. Acredito que antes de assinar o arquivo deve ser preenchido esse ID com o valor correto.

Solicitei a Publica o conteúdo deste ID, mas até o momento não obtive retorno.

 

Como estão ai pessoal? Já estão rodando em produção sem o evento de cancelamento e com a antiga revision?

pedido_cancelamento_nfse_C001_03777341004587_201900000011630_2352981065943970236(1).xml

Editado por João Paulo Müller
Postado (editado)

Acho que esse id é o "C" de cancelamento mais o número da nota. O xml deles retorna um número grande para o número da nota, no meu banco esse campo é um inteiro, tive que remover o 2019 da frente para poder salvar.

Editado por Cesar Balbinott
Postado

Boa tarde Pessoal,

Estou me batendo aqui pra tentar assinar o XML, realizei algumas alterações, deixei o arquivo semelhante ao arquivo de exemplo, porém, recebo erro de Access Violation na Unit ACBrDFeXsMsXml, linha 204:

// Assinando com MSXML e CryptoLib //
      signedKey := xmldsig.sign(dsigKey, CERTIFICATES);

Realizei as seguinte alterações:

1) Definir id no elemento <InfPedidoCancelamento> (<InfPedidoCancelamento id="C201900000000005">)

Em 10/01/2019 at 09:47, Italo Jurisato Junior disse:

João,

Unit ACBrNFSeWebSerices:

procedure TNFSeCancelarNfse.DefinirDadosMsg;
 

      proEquiplano,
      proISSCuritiba,
      proPronimv2,
//      proPublica,       <== Linha 4611 comentar essa linha
      proSP,
      proNotaBlu,
      proSMARAPD,
      proIPM: FURI := '';
 

Se os seus fontes estão atualizados é essa linha que você deve comentar

Ao invés de comentar essa linha sugeria fiz a seguinte alteração:

proPublica: FURI := 'C'+FNumeroNFSe;

Ou seja, vamos deixar a URI conforme o exemplo 'C'+NumeroNFs.

2) Atribuir ID no <Reference> herdada da TAG <Signature> (<Reference URI="#C201900000000005">).

Na unit ACBrDFeUtil é construída a TAG:

 Result :=
  '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"' + IdSignature + '>' +
    '<SignedInfo>' +
      '<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
      '<SignatureMethod Algorithm="'+MethodAlgorithm+'" />' +
      '<Reference URI="' + IfThen(URI = '', '', '#' + URI) + '">' +
        '<Transforms>' +
          '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />' +
          '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
        '</Transforms>' +
        '<DigestMethod Algorithm="'+DigestAlgorithm+'" />' +
        '<DigestValue></DigestValue>' +
      '</Reference>' +
    '</SignedInfo>' +
    '<SignatureValue></SignatureValue>' +
    '<KeyInfo>' +
    IfThen(AddX509Data,
      '<X509Data>' +
        '<X509Certificate></X509Certificate>'+
      '</X509Data>',
      '')+
    '</KeyInfo>'+
  '</Signature>';

É utilizado o parâmetro URI para definir o ID. Esse parâmetro é definido na função ExtraiURI, unit ACBRDFeUtil:

function ExtraiURI(const AXML: String; IdAttr: String): String;
var
  I, J: integer;
begin
  Result := '';
  if IdAttr = '' then
    IdAttr := 'Id';

  I := PosEx(IdAttr+'=', AXML);
  if I = 0 then       // XML não tem URI
    Exit;

  I := PosEx('"', AXML, I + 2);
  if I = 0 then
    raise EACBrDFeException.Create('Não encontrei inicio do URI: aspas inicial');

  J := PosEx('"', AXML, I + 1);
  if J = 0 then
    raise EACBrDFeException.Create('Não encontrei inicio do URI: aspas final');

  Result := copy(AXML, I + 1, J - I - 1);
end;

A função busca no XML o atributo 'Id', pois atualmente o parâmetro IdAttr vem vazio, então é definido fixo o IdAttr := 'Id' (Note que está com o I MAIÚSCULO), já no elemento <InfPedidoCancelamento id="C201900000000005"> está minusculo, ou seja, não é encontrado o id, por isso não seta a TAG <Reference> com o ID necessário.

Para fazer os testes defini de forma fixa o 'id' (minusculo) na chamada da assinatura unit ACBrNFSeWebServices:

// O procedimento recebe como parametro o XML a ser assinado e retorna o
  // mesmo assinado da propriedade FPDadosMsg
  if (FPConfiguracoesNFSe.Geral.ConfigAssinar.Cancelar) and (FPDadosMsg <> '') then
    AssinarXML(FPDadosMsg, FdocElemento, FinfElemento, 'Falha ao Assinar - Cancelar NFS-e: ','','','id');

Para funcionar também alterei a chamada de assinatura na unit ACBRDFeWebService: (Adicionei o parâmetro vazio '')

FPDadosMsg := FPDFeOwner.SSL.Assinar(AXML, docElement, infElement,
                     SignatureNode, SelectionNamespaces,'', IdSignature);

LEMBRANDO FIZ ESSES ALTERAÇÕES APENAS PARA TESTE.

Feito isso, consegui gerar o XML (em anexo) igual o exemplo, exceto a assinatura devido o erro de AV.

Porém, conforme relatei no inicio, recebo o erro de Access Violation,.

Lembro de ter visto algo aqui no fórum referente a esse Id, alguém tem alguma sugestão de como resolver?

Exemplo Publica.xml

Contruido-NãoAssinado.xml

Postado
58 minutos atrás, Cesar Balbinott disse:

@João Paulo Müller como você está passando em NaturezaOperacao em produção quando a prestação de serviço é dentro do estado?

Estou utilizando as Naturezas descritas aqui:

http://nfse-teste.publica.inf.br/homologa_nfse/RelatorioNatureza

 

Porém ao fazer uma busca agora verifiquei que no comunicado da Prefeitura de Chapecó possui a nova lista para produção.

https://www.chapeco.sc.gov.br/noticia/1508/comunicado-mudancas-de-sistemas

  • Curtir 1
  • Este tópico foi criado há 2079 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.