Account Invoice Download

account_invoice_download
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/18.0/account_invoice_download
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYAccounting
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, Weblate, OCA-git-bot, 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
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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module is the technical basis to automate the download of supplier
invoices with Odoo. It must be used in combination with additionnal
modules that add download backends. The technical name of these
additionnal modules usually start with **account_invoice_download\_**.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
account_invoice_download_config_form account.invoice.download.config.form account.invoice.download.config form New
account_invoice_download_config_search account.invoice.download.config.search account.invoice.download.config search New
account_invoice_download_config_tree account.invoice.download.config.tree account.invoice.download.config list New
account_invoice_download_credentials_form account.invoice.download.credentials.form account.invoice.download.credentials form New
account_invoice_download_log_form account.invoice.download.log.form account.invoice.download.log form New
account_invoice_download_log_graph account.invoice.download.log.graph account.invoice.download.log graph New
account_invoice_download_log_pivot account.invoice.download.log.pivot account.invoice.download.log pivot New
account_invoice_download_log_search account.invoice.download.log.search account.invoice.download.log search New
account_invoice_download_log_tree account.invoice.download.log.tree account.invoice.download.log list New
view_partner_property_form res.partner.account.invoice.download.config res.partner group Inherits account_invoice_import.view_partner_property_form
Models touched (4)

New fields (14)
  • active Boolean
    default=True
  • backend Selection
    args: []
  • backward_days Integer
    help='By default, Odoo will download all invoices that are after the last download date. But it may happen that invoices are available online for download several days after their generation. So, if you set this parameter to 5, Odoo will download all invoices that are after the last download date minus 5 days.'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • download_start_date Date
    compute='_compute_download_start_date' store=True
  • interval_number Integer
    default=1 string='Frequency'
  • interval_type Selection
    default='months' string='Download Frequency' args: [('days', 'Day(s)'), ('weeks', 'Week(s)'), ('months', 'Month(s)'), ('years', 'Year(s)')]
  • last_run Date
    help='Date of the last successfull download' string='Last Download Date'
  • log_ids One2many → account.invoice.download.log
    readonly=True string='Logs' args: 'account.invoice.download.log', 'download_config_id'
  • login Char
  • method Selection
    default='manual' required=True string='Download Method' args: [('manual', 'Manual'), ('auto', 'Automatic')]
  • next_run Date
    string='Next Download Date'
  • partner_id Many2one → res.partner
    check_company=True domain=[('parent_id', '=', False)] ondelete='cascade' required=True args: 'res.partner'
  • password Char
    help="If you don't want to store the password in Odoo's database, leave this field empty and you will get a wizard to ask you the password on every download."
Public methods (6)
  • credentials_stored(self)
  • download(self, credentials, logs)
    Returns a list of either: - pivot dict (example: ovh backend) - tuple: (invoice_file_b64, invoice_filename) (example: weboob). This method is inherited in backend-specific modules
  • prepare_credentials(self)
  • run(self, credentials)
    Do the real work. Handle try/except. Create log. Return list of invoices and log
  • run_button(self)
  • run_cron(self)
    @api.model

New fields (6)
  • backend Selection
    readonly=True related='download_config_id.backend'
  • download_config_id Many2one → account.invoice.download.config
    required=True args: 'account.invoice.download.config', 'Invoice Download Config'
  • invoice_ids_str Char
    help='This field is a technical hack to be able to return the action with the created invoices'
  • log_id Many2one → account.invoice.download.log
    args: 'account.invoice.download.log'
  • login Char
  • password Char
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields_list)
    @api.model
  • prepare_and_remove_credentials(self, vals)
    @api.model
  • run(self)
    The real work is made in create(), not here!

New fields (6)
  • company_id Many2one → res.company
    related='download_config_id.company_id' store=True args: 'res.company'
  • download_config_id Many2one → account.invoice.download.config
    readonly=True args: 'account.invoice.download.config'
  • invoice_count Integer
    readonly=True string='Number of Invoices Downloaded'
  • message Text
    readonly=True
  • partner_id Many2one
    related='download_config_id.partner_id' store=True
  • result Selection
    readonly=True args: [('success', 'Success'), ('failure', 'Failure')]
Public methods (0)

No public methods.

New fields (2)
  • download_config_count Integer
    compute='_compute_download_config_count' groups='account.group_account_invoice,account.group_account_readonly'
  • download_config_ids One2many → account.invoice.download.config
    string='Download Configurations' args: 'account.invoice.download.config', 'partner_id'
Public methods (1)
  • jump_to_download_config(self)
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/16.0/account_invoice_download
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting
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, Weblate, OCA-git-bot, oca-ci
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 Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
account_invoice_download_config_form account.invoice.download.config.form account.invoice.download.config form New
account_invoice_download_config_search account.invoice.download.config.search account.invoice.download.config search New
account_invoice_download_config_tree account.invoice.download.config.tree account.invoice.download.config tree New
account_invoice_download_credentials_form account.invoice.download.credentials.form account.invoice.download.credentials form New
account_invoice_download_log_form account.invoice.download.log.form account.invoice.download.log form New
account_invoice_download_log_graph account.invoice.download.log.graph account.invoice.download.log graph New
account_invoice_download_log_pivot account.invoice.download.log.pivot account.invoice.download.log pivot New
account_invoice_download_log_search account.invoice.download.log.search account.invoice.download.log search New
account_invoice_download_log_tree account.invoice.download.log.tree account.invoice.download.log tree New
view_partner_property_form res.partner.account.invoice.download.config res.partner group Inherits account_invoice_import.view_partner_property_form
Models touched (4)

New fields (14)
  • active Boolean
    default=True
  • backend Selection
    args: []
  • backward_days Integer
    help='By default, Odoo will download all invoices that are after the last download date. But it may happen that invoices are available online for download several days after their generation. So, if you set this parameter to 5, Odoo will download all invoices that are after the last download date minus 5 days.'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • download_start_date Date
    compute='_compute_download_start_date' store=True
  • interval_number Integer
    default=1 string='Frequency'
  • interval_type Selection
    default='months' string='Download Frequency' args: [('days', 'Day(s)'), ('weeks', 'Week(s)'), ('months', 'Month(s)'), ('years', 'Year(s)')]
  • last_run Date
    help='Date of the last successfull download' string='Last Download Date'
  • log_ids One2many → account.invoice.download.log
    readonly=True string='Logs' args: 'account.invoice.download.log', 'download_config_id'
  • login Char
  • method Selection
    default='manual' required=True string='Download Method' args: [('manual', 'Manual'), ('auto', 'Automatic')]
  • next_run Date
    string='Next Download Date'
  • partner_id Many2one → res.partner
    check_company=True domain=[('parent_id', '=', False)] ondelete='cascade' required=True args: 'res.partner'
  • password Char
    help="If you don't want to store the password in Odoo's database, leave this field empty and you will get a wizard to ask you the password on every download."
Public methods (7)
  • credentials_stored(self)
  • download(self, credentials, logs)
    Returns a list of either: - pivot dict (example: ovh backend) - tuple: (invoice_file_b64, invoice_filename) (example: weboob). This method is inherited in backend-specific modules
  • name_get(self)
    @api.depends('partner_id', 'backend', 'method')
  • prepare_credentials(self)
  • run(self, credentials)
    Do the real work. Handle try/except. Create log. Return list of invoices and log
  • run_button(self)
  • run_cron(self)
    @api.model

New fields (6)
  • backend Selection
    readonly=True related='download_config_id.backend'
  • download_config_id Many2one → account.invoice.download.config
    required=True args: 'account.invoice.download.config', 'Invoice Download Config'
  • invoice_ids_str Char
    help='This field is a technical hack to be able to return the action with the created invoices'
  • log_id Many2one → account.invoice.download.log
    args: 'account.invoice.download.log'
  • login Char
  • password Char
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields_list)
    @api.model
  • prepare_and_remove_credentials(self, vals)
    @api.model
  • run(self)
    The real work is made in create(), not here!

New fields (6)
  • company_id Many2one → res.company
    related='download_config_id.company_id' store=True args: 'res.company'
  • download_config_id Many2one → account.invoice.download.config
    readonly=True args: 'account.invoice.download.config'
  • invoice_count Integer
    readonly=True string='Number of Invoices Downloaded'
  • message Text
    readonly=True
  • partner_id Many2one
    related='download_config_id.partner_id' store=True
  • result Selection
    readonly=True args: [('success', 'Success'), ('failure', 'Failure')]
Public methods (0)

No public methods.

New fields (2)
  • download_config_count Integer
    compute='_compute_download_config_count' groups='account.group_account_invoice,account.group_account_readonly'
  • download_config_ids One2many → account.invoice.download.config
    string='Download Configurations' args: 'account.invoice.download.config', 'partner_id'
Public methods (1)
  • jump_to_download_config(self)
REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/14.0/account_invoice_download
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting
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, Enric Tobella, Sébastien Alix, oca-travis, Weblate, OCA-git-bot, oca-ci
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 pypdf>=3.1.0,<5.0
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_invoice_download_config_form account.invoice.download.config.form account.invoice.download.config form New
account_invoice_download_config_search account.invoice.download.config.search account.invoice.download.config search New
account_invoice_download_config_tree account.invoice.download.config.tree account.invoice.download.config tree New
account_invoice_download_credentials_form account.invoice.download.credentials.form account.invoice.download.credentials form New
account_invoice_download_log_form account.invoice.download.log.form account.invoice.download.log form New
account_invoice_download_log_graph account.invoice.download.log.graph account.invoice.download.log graph New
account_invoice_download_log_pivot account.invoice.download.log.pivot account.invoice.download.log pivot New
account_invoice_download_log_search account.invoice.download.log.search account.invoice.download.log search New
account_invoice_download_log_tree account.invoice.download.log.tree account.invoice.download.log tree New
account_invoice_import_config_form account.invoice.import.config.form account.invoice.import.config div Inherits account_invoice_import.account_invoice_import_config_form
account_invoice_import_config_tree account.invoice.import.config.tree account.invoice.import.config field Inherits account_invoice_import.account_invoice_import_config_tree
Models touched (4)

New fields (16)
  • active Boolean
    default=True
  • backend Selection
    args: []
  • backward_days Integer
    help='By default, Odoo will download all invoices that are after the last download date. But it may happen that invoices are available online for download several days after their generation. So, if you set this parameter to 5, Odoo will download all invoices that are after the last download date minus 5 days.' string='Backward Days'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • download_start_date Date
    compute='_compute_download_start_date' readonly=True store=True string='Download Start Date'
  • import_config_id Many2one → account.invoice.import.config
    ondelete='cascade' string='Invoice Import Config' args: 'account.invoice.import.config'
  • interval_number Integer
    default=1 string='Frequency'
  • interval_type Selection
    default='months' string='Download Frequency' args: [('days', 'Day(s)'), ('weeks', 'Week(s)'), ('months', 'Month(s)'), ('years', 'Year(s)')]
  • last_run Date
    help='Date of the last successfull download' string='Last Download Date'
  • log_ids One2many → account.invoice.download.log
    readonly=True string='Logs' args: 'account.invoice.download.log', 'download_config_id'
  • login Char
  • method Selection
    default='manual' required=True string='Download Method' args: [('manual', 'Manual'), ('auto', 'Automatic')]
  • name Char
    required=True string='Name'
  • next_run Date
    string='Next Download Date'
  • partner_id Many2one
    readonly=True related='import_config_id.partner_id' store=True
  • password Char
    help="If you don't want to store the password in Odoo's database, leave this field empty and you will get a wizard to ask you the password on every download."
Public methods (7)
  • credentials_stored(self)
  • download(self, credentials, logs)
    Returns a list of either: - pivot dict (example: ovh backend) - tuple: (invoice_file_b64, invoice_filename) (example: weboob). This method is inherited in backend-specific modules
  • name_get(self)
    @api.depends('name', 'backend', 'method')
  • prepare_credentials(self)
  • run(self, credentials)
    Do the real work. Handle try/except. Create log. Return list of invoices and log
  • run_button(self)
  • run_cron(self)
    @api.model

New fields (6)
  • backend Selection
    readonly=True related='download_config_id.backend'
  • download_config_id Many2one → account.invoice.download.config
    required=True args: 'account.invoice.download.config', 'Invoice Download Config'
  • invoice_ids_str Char
    help='This field is a technical hack to be able to return the action with the created invoices'
  • log_id Many2one → account.invoice.download.log
    string='Log' args: 'account.invoice.download.log'
  • login Char
  • password Char
Public methods (4)
  • create(self, vals)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • prepare_and_remove_credentials(self, vals)
    @api.model
  • run(self)
    The real work is made in create(), not here!

New fields (7)
  • company_id Many2one → res.company
    related='download_config_id.company_id' store=True args: 'res.company'
  • download_config_id Many2one → account.invoice.download.config
    readonly=True string='Download Config' args: 'account.invoice.download.config'
  • import_config_id Many2one
    related='download_config_id.import_config_id' store=True
  • invoice_count Integer
    readonly=True string='Number of Invoices Downloaded'
  • message Text
    readonly=True string='Message'
  • partner_id Many2one
    related='download_config_id.import_config_id.partner_id' store=True
  • result Selection
    readonly=True string='Result' args: [('success', 'Success'), ('failure', 'Failure')]
Public methods (0)

No public methods.

New fields (2)
  • download_config_count Integer
    compute='_compute_download_config_count'
  • download_config_ids One2many → account.invoice.download.config
    string='Download Configurations' args: 'account.invoice.download.config', 'import_config_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/12.0/account_invoice_download
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA Transbot, Nicolas JEUDY, oca-travis, Weblate
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/edi:
    - account_invoice_import
    - 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
    - mail
    - 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

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
account_invoice_download_config_form account.invoice.download.config.form account.invoice.download.config form New
account_invoice_download_config_search account.invoice.download.config.search account.invoice.download.config search New
account_invoice_download_config_tree account.invoice.download.config.tree account.invoice.download.config tree New
account_invoice_download_credentials_form account.invoice.download.credentials.form account.invoice.download.credentials form New
account_invoice_download_log_form account.invoice.download.log.form account.invoice.download.log form New
account_invoice_download_log_search account.invoice.download.log.search account.invoice.download.log search New
account_invoice_download_log_tree account.invoice.download.log.tree account.invoice.download.log tree New
account_invoice_import_config_form account.invoice.import.config.form account.invoice.import.config group Inherits account_invoice_import.account_invoice_import_config_form
account_invoice_import_config_tree account.invoice.import.config.tree account.invoice.import.config field Inherits account_invoice_import.account_invoice_import_config_tree
Models touched (4)

New fields (16)
  • active Boolean
    default=True
  • backend Selection
    args: []
  • backward_days Integer
    help='By default, Odoo will download all invoices that are after the last download date. But it may happen that invoices are available online for download several days after their generation. So, if you set this parameter to 5, Odoo will download all invoices that are after the last download date minus 5 days.' string='Backward Days'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • download_start_date Date
    compute='_compute_download_start_date' readonly=True store=True string='Download Start Date'
  • import_config_id Many2one → account.invoice.import.config
    ondelete='cascade' string='Invoice Import Config' args: 'account.invoice.import.config'
  • interval_number Integer
    default=1 string='Frequency'
  • interval_type Selection
    default='months' string='Download Frequency' args: [('days', 'Day(s)'), ('weeks', 'Week(s)'), ('months', 'Month(s)'), ('years', 'Year')]
  • last_run Date
    help='Date of the last successfull download' string='Last Download Date'
  • log_ids One2many → account.invoice.download.log
    readonly=True string='Logs' args: 'account.invoice.download.log', 'download_config_id'
  • login Char
  • method Selection
    default='manual' required=True string='Download Method' args: [('manual', 'Manual'), ('auto', 'Automatic')]
  • name Char
    required=True string='Name'
  • next_run Date
    string='Next Download Date'
  • partner_id Many2one
    readonly=True related='import_config_id.partner_id' store=True
  • password Char
    help="If you don't want to store the password in Odoo's database, leave this field empty and you will get a wizard to ask you the password on every download."
Public methods (7)
  • credentials_stored(self)
  • download(self, credentials, logs)
    Returns a list of either: - pivot dict (example: ovh backend) - tuple: (invoice_file_b64, invoice_filename) (example: weboob). This method is inherited in backend-specific modules
  • name_get(self)
    @api.depends('name', 'backend', 'method')
  • prepare_credentials(self)
  • run(self, credentials)
    Do the real work. Handle try/except. Create log. Return list of invoices and log
  • run_button(self)
  • run_cron(self)
    @api.model

New fields (6)
  • backend Selection
    readonly=True related='download_config_id.backend'
  • download_config_id Many2one → account.invoice.download.config
    required=True args: 'account.invoice.download.config', 'Invoice Download Config'
  • invoice_ids_str Char
    help='This field is a technical hack to be able to return the action with the created invoices'
  • log_id Many2one → account.invoice.download.log
    string='Log' args: 'account.invoice.download.log'
  • login Char
  • password Char
Public methods (4)
  • create(self, vals)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • prepare_and_remove_credentials(self, vals)
    @api.model
  • run(self)
    The real work is made in create(), not here!

New fields (7)
  • company_id Many2one → res.company
    readonly=True related='download_config_id.company_id' store=True args: 'res.company'
  • download_config_id Many2one → account.invoice.download.config
    readonly=True string='Download Config' args: 'account.invoice.download.config'
  • import_config_id Many2one
    readonly=True related='download_config_id.import_config_id' store=True
  • invoice_count Integer
    readonly=True string='Number of Invoices Downloaded'
  • message Text
    readonly=True string='Message'
  • partner_id Many2one
    readonly=True related='download_config_id.import_config_id.partner_id' store=True
  • result Selection
    readonly=True string='Result' args: [('success', 'Success'), ('failure', 'Failure')]
Public methods (0)

No public methods.

New fields (1)
  • download_config_ids One2many → account.invoice.download.config
    string='Download Configurations' args: 'account.invoice.download.config', 'import_config_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/edi
GIT
GIThttps://github.com/OCA/edi.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/edi/tree/10.0/account_invoice_download
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
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, OCA Transbot, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/edi
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/edi:
    - account_invoice_import
    - 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
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - base_iban
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES PyPDF2
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
account_invoice_download_config_form account.invoice.download.config.form account.invoice.download.config form New
account_invoice_download_config_search account.invoice.download.config.search account.invoice.download.config search New
account_invoice_download_config_tree account.invoice.download.config.tree account.invoice.download.config tree New
account_invoice_download_credentials_form account.invoice.download.credentials.form account.invoice.download.credentials form New
account_invoice_download_log_form account.invoice.download.log.form account.invoice.download.log form New
account_invoice_download_log_search account.invoice.download.log.search account.invoice.download.log search New
account_invoice_download_log_tree account.invoice.download.log.tree account.invoice.download.log tree New
account_invoice_import_config_form account.invoice.import.config.form account.invoice.import.config group Inherits account_invoice_import.account_invoice_import_config_form
account_invoice_import_config_tree account.invoice.import.config.tree account.invoice.import.config field Inherits account_invoice_import.account_invoice_import_config_tree
Models touched (4)

New fields (16)
  • active Boolean
    default=True
  • backend Selection
    args: []
  • backward_days Integer
    help='By default, Odoo will download all invoices that are after the last download date. But it may happen that invoices are available online for download several days after their generation. So, if you set this parameter to 5, Odoo will download all invoices that are after the last download date minus 5 days.' string='Backward Days'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • download_start_date Date
    compute='_compute_download_start_date' readonly=True store=True string='Download Start Date'
  • import_config_id Many2one → account.invoice.import.config
    ondelete='cascade' string='Invoice Import Config' args: 'account.invoice.import.config'
  • interval_number Integer
    default=1 string='Frequency'
  • interval_type Selection
    default='months' string='Download Frequency' args: [('days', 'Day(s)'), ('weeks', 'Week(s)'), ('months', 'Month(s)'), ('years', 'Year')]
  • last_run Date
    help='Date of the last successfull download' string='Last Download Date'
  • log_ids One2many → account.invoice.download.log
    readonly=True string='Logs' args: 'account.invoice.download.log', 'download_config_id'
  • login Char
  • method Selection
    default='manual' required=True string='Download Method' args: [('manual', 'Manual'), ('auto', 'Automatic')]
  • name Char
    required=True string='Name'
  • next_run Date
    string='Next Download Date'
  • partner_id Many2one
    readonly=True related='import_config_id.partner_id' store=True
  • password Char
    help="If you don't want to store the password in Odoo's database, leave this field empty and you will get a wizard to ask you the password on every download."
Public methods (7)
  • credentials_stored(self)
  • download(self, credentials, logs)
    Returns a list of either: - pivot dict (example: ovh backend) - tuple: (invoice_file_b64, invoice_filename) (example: weboob). This method is inherited in backend-specific modules
  • name_get(self)
    @api.depends('name', 'backend', 'method')
  • prepare_credentials(self)
  • run(self, credentials)
    Do the real work. Handle try/except. Create log. Return list of invoices and log
  • run_button(self)
  • run_cron(self)
    @api.model

New fields (6)
  • backend Selection
    readonly=True related='download_config_id.backend'
  • download_config_id Many2one → account.invoice.download.config
    required=True args: 'account.invoice.download.config', 'Invoice Download Config'
  • invoice_ids_str Char
    help='This field is a technical hack to be able to return the action with the created invoices'
  • log_id Many2one → account.invoice.download.log
    string='Log' args: 'account.invoice.download.log'
  • login Char
  • password Char
Public methods (4)
  • create(self, vals)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • prepare_and_remove_credentials(self, vals)
    @api.model
  • run(self)
    The real work is made in create(), not here!

New fields (7)
  • company_id Many2one → res.company
    readonly=True related='download_config_id.company_id' store=True args: 'res.company'
  • download_config_id Many2one → account.invoice.download.config
    readonly=True string='Download Config' args: 'account.invoice.download.config'
  • import_config_id Many2one
    readonly=True related='download_config_id.import_config_id' store=True
  • invoice_count Integer
    readonly=True string='Number of Invoices Downloaded'
  • message Text
    readonly=True string='Message'
  • partner_id Many2one
    readonly=True related='download_config_id.import_config_id.partner_id' store=True
  • result Selection
    readonly=True string='Result' args: [('success', 'Success'), ('failure', 'Failure')]
Public methods (0)

No public methods.

New fields (1)
  • download_config_ids One2many → account.invoice.download.config
    string='Download Configurations' args: 'account.invoice.download.config', 'import_config_id'
Public methods (0)

No public methods.