[IMP] survey_record_generation : add a param in mark_down to ignore creation when res partner mandatory fields are missing

This commit is contained in:
2025-08-11 15:59:47 +02:00
committed by LaetitiaElabore
parent c4302da556
commit 963fc5b9c0

View File

@@ -13,7 +13,6 @@ class SurveyUserInput(models.Model):
for user_input in self: for user_input in self:
user_input.generated_records_count = len(user_input.generated_record_ids) user_input.generated_records_count = len(user_input.generated_record_ids)
def action_redirect_to_generated_records(self): def action_redirect_to_generated_records(self):
self.ensure_one() self.ensure_one()
@@ -32,7 +31,7 @@ class SurveyUserInput(models.Model):
return action return action
def _mark_done(self): def _mark_done(self, ignore_when_res_partner_mandatory_fields_are_missing = False):
# generate records # generate records
for user_input in self: for user_input in self:
created_records = {} created_records = {}
@@ -94,6 +93,11 @@ class SurveyUserInput(models.Model):
if duplicate: if duplicate:
record = duplicate record = duplicate
else: else:
if model == "res.partner" and ignore_when_res_partner_mandatory_fields_are_missing:
# this part has been developed for Calim specific needs : being able to create several Contacts with the same survey
# TODO : find a way to make it generic for all models ?
if not vals.get("lastname") and not vals.get("firstname"):
continue
# Create record # Create record
record = self.env[model].create(vals) record = self.env[model].create(vals)
# Link generated records to user input # Link generated records to user input
@@ -103,18 +107,14 @@ class SurveyUserInput(models.Model):
'user_input_id':user_input.id, 'user_input_id':user_input.id,
"created_record_id":"%s,%s" % (model,record.id) "created_record_id":"%s,%s" % (model,record.id)
}) })
created_records[record_creation.id] = record
created_records[record_creation.id] = record
# update linked records # update linked records
for field_to_update in fields_to_update: for field_to_update in fields_to_update:
record_to_update = created_records[field_to_update.survey_record_creation_id.id] record_to_update = created_records.get(field_to_update.survey_record_creation_id.id)
linked_record = created_records[field_to_update.other_created_record_id.id] if record_to_update:
record_to_update.write({field_to_update.field_id.name:linked_record.id}) linked_record = created_records[field_to_update.other_created_record_id.id]
record_to_update.write({field_to_update.field_id.name:linked_record.id})
return super()._mark_done() return super()._mark_done()