Ir para conteúdo
  • Cadastre-se

dev botao

Não esta gerando a tag ValorIss no xml


Ver Solução Respondido por eraldocg,

Recommended Posts

Estou enviando um nfse para a cidade de
Nome=Joao Pessoa
UF=PB
Provedor=SisPMJP
Versao=2.02

e No xml nao aparece o 

aqui a resposta do suporte 

A partir do dia 11 de março os RPS's foram rejeitados por erro E340 ( Valor do ISSQN não informado. ); sefue em anexo o sml que enviei ao suporte dessa resposta

resposta do contador

deram a seguinte informacao que que a empresa mudou de tributacao de "nao incidencia" para "operacao tributavel" >> onde ja fiz o ajuste Servico.Valores.tribMun.tribISSQN  := tiOperacaoTributavel; como tbm atingindo o sublimite de faturamente de simples, mas que pemanence no simples

o emissor da nota fiscal e uma empresa do simples nacional, nao tem retencao de ISS e nao tem regime especial de tributacao.

 

De certa forma nao estou conseguindo gerar  o XML com o valorISS o qual informo na tag: Servico.Valores.ValorISS

 

Obsevacao:

na mesma cidade noutro cnpj, envio as notas sem precisa ter a tag: Servico.Valores.ValorISS 

 

entao se alguem puder dar um norte agradeco

 

 

Captura de tela 2024-03-14 151224.jpg

1039229-lista-nfse-sinc.xml 2524032653765000016456000000001039229-rps.xml ESSA NOTA DE OUTRO CNPJ NA MESMA CIDADE DEU CERTO 2524034367071700015356000000001007054-nfse.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde @eraldocg,

Na unit SisPMJP.GravarXml temos:

function TNFSeW_SisPMJP202.GerarXml: Boolean;
begin
  if (NFSe.OptanteSimplesNacional = snNao) and
     (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then
    NrOcorrValorIss := 1
  else
    NrOcorrValorIss := -1;

  Result := inherited GerarXml;
end;

Note que o numero de ocorrências do ValorIss será 1 (a tag vai ser gerada mesmo com o valor zero) se as duas condições forem verdadeiras ou o numero de ocorrências do ValorIss será -1 (a tag nunca vai ser gerada).

Notei que você mencionou:

Servico.Valores.tribMun.tribISSQN  := tiOperacaoTributavel;

Esse campo se refere ao layout do Padrão Nacional e esse provedor se utiliza da versão 2 do layout da ABRASF.

Eu acredito que você esteja alimentando os campos errados.

No programa exemplo do componente ACBrNFSeX temos 3 procedures que exemplificam a alimentação do componente para o layout da ABRASF, para o layout próprio de alguns provedores e o layout do Padrão Nacional.

Vale apena estudar o programa exemplo.

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

  • 3 semanas depois ...

realmente essa tag colqiei depois pra ver se estava falando alimentar algo em relacao ao exemplo

Ola boa tarde, grato pela atencao:

mas entao  o x da questao é esse: < if (NFSe.OptanteSimplesNacional = snNao ) > a empresa continua do Simples nacional:
texto so setor contabil:
atingiu o sublimite do Simples Nacional sendo assim, começa a pagar ISS por fora, e não na guia do Simples. se mantendo no simples... 

essa tague eu ha comentei a mesma
Servico.Valores.tribMun.tribISSQN  := tiOperacaoTributavel; <fio olhando o exemplo e pensei que falatav algo no meu codigo);
Link para o comentário
Compartilhar em outros sites

16 minutos atrás, eraldocg disse:

realmente essa tag colqiei depois pra ver se estava falando alimentar algo em relacao ao exemplo

Ola boa tarde, grato pela atencao:

mas entao  o x da questao é esse: < if (NFSe.OptanteSimplesNacional = snNao ) > a empresa continua do Simples nacional:
texto so setor contabil:
atingiu o sublimite do Simples Nacional sendo assim, começa a pagar ISS por fora, e não na guia do Simples. se mantendo no simples... 

essa tague eu ha comentei a mesma
Servico.Valores.tribMun.tribISSQN  := tiOperacaoTributavel; <fio olhando o exemplo e pensei que falatav algo no meu codigo);

 

Link para o comentário
Compartilhar em outros sites

ainda estou no aguardo de qual padrao o servido utiliza para "ValorIss" e quando deve ser informado ou nao no xml (quando tiver a resposta complemento aqui).
porem, deixe comentada essa funcao TNFSeW_SisPMJP202.GerarXml, sempre retornado 1 (UM) e ja deu certo aqui,
begin
  //if (NFSe.OptanteSimplesNacional = snNao) and
  // if  (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then
    NrOcorrValorIss := 1
//  else
 //   NrOcorrValorIss := -1;
 
POREM PRECISOU DE UM AJUSTE:
 
email recebido do suporte com erro no valor informado na tag ValorIss da pref:
==================================================
Valor correto do tributo são 45,47, o erro esta sendo ocasionado devido a regra de arredondamento, a prefeitura utiliza a regra round half down .
<Valores>
<ValorServicos>909.50</ValorServicos>
<ValorIss>45.48</ValorIss>
<Aliquota>5.00</Aliquota>
</Valores>
==================================================
 
rotina que usei calcular o valor ValorIss para baixo e nao para cima

function RoundTo5Down(Valor: Double; Casas: Integer): Double;
var
  xValor, xDecimais: String;
  p, nCasas: Integer;
  nValor: Double;
begin
  nValor := Valor;
  xValor := Trim(FloatToStr(Valor));
  p := Pos(',', xValor);
  if Casas < 0 then
    nCasas := -Casas
  else
    nCasas := Casas;
  if p > 0 then
  begin
    xDecimais := Copy(xValor, p + 1, Length(xValor));
    if Length(xDecimais) > nCasas then
    begin
      if xDecimais[nCasas + 1] >= '5' then
        SetRoundMode(rmDown) // Setar para a regra round half down
      else
        SetRoundMode(rmNearest);
    end;
    nValor := RoundTo(Valor, Casas);
  end;

  // Arredondando para duas casas decimais
  Result := Trunc(nValor * 100) / 100;
end;

 

 

Link para o comentário
Compartilhar em outros sites

RESOLVIDO,

precisei alterar a unit SisPMJP.GravarXml pra incluir a empresa como RegimeEspecialTributacao in [retMicroempresaMunicipal]), sendo do simpples nacional, ficando assim:

function TNFSeW_SisPMJP202.GerarXml: Boolean;
begin
  if (NFSe.OptanteSimplesNacional = snNao) then
  begin
    if (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then
      NrOcorrValorIss := 1
    else
      NrOcorrValorIss := -1;
  end
  else if (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal]) then
    NrOcorrValorIss := 1
  else
    NrOcorrValorIss := -1;
  {
  if (NFSe.OptanteSimplesNacional = snNao) then
  if  (NFSe.RegimeEspecialTributacao in [retMicroempresaMunicipal, retMicroempresarioEmpresaPP]) then
    NrOcorrValorIss := 1
  else
    NrOcorrValorIss := -1;
    }

  Result := inherited GerarXml;

end;

 

para gerar o valor da Servico.Valores.ValorISS, precisei usar esse arrendamento para abixo, (segundo o suporte da prefeitura:  a prefeitura utiliza a regra round half)
function TPrincipalForm.RoundTo5Down(Valor: Double; Casas: Integer): Double;
var
  xValor, xDecimais: String;
  p, nCasas: Integer;
  nValor: Double;
begin
  nValor := Valor;
  xValor := Trim(FloatToStr(Valor));
  p := Pos(',', xValor);
  if Casas < 0 then
    nCasas := -Casas
  else
    nCasas := Casas;
  if p > 0 then
  begin
    xDecimais := Copy(xValor, p + 1, Length(xValor));
    if Length(xDecimais) > nCasas then
    begin
      if xDecimais[nCasas + 1] >= '5' then
      begin
        // Se o próximo dígito após as casas decimais for maior ou igual a 5,
        // arredonda para baixo (round half down)
        if Valor < 0 then
          nValor := Int(nValor * Power(10, nCasas)) / Power(10, nCasas)
        else
          nValor := Int(nValor * Power(10, nCasas) + 0.5) / Power(10, nCasas);
      end
      else
        SetRoundMode(rmNearest);
    end;
    nValor := RoundTo(nValor, Casas);
  end;

  // Arredondando para o número especificado de casas decimais
  // Formatar o resultado com vírgula como separador decimal e duas casas decimais
  Result := StrToFloat(FormatFloat('#,##0.00', nValor));
end;

 

Observacao do problema, passado pelo setor contabil:

A empresa atingiu o sublimite do Simples Nacional sendo assim, começa a pagar ISS por fora, e não na guia do Simples. Isso se dá porque durante todo ano de 2023 o mesmo atingiu um faturamento anual(RBAA) de mais de R$ 3.600.000,00. A empresa continua sendo SIMPLES NACIONAL

Resumo:

foi necessario fazer os ajustes acima! deixo aqui como fontes praa ajudar outros b.os;

 

 

e obrigado pela atencao

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde @eraldocg,

Favor anexar a unit alterada para que possamos validar e enviar a mesma para o SVN.

Desde já muito obrigado pela colaboração.

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

  • Consultores

@eraldocg,

Muito obrigado pela colaboração, já inclui na minha lista de tarefas. TK-5324

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.