diff --git a/models/sale_intervention.py b/models/sale_intervention.py index 83438b00884f9ee2ed5b8ffbf67be748fb26d18a..f67e1d661ff7558b4b398691533cb5abb9178c34 100644 --- a/models/sale_intervention.py +++ b/models/sale_intervention.py @@ -133,6 +133,7 @@ class SaleIntervention(models.Model): readonly=True, states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) + mulch2_id = fields.Many2one( comodel_name="product.template", string="Paillage 2", @@ -143,7 +144,6 @@ class SaleIntervention(models.Model): readonly=True, states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) - mulch2_qty = fields.Float( string="Qté paillage 2", readonly=True, @@ -294,7 +294,7 @@ class SaleIntervention(models.Model): ) plants_qty = fields.Integer( - "Nombre total de plants", + "Nombre total de plants (calculé)", compute="_compute_quantities", default=0, group_operator="sum", @@ -498,6 +498,7 @@ class SaleIntervention(models.Model): # ------------------------------------------------------ @api.onchange("plant_qty", "intervention_length", "mulch_id") def _onchange_mulch_id(self): + self.mulch_has_staples = False if self.mulch_unit == self.env.ref("uom.product_uom_meter"): self.mulch_qty = self.intervention_length elif self.mulch_unit == self.env.ref("uom.product_uom_unit"): @@ -507,6 +508,7 @@ class SaleIntervention(models.Model): @api.onchange("plant_qty", "intervention_length", "mulch2_id") def _onchange_mulch2_id(self): + self.mulch2_has_staples = False if self.mulch2_unit == self.env.ref("uom.product_uom_meter"): self.mulch2_qty = self.intervention_length elif self.mulch2_unit == self.env.ref("uom.product_uom_unit"): @@ -514,26 +516,20 @@ class SaleIntervention(models.Model): else: self.mulch2_qty = 0.0 - @api.onchange("plant_qty") + @api.onchange("plant_qty", "intervention_length", "plant_interval") def _onchange_plant_qty(self): - self.collarette_qty = self.plant_qty - - @api.onchange("high_protection_id") - def _onchange_high_protection_id(self): - if not self.high_protection_id: - self.high_protection_qty = 0.0 - - @api.onchange("high_protection_qty", "stake_id") - def _onchange_high_protection_qty(self): - if self.stake_id: - self.stake_qty = self.high_protection_qty + if self.intervention_uom_name == "m" and self.plant_interval > 0: + self.collarette_qty = ( + math.ceil(self.intervention_length / self.plant_interval) + 1 + ) + elif self.intervention_uom_name == "Unité": + self.collarette_qty = self.plant_qty else: - self.stake_qty = 0.0 + self.collarette_qty = 0 - @api.onchange("low_protection_id") - def _onchange_low_protection_id(self): - if not self.low_protection_id: - self.low_protection_qty = 0.0 + @api.onchange("high_protection_qty") + def _onchange_high_protection_qty(self): + self.stake_qty = self.high_protection_qty @api.onchange("low_protection_qty") def _onchange_low_protection_qty(self): @@ -930,7 +926,6 @@ class SaleIntervention(models.Model): return res def write(self, values): - # TODO: find a better way to update stock lines ? res = super().write(values) if self.sale_intervention_stock_ids: self.sale_intervention_stock_ids.unlink() diff --git a/views/sale_intervention_view.xml b/views/sale_intervention_view.xml index 036a7a8bd26ddd267d3ecbbf4986528db242679f..b13deb6d4fcf92cc544aace4819487eb6605d919 100644 --- a/views/sale_intervention_view.xml +++ b/views/sale_intervention_view.xml @@ -237,7 +237,10 @@ readonly="True" > <group> - <field name="plants_qty" /> + <field + name="plants_qty" + string="Nombre total de plants" + /> <field name="plants_type_qty" /> <field name="plants_local_qty" /> </group> diff --git a/views/sale_project_view.xml b/views/sale_project_view.xml index 324fac948507b9ac84671e936cefc64b661a5ce4..22bd41b016dd76fe4fc3e08084932ddeec97ce47 100644 --- a/views/sale_project_view.xml +++ b/views/sale_project_view.xml @@ -66,7 +66,6 @@ style="pointer-events: none;" context="{'search_default_group_by_intervention_type': True}" > - <!-- TODO : group by intervention_type_id --> <tree default_order="intervention_type_id,name"> <field name="name" optional="show" /> <field name="state" invisible="1" />