Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][MIG] account_invoice_import #753

Draft
wants to merge 151 commits into
base: 16.0
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
af633a7
Rename module from account_invoice_pdf_import to account_invoice_import
alexis-via Dec 30, 2015
477e19b
Update FR translation
alexis-via Jan 7, 2016
fa721ef
Add instructions to use my PPA for poppler-utils on Ubuntu 14.04 LTS …
alexis-via Jan 9, 2016
0d81902
Add support for direct import of XML files (YAML test provided)
alexis-via Jan 19, 2016
ddc3217
Sometimes, it's easier to extract the total tax amount instead of the…
Jan 20, 2016
e408689
Add an explaination about date parsing in invoice2data
alexis-via Jan 22, 2016
89ac9ec
Add optional support for start/end dates
Jan 22, 2016
d485874
Adapt to latest changes in invoice2data
alexis-via Jan 27, 2016
9ef43c2
Only change name_get of invoice for our use-case, not everywhere
alexis-via Jan 28, 2016
481b388
Update README with latest changes in invoice2data lib
alexis-via Jan 28, 2016
9c857c4
Add support for partner_email to match partners
Feb 2, 2016
903b985
Update installation procedure.
alexis-via Feb 11, 2016
211d5e1
Add modules base_zugferd, account_invoice_import_zugferd and account_…
alexis-via Feb 22, 2016
fff492b
Log raw result of invoice2data (before we make modifications)
alexis-via Mar 2, 2016
3f1c599
Fix error in README spotted by Roel Adriaans
alexis-via Mar 15, 2016
05f0775
Add module account_invoice_import_ubl
alexis-via Mar 15, 2016
c798ce6
Use base_vat_sanitized
alexis-via May 13, 2016
0255077
Add support for import of e-fff invoices (Belgian standard)
alexis-via May 21, 2016
14323dc
Add support for local invoice template for invoice2data, see README
alexis-via May 25, 2016
05a566a
Small usability improvement
alexis-via Jun 21, 2016
0e27cea
Checks that the directory really exists
alexis-via Jul 3, 2016
9521b85
Extract regular PDF invoice import from account_invoice_import to a d…
alexis-via Aug 5, 2016
274744f
Adapt code to plug the module 'ovh_supplier_invoice'
alexis-via Aug 12, 2016
4589333
Fix product matching
alexis-via Aug 12, 2016
c699024
FIX PEP8 and account_invoice_import_invoice2data unittests
alexis-via Aug 15, 2016
52bf5cb
Add module base_business_document_import and start to move some code …
alexis-via Aug 17, 2016
f2cc78c
Better/cleaner pivot invoice dict format (no more IDs in the pivot in…
alexis-via Aug 18, 2016
53309e5
Add module base_ubl (common methods to generate and parse UBL files)
alexis-via Aug 21, 2016
7f1df7e
Add module base_phone_business_document_import
alexis-via Aug 24, 2016
4a8fc0c
Add a unittest on _match_uom
alexis-via Aug 25, 2016
b8f4a43
Add module base_business_document_import_stock
alexis-via Aug 26, 2016
dc75774
Update invoice lines on "Update Existing" invoice import
alexis-via Aug 27, 2016
a98e985
Fix crash
alexis-via Aug 27, 2016
2050acf
Add multi-company ir.rule on account.invoice.import.config
alexis-via Sep 14, 2016
d82ec2b
FIX Don't use _inherit = ['business.document.import']
alexis-via Sep 28, 2016
67d053f
Fix method call
alexis-via Oct 2, 2016
54d49fe
[IMP] handle the case where the xml file is generated with mime type
adrienpeiffer Oct 4, 2016
7f9ce5c
Add support for extraction + matching on website
alexis-via Oct 4, 2016
771b43e
FIX two stupid bugs
alexis-via Oct 4, 2016
063c7c7
8.0 Add support for partner bank matching on invoice update (#6)
Oct 18, 2016
2537f13
8.0 Use try/except when importing external libs (#8)
Oct 19, 2016
8714f1d
[MIG] Make modules uninstallable
hbrunn Nov 12, 2016
fb37738
OCA Transbot updated translations from Transifex
oca-transbot Nov 29, 2016
0055d0d
[ADD] migration of account_invoice_import_invoice2data and dependencies
hbrunn Dec 29, 2016
d4431cf
Add support for 'origin' field in invoice import
alexis-via Jan 6, 2017
8883dda
[FIX] product.product#ean13 was renamed to barcode
hbrunn Jan 9, 2017
6630875
[FIX] tests
hbrunn Jan 9, 2017
c3c2dce
Port base_business_document_import* to v10
alexis-via Feb 15, 2017
12db46f
Allow importing invoice without invoice_import_config on partner (use…
alexis-via Mar 27, 2017
63671b2
Several fixes in account_invoice_import
alexis-via Apr 11, 2017
947fa81
Improve XML for Factur-X
alexis-via Jul 28, 2017
190f9a7
Add first support for the import of Factur-X invoices
alexis-via Aug 10, 2017
1310ee6
Add support for allowance and charges on Factur-X invoice import
alexis-via Aug 11, 2017
e0e3e1b
Fix bug #16 : add support for adjustment lines (per line and global)
alexis-via Aug 13, 2017
2c4fb4a
account_invoice_factur-x: now generate refunds with document type = 3…
alexis-via Aug 15, 2017
080c67e
Pre-process parsed_inv even when calling directly _create_invoice()
alexis-via Aug 15, 2017
6e0e571
Add support for importing customer invoices (bug #24)
alexis-via Aug 15, 2017
5b4eeb1
Improve + modularize generation of UBL (up-port from v8 PR)
alexis-via Aug 23, 2017
736d66f
Finalise the use of the FacturX lib
alexis-via Sep 6, 2017
aa6b47e
account_invoice_import: workaround a framework bug
alexis-via Oct 4, 2017
7182c78
account_invoice_import: Add partner_type to _match_partner method for…
alexis-via Oct 14, 2017
f83e0fa
OCA Transbot updated translations from Transifex
oca-transbot Feb 10, 2018
2d503ef
[10.0] Update to work with latest version of invoice2data (#51)
Mar 11, 2018
3c166cb
OCA Transbot updated translations from Transifex
oca-transbot Mar 31, 2018
b919dfd
[10.0] Several fixes + import invoices with VAT in a company that can…
Jul 31, 2018
46bfaae
[UPD] Update account_invoice_import.pot
oca-travis Jul 31, 2018
ba510ec
Fix import of sale order with price_source='pricelist' when pricelist…
alexis-via Aug 14, 2018
b6ff39d
Partner <-> Invoice import config : switch M2O <-> O2M
alexis-via Jan 18, 2018
28c5bb9
Add migration script
alexis-via Jan 19, 2018
273050b
Add support for multiple invoice import configs in invoice import wizard
alexis-via Aug 14, 2018
ef96980
Add O2M field from import config to download config
alexis-via Aug 14, 2018
394a542
Finalize the development account_invoice_download
alexis-via Aug 18, 2018
570d90f
Add support for additional module-specific weboob config parameters
alexis-via Aug 19, 2018
7b1b6de
account_invoice_import: add a mail gateway
alexis-via Aug 22, 2018
136a78f
Add ability to run cron invoice download from admin for all companies…
alexis-via Aug 23, 2018
9d1ddaf
Add multi-company support in the invoice import mail gateway
alexis-via Aug 24, 2018
eaeae51
Check the VAT number of the destination partner, to make sure the bus…
alexis-via Aug 25, 2018
782b854
[UPD] Update account_invoice_import.pot
oca-travis Sep 16, 2018
9964d52
[FIX] include some of the fixes proposed in #64
Aug 15, 2018
61e1029
[11.0][MIG] account_invoice_import
Oct 2, 2018
09d8aea
[FIX] clean rebase from V10 that where wrong ...
Oct 2, 2018
d7fff67
[FIX] utf8 comment in python3
Oct 2, 2018
88df106
Fix base64 encode/decode + remove supplier_invoice_number + code review
astirpe Oct 12, 2018
61b5c0a
[UPD] Update account_invoice_import.pot
oca-travis Oct 17, 2018
d3e3202
Update translation files
oca-transbot Dec 29, 2018
876ef24
[ADD] icon.png
OCA-git-bot Apr 3, 2019
35423f1
[UPD] Update account_invoice_import.pot
oca-travis Apr 3, 2019
e1e57f0
Update translation files
oca-transbot May 20, 2019
18e6e71
[UPD] README.rst
OCA-git-bot Jul 29, 2019
ff410e8
[12.0][MIG] account_invoice_import
astirpe Jan 3, 2020
21a56e3
[UPD] README.rst
OCA-git-bot Jan 22, 2020
883f605
[UPD] Update account_invoice_import.pot
oca-travis Jan 22, 2020
13363a2
Update translation files
oca-transbot Feb 10, 2020
1e9ff83
account_invoice_download: start OCA import bill wizard when using the…
alexis-via Feb 13, 2020
7d45e43
Added translation using Weblate (German)
tv-openbig Mar 16, 2020
fa41b35
Translated using Weblate (German)
tv-openbig Mar 16, 2020
4ea7c52
[MIG] account_invoice_import_facturx to v12
alexis-via Apr 14, 2020
8964ebb
[UPD] Update account_invoice_import.pot
oca-travis Apr 29, 2020
ad2bf68
Update translation files
oca-transbot Apr 29, 2020
15ac653
Translated using Weblate (German)
marylla May 27, 2020
1ddb7c5
[IMP] account_invoice_import: black, isort, prettier
yvaucher Jun 23, 2020
4f18601
[MIG] account_invoice_import: Migration to 13.0
yvaucher Jun 23, 2020
e3f06ae
[IMP] account_invoice_import: parsed invoice hook
yvaucher Jun 23, 2020
dae0408
[IMP] account_invoice_import: Missing partner hook
yvaucher Jun 24, 2020
d64b1ce
Add a quick import invoice button
yvaucher Jun 25, 2020
f91be9a
Restore dashboard button overwrite
yvaucher Jun 27, 2020
1f6d81b
[RM] invoice line doesn't exist on V13
vrenaville Jan 21, 2021
73d3410
[FIX] account_invoice_import: fix headers
NL66278 Dec 2, 2020
ef55626
[FIX] account_invoice_import: Reduce method complexity.
NL66278 Dec 2, 2020
e313a17
[FIX] account_invoice_import. Do not shadow config module with variable.
NL66278 Dec 3, 2020
6911c92
[MIG] account_invoice_import to v14
alexis-via May 25, 2021
4ac770f
[FIX] account_invoice_import: mail gateway exception
StefanRijnhart May 26, 2021
c982120
account_invoice_import: Add USAGE.rst
alexis-via May 31, 2021
9f8c435
[UPD] Update account_invoice_import.pot
oca-travis Jun 2, 2021
9034e2c
[UPD] README.rst
OCA-git-bot Jun 2, 2021
d36e499
account_invoice_import: fix analytic account field name
alexis-via Jun 7, 2021
96cce56
account_invoice_import: FIX import config creation from partner
alexis-via Jun 7, 2021
e7874ef
invoice_import: add button box div in account.invoice.import.config f…
alexis-via Jun 9, 2021
b4f032b
account_invoice_import 14.0.1.1.0
OCA-git-bot Jun 11, 2021
9b0a934
Translated using Weblate (French)
Yvesldff Jun 17, 2021
34ab096
Added translation using Weblate (Dutch)
bosd Jan 27, 2022
e29ca2e
Translated using Weblate (Dutch)
bosd Jan 27, 2022
f4db259
[FIX] Fix access right issues when using actions
sebalix Jan 31, 2022
ec3c076
account_invoice_import 14.0.1.1.1
OCA-git-bot Jan 31, 2022
2a445f8
[FIX] access to form view of partners for users who are not accountants
alexis-via Feb 13, 2022
5206623
account_invoice_import 14.0.2.0.0
OCA-git-bot Feb 14, 2022
47243a8
Translated using Weblate (Dutch)
bosd May 15, 2022
bc2f8bc
account_invoice_import: tests use setUpClass
simahawk May 26, 2022
327b3c5
account_invoice_import: fix error logging
simahawk May 26, 2022
3d8b977
account_invoice_import: more tests for mail gateway
simahawk May 26, 2022
c3cfc40
[UPD] README.rst
OCA-git-bot May 27, 2022
73c6dd7
account_invoice_import 14.0.2.0.1
OCA-git-bot May 27, 2022
7676287
account_invoice_import: Set a specific journal
alexis-via May 20, 2022
37ff485
[FIX] account_invoice_import: force tax amount on supplier refunds
alexis-via Jun 2, 2022
7eac57e
[UPD] Update account_invoice_import.pot
Jul 13, 2022
e7e8e05
[UPD] README.rst
OCA-git-bot Jul 13, 2022
d0f63d8
account_invoice_import 14.0.2.1.0
OCA-git-bot Jul 13, 2022
31e31e5
account_invoice_import: improve handling of simple PDF invoices
alexis-via Jul 14, 2022
875529c
Update translation files
oca-transbot Jul 16, 2022
13f703e
account_invoice_import: skip mail attachments that are not PDF nor XML
alexis-via Aug 3, 2022
3626a8d
Translated using Weblate (French)
klodr Aug 7, 2022
a195ce5
[UPD] Update account_invoice_import.pot
Sep 27, 2022
dfc58f3
account_invoice_import 14.0.3.0.0
OCA-git-bot Sep 27, 2022
9dadc0c
Update translation files
oca-transbot Sep 27, 2022
c58fd47
[MIG] account_invoice_import to v15
alexis-via Oct 2, 2022
9024a05
[FIX] account_invoice_import: string remplacement in chatter and erro…
alexis-via Nov 22, 2022
5e732e3
[FIX] account_invoice_import: crash due to missing method
alexis-via Mar 23, 2023
a3fed79
account_invoice_import: update multi-string code to recommended way
alexis-via Mar 23, 2023
99957c4
account_invoice_import: minor update of pivot format doc
alexis-via Mar 23, 2023
8a62d64
[MIG] account_invoice_import to v16
alexis-via May 4, 2023
aa2f60a
[IMP] account_invoice_import: add support for discount
alexis-via Sep 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[UPD] README.rst
OCA-git-bot authored and alexis-via committed Mar 23, 2023
commit 9034e2c399cb1a56daa46d7006c39d18532844d7
58 changes: 40 additions & 18 deletions account_invoice_import/README.rst
Original file line number Diff line number Diff line change
@@ -14,33 +14,33 @@ Account Invoice Import
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi-lightgray.png?logo=github
:target: https://github.com/OCA/edi/tree/12.0/account_invoice_import
:target: https://github.com/OCA/edi/tree/14.0/account_invoice_import
:alt: OCA/edi
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/edi-12-0/edi-12-0-account_invoice_import
:target: https://translation.odoo-community.org/projects/edi-14-0/edi-14-0-account_invoice_import
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/226/12.0
:target: https://runbot.odoo-community.org/runbot/226/14.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

This module has been started by lazy accounting users who hate enter they supplier invoices manually in Odoo. Almost all companies have several supplier invoices to enter regularly in the system from the same suppliers: phone bill, electricity bill, Internet access, train tickets, etc. Most of these invoices are available as PDF. We dream that we would be able to automatically extract from the PDF the required information to enter the invoice as supplier invoice in Odoo. To know the full story behind the development of this module, read this `blog post <http://www.akretion.com/blog/akretions-christmas-present-for-the-odoo-community>`_.
This module has been started by lazy accounting users who hate enter they vendor bills manually in Odoo. Almost all companies have several vendor bills to enter regularly in the system from the same vendors: phone bill, electricity bill, Internet access, train tickets, etc. Most of these invoices are available as PDF. If we are able to automatically extract from the PDF the required information to enter the invoice as vendor bill in Odoo, then this module will create it automatically. To know the full story behind the development of this module, read this `blog post <http://www.akretion.com/blog/akretions-christmas-present-for-the-odoo-community>`_.

In the future, we believe we will have structured information embedded inside the metadata of PDF invoices. There are 2 main standards for electronic invoicing:
In order to reliably extract the required information from the invoice, two international standards exists to describe an Invoice in XML:

* `CII <http://tfig.unece.org/contents/cross-industry-invoice-cii.htm>`_ (Cross-Industry Invoice) developped by `UN/CEFACT <http://www.unece.org/cefact>`_ (United Nations Centre for Trade Facilitation and Electronic Business),
* `UBL <http://ubl.xml.org/>`_ (Universal Business Language) which is an ISO standard (`ISO/IEC 19845 <http://www.iso.org/iso/catalogue_detail.htm?csnumber=66370>`_) developped by `OASIS <https://www.oasis-open.org/>`_ (Organization for the Advancement of Structured Information Standards).

For example, there is already a standard in Germany called `ZUGFeRD <http://www.pdflib.com/knowledge-base/pdfa/zugferd-invoices/>`_ which is based on CII.
Some e-invoice standards such as `Factur-X <http://fnfe-mpe.org/factur-x/>`_ propose to embed the XML description of the invoice inside the PDF invoice. Other people think that the futur is pure-XML invoices: a European initiative called `PEPPOL <https://peppol.eu/>`_ aims at setting up an open network to exchange e-invoices as UBL XML. We don't know yet which standard and which practice will prevail on electronic invoicing in the future, but we hope that lazy accountants won't have to manually encode their vendor bills in the near future. This module is here to help achieve this goal!

This module doesn't do anything useful by itself ; it requires other modules to work: each modules adds a specific invoice format.

Here is how the module works:

* the user starts a wizard and uploads the PDF or XML invoice,
* if it is an XML file, Odoo will parse it to create the invoice (requires additional modules for specific XML formats, such as the module *account_invoice_import_ubl* for the UBL format),
* if it is a PDF file with an embedded XML file in ZUGFeRD/CII format, Odoo will extract the embedded XML file and parse it to create the invoice (requires the module *account_invoice_import_zugferd*),
* if it is a PDF file with an embedded XML file in Factur-X/CII format, Odoo will extract the embedded XML file and parse it to create the invoice (requires the module *account_invoice_import_facturx*),
* otherwise, Odoo will use the *invoice2data* Python library to try to interpret the text of the PDF (requires the module *account_invoice_import_invoice2data*),
* if there is already some draft supplier invoice for this supplier, Odoo will propose to select one to update or create a new draft invoice,
* otherwise, Odoo will directly create a new draft supplier invoice and attach the PDF to it.
@@ -57,33 +57,45 @@ Configuration

Go to the form view of the suppliers and configure it with the following parameters:

* *is a Company ?* is True
* *Supplier* is True
* Individual/Company: *Company*
* the *TIN* (i.e. VAT number) is set (the VAT number is used by default when searching the supplier in the Odoo partner database)
* in the *Accounting* tab, create one or several *Invoice Import Configurations*.

You can configure a mail gateway to import invoices from an email:

* Go to the menu *Settings > Technical > Email > Incoming Mail Servers* and setup the access (POP or IMAP) to the mailbox that will be used to received the invoices,
* In the section *Actions to perform on incoming mails*, set the field *Create a new record* to *Wizard to import supplier invoices/refunds* (model *account.invoice.import*). The field *Server Action* should be left empty.
* If you are in a multi-company setup, you also have to go to the menu *Accounting > Configuration > Settings*: in the section *Invoice Import*, enter the email of the mailbox used to import invoices in the field *Mail Gateway: Destination E-mail* (it will be used to select the right company to import the invoice in).
* Go to the menu *Settings > Technical > Email > Incoming Mail Servers* and setup the access (POP or IMAP) to the mailbox that will be used to receive the invoices,
* In the section *Actions to perform on incoming mails*, set the field *Create a new record* to *Wizard to import supplier invoices/refunds* (model *account.invoice.import*).
* If you are in a multi-company setup, you also have to go to the menu *Invoicing > Configuration > Settings*: in the section *Invoice Import*, enter the email of the mailbox used to import invoices in the field *Mail Gateway: Destination E-mail* (it will be used to import the invoice in the proper company).

Usage
=====

Go to the menu *Invoicing > Vendors > Import Vendor Bill* and follow the instructions of the wizard. You can also start the wizard from the *Accounting Dashboard*: on the purchase journal, click on the *Upload* button.

This module also supports the scenario where you have a draft vendor bill (generated from a purchase order for instance) and you have to update it to comply with the real invoice sent by the vendor: on the form view of the draft vendor bill, click on the button *Import Invoice File* and follow the instructions of the wizard.

If you have a large volume of invoices to import, you may be interested by the script **mass_invoice_import.py** which is available in the *scripts* subdirectory of this module. If you run:

.. code::
./mass_invoice_import.py --help
you will have detailed instructions on how to use the script.

A particular use case of this script is to have a directory where all the invoices saved are automatically uploaded in Odoo. For that, have a look at the sample script **inotify-sample.sh** available in the same subdirectory. Edit this sample script to adapt it to your needs.

Known issues / Roadmap
======================

* Remove dependency on *base_iban* and develop a separate glue module between this module and *base_iban*

* Enhance the update of an existing invoice by analysing the lines (lines are only available when the invoice has an embedded XML file)

* Add a mail gateway to be able to forward the emails that we receive with PDF invoices to a dedicated address ; the gateway would detach the PDF invoice from the email and create the draft supplier invoice in Odoo.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/edi/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/edi/issues/new?body=module:%20account_invoice_import%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/edi/issues/new?body=module:%20account_invoice_import%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

@@ -101,6 +113,8 @@ Contributors
* Alexis de Lattre <alexis.delattre@akretion.com>
* Andrea Stirpe <a.stirpe@onestein.nl>
* Nicolas JEUDY <https://github.com/njeudy>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* Ronald Portier <ronald@therp.nl>

Maintainers
~~~~~~~~~~~
@@ -115,6 +129,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/edi <https://github.com/OCA/edi/tree/12.0/account_invoice_import>`_ project on GitHub.
.. |maintainer-alexis-via| image:: https://github.com/alexis-via.png?size=40px
:target: https://github.com/alexis-via
:alt: alexis-via

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-alexis-via|

This module is part of the `OCA/edi <https://github.com/OCA/edi/tree/14.0/account_invoice_import>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
65 changes: 39 additions & 26 deletions account_invoice_import/static/description/index.html
Original file line number Diff line number Diff line change
@@ -367,20 +367,20 @@ <h1 class="title">Account Invoice Import</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/edi/tree/12.0/account_invoice_import"><img alt="OCA/edi" src="https://img.shields.io/badge/github-OCA%2Fedi-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/edi-12-0/edi-12-0-account_invoice_import"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/226/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module has been started by lazy accounting users who hate enter they supplier invoices manually in Odoo. Almost all companies have several supplier invoices to enter regularly in the system from the same suppliers: phone bill, electricity bill, Internet access, train tickets, etc. Most of these invoices are available as PDF. We dream that we would be able to automatically extract from the PDF the required information to enter the invoice as supplier invoice in Odoo. To know the full story behind the development of this module, read this <a class="reference external" href="http://www.akretion.com/blog/akretions-christmas-present-for-the-odoo-community">blog post</a>.</p>
<p>In the future, we believe we will have structured information embedded inside the metadata of PDF invoices. There are 2 main standards for electronic invoicing:</p>
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/edi/tree/14.0/account_invoice_import"><img alt="OCA/edi" src="https://img.shields.io/badge/github-OCA%2Fedi-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/edi-14-0/edi-14-0-account_invoice_import"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/226/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module has been started by lazy accounting users who hate enter they vendor bills manually in Odoo. Almost all companies have several vendor bills to enter regularly in the system from the same vendors: phone bill, electricity bill, Internet access, train tickets, etc. Most of these invoices are available as PDF. If we are able to automatically extract from the PDF the required information to enter the invoice as vendor bill in Odoo, then this module will create it automatically. To know the full story behind the development of this module, read this <a class="reference external" href="http://www.akretion.com/blog/akretions-christmas-present-for-the-odoo-community">blog post</a>.</p>
<p>In order to reliably extract the required information from the invoice, two international standards exists to describe an Invoice in XML:</p>
<ul class="simple">
<li><a class="reference external" href="http://tfig.unece.org/contents/cross-industry-invoice-cii.htm">CII</a> (Cross-Industry Invoice) developped by <a class="reference external" href="http://www.unece.org/cefact">UN/CEFACT</a> (United Nations Centre for Trade Facilitation and Electronic Business),</li>
<li><a class="reference external" href="http://ubl.xml.org/">UBL</a> (Universal Business Language) which is an ISO standard (<a class="reference external" href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=66370">ISO/IEC 19845</a>) developped by <a class="reference external" href="https://www.oasis-open.org/">OASIS</a> (Organization for the Advancement of Structured Information Standards).</li>
</ul>
<p>For example, there is already a standard in Germany called <a class="reference external" href="http://www.pdflib.com/knowledge-base/pdfa/zugferd-invoices/">ZUGFeRD</a> which is based on CII.</p>
<p>Some e-invoice standards such as <a class="reference external" href="http://fnfe-mpe.org/factur-x/">Factur-X</a> propose to embed the XML description of the invoice inside the PDF invoice. Other people think that the futur is pure-XML invoices: a European initiative called <a class="reference external" href="https://peppol.eu/">PEPPOL</a> aims at setting up an open network to exchange e-invoices as UBL XML. We don’t know yet which standard and which practice will prevail on electronic invoicing in the future, but we hope that lazy accountants won’t have to manually encode their vendor bills in the near future. This module is here to help achieve this goal!</p>
<p>This module doesn’t do anything useful by itself ; it requires other modules to work: each modules adds a specific invoice format.</p>
<p>Here is how the module works:</p>
<ul class="simple">
<li>the user starts a wizard and uploads the PDF or XML invoice,</li>
<li>if it is an XML file, Odoo will parse it to create the invoice (requires additional modules for specific XML formats, such as the module <em>account_invoice_import_ubl</em> for the UBL format),</li>
<li>if it is a PDF file with an embedded XML file in ZUGFeRD/CII format, Odoo will extract the embedded XML file and parse it to create the invoice (requires the module <em>account_invoice_import_zugferd</em>),</li>
<li>if it is a PDF file with an embedded XML file in Factur-X/CII format, Odoo will extract the embedded XML file and parse it to create the invoice (requires the module <em>account_invoice_import_facturx</em>),</li>
<li>otherwise, Odoo will use the <em>invoice2data</em> Python library to try to interpret the text of the PDF (requires the module <em>account_invoice_import_invoice2data</em>),</li>
<li>if there is already some draft supplier invoice for this supplier, Odoo will propose to select one to update or create a new draft invoice,</li>
<li>otherwise, Odoo will directly create a new draft supplier invoice and attach the PDF to it.</li>
@@ -390,12 +390,13 @@ <h1 class="title">Account Invoice Import</h1>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="id2">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li>
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="id3">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id4">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id5">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id6">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id7">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id8">Maintainers</a></li>
</ul>
</li>
</ul>
@@ -404,58 +405,70 @@ <h1 class="title">Account Invoice Import</h1>
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
<p>Go to the form view of the suppliers and configure it with the following parameters:</p>
<ul class="simple">
<li><em>is a Company ?</em> is True</li>
<li><em>Supplier</em> is True</li>
<li>Individual/Company: <em>Company</em></li>
<li>the <em>TIN</em> (i.e. VAT number) is set (the VAT number is used by default when searching the supplier in the Odoo partner database)</li>
<li>in the <em>Accounting</em> tab, create one or several <em>Invoice Import Configurations</em>.</li>
</ul>
<p>You can configure a mail gateway to import invoices from an email:</p>
<ul class="simple">
<li>Go to the menu <em>Settings &gt; Technical &gt; Email &gt; Incoming Mail Servers</em> and setup the access (POP or IMAP) to the mailbox that will be used to received the invoices,</li>
<li>In the section <em>Actions to perform on incoming mails</em>, set the field <em>Create a new record</em> to <em>Wizard to import supplier invoices/refunds</em> (model <em>account.invoice.import</em>). The field <em>Server Action</em> should be left empty.</li>
<li>If you are in a multi-company setup, you also have to go to the menu <em>Accounting &gt; Configuration &gt; Settings</em>: in the section <em>Invoice Import</em>, enter the email of the mailbox used to import invoices in the field <em>Mail Gateway: Destination E-mail</em> (it will be used to select the right company to import the invoice in).</li>
<li>Go to the menu <em>Settings &gt; Technical &gt; Email &gt; Incoming Mail Servers</em> and setup the access (POP or IMAP) to the mailbox that will be used to receive the invoices,</li>
<li>In the section <em>Actions to perform on incoming mails</em>, set the field <em>Create a new record</em> to <em>Wizard to import supplier invoices/refunds</em> (model <em>account.invoice.import</em>).</li>
<li>If you are in a multi-company setup, you also have to go to the menu <em>Invoicing &gt; Configuration &gt; Settings</em>: in the section <em>Invoice Import</em>, enter the email of the mailbox used to import invoices in the field <em>Mail Gateway: Destination E-mail</em> (it will be used to import the invoice in the proper company).</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
<p>Go to the menu <em>Invoicing &gt; Vendors &gt; Import Vendor Bill</em> and follow the instructions of the wizard. You can also start the wizard from the <em>Accounting Dashboard</em>: on the purchase journal, click on the <em>Upload</em> button.</p>
<p>This module also supports the scenario where you have a draft vendor bill (generated from a purchase order for instance) and you have to update it to comply with the real invoice sent by the vendor: on the form view of the draft vendor bill, click on the button <em>Import Invoice File</em> and follow the instructions of the wizard.</p>
<p>If you have a large volume of invoices to import, you may be interested by the script <strong>mass_invoice_import.py</strong> which is available in the <em>scripts</em> subdirectory of this module. If you run:</p>
<pre class="code literal-block">
./mass_invoice_import.py --help
</pre>
<p>you will have detailed instructions on how to use the script.</p>
<p>A particular use case of this script is to have a directory where all the invoices saved are automatically uploaded in Odoo. For that, have a look at the sample script <strong>inotify-sample.sh</strong> available in the same subdirectory. Edit this sample script to adapt it to your needs.</p>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id2">Known issues / Roadmap</a></h1>
<h1><a class="toc-backref" href="#id3">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>Remove dependency on <em>base_iban</em> and develop a separate glue module between this module and <em>base_iban</em></li>
<li>Enhance the update of an existing invoice by analysing the lines (lines are only available when the invoice has an embedded XML file)</li>
<li>Add a mail gateway to be able to forward the emails that we receive with PDF invoices to a dedicated address ; the gateway would detach the PDF invoice from the email and create the draft supplier invoice in Odoo.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id3">Bug Tracker</a></h1>
<h1><a class="toc-backref" href="#id4">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/edi/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/edi/issues/new?body=module:%20account_invoice_import%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/edi/issues/new?body=module:%20account_invoice_import%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id4">Credits</a></h1>
<h1><a class="toc-backref" href="#id5">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id5">Authors</a></h2>
<h2><a class="toc-backref" href="#id6">Authors</a></h2>
<ul class="simple">
<li>Akretion</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id6">Contributors</a></h2>
<h2><a class="toc-backref" href="#id7">Contributors</a></h2>
<ul class="simple">
<li>Alexis de Lattre &lt;<a class="reference external" href="mailto:alexis.delattre&#64;akretion.com">alexis.delattre&#64;akretion.com</a>&gt;</li>
<li>Andrea Stirpe &lt;<a class="reference external" href="mailto:a.stirpe&#64;onestein.nl">a.stirpe&#64;onestein.nl</a>&gt;</li>
<li>Nicolas JEUDY &lt;<a class="reference external" href="https://github.com/njeudy">https://github.com/njeudy</a>&gt;</li>
<li>Yannick Vaucher &lt;<a class="reference external" href="mailto:yannick.vaucher&#64;camptocamp.com">yannick.vaucher&#64;camptocamp.com</a>&gt;</li>
<li>Ronald Portier &lt;<a class="reference external" href="mailto:ronald&#64;therp.nl">ronald&#64;therp.nl</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id7">Maintainers</a></h2>
<h2><a class="toc-backref" href="#id8">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/edi/tree/12.0/account_invoice_import">OCA/edi</a> project on GitHub.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external" href="https://github.com/alexis-via"><img alt="alexis-via" src="https://github.com/alexis-via.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/edi/tree/14.0/account_invoice_import">OCA/edi</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>