Initial commit: OCA payment modules from bank-payment

- account_payment_mode: Payment methods configuration
- account_payment_partner: Link payment modes to partners
- account_payment_order: Create and manage payment orders
- account_payment_order_grouped_output: Consolidated accounting entries

Source: OCA/bank-payment branch 16.0
License: AGPL-3.0

🤖 assisted by claude
This commit is contained in:
Ernad Husremovic 2025-11-12 15:26:06 +01:00
commit 99c650f4f5
204 changed files with 77191 additions and 0 deletions

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2016 Akretion (http://www.akretion.com/)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_move_line_form" model="ir.ui.view">
<field name="name">account_payment_partner.move_line_form</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='analytic_distribution']/.." position="after">
<group name="payments" string="Payments">
<field name="account_type" invisible="1" />
<field name="reconciled" invisible="1" />
<field
name="payment_mode_id"
force_save="1"
attrs="{'invisible': [('account_type', 'not in', ['asset_receivable', 'liability_payable'])], 'readonly': ['|', ('account_type', 'not in', ['asset_receivable', 'liability_payable']), ('reconciled', '=', True)]}"
/>
</group>
</xpath>
</field>
</record>
<record id="view_move_line_tree" model="ir.ui.view">
<field name="name">account.move.line.tree - Add payment mode</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_tree" />
<field name="arch" type="xml">
<field name="date_maturity" position="after">
<field name="account_type" invisible="1" />
<field name="reconciled" invisible="1" />
<field
name="payment_mode_id"
optional="hide"
force_save="1"
attrs="{'invisible': [('account_type', 'not in', ['asset_receivable', 'liability_payable'])], 'readonly': ['|', ('account_type', 'not in', ['asset_receivable', 'liability_payable']), ('reconciled', '=', True)]}"
/>
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2014-16 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_account_invoice_filter" model="ir.ui.view">
<field name="name">account_payment_partner.account_invoice_search</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_account_invoice_filter" />
<field name="arch" type="xml">
<filter name="status" position="after">
<filter
string="Payment Mode"
name="payment_mode_groupby"
context="{'group_by': 'payment_mode_id'}"
/>
</filter>
</field>
</record>
<record id="view_move_form" model="ir.ui.view">
<field name="name">account_payment_partner.view_move_form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<field name="partner_bank_id" position="before">
<field
name="payment_mode_id"
domain="[('payment_type', '=', payment_mode_filter_type_domain), ('company_id', '=', company_id)]"
widget="selection"
attrs="{'readonly': [('has_reconciled_items', '=', True)], 'invisible': [('move_type', 'not in', ('out_invoice','out_refund','in_invoice','in_refund'))]}"
/>
<field name="has_reconciled_items" invisible="1" />
<field name="bank_account_required" invisible="1" />
<field name="payment_mode_filter_type_domain" invisible="1" />
<field name="partner_bank_filter_type_domain" invisible="1" />
</field>
<xpath
expr="//group[@id='header_right_group']//field[@name='partner_bank_id']"
position="attributes"
>
<attribute name="context">
{'default_partner_id':commercial_partner_id}
</attribute>
<attribute name="domain">
[('partner_id', '=', partner_bank_filter_type_domain),
'|',('company_id', '=', company_id),('company_id', '=', False)]
</attribute>
<attribute name="attrs">
{'required': [('bank_account_required', '=', True),('move_type', 'in', ('in_invoice', 'in_refund'))],
'readonly': [('state', '!=', 'draft')],
'invisible': [('move_type', 'not in', ('in_invoice', 'in_refund', 'in_receipt'))]}
</attribute>
</xpath>
<xpath
expr="//page[@id='other_tab']//field[@name='partner_bank_id']"
position="attributes"
>
<attribute name="context">
{'default_partner_id':commercial_partner_id}
</attribute>
<attribute name="domain">
[('partner_id', '=', partner_bank_filter_type_domain),
'|',('company_id', '=', company_id),('company_id', '=', False)]
</attribute>
</xpath>
</field>
</record>
<record id="view_invoice_tree" model="ir.ui.view">
<field name="name">account_payment_partner.view_invoice_tree</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_invoice_tree" />
<field name="arch" type="xml">
<field name="amount_residual_signed" position="after">
<field name="payment_mode_id" optional="hide" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2018 Carlos Dauden - Tecnativa <carlos.dauden@tecnativa.com>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="account_payment_mode_form" model="ir.ui.view">
<field name="model">account.payment.mode</field>
<field name="inherit_id" ref="account_payment_mode.account_payment_mode_form" />
<field name="arch" type="xml">
<field name="variable_journal_ids" position="before">
<field name="refund_payment_mode_id" />
</field>
<group name="note" position="before">
<group string="Show bank account in invoice report">
<group>
<field name="show_bank_account" />
<field
name="show_bank_account_from_journal"
attrs="{'invisible': [('show_bank_account', '=', 'no')]}"
/>
<field
name="show_bank_account_chars"
string="# of chars"
attrs="{'invisible': [('show_bank_account', 'not in', ['first', 'last'])]}"
/>
</group>
</group>
</group>
</field>
</record>
</odoo>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="report_invoice_payment_mode"
inherit_id="account.report_invoice_document"
>
<xpath expr="//span[@t-field='o.narration']/.." position="before">
<p t-if="o.payment_mode_id.note">
<strong>Payment Mode:</strong>
<span t-field="o.payment_mode_id.note" />
</p>
<t t-if="o.payment_mode_id and o.payment_mode_id.show_bank_account != 'no'">
<p t-foreach="o.partner_banks_to_show()" t-as="partner_bank">
<strong>Bank Account:</strong>
<t t-if="partner_bank.bank_id">
<t
t-esc="partner_bank.bank_id.name + ('' if not partner_bank.bank_id.bic else ' (' + partner_bank.bank_id.bic + ')')"
/>
</t>
<t t-if="o.payment_mode_id.show_bank_account == 'full'">
<span t-field="partner_bank.acc_number" />
</t>
<t t-elif="o.payment_mode_id.show_bank_account == 'first'">
<span
t-esc="partner_bank.acc_number[:o.payment_mode_id.show_bank_account_chars] + '*' * (len(partner_bank.acc_number) - o.payment_mode_id.show_bank_account_chars)"
/>
</t>
<t t-elif="o.payment_mode_id.show_bank_account == 'last'">
<span
t-esc="'*' * (len(partner_bank.acc_number) - o.payment_mode_id.show_bank_account_chars) + partner_bank.acc_number[-o.payment_mode_id.show_bank_account_chars:]"
/>
</t>
</p>
</t>
</xpath>
</template>
</odoo>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2014-2016 Akretion (http://www.akretion.com/)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_partner_property_form" model="ir.ui.view">
<field name="name">account_partner_payment.partner_form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="account.view_partner_property_form" />
<field name="arch" type="xml">
<field name="property_payment_term_id" position="after">
<field name="customer_payment_mode_id" widget="selection" />
</field>
<field name="property_supplier_payment_term_id" position="after">
<field name="supplier_payment_mode_id" widget="selection" />
</field>
</field>
</record>
</odoo>