Base Business Document Import

base_business_document_import
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/19.0/base_business_document_import
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Maksym Yankin
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This is a technical module ; it doesn't bring any useful feature by
itself. This module is the base modules for 2 other modules :

- *account_invoice_import* which imports supplier invoices as PDF or XML
  files (this module also requires some additional modules such as
  *account_invoice_import_invoice2data*, *account_invoice_import_ubl*,
  etc... to support specific invoice formats),
- *sale_invoice_import* which imports sale orders as CSV, XML or PDF
  files (this module also requires some additional modules such as
  *sale_invoice_import_csv* or *sale_invoice_import_ubl* to support
  specific order formats)

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (3)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, method, data_dict, error_msg, chatter_msg, raise_exception)
    @api.model
    The method and data_dict arguments are useful when you want to inherit this method to update the error messag_match_currencye
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/18.0/base_business_document_import
VERSION
VERSION 2.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, Simone Orsi, SilvioC2C, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This is a technical module ; it doesn't bring any useful feature by
itself. This module is the base modules for 2 other modules :

- *account_invoice_import* which imports supplier invoices as PDF or XML
  files (this module also requires some additional modules such as
  *account_invoice_import_invoice2data*, *account_invoice_import_ubl*,
  etc... to support specific invoice formats),
- *sale_invoice_import* which imports sale orders as CSV, XML or PDF
  files (this module also requires some additional modules such as
  *sale_invoice_import_csv* or *sale_invoice_import_ubl* to support
  specific order formats)

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (3)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, method, data_dict, error_msg, chatter_msg, raise_exception)
    @api.model
    The method and data_dict arguments are useful when you want to inherit this method to update the error messag_match_currencye
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/17.0/base_business_document_import
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, chien
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
OCA/edi:
    - pdf_helper
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This is a technical module ; it doesn't bring any useful feature by
itself. This module is the base modules for 2 other modules :

- *account_invoice_import* which imports supplier invoices as PDF or XML
  files (this module also requires some additional modules such as
  *account_invoice_import_invoice2data*, *account_invoice_import_ubl*,
  etc... to support specific invoice formats),
- *sale_invoice_import* which imports sale orders as CSV, XML or PDF
  files (this module also requires some additional modules such as
  *sale_invoice_import_csv* or *sale_invoice_import_ubl* to support
  specific order formats)

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, method, data_dict, error_msg)
    @api.model
    The method and data_dict arguments are useful when you want to inherit this method to update the error messag_match_currencye
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/16.0/base_business_document_import
VERSION
VERSION 1.4.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSAlexis de Lattre, Nils Hamerlinck, Weblate, OCA-git-bot, oca-ci, bosd, Goncalo Brito, Souheil Bejaoui, Gediminas Venclova
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
OCA/edi:
    - pdf_helper
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, method, data_dict, error_msg, chatter_msg, raise_exception)
    @api.model
    The method and data_dict arguments are useful when you want to inherit this method to update the error message
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/14.0/base_business_document_import
VERSION
VERSION 3.2.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSAlexis de Lattre, Enric Tobella, Florent Xicluna, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Simone Orsi, oca-ci, bosd, Hai Lang, Tran Thanh Phuc, Robin Conjour
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
OCA/edi:
    - pdf_helper
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pypdf>=3.1.0,<5.0
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, method, data_dict, error_msg)
    @api.model
    The method and data_dict arguments are useful when you want to inherit this method to update the error message
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/13.0/base_business_document_import
VERSION
VERSION 2.1.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSJacques-Etienne Baudoux, sebalix, Lois Rilo, OCA Transbot, Thierry Ducrest, oca-travis, Weblate, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, error_msg)
    @api.model
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/12.0/base_business_document_import
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSAlexis de Lattre, Andrea, OCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
OCA/partner-contact:
    - base_vat_sanitized
odoo/odoo:
    - base_vat
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyPDF2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, error_msg)
    @api.model
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/11.0/base_business_document_import
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Nicolas JEUDY
COMMITTERS
COMMITTERSHolger Brunn, Andrea, OCA Transbot, Nicolas JEUDY, oca-travis, OCA-git-bot, tarteo
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - product_uom_unece
OCA/partner-contact:
    - base_vat_sanitized
odoo/odoo:
    - base_vat
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyPDF2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, error_msg)
    @api.model
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/10.0/base_business_document_import
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Holger Brunn, Pedro M. Baeza, GitHub, Andrea, OCA Transbot, David Beal, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - product_uom_unece
OCA/partner-contact:
    - base_vat_sanitized
odoo/odoo:
    - base_vat
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyPDF2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'barcode': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, error_msg)
    @api.model
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/9.0/base_business_document_import
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSHolger Brunn
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - product_uom_unece
OCA/partner-contact:
    - base_vat_sanitized
odoo/odoo:
    - base_vat
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyPDF2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (3)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'ean13': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record)
    @api.model
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/8.0/base_business_document_import
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, GitHub, OCA Transbot, Adrien Peiffer (ACSONE), David Beal, oca-travis, OCA-git-bot, houssine
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - product_uom_unece
OCA/partner-contact:
    - base_vat_sanitized
odoo/odoo:
    - base_vat
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyPDF2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (0)

No views found for this module.

Models touched (1)

New fields (0)

No new fields.

Public methods (4)
  • compare_lines(self, existing_lines, import_lines, chatter_msg, qty_precision=None, price_precision=None, seller=False)
    Example: existing_lines = [{ 'product': odoo_recordset, 'name': 'USB Adapter', 'qty': 1.5, 'price_unit': 23.43, # without taxes 'uom': uom, 'line': recordset, # Add taxes }] import_lines = [{ 'product': { 'ean13': '2100002000003', 'code': 'EAZY1', }, 'quantity': 2, 'price_unit': 12.42, # without taxes 'uom': {'unece_code': 'C62'}, }] Result of the method: { 'to_remove': line_multirecordset, 'to_add': [ { 'product': recordset1, 'uom', recordset, 'import_line': {import dict}, # We provide product and uom as recordset to avoid the # need to compute a second match ] 'to_update': { 'line1_recordset': {'qty': [1, 2], 'price_unit': [4.5, 4.6]}, # qty must be updated from 1 to 2 # price must be updated from 4.5 to 4.6 'line2_recordset': {'qty': [12, 13]}, # only qty must be updated } } The check existing_currency == import_currency must be done before the call to compare_lines()
  • get_xml_files_from_pdf(self, pdf_file)
    Returns a dict with key = filename, value = XML file obj
  • post_create_or_update(self, parsed_dict, record, doc_filename=None)
    @api.model
  • user_error_wrap(self, error_msg)
    @api.model