odoo-brazil / odoo-brazil-eletronic-documents

Odoo SPED: NF-e, NFS-E, NFC-E, CT-E, ...
Other
59 stars 64 forks source link

Adicionado função para definir o local de armazenamento dos documento fiscais #96

Closed renatonlima closed 8 years ago

renatonlima commented 8 years ago

Olá pessoal,

Este PR tem o objetivo de eliminarmos o campo nfe_root_folder onde é definido a pasta de armazenamento da NFe, e usar o parâmetro do arquivo de configuração data_dir, que é utilizado também para armazenar os arquivos em anexo do módulo document, desta forma facilita a organização e a manutenção já que o conteúdo (anexos e arquivos do pysped) ficaria em uma unica pasta o que facilitaria no caso de backups, eu implementei a seguinte organização das pastas:

FILESTORE nfe db 3006689800006 nfce db 3006689800006

Ficando dentro do filestore: DOCUMENTO_FISCAL/BANCO_DE_DADOS/CNPJ

Eu criei também uma função onde é parametrizável também o tipo de documento fiscal (nfe, nfce, cte e etc) para ser usado futuramente.

O que acham @danimaribeiro @mileo

coveralls commented 8 years ago

Coverage Status

Coverage increased (+0.3%) to 26.12% when pulling 9b4ef42ad9fbb2b378870275b1897de5be1c2305 on akretion:feature/8.0-filestore-data_dir into e0b5cf3ecfbdf09a971e9fc02d5f5b0edfaf7317 on odoo-brazil:8.0.

danimaribeiro commented 8 years ago

Chegou a testar o backup? Vendo superficialmente o código me parece que o db deveria vir antes do nfe e nfce.

filestore = openerp.tools.config.filestore(db_name)

renatonlima commented 8 years ago

@danimaribeiro,

E que a ideia é usar a pasta do filesystem mas sem usar a estrutura das pastas do módulo document, por isso que eu coloquei o documento fiscal primeiro, pois se colocar o banco de dados antes vai misturar as pastas do document com as pastas do pysped.

renatonlima commented 8 years ago

@danimaribeiro

A pasta filestore esta dentro da pasta data dir, então eu coloquei as pastas dos documentos fiscais do lado da pasta do filestore, segue uma imagem da arvore de diretórios

data-dir

coveralls commented 8 years ago

Coverage Status

Coverage increased (+0.4%) to 26.201% when pulling f6bd8732b512c6bdfd8fdacef0daa67ac63b6680 on akretion:feature/8.0-filestore-data_dir into e0b5cf3ecfbdf09a971e9fc02d5f5b0edfaf7317 on odoo-brazil:8.0.

rvalyi commented 8 years ago

@renatonlima @danimaribeiro eu acho valido essa estrutura mas acho que a outra seria valida tb: tudo no db fica mais facil fazer o backup mas nao seria homogeno dentro da pasta db: pois la teria documentos e nfe direito. Ainda pensando mas tou achando ok da forma como o @renatonlima fez. Do restante sou eu que suggerei de usar o data_dir como raiz para minimizar a configuraçao.

danimaribeiro commented 8 years ago

Porém o backup do Odoo pega apenas a filestore, a pasta NFe vai ficar de fora da mesma maneira.

Talvez possamos sobrescrever e adicionar a pasta NFe ao zip: https://github.com/odoo/odoo/blob/8.0/openerp/service/db.py#L171

Fizemos assim, já que você está removendo da localização a pasta, criamos uma issue para modificar o backup e adicionar a pasta NFe ao mesmo e aceitamos esse PR.

renatonlima commented 8 years ago

@danimaribeiro

Eu diria que também seria necessário alterar os métodos:

restore_db https://github.com/odoo/odoo/blob/8.0/openerp/service/db.py#L222 exp_rename https://github.com/odoo/odoo/blob/8.0/openerp/service/db.py#L281 exp_drop? https://github.com/odoo/odoo/blob/8.0/openerp/service/db.py#L126 exp_duplicate_database? https://github.com/odoo/odoo/blob/8.0/openerp/service/db.py#L94

Mas eu vejo que independente de alterar este métodos, este PR já será muito útil para proteger melhor o destino dos arquivos, porque hoje a pasta nfe_root_folder é definida da empresa e pode ser facilmente definida uma pasta onde não é feito backup e utilizando o parâmetro data-dir garantimos deixar os arquivos da NFe em um local bem mais seguro.

danimaribeiro commented 8 years ago

Eu acho que acontece o contrário, pois quem não tem conhecimento vai pensar que o backup do Odoo está fazendo backup da nfe, com a pasta pelo menos ele tem conhecimento de onde fica pois foi ele que configurou.

Eu preferia deixar dentro do filestore, mas acho que podemos colocar explicito na descrição do módulo que ele deve se responsabilizar pelo backup do xml e indicar o caminho do mesmo.

renatonlima commented 8 years ago

A razão pela qual eu não coloquei dento da pasta do filestore é de ter algum problema de colisão com as pastas criadas pelo módulo document, porem ficar fora da pasta filestore é ruim para fazer o backup utilizando as funções de backup do Odoo (teríamos que sobreescrever isso)

Eu vou dar uma olhada no módulo document e ver como é criada as pastas por eles dentro do filestore, caso não tenha problemas eu faço a mudança para a pasta filestore.

coveralls commented 8 years ago

Coverage Status

Coverage increased (+0.4%) to 26.201% when pulling cf89db3e8138bef73e048282fd1c8e7e791b8e64 on akretion:feature/8.0-filestore-data_dir into e0b5cf3ecfbdf09a971e9fc02d5f5b0edfaf7317 on odoo-brazil:8.0.

coveralls commented 8 years ago

Coverage Status

Coverage increased (+0.4%) to 26.201% when pulling 9ce8187541bd2e4a7dc11827a68ebea6f8dfcfa2 on akretion:feature/8.0-filestore-data_dir into e0b5cf3ecfbdf09a971e9fc02d5f5b0edfaf7317 on odoo-brazil:8.0.

coveralls commented 8 years ago

Coverage Status

Coverage increased (+0.4%) to 26.201% when pulling 2ecaad20c0d8d6535b4abdbd1a0889a0c60360f3 on akretion:feature/8.0-filestore-data_dir into e0b5cf3ecfbdf09a971e9fc02d5f5b0edfaf7317 on odoo-brazil:8.0.

renatonlima commented 8 years ago

Eu fiz a mudança para utilizar a pasta filestore, desta forma não é necessário sobre escrever as rotinas de backup e restauração do odoo

@danimaribeiro @mileo

danimaribeiro commented 8 years ago

:+1:

ViniciusNery commented 8 years ago

Ola pessoal. Como fazer para baixar a versão 8.0 anterior ao pedido de modificação do Renatolima ? Estou em plena instalação e parado pois esta versão 8.0 parcialmente modificada está dando erro na geração do xml pois ainda aponta para posta que foi removida no codigo proposto.

/\ ValueError: "'res.company' object has no attribute 'nfe_root_folder'" while evaluating u'nfe_export() **/

Visto que a modificação é "apenas" para facilitar o backup, quero seguir sem esperar esta versão.

Obrigado pela colaboração de todos.

@renatonlima

renatonlima commented 8 years ago

@ViniciusNery

Qual branch da localização você esta usando? Deveria usar a branch 8.0 da OCA pois na branch da OCA ainda tem o campo especifico https://github.com/OCA/l10n-brazil/blob/8.0/l10n_br_account_product/models/res_company.py#L49 exite um PR da OCA https://github.com/OCA/l10n-brazil/pull/318 para remover este campo mais ainda não foi aceito porque esta esperando o merge deste PR

ViniciusNery commented 8 years ago

Bom dia @renatonlima,

Usando branch 8.0, repositório odoo-brazil e tentando também pelo repositório OCA.

Pelo wiki do GitHub (página abaixo), fizemos o download como orientado. ( Pelo wiki do OCA, nos orienta o download do repositorio odoo-brazil)

Endereço: https://github.com/OCA/l10n-brazil/wiki/Instala%C3%A7%C3%A3o-Odoo-v8-em-Ubuntu-Server-14.04-LTS ... Faça o download do branch 8.0 da localização que está no github: git clone https://github.com/odoo-brazil/l10n-brazil.git --branch 8.0 --depth 1 .....

tentamos o download pelo repositório da OCA também. Este, apesar de estar com a res_company.py original, deu problemas de dependências quando instalamos os modulos da localização brasil.

Resumindo: Abrindo os arquivos confirmamos tudo o que o Sr falou. Mas temos um paradoxo ("repositórios "odoo-brazil" x "OCA")

Teria um outro local para download de uma versão funcionando e estável?

Como proceder?

Obrigado pela atenção.

@renatonlima

Vinicius

ViniciusNery commented 8 years ago

Bom dia.

Vi que alteraram os links do Wiki para o repositório do OCA ontem. Isso não resolve, pois essa versão desse repositório está com vários problemas na localização Brasil. Poderia indicar um repositório onde temos uma versão estável, com localização brasil rodando ?

Obrigado de novo !

@renatonlima

danimaribeiro commented 8 years ago

Utilize a versão da OCA e se tiver erro reporte os mesmos lá. Módulos relacionados a NFe, pysped, geraldo, pyxmlsec utilize os do odoo-brazil. Em caso de erros abre uma issue com o log de erro e os passos para reproduzir.

mileo commented 8 years ago

@ViniciusNery Atualizei o manual com os links corretos de uma olhada.

rvalyi commented 8 years ago

:+1: LGTM. Thanks for this @renatonlima!

leorochael commented 8 years ago

:thumbsup: What else is needed to merge this? Having the disk layout of the server running Odoo be part of the data in the database, or showing up (and being editable) in the backend interface is a big no-no.

danimaribeiro commented 8 years ago

geralmente se faz o merge depois de 3 ok

leorochael commented 8 years ago

@danimaribeiro o meu acima conta? :smirk:

renatonlima commented 8 years ago

Bem pessoal, esta semana eu vi que o PDF do DANFE em anexo não esta abrindo, eu estou vendo se tem algo relacionado a este PR.

danimaribeiro commented 8 years ago

@leorochael Conta sim. Vamos esperar o Renato verificar o problema que ele reportou e fizemos o merge.

renatonlima commented 8 years ago

Pessoal, eu dei uma olhada do problema do PDF e esta salvando o arquivo no local correto, mas o problema é que esta sendo criado um arquivo vazio, eu vi este código com o comentário: https://github.com/odoo-brazil/odoo-brazil-eletronic-documents/blob/8.0/nfe/sped/nfe/processing/processor.py#L34, acho que pode ser isso o problema, mas pelo que eu vi não esta relacionado com este PR. então pode ser feito o merge

cc @danimaribeiro @mileo