diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index fb5636c..c211172 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -1459,7 +1459,6 @@ msgstr "Die Änderung des Betrags betrifft %{count} Mitglied(er)." msgid "Confirm Change" msgstr "Änderung bestätigen" -#: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Current Cycle" @@ -1535,7 +1534,6 @@ msgstr "Das Intervall kann nach der Erstellung nicht geändert werden." msgid "Invalid amount format" msgstr "Ungültiges Betragsformat" -#: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Last Cycle" @@ -1682,16 +1680,6 @@ msgstr "Wählen Sie eine Mitgliedsbeitragsart für dieses Mitglied. Mitglieder k msgid "Select interval" msgstr "Intervall auswählen" -#: lib/mv_web/live/member_live/index.html.heex -#, elixir-autogen, elixir-format -msgid "Show current cycle" -msgstr "Aktuellen Zyklus anzeigen" - -#: lib/mv_web/live/member_live/index.html.heex -#, elixir-autogen, elixir-format -msgid "Show last completed cycle" -msgstr "Letzten abgeschlossenen Zyklus anzeigen" - #: lib/mv_web/live/member_live/index.html.heex #, elixir-autogen, elixir-format msgid "Switch to current cycle" @@ -1818,6 +1806,11 @@ msgstr "" msgid "You are about to delete all %{count} cycles for this member." msgstr "" +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Show Last/Current Cycle Payment Status" +msgstr "" + #~ #: lib/mv_web/live/components/payment_filter_component.ex #~ #, elixir-autogen, elixir-format #~ msgid "All payment statuses" @@ -1901,6 +1894,16 @@ msgstr "" #~ msgid "Quarterly Interval - Joining Period Excluded" #~ msgstr "Vierteljährliches Intervall – Beitrittszeitraum nicht einbezogen" +#~ #: lib/mv_web/live/member_live/index.html.heex +#~ #, elixir-autogen, elixir-format +#~ msgid "Show current cycle" +#~ msgstr "Aktuellen Zyklus anzeigen" + +#~ #: lib/mv_web/live/member_live/index.html.heex +#~ #, elixir-autogen, elixir-format +#~ msgid "Show last completed cycle" +#~ msgstr "Letzten abgeschlossenen Zyklus anzeigen" + #~ #: lib/mv_web/live/member_live/form.ex #~ #: lib/mv_web/live/member_live/show.ex #~ #, elixir-autogen, elixir-format diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 2fd0bbf..1744ae5 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -1460,7 +1460,6 @@ msgstr "" msgid "Confirm Change" msgstr "" -#: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Current Cycle" @@ -1536,7 +1535,6 @@ msgstr "" msgid "Invalid amount format" msgstr "" -#: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Last Cycle" @@ -1683,16 +1681,6 @@ msgstr "" msgid "Select interval" msgstr "" -#: lib/mv_web/live/member_live/index.html.heex -#, elixir-autogen, elixir-format -msgid "Show current cycle" -msgstr "" - -#: lib/mv_web/live/member_live/index.html.heex -#, elixir-autogen, elixir-format -msgid "Show last completed cycle" -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex #, elixir-autogen, elixir-format msgid "Switch to current cycle" @@ -1818,3 +1806,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "You are about to delete all %{count} cycles for this member." msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Show Last/Current Cycle Payment Status" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 8f43106..54e2ab4 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -1460,7 +1460,6 @@ msgstr "" msgid "Confirm Change" msgstr "" -#: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format, fuzzy msgid "Current Cycle" @@ -1536,7 +1535,6 @@ msgstr "" msgid "Invalid amount format" msgstr "" -#: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Last Cycle" @@ -1683,16 +1681,6 @@ msgstr "" msgid "Select interval" msgstr "" -#: lib/mv_web/live/member_live/index.html.heex -#, elixir-autogen, elixir-format -msgid "Show current cycle" -msgstr "" - -#: lib/mv_web/live/member_live/index.html.heex -#, elixir-autogen, elixir-format -msgid "Show last completed cycle" -msgstr "" - #: lib/mv_web/live/member_live/index.html.heex #, elixir-autogen, elixir-format msgid "Switch to current cycle" @@ -1819,6 +1807,11 @@ msgstr "" msgid "You are about to delete all %{count} cycles for this member." msgstr "" +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Show Last/Current Cycle Payment Status" +msgstr "" + #~ #: lib/mv_web/live/components/payment_filter_component.ex #~ #, elixir-autogen, elixir-format #~ msgid "All payment statuses" @@ -1923,6 +1916,16 @@ msgstr "" #~ msgid "Quarterly Interval - Joining Period Excluded" #~ msgstr "" +#~ #: lib/mv_web/live/member_live/index.html.heex +#~ #, elixir-autogen, elixir-format +#~ msgid "Show current cycle" +#~ msgstr "" + +#~ #: lib/mv_web/live/member_live/index.html.heex +#~ #, elixir-autogen, elixir-format +#~ msgid "Show last completed cycle" +#~ msgstr "" + #~ #: lib/mv_web/live/member_live/form.ex #~ #: lib/mv_web/live/member_live/show.ex #~ #, elixir-autogen, elixir-format diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index feb7170..bbb6bc3 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -127,55 +127,67 @@ Accounts.create_user!(%{email: "admin@mv.local"}, upsert?: true, upsert_identity |> Ash.Changeset.for_update(:admin_set_password, %{password: "testpassword"}) |> Ash.update!() +# Load all membership fee types for assignment +all_fee_types = MembershipFeeType |> Ash.read!() |> Enum.to_list() + # Create sample members for testing - use upsert to prevent duplicates -for member_attrs <- [ - %{ - first_name: "Hans", - last_name: "Müller", - email: "hans.mueller@example.de", - join_date: ~D[2023-01-15], - phone_number: "+49301234567", - city: "München", - street: "Hauptstraße", - house_number: "42", - postal_code: "80331" - }, - %{ - first_name: "Greta", - last_name: "Schmidt", - email: "greta.schmidt@example.de", - join_date: ~D[2023-02-01], - phone_number: "+49309876543", - city: "Hamburg", - street: "Lindenstraße", - house_number: "17", - postal_code: "20095", - notes: "Interessiert an Fortgeschrittenen-Kursen" - }, - %{ - first_name: "Friedrich", - last_name: "Wagner", - email: "friedrich.wagner@example.de", - join_date: ~D[2022-11-10], - phone_number: "+49301122334", - city: "Berlin", - street: "Kastanienallee", - house_number: "8" - }, - %{ - first_name: "Marianne", - last_name: "Wagner", - email: "marianne.wagner@example.de", - join_date: ~D[2022-11-10], - phone_number: "+49301122334", - city: "Berlin", - street: "Kastanienallee", - house_number: "8" - } - ] do +# Assign each member to a fee type using round-robin distribution +member_attrs_list = [ + %{ + first_name: "Hans", + last_name: "Müller", + email: "hans.mueller@example.de", + join_date: ~D[2023-01-15], + phone_number: "+49301234567", + city: "München", + street: "Hauptstraße", + house_number: "42", + postal_code: "80331" + }, + %{ + first_name: "Greta", + last_name: "Schmidt", + email: "greta.schmidt@example.de", + join_date: ~D[2023-02-01], + phone_number: "+49309876543", + city: "Hamburg", + street: "Lindenstraße", + house_number: "17", + postal_code: "20095", + notes: "Interessiert an Fortgeschrittenen-Kursen" + }, + %{ + first_name: "Friedrich", + last_name: "Wagner", + email: "friedrich.wagner@example.de", + join_date: ~D[2022-11-10], + phone_number: "+49301122334", + city: "Berlin", + street: "Kastanienallee", + house_number: "8" + }, + %{ + first_name: "Marianne", + last_name: "Wagner", + email: "marianne.wagner@example.de", + join_date: ~D[2022-11-10], + phone_number: "+49301122334", + city: "Berlin", + street: "Kastanienallee", + house_number: "8" + } +] + +# Assign fee types to members using round-robin +Enum.with_index(member_attrs_list) +|> Enum.each(fn {member_attrs, index} -> + # Round-robin assignment: cycle through fee types + fee_type = Enum.at(all_fee_types, rem(index, length(all_fee_types))) + member_attrs_with_fee_type = Map.put(member_attrs, :membership_fee_type_id, fee_type.id) + # Use upsert to prevent duplicates based on email - Membership.create_member!(member_attrs, upsert?: true, upsert_identity: :unique_email) -end + Membership.create_member!(member_attrs_with_fee_type, upsert?: true, upsert_identity: :unique_email) +end) # Create additional users for user-member linking examples additional_users = [ @@ -226,21 +238,30 @@ linked_members = [ ] # Create the linked members - use upsert to prevent duplicates -Enum.each(linked_members, fn member_attrs -> +# Assign fee types to linked members using round-robin +# Continue from where we left off with the previous members +Enum.with_index(linked_members) +|> Enum.each(fn {member_attrs, index} -> user = member_attrs.user member_attrs_without_user = Map.delete(member_attrs, :user) + # Round-robin assignment: continue cycling through fee types + # Start from where previous members ended + fee_type_index = rem(length(member_attrs_list) + index, length(all_fee_types)) + fee_type = Enum.at(all_fee_types, fee_type_index) + member_attrs_with_fee_type = Map.put(member_attrs_without_user, :membership_fee_type_id, fee_type.id) + # Check if user already has a member if user.member_id == nil do # User is free, create member and link - use upsert to prevent duplicates Membership.create_member!( - Map.put(member_attrs_without_user, :user, %{id: user.id}), + Map.put(member_attrs_with_fee_type, :user, %{id: user.id}), upsert?: true, upsert_identity: :unique_email ) else # User already has a member, just create the member without linking - use upsert to prevent duplicates - Membership.create_member!(member_attrs_without_user, + Membership.create_member!(member_attrs_with_fee_type, upsert?: true, upsert_identity: :unique_email )