[IMP] survey_record_generation : fill up user_input.partner_id when creating a res.partner
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m34s

This commit is contained in:
2026-01-13 12:32:07 +01:00
parent af07cad3f6
commit e1c2be8939
2 changed files with 66 additions and 1 deletions

View File

@@ -82,6 +82,8 @@ class SurveyUserInput(models.Model):
try: try:
with self.env.cr.savepoint(): with self.env.cr.savepoint():
record = self.env[model].create(vals) record = self.env[model].create(vals)
if model == "res.partner" and not self.partner_id:
self.partner_id = record.id
except Exception: except Exception:
# This a broad exception because it could be IntegrityError, # This a broad exception because it could be IntegrityError,
# EmptyNamesError in case partner_firstname is installed etc... # EmptyNamesError in case partner_firstname is installed etc...

View File

@@ -375,7 +375,7 @@ class TestSurveyRecordCreation(SurveyCase):
self.second_contact_creation = self.env["survey.record.creation"].create( self.second_contact_creation = self.env["survey.record.creation"].create(
{ {
"name": "Second contact", "name": "Contact 2",
"survey_id": self.survey.id, "survey_id": self.survey.id,
"model_id": self.res_partner_model.id, "model_id": self.res_partner_model.id,
} }
@@ -828,3 +828,66 @@ class TestSurveyRecordCreation(SurveyCase):
# No partner has been created, and no IntegrityError has been raised # No partner has been created, and no IntegrityError has been raised
partner = self.env["res.partner"].search([("name", "=", "Jean")]) partner = self.env["res.partner"].search([("name", "=", "Jean")])
self.assertEqual(len(partner), 0) self.assertEqual(len(partner), 0)
def test_fill_up_partner_id_in_survey_input(self):
# In this test, we check that the field partner_id is filled up
# when we create a res.partner
self.answer = self._add_answer(
survey=self.survey, partner=False, email="jean@test.fr"
)
self._add_answer_line(
question=self.question_name, answer=self.answer, answer_value="Jean"
)
self.answer._mark_done()
partner = self.env["res.partner"].search([("name", "=", "Jean")])
self.assertEqual(self.answer.partner_id, partner)
def test_partner_id_in_survey_input_is_filled_up_by_first_contact_record_creation(self):
# In this test, we verify that when creating several contacts with the same survey,
# the 1st created contact is used to fill up survey_input.partner_id
self.second_question_name = self._add_question(
page=None,
name="Name of second person",
qtype="char_box",
survey_id=self.survey.id,
sequence=1,
)
self.second_contact_creation = self.env["survey.record.creation"].create(
{
"name": "Contact 2",
"survey_id": self.survey.id,
"model_id": self.res_partner_model.id,
}
)
self.env["survey.record.creation.field.values"].create(
{
"survey_record_creation_id": self.second_contact_creation.id,
"survey_id": self.survey.id,
"model_id": self.res_partner_model.id,
"field_id": self.name_field.id,
"value_origin": "question",
"question_id": self.second_question_name.id,
}
)
self.answer = self._add_answer(
survey=self.survey, partner=False, email="jean@test.fr"
)
self._add_answer_line(
question=self.question_name,
answer=self.answer,
answer_value="Jean",
)
self._add_answer_line(
question=self.second_question_name,
answer=self.answer,
answer_value="Jeanne",
)
self.answer._mark_done()
partner = self.env["res.partner"].search([("name", "=", "Jean")])
self.assertEqual(self.answer.partner_id, partner)