bemade_fsm: Added logic to use the planned hours from task templates on sale order lines (for planning purposes). Re #11.
This commit is contained in:
parent
37aea5c181
commit
a2d9f37ef2
3 changed files with 36 additions and 2 deletions
|
|
@ -32,6 +32,7 @@
|
|||
'sale',
|
||||
'sale_project',
|
||||
'sale_stock',
|
||||
'sale_planning',
|
||||
'industry_fsm_stock',
|
||||
'industry_fsm_report',
|
||||
'bemade_partner_root_ancestor',
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ class SaleOrder(models.Model):
|
|||
def _inverse_default_contacts(self):
|
||||
pass
|
||||
|
||||
@api.depends('partner_id', 'partner_shipping_id', 'partner_shipping_id.equipment_ids', 'partner_id.owned_equipment_ids')
|
||||
@api.depends('partner_id', 'partner_shipping_id', 'partner_shipping_id.equipment_ids',
|
||||
'partner_id.owned_equipment_ids')
|
||||
def _compute_default_equipment(self):
|
||||
for rec in self:
|
||||
if rec.partner_shipping_id.equipment_ids:
|
||||
|
|
@ -89,7 +90,6 @@ class SaleOrderLine(models.Model):
|
|||
column1="sale_order_line_id",
|
||||
column2="equipment_id")
|
||||
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals):
|
||||
recs = super().create(vals)
|
||||
|
|
@ -238,3 +238,15 @@ class SaleOrderLine(models.Model):
|
|||
if not val:
|
||||
return val
|
||||
return True
|
||||
|
||||
@api.depends('product_uom', 'product_uom_qty', 'product_id.planning_enabled', 'state',
|
||||
'product_id.task_template_id')
|
||||
def _compute_planning_hours_to_plan(self):
|
||||
# Override the method from sale_planning to use time estimates from the task template if appropriate
|
||||
super()._compute_planning_hours_to_plan()
|
||||
templated_lines = self.filtered(
|
||||
lambda l: l.product_id.task_template_id and l.product_id.task_template_id.planned_hours)
|
||||
for line in templated_lines:
|
||||
line.planning_hours_to_plan = line.product_id.task_template_id.planned_hours
|
||||
if line.product_uom_category_id == self.env.ref('uom.product_uom_unit').category_id:
|
||||
line.planning_hours_to_plan *= line.product_uom_qty
|
||||
|
|
|
|||
|
|
@ -42,6 +42,27 @@ class TestTaskTemplate(BemadeFSMBaseTest):
|
|||
|
||||
self.assertFalse(equipment1 in task.equipment_ids)
|
||||
|
||||
def test_hours_estimate_used_for_planning(self):
|
||||
partner = self._generate_partner()
|
||||
so = self._generate_sale_order(partner=partner)
|
||||
task_template = self._generate_task_template(planned_hours=8)
|
||||
product = self._generate_product(uom=self.env.ref('uom.product_uom_unit'), task_template=task_template)
|
||||
|
||||
sol = self._generate_sale_order_line(sale_order=so, product=product)
|
||||
|
||||
self.assertEqual(sol.planning_hours_to_plan, 8)
|
||||
|
||||
def test_hours_estimate_multiplied_for_multiple_units_sold(self):
|
||||
partner = self._generate_partner()
|
||||
so = self._generate_sale_order(partner=partner)
|
||||
task_template = self._generate_task_template(planned_hours=8)
|
||||
product = self._generate_product(uom=self.env.ref('uom.product_uom_unit'), task_template=task_template)
|
||||
|
||||
sol = self._generate_sale_order_line(sale_order=so, product=product, qty=3.0)
|
||||
|
||||
self.assertEqual(sol.planning_hours_to_plan, 24)
|
||||
|
||||
|
||||
|
||||
@tagged('-at_install', 'post_install', 'slow')
|
||||
class TestTaskTemplateTour(HttpCase, BemadeFSMBaseTest):
|
||||
|
|
|
|||
Loading…
Reference in a new issue