Forward-port '15.0' into 16.0
This commit is contained in:
commit
23d7d34e71
3 changed files with 45 additions and 61 deletions
|
|
@ -97,4 +97,8 @@ class SaleOrder(models.Model):
|
|||
def _inverse_default_equipment(self):
|
||||
pass
|
||||
|
||||
def copy(self, default=None):
|
||||
rec = super().copy(default)
|
||||
rec.visit_ids = [Command.set(rec.order_line.visit_ids.ids)]
|
||||
return rec
|
||||
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
from .test_sale_order import TestSalesOrder
|
||||
from odoo import Command
|
||||
from odoo.tests.common import Form
|
||||
|
||||
|
||||
class TestSaleOrderTaskContacts(TestSalesOrder):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
Partner = cls.env['res.partner']
|
||||
cls.partner2 = Partner.create({
|
||||
'name': 'New Partner',
|
||||
'company_type': 'company',
|
||||
})
|
||||
cls.contact = Partner.create({
|
||||
'name': 'Contact',
|
||||
'company_type': 'person',
|
||||
'parent_id': cls.partner2.id,
|
||||
})
|
||||
cls.contact2 = cls.env['res.partner'].create({
|
||||
'name': 'Contact 2',
|
||||
'company_type': 'person',
|
||||
'parent_id': cls.partner2.id,
|
||||
})
|
||||
|
||||
def _test_task_contacts_from_so(self, field):
|
||||
""" Shorthand function for testing both work_order_contacts and site_contacts fields on SOs and tasks."""
|
||||
def ga(obj):
|
||||
return getattr(obj, field)
|
||||
# Add the default site/work order contact to the partner, create an SO with the partner
|
||||
self.partner2.write({field: [Command.set([self.contact.id])]})
|
||||
self.sale_order1.write(
|
||||
{'partner_id': self.partner2.id, field: [Command.set(ga(self.partner2).ids)]})
|
||||
so = self.sale_order1
|
||||
self.assertTrue(ga(so))
|
||||
# Confirm the SO and check that the task got the default carried over
|
||||
so.action_confirm()
|
||||
task = so.order_line[0].task_id
|
||||
self.assertTrue(ga(task))
|
||||
self.assertTrue(ga(task) == ga(so))
|
||||
# Now change the site/work order contact on the task and make sure it feeds back to the sales order
|
||||
f = Form(task)
|
||||
ga(f).add(self.contact2)
|
||||
f.save()
|
||||
self.assertTrue(ga(so) == ga(task))
|
||||
# Test changing it on the SO feeds back to the task as well
|
||||
f = Form(so)
|
||||
ga(f).remove(self.contact.id)
|
||||
f.save()
|
||||
self.assertTrue(ga(so) == ga(task))
|
||||
|
||||
def test_work_order_contacts_on_task(self):
|
||||
# Make sure work order contacts on the sales order transfer to the task on order confirmation
|
||||
self._test_task_contacts_from_so('work_order_contacts')
|
||||
|
||||
def test_site_contacts_on_task(self):
|
||||
# Make sure site contacts from the sales order transfer to the task on order confirmation
|
||||
self._test_task_contacts_from_so('site_contacts')
|
||||
|
|
@ -50,9 +50,47 @@
|
|||
</record>
|
||||
<!-- Add parent_id = false to domain for My Tasks, All Tasks: To Schedule, All Tasks and To Invoice-->
|
||||
<record id="industry_fsm.project_task_action_fsm" model="ir.actions.act_window">
|
||||
<field name="domain">[('is_fsm', '=', True),
|
||||
('display_project_id', '!=', False),
|
||||
('parent_id', '=', False)]
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm.project_task_action_fsm_map"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm.project_task_action_to_schedule_fsm"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm.project_task_action_all_fsm"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm_sale.project_task_action_to_invoice_fsm"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm.project_task_action_fsm_planning_groupby_user"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm.project_task_action_fsm_planning_groupby_project"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="industry_fsm_report.project_task_action_fsm_planning_groupby_worksheet"
|
||||
model="ir.actions.act_window">
|
||||
<field name="context">{'search_default_is_parent_task': True}</field>
|
||||
</record>
|
||||
<record id="project_task_view_calendar_fsm_no_worksheet" model="ir.ui.view">
|
||||
<field name="name">bemade_fsm.project_task_view_calendar_no_worksheet</field>
|
||||
<field name="inherit_id"
|
||||
ref="industry_fsm_report.project_task_view_calendar_fsm_worksheet"/>
|
||||
<field name="model">project.task</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='worksheet_template_id']"
|
||||
position="replace"></xpath>
|
||||
<xpath expr="//calendar" position="attributes">
|
||||
<attribute name="color">user_ids</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="industry_fsm.project_task_action_fsm_map"
|
||||
|
|
|
|||
Loading…
Reference in a new issue