Skip to content

Commit 0dbf364

Browse files
[REF] account_invoice_overdue_reminder: modernize ORM writes and cleanup readonly flags
- Replace write() calls with recordset assignment/update - Remove readonly flags from model fields to avoid unnecessary restrictions, defining readonly behavior in views instead.
1 parent 41e096d commit 0dbf364

File tree

6 files changed

+34
-30
lines changed

6 files changed

+34
-30
lines changed

account_invoice_overdue_reminder/models/account_invoice_overdue_reminder.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ class AccountInvoiceOverdueReminder(models.Model):
1414
# For the link to invoice: why a M2O and not a M2M ?
1515
# Because of the "counter" field: a single reminder action for a customer,
1616
# the "counter" may not be the same for each invoice
17-
invoice_id = fields.Many2one(
18-
"account.move", string="Invoice", ondelete="cascade", readonly=True
19-
)
17+
invoice_id = fields.Many2one("account.move", string="Invoice", ondelete="cascade")
2018
action_id = fields.Many2one(
2119
"overdue.reminder.action", string="Overdue Reminder Action", ondelete="cascade"
2220
)
@@ -32,13 +30,11 @@ class AccountInvoiceOverdueReminder(models.Model):
3230
action_result_id = fields.Many2one(related="action_id.result_id", readonly=False)
3331
action_result_notes = fields.Html(related="action_id.result_notes", readonly=False)
3432
action_mail_id = fields.Many2one(related="action_id.mail_id")
35-
action_mail_cc = fields.Char(
36-
related="action_id.mail_id.email_cc", readonly=True, string="Cc"
37-
)
33+
action_mail_cc = fields.Char(related="action_id.mail_id.email_cc", string="Cc")
3834
action_mail_state = fields.Selection(
3935
related="action_id.mail_id.state", string="E-mail Status"
4036
)
41-
counter = fields.Integer(readonly=True)
37+
counter = fields.Integer()
4238
company_id = fields.Many2one(related="invoice_id.company_id", store=True)
4339

4440
_sql_constraints = [
@@ -48,10 +44,7 @@ class AccountInvoiceOverdueReminder(models.Model):
4844
@api.constrains("invoice_id")
4945
def invoice_id_check(self):
5046
for action in self:
51-
if action.invoice_id and action.invoice_id.move_type not in [
52-
"out_invoice",
53-
"out_refund",
54-
]:
47+
if action.invoice_id and not action.invoice_id.is_sale_document():
5548
raise ValidationError(
5649
_(
5750
"An overdue reminder can only be attached "

account_invoice_overdue_reminder/models/overdue_reminder_action.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ class OverdueReminderAction(models.Model):
1313

1414
commercial_partner_id = fields.Many2one(
1515
"res.partner",
16-
readonly=True,
1716
string="Customer",
1817
index=True,
1918
domain=[("parent_id", "=", False)],

account_invoice_overdue_reminder/views/account_invoice_overdue_reminder.xml

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
<field name="arch" type="xml">
1212
<form>
1313
<group name="main">
14-
<field name="counter" invisible="action_reminder_type == 'phone'" />
14+
<field
15+
name="counter"
16+
readonly="1"
17+
invisible="action_reminder_type == 'phone'"
18+
/>
1519
<field
1620
name="action_commercial_partner_id"
1721
invisible="not context.get('overdue_reminder_main_view')"
@@ -52,20 +56,28 @@
5256
<field name="arch" type="xml">
5357
<form>
5458
<group name="main">
55-
<field name="invoice_id" />
59+
<field name="invoice_id" readonly="1" />
5660
<field name="action_reminder_type" invisible="1" />
57-
<field name="counter" invisible="action_reminder_type == 'phone'" />
61+
<field
62+
name="counter"
63+
readonly="1"
64+
invisible="action_reminder_type == 'phone'"
65+
/>
5866
</group>
5967
</form>
6068
</field>
6169
</record>
6270

6371
<record id="account_invoice_overdue_reminder_tree" model="ir.ui.view">
64-
<field name="name">account.invoice.overdue.reminder.tree</field>
72+
<field name="name">account.invoice.overdue.reminder.list</field>
6573
<field name="model">account.invoice.overdue.reminder</field>
6674
<field name="arch" type="xml">
6775
<tree create="0">
68-
<field name="counter" invisible="action_reminder_type == 'phone'" />
76+
<field
77+
name="counter"
78+
readonly="1"
79+
invisible="action_reminder_type == 'phone'"
80+
/>
6981
<field name="action_date" />
7082
<field
7183
name="action_partner_id"
@@ -104,8 +116,8 @@
104116
<field name="priority">100</field>
105117
<field name="arch" type="xml">
106118
<tree create="0">
107-
<field name="invoice_id" />
108-
<field name="counter" />
119+
<field name="invoice_id" readonly="1" />
120+
<field name="counter" readonly="1" />
109121
</tree>
110122
</field>
111123
</record>

account_invoice_overdue_reminder/views/overdue_reminder_action.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<form>
1313
<sheet>
1414
<group name="main">
15-
<field name="commercial_partner_id" />
15+
<field name="commercial_partner_id" readonly="1" />
1616
<field name="partner_id" context="{'show_email': True}" />
1717
<field name="date" />
1818
<field name="user_id" />
@@ -44,7 +44,7 @@
4444
<field name="arch" type="xml">
4545
<tree>
4646
<field name="date" />
47-
<field name="commercial_partner_id" />
47+
<field name="commercial_partner_id" readonly="1" />
4848
<field name="user_id" widget="many2one_avatar_user" optional="show" />
4949
<field
5050
name="reminder_type"

account_invoice_overdue_reminder/wizard/overdue_reminder_wizard.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ def goto_list_view(self):
451451
return action
452452

453453
def skip(self):
454-
self.write({"state": "skipped"})
454+
self.update({"state": "skipped"})
455455
if len(self) == 1:
456456
if self.interface == "onebyone":
457457
action = self.next_step()
@@ -520,7 +520,7 @@ def validate(self):
520520
orao.create(vals)
521521
if rec.create_activity:
522522
mao.create(self._prepare_mail_activity())
523-
self.write({"state": "done"})
523+
self.state = "done"
524524
if len(self) == 1:
525525
if self.interface == "onebyone":
526526
action = self.next_step()
@@ -587,7 +587,7 @@ def generate_mail_vals(self):
587587
mail = self.env["mail.mail"].sudo().create(mvals)
588588
if self.company_id.overdue_reminder_attach_invoice:
589589
attachment_ids = self._get_attachment_ids(mail)
590-
mail.write({"attachment_ids": [Command.set(attachment_ids)]})
590+
mail.attachment_ids = [Command.set(attachment_ids)]
591591
vals = {"mail_id": mail.id}
592592
return vals
593593

@@ -652,7 +652,7 @@ def _prepare_overdue_reminder_action(self, vals):
652652

653653
def print_letter(self):
654654
self.check_warnings()
655-
self.write({"letter_printed": True})
655+
self.letter_printed = True
656656
action = action = (
657657
self.env.ref(MOD + ".overdue_reminder_step_report")
658658
.with_context(discard_logo_check=True)
@@ -720,5 +720,5 @@ def run(self):
720720
elif self.update_action == "reminder_type":
721721
if not self.reminder_type:
722722
raise UserError(_("You must select the new reminder type."))
723-
actions.write({"reminder_type": self.reminder_type})
723+
actions.reminder_type = self.reminder_type
724724
return

account_invoice_overdue_reminder/wizard/overdue_reminder_wizard_view.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
<form>
114114
<group name="main">
115115
<group name="main-left">
116-
<field name="commercial_partner_id" />
116+
<field name="commercial_partner_id" readonly="1" />
117117
<field
118118
name="partner_id"
119119
domain="[('id', 'child_of', commercial_partner_id)]"
@@ -123,7 +123,7 @@
123123
<field name="company_id" invisible="1" />
124124
</group>
125125
<group name="main-right">
126-
<field name="counter" />
126+
<field name="counter" readonly="1" />
127127
<field name="partner_phone" widget="phone" />
128128
<field name="partner_mobile" widget="phone" />
129129
</group>
@@ -276,9 +276,9 @@
276276
string="Skip"
277277
/>
278278
</header>
279-
<field name="commercial_partner_id" decoration-bf="1" />
279+
<field name="commercial_partner_id" readonly="1" decoration-bf="1" />
280280
<field name="partner_id" />
281-
<field name="counter" />
281+
<field name="counter" readonly="1" />
282282
<field
283283
name="reminder_type"
284284
widget="badge"

0 commit comments

Comments
 (0)