Ir para conteúdo
  • Cadastre-se

dev botao

Importação de XML do Siscomex


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

Recommended Posts

Alguém já desenvolveu algum sistema utilizando os componentes do ACBr para importar XML do Siscomex?

Estou precisando desenvolver um aplicativo que importe o XML e gere os dados para uma Nota Fiscal de Entrada.

Alguém ai pode me ajudar?

Valter Patrick

Gerente de Projetos na empresa CTEC

(33)98400-0936

GitHub: https://github.com/valterpatrick

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois ...
  • 3 semanas depois ...
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • 4 meses depois ...
Em 16/06/2017 at 10:01, Fernando Rodrigo disse:

ola pessoal, alguem ja fez algo, estou começando a fazer a importação do xml, se alguem tiver interesse e juntar o pessoal todo para fazer acho que valeria a pena.

 

A ideia é fazer dessa forma 

 

 

Fernando, como está o desenvolvimento?

Tenho interesse em participar desse projeto.

Em 15/03/2016 at 08:47, valterpatrick disse:

Alguém já desenvolveu algum sistema utilizando os componentes do ACBr para importar XML do Siscomex?

Estou precisando desenvolver um aplicativo que importe o XML e gere os dados para uma Nota Fiscal de Entrada.

Alguém ai pode me ajudar?

Seria muito interessante ter esse recurso.

Nossa demanda está aumentando. Hoje os despachantes mandam o xml já em "formato de NFe" para os nossos clientes, mas alguns estão dizendo que o trabalho deles é entregar apenas o xml da declaração de importação.

Ainda estou iniciando no assunto. Tenho poucas informações, mas podemos nos unir e tentar desenvolver algo em conjunto.

Link para o comentário
Compartilhar em outros sites

a planilha vem do agente aduaneiro, é padrão, vem todos os calculos de icms, capatazia, IPI, taxa aduaneira, vem tudo completo, dai so vc ler os dados da planilha que ja vem tudo pronto e acrescentar o que vem no xml que esta em anexo,

 

eu não estou conseguindo subir a planilhada para o forum mas entre no link https://www.4shared.com/s/fFk_pRLT9ca e baixe ela, da para entender bem o que esta la

essa planilha é padrão para importação

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

12 minutos atrás, Fernando Rodrigo disse:

e ai @diegofernandesp, conseguiu gerar a importação ?

]

Ainda não, Fernando.

Fizemos contato com o despachante. Ele informou que está criando um novo processo para trocar informações com nosso cliente. Estamos aguardando para ver como vai ficar isso.

Eu dei uma boa olhada no XML e dá para tirar de lá vários dados, mas ainda precisaria informar muita coisa manualmente.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...

Boa Tarde Colegas,

Eu também não achei a documentação do XML da DI do Siscomex! :?

Fernando Rodrigo, peguei os seus fontes que usa o XMDocument para leitura, e consegui fazer a leitura do XML.

No seu fonte na tag <declaracaoImportacao> coloquei alguns campos a mais:

if NodeDeclaracao.ChildNodes[i].NodeName = 'numeroDI' then
  cNumeroDI := '2'+ NodeDeclaracao.ChildNodes[i].NodeValue;
if NodeDeclaracao.ChildNodes[i].NodeName = 'dataRegistro' then
  dDataRegistroDI := formartDate(NodeDeclaracao.ChildNodes[i].NodeValue);
if NodeDeclaracao.ChildNodes[i].NodeName = 'cargaUrfEntradaNome' then
  cLocalDesemb := NodeDeclaracao.ChildNodes[i].NodeValue;
if NodeDeclaracao.ChildNodes[i].NodeName = 'dataDesembaraco' then
  dDataDesemb := formartDate(NodeDeclaracao.ChildNodes[i].NodeValue);
if NodeDeclaracao.ChildNodes[i].NodeName = 'informacaoComplementar' then
  cObservacoes := NodeDeclaracao.ChildNodes[i].NodeValue;
if NodeDeclaracao.ChildNodes[i].NodeName = 'importadorNumero' then // CNPJ
  cCnpj := NodeDeclaracao.ChildNodes[i].NodeValue;

Mas verifiquei que a tag <numeroDI>, só consigo ler ao final , pois a lista de adições estão antes. Mas consegui contornar essa situação.

Mas ai cheguei no nó da Adição, onde pode ter diversas mercadorias dentro de uma adição.

Tentei fazer a consulta em dois passos, mas sem ter um objeto para guardar os dados ficou difícil, pois não consegui acessar o Nro da adição antes das adições.

Então pensei em criar um objeto do ACBr para a leitura do arquivo de Registro de Importação.

 

Agora precisava da ajuda para ver se estou fazendo da maneira correta, ou nos padrões do ACBr para envio.

Não está completo, implementado somente com pouco campos para verificação.

Baseado em um XML do SisComex:

SisComexXml.png.b9fe7b13cb3a95f3aef9daf3939f34e7.png

Eu criei um unit Chamada ACBrSiscomex

Criei 4 classes(type)

type         
  TListaDeclaracoes = class;
  TdeclaracaoImportacao = class;
  TadicaoCollection = class;
  TadicaoCollectionItem = class;  

Classe raiz <TListaDeclaracoes> que tem dentro uma <TdeclaracaoImportacao>

  TListaDeclaracoes = class(TPersistent)
  private
    FdeclaracaoImportacao: TdeclaracaoImportacao;
  public
    constructor Create;
    destructor Destroy; override;
    
    procedure Assign(Source: TPersistent); override;
  published
    property declaracaoImportacao: TdeclaracaoImportacao read FdeclaracaoImportacao write FdeclaracaoImportacao;
  end;

Ai criei a classe TdeclaracaoImportacao, a qual tem a coleção de adiçôes e outros atributos

  TdeclaracaoImportacao = class(TPersistent)
  private
    Fadicao: TadicaoCollection;
    FnumeroDI : String;
    FtotalAdicoes : Integer;

    procedure Setadicao(Value: TadicaoCollection);
  public
    constructor Create(AOwner: TListaDeclaracoes);
    destructor Destroy; override;
    
  published
    property adicao: TadicaoCollection read Fadicao write Setadicao;
    property numeroDI: String read FnumeroDI write FnumeroDI;
    property totalAdicoes: Integer read FtotalAdicoes write FtotalAdicoes;    
  end; 

Ai cria a collection com as classes TadicaoCollection e TadicaoCollectionItem:

  TadicaoCollection = class(TCollection)
  private
    function GetItem(Index: Integer): TadicaoCollectionItem;
    procedure SetItem(Index: Integer; Value: TadicaoCollectionItem);
  public
    constructor Create(AOwner: TdeclaracaoImportacao);
    function Add: TadicaoCollectionItem;
    property Items[Index: Integer]: TadicaoCollectionItem read GetItem write SetItem; default;
  end;
  
 TadicaoCollectionItem = class(TCollectionItem)
  private
    FfornecedorCidade: String;
    FfornecedorEstado: String;
    FnumeroAdicao: String;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;

    procedure Assign(Source: TPersistent); override;
  published
    property fornecedorCidade: String read FfornecedorCidade write FfornecedorCidade;
    property fornecedorEstado: String read FfornecedorEstado write FfornecedorEstado;
    property numeroAdicao: String read FnumeroAdicao write FnumeroAdicao;
  end;  

O fonte inicial, de teste, somente com alguns campos para validação da forma de criação está em anexo.

 

O resultado para utilização do objeto seria o seguinte:

var ACBrSiscomex1 : TListaDeclaracoes;
begin
  ACBrSiscomex1 := TListaDeclaracoes.Create;
  ACBrSiscomex1.declaracaoImportacao.numeroDI := '1893293210';
  ACBrSiscomex1.declaracaoImportacao.adicao.Add;
  ACBrSiscomex1.declaracaoImportacao.adicao[0].numeroAdicao := '001';
  ACBrSiscomex1.declaracaoImportacao.adicao[0].fornecedorCidade := 'FOR TST';
  ACBrSiscomex1.declaracaoImportacao.adicao.Add;
  ACBrSiscomex1.declaracaoImportacao.adicao[1].numeroAdicao := '002';
  ACBrSiscomex1.declaracaoImportacao.adicao[1].fornecedorCidade := 'FOR TST';

Gostaria de ver o que acham da rotina? Sei que tem bastante gente gente mexendo com importação.

É viável a criação de um leitor de XML do SisComex nesses moldes? Pois seria muito mais fácil a leitura se tiver os dados dentro do objeto.

A forma de criação esta nos padrões do Acbr?

Mais um detalhe importante, neste arquivo não temos os cálculos de importação somente a leitura do arquivo do Registro de Importação gerado pelo SISCOMEX!

Agradeço a atenção de todos,

 

ACBrSiscomex.pas

  • Obrigado 1

Rodrigo ®¿®

Curitiba-PR

Link para o comentário
Compartilhar em outros sites

Bom Dia Fernando Rodrigo,

 

Legal !! Eu também estou fazendo assim, mesclando os dados da DI e da planilha do Excel que contem os dados! :-)

Levante a questão da possibilidade da criação de um objeto no ACBr para todos conseguirem ler a DI!

Inclusive , acredito, ter encontrado o layout técnico dos arquivos da DI e Adição no site da Receita Federal.

http://idg.receita.fazenda.gov.br/orientacao/aduaneira/manuais/despacho-de-importacao/sistemas/siscomex-importacao-web/declaracao-de-importacao/funcionalidades/links-para-arquivos/

 

Abs

Rodrigo ®¿®

Curitiba-PR

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
  • 6 meses depois ...
  • Administradores

Boa tarde.

Este tópico está inativo a algum tempo e por isso será fechado, caso necessário favor criar um novo tópico.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1934 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.