Ir para conteúdo
  • Cadastre-se

dev botao

Leitor XML não le tag ICMSST


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

Recommended Posts

Boa tarde,

No caso de venda de combustível dentro da UF com ST é obrigatório a geração do grupo ICMSST quando o código ANP for um dos indicados na NT2016.02

image.thumb.png.c0504634e83f1cece54a3be0a3223f00.png

Na situação acima, se for ler o XML a TAG ICMSST esta sendo carregada como cst60 quando deveria ser cstRep60, para corrigir o problema foi necessário uma pequena validação no pcnNFeR (Print abaixo)

image.png.598b810985be02618eea62c3b7c6f55a.png

 

Estou anexando a unit alterada e um XML de exemplo, gostaria que fosse analisado e verificado a possibilidade de adicionar ao SVN.

 

Att

Roberto Godinho

 

41180117493031000124550020000263871168765948-nfe - ICMSST.xml

pcnNFeR.pas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Roberto,

Essa checagem só se faz necessário se a nota for versão 4.00 ?

Se sim, a implementação não poderia ser semelhante a do cst41?

Pois não entendi o motivo de ler o campo ICMSST uma vez que não é um campo e sim um grupo.

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

Bom Dia @Italo Jurisato Junior,

Não é possível validar da mesma forma Italo, no print abaixo, note que ambos os produtos são combustiveis, 1 deles o ANP exige ICMSST e outro ICMS60, ambos tem retenção, portanto a validação do cst41  pode ser descartada, já a validação do vBCICMSSTDest não pode ser usada devido ao fato de, quando for venda na UF, este valor vir zerado.

image.png.2ff8cd21a6242e6a7ce11f10ed02e340.png

Em 31/01/2018 at 17:30, Italo Jurisato Junior disse:

Pois não entendi o motivo de ler o campo ICMSST uma vez que não é um campo e sim um grupo.

Lendo o campo é a forma mais segura de identificar este campo, entendo que não é um campo, no entanto o leitor vai ler o grupo "<ICMS>" e identificar os valores dentro deste grupo independente do CST, desta forma o meio que achei de diferencia-los é exatamente lendo o grupo <ICMSST> como sendo um campo apenas a titulo de identificar sua existência ou não. Outra forma seria validar através do Código ANP como abaixo, no entanto achei menos viável.

class function TValidaUtils.ValidaICMSSNxANP(ACodAnp: Integer): Boolean;
const
  cCOD_ANP: array [0..61] of Integer = (
    210203001, 320101001, 320101002, 320102002, 320102001, 320102003, 320102005, 320201001, 320103001, 220102001,
    320301001, 320103002, 820101032, 820101026, 820101027, 820101004, 820101005, 820101022, 820101031, 820101030,
    820101014, 820101006, 820101016, 820101015, 820101025, 820101017, 820101018, 820101019, 820101020, 820101021,
    420105001, 420101005, 420101004, 420102005, 420102004, 420104001, 820101033, 820101034, 420106001, 820101011,
    820101003, 820101013, 820101012, 420106002, 830101001, 420301004, 420202001, 420301001, 420301002, 410103001,
    410101001, 410102001, 430101004, 510101001, 510101002, 510102001, 510102002, 510201001, 510201003, 510301003,
    510103001, 510301001);
var
  i: Integer;
begin
  Result := False;
  for i := 0 to High(cCOD_ANP) do
    if ACodAnp = cCOD_ANP[i] then
      Exit(True);
end;

Estou anexando o XML utilizado no teste acima, se alguém tiver uma sugestão melhor por gentileza comente abaixo.

41180217493031000124550050000027651607355953-ProcNFe.xml

Editado por Roberto.Godinho
Esqueci o anexo
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Boa tarde @Roberto.Godinho

acho que entendi o problema, vou tentar deixar bem claro... :-)

Considerando que ambos grupos ICMS60 e ICMSST têm campos com mesmo nome: vBCSTRet e vICMSSTRet

Montei um pequeno programa para ler teu XML e mostrar o CST de cada item.

Ambos os itens (1 e 2) foram carregados como se fosse ICMSST (cstRep60) pois ambos têm o campo vBCSTRet maior que zero.

lendo_xml_icmsst_icms60.png

Att

Ricardo

Link para o comentário
Compartilhar em outros sites

Boa tarde,

Me diz uma @RicardoVoigt, você utilizou os fontes do ACBr como estão hoje ou usou a unit que enviei acima?

Em 30/01/2018 at 14:11, Roberto.Godinho disse:

Boa tarde,

Desculpa estar recomentando o post, apenas removi uma linha de validação que não se faz necessária.

image.png.7b974e454a9d71646409197c1a998d08.png

pcnNFeR.pas

Utilizando os fontes do acbr obtenho o resultado que você mencionou, a minha alteração foi justamente pra tratar esta situação.

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Roberto.Godinho disse:

Boa tarde,

Me diz uma @RicardoVoigt, você utilizou os fontes do ACBr como estão hoje ou usou a unit que enviei acima?

Utilizando os fontes do acbr obtenho o resultado que você mencionou, a minha alteração foi justamente pra tratar esta situação.

Oi, não usei sua unit não, tentei entender e mostrar o problema como estaria hoje no componente...

Vou testar sua ideia aqui também...

Att

Ricardo

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
Em 23/03/2018 at 17:23, RicardoVoigt disse:

Boa tarde @Roberto.Godinho

acho que entendi o problema, vou tentar deixar bem claro... :-)

Considerando que ambos grupos ICMS60 e ICMSST têm campos com mesmo nome: vBCSTRet e vICMSSTRet

Montei um pequeno programa para ler teu XML e mostrar o CST de cada item.

Ambos os itens (1 e 2) foram carregados como se fosse ICMSST (cstRep60) pois ambos têm o campo vBCSTRet maior que zero.

lendo_xml_icmsst_icms60.png

Att

Ricardo

@RicardoVoigt O mais interessante seria ler se tem o grupo, acabaria com esse problema... se tem o grupo icmsst => é um repasse...  caso contrário se for o grupo icms60 permanece o grupo 60, que é uma revenda.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Olá

No primeiro item do tópico o Roberto coloca que é obrigatório a geração da tag ICMSST para CST 060 e os códigos ANP mencionados, indiferente de haver algum valor referente a vBCSTRet, vICMSSTRet, vBCSTDest e vICMSSTDest.
No caso acredito que deva verificar os ANPs como o próprio Roberto comentou mais a frente.
Sugiro alteração no pcnNFeR (método VerificaParSt) como o seguinte:
image.png.38bf48224c9684618451b222f97eec0d.png

Necessário lembrar também que deve ser alterado o pcnNFeW passando a realizar a mesma verificação no método GerarDetImpostoICMS.

Hoje, para que o sistema que eu desenvolvo emita corretamente, verifico se o produto possui ANP dentro da listagem informada na NT e o CST é 060, então passo a alterar o cst para cstRep60. Esta alteração é realizada fora do componente ACBr.
Mas isso é na emissão e neste tópico estamos falando da leitura.

Caso necessário estou a disposição.

Atenciosamente
Giovane

Editado por Giovane Preis
ajuste mensagem
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Bom, ante o que foi exposto pelo Giovane Preis e pelo Roberto Godinho e considerando que também estou com o mesmo problema, ou seja gerar o icms st para produtos da ANP (no meu caso, especificamente GLP), qual a solução proposta pelo ACBr visto que não é possivel gerar o grupo ICMSST sem que seja alterado o componente atual?

Link para o comentário
Compartilhar em outros sites

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