| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/18.0/account_invoice_import |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Weblate, OCA-git-bot, oca-ci, Arnaud LAYEC |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/edi |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:12 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - uom_unece OCA/edi: - base_business_document_import odoo/odoo: - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | 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 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). 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 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. This module also works with supplier refunds. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_form |
account.invoice.import | form | New | |
account_invoice_import_partner_create_form |
account.invoice.import.partner.create | form | New | |
res_config_settings_view_form |
res.config.settings | xpath | Inherits account.res_config_settings_view_form | |
view_move_form |
account.move | div | Inherits account.view_move_form | |
view_partner_property_form |
res.partner | group | Inherits account.view_partner_property_form |
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company'
invoice_attachment_ids
Many2many → ir.attachment
required=True
string='PDF or XML Invoices to Import'
args: 'ir.attachment'
create_invoice(self, parsed_inv, import_config, origin=None)
create_invoice_webservice(self, invoice_file_b64, invoice_filename, company_id, origin, email_from=None)
fallback_parse_pdf_invoice(self, file_data, company)
import_invoices(self)
message_new(self, msg_dict, custom_values=None)
multi_xpath_helper(self, xml_root, xpath_list, namespaces, isdate=False, isfloat=False, ischar_to_clean=False)
parse_invoice(self, invoice_file_b64, invoice_filename, company, email_from=None)
parse_pdf_invoice(self, file_data, company)
parse_xml_invoice(self, xml_root, company)
raw_multi_xpath_helper(self, xml_root, xpath_list, namespaces)
xpath_to_dict_helper(self, xml_root, xpath_dict, namespaces)
create_or_update
Selection
default='create'
required=True
args: [('create', "This partner doesn't already exists in Odoo"), ('update', 'This partner already exists in Odoo')]
import_partner_data
Json
move_id
Many2one → account.move
readonly=True
required=True
string='Vendor Bill'
args: 'account.move'
partner_name
Char
readonly=True
partner_vat
Char
readonly=True
string='Partner VAT Number'
update_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
string='Partner to Update'
args: 'res.partner'
create_partner(self)
default_get(self, fields_list)
update_partner(self)
No new fields.
Public methods (1)create_document_from_attachment(self, attachment_ids)
import_partner_data
Json
import_warnings
Html
readonly=True
show_import_warnings
Boolean
compute='_compute_show_import_warnings'
No public methods.
adjustment_credit_account_id
Many2one → account.account
check_company=True
args: 'account.account'
adjustment_debit_account_id
Many2one → account.account
check_company=True
args: 'account.account'
invoice_import_create_bank_account
Boolean
string='Auto-create Bank Account of Supplier'
invoice_import_email
Char
help='This field is used in multi-company setups to import the invoices received by the mail gateway in the appropriate company'
args: 'Mail Gateway: Destination E-mail'
No public methods.
adjustment_credit_account_id
Many2one
domain="[('deprecated', '=', False), ('company_ids', 'in', company_id), ('account_type', '=like', 'income%')]"
readonly=False
related='company_id.adjustment_credit_account_id'
adjustment_debit_account_id
Many2one
domain="[('deprecated', '=', False), ('company_ids', 'in', company_id), ('account_type', '=like', 'expense%')]"
readonly=False
related='company_id.adjustment_debit_account_id'
invoice_import_create_bank_account
Boolean
readonly=False
related='company_id.invoice_import_create_bank_account'
invoice_import_email
Char
readonly=False
related='company_id.invoice_import_email'
No public methods.
invoice_import_account_id
Many2one → account.account
company_dependent=True
domain="[('deprecated', '=', False), ('company_ids', 'in', current_company_id)]"
help='The account configured here will be updated by the mapping of the fiscal position.'
string='Default Expense Account'
args: 'account.account'
invoice_import_journal_id
Many2one → account.journal
company_dependent=True
domain="[('type', '=', 'purchase'), ('company_id', '=', current_company_id)]"
help='If empty, Odoo will use the first purchase journal.'
string='Force Purchase Journal'
args: 'account.journal'
invoice_import_label
Char
company_dependent=True
help='Force Invoice Line Description'
string='Force Invoice Line Description'
invoice_import_move_id
Many2one → account.move
readonly=True
string='Related Imported Vendor Bill'
args: 'account.move'
invoice_import_move_partner_id
Many2one
related='invoice_import_move_id.partner_id'
invoice_import_product_id
Many2one → product.product
company_dependent=True
string='Default Product'
args: 'product.product'
invoice_import_single_line
Boolean
company_dependent=True
string='Force Single Invoice Line'
invoice_import_tax_ids
Many2many → account.tax
domain="[('type_tax_use', '=', 'purchase'), ('company_id', '=', current_company_id)]"
help='Taxes configured here will go through the mapping of the fiscal position.'
string='Default Taxes'
args: 'account.tax'
update_imported_invoice(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/16.0/account_invoice_import |
| VERSION | |
| VERSION | 2.5.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Weblate, OCA-git-bot, oca-ci, Souheil Bejaoui, Arnaud LAYEC, Marwan Behillil |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/edi |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:46 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - uom_unece OCA/edi: - base_business_document_import - pdf_helper odoo/odoo: - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_form |
account.invoice.import | form | New | |
account_invoice_import_partner_create_form |
account.invoice.import.partner.create | form | New | |
res_config_settings_view_form |
res.config.settings | xpath | Inherits account.res_config_settings_view_form | |
view_move_form |
account.move | div | Inherits account.view_move_form | |
view_partner_property_form |
res.partner | group | Inherits account.view_partner_property_form |
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company'
invoice_attachment_ids
Many2many → ir.attachment
required=True
string='PDF or XML Invoices to Import'
args: 'ir.attachment'
create_invoice(self, parsed_inv, import_config, origin=None)
create_invoice_webservice(self, invoice_file_b64, invoice_filename, origin, company_id=None, email_from=None)
fallback_parse_pdf_invoice(self, file_data, company)
import_invoices(self)
message_new(self, msg_dict, custom_values=None)
multi_xpath_helper(self, xml_root, xpath_list, namespaces, isdate=False, isfloat=False, ischar_to_clean=False)
parse_invoice(self, invoice_file_b64, invoice_filename, company, email_from=None)
parse_pdf_invoice(self, file_data, company)
parse_xml_invoice(self, xml_root, company)
raw_multi_xpath_helper(self, xml_root, xpath_list, namespaces)
xpath_to_dict_helper(self, xml_root, xpath_dict, namespaces)
create_or_update
Selection
default='create'
required=True
args: [('create', "This partner doesn't already exists in Odoo"), ('update', 'This partner already exists in Odoo')]
import_partner_data
Json
move_id
Many2one → account.move
readonly=True
required=True
string='Vendor Bill'
args: 'account.move'
partner_name
Char
readonly=True
partner_vat
Char
readonly=True
string='Partner VAT Number'
update_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
string='Partner to Update'
args: 'res.partner'
create_partner(self)
default_get(self, fields_list)
update_partner(self)
No new fields.
Public methods (1)create_document_from_attachment(self, attachment_ids=None)
import_partner_data
Json
import_warnings
Html
readonly=True
show_import_warnings
Boolean
compute='_compute_show_import_warnings'
No public methods.
adjustment_credit_account_id
Many2one → account.account
check_company=True
args: 'account.account'
adjustment_debit_account_id
Many2one → account.account
check_company=True
args: 'account.account'
invoice_import_create_bank_account
Boolean
string='Auto-create Bank Account of Supplier'
invoice_import_email
Char
help='This field is used in multi-company setups to import the invoices received by the mail gateway in the appropriate company'
args: 'Mail Gateway: Destination E-mail'
No public methods.
adjustment_credit_account_id
Many2one
domain="[('deprecated', '=', False), ('company_id', '=', company_id), ('account_type', '=like', 'income%')]"
readonly=False
related='company_id.adjustment_credit_account_id'
adjustment_debit_account_id
Many2one
domain="[('deprecated', '=', False), ('company_id', '=', company_id), ('account_type', '=like', 'expense%')]"
readonly=False
related='company_id.adjustment_debit_account_id'
invoice_import_create_bank_account
Boolean
readonly=False
related='company_id.invoice_import_create_bank_account'
invoice_import_email
Char
readonly=False
related='company_id.invoice_import_email'
No public methods.
invoice_import_account_id
Many2one → account.account
company_dependent=True
domain="[('deprecated', '=', False), ('company_id', '=', current_company_id)]"
help='The account configured here will be updated by the mapping of the fiscal position.'
string='Default Expense Account'
args: 'account.account'
invoice_import_journal_id
Many2one → account.journal
company_dependent=True
domain="[('type', '=', 'purchase'), ('company_id', '=', current_company_id)]"
help='If empty, Odoo will use the first purchase journal.'
string='Force Purchase Journal'
args: 'account.journal'
invoice_import_label
Char
company_dependent=True
help='Force Invoice Line Description'
string='Force Invoice Line Description'
invoice_import_move_id
Many2one → account.move
readonly=True
string='Related Imported Vendor Bill'
args: 'account.move'
invoice_import_move_partner_id
Many2one
related='invoice_import_move_id.partner_id'
invoice_import_product_id
Many2one → product.product
company_dependent=True
string='Default Product'
args: 'product.product'
invoice_import_single_line
Boolean
company_dependent=True
string='Force Single Invoice Line'
invoice_import_tax_ids
Many2many → account.tax
domain="[('type_tax_use', '=', 'purchase'), ('company_id', '=', current_company_id)]"
help='Taxes configured here will go through the mapping of the fiscal position.'
string='Default Taxes'
args: 'account.tax'
update_imported_invoice(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/14.0/account_invoice_import |
| VERSION | |
| VERSION | 3.5.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Stefan Rijnhart, GitHub, Enric Tobella, OCA Transbot, Sébastien Alix, oca-travis, Weblate, OCA-git-bot, Simone Orsi, Iryna Vyshnevska, oca-ci, bosd |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/edi |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:59 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - uom_unece OCA/edi: - base_business_document_import - pdf_helper OCA/server-tools: - onchange_helper odoo/odoo: - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_iban |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
pypdf>=3.1.0,<5.0 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_config_form |
account.invoice.import.config | form | New | |
account_invoice_import_config_search |
account.invoice.import.config | search | New | |
account_invoice_import_config_tree |
account.invoice.import.config | tree | New | |
account_invoice_import_form |
account.invoice.import | form | New | |
account_journal_dashboard_kanban_view |
account.journal | button | Inherits account.account_journal_dashboard_kanban_view | |
res_config_settings_view_form |
res.config.settings | xpath | Inherits account.res_config_settings_view_form | |
view_move_form |
account.move | button | Inherits account.view_move_form | |
view_partner_property_form |
res.partner | button | Inherits account.view_partner_property_form |
amount_total
Float
digits='Account'
readonly=True
string='Total'
amount_untaxed
Float
digits='Account'
readonly=True
string='Total Untaxed'
currency_id
Many2one → res.currency
readonly=True
args: 'res.currency'
import_config_id
Many2one → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config'
invoice_file
Binary
string='PDF or XML Invoice'
invoice_filename
Char
string='Filename'
invoice_id
Many2one → account.move
string='Draft Supplier Invoice to Update'
args: 'account.move'
invoice_type
Selection
readonly=True
string='Invoice or Refund'
args: [('in_invoice', 'Invoice'), ('in_refund', 'Refund')]
message
Text
readonly=True
partner_country_id
Many2one → res.country
readonly=True
args: 'res.country'
partner_id
Many2one → res.partner
readonly=True
string='Vendor'
args: 'res.partner'
partner_vat
Char
readonly=True
state
Selection
default='import'
args: [('import', 'Import'), ('config', 'Select Invoice Import Configuration'), ('update', 'Update'), ('update-from-invoice', 'Update From Invoice'), ('partner-not-found', 'Partner not found')]
company_cannot_refund_vat(self)
create_invoice(self, parsed_inv, import_config=False, origin=None)
create_invoice_action(self, parsed_inv=None, import_config=None, origin=None)
create_invoice_action_button(self)
create_invoice_webservice(self, invoice_file_b64, invoice_filename, origin, company_id=None, email_from=None)
default_get(self, fields_list)
fallback_parse_pdf_invoice(self, file_data)
get_parsed_invoice(self)
get_precision_rounding_from_currency_helper(self, parsed_inv)
goto_partner_not_found(self, parsed_inv, error_message)
import_invoice(self)
invoice_already_exists(self, commercial_partner, parsed_inv)
message_new(self, msg_dict, custom_values=None)
multi_xpath_helper(self, xml_root, xpath_list, namespaces, isdate=False, isfloat=False)
new_partner(self)
parse_invoice(self, invoice_file_b64, invoice_filename, email_from=None)
parse_pdf_invoice(self, file_data)
parse_xml_invoice(self, xml_root)
post_process_invoice(self, parsed_inv, invoice, import_config)
pre_process_parsed_inv(self, parsed_inv)
raw_multi_xpath_helper(self, xml_root, xpath_list, namespaces)
set_1line_price_unit_and_quantity(self, il_vals, parsed_inv)
set_1line_start_end_dates(self, il_vals, parsed_inv)
update_invoice(self)
update_invoice_lines(self, parsed_inv, invoice, seller)
update_partner_vat(self)
update_partner_vat_continue(self)
update_partner_vat_show(self)
xpath_to_dict_helper(self, xml_root, xpath_dict, namespaces)
account_analytic_id
Many2one → account.analytic.account
check_company=True
string='Analytic Account'
args: 'account.analytic.account'
account_id
Many2one → account.account
check_company=True
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Expense Account'
args: 'account.account'
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
ondelete='cascade'
required=True
args: 'res.company'
invoice_line_method
Selection
default='1line_no_product'
help="The multi-line methods will not work for PDF invoices that don't have an embedded XML file which has structured information on each line."
required=True
string='Method for Invoice Line'
args: [('1line_no_product', 'Single Line, No Product'), ('1line_static_product', 'Single Line, Static Product'), ('nline_no_product', 'Multi Line, No Product'), ('nline_static_product', 'Multi Line, Static Product'), ('nline_auto_product', 'Multi Line, Auto-selected Product')]
journal_id
Many2one → account.journal
check_company=True
domain="[('company_id', '=', company_id), ('type', '=', 'purchase')]"
help='If empty, Odoo will use the first purchase journal.'
string='Force Purchase Journal'
args: 'account.journal'
label
Char
help='Force supplier invoice line description'
string='Force Description'
name
Char
required=True
partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
ondelete='cascade'
args: 'res.partner'
sequence
Integer
static_product_id
Many2one → product.product
check_company=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
args: 'product.product'
tax_ids
Many2many → account.tax
check_company=True
domain="[('type_tax_use', '=', 'purchase'), ('company_id', '=', company_id)]"
string='Taxes'
args: 'account.tax'
convert_to_import_config(self)
invoice_line_method_change(self)
No new fields.
Public methods (1)create_invoice_from_attachment(self, attachment_ids=None)
No new fields.
Public methods (0)No public methods.
adjustment_credit_account_id
Many2one → account.account
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
args: 'account.account'
adjustment_debit_account_id
Many2one → account.account
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
args: 'account.account'
invoice_import_create_bank_account
Boolean
string='Auto-create Bank Account of Supplier'
invoice_import_email
Char
help='This field is used in multi-company setups to import the invoices received by the mail gateway in the appropriate company'
args: 'Mail Gateway: Destination E-mail'
No public methods.
adjustment_credit_account_id
Many2one
readonly=False
related='company_id.adjustment_credit_account_id'
adjustment_debit_account_id
Many2one
readonly=False
related='company_id.adjustment_debit_account_id'
invoice_import_create_bank_account
Boolean
readonly=False
related='company_id.invoice_import_create_bank_account'
invoice_import_email
Char
readonly=False
related='company_id.invoice_import_email'
No public methods.
invoice_import_count
Integer
compute='_compute_invoice_import_count'
readonly=True
string='Number of Invoice Import Configurations'
invoice_import_ids
One2many → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config', 'partner_id'
show_account_invoice_import_config(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/12.0/account_invoice_import |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Enric Tobella, OCA Transbot, oca-travis, OCA-git-bot, Maksym Yankin |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/edi |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - uom_unece OCA/edi: - base_business_document_import OCA/partner-contact: - base_vat_sanitized OCA/server-tools: - onchange_helper odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - uom - analytic - portal - http_routing - digest - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyPDF2 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_config_form |
account.invoice.import.config | form | New | |
account_invoice_import_config_search |
account.invoice.import.config | search | New | |
account_invoice_import_config_tree |
account.invoice.import.config | tree | New | |
account_invoice_import_form |
account.invoice.import | form | New | |
account_journal_dashboard_kanban_view |
account.journal | button | Inherits account.account_journal_dashboard_kanban_view | |
invoice_supplier_form |
account.invoice | button | Inherits account.invoice_supplier_form | |
res_config_settings_view_form |
res.config.settings | xpath | Inherits account.res_config_settings_view_form | |
view_partner_property_form |
res.partner | group | Inherits account.view_partner_property_form |
No new fields.
Public methods (1)name_get(self)
amount_total
Float
digits=dp.get_precision('Account')
readonly=True
string='Total'
amount_untaxed
Float
digits=dp.get_precision('Account')
readonly=True
string='Total Untaxed'
currency_id
Many2one → res.currency
readonly=True
args: 'res.currency'
import_config_id
Many2one → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config'
invoice_file
Binary
required=True
string='PDF or XML Invoice'
invoice_filename
Char
string='Filename'
invoice_id
Many2one → account.invoice
string='Draft Supplier Invoice to Update'
args: 'account.invoice'
invoice_type
Selection
readonly=True
string='Invoice or Refund'
args: [('in_invoice', 'Invoice'), ('in_refund', 'Refund')]
partner_id
Many2one → res.partner
readonly=True
string='Supplier'
args: 'res.partner'
state
Selection
default='import'
args: [('import', 'Import'), ('config', 'Select Invoice Import Configuration'), ('update', 'Update'), ('update-from-invoice', 'Update From Invoice')]
company_cannot_refund_vat(self)
create_invoice(self, parsed_inv, import_config=False)
create_invoice_action(self, parsed_inv=None, import_config=None)
create_invoice_action_button(self)
default_get(self, fields_list)
fallback_parse_pdf_invoice(self, file_data)
get_parsed_invoice(self)
import_invoice(self)
invoice_already_exists(self, commercial_partner, parsed_inv)
message_new(self, msg_dict, custom_values=None)
multi_xpath_helper(self, xml_root, xpath_list, namespaces, isdate=False, isfloat=False)
parse_invoice(self, invoice_file_b64, invoice_filename)
parse_pdf_invoice(self, file_data)
parse_xml_invoice(self, xml_root)
post_process_invoice(self, parsed_inv, invoice, import_config)
pre_process_parsed_inv(self, parsed_inv)
raw_multi_xpath_helper(self, xml_root, xpath_list, namespaces)
set_1line_price_unit_and_quantity(self, il_vals, parsed_inv)
set_1line_start_end_dates(self, il_vals, parsed_inv)
update_invoice(self)
update_invoice_lines(self, parsed_inv, invoice, seller)
xpath_to_dict_helper(self, xml_root, xpath_dict, namespaces)
account_analytic_id
Many2one → account.analytic.account
string='Analytic Account'
args: 'account.analytic.account'
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Expense Account'
args: 'account.account'
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
ondelete='cascade'
required=True
args: 'res.company'
invoice_line_method
Selection
default='1line_no_product'
help="The multi-line methods will not work for PDF invoices that don't have an embedded XML file. The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level."
required=True
string='Method for Invoice Line'
args: [('1line_no_product', 'Single Line, No Product'), ('1line_static_product', 'Single Line, Static Product'), ('nline_no_product', 'Multi Line, No Product'), ('nline_static_product', 'Multi Line, Static Product'), ('nline_auto_product', 'Multi Line, Auto-selected Product')]
label
Char
help='Force supplier invoice line description'
string='Force Description'
name
Char
required=True
partner_id
Many2one → res.partner
domain=[('supplier', '=', True), ('parent_id', '=', False)]
ondelete='cascade'
args: 'res.partner'
sequence
Integer
static_product_id
Many2one → product.product
tax_ids
Many2many → account.tax
domain=[('type_tax_use', '=', 'purchase')]
string='Taxes'
args: 'account.tax'
convert_to_import_config(self)
invoice_line_method_change(self)
adjustment_credit_account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account'
adjustment_debit_account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
args: 'account.account'
invoice_import_create_bank_account
Boolean
string='Auto-create Bank Account of Supplier'
invoice_import_email
Char
help='This field is used in multi-company setups to import the invoices received by the mail gateway in the appropriate company'
args: 'Mail Gateway: Destination E-mail'
No public methods.
adjustment_credit_account_id
Many2one
readonly=False
related='company_id.adjustment_credit_account_id'
adjustment_debit_account_id
Many2one
readonly=False
related='company_id.adjustment_debit_account_id'
invoice_import_create_bank_account
Boolean
readonly=False
related='company_id.invoice_import_create_bank_account'
invoice_import_email
Char
readonly=False
related='company_id.invoice_import_email'
No public methods.
invoice_import_count
Integer
compute='_compute_invoice_import_count'
readonly=True
string='Number of Invoice Import Configurations'
invoice_import_ids
One2many → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config', 'partner_id'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/11.0/account_invoice_import |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Andrea, OCA Transbot, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | http://www.akretion.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/bank-payment: - account_payment_partner - account_payment_mode OCA/community-data-files: - account_tax_unece - base_unece - product_uom_unece OCA/edi: - base_business_document_import OCA/partner-contact: - base_vat_sanitized OCA/server-tools: - onchange_helper odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - analytic - web_planner - portal - http_routing - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyPDF2 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_config_form |
account.invoice.import.config.form | account.invoice.import.config | form | New |
account_invoice_import_config_search |
account.invoice.import.config.search | account.invoice.import.config | search | New |
account_invoice_import_config_tree |
account.invoice.import.config.tree | account.invoice.import.config | tree | New |
account_invoice_import_form |
account.invoice.import.form | account.invoice.import | form | New |
invoice_supplier_form |
account_invoice_import.invoice.supplier.form | account.invoice | button | Inherits account.invoice_supplier_form |
res_config_settings_view_form |
invoice_import.res.config.settings.form | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_partner_property_form |
invoice.import.partner.form | res.partner | group | Inherits account.view_partner_property_form |
No new fields.
Public methods (1)name_get(self)
amount_total
Float
digits=dp.get_precision('Account')
readonly=True
string='Total'
amount_untaxed
Float
digits=dp.get_precision('Account')
readonly=True
string='Total Untaxed'
currency_id
Many2one → res.currency
readonly=True
args: 'res.currency', 'Currency'
import_config_id
Many2one → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config'
invoice_file
Binary
required=True
string='PDF or XML Invoice'
invoice_filename
Char
string='Filename'
invoice_id
Many2one → account.invoice
string='Draft Supplier Invoice to Update'
args: 'account.invoice'
invoice_type
Selection
readonly=True
string='Invoice or Refund'
args: [('in_invoice', 'Invoice'), ('in_refund', 'Refund')]
partner_id
Many2one → res.partner
readonly=True
string='Supplier'
args: 'res.partner'
state
Selection
default='import'
string='State'
args: [('import', 'Import'), ('config', 'Select Invoice Import Configuration'), ('update', 'Update'), ('update-from-invoice', 'Update From Invoice')]
company_cannot_refund_vat(self)
create_invoice(self, parsed_inv, import_config=False)
create_invoice_action(self, parsed_inv=None, import_config=None)
create_invoice_action_button(self)
default_get(self, fields_list)
fallback_parse_pdf_invoice(self, file_data)
import_invoice(self)
invoice_already_exists(self, commercial_partner, parsed_inv)
message_new(self, msg_dict, custom_values=None)
multi_xpath_helper(self, xml_root, xpath_list, namespaces, isdate=False, isfloat=False)
parse_invoice(self, invoice_file_b64, invoice_filename)
parse_pdf_invoice(self, file_data)
parse_xml_invoice(self, xml_root)
post_process_invoice(self, parsed_inv, invoice, import_config)
pre_process_parsed_inv(self, parsed_inv)
raw_multi_xpath_helper(self, xml_root, xpath_list, namespaces)
set_1line_price_unit_and_quantity(self, il_vals, parsed_inv)
set_1line_start_end_dates(self, il_vals, parsed_inv)
update_invoice(self)
update_invoice_lines(self, parsed_inv, invoice, seller)
xpath_to_dict_helper(self, xml_root, xpath_dict, namespaces)
account_analytic_id
Many2one → account.analytic.account
string='Analytic Account'
args: 'account.analytic.account'
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Expense Account'
args: 'account.account'
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
ondelete='cascade'
required=True
string='Company'
args: 'res.company'
invoice_line_method
Selection
default='1line_no_product'
help="The multi-line methods will not work for PDF invoices that don't have an embedded XML file. The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level."
required=True
string='Method for Invoice Line'
args: [('1line_no_product', 'Single Line, No Product'), ('1line_static_product', 'Single Line, Static Product'), ('nline_no_product', 'Multi Line, No Product'), ('nline_static_product', 'Multi Line, Static Product'), ('nline_auto_product', 'Multi Line, Auto-selected Product')]
label
Char
help='Force supplier invoice line description'
string='Force Description'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
domain=[('supplier', '=', True), ('parent_id', '=', False)]
ondelete='cascade'
string='Partner'
args: 'res.partner'
sequence
Integer
static_product_id
Many2one → product.product
string='Static Product'
args: 'product.product'
tax_ids
Many2many → account.tax
domain=[('type_tax_use', '=', 'purchase')]
string='Taxes'
args: 'account.tax'
convert_to_import_config(self)
invoice_line_method_change(self)
adjustment_credit_account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Adjustment Credit Account'
args: 'account.account'
adjustment_debit_account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Adjustment Debit Account'
args: 'account.account'
invoice_import_email
Char
help='This field is used in multi-company setups to import the invoices received by the mail gateway in the appropriate company'
args: 'Mail Gateway: Destination E-mail'
No public methods.
adjustment_credit_account_id
Many2one
related='company_id.adjustment_credit_account_id'
adjustment_debit_account_id
Many2one
related='company_id.adjustment_debit_account_id'
invoice_import_email
Char
related='company_id.invoice_import_email'
No public methods.
invoice_import_count
Integer
compute='_compute_invoice_import_count'
readonly=True
string='Number of Invoice Import Configurations'
invoice_import_ids
One2many → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config', 'partner_id'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/10.0/account_invoice_import |
| VERSION | |
| VERSION | 2.0.3 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Yannick Vaucher, Holger Brunn, Pedro M. Baeza, GitHub, OCA Transbot, oca-travis, OCA-git-bot, Iryna Vyshnevska, François Honoré |
| WEBSITE | |
| WEBSITE | http://www.akretion.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:19:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - product_uom_unece OCA/edi: - base_business_document_import OCA/partner-contact: - base_vat_sanitized OCA/server-tools: - onchange_helper odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - web_planner - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyPDF2 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_config_form |
account.invoice.import.config.form | account.invoice.import.config | form | New |
account_invoice_import_config_search |
account.invoice.import.config.search | account.invoice.import.config | search | New |
account_invoice_import_config_tree |
account.invoice.import.config.tree | account.invoice.import.config | tree | New |
account_invoice_import_form |
account.invoice.import.form | account.invoice.import | form | New |
account_journal_dashboard_kanban_view |
account_invoice_import.journal.dashboard | account.journal | xpath | Inherits account.account_journal_dashboard_kanban_view |
invoice_supplier_form |
account_invoice_import.invoice.supplier.form | account.invoice | button | Inherits account.invoice_supplier_form |
view_account_config_settings |
invoice_import.account.config.settings.form | account.config.settings | xpath | Inherits account.view_account_config_settings |
view_partner_property_form |
invoice.import.partner.form | res.partner | group | Inherits account.view_partner_property_form |
adjustment_credit_account_id
Many2one
related='company_id.adjustment_credit_account_id'
adjustment_debit_account_id
Many2one
related='company_id.adjustment_debit_account_id'
invoice_import_create_bank_account
Boolean
related='company_id.invoice_import_create_bank_account'
invoice_import_email
Char
related='company_id.invoice_import_email'
No public methods.
No new fields.
Public methods (1)name_get(self)
account_analytic_id
Many2one → account.analytic.account
string='Analytic Account'
args: 'account.analytic.account'
account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Expense Account'
args: 'account.account'
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
ondelete='cascade'
required=True
string='Company'
args: 'res.company'
invoice_line_method
Selection
default='1line_no_product'
help="The multi-line methods will not work for PDF invoices that don't have an embedded XML file. The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level."
required=True
string='Method for Invoice Line'
args: [('1line_no_product', 'Single Line, No Product'), ('1line_static_product', 'Single Line, Static Product'), ('nline_no_product', 'Multi Line, No Product'), ('nline_static_product', 'Multi Line, Static Product'), ('nline_auto_product', 'Multi Line, Auto-selected Product')]
label
Char
help='Force supplier invoice line description'
string='Force Description'
name
Char
required=True
string='Name'
partner_id
Many2one → res.partner
domain=[('supplier', '=', True), ('parent_id', '=', False)]
ondelete='cascade'
string='Partner'
args: 'res.partner'
sequence
Integer
static_product_id
Many2one → product.product
string='Static Product'
args: 'product.product'
tax_ids
Many2many → account.tax
domain=[('type_tax_use', '=', 'purchase')]
string='Taxes'
args: 'account.tax'
convert_to_import_config(self)
invoice_line_method_change(self)
adjustment_credit_account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Adjustment Credit Account'
args: 'account.account'
adjustment_debit_account_id
Many2one → account.account
domain=[('deprecated', '=', False)]
string='Adjustment Debit Account'
args: 'account.account'
invoice_import_create_bank_account
Boolean
string='Auto-create Bank Account of Supplier'
invoice_import_email
Char
help='This field is used in multi-company setups to import the invoices received by the mail gateway in the appropriate company'
args: 'Mail Gateway: Destination E-mail'
No public methods.
invoice_import_count
Integer
compute='_compute_invoice_import_count'
readonly=True
string='Number of Invoice Import Configurations'
invoice_import_ids
One2many → account.invoice.import.config
string='Invoice Import Configuration'
args: 'account.invoice.import.config', 'partner_id'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/9.0/account_invoice_import |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Holger Brunn |
| WEBSITE | |
| WEBSITE | http://www.akretion.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:20 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - product_uom_unece OCA/edi: - base_business_document_import OCA/partner-contact: - base_vat_sanitized odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - report - analytic - web_tip - web_planner - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyPDF2 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_config_form |
account.invoice.import.config.form | account.invoice.import.config | form | New |
account_invoice_import_config_tree |
account.invoice.import.config.tree | account.invoice.import.config | tree | New |
account_invoice_import_form |
account.invoice.import.form | account.invoice.import | form | New |
invoice_supplier_form |
account_invoice_import.invoice.supplier.form | account.invoice | button | Inherits account.invoice_supplier_form |
view_partner_property_form |
encres2.partner.form | res.partner | field | Inherits account.view_partner_property_form |
No new fields.
Public methods (1)name_get(self)
amount_total
Float
digits=dp.get_precision('Account')
readonly=True
string='Total'
amount_untaxed
Float
digits=dp.get_precision('Account')
readonly=True
string='Total Untaxed'
currency_id
Many2one → res.currency
readonly=True
args: 'res.currency', 'Currency'
invoice_file
Binary
required=True
string='PDF or XML Invoice'
invoice_filename
Char
string='Filename'
invoice_id
Many2one → account.invoice
string='Draft Supplier Invoice to Update'
args: 'account.invoice'
invoice_type
Selection
readonly=True
string='Invoice or Refund'
args: [('in_invoice', 'Invoice'), ('in_refund', 'Refund')]
partner_id
Many2one → res.partner
readonly=True
string='Supplier'
args: 'res.partner'
state
Selection
default='import'
string='State'
args: [('import', 'Import'), ('update', 'Update'), ('update-from-invoice', 'Update From Invoice')]
create_invoice(self)
fallback_parse_pdf_invoice(self, file_data)
import_invoice(self)
parse_invoice(self)
parse_pdf_invoice(self, file_data)
parse_xml_invoice(self, xml_root)
post_process_invoice(self, parsed_inv, invoice)
set_1line_price_unit_and_quantity(self, il_vals, parsed_inv)
set_1line_start_end_dates(self, il_vals, parsed_inv)
update_clean_parsed_inv(self, parsed_inv)
update_invoice(self)
update_invoice_lines(self, parsed_inv, invoice, seller)
account_analytic_id
Many2one → account.analytic.account
domain=[('type', '!=', 'view')]
string='Analytic Account'
args: 'account.analytic.account'
account_id
Many2one → account.account
domain=[('type', 'not in', ('view', 'closed'))]
string='Expense Account'
args: 'account.account'
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
ondelete='cascade'
required=True
string='Company'
args: 'res.company'
invoice_line_method
Selection
default='1line_no_product'
help="The multi-line methods will not work for PDF invoices that don't have an embedded XML file. The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level."
required=True
string='Method for Invoice Line'
args: [('1line_no_product', 'Single Line, No Product'), ('1line_static_product', 'Single Line, Static Product'), ('nline_no_product', 'Multi Line, No Product'), ('nline_static_product', 'Multi Line, Static Product'), ('nline_auto_product', 'Multi Line, Auto-selected Product')]
label
Char
help='Force supplier invoice line description'
string='Force Description'
name
Char
required=True
string='Name'
partner_ids
One2many → res.partner
string='Partners'
args: 'res.partner', 'invoice_import_id'
static_product_id
Many2one → product.product
string='Static Product'
args: 'product.product'
tax_ids
Many2many → account.tax
domain=[('type_tax_use', 'in', ('all', 'purchase'))]
string='Taxes'
args: 'account.tax'
No public methods.
invoice_import_id
Many2one → account.invoice.import.config
company_dependent=True
string='Invoice Import Configuration'
args: 'account.invoice.import.config'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/edi |
| GIT | |
| GIT | https://github.com/OCA/edi.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/edi/tree/8.0/account_invoice_import |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Pedro M. Baeza, OCA Transbot, Adrien Peiffer (ACSONE), oca-travis, OCA-git-bot, Alfredo Zamora, houssine |
| WEBSITE | |
| WEBSITE | http://www.akretion.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:22 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/community-data-files: - account_tax_unece - base_unece - product_uom_unece OCA/edi: - base_business_document_import OCA/partner-contact: - base_vat_sanitized odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - report - analytic - board - edi - email_template - base_iban - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyPDF2 |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_import_config_form |
account.invoice.import.config.form | account.invoice.import.config | form | New |
account_invoice_import_config_tree |
account.invoice.import.config.tree | account.invoice.import.config | tree | New |
account_invoice_import_form |
account.invoice.import.form | account.invoice.import | form | New |
invoice_supplier_form |
account_invoice_import.invoice.supplier.form | account.invoice | button | Inherits account.invoice_supplier_form |
view_partner_property_form |
encres2.partner.form | res.partner | field | Inherits account.view_partner_property_form |
No new fields.
Public methods (1)name_get(self)
amount_total
Float
digits=dp.get_precision('Account')
readonly=True
string='Total'
amount_untaxed
Float
digits=dp.get_precision('Account')
readonly=True
string='Total Untaxed'
currency_id
Many2one → res.currency
readonly=True
args: 'res.currency', 'Currency'
invoice_file
Binary
required=True
string='PDF or XML Invoice'
invoice_filename
Char
string='Filename'
invoice_id
Many2one → account.invoice
string='Draft Supplier Invoice to Update'
args: 'account.invoice'
invoice_type
Selection
readonly=True
string='Invoice or Refund'
args: [('in_invoice', 'Invoice'), ('in_refund', 'Refund')]
partner_id
Many2one → res.partner
readonly=True
string='Supplier'
args: 'res.partner'
state
Selection
default='import'
string='State'
args: [('import', 'Import'), ('update', 'Update'), ('update-from-invoice', 'Update From Invoice')]
create_invoice(self)
fallback_parse_pdf_invoice(self, file_data)
import_invoice(self)
parse_invoice(self)
parse_pdf_invoice(self, file_data)
parse_xml_invoice(self, xml_root)
post_process_invoice(self, parsed_inv, invoice)
set_1line_price_unit_and_quantity(self, il_vals, parsed_inv)
set_1line_start_end_dates(self, il_vals, parsed_inv)
update_clean_parsed_inv(self, parsed_inv)
update_invoice(self)
update_invoice_lines(self, parsed_inv, invoice, seller)
account_analytic_id
Many2one → account.analytic.account
domain=[('type', '!=', 'view')]
string='Analytic Account'
args: 'account.analytic.account'
account_id
Many2one → account.account
domain=[('type', 'not in', ('view', 'closed'))]
string='Expense Account'
args: 'account.account'
active
Boolean
default=True
company_id
Many2one → res.company
default=<expr>
ondelete='cascade'
required=True
string='Company'
args: 'res.company'
invoice_line_method
Selection
default='1line_no_product'
help="The multi-line methods will not work for PDF invoices that don't have an embedded XML file. The 'Multi Line, Auto-selected Product' method will only work with ZUGFeRD invoices at Comfort or Extended level, not at Basic level."
required=True
string='Method for Invoice Line'
args: [('1line_no_product', 'Single Line, No Product'), ('1line_static_product', 'Single Line, Static Product'), ('nline_no_product', 'Multi Line, No Product'), ('nline_static_product', 'Multi Line, Static Product'), ('nline_auto_product', 'Multi Line, Auto-selected Product')]
label
Char
help='Force supplier invoice line description'
string='Force Description'
name
Char
required=True
string='Name'
partner_ids
One2many → res.partner
string='Partners'
args: 'res.partner', 'invoice_import_id'
static_product_id
Many2one → product.product
string='Static Product'
args: 'product.product'
tax_ids
Many2many → account.tax
domain=[('type_tax_use', 'in', ('all', 'purchase'))]
string='Taxes'
args: 'account.tax'
No public methods.
invoice_import_id
Many2one → account.invoice.import.config
company_dependent=True
string='Invoice Import Configuration'
args: 'account.invoice.import.config'
No public methods.
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/edi |
| PULL REQUEST | |
| PULL REQUEST | [17.0][MIG] account_invoice_import: Migration to 17.0 (#1295) |
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/edi |
| PULL REQUEST | |
| PULL REQUEST | [19.0][MIG] account_invoice_import: Migration to 19.0 (#1363) |