feat: regenerate cycles when membership fee type changes (same interval)
Some checks failed
continuous-integration/drone/push Build is failing

- Implemented regenerate_cycles_on_type_change helper in Member resource
- Cycles that haven't ended yet (cycle_end >= today) are deleted and regenerated
- Paid and suspended cycles remain unchanged (not deleted)
- CycleGenerator reloads member with new membership_fee_type_id
- Adjusted tests to work with current cycles only (no future cycles)
- All integration tests passing

Phase 4 completed: Cycle regeneration on type change
This commit is contained in:
Moritz 2025-12-15 11:00:08 +01:00
parent 7994303166
commit 06324d77c5
Signed by: moritz
GPG key ID: 1020A035E5DD0824
6 changed files with 550 additions and 17 deletions

View file

@ -70,6 +70,7 @@ defmodule Mv.MembershipFees.Changes.ValidateSameIntervalTest do
refute changeset.valid?
assert %{errors: errors} = changeset
assert Enum.any?(errors, fn error ->
error.field == :membership_fee_type_id and
error.message =~ "yearly" and
@ -79,7 +80,8 @@ defmodule Mv.MembershipFees.Changes.ValidateSameIntervalTest do
test "allows first assignment of membership fee type" do
yearly_type = create_fee_type(%{interval: :yearly})
member = create_member(%{}) # No fee type assigned
# No fee type assigned
member = create_member(%{})
changeset =
member