diff --git a/bemade_fsm/models/sale_order.py b/bemade_fsm/models/sale_order.py index 164fee6..f01be99 100644 --- a/bemade_fsm/models/sale_order.py +++ b/bemade_fsm/models/sale_order.py @@ -6,7 +6,10 @@ class SaleOrder(models.Model): equipment_id = fields.Many2one(comodel_name="bemade_fsm.equipment", string="Equipment to Service", - tracking=True) + tracking=True, + compute="_compute_equipment", + inverse="_inverse_equipment", + store=True) site_contacts = fields.Many2many(comodel_name='res.partner', relation="sale_order_site_contacts_rel", @@ -22,7 +25,13 @@ class SaleOrder(models.Model): string='Work Order Recipients', store=True) - @api.depends('partner_id') + @api.onchange('partner_shipping_id') + def _onchange_partner_shipping_id(self): + super()._onchange_partner_shipping_id() + self._compute_equipment() + self._compute_default_contacts() + + @api.depends('partner_shipping_id') def _compute_default_contacts(self): for rec in self: rec.site_contacts = rec.partner_shipping_id.site_contacts @@ -31,10 +40,10 @@ class SaleOrder(models.Model): def _inverse_default_contacts(self): pass - @api.depends('partner_id') + @api.depends('partner_shipping_id') def _compute_equipment(self): for rec in self: - rec.equipment_ids = self.partner_shipping_id.equipment_ids if len( + rec.equipment_id = self.partner_shipping_id.equipment_ids if len( self.partner_shipping_id.equipment_ids) <= 1 else False def _inverse_equipment(self): diff --git a/bemade_fsm/tests/test_sale_order.py b/bemade_fsm/tests/test_sale_order.py index 3565ef0..cb28715 100644 --- a/bemade_fsm/tests/test_sale_order.py +++ b/bemade_fsm/tests/test_sale_order.py @@ -110,7 +110,8 @@ class TestSalesOrder(TestTaskTemplateCommon): # Marking a child task done should not create a sale order child_task.action_fsm_validate() self.assertFalse(child_task.sale_order_id) - +# TODO: Add a test for updating equipment, site contacts and work order contacts on the +# sale order when modifying the partner_shipping_id field on the SO. @tagged("-at_install", "post_install", 'focus') class TestSaleOrderTour(HttpCase, TestSalesOrder):