diff --git a/lib/submitters/submit_values.rb b/lib/submitters/submit_values.rb index 513bb711..16545480 100644 --- a/lib/submitters/submit_values.rb +++ b/lib/submitters/submit_values.rb @@ -286,7 +286,10 @@ module Submitters attachments_index = if has_document_conditions - Submissions.filtered_conditions_schema(submission).index_by { |i| i['attachment_uuid'] } + submitters_values = merge_submitters_values(submitter) + + Submissions.filtered_conditions_schema(submission, values: submitters_values) + .index_by { |i| i['attachment_uuid'] } end submission.template_fields.each do |field| @@ -295,8 +298,7 @@ module Submitters required_field_uuids_acc.add(field['uuid']) if required_field_uuids_acc && required_editable_field?(field) if has_document_conditions && !check_field_areas_attachments(field, attachments_index) - submitter.values.delete(field['uuid']) - required_field_uuids_acc&.delete(field['uuid']) + delete_field_value!(field, submitter, submitters_values, required_field_uuids_acc) end if has_other_submitters && !submitters_values && @@ -305,14 +307,19 @@ module Submitters end unless check_field_conditions(submitters_values || submitter.values, field, submission.fields_uuid_index) - submitter.values.delete(field['uuid']) - required_field_uuids_acc&.delete(field['uuid']) + delete_field_value!(field, submitter, submitters_values, required_field_uuids_acc) end end submitter.values end + def delete_field_value!(field, submitter, submitters_values = nil, required_field_uuids_acc = nil) + submitter.values.delete(field['uuid']) + submitters_values&.delete(field['uuid']) + required_field_uuids_acc&.delete(field['uuid']) + end + def submission_has_document_conditions?(submission) (submission.template_schema || submission.template.schema).any? { |e| e['conditions'].present? } end @@ -331,6 +338,7 @@ module Submitters def merge_submitters_values(submitter) submitter.submission.submitters + .reject { |sub| sub.uuid == submitter.uuid } .reduce({}) { |acc, sub| acc.merge(sub.values) } .merge(submitter.values) end