diff --git a/fieldservice_crm/README.rst b/fieldservice_crm/README.rst index a55473a68a..c0772ea5c6 100644 --- a/fieldservice_crm/README.rst +++ b/fieldservice_crm/README.rst @@ -57,8 +57,9 @@ Usage - User must have Field Service User permissions - Go to CRM app - Create a new Opportunity -- Click the FS Orders Smart Button -- Create a Field Service Order +- Click the **Create FSM Order** button in the header to open a + pre-filled order form, or click the **FS Orders** smart button to + manage existing orders Known issues / Roadmap ====================== diff --git a/fieldservice_crm/models/crm_lead.py b/fieldservice_crm/models/crm_lead.py index 181dcb0c37..3a51a8e3f6 100644 --- a/fieldservice_crm/models/crm_lead.py +++ b/fieldservice_crm/models/crm_lead.py @@ -18,3 +18,18 @@ class Lead(models.Model): def _compute_fsm_order_count(self): for rec in self: rec.fsm_order_count = len(rec.fsm_order_ids) + + def action_create_fsm_order(self): + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id( + "fieldservice.action_fsm_operation_order" + ) + action["context"] = { + "default_opportunity_id": self.id, + "default_location_id": self.fsm_location_id.id, + "default_description": self.description, + "default_priority": self.priority, + } + view = self.env.ref("fieldservice.fsm_order_form", raise_if_not_found=False) + action["views"] = [(view and view.id or False, "form")] + return action diff --git a/fieldservice_crm/readme/USAGE.md b/fieldservice_crm/readme/USAGE.md index ce337dd0c5..4945f42d29 100644 --- a/fieldservice_crm/readme/USAGE.md +++ b/fieldservice_crm/readme/USAGE.md @@ -1,5 +1,5 @@ - User must have Field Service User permissions - Go to CRM app - Create a new Opportunity -- Click the FS Orders Smart Button -- Create a Field Service Order +- Click the **Create FSM Order** button in the header to open a pre-filled order form, + or click the **FS Orders** smart button to manage existing orders diff --git a/fieldservice_crm/static/description/index.html b/fieldservice_crm/static/description/index.html index ffc81fdee9..489592e027 100644 --- a/fieldservice_crm/static/description/index.html +++ b/fieldservice_crm/static/description/index.html @@ -407,8 +407,9 @@

Usage

  • User must have Field Service User permissions
  • Go to CRM app
  • Create a new Opportunity
  • -
  • Click the FS Orders Smart Button
  • -
  • Create a Field Service Order
  • +
  • Click the Create FSM Order button in the header to open a +pre-filled order form, or click the FS Orders smart button to +manage existing orders
  • diff --git a/fieldservice_crm/tests/test_fsm_crm.py b/fieldservice_crm/tests/test_fsm_crm.py index 9d76869fc2..54a77f936f 100644 --- a/fieldservice_crm/tests/test_fsm_crm.py +++ b/fieldservice_crm/tests/test_fsm_crm.py @@ -28,3 +28,26 @@ def test_fieldservicecrm(self): location_1._compute_opportunity_count() self.assertEqual(location_1.opportunity_count, 1) + + def test_action_create_fsm_order(self): + location = self.env["fsm.location"].create( + { + "name": "Test Location", + "owner_id": self.env["res.partner"].create({"name": "Test Owner"}).id, + } + ) + lead = self.env["crm.lead"].create( + { + "name": "Test Opportunity", + "type": "opportunity", + "fsm_location_id": location.id, + "description": "

    Test description

    ", + "priority": "1", + } + ) + action = lead.action_create_fsm_order() + ctx = action.get("context", {}) + self.assertEqual(ctx.get("default_opportunity_id"), lead.id) + self.assertEqual(ctx.get("default_location_id"), location.id) + self.assertEqual(ctx.get("default_description"), "

    Test description

    ") + self.assertEqual(ctx.get("default_priority"), "1") diff --git a/fieldservice_crm/views/crm_lead.xml b/fieldservice_crm/views/crm_lead.xml index 935ef8c135..5a7919a14a 100644 --- a/fieldservice_crm/views/crm_lead.xml +++ b/fieldservice_crm/views/crm_lead.xml @@ -5,8 +5,18 @@ fieldservice.crm.form crm.lead - + + +