Ir para conteúdo
  • Cadastre-se

dev botao

Salvar XML em Diretório Diário


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

Recommended Posts

  • Moderadores

Bom Dia,

  Estou com a necessidade de separar o XML gerados pelo ACBrNFe e ACBrSAT em diretórios Diários, atualmente o ACBr realiza a separação apenas Ano\Mês mas preciso que seja Ano\Mês\Dia pois no caso da NFCe chego a ter mais de 500 notas no mesmo dia para um único caixa, existe alguma precisão para que isso seja implementado?

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores
19 minutos atrás, Juliomar Marchetti disse:

A princípio ninguém precisou mas se quer sugerir basta implementar e anexar o código.

OK, irei realizar a implementação e anexar os fontes alterados.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa Tarde, segue units com as alterações para possibilitar salvar os XML separados por dia,

ACBrDFeConfiguracoes.pas

ACBrSATClass.pas

  • Curtir 1

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Eu que agradeço a oportunidade de poder contribuir com o Projeto, atualmente é a forma a qual tenho possibilidade de contribuir para o crescimento do projeto.

  • Curtir 3

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Moderadores

Boa Tarde,

Realizei uma correção na montagem do Path referente a separação em AnoMes e Dia, pois era realizado um Pos antes da inclusão da string no Path isso pode gerar problemas principalmente na separação diária pois pode existir um CNPJ com parte do texto como "201703" ou similar assim geraria problemas na separação por Mês.

A correção aplicada foi a retirada da comparação assim sempre será incluída a "Parte" ao final do Path.

ACBrDFeConfiguracoes.pas

ACBrSATClass.pas

  • Curtir 1

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • Moderadores

Boa Tarde,

Realizei algumas melhorias na separação dos arquivos agrupando os arquivos pelo Ano \ Mes \ Dia para documentos DFe e CFe.

Inclusão da separação pelo Modelo\Prefixo do SAT no caso como CFe assim deixando simular a separação da DFe.

ACBrSAT.pas

ACBrSATClass.pas

ACBrDFeConfiguracoes.pas

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Pedro,

As modificações parecem corretas, com exceção do caso que caso o usuário queira manter o comportamento antigo (por motivo de retrocompatibilidade), o código sugerido irá gerar um Path diferente do antigo...

Penso que se ele deixar a "SepararPorAno" desligada, mas a "SepararPorMes" ligada, o comportamento deveria ser como é atualmente...

O que você acha ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Apliquei alguns ajustes, para permitir a retro compatibilidade...  Se a propriedade "SepararPorAno" for False, o funcionamento permanecerá idêntico a versão anterior...

Já no SVN

Citar

-- ACBrDFeConfiguracoes --
[*] Classe "TArquivosConf", adicionada a propriedade: "SepararPorAno".
[*] Método "GetPath", modificado para suportar a propriedades "SepararPorAno"

-- ACBrSAT --
[+] Adicionado o método "GetNomeModeloCFe"

-- ACBrSATClass --
[*] Classe "TACBrSATConfigArquivos", adicionada as propriedades: "SepararPorModelo" e
    "SepararPorAno".
[*] Método "CalcPath", modificado para suportar as propriedades "SepararPorModelo" e
    "SepararPorAno"

 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Ola!

Gostaria de sugerir outra melhoria na questão do path.

Comecei um projeto de migração para o ACBr (ACBrCTe), sempre salvamos o path desta forma:

caminho\CNPJ\ANOMES\TipoDoc\chave.xml

exemplo:

NF-e

c:\Arquivos XML\99999999999999\201706\NFe\411704.......XML

para Ct-e

c:\Arquivos XML\99999999999999\201706\CTe\411704.......XML

oque facilita na hora de enviar os documentos emitidos para o contador, seria apenas pegar a pasta toda do ano/mes e enviar, não tendo de ficar indo de pasta em pasta "caçando" os documentos.

Hoje configurando desta forma:

  ACBrCTe.Configuracoes.Arquivos.PathSalvar       := Conexao.LerParametro('NFE_CAMINHO_XML');
  ACBrCTe.Configuracoes.Arquivos.SepararPorCNPJ   := True;
  ACBrCTe.Configuracoes.Arquivos.SepararPorMes    := True;
  ACBrCTe.Configuracoes.Arquivos.SepararPorModelo := True;
  ACBrCTe.Configuracoes.Arquivos.Salvar           := True;

é salvo com a seguinte composição:

c:\Arquivos XML\99999999999999\CTe\201706\4117......xml

 

Acho que seria interessante ter uma opção para separar por ano/mes antes de separar pelo documento.

 

 

 

 

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Uma Sugestão seria tornar esse questão um pouco mais dinamica onde eu passaria uma lista com a Ordem da montagem dos Paths, sei que seria bem complicado se fazer isso, mas deixaria muito dinamico essa questão, podendo ter ordem a qual já temos hoje.

Assim poderia se unit em uma classe e utilizar tanto para DFe/ SAT/ BlocoX dentre outros.

 

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Entendo... poderia ser algo configurável por Strings pré-definidas... Mas sempre que mudamos algo nessas rotinas, é um "parto"... muitas aplicações não salvam o XML no BD, e ao invés disso, buscam o mesmo no disco.. Por isso, toda e qualquer modificação nessas rotinas deve ter retrocompatibilidade...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@Daniel Simoes nesse caso teria uma ordenação padrão o qual seria como está hoje, assim possibilitando quem quiser possa modificar a mesma como desejado.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

Feito.

Anexo alterações para validar.

pcnConversao

Adicionei um novo tipo TSepararPorModelo = (spmAntesAnoMes, spmDepoisAnoMes);

ACBrDFeConfiguracoes:

Adicionei uma nova property "SepararPorModeloOrdem", o valor default é spmAntesAnoMes, para manter a compatibilidade com o modo anterior.

Vejam e digam o que acham, testei aqui com CT-e e funcionou

 

pcnConversao.pas

ACBrDFeConfiguracoes.pas

-=Ma®©oS=-

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@-=Ma®©oS=- a Ideia era criar algo que possa abranger todas as quebras possíveis, assim poderia ordenar na como quiser, seria algo +/- assim que pensei.

Type

TOrdPath = (opCNPJ, opModelo, opData) aqui incluiria todas as opções de quebra

Criaria uma property do tipo por Exemplo: OrdenacaoPath: Array of TOrdPath;

e na função CalculaPath faria o tratamento de acordo com a ordem aplicada nesse Array.

 

Sei que Hoje temos uma função de calculo para os documentos de DFe outra para SAT e outra para o processo do BlocoX a ideia também seria juntar todos em uma unica classe, tornando a manutenção mais centralizada.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

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