Ir para conteúdo
  • Cadastre-se

Tag <IBSCBS> incompleta e erro no schema com CodigoNbs com provedor webiss


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

Recommended Posts

Postado

Bom dia pessoal, 

Estou tentando atualizar o componente NFS-e para emissão de acordo com as novas regras da reforma tributária e estou com alguns erros e divergência de layout.
O município é São Lourenço/ MG (3163706) provedor WEBISS.
Versão svn atualizada.
Irei postar anexo o xml com erro, o xml de uma nota emitida pelo portal webiss e o schema baixado do site oficial webiss.

Erro 1:
X800 | Erro de Validação:  --> 1871 - Element '{http://www.abrasf.org.br/nfse.xsd}CodigoNbs': This element is not expected. Expected is one of ( {http://www.abrasf.org.br/nfse.xsd}CodigoPais, {http://www.abrasf.org.br/nfse.xsd}ExigibilidadeISS ).
Aparentemente a posição passada do CodigoNbs não está correta.

Erro 2:
<IBSCBS>
    <finNFSe>0</finNFSe>
    <indFinal>1</indFinal>
    <cIndOp>100101</cIndOp>
    <indDest>0</indDest>
    <valores>
        <trib>
            <gIBSCBS>
                <CST>200</CST>
                <cClassTrib>200048</cClassTrib>
            </gIBSCBS>
        </trib>
    </valores>
</IBSCBS>
Falta as aliquotas e totais.
Tentei diversas variações de codigo passando parametros de aliquotas dentro de nf.IBSCBS.valores , nf.infNFSe.IBSCBS.valores, nf.IBSCBS.valores.trib, nf.IBSCBS.valores.trib.gIBSCBS sem sucesso.

Codigo:


procedure TNFSe2.ReformaCalcIBSCBS(nf:TNFSe);
var
  vBaseCalculoServico: Double;
  vValorIBSUF, vValorIBSMun, vValorCBS,vValorIBS: Double;
begin

  // 1. Obter a Base de Cálculo
  vBaseCalculoServico := nf.Servico.Valores.BaseCalculo;

  // 2. Calcular os Valores de Transição (0.9% CBS, 0.1% IBS)
  vValorCBS := vBaseCalculoServico * (0.90 / 100);
  vValorIBS := vBaseCalculoServico * (0.10 / 100); // Usando 0.1% total para IBS

  nf.Servico.CodigoNBS :=  '103031100';

  nf.IBSCBS.cIndOp:='100101';
  nf.infNFSe.IBSCBS.cLocalidadeIncid:= StrToIntDef(nf.Servico.CodigoMunicipio, 0);


  // 1. CST (Código de Situação Tributária)
  // TCSTIBSCBS (Tributação Integral)
  nf.IBSCBS.valores.trib.gIBSCBS.CST:=cst200;

  // 2. cClassTrib (Código de Classificação Tributária)
  // 000001 (Tributação Integral)
  nf.IBSCBS.valores.trib.gIBSCBS.cClassTrib := '200048';

  // Outras informações operacionais do DPS (essenciais para o Padrão Nacional)
  with nf.IBSCBS do
  begin

      // Indica se o destinatário é Consumidor Final (Sim/Não)
      indFinal := ifsim;
      indDest   := idTomadorAdquirenteDestinatarioIguais;

      // Finalidade da NFSe (Normal)
      finNFSe := fnfsRegular;


	  // Tentativa de passar as aliquotas aqui para aparecer no xml
      with valores do
      begin
        //vBC := vBaseCalculoServico;
        IbsMunicipal:=0.00;
        IbsEstadual:= 0.01;
        Cbs:= 0.90;
        ValorIbsMunicipal:= 0;
        ValorIbsEstadual:=vValorIBS;
        ValorCbs:=vValorCBS;

      end;

  end;

  with nf do
  begin

    with infNFSe.IBSCBS.valores do
    begin
      // Base de Cálculo
      vBC := vBaseCalculoServico;

      // CBS (Federal) -> Alíquota de Teste: 0,9%
      // A alíquota é informada na propriedade pAliqEfetCBS
      fed.pAliqEfetCBS := 0.90; // Em percentual (0,9%)

      // IBS (UF) -> Alíquota de Teste: 0,1% (Dividida entre UF e Município)
      // Se a legislação não detalhar a divisão, use a parte principal para a alíquota de IBS.
      // Vamos alocar a alíquota total de 0,1% para a parte UF (IBS UF) por simplicidade de teste.
      uf.pAliqEfetUF := 0.10; // Em percentual (0,1%)
      mun.pAliqEfetMun := 0.00; // Alíquota Municipal (0%)

      // NOTA: As propriedades pIBSUF/pIBSMun/pCBS também podem ser preenchidas,
      // dependendo da regra do ACBr, mas o campo 'Efetivo' é frequentemente o usado para o cálculo.
    end;

    // ----------------------------------------------------
    // --- 2. CÁLCULO DOS VALORES DE TRIBUTO ---
    // ----------------------------------------------------

    // Cálculo dos valores (VBC * Alíquota / 100)
    vValorCBS := vBaseCalculoServico * (infNFSe.IBSCBS.valores.fed.pAliqEfetCBS / 100);
    vValorIBSUF := vBaseCalculoServico * (infNFSe.IBSCBS.valores.uf.pAliqEfetUF / 100);
    vValorIBSMun := vBaseCalculoServico * (infNFSe.IBSCBS.valores.mun.pAliqEfetMun / 100);

    // ----------------------------------------------------
    // --- 3. PREENCHIMENTO DOS VALORES CALCULADOS (TOTALIZADORES) ---
    // ----------------------------------------------------

    // Para operações regulares, use o grupo gTribRegular
    with infNFSe.IBSCBS.totCIBS.gTribRegular do
    begin
      // CBS
      pAliqEfeRegCBS := infNFSe.IBSCBS.valores.fed.pAliqEfetCBS; // Repetição da alíquota
      vTribRegCBS := vValorCBS; // Valor Calculado

      // IBS UF
      pAliqEfeRegIBSUF := infNFSe.IBSCBS.valores.uf.pAliqEfetUF; // Repetição da alíquota
      vTribRegIBSUF := vValorIBSUF; // Valor Calculado

      // IBS Municipal
      pAliqEfeRegIBSMun := infNFSe.IBSCBS.valores.mun.pAliqEfetMun; // Repetição da alíquota
      vTribRegIBSMun := vValorIBSMun; // Valor Calculado
    end;
  end;

  with nf.infNFSe.IBSCBS.totCIBS do
  begin
      // -------------------------------------------------------------------------
      // A. Valores da Tributação Regular (TgTribRegularNFSe)
      // -------------------------------------------------------------------------
      with gTribRegular do
      begin
          // 1. CBS (Contribuição sobre Bens e Serviços)
          // pAliqEfeRegCBS: Alíquota efetiva de 0,9%
          pAliqEfeRegCBS := nf.infNFSe.IBSCBS.valores.fed.pAliqEfetCBS;

          // vTribRegCBS: Valor do imposto CBS (vBC * 0.90%)
          vTribRegCBS := vBaseCalculoServico * (pAliqEfeRegCBS / 100);

          // 2. IBS - UF (Imposto sobre Bens e Serviços - Parte Estadual)
          // pAliqEfeRegIBSUF: Alíquota efetiva de 0,1%
          pAliqEfeRegIBSUF := nf.infNFSe.IBSCBS.valores.uf.pAliqEfetUF;

          // vTribRegIBSUF: Valor do imposto IBS-UF (vBC * 0.10%)
          vTribRegIBSUF := vBaseCalculoServico * (pAliqEfeRegIBSUF / 100);

          // 3. IBS - Municipal (Imposto sobre Bens e Serviços - Parte Municipal)
          // Neste exemplo de transição, estamos considerando 0% para a parte Municipal
          pAliqEfeRegIBSMun := nf.infNFSe.IBSCBS.valores.mun.pAliqEfetMun; // Deve ser 0.00
          vTribRegIBSMun := vBaseCalculoServico * (pAliqEfeRegIBSMun / 100); // Deve ser 0.00
      end;

      // -------------------------------------------------------------------------
      // B. Total da Nota Fiscal (vTotNF)
      // -------------------------------------------------------------------------
      // O campo vTotNF deve refletir a soma de todos os valores da NF.
      // O valor do imposto do consumo (IBS e CBS) entra no total da nota.
      // vTotNF = vServico + vTribRegCBS + vTribRegIBSUF + vTribRegIBSMun + Outros valores (PIS/COFINS/etc. se destacados)

      // Supondo: vTotNF = vServico + vCBS + vIBSUF + vIBSMun
      vTotNF := nf.Servico.Valores.ValorServicos + gTribRegular.vTribRegCBS + gTribRegular.vTribRegIBSUF + gTribRegular.vTribRegIBSMun;


      // -------------------------------------------------------------------------
      // C. Outros Grupos de Totalização (Se aplicável)
      // -------------------------------------------------------------------------
      // Estes grupos são usados para cenários específicos e, para a maioria das notas, devem ser deixados vazios/zerados.
      // gTribCompraGov: Se a nota for para um órgão governamental.
      // gIBS: Contém totalizadores de IBS.
      // gCBS: Contém totalizadores de CBS (vCBS e vDifCBS).
      // Em muitos casos, se gTribRegular for preenchido, estes são calculados internamente ou não são necessários.
  end;



end;


Obrigado,
Danio

 



 

nfs-com-erro.xml NFSe_202600000000041_G8VG-DFN2.xml nfse_v2_02-IBSCBS.xsd

  • Membros Pro
Postado

Bom dia.

Alíquota e totais do IBS/CBS não são passados no XML para notas de serviço: o próprio webservice calcula e devolve.

Geralmente o NBS não entra no grupo <IBSCBS>, então a posição dele está correta.

Postado

Bom dia, o código NBS tem que ser antes da descrição pois senão ele da erro de estrutura.. Já foi inserida uma atualização para isso anteriormente nesse provedor e em outros.

Postado

Obrigado pelas informações  Tiago e Luis .

O componente está atualizado e aparentemente a posição da tag no codigo gravarXml e no schema estão corretas, não sei porque meu xml aparece na posição errada.

image.thumb.png.55cad79953471466495a66ccbb08dd2e.png

  • Membros Pro
Postado

Observe que a gravação da tag <Discriminacao> está duplicada, então ela sai antes de <CodigoNbs>.

Mas o pior é que esse provedor modificou muito o grupo IBSCBS, as tags internas são diferentes dos demais provedores que seguem o modelo Abrasf.

Também estou com problema na autorização para Bagé/RS.

Já enviei um email para o suporte deles.

Postado
21 horas atrás, Luis AGSI disse:

Enviando minha unit que funcionou pra outra cidade da webiss, usando o padrão igual o da GISS

WebISS.GravarXml.pas 4.81 kB · 1 download

Isso resolve o problema do codigoNbs. Obrigado , não sabia que poderia definir as posições das tags na função de configuracao.

20 horas atrás, TiagoTecchio disse:

Oá Luis,

Apliquei os ajustes que você fez na unit, e consegui autorizar.

Obrigado pela ajuda.

Será que o @Italo Giurizzato Junior poderia avaliar para incluir no repo?

Eu ajustei a unit anexa para remover a duplicação da tag <Discriminacao> e permitir que esta fosse escrita após a tag <CodigoNbs>.

ACBrNFSeXGravarXml_ABRASFv2.pas 70.33 kB · 1 download

Usando a solução de Luis não é necessário alterar a tag Discriminacao no arquivo ACBrNFSeXGravarXml_ABRASFv2.pas.
Obrigado.

Postado

Ainda com a ausência das tags das alíquotas de ibs cbs acredito que não cumpre as obrigações acessórias previstas na legislação.

  • Membros Pro
Postado (editado)

No caso de Notas de serviço, as aliquotas e valores de IBS e CBS são geradas pelo provedor - isso ocorre em todos que já implementamos.

O único problema que tive neste provedor em específico, foi a posição do CodiboNbs, que deve estar posicionado antes da Discriminação.

Cometi um erro no arquivo que postei anteriormente, desabilitando a primeira ocorrência da tag <Discriminacao> - ela deve permanecer.

Por fim só reposicionei o NBS e autorizou sem problemas.

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