adjust condition fields
This commit is contained in:
@@ -154,7 +154,7 @@ export default {
|
||||
computed: {
|
||||
fields () {
|
||||
return this.template.fields.reduce((acc, f) => {
|
||||
if (f !== this.field && f.submitter_uuid === this.field.submitter_uuid && ['number'].includes(f.type) && !f.preferences?.formula) {
|
||||
if (f !== this.field && ['number'].includes(f.type) && (!f.preferences?.formula || f.submitter_uuid !== this.field.submitter_uuid)) {
|
||||
acc.push(f)
|
||||
}
|
||||
|
||||
|
||||
@@ -90,6 +90,10 @@ class Submission < ApplicationRecord
|
||||
expire_at && expire_at <= Time.current
|
||||
end
|
||||
|
||||
def fields_uuid_index
|
||||
@fields_uuid_index ||= (template_fields || template.fields).index_by { |f| f['uuid'] }
|
||||
end
|
||||
|
||||
def audit_trail_url
|
||||
return if audit_trail.blank?
|
||||
|
||||
|
||||
+6
-11
@@ -134,16 +134,11 @@ module Submissions
|
||||
end
|
||||
|
||||
def filtered_conditions_schema(submission, values: nil, include_submitter_uuid: nil)
|
||||
fields_uuid_index = nil
|
||||
|
||||
(submission.template_schema || submission.template.schema).filter_map do |item|
|
||||
if item['conditions'].present?
|
||||
fields_uuid_index ||=
|
||||
(submission.template_fields || submission.template.fields).index_by { |f| f['uuid'] }
|
||||
|
||||
values ||= submission.submitters.reduce({}) { |acc, sub| acc.merge(sub.values) }
|
||||
|
||||
next unless check_item_conditions(item, values, fields_uuid_index, include_submitter_uuid:)
|
||||
next unless check_item_conditions(item, values, submission.fields_uuid_index, include_submitter_uuid:)
|
||||
end
|
||||
|
||||
item
|
||||
@@ -151,21 +146,21 @@ module Submissions
|
||||
end
|
||||
|
||||
def filtered_conditions_fields(submitter, only_submitter_fields: true)
|
||||
fields = submitter.submission.template_fields || submitter.submission.template.fields
|
||||
submission = submitter.submission
|
||||
|
||||
fields = submission.template_fields || submission.template.fields
|
||||
|
||||
fields_uuid_index = nil
|
||||
values = nil
|
||||
|
||||
fields.filter_map do |field|
|
||||
next if field['submitter_uuid'] != submitter.uuid && only_submitter_fields
|
||||
|
||||
if field['conditions'].present?
|
||||
fields_uuid_index ||= fields.index_by { |f| f['uuid'] }
|
||||
values ||= submitter.submission.submitters.reduce({}) { |acc, sub| acc.merge(sub.values) }
|
||||
values ||= submission.submitters.reduce({}) { |acc, sub| acc.merge(sub.values) }
|
||||
|
||||
submitter_conditions = []
|
||||
|
||||
next unless check_item_conditions(field, values, fields_uuid_index,
|
||||
next unless check_item_conditions(field, values, submission.fields_uuid_index,
|
||||
include_submitter_uuid: submitter.uuid,
|
||||
submitter_conditions_acc: submitter_conditions)
|
||||
|
||||
|
||||
@@ -171,6 +171,8 @@ module Submitters
|
||||
end
|
||||
|
||||
def build_formula_values(submitter)
|
||||
submission_values = nil
|
||||
|
||||
computed_values = submitter.submission.template_fields.each_with_object({}) do |field, acc|
|
||||
next if field['submitter_uuid'] != submitter.uuid
|
||||
next if field['type'] == 'payment'
|
||||
@@ -179,7 +181,14 @@ module Submitters
|
||||
|
||||
next if formula.blank?
|
||||
|
||||
acc[field['uuid']] = calculate_formula_value(formula, submitter.values.merge(acc.compact_blank))
|
||||
submission_values ||=
|
||||
if submitter.submission.template_submitters.size > 1
|
||||
merge_submitters_values(submitter)
|
||||
else
|
||||
submitter.values
|
||||
end
|
||||
|
||||
acc[field['uuid']] = calculate_formula_value(formula, submission_values.merge(acc.compact_blank))
|
||||
end
|
||||
|
||||
computed_values.compact_blank
|
||||
@@ -204,8 +213,6 @@ module Submitters
|
||||
def maybe_remove_condition_values(submitter, required_field_uuids_acc: nil)
|
||||
submission = submitter.submission
|
||||
|
||||
fields_uuid_index = submission.template_fields.index_by { |e| e['uuid'] }
|
||||
|
||||
submitters_values = nil
|
||||
has_other_submitters = submission.template_submitters.size > 1
|
||||
|
||||
@@ -228,11 +235,11 @@ module Submitters
|
||||
end
|
||||
|
||||
if has_other_submitters && !submitters_values &&
|
||||
field_conditions_other_submitter?(submitter, field, fields_uuid_index)
|
||||
field_conditions_other_submitter?(submitter, field, submission.fields_uuid_index)
|
||||
submitters_values = merge_submitters_values(submitter)
|
||||
end
|
||||
|
||||
unless check_field_conditions(submitters_values || submitter.values, field, fields_uuid_index)
|
||||
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'])
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user