| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/18.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| 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, Víctor Martínez, Florian da Costa, Weblate, OCA-git-bot, oca-ci, Diego Paradeda |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
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 |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This Odoo module is designed to send overdue invoice reminders to customers. It handles reminders by e-mail, letter and phone. This module is an alternative to the OCA module *account_credit_control*. Why another module for invoice reminders ? Because the module *account_credit_control* is quite complex (we experienced that some users find it too complex and eventually stop using it) and its interface is designed to send massive volume of reminders. This module has been designed from the start with the following priorities: - **keep control**: you must keep tight control on the overdue invoice reminders that you send. Overdue invoice reminders are part of the communication with your customers, and this is very important to keep a good relation with your customers. - **usability**: the module is easy to configure and easy to use. - **no accounting skills needed**: the module can be used by users without accounting skills. It can even be used by salesman! - **multi-currency**: if you invoice your customer in another currency that your company currency, the invoice reminders only mention the currency of the invoices. And if you invoice a customer with different currencies, the reminder is clear and easy-to-understand by your customer, with a total residual per currency. - **multi-channel**: supports overdue invoice reminders by e-mail (default), phone and letter. - **simplicity**: for the developers, the code is small and easy to understand. The specifications written before starting the development of this module are written in this [document](https://docs.google.com/document/d/1JIIAP5QsItbJ1zLiaGHuR0RAQplEGv3diOl-d4mS__I/edit?usp=sharing) (in French). The module has one important limitation: it sends a reminder for an invoice when it has past it's *Due Date* (which is in fact the *Final Due Date*): if the invoice has a payment term with several lines, it won't send a reminder before the last term is overdue. An overdue reminder for a customer always include all the overdue invoices of that customer. The module supports a clever per-invoice reminder counter mechanism: - the reminder counter is a property of an invoice, - the reminder counter of each overdue invoice is incremented when sending a reminder by email or by post. It is not incremented for reminders by phone. - in an email or a letter, the subject will be *Overdue invoice reminder n°N* where N is the maximum value of the counter of the overdue invoices plus one. There are two user interfaces to send reminders: - the **one-by-one** interface, which displays one screen for each customer that has overdue invoices, one after the other. You should use this interface when you have a reasonable volume of reminders to send (less than 100 overdue reminders for example). It gives you a tight control on the reminders and the possibility to easily and rapidly customize the reminder e-mails. - the **mass** interface, which displays a list view of all customers that have overdue invoices, and you can process several reminders at the same time (via the *Actions* menu). This video tutorial in English will show you how to configure and use the module: [Youtube link](https://www.youtube.com/watch?v=MaOoVAi7Tc0). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.list | account.invoice.overdue.reminder | list | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.list | account.invoice.overdue.reminder | list | New |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.list | overdue.reminder.action | list | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.list | overdue.reminder.result | list | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_search |
overdue.reminder.step.search | overdue.reminder.step | search | New |
overdue_reminder_step_tree |
overdue.reminder.step.list | overdue.reminder.step | list | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | block | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.move | filter | Inherits account.view_account_invoice_filter |
view_invoice_tree |
account.move | field | Inherits account.view_invoice_tree | |
view_move_form |
overdue.reminder.customer.invoice.form | account.move | div | Inherits account.view_move_form |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Html
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.move
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.move'
invoice_id_check(self)
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
tracking=True
overdue
Boolean
compute='_compute_overdue'
overdue_remind_sent
Boolean
compute='_compute_overdue_reminder_sent'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Html
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
No public methods.
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer_rank', '>', 0), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
domain=[('res_model', 'in', (False, 'overdue.reminder.step'))]
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
compute='_compute_counter_and_mail'
precompute=True
store=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.move
domain="[('commercial_partner_id', '=', commercial_partner_id), ('company_id', '=', company_id), ('move_type', '=', 'out_invoice'), ('state', '=', 'posted'), ('payment_state', 'not in', ('paid', 'reversed', 'in_payment')), ('no_overdue_reminder', '=', False), ('invoice_date_due', '<', date)]"
string='Overdue Invoices'
args: 'account.move'
letter_printed
Boolean
readonly=True
mail_body
Html
compute='_compute_counter_and_mail'
precompute=True
readonly=False
store=True
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
compute='_compute_counter_and_mail'
precompute=True
readonly=False
store=True
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Html
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
generate_mail_vals(self)
goto_list_view(self)
next_step(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
help='Default overdue reminder minimum interval in days'
string='Default Overdue Reminder Minimum Interval'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
help='Default overdue reminder trigger delay in days'
string='Default Overdue Reminder Trigger Delay'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/17.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| 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 | Weblate, OCA-git-bot, oca-ci, Nils Coenen |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - onboarding - product - 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 Odoo module is designed to send overdue invoice reminders to customers. It handles reminders by e-mail, letter and phone. This module is an alternative to the OCA module *account_credit_control*. Why another module for invoice reminders ? Because the module *account_credit_control* is quite complex (we experienced that some users find it too complex and eventually stop using it) and its interface is designed to send massive volume of reminders. This module has been designed from the start with the following priorities: - **keep control**: you must keep tight control on the overdue invoice reminders that you send. Overdue invoice reminders are part of the communication with your customers, and this is very important to keep a good relation with your customers. - **usability**: the module is easy to configure and easy to use. - **no accounting skills needed**: the module can be used by users without accounting skills. It can even be used by salesman! - **multi-currency**: if you invoice your customer in another currency that your company currency, the invoice reminders only mention the currency of the invoices. And if you invoice a customer with different currencies, the reminder is clear and easy-to-understand by your customer, with a total residual per currency. - **multi-channel**: supports overdue invoice reminders by e-mail (default), phone and letter. - **simplicity**: for the developers, the code is small and easy to understand. The specifications written before starting the development of this module are written in this [document](https://docs.google.com/document/d/1JIIAP5QsItbJ1zLiaGHuR0RAQplEGv3diOl-d4mS__I/edit?usp=sharing) (in French). The module has one important limitation: it sends a reminder for an invoice when it has past it's *Due Date* (which is in fact the *Final Due Date*): if the invoice has a payment term with several lines, it won't send a reminder before the last term is overdue. An overdue reminder for a customer always include all the overdue invoices of that customer. The module supports a clever per-invoice reminder counter mechanism: - the reminder counter is a property of an invoice, - the reminder counter of each overdue invoice is incremented when sending a reminder by email or by post. It is not incremented for reminders by phone. - in an email or a letter, the subject will be *Overdue invoice reminder n°N* where N is the maximum value of the counter of the overdue invoices plus one. There are two user interfaces to send reminders: - the **one-by-one** interface, which displays one screen for each customer that has overdue invoices, one after the other. You should use this interface when you have a reasonable volume of reminders to send (less than 100 overdue reminders for example). It gives you a tight control on the reminders and the possibility to easily and rapidly customize the reminder e-mails. - the **mass** interface, which displays a list view of all customers that have overdue invoices, and you can process several reminders at the same time (via the *Actions* menu). This video tutorial in English will show you how to configure and use the module: [Youtube link](https://www.youtube.com/watch?v=MaOoVAi7Tc0). |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.list | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_search |
overdue.reminder.step.search | overdue.reminder.step | search | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | block | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.move | filter | Inherits account.view_account_invoice_filter |
view_invoice_tree |
account.move | field | Inherits account.view_invoice_tree | |
view_move_form |
overdue.reminder.customer.invoice.form | account.move | div | Inherits account.view_move_form |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | xpath | Inherits account.view_partner_property_form |
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Html
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.move
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.move'
invoice_id_check(self)
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
tracking=True
overdue
Boolean
compute='_compute_overdue'
overdue_remind_sent
Boolean
compute='_compute_overdue_reminder_sent'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Html
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
No public methods.
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer_rank', '>', 0), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
domain=[('res_model', 'in', (False, 'overdue.reminder.step'))]
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
compute='_compute_counter_and_mail'
precompute=True
store=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.move
domain="[('commercial_partner_id', '=', commercial_partner_id), ('company_id', '=', company_id), ('move_type', '=', 'out_invoice'), ('state', '=', 'posted'), ('payment_state', 'not in', ('paid', 'reversed', 'in_payment')), ('no_overdue_reminder', '=', False), ('invoice_date_due', '<', date)]"
string='Overdue Invoices'
args: 'account.move'
letter_printed
Boolean
readonly=True
mail_body
Html
compute='_compute_counter_and_mail'
precompute=True
readonly=False
store=True
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
compute='_compute_counter_and_mail'
precompute=True
readonly=False
store=True
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Html
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
generate_mail_vals(self)
goto_list_view(self)
next_step(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
help='Default overdue reminder minimum interval in days'
string='Default Overdue Reminder Minimum Interval'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
help='Default overdue reminder trigger delay in days'
string='Default Overdue Reminder Trigger Delay'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/16.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 1.11.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| 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, GitHub, Miquel Raïch, Weblate, OCA-git-bot, Andrea Stirpe, oca-ci, Lindsay, Diego Paradeda, Zina Rasoamanana |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.tree | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.move | filter | Inherits account.view_account_invoice_filter |
view_invoice_tree |
account.move | field | Inherits account.view_invoice_tree | |
view_move_form |
overdue.reminder.customer.invoice.form | account.move | div | Inherits account.view_move_form |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Html
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.move
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.move'
invoice_id_check(self)
name_get(self)
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
tracking=True
overdue
Boolean
compute='_compute_overdue'
overdue_remind_sent
Boolean
compute='_compute_overdue_reminder_sent'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Html
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
name_get(self)
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer_rank', '>', 0), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
domain=[('res_model', 'in', (False, 'overdue.reminder.step'))]
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
compute='_compute_counter_and_mail'
precompute=True
store=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.move
domain="[('commercial_partner_id', '=', commercial_partner_id), ('company_id', '=', company_id), ('move_type', '=', 'out_invoice'), ('state', '=', 'posted'), ('payment_state', 'not in', ('paid', 'reversed', 'in_payment')), ('no_overdue_reminder', '=', False), ('invoice_date_due', '<', date)]"
string='Overdue Invoices'
args: 'account.move'
letter_printed
Boolean
readonly=True
mail_body
Html
compute='_compute_counter_and_mail'
precompute=True
readonly=False
store=True
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
compute='_compute_counter_and_mail'
precompute=True
readonly=False
store=True
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Html
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
generate_mail_vals(self)
goto_list_view(self)
next_step(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
string='Default Overdue Reminder Minimum Interval (days)'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
string='Default Overdue Reminder Trigger Delay (days)'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/15.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Miquel Raïch, Weblate, OCA-git-bot, oca-ci, Carlos Roca, Diego Paradeda, Jasmin Solanki |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:41 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.tree | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_end_form |
overdue.reminder.end.form | overdue.reminder.end | form | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.move | filter | Inherits account.view_account_invoice_filter |
view_invoice_tree |
account.move | field | Inherits account.view_invoice_tree | |
view_move_form |
overdue.reminder.customer.invoice.form | account.move | div | Inherits account.view_move_form |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Text
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.move
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.move'
invoice_id_check(self)
name_get(self)
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
tracking=True
overdue
Boolean
compute='_compute_overdue'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Text
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
name_get(self)
No new fields.
Public methods (0)No public methods.
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer_rank', '>', 0), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
up_to_date
Boolean
string='I consider that payments are up-to-date'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
readonly=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.move
readonly=True
string='Overdue Invoices'
args: 'account.move'
letter_printed
Boolean
readonly=True
mail_body
Html
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Text
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
create(self, vals)
generate_mail_vals(self)
goto_list_view(self)
next_step(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
string='Default Overdue Reminder Minimum Interval (days)'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
string='Default Overdue Reminder Trigger Delay (days)'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/14.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 1.5.2 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, OCA Transbot, Miquel Raïch, JordiMForgeFlow, Sébastien BEAU, oca-travis, Weblate, OCA-git-bot, Carmen Bianca BAKKER, oca-ci, GuillemCForgeFlow, Judith, matthieu.saison, Peter Schwarz |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.tree | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.move | filter | Inherits account.view_account_invoice_filter |
view_invoice_tree |
account.move | field | Inherits account.view_invoice_tree | |
view_move_form |
overdue.reminder.customer.invoice.form | account.move | div | Inherits account.view_move_form |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Text
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.move
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.move'
invoice_id_check(self)
name_get(self)
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
tracking=True
overdue
Boolean
compute='_compute_overdue'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Text
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
name_get(self)
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer_rank', '>', 0), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment', 'wizard_id'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
compute='_compute_counter_and_mail'
store=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.move
domain="[('commercial_partner_id', '=', commercial_partner_id), ('company_id', '=', company_id), ('move_type', '=', 'out_invoice'), ('state', '=', 'posted'), ('payment_state', 'not in', ('paid', 'reversed', 'in_payment')), ('no_overdue_reminder', '=', False), ('invoice_date_due', '<', date)]"
string='Overdue Invoices'
args: 'account.move'
letter_printed
Boolean
readonly=True
mail_body
Html
compute='_compute_counter_and_mail'
readonly=False
store=True
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
compute='_compute_counter_and_mail'
readonly=False
store=True
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
string='Reminder Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Text
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
generate_mail_vals(self)
get_invoices(self)
goto_list_view(self)
next_step(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
string='Default Overdue Reminder Minimum Interval (days)'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
string='Default Overdue Reminder Trigger Delay (days)'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/13.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, manu, OCA Transbot, Miquel Raïch, JordiMForgeFlow, oca-travis, Weblate, OCA-git-bot, oca-ci, GuillemCForgeFlow, Judith |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:19 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.tree | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_end_form |
overdue.reminder.end.form | overdue.reminder.end | form | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.move | filter | Inherits account.view_account_invoice_filter |
view_invoice_tree |
account.move | field | Inherits account.view_invoice_tree | |
view_move_form |
overdue.reminder.customer.invoice.form | account.move | div | Inherits account.view_move_form |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Text
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.move
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.move'
invoice_id_check(self)
name_get(self)
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
tracking=True
overdue
Boolean
compute='_compute_overdue'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Text
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
name_get(self)
No new fields.
Public methods (0)No public methods.
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer_rank', '>', 0), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment', 'wizard_id'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
up_to_date
Boolean
string='I consider that payments are up-to-date'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
readonly=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.move
readonly=True
string='Overdue Invoices'
args: 'account.move'
letter_printed
Boolean
readonly=True
mail_body
Html
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
string='Reminder Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Text
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
create(self, vals)
generate_mail_vals(self)
goto_list_view(self)
next_step(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
string='Default Overdue Reminder Minimum Interval (days)'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
string='Default Overdue Reminder Trigger Delay (days)'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/12.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 2.2.2 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, eLBati, Sylvain LE GAL, GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Carmen Bianca BAKKER, oca-ci, Sergio Lop Sanz |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:24 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - uom - analytic - portal - http_routing - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.tree | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
invoice_form |
overdue.reminder.customer.invoice.form | account.invoice | button | Inherits account.invoice_form |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_end_form |
overdue.reminder.end.form | overdue.reminder.end | form | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.invoice | filter | Inherits account.view_account_invoice_filter |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
track_visibility='onchange'
overdue
Boolean
compute='_compute_overdue'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
action_commercial_partner_id
Many2one
related='action_id.commercial_partner_id'
store=True
action_date
Date
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
related='action_id.mail_id'
action_mail_state
Selection
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Text
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
related='action_id.user_id'
company_id
Many2one
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.invoice
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.invoice'
invoice_id_check(self)
name_get(self)
No new fields.
Public methods (1)unlink(self)
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Text
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
name_get(self)
No new fields.
Public methods (0)No public methods.
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer', '=', True), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment', 'wizard_id'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
up_to_date
Boolean
string='I consider that payments are up-to-date'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
activity_deadline
Date
activity_note
Html
string='Note'
activity_summary
Char
string='Summary'
activity_type_id
Many2one → mail.activity.type
string='Activity'
args: 'mail.activity.type'
activity_user_id
Many2one → res.users
default=<expr>
string='Assigned to'
args: 'res.users'
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
readonly=True
string='New Remind Counter'
create_activity
Boolean
date
Date
default=fields.Date.context_today
readonly=True
display_button_recompute_mail_info
Boolean
default=False
interface
Char
readonly=True
invoice_ids
Many2many → account.invoice
string='Overdue Invoices'
args: 'account.invoice'
letter_printed
Boolean
readonly=True
mail_body
Html
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Invoicing Contact'
args: 'res.partner'
partner_mobile
Char
readonly=True
related='partner_id.mobile'
partner_phone
Char
readonly=True
related='partner_id.phone'
reminder_type
Selection
default='mail'
required=True
string='Reminder Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Text
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
button_compute_mail_info(self)
check_warnings(self)
create(self, vals)
goto_list_view(self)
next(self)
onchange_invoice_ids(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
string='Default Overdue Reminder Minimum Interval (days)'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
string='Default Overdue Reminder Trigger Delay (days)'
No public methods.
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/credit-control |
| GIT | |
| GIT | https://github.com/OCA/credit-control.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/credit-control/tree/10.0/account_invoice_overdue_reminder |
| VERSION | |
| VERSION | 2.0.2 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/credit-control |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_invoice_overdue_reminder.report_overdue_reminder_document |
account_invoice_overdue_reminder.report_overdue_reminder_document | ir.ui.view | qweb | New |
account_invoice_overdue_reminder_form |
account.invoice.overdue.reminder.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_form |
account.invoice.overdue.reminder.norelated.form | account.invoice.overdue.reminder | form | New |
account_invoice_overdue_reminder_norelated_tree |
account.invoice.overdue.reminder.norelated.tree | account.invoice.overdue.reminder | tree | New |
account_invoice_overdue_reminder_search |
account.invoice.overdue.reminder.search | account.invoice.overdue.reminder | search | New |
account_invoice_overdue_reminder_tree |
account.invoice.overdue.reminder.tree | account.invoice.overdue.reminder | tree | New |
invoice_form |
overdue.reminder.customer.invoice.form | account.invoice | button | Inherits account.invoice_form |
overdue_reminder_action_form |
overdue.reminder.action.form | overdue.reminder.action | form | New |
overdue_reminder_action_graph |
overdue.reminder.action.graph | overdue.reminder.action | graph | New |
overdue_reminder_action_pivot |
overdue.reminder.action.pivot | overdue.reminder.action | pivot | New |
overdue_reminder_action_search |
overdue.reminder.action.search | overdue.reminder.action | search | New |
overdue_reminder_action_tree |
overdue.reminder.action.tree | overdue.reminder.action | tree | New |
overdue_reminder_end_form |
overdue.reminder.end.form | overdue.reminder.end | form | New |
overdue_reminder_mass_update_form |
overdue.reminder.mass.update.form | overdue.reminder.mass.update | form | New |
overdue_reminder_result_form |
overdue.reminder.result.form | overdue.reminder.result | form | New |
overdue_reminder_result_search |
overdue.reminder.result.search | overdue.reminder.result | search | New |
overdue_reminder_result_tree |
overdue.reminder.result.tree | overdue.reminder.result | tree | New |
overdue_reminder_start_form |
overdue.reminder.start.form | overdue.reminder.start | form | New |
overdue_reminder_step_form |
overdue.reminder.step.form | overdue.reminder.step | form | New |
overdue_reminder_step_tree |
overdue.reminder.step.tree | overdue.reminder.step | tree | New |
report_overdue_reminder |
report_overdue_reminder | ir.ui.view | qweb | New |
view_account_config_settings |
overdue.reminder.res.config.settings.form | account.config.settings | group | Inherits account.view_account_config_settings |
view_account_invoice_filter |
overdue.reminder.customer.invoice.search | account.invoice | filter | Inherits account.view_account_invoice_filter |
view_partner_property_form |
overdue.reminder.res.partner.form | res.partner | group | Inherits account.view_partner_property_form |
overdue_reminder_attach_invoice
Boolean
readonly=False
related='company_id.overdue_reminder_attach_invoice'
overdue_reminder_interface
Selection
readonly=False
related='company_id.overdue_reminder_interface'
overdue_reminder_min_interval_days
Integer
readonly=False
related='company_id.overdue_reminder_min_interval_days'
overdue_reminder_partner_policy
Selection
readonly=False
related='company_id.overdue_reminder_partner_policy'
overdue_reminder_start_days
Integer
readonly=False
related='company_id.overdue_reminder_start_days'
No public methods.
amount_untaxed_invoice_signed
Monetary
compute='_compute_amount_untaxed_invoice_signed'
currency_field='currency_id'
readonly=True
string='Untaxed Amount in Invoice Currency'
no_overdue_reminder
Boolean
string='Disable Overdue Reminder'
track_visibility='onchange'
overdue
Boolean
compute='_compute_overdue'
overdue_reminder_counter
Integer
compute='_compute_overdue_reminder'
help='This counter is not increased in case of phone reminder.'
store=True
string='Overdue Reminder Count'
overdue_reminder_ids
One2many → account.invoice.overdue.reminder
string='Overdue Reminder Action History'
args: 'account.invoice.overdue.reminder', 'invoice_id'
overdue_reminder_last_date
Date
compute='_compute_overdue_reminder'
store=True
string='Last Overdue Reminder Date'
No public methods.
action_commercial_partner_id
Many2one
readonly=True
related='action_id.commercial_partner_id'
store=True
action_date
Date
readonly=True
related='action_id.date'
store=True
action_id
Many2one → overdue.reminder.action
ondelete='cascade'
string='Overdue Reminder Action'
args: 'overdue.reminder.action'
action_mail_cc
Char
readonly=True
related='action_id.mail_id.email_cc'
string='Cc'
action_mail_id
Many2one
readonly=True
related='action_id.mail_id'
action_mail_state
Selection
readonly=True
related='action_id.mail_id.state'
string='E-mail Status'
action_partner_id
Many2one
readonly=True
related='action_id.partner_id'
store=True
action_reminder_type
Selection
related='action_id.reminder_type'
store=True
action_result_id
Many2one
readonly=False
related='action_id.result_id'
action_result_notes
Text
readonly=False
related='action_id.result_notes'
action_user_id
Many2one
readonly=True
related='action_id.user_id'
company_id
Many2one
readonly=True
related='invoice_id.company_id'
store=True
counter
Integer
readonly=True
invoice_id
Many2one → account.invoice
ondelete='cascade'
readonly=True
string='Invoice'
args: 'account.invoice'
invoice_id_check(self)
name_get(self)
commercial_partner_id
Many2one → res.partner
domain=[('parent_id', '=', False)]
index=True
readonly=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date
Date
default=fields.Date.context_today
index=True
readonly=False
required=True
mail_cc
Char
readonly=True
related='mail_id.email_cc'
mail_id
Many2one → mail.mail
readonly=True
string='Reminder E-mail'
args: 'mail.mail'
mail_state
Selection
related='mail_id.state'
string='E-mail Status'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
reminder_count
Integer
compute='_compute_invoice_count'
store=True
string='Number of invoices'
reminder_ids
One2many → account.invoice.overdue.reminder
readonly=True
args: 'account.invoice.overdue.reminder', 'action_id'
reminder_type
Selection
default='mail'
readonly=True
required=True
string='Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
ondelete='restrict'
string='Info/Result'
args: 'overdue.reminder.result'
result_notes
Text
string='Info/Result Notes'
user_id
Many2one → res.users
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Performed by'
args: 'res.users'
name_get(self)
No new fields.
Public methods (0)No public methods.
reminder_type
Selection
string='New Reminder Type'
args: '_reminder_type_selection'
update_action
Selection
readonly=True
required=True
args: [('validate', 'Validate'), ('reminder_type', 'Change Reminder Type'), ('skip', 'Skip')]
run(self)
active
Boolean
default=True
name
Char
required=True
translate=True
sequence
Integer
No public methods.
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
interface
Selection
default='onebyone'
required=True
string='Wizard Interface'
args: '_interface_selection'
min_interval_days
Integer
help='Odoo will not propose to send a reminder to a customer that already got a reminder for some of the same overdue invoices less than N days ago (N = Minimum Delay Since Last Reminder).'
string='Minimum Delay Since Last Reminder'
partner_ids
Many2many → res.partner
domain=[('customer', '=', True), ('parent_id', '=', False)]
string='Customers'
args: 'res.partner'
partner_policy
Selection
required=True
string='Contact to Remind'
args: '_partner_policy_selection'
payment_ids
Many2many → overdue.reminder.start.payment
readonly=True
args: 'overdue.reminder.start.payment', 'wizard_id'
start_days
Integer
help='Odoo will propose to send an overdue reminder to a customer if it has at least one invoice which is overdue for more than N days (N = trigger delay).'
string='Trigger Delay'
up_to_date
Boolean
string='I consider that payments are up-to-date'
user_ids
Many2many → res.users
string='Salesman'
args: 'res.users'
default_get(self, fields_list)
run(self)
journal_id
Many2one → account.journal
readonly=True
string='Journal'
args: 'account.journal'
last_entry_create_date
Datetime
readonly=True
string='Last Entry Created on'
last_entry_create_uid
Many2one → res.users
readonly=True
string='Last Entry Created by'
args: 'res.users'
last_entry_date
Date
readonly=True
string='Last Entry'
wizard_id
Many2one → overdue.reminder.start
ondelete='cascade'
args: 'overdue.reminder.start'
No public methods.
commercial_partner_id
Many2one → res.partner
readonly=True
required=True
string='Customer'
args: 'res.partner'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
args: 'res.company'
counter
Integer
readonly=True
string='New Remind Counter'
date
Date
default=fields.Date.context_today
readonly=True
interface
Char
readonly=True
invoice_ids
Many2many → account.invoice
readonly=True
string='Overdue Invoices'
args: 'account.invoice'
letter_printed
Boolean
readonly=True
mail_body
Html
mail_cc_partner_ids
Many2many → res.partner
string='Cc'
args: 'res.partner'
mail_subject
Char
string='Subject'
partner_email
Char
readonly=True
related='partner_id.email'
partner_id
Many2one → res.partner
required=True
string='Reminder Contact'
args: 'res.partner'
partner_mobile
Char
compute='_compute_phone'
readonly=True
string='Mobile'
partner_phone
Char
compute='_compute_phone'
readonly=True
string='Phone'
reminder_type
Selection
default='mail'
required=True
string='Reminder Type'
args: '_reminder_type_selection'
result_id
Many2one → overdue.reminder.result
string='Call Result/Info'
args: 'overdue.reminder.result'
result_notes
Text
string='Call Notes'
state
Selection
default='draft'
readonly=True
args: [('draft', 'Draft'), ('skipped', 'Skipped'), ('done', 'Done')]
unreconciled_move_line_normal
Boolean
string='Check if unreconciled payments/refunds above have a good reason not to be reconciled with an open invoice'
user_id
Many2one → res.users
readonly=True
required=True
args: 'res.users'
warn_unreconciled_move_line_ids
Many2many → account.move.line
readonly=True
string='Unreconciled Payments/Refunds'
args: 'account.move.line'
check_warnings(self)
create(self, vals)
goto_list_view(self)
next(self)
print_invoices(self)
print_letter(self)
reminder_type_change(self)
skip(self)
total_residual(self)
validate(self)
validate_mail(self)
validate_phone(self)
validate_post(self)
overdue_reminder_attach_invoice
Boolean
default=True
string='Attach Invoices to Overdue Reminder E-mails'
overdue_reminder_interface
Selection
default='onebyone'
string='Default Overdue Reminder Wizard Interface'
args: '_overdue_reminder_interface_selection'
overdue_reminder_min_interval_days
Integer
default=5
string='Default Overdue Reminder Minimum Interval (days)'
overdue_reminder_partner_policy
Selection
default='last_reminder'
string='Contact to Remind'
args: '_overdue_reminder_partner_policy_selection'
overdue_reminder_start_days
Integer
string='Default Overdue Reminder Trigger Delay (days)'
No public methods.
no_overdue_reminder
Boolean
company_dependent=True
string='Disable Overdue Invoice Reminder'
No public methods.
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/credit-control |
| PULL REQUEST | |
| PULL REQUEST | [19.0] [MIG] account_invoice_overdue_reminder: Migration to 19.0 (#560) |