Ir para conteúdo
  • Cadastre-se

dev botao

DadosServicos xml prefeitura Cotia/SP provedor Giap


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 281 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

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.
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado
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!

  • Consultores
Postado

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;
  ...
  

 

  • 4 semanas depois ...
  • Este tópico foi criado há 281 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.