Skip to content

Commit 3799c6b

Browse files
Alexis de LattreReyes4711-S73
Alexis de Lattre
authored andcommitted
[FIX+IMP] account_banking_mandate: Several things
* Bug OCA#96 bad use of new API * [Usability] mandates: search by reference, add group_by, add seq type in tree view * Add scheme in mandate tree+search view * Replace tabs by spaces in mandate views * account_banking_mandate/views/account_banking_mandate_view.xml: convert from dos to unix format * Add multi-company rule on account.banking.mandate
1 parent c3a4124 commit 3799c6b

File tree

4 files changed

+139
-112
lines changed

4 files changed

+139
-112
lines changed

account_banking_mandate/__openerp__.py

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
'views/account_payment_view.xml',
4141
'views/res_partner_bank_view.xml',
4242
'data/mandate_reference_sequence.xml',
43+
'security/mandate_security.xml',
4344
'security/ir.model.access.csv',
4445
],
4546
'demo': [],

account_banking_mandate/models/payment_line.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class PaymentLine(models.Model):
3131
comodel_name='account.banking.mandate', string='Direct Debit Mandate',
3232
domain=[('state', '=', 'valid')])
3333

34-
@api.multi
34+
@api.model
3535
def create(self, vals=None):
3636
"""If the customer invoice has a mandate, take it
3737
otherwise, take the first valid mandate of the bank account
@@ -40,12 +40,12 @@ def create(self, vals=None):
4040
vals = {}
4141
partner_bank_id = vals.get('bank_id')
4242
move_line_id = vals.get('move_line_id')
43-
if (self.env.context.get('search_payment_order_type') == 'debit'
44-
and 'mandate_id' not in vals):
43+
if (self.env.context.get('search_payment_order_type') == 'debit' and
44+
'mandate_id' not in vals):
4545
if move_line_id:
4646
line = self.env['account.move.line'].browse(move_line_id)
47-
if (line.invoice and line.invoice.type == 'out_invoice'
48-
and line.invoice.mandate_id):
47+
if (line.invoice and line.invoice.type == 'out_invoice' and
48+
line.invoice.mandate_id):
4949
vals.update({
5050
'mandate_id': line.invoice.mandate_id.id,
5151
'bank_id': line.invoice.mandate_id.partner_bank_id.id,
@@ -61,8 +61,8 @@ def create(self, vals=None):
6161
@api.one
6262
@api.constrains('mandate_id', 'bank_id')
6363
def _check_mandate_bank_link(self):
64-
if (self.mandate_id and self.bank_id
65-
and self.mandate_id.partner_bank_id.id !=
64+
if (self.mandate_id and self.bank_id and
65+
self.mandate_id.partner_bank_id.id !=
6666
self.bank_id.id):
6767
raise exceptions.Warning(
6868
_("The payment line with reference '%s' has the bank account "
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
Copyright (C) 2015 Akretion (http://www.akretion.com/)
4+
@author: Alexis de Lattre <[email protected]>
5+
The licence is in the file __openerp__.py
6+
-->
7+
8+
9+
<openerp>
10+
<data noupdate="1">
11+
12+
<record id="account_banking_mandate_rule" model="ir.rule">
13+
<field name="name">Banking Mandate multi-company</field>
14+
<field name="model_id" ref="model_account_banking_mandate"/>
15+
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]</field>
16+
</record>
17+
18+
</data>
19+
</openerp>

account_banking_mandate/views/account_banking_mandate_view.xml

+112-105
Original file line numberDiff line numberDiff line change
@@ -6,117 +6,124 @@
66
-->
77
<openerp>
88
<data>
9-
<record id="view_mandate_form" model="ir.ui.view">
10-
<field name="name">view.mandate.form</field>
11-
<field name="model">account.banking.mandate</field>
12-
<field name="arch" type="xml">
13-
<form string="Banking Mandate" version="7.0">
14-
<header>
15-
<button name="validate" type="object" string="Validate" states="draft" class="oe_highlight"/>
16-
<button name="cancel" type="object" string="Cancel" states="draft,valid"/>
17-
<button name="back2draft" type="object" string="Back to Draft"
18-
states="cancel" groups="account.group_account_manager"
19-
confirm="You should set a mandate back to draft only if you cancelled it by mistake. Do you want to continue?"/>
20-
<field name="state" widget="statusbar"/>
21-
</header>
22-
<sheet>
23-
<div class="oe_title">
24-
<h1>
25-
<field name="unique_mandate_reference"
26-
class="oe_inline"
27-
readonly="1"/>
28-
</h1>
29-
</div>
30-
<group name="main">
31-
<field name="company_id" groups="base.group_multi_company"/>
32-
<field name="partner_bank_id"
33-
invisible="context.get('mandate_bank_partner_view')" />
34-
<field name="partner_id" invisible="context.get('mandate_bank_partner_view')" readonly="True"/>
35-
<field name="signature_date"/>
36-
<field name="scan"/>
37-
<field name="last_debit_date"/>
38-
</group>
39-
<group name="payment_lines" string="Related Payment Lines">
40-
<field name="payment_line_ids" nolabel="1"/>
41-
</group>
42-
</sheet>
43-
<div class="oe_chatter">
44-
<field name="message_follower_ids" widget="mail_followers"/>
45-
<field name="message_ids" widget="mail_thread"/>
46-
</div>
47-
</form>
48-
</field>
49-
</record>
509

51-
<record id="view_mandate_tree" model="ir.ui.view">
52-
<field name="name">view.mandate.tree</field>
53-
<field name="model">account.banking.mandate</field>
54-
<field name="arch" type="xml">
55-
<tree string="Banking Mandate" colors="blue:state=='draft';black:state in ('expired', 'cancel')">
56-
<field name="company_id" groups="base.group_multi_company"/>
57-
<field name="partner_id" invisible="context.get('mandate_bank_partner_view')"/>
58-
<field name="unique_mandate_reference" string="Reference"/>
59-
<field name="signature_date" string="Signature Date"/>
60-
<field name="last_debit_date"/>
61-
<field name="state"/>
62-
</tree>
63-
</field>
64-
</record>
6510

66-
<record id="view_mandate_search" model="ir.ui.view">
67-
<field name="name">view.mandate.search</field>
68-
<field name="model">account.banking.mandate</field>
69-
<field name="arch" type="xml">
70-
<search string="Search Banking Mandates">
71-
<field name="partner_id"/>
72-
<filter name="draft" string="Draft" domain="[('state', '=', 'draft')]" />
73-
<filter name="valid" string="Valid" domain="[('state', '=', 'valid')]" />
74-
<filter name="cancel" string="Cancelled" domain="[('state', '=', 'cancel')]" />
75-
<filter name="expired" string="Expired" domain="[('state', '=', 'expired')]" />
76-
</search>
77-
</field>
78-
</record>
11+
<record id="view_mandate_form" model="ir.ui.view">
12+
<field name="name">view.mandate.form</field>
13+
<field name="model">account.banking.mandate</field>
14+
<field name="arch" type="xml">
15+
<form string="Banking Mandate" version="7.0">
16+
<header>
17+
<button name="validate" type="object" string="Validate" states="draft" class="oe_highlight"/>
18+
<button name="cancel" type="object" string="Cancel" states="draft,valid"/>
19+
<button name="back2draft" type="object" string="Back to Draft"
20+
states="cancel" groups="account.group_account_manager"
21+
confirm="You should set a mandate back to draft only if you cancelled it by mistake. Do you want to continue?"/>
22+
<field name="state" widget="statusbar"/>
23+
</header>
24+
<sheet>
25+
<div class="oe_title">
26+
<h1>
27+
<field name="unique_mandate_reference"
28+
class="oe_inline"
29+
readonly="1"/>
30+
</h1>
31+
</div>
32+
<group name="main">
33+
<field name="company_id" groups="base.group_multi_company"/>
34+
<field name="partner_bank_id"
35+
invisible="context.get('mandate_bank_partner_view')" />
36+
<field name="partner_id" invisible="context.get('mandate_bank_partner_view')" readonly="True"/>
37+
<field name="signature_date"/>
38+
<field name="scan"/>
39+
<field name="last_debit_date"/>
40+
</group>
41+
<group name="payment_lines" string="Related Payment Lines">
42+
<field name="payment_line_ids" nolabel="1"/>
43+
</group>
44+
</sheet>
45+
<div class="oe_chatter">
46+
<field name="message_follower_ids" widget="mail_followers"/>
47+
<field name="message_ids" widget="mail_thread"/>
48+
</div>
49+
</form>
50+
</field>
51+
</record>
7952

80-
<record id="mandate_action" model="ir.actions.act_window">
81-
<field name="name">Banking Mandates</field>
82-
<field name="res_model">account.banking.mandate</field>
83-
<field name="view_type">form</field>
84-
<field name="view_mode">tree,form</field>
85-
<field name="help" type="html">
86-
<p class="oe_view_nocontent_create">
87-
Click to create a new Banking Mandate.
88-
</p><p>
89-
A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.
90-
</p>
91-
</field>
92-
</record>
53+
<record id="view_mandate_tree" model="ir.ui.view">
54+
<field name="name">view.mandate.tree</field>
55+
<field name="model">account.banking.mandate</field>
56+
<field name="arch" type="xml">
57+
<tree string="Banking Mandate" colors="blue:state=='draft';black:state in ('expired', 'cancel')">
58+
<field name="company_id" groups="base.group_multi_company"/>
59+
<field name="partner_id" invisible="context.get('mandate_bank_partner_view')"/>
60+
<field name="unique_mandate_reference" string="Reference"/>
61+
<field name="signature_date" string="Signature Date"/>
62+
<field name="last_debit_date"/>
63+
<field name="state"/>
64+
</tree>
65+
</field>
66+
</record>
9367

94-
<menuitem id="mandate_menu"
95-
parent="account_payment.menu_main_payment"
96-
action="mandate_action"
97-
sequence="20"
98-
/>
68+
<record id="view_mandate_search" model="ir.ui.view">
69+
<field name="name">view.mandate.search</field>
70+
<field name="model">account.banking.mandate</field>
71+
<field name="arch" type="xml">
72+
<search string="Search Banking Mandates">
73+
<field name="unique_mandate_reference" string="Reference or Partner" filter_domain="['|', ('unique_mandate_reference', 'ilike', self), ('partner_id', 'ilike', self)]"/>
74+
<field name="partner_id"/>
75+
<filter name="draft" string="Draft" domain="[('state', '=', 'draft')]" />
76+
<filter name="valid" string="Valid" domain="[('state', '=', 'valid')]" />
77+
<filter name="cancel" string="Cancelled" domain="[('state', '=', 'cancel')]" />
78+
<filter name="expired" string="Expired" domain="[('state', '=', 'expired')]" />
79+
<group string="Group By" name="groupby">
80+
<filter name="signature_date_groupby" string="Signature Date" context="{'group_by': 'signature_date'}"/>
81+
</group>
82+
</search>
83+
</field>
84+
</record>
9985

100-
<!-- notifications in the chatter -->
101-
<record id="mandate_valid" model="mail.message.subtype">
102-
<field name="name">Mandate Validated</field>
103-
<field name="res_model">account.banking.mandate</field>
104-
<field name="default" eval="False"/>
105-
<field name="description">Banking Mandate Validated</field>
106-
</record>
86+
<record id="mandate_action" model="ir.actions.act_window">
87+
<field name="name">Banking Mandates</field>
88+
<field name="res_model">account.banking.mandate</field>
89+
<field name="view_mode">tree,form</field>
90+
<field name="help" type="html">
91+
<p class="oe_view_nocontent_create">
92+
Click to create a new Banking Mandate.
93+
</p><p>
94+
A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.
95+
</p>
96+
</field>
97+
</record>
98+
99+
<menuitem id="mandate_menu"
100+
parent="account_payment.menu_main_payment"
101+
action="mandate_action"
102+
sequence="20"
103+
/>
104+
105+
<!-- notifications in the chatter -->
106+
<record id="mandate_valid" model="mail.message.subtype">
107+
<field name="name">Mandate Validated</field>
108+
<field name="res_model">account.banking.mandate</field>
109+
<field name="default" eval="False"/>
110+
<field name="description">Banking Mandate Validated</field>
111+
</record>
112+
113+
<record id="mandate_expired" model="mail.message.subtype">
114+
<field name="name">Mandate Expired</field>
115+
<field name="res_model">account.banking.mandate</field>
116+
<field name="default" eval="False"/>
117+
<field name="description">Banking Mandate has Expired</field>
118+
</record>
119+
120+
<record id="mandate_cancel" model="mail.message.subtype">
121+
<field name="name">Mandate Cancelled</field>
122+
<field name="res_model">account.banking.mandate</field>
123+
<field name="default" eval="False"/>
124+
<field name="description">Banking Mandate Cancelled</field>
125+
</record>
107126

108-
<record id="mandate_expired" model="mail.message.subtype">
109-
<field name="name">Mandate Expired</field>
110-
<field name="res_model">account.banking.mandate</field>
111-
<field name="default" eval="False"/>
112-
<field name="description">Banking Mandate has Expired</field>
113-
</record>
114127

115-
<record id="mandate_cancel" model="mail.message.subtype">
116-
<field name="name">Mandate Cancelled</field>
117-
<field name="res_model">account.banking.mandate</field>
118-
<field name="default" eval="False"/>
119-
<field name="description">Banking Mandate Cancelled</field>
120-
</record>
121128
</data>
122129
</openerp>

0 commit comments

Comments
 (0)