Presente de Natal de Akretion para a comunidade Odoo

A Akretion está feliz de oferecer para você um presente de Natal! Este presente de Natal é para todos os usuários do módulo de contabilidade do Odoo versão 8 (e em breve para os usuários do Odoo versão 9). Se você for um deles, esperamos que você use e aprecie o nosso presente!

Antes de entrar nos detalhes, deixe-me contar a história desse presente. Esta história começou durante o último fim de semana de setembro de 2015. O ano fiscal da Akretion na França termina o dia 30 de junho e, na França, temos que enviar à administração fiscal as demonstrações financeiras e a declaração do imposto de renda 3 meses após o final do exercício do ano fiscal. Então o prazo para a Akretion France era o dia 30 de setembro de 2015.

É claro que, para gerar as demonstrações financeiras, precisamos ter todas as nossas faturas de fornecedores no Odoo! Mas, como estamos muito ocupados com o trabalho para os nossos clientes e as nossas contribuições para a Odoo Community Association (OCA), estamos muitas vezes atrasados na codificação das “pequenas” faturas (conta de telefone, fatura de Internet, passagem de trem,… ) e o último ano fiscal não foi uma exceção. Tivemos um final de semana para registrar a acumulação de faturas de fornecedores e finalizar as demonstrações financeiras…

Enquanto o Sébastien Beau estava olhando para a pilha de passagens de trem que ele tinha que registrar como notas fiscais de fornecedor, ele decidiu tentar desenvolver um script para fazer isso por ele.

Na maioria dos fornecedores temos acesso ao PDF da fatura na conta do cliente online, mas não há webservice nem API para recuperar as faturas automaticamente. A OVH, provedor líder de hospedagem, fornece um serviço web para acessar às faturas com informações muito detalhadas e a Akretion desenvolveu um módulo para o Odoo 8 chamado ovh_supplier_invoice para automatizar o download de faturas da OVH e sua criação como faturas de fornecedores no Odoo. Mas, para todos os outros fornecedores da Akretion, não existe tal coisa. Temos apenas o arquivo PDF da fatura na nossa caixa de e-mail ou na extranet do fornecedor, e nada mais!

O Sébastien tinha todos os arquivos PDF das suas passagens de trem na sua caixa de e-mail e não queria gastar uma hora para registrá-los manualmente um a um no Odoo. Então ele começou a explorar as possibilidades de extrair o texto do arquivo PDF com uma biblioteca Python chamada pdfminer e criar a fatura do fornecedor no Odoo. Depois de várias horas de trabalho, ele saiu com um script Python que consegue extrair todos os dados necessários para registrar a passagem de trem como fatura (data, valor, número da passagem, descrição da viagem) para todos os arquivos PDF que ele tinha na sua caixa de e-mail. Então pensamos que, como estava funcionando para as passagens de trem, seria ótimo tê-lo também para contas de telefone, contas de Internet, contas de hospedagem, contas de aluguel do escritório e todas as faturas recorrentes que recebemos sem ter criado um PO (Purchase Order) no Odoo. Foi assim que tivemos a ideia de desenvolver um módulo dedicado à importação de faturas em PDF.

Isso nos fez lembrar da introdução do EDI no OpenERP 6.1. Naquela época, o EDI foi apresentado como uma forma de automatizar a transmissão de faturas entre um fornecedor e um cliente. Você já usou esse módulo algumas vezes ? Provavelmente nunca. Uma das razões é que tanto o cliente quanto o fornecedor teriam que abrir o Odoo na Internet ou configurar um link VPN entre eles. Outra razão é que o formato EDI proposto por Odoo foi um formato diferente dos que já existem (e já existem muitos no mundo do EDI).

Nossos amigos alemães estão adotando uma outra proposta para a transmissão de faturas; a abordagem deles é muito simples e pragmática. Eles publicaram um padrão chamado ZUGFeRD que especifica que uma fatura em PDF deve conter um arquivo XML incorporado que forneça uma representação estruturada da fatura. Para o arquivo XML, eles decidiram usar o formato Cross Industry Invoice (CII) publicado por uma agência das Nações Unidas chamada UN/CEFACT. Lembrando que existem 2 padrões principais para a descrição de faturas em XML : o formato CII do UN / CEFACT e a Universal Business Language (UBL) padronizada pelo OASIS. Esta abordagem é muito pragmática porque :

  • os usuários não precisam mudar de hábitos : eles podem continuar em mandar as faturas por e-mail para seus clientes com o arquivo PDF anexado,

  • o mesmo documento PDF contém as informações legíveis pelo computador no arquivo XML incorporado e as informações legíveis por humanos exibidas pelo leitor de PDF comum do usuário,

  • A mesma fatura em PDF pode ser usada tanto por empresas que têm um software ERP moderno como o Odoo, que pode tirar proveito do arquivo XML incorporado e por empresas que possuem um antigo software ERP no qual os usuários registram manualmente as suas faturas de fornecedor em seu leitor de PDF favorito.

Para as boas e velhas faturas em PDF que não possuem nenhum arquivo XML incorporado, encontramos uma biblioteca Python existente chamada invoice2data que já fazia o que precisávamos : extrair o texto de um arquivo PDF, tentar combiná-lo com um modelo existente e analisá-lo através do regexp fornecido pelo modelo de forma a recuperar as informações necessárias para criar uma fatura de fornecedor simples em um software de contabilidade.

Se as faturas dos seus fornecedores ainda não são legíveis por essa biblioteca, você deve dedicar alguns minutos para adicionar um modelo das faturas do seu fornecedor e enviar uma pull request no github. A Akretion já contribuiu nessa biblioteca para incorporar faturas de operadoras francesas de celulares (SFR, Bouygues Telecom, Free mobile, Sosh) e várias operadoras de Internet francesas (SFR, Free, Orange) nesta pull request.

Com todas essas descobertas, começamos a desenvolver um módulo Odoo que seria capaz de lidar com as faturas PDF modernas (com arquivo XML incorporado) e as boas e velhas faturas em PDF sem dados estruturados incorporados.

Nosso módulo, chamado account_invoice_import, funciona da seguinte maneira :

Odoo PDF import wizard

  1. o usuário abre um pop-up e carrega a fatura em PDF, conforme mostrado na captura de tela acima.

  2. se o arquivo PDF tiver um arquivo XML incorporado no formato ZUGFeRD / CII, o Odoo lerá o arquivo XML.

  3. caso contrário, Odoo usará a biblioteca Python invoice2data para tentar interpretar o texto do PDF.

  4. Odoo criará uma nova fatura de fornecedor em rascunho e anexará o PDF a ela.

Este módulo está disponível neste pull request no projeto account-invoicing da OCA para o Odoo versão 8 sob a licença AGPL. Por favor, reserve um tempo para ler as instruções detalhadas antes de fazer a instalação, configurar e usar o módulo.

Usuários franceses também podem precisar do módulo l10n_fr_invoice_import disponível neste pull request na localização francesa da OCA; este módulo permite encontrar o fornecedor da fatura em Odoo pelo número SIREN e não apenas pelo número TIN ou VAT.

Quando você importar uma fatura em PDF no Odoo e Odoo já tiver um rascunho de fatura para o mesmo fornecedor, ele pergunta se você deseja criar uma nova fatura ou atualizar o rascunho da fatura existente (que pode ter sido gerado por um PO (Purchase Order) ou por uma recepção) ), como você pode ver na imagem abaixo:

Odoo invoice update

A equipe da Akretion deseja um feliz Natal e espera que você goste do nosso presente de Natal! Nosso sonho é que este novo módulo Odoo transforme o seu trabalho cansativo de registrar manualmente as faturas recorrentes de fornecedores em uma tarefa rápida e agradável! Se for o caso, compartilhe a sua experiência conosco e com a comunidade Odoo.

Sobre o autor

Founder
Alexis de Lattre
Founder - France
Specialist in Odoo and free software
Alexis de Lattre is a co-founder of the French company Anevia, where he held the positions of Managing Director and Financial Director of Production and Logistics and Director of Computer Services. Anevia is a company with 40 employees and specializes in the development and sale of video server...

Esse site usa cookies para melhorar a sua experiência de navegação