From 7362e4d7f15d1b9df24338165e40211ccba31b68 Mon Sep 17 00:00:00 2001 From: Florian du Garage Num Date: Mon, 15 Sep 2025 22:21:31 +0200 Subject: [PATCH] readonly tax receipt --- donation/models/donation_tax_receipt.py | 8 -------- donation_base/i18n/fr.po | 2 +- donation_base/models/donation_tax_receipt.py | 12 ++++++++++++ donation_base/views/donation_tax_receipt.xml | 7 ++++--- donation_base/wizard/tax_receipt_print.py | 6 +----- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/donation/models/donation_tax_receipt.py b/donation/models/donation_tax_receipt.py index bc7a896..f26edd8 100644 --- a/donation/models/donation_tax_receipt.py +++ b/donation/models/donation_tax_receipt.py @@ -20,14 +20,6 @@ class DonationTaxReceipt(models.Model): compute="_compute_first_donation_date" ) - def write(self, vals): - raise UserError(_("Tax receipts cannot be modified manually. They must be generated from donations.")) - - @classmethod - def create(cls, vals_list): - raise UserError(_("Tax receipts cannot be created manually. They must be generated from donations.")) - - @api.depends("donation_ids.donation_date") def _compute_first_donation_date(self): for receipt in self: diff --git a/donation_base/i18n/fr.po b/donation_base/i18n/fr.po index c31fc42..3ee976b 100644 --- a/donation_base/i18n/fr.po +++ b/donation_base/i18n/fr.po @@ -471,7 +471,7 @@ msgstr "Partenaire" #: model_terms:ir.ui.view,arch_db:donation_base.donation_tax_receipt_form #, fuzzy msgid "Print" -msgstr "Date d'impression" +msgstr "Imprimer" #. module: donation_base #: model:ir.model.fields,field_description:donation_base.field_donation_tax_receipt__print_date diff --git a/donation_base/models/donation_tax_receipt.py b/donation_base/models/donation_tax_receipt.py index 065ed23..948a8b9 100644 --- a/donation_base/models/donation_tax_receipt.py +++ b/donation_base/models/donation_tax_receipt.py @@ -54,6 +54,11 @@ class DonationTaxReceipt(models.Model): readonly=True, ) + def write(self, vals): + if not self.env.context.get("allow_tax_receipt_write"): + raise UserError(_("Tax receipts cannot be modified manually. They must be generated from donations.")) + super().write(vals) + @api.model_create_multi def create(self, vals_list): for vals in vals_list: @@ -99,3 +104,10 @@ class DonationTaxReceipt(models.Model): "context": ctx, } return action + + def action_print_receipt(self): + today = fields.Date.context_today(self) + for receipt in self: + if not receipt.print_date: + receipt.with_context(allow_tax_receipt_write=True).write({"print_date": today}) + return self.env.ref("donation_base.report_donation_tax_receipt").report_action(self) diff --git a/donation_base/views/donation_tax_receipt.xml b/donation_base/views/donation_tax_receipt.xml index ea466ce..aa39ae2 100644 --- a/donation_base/views/donation_tax_receipt.xml +++ b/donation_base/views/donation_tax_receipt.xml @@ -10,7 +10,7 @@ donation.tax.receipt.form donation.tax.receipt -
+
diff --git a/donation_base/wizard/tax_receipt_print.py b/donation_base/wizard/tax_receipt_print.py index d22bebe..ea8b36b 100644 --- a/donation_base/wizard/tax_receipt_print.py +++ b/donation_base/wizard/tax_receipt_print.py @@ -27,8 +27,4 @@ class DonationTaxReceiptPrint(models.TransientModel): self.ensure_one() if not self.receipt_ids: raise UserError(_("There are no tax receipts to print.")) - today = fields.Date.context_today(self) - self.receipt_ids.write({"print_date": today}) - return self.env.ref("donation_base.report_donation_tax_receipt").report_action( - self.receipt_ids - ) + return self.receipt_ids.action_print_receipt()