– id: threshold_first_met
defaults:
or:
short_circuit: true
rule:
when:
pattern: &post-qual-banking-balance-when-pattern
type: r42.v1.banking.balance
data:
effective_timestamp: ?effective_timestamp
eligibility_enrichment:
– benefit_type: WELCOME_BONUS
feature_id: ?feature_id
product_id: ?product_id
qualified_transaction_bucket_id: ?bucket_id
disqualified: ?disqualified
tag_id: ?eligibility_tag_id
ledger_request:
– outcome: ?lr_outcome
request:
feature_id: ?feature_id
product_id: ?product_id
book_type: accrual
product_details: ?product_details
condition:
and:
– description: Eligibility enrichment shouldn’t be “DISQUALIFIED”
match: ?disqualified
pattern: false
– &get_qualification_criteria
description: Get qualification_threshold off balance_threshold feature
match: ?product_details
pattern:
– id: ?product_id
features:
– id: ?feature_id
data:
qualification_criteria:
qualification_threshold: ?qualification_threshold
qualification_threshold_unit: ?unit_of_value
– &bind_lr_outcome_bindings
description: Get the balance of the ledger_request
match: ?lr_outcome
pattern:
balance: ?outcome_balance
entry_id: ?qualified_entry_id
– description: Get book_status
or:
– match: ?lr_outcome
pattern:
status: ?book_status
– match: “”
pattern: ?book_status
– description: We only want to make the `QUALIFIED` entry if the threshold is met and the book doesn’t already have a status
code: “return ((book_status === ”) || (book_status === null)) && parseFloat(outcome_balance) >= parseFloat(qualification_threshold)”
action:
ledger_request:
legacy_owner_keys: true #TODO: Remove this once downstreams support v2 ledger request schema
book_type: accrual
product_id: ?product_id
feature_id: ?feature_id
bucket_id: ?bucket_id
unit_of_value: ?unit_of_value
set_status: “QUALIFIED”
passthrough:
rule: ?full_rule_id
eligibility_tag_id: eligibility_tag_id
add_entry:
amount: “0”
metadata:
effective_timestamp: ?effective_timestamp
goal_first_met: true
qualified_entry_id: ?qualified_entry_id
– id: threshold_first_disqualified
defaults:
or:
short_circuit: true
rule:
when:
pattern: *post-qual-banking-balance-when-pattern
condition:
and:
– description: “Only QUALIFICATION_MET_DATE has disqualified: true”
match: ?disqualified
pattern: true
– *get_qualification_criteria
– *bind_lr_outcome_bindings
action:
ledger_request:
legacy_owner_keys: true #TODO: Remove this once downstreams support v2 ledger request schema
book_type: accrual
product_id: ?product_id
feature_id: ?feature_id
bucket_id: ?bucket_id
unit_of_value: ?unit_of_value
set_status: “DISQUALIFIED”
passthrough:
rule: ?full_rule_id
eligibility_tag_id: ?eligibility_tag_id
add_entry:
amount: “0”
metadata:
effective_timestamp: ?effective_timestamp
qualified_entry_id: ?qualified_entry_id