From 306ffae80b943ca19392f231a13e91a4bc5ce32e Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Mon, 30 Sep 2024 16:24:15 -0400 Subject: [PATCH] make sure html comments are posted with body_is_html=True --- .../wizard/sale_order_duplication_wizard.py | 101 ++++++++++-------- 1 file changed, 59 insertions(+), 42 deletions(-) diff --git a/bemade_quotation_alternative/wizard/sale_order_duplication_wizard.py b/bemade_quotation_alternative/wizard/sale_order_duplication_wizard.py index a4e070b..cb77912 100644 --- a/bemade_quotation_alternative/wizard/sale_order_duplication_wizard.py +++ b/bemade_quotation_alternative/wizard/sale_order_duplication_wizard.py @@ -1,51 +1,63 @@ from odoo import models, fields, api + class SaleOrderDuplicationWizard(models.TransientModel): - _name = 'sale.order.duplication.wizard' - _description = 'Wizard for duplicating a sale order' + _name = "sale.order.duplication.wizard" + _description = "Wizard for duplicating a sale order" - original_order_id = fields.Many2one('sale.order', string='Original Order', required=True) - new_quot = fields.Char(string='New Quotation Name', compute='_compute_new_quot', store=True) - - duplicate_all_lines = fields.Boolean(string='Duplicate All Lines?', default=True) - lines_to_duplicate = fields.One2many( - 'sale.order.line.duplication.wizard', 'wizard_id', - string="Lines to Duplicate", - context={'default_original_order_id': original_order_id}, + original_order_id = fields.Many2one( + "sale.order", string="Original Order", required=True + ) + new_quot = fields.Char( + string="New Quotation Name", compute="_compute_new_quot", store=True ) - purpose = fields.Text(string='Purpose') - note = fields.Html(string='Note') + duplicate_all_lines = fields.Boolean(string="Duplicate All Lines?", default=True) + lines_to_duplicate = fields.One2many( + "sale.order.line.duplication.wizard", + "wizard_id", + string="Lines to Duplicate", + context={"default_original_order_id": original_order_id}, + ) + + purpose = fields.Text(string="Purpose") + note = fields.Html(string="Note") @api.model def default_get(self, fields_list): res = super(SaleOrderDuplicationWizard, self).default_get(fields_list) - if 'default_original_order_id' in self.env.context: - original_order_id = self.env.context['default_original_order_id'] - original_order = self.env['sale.order'].browse(original_order_id) + if "default_original_order_id" in self.env.context: + original_order_id = self.env.context["default_original_order_id"] + original_order = self.env["sale.order"].browse(original_order_id) lines_vals = [] for line in original_order.order_line: - lines_vals.append((0, 0, {'sale_order_line_id': line.id})) - res.update({ - 'lines_to_duplicate': lines_vals, - 'purpose': original_order.purpose if 'purpose' in fields_list else '', - 'note': original_order.note if 'note' in fields_list else '', - }) + lines_vals.append((0, 0, {"sale_order_line_id": line.id})) + res.update( + { + "lines_to_duplicate": lines_vals, + "purpose": ( + original_order.purpose if "purpose" in fields_list else "" + ), + "note": original_order.note if "note" in fields_list else "", + } + ) return res def action_duplicate_order(self): self.ensure_one() # Duplication de la commande de vente - new_order = self.original_order_id.copy({ - 'purpose': self.purpose, - 'note': self.note, - # Assurez-vous que 'new_quot' est défini correctement dans votre modèle - 'name': self.new_quot, - }) + new_order = self.original_order_id.copy( + { + "purpose": self.purpose, + "note": self.note, + # Assurez-vous que 'new_quot' est défini correctement dans votre modèle + "name": self.new_quot, + } + ) if not self.duplicate_all_lines: new_order.order_line.unlink() - for line_wiz in self.lines_to_duplicate.filtered('to_duplicate'): - line_wiz.sale_order_line_id.copy({'order_id': new_order.id}) + for line_wiz in self.lines_to_duplicate.filtered("to_duplicate"): + line_wiz.sale_order_line_id.copy({"order_id": new_order.id}) # Préparation et envoi des messages de notification dans le chatter user_name = self.env.user.name @@ -53,26 +65,31 @@ class SaleOrderDuplicationWizard(models.TransientModel): # Message pour la commande originale original_msg_body = f"A new quotation #{new_order.name} created by {user_name} duplicating this Quotation." - self.original_order_id.message_post(body=original_msg_body) + self.original_order_id.message_post(body=original_msg_body, body_is_html=True) # Message pour la nouvelle commande dupliquée new_msg_body = f"This quotation has been created by {user_name} duplicating the original Quotation #{self.original_order_id.name}." - new_order.message_post(body=new_msg_body) + new_order.message_post(body=new_msg_body, body_is_html=True) return { - 'type': 'ir.actions.act_window', - 'name': 'Duplicated Order', - 'res_model': 'sale.order', - 'res_id': new_order.id, - 'view_mode': 'form', - 'target': 'current', + "type": "ir.actions.act_window", + "name": "Duplicated Order", + "res_model": "sale.order", + "res_id": new_order.id, + "view_mode": "form", + "target": "current", } - @api.depends('original_order_id') + @api.depends("original_order_id") def _compute_new_quot(self): for rec in self: - original_order_name = rec.original_order_id.name.split('-')[ - 0] if '-' in rec.original_order_id.name else rec.original_order_id.name - other_quotes = self.env['sale.order'].search([('name', 'like', original_order_name + '%')]) - rec.new_quot = original_order_name + '-REV' + str(len(other_quotes)) + original_order_name = ( + rec.original_order_id.name.split("-")[0] + if "-" in rec.original_order_id.name + else rec.original_order_id.name + ) + other_quotes = self.env["sale.order"].search( + [("name", "like", original_order_name + "%")] + ) + rec.new_quot = original_order_name + "-REV" + str(len(other_quotes))