feat: regenerate cycles when membership fee type changes (same interval)
Some checks failed
continuous-integration/drone/push Build is failing
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:
parent
7994303166
commit
06324d77c5
6 changed files with 550 additions and 17 deletions
|
|
@ -83,8 +83,7 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
|
|||
defp get_intervals(current_type_id, new_type_id) do
|
||||
alias Mv.MembershipFees.MembershipFeeType
|
||||
|
||||
case {Ash.get(MembershipFeeType, current_type_id),
|
||||
Ash.get(MembershipFeeType, new_type_id)} do
|
||||
case {Ash.get(MembershipFeeType, current_type_id), Ash.get(MembershipFeeType, new_type_id)} do
|
||||
{{:ok, current_type}, {:ok, new_type}} ->
|
||||
{:ok, current_type.interval, new_type.interval}
|
||||
|
||||
|
|
@ -116,4 +115,3 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
|
|||
defp format_interval(:yearly), do: "yearly"
|
||||
defp format_interval(interval), do: to_string(interval)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ defmodule Mv.MembershipFees.MembershipFeeCycle do
|
|||
description "Mark cycle as paid"
|
||||
require_atomic? false
|
||||
accept [:notes]
|
||||
|
||||
change fn changeset, _context ->
|
||||
Ash.Changeset.force_change_attribute(changeset, :status, :paid)
|
||||
end
|
||||
|
|
@ -65,6 +66,7 @@ defmodule Mv.MembershipFees.MembershipFeeCycle do
|
|||
description "Mark cycle as suspended"
|
||||
require_atomic? false
|
||||
accept [:notes]
|
||||
|
||||
change fn changeset, _context ->
|
||||
Ash.Changeset.force_change_attribute(changeset, :status, :suspended)
|
||||
end
|
||||
|
|
@ -74,6 +76,7 @@ defmodule Mv.MembershipFees.MembershipFeeCycle do
|
|||
description "Mark cycle as unpaid (for error correction)"
|
||||
require_atomic? false
|
||||
accept [:notes]
|
||||
|
||||
change fn changeset, _context ->
|
||||
Ash.Changeset.force_change_attribute(changeset, :status, :unpaid)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue