Ir para conteúdo
  • Cadastre-se

dev botao

[Solucionado] - Problema Ao Importar O Ibptax.xml, Campo Aliqnac\aliqimp Ncm


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

Recommended Posts

Postado (editado)

Olá, fiz o download da tabela IBPTax.xml,através de

(svn://svn.code.sf.net/p/acbr/code/trunk/Exemplos/ACBrIBPTax/tabela/AcspDeOlhoNoImpostoIbptV.0.0.2.csv) criado pelo Régys Silveira

                         

 

Delphi 7, componentet XMLDocument1, firebird 2.1xx, windows xp, mas não é configuração regionais, já pesquisei a dois dias e anda...

 

estou importando mas os campos porém os númericos aliqNac e

aliqImp, estão salvando errado parece que multiplica por 100, exemplo:

 

 

<?xml version="1.0" encoding="ISO-8859-1" ?>
- <IBPTax>
- <imposto>
  <ncm>01012100</ncm>
  <ex />
  <tabela>0</tabela>
  <aliqNac>26.75</aliqNac>
  <aliqImp>27.35</aliqImp>
  <descricao>--Reprodutores de raça pura</descricao>
  </imposto>
- <imposto>
  <ncm>01013000</ncm>
  <ex />
  <tabela>0</tabela>
  <aliqNac>26.75</aliqNac>
  <aliqImp>29.5</aliqImp>
  <descricao>-Asininos</descricao>
  </imposto>
- <imposto>

 

 

 

Observe que aliqNac 26.75 ao salvar para o banco de dados ficar 2675,00

                     aliqImp  27.35                                                              2735,00

                                  29.5                                                                  295,00

 

assim por diante, já usei várias maneiras formatavalor(aliqNac,2), ao visualizar em showmessage()

mostra inteiro 26.75   fica 2675.

 

No fonte:

 

              TabGlobal.DIbpt.Inclui(Nil);
              TabGlobal.DIbpt.NCM.Conteudo                := Node.ChildNodes['ncm'].Text;
//              if Node.ChildNodes['ex'].NodeValue<>0 then
//              TabGlobal.DIbpt.EX.Conteudo                 := Node.ChildNodes['ex'].NodeValue;
              TabGlobal.DIbpt.TABELA_NR.Conteudo          := Node.ChildNodes['tabela'].NodeValue;
              if Node.ChildNodes['aliqNac'].NodeValue>0 then
              TabGlobal.DIbpt.fieldByName('ALIQ_NACIONAL').Value :=Node.ChildNodes['aliqNac'].NodeValue
              else
              TabGlobal.DIbpt.ALIQ_NACIONAL.Conteudo      := 0.00;

              if Node.ChildNodes['aliqImp'].NodeValue>0 then
              TabGlobal.DIbpt.ALIQ_INTERNACIONAL.Conteudo := Node.ChildNodes['aliqImp'].NodeValue
              else
              TabGlobal.DIbpt.ALIQ_INTERNACIONAL.Conteudo := 0.00;

              if Node.ChildNodes['descricao'].Text<>'' then
              TabGlobal.DIbpt.DESCRICAO.Conteudo          :=copy(UpperCase(Node.ChildNodes['descricao'].Text),1,254);
              TabGlobal.DIbpt.Post;
 

 

 

Alguém já passou por isso?

 

Obrigado,

Leão

 

IBPTax.rar

Editado por Leao
Postado

Olá, a maneira que encontrei crie dois edit1, apenas e troquei o ponto por virgula, deu certo, veja fonte:

 

 

              Edit1.Text:=Node.ChildNodes['aliqNac'].Text;
              Edit1.Text:=StringReplace(Edit1.Text,'.',',',[rfReplaceAll,rfIgnoreCase]);

              Edit2.Text:=Node.ChildNodes['aliqImp'].Text;
              Edit2.Text:=StringReplace(Edit2.Text,'.',',',[rfReplaceAll,rfIgnoreCase]);

              TabGlobal.DIbpt.Inclui(Nil);
              TabGlobal.DIbpt.NCM.Conteudo                := Node.ChildNodes['ncm'].Text;
              if Node.ChildNodes['ex'].Text<>'' then
              TabGlobal.DIbpt.EX.Conteudo                 := Node.ChildNodes['ex'].NodeValue;
              TabGlobal.DIbpt.TABELA_NR.Conteudo          := Node.ChildNodes['tabela'].NodeValue;
              if Node.ChildNodes['aliqNac'].NodeValue>0 then
              TabGlobal.DIbpt.fieldByName('ALIQ_NACIONAL').Value :=StrToFloat(Edit1.Text)
              else
              TabGlobal.DIbpt.ALIQ_NACIONAL.Conteudo      := 0.00;

              if Node.ChildNodes['aliqImp'].NodeValue>0 then
              TabGlobal.DIbpt.ALIQ_INTERNACIONAL.Conteudo := StrToFloat(Edit2.Text)
              else
              TabGlobal.DIbpt.ALIQ_INTERNACIONAL.Conteudo := 0.00;

              if Node.ChildNodes['descricao'].Text<>'' then
              TabGlobal.DIbpt.DESCRICAO.Conteudo          :=copy(UpperCase(RemoveAcentos(Node.ChildNodes['descricao'].Text)),1,254);
              TabGlobal.DIbpt.Post;
              Application.ProcessMessages;
              end;  //se not
 

Obrigado,

Leão

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