Payment Counterpart Lines

account_payment_line
REPOSITORY
REPOSITORYOCA/account-payment
GIT
GIThttps://github.com/OCA/account-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-payment/tree/18.0/account_payment_line
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow S.L.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow S.L.
COMMITTERS
COMMITTERSCarlos Lopez, Weblate, OCA-git-bot, oca-ci, cristina-hidalgo-tecnativa, rjaraspearhead
WEBSITE
WEBSITEhttps://github.com/OCA/account-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_payment
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module is an utility module to add lines in payment, allowing users
make more complicated cases when processing payments, split on many
invoices, set up specific write-off and adding some analytic information

Add tool to proposal of payment distributions, ordering by due date

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_payment_line_tree view.account.payment.line.list account.payment.counterpart.line list New
view_inherit_account_payment_form view.inherit.account.payment.form account.payment xpath Inherits account.view_account_payment_form
Models touched (4)

New fields (1)
  • payment_line_id Many2one → account.payment.counterpart.line
    ondelete='set null' string='Payment line' args: 'account.payment.counterpart.line'
Public methods (0)

No public methods.

New fields (2)
  • line_payment_counterpart_ids One2many → account.payment.counterpart.line
    help='Use these lines to add matching lines, for example in a creditcard payment, financing interest or commission is added' string='Counterpart Lines' args: 'account.payment.counterpart.line', 'payment_id'
  • writeoff_account_id Many2one → account.account
    domain="[('deprecated', '=', False), ('company_ids', '=', company_id)]" string='Write-off Account' args: 'account.account'
Public methods (4)
  • action_delete_counterpart_lines(self)
  • action_draft(self)
  • action_post(self)
  • action_propose_payment_distribution(self)

New fields (1)
  • payment_id Many2one → account.payment
    ondelete='cascade' string='Payment' args: 'account.payment'
Public methods (0)

No public methods.

New fields (21)
  • account_id Many2one → account.account
    check_company=True ondelete='restrict' required=True string='Account' args: 'account.account'
  • aml_amount_residual Monetary
    compute='_compute_amounts' currency_field='currency_id' string='Amount Residual'
  • aml_amount_residual_currency Monetary
    compute='_compute_amounts' currency_field='currency_id' string='Amount Residual Currency'
  • aml_date_maturity Date
    related='aml_id.date_maturity' required=False string='Date Maturity'
  • aml_id Many2one → account.move.line
    ondelete='set null' string='Journal Item to Reconcile' args: 'account.move.line'
  • amount Monetary
    required=True
  • amount_currency Monetary
    compute='_compute_amounts' currency_field='currency_id' string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    check_company=True comodel_name='account.analytic.account' ondelete='restrict' string='Analytic Account'
  • commercial_partner_id Many2one
    related='partner_id.commercial_partner_id'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_fields'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_company_fields' string='Currency'
  • fully_paid Boolean
    string='Fully Paid?'
  • move_id Many2one → account.move
    ondelete='set null' string='Journal Entry' args: 'account.move'
  • move_ids One2many → account.move.line
    string='Journal Entries Created' args: 'account.move.line', 'payment_line_id'
  • name Char
    default='/' required=True string='Description'
  • partner_id Many2one → res.partner
    ondelete='restrict' string='Partner' args: 'res.partner'
  • residual_after_payment Monetary
    compute='_compute_amounts' currency_field='currency_id'
  • residual_after_payment_currency Monetary
    compute='_compute_amounts' currency_field='currency_id'
  • writeoff_account_id Many2one → account.account
    comodel_name='account.account' domain="[('deprecated', '=', False), ('company_ids', '=', company_id)]" string='Write-off account'
  • writeoff_amount Monetary
    compute='_compute_amounts' currency_field='currency_id' required=False
  • writeoff_amount_currency Monetary
    compute='_compute_amounts' currency_field='currency_id' required=False
Public methods (1)
  • constrains_amount_residual(self)
    @api.constrains('amount')
REPOSITORY
REPOSITORYOCA/account-payment
GIT
GIThttps://github.com/OCA/account-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-payment/tree/16.0/account_payment_line
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow S.L.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow S.L.
COMMITTERS
COMMITTERSJordi Ballester Alomar, Weblate, OCA-git-bot, oca-ci, Christopher Ormaza
WEBSITE
WEBSITEhttps://github.com/OCA/account-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_payment_line_tree view.account.payment.line.tree account.payment.counterpart.line tree New
view_inherit_account_payment_form view.inherit.account.payment.form account.payment xpath Inherits account.view_account_payment_form
Models touched (4)

New fields (1)
  • payment_line_id Many2one → account.payment.counterpart.line
    ondelete='set null' string='Payment line' args: 'account.payment.counterpart.line'
Public methods (0)

No public methods.

New fields (2)
  • line_payment_counterpart_ids One2many → account.payment.counterpart.line
    help='Use these lines to add matching lines, for example in a creditcard payment, financing interest or commission is added' readonly=True states={'draft': [('readonly', False)]} string='Counterpart Lines' args: 'account.payment.counterpart.line', 'payment_id'
  • writeoff_account_id Many2one → account.account
    domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" string='Write-off Account' args: 'account.account'
Public methods (4)
  • action_delete_counterpart_lines(self)
  • action_draft(self)
  • action_post(self)
  • action_propose_payment_distribution(self)

New fields (1)
  • payment_id Many2one → account.payment
    ondelete='cascade' required=False string='Payment' args: 'account.payment'
Public methods (0)

No public methods.

New fields (21)
  • account_id Many2one → account.account
    check_company=True ondelete='restrict' required=True string='Account' args: 'account.account'
  • aml_amount_residual Monetary
    compute='_compute_amounts' string='Amount Residual'
  • aml_amount_residual_currency Monetary
    compute='_compute_amounts' string='Amount Residual Currency'
  • aml_date_maturity Date
    related='aml_id.date_maturity' required=False string='Date Maturity'
  • aml_id Many2one → account.move.line
    ondelete='set null' string='Journal Item to Reconcile' args: 'account.move.line'
  • amount Monetary
    required=True
  • amount_currency Monetary
    compute='_compute_amounts' string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    check_company=True comodel_name='account.analytic.account' ondelete='restrict' string='Analytic Account'
  • commercial_partner_id Many2one
    related='partner_id.commercial_partner_id'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_fields' default=<expr>
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_company_fields' default=<expr> string='Currency'
  • fully_paid Boolean
    string='Fully Paid?'
  • move_id Many2one → account.move
    ondelete='set null' string='Journal Entry' args: 'account.move'
  • move_ids One2many → account.move.line
    string='Journal Entries Created' args: 'account.move.line', 'payment_line_id'
  • name Char
    default='/' required=True string='Description'
  • partner_id Many2one → res.partner
    ondelete='restrict' string='Partner' args: 'res.partner'
  • residual_after_payment Monetary
    compute='_compute_amounts'
  • residual_after_payment_currency Monetary
    compute='_compute_amounts'
  • writeoff_account_id Many2one → account.account
    comodel_name='account.account' domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" string='Write-off account'
  • writeoff_amount Monetary
    compute='_compute_amounts' required=False
  • writeoff_amount_currency Monetary
    compute='_compute_amounts' required=False
Public methods (1)
  • constrains_amount_residual(self)
    @api.constrains('amount', 'aml_amount_residual')
REPOSITORY
REPOSITORYOCA/account-payment
GIT
GIThttps://github.com/OCA/account-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-payment/tree/14.0/account_payment_line
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccount
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ForgeFlow S.L.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ForgeFlow S.L.
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Christopher Ormaza
WEBSITE
WEBSITEhttps://github.com/OCA/account-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_account_payment_line_tree view.account.payment.line.tree account.payment.counterpart.line tree New
view_inherit_account_payment_form view.inherit.account.payment.form account.payment xpath Inherits account.view_account_payment_form
Models touched (4)

New fields (1)
  • payment_line_id Many2one → account.payment.counterpart.line
    ondelete='set null' string='Payment line' args: 'account.payment.counterpart.line'
Public methods (0)

No public methods.

New fields (2)
  • line_payment_counterpart_ids One2many → account.payment.counterpart.line
    help='Use these lines to add matching lines, for example in a creditcard payment, financing interest or commission is added' readonly=True states={'draft': [('readonly', False)]} string='Counterpart Lines' args: 'account.payment.counterpart.line', 'payment_id'
  • writeoff_account_id Many2one → account.account
    domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" string='Write-off Account' args: 'account.account'
Public methods (4)
  • action_delete_counterpart_lines(self)
  • action_draft(self)
  • action_post(self)
  • action_propose_payment_distribution(self)

New fields (2)
  • analytic_tag_ids Many2many → account.analytic.tag
    check_company=True column1='line_id' column2='tag_id' comodel_name='account.analytic.tag' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" relation='counterpart_line_analytic_tag_rel' string='Analytic Tags'
  • payment_id Many2one → account.payment
    ondelete='cascade' required=False string='Payment' args: 'account.payment'
Public methods (0)

No public methods.

New fields (21)
  • account_id Many2one → account.account
    check_company=True ondelete='restrict' required=True string='Account' args: 'account.account'
  • aml_amount_residual Monetary
    compute='_compute_amounts' string='Amount Residual'
  • aml_amount_residual_currency Monetary
    compute='_compute_amounts' string='Amount Residual Currency'
  • aml_date_maturity Date
    related='aml_id.date_maturity' required=False string='Date Maturity'
  • aml_id Many2one → account.move.line
    ondelete='set null' string='Journal Item to Reconcile' args: 'account.move.line'
  • amount Monetary
    required=True string='Amount'
  • amount_currency Monetary
    compute='_compute_amounts' string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    check_company=True comodel_name='account.analytic.account' ondelete='restrict' string='Analytic Account'
  • commercial_partner_id Many2one
    related='partner_id.commercial_partner_id'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_fields' default=<expr>
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_company_fields' default=<expr> string='Currency'
  • fully_paid Boolean
    string='Fully Paid?'
  • move_id Many2one → account.move
    ondelete='set null' string='Journal Entry' args: 'account.move'
  • move_ids One2many → account.move.line
    string='Journal Entries Created' args: 'account.move.line', 'payment_line_id'
  • name Char
    default='/' required=True string='Description'
  • partner_id Many2one → res.partner
    ondelete='restrict' string='Partner' args: 'res.partner'
  • residual_after_payment Monetary
    compute='_compute_amounts'
  • residual_after_payment_currency Monetary
    compute='_compute_amounts'
  • writeoff_account_id Many2one → account.account
    comodel_name='account.account' domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" string='Write-off account'
  • writeoff_amount Monetary
    compute='_compute_amounts' required=False
  • writeoff_amount_currency Monetary
    compute='_compute_amounts' required=False
Public methods (1)
  • constrains_amount_residual(self)
    @api.constrains('amount', 'aml_amount_residual')