Ir para conteúdo
  • Cadastre-se

dev botao

DadosServicos xml prefeitura Cotia/SP provedor Giap


Ver Solução Respondido por Italo Giurizzato Junior,

Recommended Posts

Boa tarde, cliente me reportou a seguinte situação, prestador Cotia/SP tomador Itapevi/SP, ao gerar a nota fiscal e acessar o portal para visualizar a nota fiscal é demonstrado que a cidade serviço é Cotia/SP.

image.thumb.png.e06a57936b62734a6eb0cd66cbd44ab7.png

Na impressão da nota fiscal os dados do tomador estavam corretos (Itapevi/SP), analisando o manual da prefeitura notei que os dados que devem ser enviados para (DadosServico) é sobre local prestação serviço.

image.thumb.png.49155464f875e4878c7fdd533e71bc25.png

Ao analisar a unit Giap.GravaXml.pas notei que estava sendo passado os dados do prestador.

 

function TNFSeW_Giap.GerarDadosServico: TACBrXmlNode;
begin
  Result := CreateElement('dadosServico');
  Result.AppendChild(AddNode(tcStr, '#1', 'bairro', 1, 25, 1,NFSe.
prestador.Endereco.Bairro, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'cep', 1, 9, 1,NFSe.
prestador.Endereco.CEP, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'cidade', 1, 30, 1, NFSe.
prestador.Endereco.xMunicipio, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'complemento', 1, 30, 0,NFSe.
prestador.Endereco.Complemento, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'logradouro', 1, 50, 1,NFSe.
prestador.Endereco.Endereco, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'numero', 1, 10, 1, NFSe.
prestador.Endereco.Numero, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'pais', 1, 9, 1,NFSe.
prestador.Endereco.xPais, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'uf', 1, 2, 1,NFSe.
prestador.Endereco.UF, ''));
end;

Ajuste para enviar os dados do tomador.

function TNFSeW_Giap.GerarDadosServico: TACBrXmlNode;
begin
  Result := CreateElement('dadosServico');
  Result.AppendChild(AddNode(tcStr, '#1', 'bairro', 1, 25, 1,NFSe.
Tomador.Endereco.Bairro, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'cep', 1, 9, 1,NFSe.
Tomador.Endereco.CEP, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'cidade', 1, 30, 1, NFSe.
Tomador.Endereco.xMunicipio, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'complemento', 1, 30, 0,NFSe.
Tomador.Endereco.Complemento, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'logradouro', 1, 50, 1,NFSe.
Tomador.Endereco.Endereco, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'numero', 1, 10, 1, NFSe.
Tomador.Endereco.Numero, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'pais', 1, 9, 1,NFSe.
Tomador.Endereco.xPais, ''));
  Result.AppendChild(AddNode(tcStr, '#1', 'uf', 1, 2, 1,NFSe.
Tomador.Endereco.UF, ''));
end;

Após o ajuste a nota fiscal passou a ser gerada com os dados esperados.

image.thumb.png.a9bf7c3b5e322dfaee876f2cb22dd72c.png

Este é um ajuste paliativo, pois podemos ter situações onde o prestado é Cotia, tomador de Cotia e local prestação de serviço Itapevi, mas acredito que dessa forma estará "menos" errado, este provedor atende outras cidades e não cheguei a verificar se trabalham da mesma forma para os dados (DadosServiço).

Em anexo está a unit com o ajuste mais manual utilizado.

Giap.GravarXml.pas DESCRITIVO_XML_WS - PDF.pdf

Editado por Bruno Lucas Batista.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Bruno,

Realmente da forma que esta hoje esta errado e a sua alteração ao meu ver pode ocorrer em uma outra situação.

Vamos supor que o prestador é da cidade A e o tomador da cidade B.

Eu entendo que "Local de Prestação do Serviço" é o local onde o serviço foi executado,

Sendo assim o a cidade de execução de serviço não seja do tomador e sim do prestador e até uma terceira cidade.

Acredito que o correto seria criar uma classe chamada LocalPrestServ onde teríamos os dados do Local de Prestação do Serviço.

O que você acha?

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

5 horas atrás, Italo Giurizzato Junior disse:

Bom dia Bruno,

Realmente da forma que esta hoje esta errado e a sua alteração ao meu ver pode ocorrer em uma outra situação.

Vamos supor que o prestador é da cidade A e o tomador da cidade B.

Eu entendo que "Local de Prestação do Serviço" é o local onde o serviço foi executado,

Sendo assim o a cidade de execução de serviço não seja do tomador e sim do prestador e até uma terceira cidade.

Acredito que o correto seria criar uma classe chamada LocalPrestServ onde teríamos os dados do Local de Prestação do Serviço.

O que você acha?

Boa tarde Ítalo, acredito que dessa forma que você sugeriu irá resolver de vez todas as situações!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite a todos,

Se for algo relacionado a endereço de obra(pela descrição do serviço parece ter relação), o componente já possui propriedades para isso.

TNFSe = class(TPersistent)
  private
    ...
    FConstrucaoCivil: TDadosConstrucaoCivil;
TDadosConstrucaoCivil = class(TObject)
  private
  ...
    FEndereco: TEndereco;
  ...
  

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Consultores
  • Solution

Boa tarde Bruno,

Favor Atualizar todos os fontes de todas as pastas, reinstale o ACBr e faça novos testes.

Mas antes leia o tópico abaixo:

 

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

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.