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))