Seeds: robust default fee type lookup; no fee type overwrite on re-run
Bootstrap: filter default fee type by name and interval (yearly). Dev: do not send membership_fee_type_id in member upsert; set only via update when nil so re-runs do not overwrite existing assignments.
This commit is contained in:
parent
a98d921848
commit
ea350ab315
2 changed files with 5 additions and 7 deletions
|
|
@ -55,9 +55,10 @@ for attrs <- fee_type_configs do
|
||||||
end
|
end
|
||||||
|
|
||||||
# Resolve default fee type (Standard, 120€ yearly) for settings
|
# Resolve default fee type (Standard, 120€ yearly) for settings
|
||||||
|
# Filter by name and interval to avoid ambiguity if multiple "Standard" types exist
|
||||||
default_fee_type =
|
default_fee_type =
|
||||||
Mv.MembershipFees.MembershipFeeType
|
Mv.MembershipFees.MembershipFeeType
|
||||||
|> Ash.Query.filter(name == "Standard")
|
|> Ash.Query.filter(name == "Standard" and interval == :yearly)
|
||||||
|> Ash.read_one!(authorize?: false, domain: Mv.MembershipFees)
|
|> Ash.read_one!(authorize?: false, domain: Mv.MembershipFees)
|
||||||
|
|
||||||
# 2. Custom fields (authorize?: false for bootstrap)
|
# 2. Custom fields (authorize?: false for bootstrap)
|
||||||
|
|
|
||||||
|
|
@ -250,6 +250,8 @@ Enum.with_index(member_configs)
|
||||||
fee_type_id = if fee_type_index, do: Enum.at(all_fee_types, fee_type_index).id, else: nil
|
fee_type_id = if fee_type_index, do: Enum.at(all_fee_types, fee_type_index).id, else: nil
|
||||||
cycle_status = Enum.at(cycle_statuses, index)
|
cycle_status = Enum.at(cycle_statuses, index)
|
||||||
|
|
||||||
|
# Do not include membership_fee_type_id in upsert so re-runs do not overwrite
|
||||||
|
# existing assignments; set via update below only when member has none
|
||||||
base_attrs = %{
|
base_attrs = %{
|
||||||
first_name: config.first_name,
|
first_name: config.first_name,
|
||||||
last_name: config.last_name,
|
last_name: config.last_name,
|
||||||
|
|
@ -262,13 +264,8 @@ Enum.with_index(member_configs)
|
||||||
country: Enum.at(countries_list, index)
|
country: Enum.at(countries_list, index)
|
||||||
}
|
}
|
||||||
|
|
||||||
member_attrs =
|
|
||||||
if fee_type_id,
|
|
||||||
do: Map.put(base_attrs, :membership_fee_type_id, fee_type_id),
|
|
||||||
else: base_attrs
|
|
||||||
|
|
||||||
member =
|
member =
|
||||||
Membership.create_member!(member_attrs,
|
Membership.create_member!(base_attrs,
|
||||||
upsert?: true,
|
upsert?: true,
|
||||||
upsert_identity: :unique_email,
|
upsert_identity: :unique_email,
|
||||||
actor: admin_user_with_role
|
actor: admin_user_with_role
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue