Ir para conteúdo
  • Cadastre-se

dev botao

"Total da BC ICMS difere do somatório dos itens"


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

Recommended Posts

CONTRIBUIÇÃO PARA SOLUÇÃO DE PROBLEMA:

Observo duvidas de alguns colegas desenvolvedores sobre a mensagem de erro:

"Total da BC ICMS difere do somatório dos itens (vBC informado:, vBC calculado:)"

Muitos cometem o erro de achar que o problema esta na informação dos valores... e isso "pode ser" um pensamento errado!

Hoje encontrei a solução por ter que resolver o mesmo problema num cliente.

No caso desse, é tributação em regime NORMAL (mas que tambem se aplica ao regime do SIMPLES).

Os procedimentos abaixo resolveu problema no cliente.

No meu sistema a opção (parametros do sistema) de definição de regime tributário é assim:

post-1652-13548987933451.png

No codigo-fonte do meu sistema fiz o seguinte:

campo "CRT":

    {***********************************************************************

     ** De acordo com o Ministério da Fazenda - 2012:                    ***

     **    1 – Simples Nacional                                          ***

     **    2 – Simples Nacional excesso de sublimite da receita bruta    ***

     **    3 – Regime Normal                                             ***

     ***********************************************************************}

      case db_Parametros.FieldByName('EMPRESA_REGIMETRIBUTARIO').AsInteger of

         0, 1: Emit.CRT               := crtSimplesNacional;

            2: Emit.CRT               := crtSimplesExcessoReceita;

            3: Emit.CRT               := crtRegimeNormal;

      end;

campo "CST":
                     

      case db_Parametros.FieldByName('EMPRESA_REGIMETRIBUTARIO').AsInteger of

         0, 1: CST            := cst10;

            2: CST            := cst10;

            3: CST            := cst00;

      end;

campo "CSOSN":

      case db_Parametros.FieldByName('EMPRESA_REGIMETRIBUTARIO').AsInteger of

         0, 1: ICMS.CSOSN     := csosn101;

            2: ICMS.CSOSN     := csosn101;

            3: ICMS.CSOSN     := csosn400;

      end;


campo "vBC" e "vICMS":
      case db_Parametros.FieldByName('EMPRESA_REGIMETRIBUTARIO').AsInteger of

         0,  1 : begin

                  Total.ICMSTot.vBC           := 0;

                  Total.ICMSTot.vICMS         := 0;

                 end ;

             2 : begin

                  Total.ICMSTot.vBC           := 0;

                  Total.ICMSTot.vICMS         := 0;

                 end;

             3 : begin

                  Total.ICMSTot.vBC           := (db_Vendas.FieldByName('ICMS_BASECALCULO').AsFloat);

                  Total.ICMSTot.vICMS         := ( db_Vendas.FieldByName('ICMS_VALOR').AsFloat);

                 end;

      end;

Se tiverem observações sobre isso e quiser contribuir em cima disso, será bem-vinda toda sugestão prática.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

3: Emit.CRT               := crtRegimeNormal;

case db_Parametros.FieldByName('EMPRESA_REGIMETRIBUTARIO').AsInteger of

0, 1: CST := cst10;

2: CST := cst10;

3: CST := cst00;

end;

Zanini, não é possível apenas pelo Código de Regime Tributário (CRT) determinar o Código da Situação Tributário (CST) sem envolver os produtos também.

Exemplo no regime normal (CRT 3), vc pode ter um produto com "ICMS cobrado anteriormente por substituição tributária - CST 60, um produto tributado integralmente - CST 00 e um produto com redução de base de cálculo - CST 20" emitido na mesma nota, aonde seria usado então CST 60 - CST 00 e CST 20. No teu código pelo que entendi todos que estão no Regime Normal, vc atribui CST 00 (Tributado integralmente).

Você deve ter uma tabela de classificação fiscal com estes códigos e os produtos apontados para ele.

As CST possíveis de uso são:

CRT-3 Regime Normal - CST

00 - Tributada integralmente;

10 - Tributada e com cobrança do ICMS por substituição tributária;

20 - Com redução de base de cálculo;

30 - Isenta ou não tributada e com cobrança do ICMS por substituição tributária;

40 - Isenta;

41 - Não tributada;

50 - Suspensão;

51 - Diferimento;

60 - ICMS cobrado anteriormente por substituição tributária;

70 - Com redução de base de cálculo e cobrança do ICMS por substituição tributária;

90 - Outros.

Sendo CRT=1 vc deve permitir da mesma forma o uso dos códigos:

101 - Tributada pelo Simples Nacional com permissão de crédito;

102 - Tributada pelo Simples Nacional sem permissão de crédito;

103 - Isenção do ICMS no Simples Nacional para faixa de receita bruta;

201 - Tributada pelo Simples Nacional com permissão de crédito e com cobrança do ICMS por substituição tributária;

202 - Tributada pelo Simples Nacional sem permissão de crédito e com cobrança do ICMS por substituição tributária;

203 - Isenção do ICMS no Simples Nacional para faixa de receita bruta e com cobrança do ICMS por substituição tributária;

300 - Imune;

400 - Não tributada pelo Simples Nacional;

500 - ICMS cobrado anteriormente por substituição tributária (substituído) ou por antecipação;

900 - Outros.

e não apenas

       0, 1: ICMS.CSOSN     := csosn101;

            2: ICMS.CSOSN     := csosn101;

            3: ICMS.CSOSN     := csosn400;

e não entendi também se o 3 é regime normal porque está usando CSOSN400.


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Angelo e Kiko,

Não, a empresa não pertence ao SIMPLES nacional. É regime normal.

O servidor SEFAZ nao aceitava. Sempre aparecia a referida mensagem.

E então configurei da forma que estão vendo, e passou. A SEFAZ aceitou a NFE.

Foi a unica forma aceita pelo servidor da SEFAZ aqui do Paraná.

Se minha forma estiver errada, eu estarei atento as sugestões dos colegas quanto a isso.

Link para o comentário
Compartilhar em outros sites

Só mais um exemplo como teu código fica meio sem sentido. Quando o Regime é normal, o componente nem coloca as informações de CSOSN, assim como qdo a empresa é do Simples Nacional, não coloca as informaçõess de CST.

E o erro de "total difere da soma do itens" em 99% dos casos tem a ver SIM com valores numericos informados errados.

Se tiver algum XML que dava erro, poste por favor.

Link para o comentário
Compartilhar em outros sites

Prezado Angelo,

Meu intuito não é levantar questões.

Meu intuito não é provar que estou certo na absoluta razão da questão.

Escrevi entre "aspas" no inicio do topico: e isso "pode ser" um pensamento errado!

Se pesquisarmos aqui mesmo no forum, veremos que há topicos com os mesmos casos que as pessoas não souberam como resolver.

E concordo com você, que em 99% dos casos tem a ver com valores numericos informados errados.

Porém, que se tenha uma solução dentro senso comum da lógica. Que sirva de orientação para todos nós.

O que postei aqui (no inicio do tópico), foi a forma que a SEFAZ aceitou a transmissão da NFe. Para este cliente no regime NORMAL.

Tive que setar os 3 campos (CRT, CST e CSOSN) como mostrei para que fosse aceito pela SEFAZ.

Link para o comentário
Compartilhar em outros sites

Eh que não faz muito sentido o que vc propos Zanini.

E como esse erro não aconteceu com a gente não podemos ajudar numa solucao melhor,

POR ISSO o Angelo pediu o XML que deu o erro, entendeu? Para que juntos possamos chegar numa resposta que faça mais sentido

Link para o comentário
Compartilhar em outros sites

Angelo e Igor,

Referente ao caso desse cliente:

Ele tem 2 empresas, uma no regime SIMPLES (que transmite sem problemas). E outra no regime NORMAL (que havia ocorrido erro).

A empresa em questão não é enquadrada no SIMPLES. E sim no regime NORMAL.

Em anexo está o XML que havia dado erro (e que foi solucionada dentro do que abordei no inicio):

41120509316337000187550010000001401000001405-NFe.xml

Enfatizo: Se minha forma de pensar e programar estiver errada, estarei atento as sugestões praticas dos colegas desenvolvedores.

Não vou ser egoista (ou prepotente) de achar que estou certo. Claro, posso estar errado!

.

Link para o comentário
Compartilhar em outros sites

Ok, se vc diz que serviu pra tua situação, "se a receita aceitou", ok... mas só tava querendo explicar (e o Kiko explicou mto melhor que eu) que primeiro, o regime da empresa diz se vc vai trabalhar com CST OU, repito OU CSOSN, nunca com ambas. Tanto que se vc abri o XML "que a receita aceitou" vc vai ver que só tem as informações de CST, já que a empresa é de regime normal.

Segundo, que vc ainda vai enfrentar problemas com essas CSTs e CSOSNs fixas em seu código.

E por último, lembre que "a receita aceitar uma nota" não garante que ela esteja 100% correta. A Receita valida algumas informações básicas, mas se vc estiver tributando erroneamente um produto, ela não te dá o erro, mas pode te cobrar em uma fiscalização futura. Alguém em corrija se eu estiver errado.

Link para o comentário
Compartilhar em outros sites

E por último, lembre que "a receita aceitar uma nota" não garante que ela esteja 100% correta. A Receita valida algumas informações básicas, mas se vc estiver tributando erroneamente um produto, ela não te dá o erro, mas pode te cobrar em uma fiscalização futura. Alguém em corrija se eu estiver errado.

Angelo, verdade. Você esta certo!

No teu conhecimento, qual seria a forma correta de proceder a configuração nessa situação?

.

Link para o comentário
Compartilhar em outros sites

outra coisa, esse EAN 7899999999999 vai te dar problemas futuros hein!

A empresa é uma Industria de Confecções.

Nesse caso, a SEFAZ recusa se não houver conteudo no campo EAN. Mas o cliente nao possui codificação EAN (e nem utilizará por enquanto).

Seguindo orientações do Contador, ele instruiu colocar esse codigo (7899999999999).

Link para o comentário
Compartilhar em outros sites

3: Emit.CRT               := crtRegimeNormal;

case db_Parametros.FieldByName('EMPRESA_REGIMETRIBUTARIO').AsInteger of

0, 1: CST := cst10;

2: CST := cst10;

3: CST := cst00;

end;

Zanini, não é possível apenas pelo Código de Regime Tributário (CRT) determinar o Código da Situação Tributário (CST) sem envolver os produtos também.

Exemplo no regime normal (CRT 3), vc pode ter um produto com "ICMS cobrado anteriormente por substituição tributária - CST 60, um produto tributado integralmente - CST 00 e um produto com redução de base de cálculo - CST 20" emitido na mesma nota, aonde seria usado então CST 60 - CST 00 e CST 20. No teu código pelo que entendi todos que estão no Regime Normal, vc atribui CST 00 (Tributado integralmente).

Você deve ter uma tabela de classificação fiscal com estes códigos e os produtos apontados para ele.

As CST possíveis de uso são:

CRT-3 Regime Normal - CST

00 - Tributada integralmente;

10 - Tributada e com cobrança do ICMS por substituição tributária;

20 - Com redução de base de cálculo;

30 - Isenta ou não tributada e com cobrança do ICMS por substituição tributária;

40 - Isenta;

41 - Não tributada;

50 - Suspensão;

51 - Diferimento;

60 - ICMS cobrado anteriormente por substituição tributária;

70 - Com redução de base de cálculo e cobrança do ICMS por substituição tributária;

90 - Outros.

Sendo CRT=1 vc deve permitir da mesma forma o uso dos códigos:

101 - Tributada pelo Simples Nacional com permissão de crédito;

102 - Tributada pelo Simples Nacional sem permissão de crédito;

103 - Isenção do ICMS no Simples Nacional para faixa de receita bruta;

201 - Tributada pelo Simples Nacional com permissão de crédito e com cobrança do ICMS por substituição tributária;

202 - Tributada pelo Simples Nacional sem permissão de crédito e com cobrança do ICMS por substituição tributária;

203 - Isenção do ICMS no Simples Nacional para faixa de receita bruta e com cobrança do ICMS por substituição tributária;

300 - Imune;

400 - Não tributada pelo Simples Nacional;

500 - ICMS cobrado anteriormente por substituição tributária (substituído) ou por antecipação;

900 - Outros.

e não apenas

       0, 1: ICMS.CSOSN     := csosn101;

            2: ICMS.CSOSN     := csosn101;

            3: ICMS.CSOSN     := csosn400;

e não entendi também se o 3 é regime normal porque está usando CSOSN400.

Zanini, dá uma boa lida no que o Kiko escreveu.

O básico da coisa é o seguinte, primeiro vc tem q dizer se a empresa do teu cliente é Regime Normal ou Simples Nacional, isso já vi que vc tem no teu sistema.

Segundo passo é colocar no teu cadastro de produtos a opção de configurar a tributação de cada um, para operações estaduais e interestaduais. No meu sistema eu vou um pouco mais longe e tbem tenho a configuração de tributação no cadastro de CFOP. Faço isso pq trabalho com clientes de diversos ramos, então não sei que produtos eles vão comercializar, se é pra dentro do estado, pra fora, etc. Tendo essas configurações nos produtos, eu puxo de lá qdo vou fazer a nota e pronto. O basico é isso. Dai vc tem q ver se é necessario fazer essas configs no teu sistema, ou se teu cliente é unico e será sempre fixo isso na nota, como vc está fazendo.

Essa parte de tributação é bem complicada, tendo um bom contador ao seu lado ajuda mto.

Link para o comentário
Compartilhar em outros sites

A empresa é uma Industria de Confecções.

Nesse caso, a SEFAZ recusa se não houver conteudo no campo EAN. Mas o cliente nao possui codificação EAN (e nem utilizará por enquanto).

Seguindo orientações do Contador, ele instruiu colocar esse codigo (7899999999999).

A sefaz se recusa????? Q estranho hein! no manual diz assim:

Preencher com o código GTIN-8,

GTIN-12, GTIN-13 ou GTIN-14 (antigos

códigos EAN, UPC e DUN-14), não

informar o conteúdo da TAG em caso

de o produto não possuir este código.

Link para o comentário
Compartilhar em outros sites

Tem como vc tentar reproduzir o erro em homologacao mesmo?

O duro eh que agora vc ja fez um monte de CASE alterando o seu codigo para nao dar mais o erro ne?

Então Igor,

cerquei por onde pude pra não dar erro. Tento antecipar qualquer tentativa de possiveis erros.

Mas, se voce tiver alguma sugestão pratica, vou seguir ela!

Link para o comentário
Compartilhar em outros sites

Na verdade eu estava curioso MESMO, pra saber pq estava sempre dando esse erro de soma da base de calculo que fez você modificar seu codigo.

Por isso queria ver o XML, mas tudo bem... O importante é que foi resolvido.

Mas faça o que o Angelo disse, procure sempre estudar e conversar com um contador que entenda dessas coisas para nada lhe escapar.

Por fim eu ainda acho que o EAN 7899999999999 vai lhe causar problemas futuros, mas se o contador do cliente falou pra fazer assim, entao ele que vai pagar a multa se vier alguma ^^

Link para o comentário
Compartilhar em outros sites

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