Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia pessoal...

Tenho uma funcionalidade muito util em meu sistema, onde o meu usuario pode importar o arquivo XML de uma NF-e ou CT-e... Sei que muitos outros sistemas possuem esta mesma funcionalidade e por isso peço uma ajuda, ja que nao encontrei nada a respeito no forum...

Estou com dificuldades para buscar na classe do CT-e, qual o CST do ICMS definido no arquivo XML e claro, os respectivos valores...

Procedimento padrao: "ACBrCTe.Conhecimentos.LoadFromFile(OpenDialog.FileName);"

Para cada CST, os arquivos XML (NF-e/CT-e) possuem TAG diferentes, mas para importar a NF-e, eu consigo verificar qual o CST apenas dando o comando "OrigToStr(ACBrNFe.NotasFiscais.Items[n].NFe.Det.Imposto.ICMS.orig) + CSTICMSToStr(ACBrNFe.NotasFiscais.Items[n].NFe.Det.Imposto.ICMS.CST)", ou qualquer campo, sem se preocupar em acessar especificamente a classe do CST que esta no arquivo XML. Mas no CT-e nao consigo, pois consigo apenas acessar diretamente a classe do CST especifico, como por exemplo: "ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.CST00.CST" para o CST "00" ou "ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.CST20.CST" para o CST "20".

Na classe da NF-e, logo apos a propriedade "imposto" tem "ICMS" (apenas "ICMS") e a partir daí, consigo acessar qualquer campo dos impostos de ICMS, mesmo que o CST é o 60 e o unico campo informado no XML é o proprio CST e a origem. No CT-e, apos a propriedade "Imp" tem "ICMS", igual a NF-e, mas nesse momento nao tenho a propriedade "CST" mas preciso saber qual CST para acessar a classe e pegar as informaçoes dos campos referidos a cada CST...

Se eu acesso "ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS00.CST" o valor retornado é "cst00" e se eu acesso "ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS20.CST" o valor retornado é "cst20", mas no arquivo da CT-e tem a tag "CST20"... o mesmo acontece se no XML tem a tag "CST00".

P.S.: além de tudo isso, não consigo pegar os valores da BC, Aliq e valor do ICMS, pois esta sempre zerado...

Agradeço se alguém puder me ajudar.

  • Consultores
Postado

Bom dia Rosemir,

no caso do CTe leia o conteudo deste campo:

ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.SituTrib

ele vai retornar cst00, cst20, ...

ai suando a estrutura case ... of você monta a rotina para pegar os valores dependendo do cst retornado.

Espero ter ajudado.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Ótimo,

Muito obrigado Italo...

Eu utilizo "CSTICMSToStr(ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.SituTrib)" para pegar o CST...

e utiligo para pegar os valores:

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS00.vBC"

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS00.pICMS"

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS00.vICMS"

ou

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS90.vBC"

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS90.pICMS"

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS90.vICMS"

depende do CST é claro...

Mas retorna sempre o "CST00" e os valores todos zerados...

Eu descobri que na unit "pcteCTeR" no método "function TCTeR.LerXml: boolean;" a partir da linha 520 foi implementada uma diretiva de compilacao "PL_103" e "PL_104".

Na "PL_103", procura pela tag "CST00" e na "PL_104" pela tag "ICMS00"...

Como nao tenho programa para emissao de CT-e, nao sei se alterou alguma coisa no leiaute do CT-e ou é problema no fonte mesmo, mas nos XML que tenho aqui nao existe a TAG "ICMS00" ou "ICMS20" ou "ICMS90", etc... mas sim "CST00" ou "CST20" ou "CST90", etc... por isso nao busca os valores nem o CST.

Grato...

  • Consultores
Postado

Rosemir,

Se você esta recebendo o XML com as tags CST00 é porque a versão do CTe é 1.03, sendo que apartir de 02/05/2012 passa a valer a versão 1.04 ai vao mudar para ICMS00.

Dentro da pasta ...\Fontes\ACBrComum temos o arquivo ACBr.INC

Abra-o e vai até o final dele, comente a definição da diretiva de compilação PL_104 e descomente a PL_103.

Compile a sua aplicação usando a opção Build e teste novamente, mas lembre-se de alterar as linhas:

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.ICMS00.vBC"

(...)

por

"ACBrCTe.Conhecimentos.Items[n].CTe.Imp.ICMS.CST00.vBC"

(...)

Espero ter ajudado.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 10 meses depois ...
Postado

Bom dia,

 

O amigo acima disse que utiliza a linha "OrigToStr(ACBrNFe.NotasFiscais.Items[n].NFe.Det.Imposto.ICMS.orig) + CSTICMSToStr(ACBrNFe.NotasFiscais.Items[n].NFe.Det.Imposto.ICMS.CST)" para pegar o valor do CST. Porém ele utiliza o "OrigToStr" e "CSTICMSToStr". No meu projeto não consigo acessar essas funções, podem me dizer se devo fazer o import de alguma classe ou algo a mais para poder acessa-las?

 

Att: Vinicius Sanchez

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