From 2daf2a33c0f51d8045f923d3d7b79a25d3fa9100 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 2 Aug 2023 16:49:14 +0200 Subject: [PATCH] [IMP] survey_sale_generation: multiple choice multiplier TT40983 --- survey_sale_generation/demo/survey_sale_demo.xml | 9 +++++---- survey_sale_generation/models/survey_question.py | 7 +++++++ survey_sale_generation/models/survey_user_input.py | 9 +++++++-- .../tests/test_survey_sale_generation.py | 2 +- survey_sale_generation/views/survey_question_views.xml | 9 +++++++++ 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/survey_sale_generation/demo/survey_sale_demo.xml b/survey_sale_generation/demo/survey_sale_demo.xml index f2f9efa3..3b4e6322 100644 --- a/survey_sale_generation/demo/survey_sale_demo.xml +++ b/survey_sale_generation/demo/survey_sale_demo.xml @@ -51,7 +51,7 @@ - 0 + 1 E-mail address text_box @@ -59,7 +59,7 @@ - 1 + 2 How many hours will you hire monthly? numerical_box @@ -67,10 +67,11 @@ - 2 + 3 Choose your subscription level simple_choice + @@ -92,7 +93,7 @@ - 2 + 5 Choose your extras multiple_choice diff --git a/survey_sale_generation/models/survey_question.py b/survey_sale_generation/models/survey_question.py index f0bf978b..72928995 100644 --- a/survey_sale_generation/models/survey_question.py +++ b/survey_sale_generation/models/survey_question.py @@ -7,6 +7,13 @@ class SurveyQuestion(models.Model): _inherit = "survey.question" product_id = fields.Many2one(comodel_name="product.product") + product_uom_qty_question_id = fields.Many2one( + comodel_name="survey.question", + help="For multiple answer questions we might want to consider how much of that " + "product we want to order. For example, one question could be: 'How many " + "members in your team?' and other could be 'Choose the membership type'. We'll " + "want to multiply members by memberships in our sale line.", + ) show_in_sale_order_comment = fields.Boolean() diff --git a/survey_sale_generation/models/survey_user_input.py b/survey_sale_generation/models/survey_user_input.py index 428ec041..737e3d5a 100644 --- a/survey_sale_generation/models/survey_user_input.py +++ b/survey_sale_generation/models/survey_user_input.py @@ -11,7 +11,7 @@ class SurveyUserInput(models.Model): def _prepare_quotation(self): return { - "partner_id": self.create_uid.partner_id.id, + "partner_id": self.partner_id.id or self.create_uid.partner_id.id, "origin": self.survey_id.title, "survey_user_input_id": self.id, "company_id": self.create_uid.company_id.id, @@ -24,7 +24,12 @@ def _prepare_quotation_line(self, input_line): qty = input_line.value_numerical_box else: product_id = input_line.suggested_answer_id.product_id - qty = 1 + # We can set a related question that will be the qty multiplier + qty_question = self.user_input_line_ids.filtered( + lambda x: x.question_id + == input_line.question_id.product_uom_qty_question_id + ).value_numerical_box + qty = qty_question is not False and qty_question or 1 return { "product_id": product_id.id, "product_uom_qty": qty, diff --git a/survey_sale_generation/tests/test_survey_sale_generation.py b/survey_sale_generation/tests/test_survey_sale_generation.py index aa6020df..c2e2760a 100644 --- a/survey_sale_generation/tests/test_survey_sale_generation.py +++ b/survey_sale_generation/tests/test_survey_sale_generation.py @@ -42,7 +42,7 @@ def test_sale_generation(self): """ expected_lines = { self.support_hours: 3, - self.gold_service: 1, + self.gold_service: 3, self.advanced_backup: 1, self.mail_management: 1, } diff --git a/survey_sale_generation/views/survey_question_views.xml b/survey_sale_generation/views/survey_question_views.xml index 7bbbac9d..3c412fcb 100644 --- a/survey_sale_generation/views/survey_question_views.xml +++ b/survey_sale_generation/views/survey_question_views.xml @@ -11,6 +11,15 @@ > + + +