Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Obrigado Rodrigo Coelho,

Retirei o código do comentário e o mesmo agora está funcionando.

Você pode utilizar o arquivo que anexei por ultimo, nele tem a correção que será subida para o SVN.

  • Curtir 1

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Postado

Alguém que tem controle do SVN poderia por favor subir as alterações atuais, porque está acumulando, e pode ficar difícil depois para diferenciar, no momento temos a alteração de data, de um tipo de um determinado campo e ainda da forma como o arquivo é lido em outras IDEs.

 www.datalider.com.br - [email protected] - Macgayver Armini

 

  • Consultores
Postado (editado)

Olá pessoal,

 

   Subi todas as correções sugeridas nas páginas anteriores e o programa de exemplo. Acho que não ficou nada pendente deste tópico. Mas queiram por favor verificar e testar.

   Obrigado ao Macgayver (Data Lider) e Rodrigo pelas implementações.

 

EDIT: Enviado para o trunk2 na revisão 9227

Editado por EMBarbosa
  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 2 semanas depois ...
  • Consultores
Postado

Esqueci de mencionar que tive que criar a função IndTpOperacaoReceitaToStr na unit ACBrEPCBlocos.pas. Foi necessário para ler o registro F100.

Em anexo a unit. Favor subir a alteração.

Estamos aguardando alguns processos em background do fórum para recuperar os anexos. Daí eu volto aqui para subir a sua alteração.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Outra sugestão de melhoria é tornar o método "LimparRegistros" público, para que possa ser acessado do componente de importação. Antes de importar um arquivo SPED o componente de importação deve limpar os registros que já possam existir de uma importação anterior.

Para exemplificar, eu leio vários arquivos SPED ao mesmo tempo dentro de um laço "for", mas atualmente para cada importação o componente está acumulando as informações lidas anteriormente, fazendo com que alguns blocos que são únicos se repitam.

Em anexo as units alteradas.

ACBrSpedPisCofins.pas

ACBrEPCImportar.pas

Postado

Tive que implementar mais alguns métodos de conversão de tipos que não encontrei no fonte original. Utilizei eles para ler do SPED carregado e inserir em um banco de dados que tenho. Segue em anexo. Peço que analisem e façam as alterações necessárias para subir no SVN.

ACBrEPCBlocos.pas

  • Consultores
Postado

Outra sugestão de melhoria é tornar o método "LimparRegistros" público, para que possa ser acessado do componente de importação. Antes de importar um arquivo SPED o componente de importação deve limpar os registros que já possam existir de uma importação anterior.

Para exemplificar, eu leio vários arquivos SPED ao mesmo tempo dentro de um laço "for", mas atualmente para cada importação o componente está acumulando as informações lidas anteriormente, fazendo com que alguns blocos que são únicos se repitam.

Mas e se eu quiser importar os dados de vários arquivos de filiais de uma mesma empresa?

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Eu imaginei que poderia ser um jeito de ter um "unificador" de arquivos. Por isso acho melhor discutir a limpeza automática ao importar.

Mas com respeito ao que você faz, não ficou claro... O componente não está limpando os registros depois que você gera o arquivo? Por que você precisa chamar o LimparRegistros na mão?

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Lembrando que muda a característica dos métodos já usados em outros componentes Elton

Qual parte que você diz?

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

LimparRegistros não é uma propriedade, mas sim um método, não afetará nada mudando-a para Public.

  • Curtir 1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

  • Consultores
Postado

Beleza pessoal, obrigado. Mas ainda não entendi o motivo de precisar de tornar público esse método... Vou aguardar o retorno do Rodrigo, conforme meu post acima.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Isso é verdade, realmente não consigo vê necessidade.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Postado

Respondendo ao seu questionamento EMBarbosa, eu faço o seguinte. Vou escrever um pequeno portugol

para cada arquivo SPED escolhido faça
inicio
  limpar possíveis registros já importados;
  importar o arquivo usando o importador;
  salvar o conteúdo de cada bloco nas respectivas tabelas no banco de dados;
fim

Cada arquivo SPED importado gera um ID diferente (com base no CNPJ e data ini e fim) dentro do meu banco de dados.

Vamos supor que meu banco seja o seguinte:

CREATE TABLE SPED
( 
    ID_SPED INTEGER NOT NULL, -- PK
    CNPJ VARCHAR(14) NOT NULL,
    DT_INI DATE,
    DT_FIM DATE,
    CONSTRAINT PK_SPED PRIMARY KEY (ID_SPED)
);

CREATE TABLE REG_0140
(
    ID_SPED INTEGER NOT NULL, -- PK e FK
    ID_0140 INTEGER NOT NULL, -- PK
    NOME VARCHAR(100),
    CNPJ VARCHAR(14),
    CONSTRAINT PK_REG_0140 PRIMARY KEY (ID_SPED, ID_0140) 
)
    

Lendo e gravando o primeiro arquivo SPED no banco, o ID_SPED será igual a 1 na tabela SPED

Depois vou ler os blocos na sequência e gravar cada um em sua respectiva tabela.

Por exemplo, ao ler o bloco 0140 ele tem somente um registro no meu caso (para cada arquivo). Ou seja, será gravado um registro na tabela REG_0140 da seguinte forma:

ID_SPED  | ID_0140 | NOME   |  CNPJ
    1    |    1    | <nome> | <cnpj>

Agora quando eu leio o segundo arquivo e vou gravar no banco vai acontecer o seguinte:

ID_SPED  | ID_0140 | NOME   |  CNPJ
    1    |    1    | <nome> | <cnpj>
    2    |    1    | <nome> | <cnpj>
    2    |    2    | <nome> | <cnpj>

Veja que ele vai gerar dois registro para o bloco 0140. Isso por que o primeiro registro é do arquivo anterior e o segundo do arquivo atual. Ou seja, ele acumula as importações, caso eu não limpe antes.

Assim sendo, para cada arquivo importado eu preciso, antes de tudo, garantir que o ACBrPisCofins esteja vazio. Por isso a necessidade de tornar o método público.

 

Não sei consegui ser claro, espero que sim.

 

Rodrigo.

  • Consultores
Postado

Respondeu sim Rodrigo e ficou bem claro. Hoje não vou ter prazo para verificar, mas amanhã devo avaliar suas alterações e subir para o SVN.

Muito obrigado.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Tive que implementar mais alguns métodos de conversão de tipos que não encontrei no fonte original. Utilizei eles para ler do SPED carregado e inserir em um banco de dados que tenho. Segue em anexo. Peço que analisem e façam as alterações necessárias para subir no SVN.

ACBrEPCBlocos.pas

Olá Rodrigo,

   Subi ao SVN. No trunk2 também adicionei o componente no pacote.

   Obrigado. Agora vou verificar a outra parte da sua sugestão. :)

 

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

 

Assim sendo, para cada arquivo importado eu preciso, antes de tudo, garantir que o ACBrPisCofins esteja vazio. Por isso a necessidade de tornar o método público.

 

Não sei consegui ser claro, espero que sim.

 

Rodrigo.

Tornei o método público. Eu acho que poderíamos adicionar uma propriedade no componente de importação tipo "LimparRegistrosDestino", com valor padrão "false" que executaria a limpeza no componente automaticamente. Mas como isso não é necessidade para o caso, deixei isso pendente.

Favor testar e reportar qualquer erro.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 3 semanas depois ...
Postado

Eu estou usando o componente para unificar dois sped de filiais diferentes, tem gente que usa para alimentar tabelas (para softwares de contabilidade é bem útil). No caso de software de contabilidade portar este componente para sped fiscal também seria interessante. Não estou participando muito da conversa, porque estamos produzindo PAF-ECF então estou mais distante. 

  • Curtir 1

 www.datalider.com.br - [email protected] - Macgayver Armini

 

  • 1 mês depois ...
  • 3 semanas depois ...
  • Consultores
Postado

Desculpe a demora em responder, estava ausente... No entanto, agora estou apenas trabalhando com os códigos fontes do trunk2.

Sabe dizer se suas correções são compatíveis com ele?

Fiz uma correção na leitura do registro P200 que não estava lendo um último campo do registro.

Veja o anexo.

ACBrEPCBloco_P_Importar.pas

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 3350 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.

The popup will be closed in 10 segundos...