Account Invoice Import Simple PDF

account_invoice_import_simple_pdf
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/18.0/account_invoice_import_simple_pdf
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/edi
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:09:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/community-data-files:
    - account_tax_unece
    - base_unece
    - uom_unece
OCA/edi:
    - account_invoice_import
    - base_business_document_import
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
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dateparser
pymupdf
pypdf>=3.1.0
regex
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_invoice_import_form account.invoice.import ul Inherits account_invoice_import.account_invoice_import_form
account_invoice_import_simple_pdf_fields_form account.invoice.import.simple.pdf.fields form New
account_invoice_import_simple_pdf_fields_tree account.invoice.import.simple.pdf.fields list New
account_invoice_import_simple_pdf_invoice_number_form account.invoice.import.simple.pdf.invoice.number form New
account_invoice_import_simple_pdf_invoice_number_tree account.invoice.import.simple.pdf.invoice.number list New
view_partner_property_form res.partner page Inherits account_invoice_import.view_partner_property_form
view_partner_property_form_move res.partner group Inherits account_invoice_import_simple_pdf.view_partner_property_form
Models touched (4)

New fields (0)

No new fields.

Public methods (4)
  • fallback_parse_pdf_invoice(self, file_data, company)
    @api.model
    This method must be inherited by additional modules with the same kind of logic as the account_bank_statement_import_* modules
  • simple_pdf_match_partner(self, raw_text_no_space, test_results=None)
    @api.model
  • simple_pdf_parse_invoice(self, file_data, test_info=None)
    @api.model
  • simple_pdf_text_extraction(self, file_data, test_info)
    @api.model

New fields (10)
  • date_format Selection
    help='Leave empty if the format used is the same as the format defined in the global section.' string='Specific Date Format' args: '_date_format_sel'
  • date_separator Selection
    compute='_compute_date_separator' help='Leave empty if the format used is the same as the format defined in the global section.' precompute=True readonly=False store=True string='Specific Date Separator' args: '_date_separator_sel'
  • end Char
    string='End String'
  • extract_rule Selection
    compute='_compute_extract_rule' precompute=True readonly=False required=True store=True args: [('first', 'First'), ('last', 'Last'), ('position_start', 'Specific Position from Start'), ('position_end', 'Specific Position from End'), ('min', 'Min'), ('max', 'Max'), ('position_min', 'Specific Position from Min'), ('position_max', 'Specific Position from Max')]
  • name Selection
    required=True string='Field' args: [('amount_total', 'Total'), ('amount_untaxed', 'Untaxed Amount'), ('amount_tax', 'Tax Amount'), ('date', 'Invoice Date'), ('date_due', 'Due Date'), ('date_start', 'Start Date'), ('date_end', 'End Date'), ('invoice_number', 'Invoice Number'), ('description', 'Description')]
  • partner_id Many2one → res.partner
    ondelete='cascade' string='Vendor' args: 'res.partner'
  • position Integer
    default=2
  • regexp Char
    string='Specific Regular Expression'
  • sequence Integer
    default=10
  • start Char
    string='Start String'
Public methods (2)
  • get_value_from_list(self, data_list, test_info, raise_if_none=True)
  • restrict_text(self, raw_text, test_info)

New fields (6)
  • fixed_char Char
  • occurrence_max Integer
    compute='_compute_occurrence_max' default=1 precompute=True readonly=False store=True string='Maximum Occurence'
  • occurrence_min Integer
    default=1 string='Minimum Occurence'
  • partner_id Many2one → res.partner
    ondelete='cascade' string='Vendor' args: 'res.partner'
  • sequence Integer
    default=10
  • string_type Selection
    required=True string='Type' args: '_string_type_sel'
Public methods (0)

No public methods.

New fields (13)
  • simple_pdf_currency_id Many2one → res.currency
    help='If empty, Odoo will use the company currency.' ondelete='restrict' string='Invoice Import Currency' args: 'res.currency'
  • simple_pdf_date_format Selection
    help="If the date format uses 'Month', check that the language is properly configured on the partner. 'Month' works both in full and short version ('January' and 'Jan.')." string='Date Format' args: '_simple_pdf_date_format_sel'
  • simple_pdf_date_separator Selection
    compute='_compute_simple_pdf_date_separator' help="If the date looks like 'Sep. 4, 2021', use 'space' as date separator (Odoo will ignore the dot and comma)." precompute=True readonly=False store=True string='Date Separator' args: '_simple_pdf_date_separator_sel'
  • simple_pdf_decimal_separator Selection
    compute='_compute_simple_pdf_decimal_separator' help='If empty, Odoo will use the decimal separator configured on the language of the partner.' precompute=True readonly=False store=True string='Decimal Separator' args: [('dot', 'dot'), ('comma', 'comma')]
  • simple_pdf_field_ids One2many → account.invoice.import.simple.pdf.fields
    string='Fields for PDF Invoice Import' args: 'account.invoice.import.simple.pdf.fields', 'partner_id'
  • simple_pdf_invoice_number_ids One2many → account.invoice.import.simple.pdf.invoice.number
    string='Invoice Import Number Format' args: 'account.invoice.import.simple.pdf.invoice.number', 'partner_id'
  • simple_pdf_keyword Char
    help="If empty, Odoo will use the VAT number to identify the partner. To match on several keywords, separate them with '|' (pipe)."
  • simple_pdf_pages Selection
    default='all' string='Page Analysis' args: [('first', 'First Page Only'), ('all', 'All Pages')]
  • simple_pdf_test_file Binary
    attachment=True string='Test PDF Invoice File'
  • simple_pdf_test_filename Char
    string='Test PDF Invoice Filename'
  • simple_pdf_test_raw_text Text
    readonly=True string='Test Text Extraction'
  • simple_pdf_test_results Html
    readonly=True string='Test Results'
  • simple_pdf_thousand_separator Selection
    compute='_compute_simple_pdf_thousand_separator' help='If empty, Odoo will use the thousand separator configured on the language of the partner.' precompute=True readonly=False store=True string='Thousand Separator' args: [('none', 'none'), ('space', 'space'), ('dot', 'dot'), ('comma', 'comma'), ('apostrophe', 'apostrophe')]
Public methods (3)
  • pdf_simple_generate_default_fields(self)
  • pdf_simple_test_cleanup(self)
  • pdf_simple_test_run(self)
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/16.0/account_invoice_import_simple_pdf
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci, Marwan Behillil
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:
    - account_invoice_import
    - base_business_document_import
    - 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
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dateparser
pypdf>=3.1.0
regex
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES libmupdf-dev
mupdf
mupdf-tools
poppler-utils
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_invoice_import_form account.invoice.import ul Inherits account_invoice_import.account_invoice_import_form
account_invoice_import_simple_pdf_fields_form account.invoice.import.simple.pdf.fields form New
account_invoice_import_simple_pdf_fields_tree account.invoice.import.simple.pdf.fields tree New
account_invoice_import_simple_pdf_invoice_number_form account.invoice.import.simple.pdf.invoice.number form New
account_invoice_import_simple_pdf_invoice_number_tree account.invoice.import.simple.pdf.invoice.number tree New
view_partner_property_form res.partner page Inherits account_invoice_import.view_partner_property_form
view_partner_property_form_move res.partner group Inherits account_invoice_import_simple_pdf.view_partner_property_form
Models touched (4)

New fields (0)

No new fields.

Public methods (4)
  • fallback_parse_pdf_invoice(self, file_data, company)
    @api.model
    This method must be inherited by additional modules with the same kind of logic as the account_bank_statement_import_* modules
  • simple_pdf_match_partner(self, raw_text_no_space, test_results=None)
    @api.model
  • simple_pdf_parse_invoice(self, file_data, test_info=None)
    @api.model
  • simple_pdf_text_extraction(self, file_data, test_info)
    @api.model

New fields (10)
  • date_format Selection
    help='Leave empty if the format used is the same as the format defined in the global section.' string='Specific Date Format' args: '_date_format_sel'
  • date_separator Selection
    compute='_compute_date_separator' help='Leave empty if the format used is the same as the format defined in the global section.' precompute=True readonly=False store=True string='Specific Date Separator' args: '_date_separator_sel'
  • end Char
    string='End String'
  • extract_rule Selection
    compute='_compute_extract_rule' precompute=True readonly=False required=True store=True args: [('first', 'First'), ('last', 'Last'), ('position_start', 'Specific Position from Start'), ('position_end', 'Specific Position from End'), ('min', 'Min'), ('max', 'Max'), ('position_min', 'Specific Position from Min'), ('position_max', 'Specific Position from Max')]
  • name Selection
    required=True string='Field' args: [('amount_total', 'Total'), ('amount_untaxed', 'Untaxed Amount'), ('amount_tax', 'Tax Amount'), ('date', 'Invoice Date'), ('date_due', 'Due Date'), ('date_start', 'Start Date'), ('date_end', 'End Date'), ('invoice_number', 'Invoice Number'), ('description', 'Description')]
  • partner_id Many2one → res.partner
    ondelete='cascade' string='Vendor' args: 'res.partner'
  • position Integer
    default=2
  • regexp Char
    string='Specific Regular Expression'
  • sequence Integer
    default=10
  • start Char
    string='Start String'
Public methods (2)
  • get_value_from_list(self, data_list, test_info, raise_if_none=True)
  • restrict_text(self, raw_text, test_info)

New fields (6)
  • fixed_char Char
  • occurrence_max Integer
    compute='_compute_occurrence_max' default=1 precompute=True readonly=False store=True string='Maximum Occurence'
  • occurrence_min Integer
    default=1 string='Minimum Occurence'
  • partner_id Many2one → res.partner
    ondelete='cascade' string='Vendor' args: 'res.partner'
  • sequence Integer
    default=10
  • string_type Selection
    required=True string='Type' args: '_string_type_sel'
Public methods (0)

No public methods.

New fields (13)
  • simple_pdf_currency_id Many2one → res.currency
    help='If empty, Odoo will use the company currency.' ondelete='restrict' string='Invoice Import Currency' args: 'res.currency'
  • simple_pdf_date_format Selection
    help="If the date format uses 'Month', check that the language is properly configured on the partner. 'Month' works both in full and short version ('January' and 'Jan.')." string='Date Format' args: '_simple_pdf_date_format_sel'
  • simple_pdf_date_separator Selection
    compute='_compute_simple_pdf_date_separator' help="If the date looks like 'Sep. 4, 2021', use 'space' as date separator (Odoo will ignore the dot and comma)." precompute=True readonly=False store=True string='Date Separator' args: '_simple_pdf_date_separator_sel'
  • simple_pdf_decimal_separator Selection
    compute='_compute_simple_pdf_decimal_separator' help='If empty, Odoo will use the decimal separator configured on the language of the partner.' precompute=True readonly=False store=True string='Decimal Separator' args: [('dot', 'dot'), ('comma', 'comma')]
  • simple_pdf_field_ids One2many → account.invoice.import.simple.pdf.fields
    string='Fields for PDF Invoice Import' args: 'account.invoice.import.simple.pdf.fields', 'partner_id'
  • simple_pdf_invoice_number_ids One2many → account.invoice.import.simple.pdf.invoice.number
    string='Invoice Import Number Format' args: 'account.invoice.import.simple.pdf.invoice.number', 'partner_id'
  • simple_pdf_keyword Char
    help="If empty, Odoo will use the VAT number to identify the partner. To match on several keywords, separate them with '|' (pipe)."
  • simple_pdf_pages Selection
    default='all' string='Page Analysis' args: [('first', 'First Page Only'), ('all', 'All Pages')]
  • simple_pdf_test_file Binary
    attachment=True string='Test PDF Invoice File'
  • simple_pdf_test_filename Char
    string='Test PDF Invoice Filename'
  • simple_pdf_test_raw_text Text
    readonly=True string='Test Text Extraction'
  • simple_pdf_test_results Html
    readonly=True string='Test Results'
  • simple_pdf_thousand_separator Selection
    compute='_compute_simple_pdf_thousand_separator' help='If empty, Odoo will use the thousand separator configured on the language of the partner.' precompute=True readonly=False store=True string='Thousand Separator' args: [('none', 'none'), ('space', 'space'), ('dot', 'dot'), ('comma', 'comma'), ('apostrophe', 'apostrophe')]
Public methods (3)
  • pdf_simple_generate_default_fields(self)
  • pdf_simple_test_cleanup(self)
  • pdf_simple_test_run(self)
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/14.0/account_invoice_import_simple_pdf
VERSION
VERSION 4.1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Raphaël Valyi, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Florent THOMAS, oca-ci, thien
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:
    - account_invoice_import
    - base_business_document_import
    - pdf_helper
OCA/server-tools:
    - onchange_helper
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES dateparser
pypdf>=3.1.0,<5.0
regex
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES libmupdf-dev
mupdf
mupdf-tools
poppler-utils
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
account_invoice_import_form account.invoice.import ul Inherits account_invoice_import.account_invoice_import_form
account_invoice_import_simple_pdf_fields_form account.invoice.import.simple.pdf.fields form New
account_invoice_import_simple_pdf_fields_tree account.invoice.import.simple.pdf.fields tree New
account_invoice_import_simple_pdf_invoice_number_form account.invoice.import.simple.pdf.invoice.number form New
account_invoice_import_simple_pdf_invoice_number_tree account.invoice.import.simple.pdf.invoice.number tree New
view_partner_property_form res.partner div Inherits account_invoice_import.view_partner_property_form
Models touched (4)

New fields (0)

No new fields.

Public methods (4)
  • fallback_parse_pdf_invoice(self, file_data)
    @api.model
    This method must be inherited by additional modules with the same kind of logic as the account_bank_statement_import_* modules
  • simple_pdf_match_partner(self, raw_text_no_space, test_results=None)
    @api.model
  • simple_pdf_parse_invoice(self, file_data, test_info=None)
    @api.model
  • simple_pdf_text_extraction(self, file_data, test_info)
    @api.model

New fields (10)
  • date_format Selection
    help='Leave empty if the format used is the same as the format defined in the global section.' string='Specific Date Format' args: '_date_format_sel'
  • date_separator Selection
    help='Leave empty if the format used is the same as the format defined in the global section.' string='Specific Date Separator' args: '_date_separator_sel'
  • end Char
    string='End String'
  • extract_rule Selection
    required=True string='Extract Rule' args: [('first', 'First'), ('last', 'Last'), ('position_start', 'Specific Position from Start'), ('position_end', 'Specific Position from End'), ('min', 'Min'), ('max', 'Max'), ('position_min', 'Specific Position from Min'), ('position_max', 'Specific Position from Max')]
  • name Selection
    required=True string='Field' args: [('amount_total', 'Total'), ('amount_untaxed', 'Untaxed Amount'), ('amount_tax', 'Tax Amount'), ('date', 'Invoice Date'), ('date_due', 'Due Date'), ('date_start', 'Start Date'), ('date_end', 'End Date'), ('invoice_number', 'Invoice Number'), ('description', 'Description')]
  • partner_id Many2one → res.partner
    ondelete='cascade' string='Vendor' args: 'res.partner'
  • position Integer
    default=2
  • regexp Char
    string='Specific Regular Expression'
  • sequence Integer
    default=10
  • start Char
    string='Start String'
Public methods (4)
  • date_format_change(self)
    @api.onchange('date_format')
  • field_change(self)
    @api.onchange('name')
  • get_value_from_list(self, data_list, test_info, raise_if_none=True)
  • restrict_text(self, raw_text, test_info)

New fields (6)
  • fixed_char Char
  • occurrence_max Integer
    default=1 string='Maximum Occurence'
  • occurrence_min Integer
    default=1 string='Minimum Occurence'
  • partner_id Many2one → res.partner
    ondelete='cascade' string='Vendor' args: 'res.partner'
  • sequence Integer
    default=10
  • string_type Selection
    required=True string='Type' args: '_string_type_sel'
Public methods (1)
  • occurrence_min_change(self)
    @api.onchange('occurrence_min')

New fields (13)
  • simple_pdf_currency_id Many2one → res.currency
    help='If empty, Odoo will use the company currency.' ondelete='restrict' string='Invoice Import Currency' args: 'res.currency'
  • simple_pdf_date_format Selection
    help="If the date format uses 'Month', check that the language is properly configured on the partner. 'Month' works both in full and short version ('January' and 'Jan.')." string='Date Format' args: '_simple_pdf_date_format_sel'
  • simple_pdf_date_separator Selection
    help="If the date looks like 'Sep. 4, 2021', use 'space' as date separator (Odoo will ignore the dot and comma)." string='Date Separator' args: '_simple_pdf_date_separator_sel'
  • simple_pdf_decimal_separator Selection
    help='If empty, Odoo will use the decimal separator configured on the language of the partner.' string='Decimal Separator' args: [('dot', 'dot'), ('comma', 'comma')]
  • simple_pdf_field_ids One2many → account.invoice.import.simple.pdf.fields
    string='Fields for PDF Invoice Import' args: 'account.invoice.import.simple.pdf.fields', 'partner_id'
  • simple_pdf_invoice_number_ids One2many → account.invoice.import.simple.pdf.invoice.number
    string='Invoice Import Number Format' args: 'account.invoice.import.simple.pdf.invoice.number', 'partner_id'
  • simple_pdf_keyword Char
    help="If empty, Odoo will use the VAT number to identify the partner. To match on several keywords, separate them with '|' (pipe)."
  • simple_pdf_pages Selection
    default='all' string='Page Analysis' args: [('first', 'First Page Only'), ('all', 'All Pages')]
  • simple_pdf_test_file Binary
    attachment=True string='Test PDF Invoice File'
  • simple_pdf_test_filename Char
    string='Test PDF Invoice Filename'
  • simple_pdf_test_raw_text Text
    readonly=True string='Test Text Extraction'
  • simple_pdf_test_results Html
    readonly=True string='Test Results'
  • simple_pdf_thousand_separator Selection
    help='If empty, Odoo will use the thousand separator configured on the language of the partner.' string='Thousand Separator' args: [('none', 'none'), ('space', 'space'), ('dot', 'dot'), ('comma', 'comma'), ('apostrophe', 'apostrophe')]
Public methods (5)
  • pdf_simple_generate_default_fields(self)
  • pdf_simple_test_cleanup(self)
  • pdf_simple_test_run(self)
  • simple_pdf_date_format_change(self)
    @api.onchange('simple_pdf_date_format')
  • simple_pdf_decimal_separator_change(self)
    @api.onchange('simple_pdf_decimal_separator')