Skip to content

Commit 224b3b3

Browse files
committed
[IMP] donation & donation_base: res.partner filters
* New Tax Receipt (tax_receipt_send) * New Donation (donation_send_thanks) We send these documents together with a newsletter. So we need to filter contacts with newsletter AND (not) extra document.
1 parent 2fa5cf2 commit 224b3b3

File tree

4 files changed

+69
-7
lines changed

4 files changed

+69
-7
lines changed

donation/models/res_partner.py

+17
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,29 @@ def _compute_donation_count(self):
2020
for partner in self:
2121
partner.donation_count = mapped_data.get(partner.id, 0)
2222

23+
@api.depends("donation_ids.thanks_printed")
24+
def _compute_donation_send_thanks(self):
25+
for partner in self:
26+
if partner.donation_ids.filtered(lambda d: not d.thanks_printed):
27+
partner.donation_send_thanks = "yes"
28+
else:
29+
partner.donation_send_thanks = "no"
30+
2331
donation_ids = fields.One2many(
2432
"donation.donation", "partner_id", string="Donations", readonly=True
2533
)
2634
donation_count = fields.Integer(
2735
compute="_compute_donation_count", string="# of Donations", compute_sudo=True
2836
)
37+
# Stored selection to search on the <field>
38+
donation_send_thanks = fields.Selection(
39+
string="Send Donation Thanks",
40+
selection=[("yes", "Yes"), ("no", "No")],
41+
compute="_compute_donation_send_thanks",
42+
store=True,
43+
help="""Filter on donors who (don't) need a thanks.\n
44+
Send it e.g. together with a newsletter.""",
45+
)
2946

3047
def _prepare_donor_rank(self):
3148
rank = super()._prepare_donor_rank()

donation/views/res_partner.xml

+21
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,25 @@
2929
</xpath>
3030
</field>
3131
</record>
32+
<record id="res_partner_view_form_donation_send_thanks" model="ir.ui.view">
33+
<field name="name">res.partner.view.form.donation.send.thanks</field>
34+
<field name="model">res.partner</field>
35+
<field name="inherit_id" ref="donation_base.view_partner_property_form" />
36+
<field name="groups_id" eval="[(4, ref('donation.group_donation_viewer'))]" />
37+
<field name="arch" type="xml">
38+
<field name="tax_receipt_send" position="after">
39+
<field name="donation_send_thanks" />
40+
</field>
41+
</field>
42+
</record>
43+
<record id="res_partner_view_search" model="ir.ui.view">
44+
<field name="name">res.partner.view.search.donation</field>
45+
<field name="model">res.partner</field>
46+
<field name="inherit_id" ref="donation_base.res_partner_view_search" />
47+
<field name="arch" type="xml">
48+
<search position="inside">
49+
<field name="donation_send_thanks" />
50+
</search>
51+
</field>
52+
</record>
3253
</odoo>

donation_base/models/res_partner.py

+17
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ class ResPartner(models.Model):
2525
tax_receipt_count = fields.Integer(
2626
compute="_compute_tax_receipt_count", string="# of Tax Receipts", readonly=True
2727
)
28+
# Stored selection to search on the <field>
29+
tax_receipt_send = fields.Selection(
30+
string="Send Donation Tax Receipt",
31+
selection=[("yes", "Yes"), ("no", "No")],
32+
compute="_compute_tax_receipt_send",
33+
store=True,
34+
help="""Filter on donors who (don't) need a tax receipt.\n
35+
Send it e.g. together with a newsletter.""",
36+
)
2837
donor_rank = fields.Integer(default=0)
2938

3039
# I don't want to sync tax_receipt_option between parent and child
@@ -36,6 +45,14 @@ def _compute_tax_receipt_count(self):
3645
for partner in self:
3746
partner.tax_receipt_count = len(partner.tax_receipt_ids.ids)
3847

48+
@api.depends("tax_receipt_ids.print_date")
49+
def _compute_tax_receipt_send(self):
50+
for partner in self:
51+
if partner.tax_receipt_ids.filtered(lambda d: not d.print_date):
52+
partner.tax_receipt_send = "yes"
53+
else:
54+
partner.tax_receipt_send = "no"
55+
3956
@api.model_create_multi
4057
def create(self, vals_list):
4158
search_partner_mode = self.env.context.get("res_partner_search_mode")

donation_base/views/res_partner.xml

+14-7
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
name="tax_receipt_option"
2727
attrs="{'invisible': [('parent_id', '!=', False)]}"
2828
/>
29+
<field
30+
name="tax_receipt_send"
31+
attrs="{'invisible': [('parent_id', '!=', False)]}"
32+
/>
2933
<field name="donor_rank" invisible="1" />
3034
</field>
3135
<xpath expr="//div[@name='button_box']" position="inside">
@@ -44,19 +48,22 @@
4448
</button>
4549
</xpath>
4650
</field>
47-
</record>
51+
</record>
4852
<record id="res_partner_view_search" model="ir.ui.view">
4953
<field name="name">donation.res.partner.search</field>
5054
<field name="model">res.partner</field>
5155
<field name="inherit_id" ref="account.res_partner_view_search" />
5256
<field name="arch" type="xml">
53-
<filter name="supplier" position="after">
54-
<filter
55-
string="Donors"
56-
name="donor"
57-
domain="[('donor_rank','>', 0)]"
58-
/>
57+
<filter name="supplier" position="after">
58+
<filter
59+
string="Donors"
60+
name="donor"
61+
domain="[('donor_rank','>', 0)]"
62+
/>
5963
</filter>
64+
<search position="inside">
65+
<field name="tax_receipt_send" />
66+
</search>
6067
</field>
6168
</record>
6269
<record id="res_partner_action_donor" model="ir.actions.act_window">

0 commit comments

Comments
 (0)