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

[15.0][MIG] account_invoice_import: Migration to 15.0 #1063

Open
wants to merge 121 commits into
base: 15.0
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
dfc1ade
Rename module from account_invoice_pdf_import to account_invoice_import
alexis-via Dec 30, 2015
fd09c9a
Update FR translation
alexis-via Jan 7, 2016
bb597a2
Add instructions to use my PPA for poppler-utils on Ubuntu 14.04 LTS …
alexis-via Jan 9, 2016
d81a603
Add support for direct import of XML files (YAML test provided)
alexis-via Jan 19, 2016
1691c01
Sometimes, it's easier to extract the total tax amount instead of the…
Jan 20, 2016
b12fe04
Add an explaination about date parsing in invoice2data
alexis-via Jan 22, 2016
378ffa5
Add optional support for start/end dates
Jan 22, 2016
3a4733c
Adapt to latest changes in invoice2data
alexis-via Jan 27, 2016
5d116da
Only change name_get of invoice for our use-case, not everywhere
alexis-via Jan 28, 2016
80491cd
Update README with latest changes in invoice2data lib
alexis-via Jan 28, 2016
fab709b
Add support for partner_email to match partners
Feb 2, 2016
d793c23
Update installation procedure.
alexis-via Feb 11, 2016
933a250
Add modules base_zugferd, account_invoice_import_zugferd and account_…
alexis-via Feb 22, 2016
abbd3d9
Log raw result of invoice2data (before we make modifications)
alexis-via Mar 2, 2016
6df4709
Fix error in README spotted by Roel Adriaans
alexis-via Mar 15, 2016
944d74e
Add module account_invoice_import_ubl
alexis-via Mar 15, 2016
303f447
Use base_vat_sanitized
alexis-via May 13, 2016
6f34a39
Add support for import of e-fff invoices (Belgian standard)
alexis-via May 21, 2016
7548b1e
Add support for local invoice template for invoice2data, see README
alexis-via May 25, 2016
d7293ac
Small usability improvement
alexis-via Jun 21, 2016
c1ddaf6
Checks that the directory really exists
alexis-via Jul 3, 2016
c2f8c4e
Extract regular PDF invoice import from account_invoice_import to a d…
alexis-via Aug 5, 2016
3fd3f96
Adapt code to plug the module 'ovh_supplier_invoice'
alexis-via Aug 12, 2016
1db0271
Fix product matching
alexis-via Aug 12, 2016
a61f9e4
FIX PEP8 and account_invoice_import_invoice2data unittests
alexis-via Aug 15, 2016
0d6b6de
Add module base_business_document_import and start to move some code …
alexis-via Aug 17, 2016
a66fa31
Better/cleaner pivot invoice dict format (no more IDs in the pivot in…
alexis-via Aug 18, 2016
bf4d45e
Add module base_ubl (common methods to generate and parse UBL files)
alexis-via Aug 21, 2016
02552f0
Add module base_phone_business_document_import
alexis-via Aug 24, 2016
1ceb9cf
Add a unittest on _match_uom
alexis-via Aug 25, 2016
df9231b
Add module base_business_document_import_stock
alexis-via Aug 26, 2016
9562627
Update invoice lines on "Update Existing" invoice import
alexis-via Aug 27, 2016
560c18d
Add multi-company ir.rule on account.invoice.import.config
alexis-via Sep 14, 2016
5f57fac
FIX Don't use _inherit = ['business.document.import']
alexis-via Sep 28, 2016
3d2d4c6
Fix method call
alexis-via Oct 2, 2016
a52a0d9
[IMP] handle the case where the xml file is generated with mime type
adrienpeiffer Oct 4, 2016
710f613
Add support for extraction + matching on website
alexis-via Oct 4, 2016
07b956d
FIX two stupid bugs
alexis-via Oct 4, 2016
efa5320
8.0 Add support for partner bank matching on invoice update (#6)
Oct 18, 2016
bf97832
8.0 Use try/except when importing external libs (#8)
Oct 19, 2016
cdf273b
[MIG] Make modules uninstallable
hbrunn Nov 12, 2016
96432f0
[ADD] migration of account_invoice_import_invoice2data and dependencies
hbrunn Dec 29, 2016
843d319
Add support for 'origin' field in invoice import
alexis-via Jan 6, 2017
5a39d3e
[FIX] product.product#ean13 was renamed to barcode
hbrunn Jan 9, 2017
06c71a9
[FIX] tests
hbrunn Jan 9, 2017
12ba9b6
Port base_business_document_import* to v10
alexis-via Feb 15, 2017
523dfca
Allow importing invoice without invoice_import_config on partner (use…
alexis-via Mar 27, 2017
d9b36be
Several fixes in account_invoice_import
alexis-via Apr 11, 2017
a611f88
Improve XML for Factur-X
alexis-via Jul 28, 2017
3f7f47b
Add first support for the import of Factur-X invoices
alexis-via Aug 10, 2017
a06d933
Add support for allowance and charges on Factur-X invoice import
alexis-via Aug 11, 2017
09d68b8
Fix bug #16 : add support for adjustment lines (per line and global)
alexis-via Aug 13, 2017
a9a355b
account_invoice_factur-x: now generate refunds with document type = 3…
alexis-via Aug 15, 2017
a432374
Pre-process parsed_inv even when calling directly _create_invoice()
alexis-via Aug 15, 2017
3c44e63
Add support for importing customer invoices (bug #24)
alexis-via Aug 15, 2017
82bf932
Improve + modularize generation of UBL (up-port from v8 PR)
alexis-via Aug 23, 2017
a84c59d
Finalise the use of the FacturX lib
alexis-via Sep 6, 2017
4685582
account_invoice_import: workaround a framework bug
alexis-via Oct 4, 2017
1ec2d99
account_invoice_import: Add partner_type to _match_partner method for…
alexis-via Oct 14, 2017
ee30ca1
[10.0] Update to work with latest version of invoice2data (#51)
Mar 11, 2018
8b7e296
[10.0] Several fixes + import invoices with VAT in a company that can…
Jul 31, 2018
1045476
Fix import of sale order with price_source='pricelist' when pricelist…
alexis-via Aug 14, 2018
c85c20a
Partner <-> Invoice import config : switch M2O <-> O2M
alexis-via Jan 18, 2018
0f26994
Add migration script
alexis-via Jan 19, 2018
cdcb076
Add support for multiple invoice import configs in invoice import wizard
alexis-via Aug 14, 2018
5a40a66
Add O2M field from import config to download config
alexis-via Aug 14, 2018
ccafecd
Finalize the development account_invoice_download
alexis-via Aug 18, 2018
7105a3b
Add support for additional module-specific weboob config parameters
alexis-via Aug 19, 2018
2f45ef2
account_invoice_import: add a mail gateway
alexis-via Aug 22, 2018
23f02e6
Add ability to run cron invoice download from admin for all companies…
alexis-via Aug 23, 2018
cbe2e5e
Add multi-company support in the invoice import mail gateway
alexis-via Aug 24, 2018
da86597
Check the VAT number of the destination partner, to make sure the bus…
alexis-via Aug 25, 2018
c421b48
[FIX] include some of the fixes proposed in #64
Aug 15, 2018
138c8fa
[11.0][MIG] account_invoice_import
Oct 2, 2018
77806e3
Fix base64 encode/decode + remove supplier_invoice_number + code review
astirpe Oct 12, 2018
8c01fe0
[12.0][MIG] account_invoice_import
astirpe Jan 3, 2020
dec80da
account_invoice_download: start OCA import bill wizard when using the…
alexis-via Feb 13, 2020
9a1e065
Added translation using Weblate (German)
tv-openbig Mar 16, 2020
c003800
[MIG] account_invoice_import_facturx to v12
alexis-via Apr 14, 2020
8d82c54
Translated using Weblate (German)
marylla May 27, 2020
5c27978
[IMP] account_invoice_import: black, isort, prettier
yvaucher Jun 23, 2020
d16c3df
[MIG] account_invoice_import: Migration to 13.0
yvaucher Jun 23, 2020
3e94739
[IMP] account_invoice_import: parsed invoice hook
yvaucher Jun 23, 2020
23dda47
[IMP] account_invoice_import: Missing partner hook
yvaucher Jun 24, 2020
76a5276
Add a quick import invoice button
yvaucher Jun 25, 2020
170c95b
Restore dashboard button overwrite
yvaucher Jun 27, 2020
d06e0ce
[RM] invoice line doesn't exist on V13
vrenaville Jan 21, 2021
6847bf8
[FIX] account_invoice_import: fix headers
NL66278 Dec 2, 2020
f8a3ae4
[FIX] account_invoice_import: Reduce method complexity.
NL66278 Dec 2, 2020
987256e
[FIX] account_invoice_import. Do not shadow config module with variable.
NL66278 Dec 3, 2020
668e9a9
[MIG] account_invoice_import to v14
alexis-via May 25, 2021
d35965b
[FIX] account_invoice_import: mail gateway exception
StefanRijnhart May 26, 2021
269c333
account_invoice_import: Add USAGE.rst
alexis-via May 31, 2021
153a582
account_invoice_import: FIX import config creation from partner
alexis-via Jun 7, 2021
dfe7571
invoice_import: add button box div in account.invoice.import.config f…
alexis-via Jun 9, 2021
8bde5c4
Translated using Weblate (French)
Yvesldff Jun 17, 2021
674bcb0
Added translation using Weblate (Dutch)
bosd Jan 27, 2022
902ca71
[FIX] Fix access right issues when using actions
sebalix Jan 31, 2022
ef5b9a6
[FIX] access to form view of partners for users who are not accountants
alexis-via Feb 13, 2022
661c747
Translated using Weblate (Dutch)
bosd May 15, 2022
ddafdb8
account_invoice_import: tests use setUpClass
simahawk May 26, 2022
d2600a0
account_invoice_import: fix error logging
simahawk May 26, 2022
b192dd9
account_invoice_import: more tests for mail gateway
simahawk May 26, 2022
b13300d
account_invoice_import: Set a specific journal
alexis-via May 20, 2022
a42a10e
account_invoice_import: improve handling of simple PDF invoices
alexis-via Jul 14, 2022
3407d5a
account_invoice_import: skip mail attachments that are not PDF nor XML
alexis-via Aug 3, 2022
42011fb
Translated using Weblate (French)
klodr Aug 7, 2022
32f1520
account_invoice_import: add support for additional fields
bosd May 14, 2022
7ef12de
Translated using Weblate (Dutch)
bosd Feb 7, 2023
2633871
[REM] states on group is malicious as shadowing states on fields
i-vyshnevska Jun 15, 2022
d9b537a
[IMP] set proper state with message instead of error raising
i-vyshnevska Feb 26, 2023
b3ad8be
account_invoice_import: Improve comments
bosd Mar 9, 2023
7ef5689
[FIX] account_invoice_import: crash due to missing method
alexis-via Mar 23, 2023
ff02d36
Translated using Weblate (French)
klodr May 29, 2023
17f15f2
account_invoice_import: use OCA wiz from in invoice tree view
alexis-via Oct 9, 2023
b3df2db
*: Fix pylint
etobella Oct 29, 2023
97603bd
[IMP] account_invoice_import: Add a unit test with tax included
yvaucher Feb 8, 2021
b9e9975
[FIX] account_invoice_import: fix unit test with tax included
i-vyshnevska Feb 12, 2021
06f73fb
Translated using Weblate (Spanish)
Ivorra78 Nov 22, 2023
670672b
[IMP] account_invoice_import: add support for discount
alexis-via Jul 25, 2024
e1f2cac
[MIG] account_invoice_import: Migration to 15.0
V3st1g3 Nov 7, 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
FIX PEP8 and account_invoice_import_invoice2data unittests
Update REAME and some interface strings about UBL being an ISO standard
Small code changes
alexis-via authored and V3st1g3 committed Nov 7, 2024

Verified

This commit was signed with the committer’s verified signature.
timyarkov Tim Yarkov
commit a61f9e48650f074c6074415b707126ccbce94cca
2 changes: 1 addition & 1 deletion account_invoice_import/README.rst
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ This module has been started by lazy accounting users who hate enter they suppli
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:

* `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) developped by `OASIS <https://www.oasis-open.org/>`_ (Organization for the Advancement of Structured Information Standards).
* `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.

18 changes: 10 additions & 8 deletions account_invoice_import/wizard/account_invoice_import.py
Original file line number Diff line number Diff line change
@@ -8,7 +8,6 @@
from openerp.exceptions import Warning as UserError
from lxml import etree
import logging
import base64
import mimetypes

logger = logging.getLogger(__name__)
@@ -103,34 +102,35 @@ def fallback_parse_pdf_invoice(self, file_data):
# }

@api.model
def _select_partner(self, parsed_inv):
def _select_partner(self, parsed_inv, partner_type='supplier'):
if parsed_inv.get('partner'):
return parsed_inv['partner']
if parsed_inv.get('partner_vat'):
vat = parsed_inv['partner_vat'].replace(' ', '').upper()
# use base_vat_sanitized
partners = self.env['res.partner'].search([
('supplier', '=', True),
(partner_type, '=', True),
('parent_id', '=', False),
('sanitized_vat', '=', vat)])
if partners:
return partners[0]
else:
# TODO: update error msg
raise UserError(_(
"The analysis of the invoice returned '%s' as "
"supplier VAT number. But there are no supplier "
"partner VAT number. But there are no supplier "
"with this VAT number in Odoo.") % vat)
if parsed_inv.get('partner_email'):
partners = self.env['res.partner'].search([
('email', '=ilike', parsed_inv['partner_email']),
('supplier', '=', True)])
(partner_type, '=', True)])
if partners:
return partners[0].commercial_partner_id
if parsed_inv.get('partner_name'):
partners = self.env['res.partner'].search([
('name', '=ilike', parsed_inv['partner_name']),
('is_company', '=', True),
('supplier', '=', True)])
(partner_type, '=', True)])
if partners:
return partners[0]
raise UserError(_(
@@ -275,7 +275,7 @@ def _prepare_create_invoice_vals(self, parsed_inv):
return vals

@api.model
def _match_product(self, parsed_line, partner):
def _match_product(self, parsed_line, partner=False):
"""This method is designed to be inherited"""
ppo = self.env['product.product']
if parsed_line.get('product'):
@@ -372,8 +372,9 @@ def _get_currency(self, parsed_inv):
@api.multi
def parse_invoice(self):
self.ensure_one()
assert self.invoice_file, 'No invoice file'
logger.info('Starting to import invoice %s', self.invoice_filename)
file_data = base64.b64decode(self.invoice_file)
file_data = self.invoice_file.decode('base64')
parsed_inv = {}
filetype = mimetypes.guess_type(self.invoice_filename)
logger.debug('Invoice mimetype: %s', filetype)
@@ -435,6 +436,7 @@ def update_clean_parsed_inv(self, parsed_inv):

@api.multi
def import_invoice(self):
"""Method called by the button of the wizard (1st step)"""
self.ensure_one()
aio = self.env['account.invoice']
iaao = self.env['ir.actions.act_window']
10 changes: 5 additions & 5 deletions account_invoice_import/wizard/account_invoice_import_view.xml
Original file line number Diff line number Diff line change
@@ -19,13 +19,13 @@
</group>
<group name="help-import" states="import">
<div>
<p>Upload below the supplier invoice or refund as PDF or XML file. When you click on the Import button:</p>
<p>Upload below the supplier invoice or refund as PDF or XML file:</p>
<ol>
<li>If it is an XML file, Odoo will parse it if the module that adds support for this XML format is installed. For the <a href="http://ubl.xml.org/" target="_blank">Universal Business Language</a> format (UBL), you should install the module <em>account_invoice_import_ubl</em>.</li>
<li>If it is a PDF file and the module <em>account_invoice_import_zugferd</em> is installed, Odoo will try to extract an XML file embedded inside the PDF file. It will work only if the invoice complies with the <a href="//www.pdflib.com/knowledge-base/pdfa/zugferd-invoices/" target="_blank">ZUGFeRD</a> standard (based on the <a href="http://tfig.unece.org/contents/cross-industry-invoice-cii.htm" target="_blank">Cross Industry Invoice</a> specifications).</li>
<li>Otherwise, Odoo will use the <a href="https://github.com/m3nu/invoice2data/" target="_blank">invoice2data</a> library to read the text of the PDF and get the information. It will work only if the invoice2data library has a template for the invoices of that supplier.</li>
<li>Odoo will use this information to create a draft supplier invoice. If there is already a draft invoice for that supplier in Odoo, you will have the option to update that invoice.</li>
<li>If it is an XML file, Odoo will parse it if the module that adds support for this XML format is installed. For the <a href="http://ubl.xml.org/" target="_blank">Universal Business Language</a> format (UBL, also known as <a href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=66370">ISO/IEC 19845</a>), you should install the module <em>account_invoice_import_ubl</em>.</li>
<li>If it is a PDF/A-3 file with an embedded XML file and the module <em>account_invoice_import_zugferd</em> is installed, Odoo will extract and parse the embedded XML file. It will work only if the invoice complies with the <a href="//www.pdflib.com/knowledge-base/pdfa/zugferd-invoices/" target="_blank">ZUGFeRD</a> standard (based on the <a href="http://tfig.unece.org/contents/cross-industry-invoice-cii.htm" target="_blank">Cross Industry Invoice</a> specifications).</li>
<li>If it is a regular PDF file without any embedded XML file and the module <em>account_invoice_import_invoice2data</em> is installed, Odoo will use the <a href="https://github.com/m3nu/invoice2data/" target="_blank">invoice2data</a> library to read the text of the PDF and get the information. It will work only if the invoice2data library has a template for the invoices of that supplier.</li>
</ol>
<p>Odoo will create a draft supplier invoice or refund. If there is an existing draft invoice for that supplier, Odoo will propose you to update that draft invoice or create a new invoice.</p>
</div>
</group>
<group name="help-update" states="update">