adjust condition fields

pull/475/head
Pete Matsyburka 6 months ago
parent 1876b3efba
commit cbff242a5d

@ -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?

@ -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

Loading…
Cancel
Save