Jump to content

chamada diadoacbr

Assista tectoy.png

NFe 4.0 - CST 60 e CSOSN 500 nova tag pST


Adryelle
Go to solution Solved by Agnaldo Prates,
  • Este tópico foi criado há 1585 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde,

Na nota técnica que estabelece o layout 4.0 da NFe, foi criada uma nova tag para informarmos alíquota suportada pelo consumidor Final, pST, sendo que no Acbr esse valor está sendo preenchido caso o campo vBCSTRet  ou vICMSSTRET for maior que zero para cst60, conforme trecho abaixo, na unit pcnNFeW:

if (nfe.Det[i].Imposto.ICMS.vBCSTRET > 0) or (nfe.Det[i].Imposto.ICMS.vICMSSTRET > 0) then
  begin
    Gerador.wCampo(tcDe2, 'N26', 'vBCSTRet  ', 01, 15, 1, nfe.Det[i].Imposto.ICMS.vBCSTRET, DSC_VBCSTRET);

    if (NFe.infNFe.Versao >= 4) then
      Gerador.wCampo(IIf(Usar_tcDe4,tcDe4,tcDe2), 'N26.1', 'pST', 01, IIf(Usar_tcDe4,07,05), 0, nfe.Det[i].Imposto.ICMS.pST, DSC_PST);

    Gerador.wCampo(tcDe2, 'N27', 'vICMSSTRet', 01, 15, 1, nfe.Det[i].Imposto.ICMS.vICMSSTRET, DSC_VICMSSTRET);
end;

 

Porém antes da geração dessas tags existe uma verificação que está sendo feita que altera o cst de cst60 para cstRep60, para que seja gerado o grupo de repasse(ICMSST), e logo não gera o grupo ICMS60 e a nova tag pST, conforme o código abaixo:

if (nfe.infNFe.Versao >= 4) and
   (nfe.Ide.modelo = 55) and
   (nfe.Det[i].Imposto.ICMS.CST = cst60) and       //Ajuste para funcionar no ACBrNFeMonitor
   ((nfe.Det[i].Imposto.ICMS.vBCSTRet <> 0) or     //Qdo passar CST 60 e algum campo de repasse de ICMS ST
    (nfe.Det[i].Imposto.ICMS.vICMSSTRet <> 0) or   //estiver preenchido será trocado o cst para cstRep60
    (nfe.Det[i].Imposto.ICMS.vBCSTDest <> 0) or
    (nfe.Det[i].Imposto.ICMS.vICMSSTDest <> 0)) then
   nfe.Det[i].Imposto.ICMS.CST := cstRep60;

 

Porém analisando a documentação da nota, creio que esse grupo de repasse teria que ser gerado apenas para operações interestaduais, já que na nota técnica fala que ele deve ser gerado nessa situação:

image.thumb.png.eb5536cd6a2468c86d40a453ee359393.png

 

Diante disso imagino que na verificação para mudar o cst de cst60 para cstRep60, deveria conter a condição abaixo, para ser gerado o grupo ICMSST apenas nas operações interestaduais, e grupo ICMS60 e a nova tag pST serem gerados corretamente:

(nfe.Dest.EnderDest.UF <> nfe.Emit.EnderEmit.UF)

 

 

Adryelle Silva Soares
Analista de Sistemas
email: [email protected]
Montes Claros / MG

Link to comment
Share on other sites

  • Solution
Em 24/11/2017 at 17:15, Adryelle disse:

Diante disso imagino que na verificação para mudar o cst de cst60 para cstRep60, deveria conter a condição abaixo, para ser gerado o grupo ICMSST apenas nas operações interestaduais, e grupo ICMS60 e a nova tag pST serem gerados corretamente:

(nfe.Dest.EnderDest.UF <> nfe.Emit.EnderEmit.UF)

 

Em princípio parece pertinente. No entanto, caso o emitente necessite emitir uma contra nota dele para ele mesmo,  com o objetivo de anular um lançamento, o cálculo não será feito, portanto me parece razoável o estudo de outra alternativa.

_____________

Prates, Agnaldo

Link to comment
Share on other sites

 

22 horas atrás, Agnaldo Prates disse:

Em princípio parece pertinente. No entanto, caso o emitente necessite emitir uma contra nota dele para ele mesmo,  com o objetivo de anular um lançamento, o cálculo não será feito, portanto me parece razoável o estudo de outra alternativa.

Realmente, nessa situação específica apenas a condição verificando o estado do emitente e destinatário não iria resolver. Penso que seria interessante criar uma propriedade booleana ou algo similar, onde fosse possível definir na aplicação qual o grupo deveria ser gerado, e colocar essa propriedade na verificação, como no exemplo abaixo:

if (GerarGrupoRepasse) and
   (nfe.infNFe.Versao >= 4) and
   (nfe.Ide.modelo = 55) and
   (nfe.Det[i].Imposto.ICMS.CST = cst60) and       //Ajuste para funcionar no ACBrNFeMonitor
   ((nfe.Det[i].Imposto.ICMS.vBCSTRet <> 0) or     //Qdo passar CST 60 e algum campo de repasse de ICMS ST
    (nfe.Det[i].Imposto.ICMS.vICMSSTRet <> 0) or   //estiver preenchido será trocado o cst para cstRep60
    (nfe.Det[i].Imposto.ICMS.vBCSTDest <> 0) or
    (nfe.Det[i].Imposto.ICMS.vICMSSTDest <> 0)) then
   nfe.Det[i].Imposto.ICMS.CST := cstRep60;

Assim na aplicação poderíamos verificar se a operação é interestadual ou se a nota é com objetivo de anular o lançamento, ou qualquer outra situação que fosse necessário gerar esse grupo, e nessas situações setaria a opção como True para poder gerar o grupo de repasse. 

Acha que seria válida essa opção Agnaldo?

Adryelle Silva Soares
Analista de Sistemas
email: [email protected]
Montes Claros / MG

Link to comment
Share on other sites

3 horas atrás, Adryelle disse:

Acha que seria válida essa opção Agnaldo?

Bom dia.

Imagino que sim. Ou algo do tipo:
if  ( nfe.Ide.tpNF = tnEntrada ) and  (nfe.Dest.EnderDest.UF = nfe.Emit.EnderEmit.UF)  then

else
if (nfe.Dest.EnderDest.UF <> nfe.Emit.EnderEmit.UF)  then
(...)
Talvez algo deste sentido.

 

_____________

Prates, Agnaldo

Link to comment
Share on other sites

  • 2 months later...

à solução apresentada por @Adryelle, não podemos esquecer a CST 041, conforme NT 2016/002 1.42, ficando assim:

if (GerarGrupoRepasse) and
   (nfe.infNFe.Versao >= 4) and
   (nfe.Ide.modelo = 55) and
   ((nfe.Det[i].Imposto.ICMS.CST = cst60) or nfe.Det[i].Imposto.ICMS.CST = cst41) and       //Ajuste para funcionar no ACBrNFeMonitor
   ((nfe.Det[i].Imposto.ICMS.vBCSTRet <> 0) or     //Qdo passar CST 60 e algum campo de repasse de ICMS ST
    (nfe.Det[i].Imposto.ICMS.vICMSSTRet <> 0) or   //estiver preenchido será trocado o cst para cstRep60
    (nfe.Det[i].Imposto.ICMS.vBCSTDest <> 0) or
    (nfe.Det[i].Imposto.ICMS.vICMSSTDest <> 0)) then
   nfe.Det[i].Imposto.ICMS.CST := cstRep60;

 

nelconsult 3d.png

Desenvolvedor e Consultor

[email protected]

 

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.