| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/18.0/account_payment_multi_deduction |
| 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), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, oca-ci, Saran440 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:17 |
| 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 module extend invoice(s)'s register payment feature, from "Mark invoice as fully paid" with a single writeoff amount, to "Mark invoice as fully paid (multi deduct)" which allow multiple deduction amounts. **Note:** We use the word "Deduction", as the diff amount can be anything not only to writeoff. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_account_payment_register_form |
account.payment.register.form | account.payment.register | xpath | Inherits account.view_account_payment_register_form |
is_writeoff
Boolean
No public methods.
account_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
amount
Monetary
required=True
string='Deduction Amount'
company_id
Many2one → res.company
comodel_name='res.company'
related='register_payment_id.company_id'
currency_id
Many2one → res.currency
comodel_name='res.currency'
related='register_payment_id.currency_id'
is_open
Boolean
help='Keep this line open'
string='Open'
name
Char
required=True
string='Label'
register_payment_id
Many2one → account.payment.register
comodel_name='account.payment.register'
index=True
ondelete='cascade'
readonly=True
No public methods.
deduct_analytic_distribution
Json
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='register_payment_id'
string='Deductions'
payment_difference_handling
Selection
ondelete={'reconcile_multi_deduct': 'cascade'}
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/17.0/account_payment_multi_deduction |
| 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), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, oca-ci, Randall Castro, Jesús Valdez |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:09 |
| 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 module extend invoice(s)'s register payment feature, from "Mark invoice as fully paid" with a single writeoff amount, to "Mark invoice as fully paid (multi deduct)" which allow multiple deduction amounts. **Note:** We use the word "Deduction", as the diff amount can be anything not only to writeoff. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_account_payment_register_form |
account.payment.register.form | account.payment.register | xpath | Inherits account.view_account_payment_register_form |
is_multi_deduction
Boolean
write(self, vals)
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=False
amount
Monetary
required=True
string='Deduction Amount'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
is_open
Boolean
help='Keep this line open'
string='Open'
name
Char
required=True
string='Label'
payment_id
Many2one → account.payment.register
comodel_name='account.payment.register'
ondelete='cascade'
readonly=True
No public methods.
deduct_analytic_distribution
Json
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
payment_difference_handling
Selection
ondelete={'reconcile_multi_deduct': 'cascade'}
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/16.0/account_payment_multi_deduction |
| 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), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | Weblate, oca-ci, Saran440 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:56 |
| 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 |
|---|---|---|---|---|
view_account_payment_register_form |
account.payment.register.form | account.payment.register | xpath | Inherits account.view_account_payment_register_form |
is_multi_deduction
Boolean
write(self, vals)
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=False
amount
Monetary
required=True
string='Deduction Amount'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
is_open
Boolean
help='Keep this line open'
string='Open'
name
Char
required=True
string='Label'
payment_id
Many2one → account.payment.register
comodel_name='account.payment.register'
ondelete='cascade'
readonly=True
No public methods.
deduct_analytic_distribution
Json
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
payment_difference_handling
Selection
ondelete={'reconcile_multi_deduct': 'cascade'}
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/15.0/account_payment_multi_deduction |
| 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), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Saran440 |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment |
| 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 |
|---|---|---|---|---|
view_account_payment_register_form |
account.payment.register.form | account.payment.register | xpath | Inherits account.view_account_payment_register_form |
is_multi_deduction
Boolean
No public methods.
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=False
amount
Monetary
required=True
string='Deduction Amount'
analytic_account_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
compute='_compute_analytic_multi_deduction'
index=True
readonly=False
store=True
string='Analytic Account'
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic Tags'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
name
Char
required=True
string='Label'
open
Boolean
help='Keep this line open'
payment_id
Many2one → account.payment.register
comodel_name='account.payment.register'
ondelete='cascade'
readonly=True
No public methods.
deduct_analytic_account_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
compute='_compute_default_analytic'
deduct_analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
compute='_compute_default_analytic'
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
payment_difference_handling
Selection
ondelete={'reconcile_multi_deduct': 'cascade'}
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
writeoff_analytic_account_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
index=True
string='Analytic Account'
writeoff_analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic Tags'
action_create_payments(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/14.0/account_payment_multi_deduction |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | Alexandre Fayolle, oca-travis, Weblate, OCA-git-bot, Saran440, ps-tubtim, oca-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:09 |
| 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 |
|---|---|---|---|---|
view_account_payment_register_form |
account.payment.register.form | account.payment.register | xpath | Inherits account.view_account_payment_register_form |
No new fields.
Public methods (0)No public methods.
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=False
string='Account'
amount
Monetary
required=True
string='Deduction Amount'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
string='Currency'
name
Char
required=True
string='Label'
open
Boolean
help='Keep this line open'
string='Open'
payment_id
Many2one → account.payment.register
comodel_name='account.payment.register'
ondelete='cascade'
readonly=True
string='Payment'
No public methods.
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
payment_difference_handling
Selection
ondelete={'reconcile_multi_deduct': 'cascade'}
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
action_create_payments(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/13.0/account_payment_multi_deduction |
| VERSION | |
| VERSION | 1.1.1 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, GitHub, Víctor Martínez, oca-travis, OCA-git-bot, Kitti U, Saran440, kittiu |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment |
| 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 |
|---|---|---|---|---|
view_account_payment_form |
view.account.payment.form | account.payment | xpath | Inherits account.view_account_payment_form |
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
payment_difference_handling
Selection
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
No public methods.
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=False
string='Account'
amount
Monetary
required=True
string='Deduction Amount'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
string='Currency'
name
Char
required=True
string='Label'
open
Boolean
help='Keep this line open'
string='Open'
payment_id
Many2one → account.payment
comodel_name='account.payment'
ondelete='cascade'
readonly=True
string='Payment'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-payment |
| GIT | |
| GIT | https://github.com/OCA/account-payment.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-payment/tree/12.0/account_payment_multi_deduction |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Ecosoft |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Ecosoft |
| COMMITTERS | |
| COMMITTERS | GitHub, sbejaoui, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Kitti U |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-payment/ |
| 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 |
|---|---|---|---|---|
view_account_payment_from_invoices |
view.account.payment.from.invoices | account.register.payments | xpath | Inherits account.view_account_payment_from_invoices |
view_account_payment_invoice_form |
account.payment.form | account.payment | xpath | Inherits account.view_account_payment_invoice_form |
payment_difference_handling
Selection
selection_add=[('reconcile_multi_deduct', 'Mark invoice as fully paid (multi deduct)')]
No public methods.
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.payment.deduction
comodel_name='account.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
No public methods.
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Account'
amount
Monetary
required=True
string='Deduction Amount'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
string='Currency'
name
Char
required=True
string='Label'
payment_id
Many2one → account.payment
comodel_name='account.payment'
ondelete='cascade'
readonly=True
string='Payment'
No public methods.
account_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Account'
amount
Monetary
required=True
string='Deduction Amount'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='payment_id.currency_id'
string='Currency'
name
Char
required=True
string='Label'
payment_id
Many2one → account.register.payments
comodel_name='account.register.payments'
ondelete='cascade'
readonly=True
string='Payment'
No public methods.
deduct_residual
Monetary
compute='_compute_deduct_residual'
string='Remainings'
deduction_ids
One2many → account.register.payment.deduction
comodel_name='account.register.payment.deduction'
copy=False
help='Sum of deduction amount(s) must equal to the payment difference'
inverse_name='payment_id'
string='Deductions'
No public methods.