diff --git a/models/product_template.py b/models/product_template.py index 1a24ffc09a84a9e163fa8e2b049921cfbaade542..42e8761ba6be4a8947ccb77594c759c2892941f1 100644 --- a/models/product_template.py +++ b/models/product_template.py @@ -18,7 +18,7 @@ class ProductTemplate(models.Model): # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ - nb_accesories = fields.Float("Nombre d'accéssoires") + nb_accesories = fields.Float(f"Nombre d'accessoires") accessory_label = fields.Char( related="categ_id.accessory_label", readonly=True ) diff --git a/models/sale_intervention.py b/models/sale_intervention.py index aec1d02ee1aa9cb89d3fb482da2e82a92f8156be..ecafe2fc21b4f8539ca502bcaa23c396ea9a84f1 100644 --- a/models/sale_intervention.py +++ b/models/sale_intervention.py @@ -138,6 +138,11 @@ class SaleIntervention(models.Model): readonly=True, states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) + mulch_staples_qty = fields.Integer( + "Nombre d'agrafes par dalle", + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, + ) mulch2_id = fields.Many2one( comodel_name="product.template", @@ -165,6 +170,11 @@ class SaleIntervention(models.Model): readonly=True, states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) + mulch2_staples_qty = fields.Integer( + "Nombre d'agrafes par dalle", + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, + ) # High protection high_protection_id = fields.Many2one( @@ -493,6 +503,13 @@ class SaleIntervention(models.Model): plant.qty for plant in rec.plant_list_ids if plant.is_local ) + if rec.mulch_has_staples: + if rec.mulch_id.nb_accesories: + mulch_staples_qty = rec.mulch_id.nb_accesories + rec.mulch_staples_qty = mulch_staples_qty + else: + rec.mulch_staples_qty = 2 + rec.plants_qty = plants_qty rec.plant_qty_per_seq = plant_qty_per_seq rec.full_seq_qty = full_seq_qty @@ -503,6 +520,23 @@ class SaleIntervention(models.Model): # ------------------------------------------------------ # Onchange / Constraints # ------------------------------------------------------ + + @api.onchange("mulch_has_staples") + def _onchange_mulch_has_staples(self): + if self.mulch_has_staples: + if self.mulch_id.nb_accesories: + self.mulch_staples_qty = self.mulch_id.nb_accesories + else: + self.mulch_staples_qty = 2 + + @api.onchange("mulch2_has_staples") + def _onchange_mulch2_has_staples(self): + if self.mulch2_has_staples: + if self.mulch2_id.nb_accesories: + self.mulch2_staples_qty = self.mulch2_id.nb_accesories + else: + self.mulch2_staples_qty = 2 + @api.onchange("intervention_length", "plant_interval") def _onchange_length(self): if self.intervention_uom_name == "m" and self.plant_interval > 0: @@ -708,13 +742,14 @@ class SaleIntervention(models.Model): partners.append(partner) # Staples - if rec.mulch_has_staples or rec.mulch2_has_staples: + if rec.mulch_has_staples: products.append(staples_product_id) - if rec.mulch_id.nb_accesories: - staples_multipier = rec.mulch_id.nb_accesories - else: - staples_multipier = 2 - quantities.append(rec.mulch_qty * staples_multipier or 0) + quantities.append(rec.mulch_qty * rec.mulch_staples_qty or 0) + partners.append(partner) + + if rec.mulch2_has_staples: + products.append(staples_product_id) + quantities.append(rec.mulch2_qty * rec.mulch2_staples_qty or 0) partners.append(partner) # High Protections @@ -869,20 +904,15 @@ class SaleIntervention(models.Model): } ) if self.mulch_has_staples: - if self.mulch_id.nb_accesories: - staples_multipier = self.mulch_id.nb_accesories - else: - staples_multipier = 2 data.append( { "sale_intervention_id": self.id, "product_id": staples_product_id.product_variant_id.id, - "product_uom_qty": self.mulch_qty * staples_multipier, + "product_uom_qty": self.mulch_qty * self.mulch_staples_qty, "price_unit": self.staple1_price, } ) if self.mulch2_id and self.mulch2_qty > 0: - data.append( { "sale_intervention_id": self.id, @@ -892,15 +922,12 @@ class SaleIntervention(models.Model): } ) if self.mulch2_has_staples: - if self.mulch2_id.nb_accesories: - staples_2_multipier = self.mulch2_id.nb_accesories - else: - staples_2_multipier = 2 data.append( { "sale_intervention_id": self.id, "product_id": staples_product_id.product_variant_id.id, - "product_uom_qty": self.mulch2_qty * staples_2_multipier, + "product_uom_qty": self.mulch2_qty + * self.mulch2_staples_qty, "price_unit": self.staple2_price, } ) diff --git a/views/sale_intervention_view.xml b/views/sale_intervention_view.xml index bc1957e9c1877daabe17987487087809af07b470..d844bccff5d29bc53402ef518032f626f44a342e 100644 --- a/views/sale_intervention_view.xml +++ b/views/sale_intervention_view.xml @@ -124,6 +124,10 @@ string="Avec agrafes" attrs="{'invisible': [('mulch_id', '=', False)]}" /> + <field + name="mulch_staples_qty" + attrs="{'invisible': [('mulch_has_staples', '=', False)]}" + /> </group> <group name="mulch2" @@ -147,6 +151,10 @@ string="Avec agrafes" attrs="{'invisible': [('mulch2_id', '=', False)]}" /> + <field + name="mulch2_staples_qty" + attrs="{'invisible': [('mulch2_has_staples', '=', False)]}" + /> </group> </group> <group name="high_protection">