Repository
OCA/bank-payment-alternative · module folder · Try on Runboat
Module version
2.0.0
Category
Banking addons
Folder size
2.81 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/bank-payment-alternative
Last tracking update
2026-08-07 09:06:26
Authors
Akretion, ACSONE SA/NV, Odoo Community Association (OCA), Therp BV, Tecnativa
Maintainers
Akretion, ACSONE SA/NV, Odoo Community Association (OCA), Therp BV, Tecnativa
Committers
Alexis de Lattre, Weblate, OCA-git-bot, oca-ci
Odoo dependencies
OCA/account-payment:
OCA/bank-payment-alternative:
odoo/odoo:
- web
- bus
- uom
Python dependencies
None
System dependencies
None
Required by
account_payment_discount, account_payment_fr_lcr, account_payment_mandate, account_payment_sepa_base
Description
This module adds support for payment orders and debit orders.

Code Analysis

Views touched (23)
XML IDNameModelTypeStatus
account_payment_line_create_form account_payment_line_create.form account.payment.line.create form New
account_payment_line_form account.payment.line.form account.payment.line form New
account_payment_line_form_readonly account.payment.line.form.readonly account.payment.line form Inherits account_payment_batch_oca.account_payment_line_form
account_payment_line_tree account.payment.line.list account.payment.line list New
account_payment_lot_form account.payment.lot form New
account_payment_lot_list account.payment.lot list New
account_payment_lot_search account.payment.lot search New
account_payment_method_form_view account.payment.method form Inherits account_payment_base_oca.account_payment_method_form
account_payment_method_line_form account.payment.method.line form Inherits account_payment_base_oca.account_payment_method_line_form
account_payment_method_line_search account.payment.method.line search Inherits account_payment_base_oca.account_payment_method_line_search
account_payment_method_list account.payment.method list Inherits account_payment_base_oca.account_payment_method_list
account_payment_order_form account.payment.order.form account.payment.order form New
account_payment_order_graph account.payment.order.graph account.payment.order graph New
account_payment_order_pivot account.payment.order.pivot account.payment.order pivot New
account_payment_order_search account.payment.order.search account.payment.order search New
account_payment_order_tree account.payment.order.list account.payment.order list New
print_account_payment_order_document print_account_payment_order_document ir.ui.view qweb New
print_account_payment_order_main print_account_payment_order_main ir.ui.view qweb New
view_account_payment_form account.payment.form account.payment form Inherits account.view_account_payment_form
view_account_payment_method_line_tree account.payment.method.line tree Inherits account_payment_base_oca.view_account_payment_method_line_tree
view_account_payment_tree_payment_order account.payment.tree account.payment tree Inherits account.view_account_payment_tree
view_invoice_tree account_payment_order.view_invoice_tree account.move tree Inherits account.view_invoice_tree
view_move_form account_payment_order.view_move_form account.move form Inherits account_payment_base_oca.view_move_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (9)

New fields (3)
  • payment_line_count Integer
    compute='_compute_payment_line_count'
  • payment_order_ok Boolean
    related='preferred_payment_method_line_id.payment_order_ok'
  • reference_type Selection
    default='free' readonly=True selection=[('free', 'Free Reference'), ('structured', 'Structured Reference')]
Public methods (2)
  • action_payment_lines(self)
  • create_account_payment_line(self)

New fields (1)
  • payment_line_ids One2many → account.payment.line
    check_company=True comodel_name='account.payment.line' inverse_name='move_line_id' string='Payment Lines'
Public methods (1)
  • create_payment_line_from_move_line(self, payment_order)

New fields (4)
  • order_state Selection
    related='payment_order_id.state' string='Payment Order State'
  • payment_line_ids Many2many → account.payment.line
    comodel_name='account.payment.line' readonly=True
  • payment_lot_id Many2one → account.payment.lot
    comodel_name='account.payment.lot' readonly=True
  • payment_order_id Many2one → account.payment.order
    comodel_name='account.payment.order' readonly=True
Public methods (0)

No public methods.

New fields (22)
  • amount_company_currency Monetary
    compute='_compute_amount_company_currency' currency_field='company_currency_id' store=True string='Amount in Company Currency'
  • amount_currency Monetary
    compute='_compute_payment_line' currency_field='currency_id' precompute=True readonly=False store=True string='Amount'
  • bank_account_required Boolean
    related='order_id.payment_method_id.bank_account_required'
  • communication Char
    compute='_compute_payment_line' help='Label of the payment that will be seen by the destinee' precompute=True readonly=False required=False store=True
  • communication_type Selection
    compute='_compute_payment_line' precompute=True readonly=False required=True selection=[('free', 'Free'), ('structured', 'Structured')] store=True
  • company_currency_id Many2one
    related='order_id.company_currency_id' store=True
  • company_id Many2one
    related='order_id.company_id' store=True
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_payment_line' precompute=True readonly=False required=True store=True string='Currency of the Payment Transaction'
  • date Date
    string='Payment Date'
  • mail_notif Boolean
    related='order_id.payment_method_line_id.mail_notif'
  • mail_notif_partner_id Many2one → res.partner
    compute='_compute_mail_notif_partner_id' domain="[('email', '!=', False), '|', ('parent_id', '=', partner_id), ('id', '=', partner_id)]" precompute=True readonly=False store=True string='Partner to Notify' args: 'res.partner'
  • ml_maturity_date Date
    related='move_line_id.date_maturity'
  • move_line_id Many2one → account.move.line
    check_company=True comodel_name='account.move.line' domain="[('reconciled','=', False), ('account_id.reconcile', '=', True), ('partner_id', '!=', False)]" ondelete='restrict' string='Journal Item'
  • name Char
    copy=False readonly=True string='Payment Reference'
  • order_id Many2one → account.payment.order
    check_company=True comodel_name='account.payment.order' index=True ondelete='cascade' string='Payment Order'
  • partner_bank_acc_type Selection
    related='partner_bank_id.acc_type' string='Bank Account Type'
  • partner_bank_allow_out_payment Boolean
    related='partner_bank_id.allow_out_payment' store=True
  • partner_bank_id Many2one → res.partner.bank
    check_company=True comodel_name='res.partner.bank' compute='_compute_partner_bank_id' ondelete='restrict' precompute=True readonly=False required=False store=True string='Partner Bank Account'
  • partner_id Many2one → res.partner
    check_company=True comodel_name='res.partner' compute='_compute_payment_line' domain=[('parent_id', '=', False)] precompute=True readonly=False required=True store=True
  • payment_ids Many2many → account.payment
    comodel_name='account.payment' readonly=True string='Payment transaction'
  • payment_type Selection
    related='order_id.payment_type' store=True
  • state Selection
    related='order_id.state' store=True
Public methods (2)
  • action_open_related_move(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (11)
  • date_type Selection
    required=True selection=[('due', 'Due Date'), ('move', 'Move Date')] string='Type of Date Filter'
  • due_date Date
  • eligible_move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' compute='_compute_eligible_move_line_ids' string='Eligible Journal Items'
  • invoice Boolean
    string='Linked to an Invoice or Refund'
  • journal_ids Many2many → account.journal
    comodel_name='account.journal' string='Journals Filter'
  • move_date Date
    default=fields.Date.context_today
  • move_line_ids Many2many → account.move.line
    comodel_name='account.move.line' domain="[('id', 'in', eligible_move_line_ids)]" string='Journal Items'
  • order_id Many2one → account.payment.order
    comodel_name='account.payment.order' string='Payment Order'
  • partner_ids Many2many → res.partner
    comodel_name='res.partner' domain=[('parent_id', '=', False)] string='Partners'
  • payment_mode Selection
    selection=[('same', 'Same'), ('same_or_null', 'Same or Empty'), ('any', 'Any')] string='Payment Method'
  • target_move Selection
    selection=[('posted', 'All Posted Entries'), ('all', 'All Entries')] string='Target Moves'
Public methods (3)
  • create_payment_lines(self)
  • default_get(self, field_list)
    @api.model
  • populate(self)

New fields (11)
  • amount Monetary
    compute='_compute_payment_lot' store=True
  • company_id Many2one
    related='order_id.company_id' store=True
  • currency_id Many2one → res.currency
    readonly=True args: 'res.currency'
  • date Date
    readonly=True required=True string='Execution Date'
  • journal_id Many2one
    related='order_id.journal_id' store=True
  • name Char
    readonly=True required=True
  • order_id Many2one → account.payment.order
    check_company=True comodel_name='account.payment.order' index=True ondelete='cascade' readonly=True required=True string='Payment Order'
  • payment_count Integer
    compute='_compute_payment_lot' store=True
  • payment_ids One2many → account.payment
    args: 'account.payment', 'payment_lot_id'
  • payment_type Selection
    related='order_id.payment_type' store=True
  • state Selection
    related='order_id.state' store=True
Public methods (0)

No public methods.

New fields (1)
  • payment_order_ok Boolean
    help='Check this option for payment methods designed to be used in payment orders.' string='Payment Orders'
Public methods (0)

No public methods.

New fields (12)
  • default_date_prefered Selection
    compute='_compute_default_date_prefered' precompute=True readonly=False selection=[('now', 'Immediately'), ('due', 'Due Date'), ('fixed', 'Fixed Date')] store=True string='Default Payment Execution Date'
  • default_date_type Selection
    default='due' selection=[('due', 'Due'), ('move', 'Move')] string='Type of Date Filter'
  • default_invoice Boolean
    default=False string='Linked to an Invoice or Refund'
  • default_journal_ids Many2many → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_default_journal_ids' domain="[('company_id', '=', company_id)]" precompute=True readonly=False store=True string='Journals Filter'
  • default_payment_mode Selection
    default='same' selection=[('same', 'Same'), ('same_or_null', 'Same or empty'), ('any', 'Any')] string='Payment Method on Invoice'
  • default_target_move Selection
    default='posted' selection=[('posted', 'All Posted Entries'), ('all', 'All Entries')] string='Target Journal Items'
  • group_lines Boolean
    default=True help="If this mark is checked, the transaction lines of the payment order will be grouped upon confirmation of the payment order.The grouping will be done only if the following fields matches:\n* Partner\n* Currency\n* Destination Bank Account\n* Payment Date\nand if the 'Communication Type' is 'Free'\n(other modules can set additional fields to restrict the grouping.)" string='Group Transactions in Payment Orders'
  • mail_notif Boolean
    help='If enabled, Odoo will automatically notify the partner by email when the payment/debit order file is successfully uploaded.' string='Notify by Email'
  • mail_partner_policy Selection
    default='invoice_partner' help='This configuration parameter will decide which partner is auto-configured as partner to notify on the payment/debit transaction. You can always manually change the partner to notify on the payment/debit transaction when the payment/debit order is in draft state.' string='Partner to Notify' args: [('invoice_partner', 'Partner of the Invoice'), ('last_payment', 'Last Payment'), ('parent', 'Parent Partner'), ('invoice_contact', 'First Invoice Contact'), ('manual', 'Manual')]
  • no_debit_before_maturity Boolean
    default=True help='If you activate this option on an Inbound payment method, you will have an error message when you confirm a debit order that has a payment line with a payment date before the maturity date.' string='Disallow Debit Before Maturity Date'
  • payment_order_ok Boolean
    compute='_compute_payment_order_ok' precompute=True readonly=False store=True string='Selectable on Payment Orders'
  • specific_sequence_id Many2one → ir.sequence
    check_company=True copy=False help='If left empty, the payment orders with this payment method will use the generic sequence for all payment orders.' args: 'ir.sequence'
Public methods (0)

No public methods.

New fields (30)
  • allowed_journal_ids Many2many → account.journal
    comodel_name='account.journal' compute='_compute_allowed_journal_ids' string='Allowed journals'
  • bank_account_link Selection
    related='payment_method_line_id.bank_account_link'
  • company_currency_id Many2one
    related='company_id.currency_id' store=True
  • company_id Many2one → res.company
    default=<expr> index=True ondelete='cascade' required=True args: 'res.company'
  • company_partner_bank_id Many2one
    related='journal_id.bank_account_id' string='Company Bank Account'
  • date_generated Date
    readonly=True string='File Generation Date'
  • date_prefered Selection
    compute='_compute_date_prefered' precompute=True required=True selection=[('now', 'Immediately'), ('due', 'Due Date'), ('fixed', 'Fixed Date')] store=True string='Payment Execution Date Type' tracking=True
  • date_scheduled Date
    help="Select a requested date of execution if you selected 'Due Date' as the Payment Execution Date Type." string='Payment Execution Date' tracking=True
  • date_uploaded Date
    readonly=True string='File Upload Date'
  • description Char
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_journal_id' domain="[('id', 'in', allowed_journal_ids)]" ondelete='restrict' precompute=True store=True string='Bank Journal' tracking=True
  • mail_notif Boolean
    related='payment_method_line_id.mail_notif'
  • name Char
    copy=False default=<expr> readonly=True string='Reference'
  • payment_count Integer
    compute='_compute_payment_count' store=True string='Number of Payment Transactions'
  • payment_file_datas Binary
    related='payment_file_id.datas' string='Payment File'
  • payment_file_id Many2one → ir.attachment
    string='Payment File Attachment' args: 'ir.attachment'
  • payment_file_name Char
    related='payment_file_id.name' string='Payment Filename'
  • payment_ids One2many → account.payment
    comodel_name='account.payment' inverse_name='payment_order_id' readonly=True string='Payment Transactions'
  • payment_line_ids One2many → account.payment.line
    comodel_name='account.payment.line' inverse_name='order_id' string='Transactions'
  • payment_lot_count Integer
    compute='_compute_payment_lot_count' store=True string='Number of Lots'
  • payment_lot_ids One2many → account.payment.lot
    comodel_name='account.payment.lot' inverse_name='order_id' readonly=True
  • payment_method_code Char
    related='payment_method_line_id.payment_method_id.code' store=True
  • payment_method_id Many2one → account.payment.method
    comodel_name='account.payment.method' related='payment_method_line_id.payment_method_id' store=True
  • payment_method_line_id Many2one → account.payment.method.line
    check_company=True comodel_name='account.payment.method.line' domain="[('payment_order_ok', '=', True), ('payment_type', '=', payment_type), ('company_id', '=', company_id)]" index=True ondelete='restrict' required=True string='Payment Method' tracking=True
  • payment_type Selection
    readonly=True required=True selection=[('inbound', 'Inbound'), ('outbound', 'Outbound')]
  • search_partner_id Many2one
    related='payment_line_ids.partner_id' string='Partner'
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('open', 'Confirmed'), ('generated', 'File Generated'), ('uploaded', 'File Uploaded'), ('cancel', 'Cancel')] string='Status' tracking=True
  • total_company_currency Monetary
    compute='_compute_total' currency_field='company_currency_id' store=True
  • untrusted_bank_account_count Integer
    compute='_compute_untrusted_bank_accounts'
  • untrusted_bank_account_ids Many2many → res.partner.bank
    compute='_compute_untrusted_bank_accounts' args: 'res.partner.bank'
Public methods (10)
  • action_cancel(self)
  • action_open_invoices(self)
  • action_open_payments(self)
  • action_open_untrusted_accounts(self)
  • cancel2draft(self)
  • create(self, vals_list)
    @api.model_create_multi
  • draft2open(self)
    Called when you click on the 'Confirm' button Set the 'date' on payment line depending on the 'date_prefered' of the order Generate the account payments and lots
  • generate_payment_file(self)
    Returns (payment file as bytes, filename extension without the dot)
  • generated2uploaded(self)
  • open2generated(self)

Loading…