From 98dc73ee37901001ef335cdfe23357cc20f6d1d8 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 16 Dec 2025 13:01:16 +0100 Subject: [PATCH] refactor: fix credo warnings and format code - Replace Enum.map/2 |> Enum.join/2 with Enum.map_join/3 for efficiency - Refactor get_existing_form_values to reduce cyclomatic complexity - Replace length/1 with Enum.empty?/1 for better performance - Update gettext translations --- lib/mv_web/helpers/membership_fee_helpers.ex | 1 + lib/mv_web/live/member_live/show.ex | 1 + .../show/membership_fees_component.ex | 9 +- .../live/membership_fee_settings_live.ex | 3 +- .../live/membership_fee_type_live/form.ex | 71 +-- priv/gettext/de/LC_MESSAGES/default.po | 425 ++++++++++++++++-- priv/gettext/default.pot | 391 ++++++++++++++-- priv/gettext/en/LC_MESSAGES/default.po | 424 +++++++++++++++-- .../membership_fee_integration_test.exs | 2 +- .../member_live/show_membership_fees_test.exs | 12 +- 10 files changed, 1180 insertions(+), 159 deletions(-) diff --git a/lib/mv_web/helpers/membership_fee_helpers.ex b/lib/mv_web/helpers/membership_fee_helpers.ex index 8b97c15..f6b6ec0 100644 --- a/lib/mv_web/helpers/membership_fee_helpers.ex +++ b/lib/mv_web/helpers/membership_fee_helpers.ex @@ -28,6 +28,7 @@ defmodule MvWeb.Helpers.MembershipFeeHelpers do # Use German format: comma as decimal separator, always 2 decimal places # Normalize to 2 decimal places normalized = Decimal.round(amount, 2) + normalized_str = normalized |> Decimal.to_string(:normal) diff --git a/lib/mv_web/live/member_live/show.ex b/lib/mv_web/live/member_live/show.ex index e29e00a..0b6ed18 100644 --- a/lib/mv_web/live/member_live/show.ex +++ b/lib/mv_web/live/member_live/show.ex @@ -248,6 +248,7 @@ defmodule MvWeb.MemberLive.Show do # Calculate last and current cycle status from loaded cycles last_cycle_status = get_last_cycle_status(member) current_cycle_status = get_current_cycle_status(member) + member = member |> Map.put(:last_cycle_status, last_cycle_status) diff --git a/lib/mv_web/live/member_live/show/membership_fees_component.ex b/lib/mv_web/live/member_live/show/membership_fees_component.ex index 2a33e22..a4ea5d4 100644 --- a/lib/mv_web/live/member_live/show/membership_fees_component.ex +++ b/lib/mv_web/live/member_live/show/membership_fees_component.ex @@ -39,7 +39,9 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do <% else %> - {gettext("No membership fee type assigned")} + + {gettext("No membership fee type assigned")} + <% end %> @@ -369,9 +371,7 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do {:error, %Ash.Error.Invalid{} = error} -> error_msg = - error.errors - |> Enum.map(fn e -> e.message end) - |> Enum.join(", ") + Enum.map_join(error.errors, ", ", fn e -> e.message end) {:noreply, socket @@ -424,7 +424,6 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do end end - def handle_event("edit_cycle_amount", %{"cycle_id" => cycle_id}, socket) do cycle = find_cycle(socket.assigns.cycles, cycle_id) diff --git a/lib/mv_web/live/membership_fee_settings_live.ex b/lib/mv_web/live/membership_fee_settings_live.ex index 206bc85..61774e8 100644 --- a/lib/mv_web/live/membership_fee_settings_live.ex +++ b/lib/mv_web/live/membership_fee_settings_live.ex @@ -44,7 +44,8 @@ defmodule MvWeb.MembershipFeeSettingsLive do Map.put(params, "include_joining_cycle", false) end - {:noreply, assign(socket, form: AshPhoenix.Form.validate(socket.assigns.form, normalized_params))} + {:noreply, + assign(socket, form: AshPhoenix.Form.validate(socket.assigns.form, normalized_params))} end def handle_event("save", %{"settings" => params}, socket) do diff --git a/lib/mv_web/live/membership_fee_type_live/form.ex b/lib/mv_web/live/membership_fee_type_live/form.ex index 5c276ff..0025974 100644 --- a/lib/mv_web/live/membership_fee_type_live/form.ex +++ b/lib/mv_web/live/membership_fee_type_live/form.ex @@ -324,55 +324,32 @@ defmodule MvWeb.MembershipFeeTypeLive.Form do defp get_existing_form_values(form) do # Extract values directly from form fields to get current state # This ensures we get the actual current values, not just initial params - existing_values = %{} - - existing_values = - if form[:name] && form[:name].value do - Map.put(existing_values, "name", to_string(form[:name].value)) - else - existing_values - end - - existing_values = - if form[:amount] && form[:amount].value do - # Convert Decimal to string for form - amount_str = - case form[:amount].value do - %Decimal{} = amount -> Decimal.to_string(amount, :normal) - value when is_binary(value) -> value - value -> to_string(value) - end - - Map.put(existing_values, "amount", amount_str) - else - existing_values - end - - existing_values = - if form[:interval] && form[:interval].value do - # Convert atom to string for form - interval_str = - case form[:interval].value do - value when is_atom(value) -> Atom.to_string(value) - value when is_binary(value) -> value - value -> to_string(value) - end - - Map.put(existing_values, "interval", interval_str) - else - existing_values - end - - existing_values = - if form[:description] && form[:description].value do - Map.put(existing_values, "description", to_string(form[:description].value)) - else - existing_values - end - - existing_values + %{} + |> extract_form_value(form, :name, &to_string/1) + |> extract_form_value(form, :amount, &format_amount_value/1) + |> extract_form_value(form, :interval, &format_interval_value/1) + |> extract_form_value(form, :description, &to_string/1) end + # Helper to extract a single form field value + defp extract_form_value(acc, form, field, formatter) do + if form[field] && form[field].value do + Map.put(acc, to_string(field), formatter.(form[field].value)) + else + acc + end + end + + # Formats amount value (Decimal or string) to string + defp format_amount_value(%Decimal{} = amount), do: Decimal.to_string(amount, :normal) + defp format_amount_value(value) when is_binary(value), do: value + defp format_amount_value(value), do: to_string(value) + + # Formats interval value (atom or string) to string + defp format_interval_value(value) when is_atom(value), do: Atom.to_string(value) + defp format_interval_value(value) when is_binary(value), do: value + defp format_interval_value(value), do: to_string(value) + @spec return_path(String.t(), MembershipFeeType.t() | nil) :: String.t() defp return_path("index", _membership_fee_type), do: ~p"/membership_fee_types" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index bd20a73..cc93a73 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -17,6 +17,7 @@ msgid "Actions" msgstr "Aktionen" #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/membership_fee_type_live/index.ex #: lib/mv_web/live/user_live/index.html.heex #, elixir-autogen, elixir-format msgid "Are you sure?" @@ -37,6 +38,8 @@ msgstr "Stadt" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/custom_field_live/index_component.ex #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #: lib/mv_web/live/user_live/index.html.heex #, elixir-autogen, elixir-format msgid "Delete" @@ -141,9 +144,10 @@ msgstr "Notizen" #: lib/mv_web/live/components/payment_filter_component.ex #: lib/mv_web/live/contribution_period_live/show.ex -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #: lib/mv_web/translations/member_fields.ex #, elixir-autogen, elixir-format msgid "Paid" @@ -170,6 +174,7 @@ msgstr "Mitglied speichern" #: lib/mv_web/live/custom_field_value_live/form.ex #: lib/mv_web/live/global_settings_live.ex #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #: lib/mv_web/live/user_live/form.ex #, elixir-autogen, elixir-format msgid "Saving..." @@ -256,6 +261,8 @@ msgstr "Ihr Passwort wurde erfolgreich zurückgesetzt" #: lib/mv_web/live/custom_field_live/index_component.ex #: lib/mv_web/live/custom_field_value_live/form.ex #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #: lib/mv_web/live/user_live/form.ex #, elixir-autogen, elixir-format msgid "Cancel" @@ -268,6 +275,7 @@ msgstr "Mitglied auswählen" #: lib/mv_web/live/custom_field_live/form_component.ex #: lib/mv_web/live/custom_field_live/index_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Description" msgstr "Beschreibung" @@ -302,6 +310,7 @@ msgstr "Mitglied" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/member_live/index.ex #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Members" msgstr "Mitglieder" @@ -309,6 +318,8 @@ msgstr "Mitglieder" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/custom_field_live/form_component.ex #: lib/mv_web/live/custom_field_live/index_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Name" msgstr "Name" @@ -776,6 +787,7 @@ msgid "This field cannot be empty" msgstr "Dieses Feld darf nicht leer bleiben" #: lib/mv_web/components/core_components.ex +#: lib/mv_web/live/member_live/index.html.heex #, elixir-autogen, elixir-format msgid "All" msgstr "Alle" @@ -807,7 +819,6 @@ msgid "Back" msgstr "Zurück" #: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Coming soon" msgstr "Demnächst verfügbar" @@ -818,40 +829,26 @@ msgstr "Demnächst verfügbar" msgid "Contact Data" msgstr "Kontaktdaten" -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "Contribution" -msgstr "Beitrag" - #: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "Nr." msgstr "Nr." -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payment Cycle" msgstr "Zahlungszyklus" -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payment Data" msgstr "Beitragsdaten" #: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payments" msgstr "Zahlungen" -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "Pending" -msgstr "Ausstehend" - #: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format @@ -866,27 +863,11 @@ msgid "Phone" msgstr "Telefon" #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex #, elixir-autogen, elixir-format msgid "Save" msgstr "Speichern" -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "This data is for demonstration purposes only (mockup)." -msgstr "Diese Daten dienen nur zu Demonstrationszwecken (Mockup)." - -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "monthly" -msgstr "monatlich" - -#: lib/mv_web/live/member_live/form.ex -#, elixir-autogen, elixir-format -msgid "yearly" -msgstr "jährlich" - #: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "Create Member" @@ -906,6 +887,9 @@ msgstr "Über Beitragsarten" #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Amount" msgstr "Betrag" @@ -916,6 +900,7 @@ msgid "Back to Settings" msgstr "Zurück zu den Einstellungen" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Can be changed at any time. Amount changes affect future periods only." msgstr "Kann jederzeit geändert werden. Änderungen des Betrags betreffen nur zukünftige Zyklen." @@ -935,7 +920,6 @@ msgstr "Beitragsart ändern" msgid "Contribution Start" msgstr "Beitragsbeginn" -#: lib/mv_web/components/layouts/navbar.ex #: lib/mv_web/live/contribution_type_live/index.ex #, elixir-autogen, elixir-format, fuzzy msgid "Contribution Types" @@ -967,6 +951,7 @@ msgid "Current" msgstr "Aktuell" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format, fuzzy msgid "Deletion" msgstr "Löschen" @@ -982,6 +967,7 @@ msgid "Family" msgstr "Familie" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Fixed after creation. Members can only switch between types with the same interval." msgstr "Festgelegt nach der Erstellung. Mitglieder können nur zwischen Beitragsarten mit gleichem Intervall wechseln." @@ -991,9 +977,11 @@ msgstr "Festgelegt nach der Erstellung. Mitglieder können nur zwischen Beitrags msgid "Global Settings" msgstr "Vereinsdaten" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Half-yearly" msgstr "Halbjährlich" @@ -1011,6 +999,9 @@ msgstr "Ehrenamtlich" #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Interval" msgstr "Zyklus" @@ -1080,9 +1071,11 @@ msgstr "Mitglied seit" msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." msgstr "Mitglieder können nur zwischen Beitragsarten mit demselben Zahlungszyklus wechseln (z. B. jährlich zu jährlich). Dadurch werden komplexe Überlappungen vermieden." +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format, fuzzy msgid "Monthly" msgstr "Monatlich" @@ -1093,6 +1086,7 @@ msgid "Monthly fee for students and trainees" msgstr "Monatlicher Beitrag für Studierende und Auszubildende" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Name & Amount" msgstr "Name & Betrag" @@ -1108,6 +1102,7 @@ msgid "No fee for honorary members" msgstr "Kein Beitrag für ehrenamtliche Mitglieder" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Only possible if no members are assigned to this type." msgstr "Nur möglich, wenn diesem Typ keine Mitglieder zugewiesen sind." @@ -1128,9 +1123,11 @@ msgstr "Bezahlt durch Überweisung" msgid "Preview Mockup" msgstr "Vorschau" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Quarterly" msgstr "Vierteljährlich" @@ -1168,6 +1165,7 @@ msgid "Standard membership fee for regular members" msgstr "Regulärer Mitgliedsbeitrag für Vollmitglieder" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex #, elixir-autogen, elixir-format msgid "Status" msgstr "Status" @@ -1188,6 +1186,9 @@ msgid "Suspend" msgstr "Pausieren" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #, elixir-autogen, elixir-format msgid "Suspended" msgstr "Pausiert" @@ -1209,6 +1210,9 @@ msgid "Total Contributions" msgstr "Gesamtbeiträge" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #, elixir-autogen, elixir-format msgid "Unpaid" msgstr "Unbezahlt" @@ -1218,9 +1222,11 @@ msgstr "Unbezahlt" msgid "Why are not all contribution types shown?" msgstr "Warum werden nicht alle Beitragsarten angezeigt?" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format, fuzzy msgid "Yearly" msgstr "jährlich" @@ -1241,6 +1247,7 @@ msgid "Last name" msgstr "Nachname" #: lib/mv_web/components/core_components.ex +#: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "None" msgstr "Keine" @@ -1422,6 +1429,322 @@ msgstr "Jährliches Intervall – Beitrittszeitraum nicht einbezogen" msgid "Yearly Interval - Joining Cycle Included" msgstr "Jährliches Intervall – Beitrittszeitraum einbezogen" +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "About Membership Fee Types" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Already paid cycles will remain with the old amount." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "An error occurred" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Are you sure you want to delete this cycle?" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Cannot delete - %{count} member(s) assigned" +msgstr "Löschen nicht möglich – es sind Mitglieder zugewiesen" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Change Amount?" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Changing the amount will affect %{count} member(s)." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +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" +msgstr "Aktuell" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Current amount" +msgstr "Aktuell" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle amount updated" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle deleted" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle status updated" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycles regenerated successfully" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Delete Cycle" +msgstr "Löschen" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Edit Cycle Amount" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Edit Membership Fee Type" +msgstr "Mitglied bearbeiten" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Edit amount" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Failed to update cycle status: %{errors}" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Future unpaid cycles will be regenerated with the new amount." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Generate cycles from the last existing cycle to today" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Interval cannot be changed after creation." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +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" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Manage membership fee types for membership fees." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Mark as paid" +msgstr "Als unbezahlt markieren" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Mark as suspended" +msgstr "Als pausiert markieren" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Mark as unpaid" +msgstr "Als unbezahlt markieren" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee" +msgstr "Mitgliedsbeitragseinstellungen" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee Status" +msgstr "Mitgliedsbeitragseinstellungen" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee Type" +msgstr "Mitgliedsbeitragseinstellungen" + +#: lib/mv_web/components/layouts/navbar.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee Types" +msgstr "Mitgliedsbeitragseinstellungen" + +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fees" +msgstr "Mitgliedsbeitragseinstellungen" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership fee type deleted" +msgstr "Beitragsbeginn" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership fee type removed" +msgstr "Beitragsbeginn" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type saved successfully" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type updated. Cycles regenerated." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership fee types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." +msgstr "Beitragsarten definieren verschiedene Beitragsmodelle. Jede Art hat einen festen Zyklus (monatlich, vierteljährlich, halbjährlich, jährlich), der nach Erstellung nicht mehr geändert werden kann." + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "New Membership Fee Type" +msgstr "Standard-Mitgliedsbeitragsart" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "New amount" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "No cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "No cycles" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned." +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "No membership fee type assigned" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "No status" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Please confirm the amount change first" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Regenerate Cycles" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Regenerating..." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Save Membership Fee Type" +msgstr "Standard-Mitgliedsbeitragsart" + +#: lib/mv_web/live/member_live/form.ex +#, elixir-autogen, elixir-format +msgid "Select a membership fee type for this member. Members can only switch between types with the same interval." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Select interval" +msgstr "Alle auswählen" + +#: 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" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Switch to last completed cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "Type" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Unpaid in current cycle" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Unpaid in last cycle" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Use this form to manage membership fee types in your database." +msgstr "Verwenden Sie dieses Formular, um Benutzer*innen-Datensätze zu verwalten." + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Warning: Changing from %{old_interval} to %{new_interval} is not allowed. Please select a membership fee type with the same interval." +msgstr "" + #~ #: lib/mv_web/live/custom_field_live/show.ex #~ #, elixir-autogen, elixir-format #~ msgid "Auto-generated identifier (immutable)" @@ -1432,6 +1755,12 @@ msgstr "Jährliches Intervall – Beitrittszeitraum einbezogen" #~ msgid "Configure global settings for membership contributions." #~ msgstr "Globale Einstellungen für Mitgliedsbeiträge konfigurieren." +#~ #: lib/mv_web/live/member_live/form.ex +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "Contribution" +#~ msgstr "Beitrag" + #~ #: lib/mv_web/components/layouts/navbar.ex #~ #: lib/mv_web/live/contribution_settings_live.ex #~ #, elixir-autogen, elixir-format, fuzzy @@ -1488,6 +1817,17 @@ msgstr "Jährliches Intervall – Beitrittszeitraum einbezogen" #~ msgid "New Custom field" #~ msgstr "Benutzerdefiniertes Feld speichern" +#~ #: lib/mv_web/live/user_live/form.ex +#~ #: lib/mv_web/live/user_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "Not set" +#~ msgstr "Nicht gesetzt" + +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "Pending" +#~ msgstr "Ausstehend" + #~ #: lib/mv_web/live/contribution_settings_live.ex #~ #, elixir-autogen, elixir-format #~ msgid "Quarterly Interval - Joining Period Excluded" @@ -1503,6 +1843,12 @@ msgstr "Jährliches Intervall – Beitrittszeitraum einbezogen" #~ msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." #~ msgstr "Dieser Beitragstyp wird automatisch neuen Mitgliedern zugewiesen. Kann individuell angepasst werden." +#~ #: lib/mv_web/live/member_live/form.ex +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "This data is for demonstration purposes only (mockup)." +#~ msgstr "Diese Daten dienen nur zu Demonstrationszwecken (Mockup)." + #~ #: lib/mv_web/live/contribution_settings_live.ex #~ #, elixir-autogen, elixir-format #~ msgid "View Example Member" @@ -1527,3 +1873,14 @@ msgstr "Jährliches Intervall – Beitrittszeitraum einbezogen" #~ #, elixir-autogen, elixir-format #~ msgid "Yearly Interval - Joining Period Included" #~ msgstr "Jährliches Intervall – Beitrittszeitraum einbezogen" + +#~ #: lib/mv_web/live/member_live/form.ex +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "monthly" +#~ msgstr "monatlich" + +#~ #: lib/mv_web/live/member_live/form.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "yearly" +#~ msgstr "jährlich" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index e2bbf32..b78300a 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -18,6 +18,7 @@ msgid "Actions" msgstr "" #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/membership_fee_type_live/index.ex #: lib/mv_web/live/user_live/index.html.heex #, elixir-autogen, elixir-format msgid "Are you sure?" @@ -38,6 +39,8 @@ msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/custom_field_live/index_component.ex #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #: lib/mv_web/live/user_live/index.html.heex #, elixir-autogen, elixir-format msgid "Delete" @@ -142,9 +145,10 @@ msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex #: lib/mv_web/live/contribution_period_live/show.ex -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #: lib/mv_web/translations/member_fields.ex #, elixir-autogen, elixir-format msgid "Paid" @@ -171,6 +175,7 @@ msgstr "" #: lib/mv_web/live/custom_field_value_live/form.ex #: lib/mv_web/live/global_settings_live.ex #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #: lib/mv_web/live/user_live/form.ex #, elixir-autogen, elixir-format msgid "Saving..." @@ -257,6 +262,8 @@ msgstr "" #: lib/mv_web/live/custom_field_live/index_component.ex #: lib/mv_web/live/custom_field_value_live/form.ex #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #: lib/mv_web/live/user_live/form.ex #, elixir-autogen, elixir-format msgid "Cancel" @@ -269,6 +276,7 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form_component.ex #: lib/mv_web/live/custom_field_live/index_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Description" msgstr "" @@ -303,6 +311,7 @@ msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/member_live/index.ex #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Members" msgstr "" @@ -310,6 +319,8 @@ msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/custom_field_live/form_component.ex #: lib/mv_web/live/custom_field_live/index_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Name" msgstr "" @@ -777,6 +788,7 @@ msgid "This field cannot be empty" msgstr "" #: lib/mv_web/components/core_components.ex +#: lib/mv_web/live/member_live/index.html.heex #, elixir-autogen, elixir-format msgid "All" msgstr "" @@ -808,7 +820,6 @@ msgid "Back" msgstr "" #: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Coming soon" msgstr "" @@ -819,40 +830,26 @@ msgstr "" msgid "Contact Data" msgstr "" -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "Contribution" -msgstr "" - #: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "Nr." msgstr "" -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payment Cycle" msgstr "" -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payment Data" msgstr "" #: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payments" msgstr "" -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "Pending" -msgstr "" - #: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format @@ -867,27 +864,11 @@ msgid "Phone" msgstr "" #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex #, elixir-autogen, elixir-format msgid "Save" msgstr "" -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "This data is for demonstration purposes only (mockup)." -msgstr "" - -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "monthly" -msgstr "" - -#: lib/mv_web/live/member_live/form.ex -#, elixir-autogen, elixir-format -msgid "yearly" -msgstr "" - #: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "Create Member" @@ -907,6 +888,9 @@ msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Amount" msgstr "" @@ -917,6 +901,7 @@ msgid "Back to Settings" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Can be changed at any time. Amount changes affect future periods only." msgstr "" @@ -936,7 +921,6 @@ msgstr "" msgid "Contribution Start" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex #: lib/mv_web/live/contribution_type_live/index.ex #, elixir-autogen, elixir-format msgid "Contribution Types" @@ -968,6 +952,7 @@ msgid "Current" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Deletion" msgstr "" @@ -983,6 +968,7 @@ msgid "Family" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Fixed after creation. Members can only switch between types with the same interval." msgstr "" @@ -992,9 +978,11 @@ msgstr "" msgid "Global Settings" msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Half-yearly" msgstr "" @@ -1012,6 +1000,9 @@ msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Interval" msgstr "" @@ -1081,9 +1072,11 @@ msgstr "" msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Monthly" msgstr "" @@ -1094,6 +1087,7 @@ msgid "Monthly fee for students and trainees" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Name & Amount" msgstr "" @@ -1109,6 +1103,7 @@ msgid "No fee for honorary members" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Only possible if no members are assigned to this type." msgstr "" @@ -1129,9 +1124,11 @@ msgstr "" msgid "Preview Mockup" msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Quarterly" msgstr "" @@ -1169,6 +1166,7 @@ msgid "Standard membership fee for regular members" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex #, elixir-autogen, elixir-format msgid "Status" msgstr "" @@ -1189,6 +1187,9 @@ msgid "Suspend" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #, elixir-autogen, elixir-format msgid "Suspended" msgstr "" @@ -1210,6 +1211,9 @@ msgid "Total Contributions" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #, elixir-autogen, elixir-format msgid "Unpaid" msgstr "" @@ -1219,9 +1223,11 @@ msgstr "" msgid "Why are not all contribution types shown?" msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Yearly" msgstr "" @@ -1242,6 +1248,7 @@ msgid "Last name" msgstr "" #: lib/mv_web/components/core_components.ex +#: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "None" msgstr "" @@ -1422,3 +1429,319 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Yearly Interval - Joining Cycle Included" msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "About Membership Fee Types" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Already paid cycles will remain with the old amount." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "An error occurred" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Are you sure you want to delete this cycle?" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Cannot delete - %{count} member(s) assigned" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Change Amount?" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Changing the amount will affect %{count} member(s)." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +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" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Current amount" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle amount updated" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle deleted" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle status updated" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycles regenerated successfully" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Delete Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Edit Cycle Amount" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Edit Membership Fee Type" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Edit amount" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Failed to update cycle status: %{errors}" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Future unpaid cycles will be regenerated with the new amount." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Generate cycles from the last existing cycle to today" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Interval cannot be changed after creation." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +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" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Manage membership fee types for membership fees." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Mark as paid" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Mark as suspended" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Mark as unpaid" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "Membership Fee" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Membership Fee Status" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Membership Fee Type" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Membership Fee Types" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Membership Fees" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type deleted" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type removed" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type saved successfully" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type updated. Cycles regenerated." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Membership fee types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "New Membership Fee Type" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "New amount" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "No cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "No cycles" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned." +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "No membership fee type assigned" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "No status" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Please confirm the amount change first" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Regenerate Cycles" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Regenerating..." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Save Membership Fee Type" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#, elixir-autogen, elixir-format +msgid "Select a membership fee type for this member. Members can only switch between types with the same interval." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +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" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Switch to last completed cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "Type" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Unpaid in current cycle" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Unpaid in last cycle" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Use this form to manage membership fee types in your database." +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Warning: Changing from %{old_interval} to %{new_interval} is not allowed. Please select a membership fee type with the same interval." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 86301d0..6b94ac4 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -18,6 +18,7 @@ msgid "Actions" msgstr "" #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/membership_fee_type_live/index.ex #: lib/mv_web/live/user_live/index.html.heex #, elixir-autogen, elixir-format msgid "Are you sure?" @@ -38,6 +39,8 @@ msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/custom_field_live/index_component.ex #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #: lib/mv_web/live/user_live/index.html.heex #, elixir-autogen, elixir-format msgid "Delete" @@ -142,9 +145,10 @@ msgstr "" #: lib/mv_web/live/components/payment_filter_component.ex #: lib/mv_web/live/contribution_period_live/show.ex -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/index.html.heex #: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #: lib/mv_web/translations/member_fields.ex #, elixir-autogen, elixir-format msgid "Paid" @@ -171,6 +175,7 @@ msgstr "" #: lib/mv_web/live/custom_field_value_live/form.ex #: lib/mv_web/live/global_settings_live.ex #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #: lib/mv_web/live/user_live/form.ex #, elixir-autogen, elixir-format msgid "Saving..." @@ -257,6 +262,8 @@ msgstr "" #: lib/mv_web/live/custom_field_live/index_component.ex #: lib/mv_web/live/custom_field_value_live/form.ex #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #: lib/mv_web/live/user_live/form.ex #, elixir-autogen, elixir-format msgid "Cancel" @@ -269,6 +276,7 @@ msgstr "" #: lib/mv_web/live/custom_field_live/form_component.ex #: lib/mv_web/live/custom_field_live/index_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Description" msgstr "" @@ -303,6 +311,7 @@ msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/member_live/index.ex #: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Members" msgstr "" @@ -310,6 +319,8 @@ msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/custom_field_live/form_component.ex #: lib/mv_web/live/custom_field_live/index_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Name" msgstr "" @@ -777,6 +788,7 @@ msgid "This field cannot be empty" msgstr "" #: lib/mv_web/components/core_components.ex +#: lib/mv_web/live/member_live/index.html.heex #, elixir-autogen, elixir-format msgid "All" msgstr "" @@ -808,7 +820,6 @@ msgid "Back" msgstr "" #: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Coming soon" msgstr "" @@ -819,40 +830,26 @@ msgstr "" msgid "Contact Data" msgstr "" -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "Contribution" -msgstr "" - #: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "Nr." msgstr "" -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format, fuzzy msgid "Payment Cycle" msgstr "" -#: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payment Data" msgstr "" #: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format msgid "Payments" msgstr "" -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format, fuzzy -msgid "Pending" -msgstr "" - #: lib/mv_web/live/member_live/form.ex #: lib/mv_web/live/member_live/show.ex #, elixir-autogen, elixir-format @@ -867,27 +864,11 @@ msgid "Phone" msgstr "" #: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex #, elixir-autogen, elixir-format, fuzzy msgid "Save" msgstr "" -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "This data is for demonstration purposes only (mockup)." -msgstr "" - -#: lib/mv_web/live/member_live/form.ex -#: lib/mv_web/live/member_live/show.ex -#, elixir-autogen, elixir-format -msgid "monthly" -msgstr "" - -#: lib/mv_web/live/member_live/form.ex -#, elixir-autogen, elixir-format -msgid "yearly" -msgstr "" - #: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format msgid "Create Member" @@ -907,6 +888,9 @@ msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Amount" msgstr "" @@ -917,6 +901,7 @@ msgid "Back to Settings" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Can be changed at any time. Amount changes affect future periods only." msgstr "" @@ -936,7 +921,6 @@ msgstr "" msgid "Contribution Start" msgstr "" -#: lib/mv_web/components/layouts/navbar.ex #: lib/mv_web/live/contribution_type_live/index.ex #, elixir-autogen, elixir-format msgid "Contribution Types" @@ -968,6 +952,7 @@ msgid "Current" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format, fuzzy msgid "Deletion" msgstr "" @@ -983,6 +968,7 @@ msgid "Family" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Fixed after creation. Members can only switch between types with the same interval." msgstr "" @@ -992,9 +978,11 @@ msgstr "" msgid "Global Settings" msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Half-yearly" msgstr "" @@ -1012,6 +1000,9 @@ msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Interval" msgstr "" @@ -1081,9 +1072,11 @@ msgstr "" msgid "Members can only switch between contribution types with the same payment interval (e.g., yearly to yearly). This prevents complex period overlaps." msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Monthly" msgstr "" @@ -1094,6 +1087,7 @@ msgid "Monthly fee for students and trainees" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Name & Amount" msgstr "" @@ -1109,6 +1103,7 @@ msgid "No fee for honorary members" msgstr "" #: lib/mv_web/live/contribution_type_live/index.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex #, elixir-autogen, elixir-format msgid "Only possible if no members are assigned to this type." msgstr "" @@ -1129,9 +1124,11 @@ msgstr "" msgid "Preview Mockup" msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Quarterly" msgstr "" @@ -1169,6 +1166,7 @@ msgid "Standard membership fee for regular members" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex #, elixir-autogen, elixir-format msgid "Status" msgstr "" @@ -1189,6 +1187,9 @@ msgid "Suspend" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #, elixir-autogen, elixir-format msgid "Suspended" msgstr "" @@ -1210,6 +1211,9 @@ msgid "Total Contributions" msgstr "" #: lib/mv_web/live/contribution_period_live/show.ex +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/member_live/index/membership_fee_status.ex #, elixir-autogen, elixir-format msgid "Unpaid" msgstr "" @@ -1219,9 +1223,11 @@ msgstr "" msgid "Why are not all contribution types shown?" msgstr "" +#: lib/mv_web/helpers/membership_fee_helpers.ex #: lib/mv_web/live/contribution_period_live/show.ex #: lib/mv_web/live/contribution_type_live/index.ex #: lib/mv_web/live/membership_fee_settings_live.ex +#: lib/mv_web/live/membership_fee_type_live/form.ex #, elixir-autogen, elixir-format msgid "Yearly" msgstr "" @@ -1242,6 +1248,7 @@ msgid "Last name" msgstr "" #: lib/mv_web/components/core_components.ex +#: lib/mv_web/live/member_live/form.ex #, elixir-autogen, elixir-format, fuzzy msgid "None" msgstr "" @@ -1423,6 +1430,322 @@ msgstr "" msgid "Yearly Interval - Joining Cycle Included" msgstr "" +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "About Membership Fee Types" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Already paid cycles will remain with the old amount." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "An error occurred" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Are you sure you want to delete this cycle?" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Cannot delete - %{count} member(s) assigned" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Change Amount?" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Changing the amount will affect %{count} member(s)." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +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" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Current amount" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle amount updated" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle deleted" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycle status updated" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Cycles regenerated successfully" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Delete Cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Edit Cycle Amount" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Edit Membership Fee Type" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Edit amount" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Failed to update cycle status: %{errors}" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Future unpaid cycles will be regenerated with the new amount." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Generate cycles from the last existing cycle to today" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Interval cannot be changed after creation." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +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" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format +msgid "Manage membership fee types for membership fees." +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Mark as paid" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Mark as suspended" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Mark as unpaid" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/index.html.heex +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee Status" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee Type" +msgstr "" + +#: lib/mv_web/components/layouts/navbar.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fee Types" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership Fees" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership fee type deleted" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership fee type removed" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type saved successfully" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Membership fee type updated. Cycles regenerated." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Membership fee types define different membership fee structures. Each type has a fixed interval (monthly, quarterly, half-yearly, yearly) that cannot be changed after creation." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#: lib/mv_web/live/membership_fee_type_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "New Membership Fee Type" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "New amount" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "No cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "No cycles" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "No membership fee cycles found. Cycles will be generated automatically when a membership fee type is assigned." +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "No membership fee type assigned" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "No status" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format +msgid "Please confirm the amount change first" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Regenerate Cycles" +msgstr "" + +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Regenerating..." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Save Membership Fee Type" +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#, elixir-autogen, elixir-format +msgid "Select a membership fee type for this member. Members can only switch between types with the same interval." +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +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" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Switch to last completed cycle" +msgstr "" + +#: lib/mv_web/live/member_live/show.ex +#, elixir-autogen, elixir-format +msgid "Type" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Unpaid in current cycle" +msgstr "" + +#: lib/mv_web/live/member_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Unpaid in last cycle" +msgstr "" + +#: lib/mv_web/live/membership_fee_type_live/form.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Use this form to manage membership fee types in your database." +msgstr "" + +#: lib/mv_web/live/member_live/form.ex +#: lib/mv_web/live/member_live/show/membership_fees_component.ex +#, elixir-autogen, elixir-format +msgid "Warning: Changing from %{old_interval} to %{new_interval} is not allowed. Please select a membership fee type with the same interval." +msgstr "" + #~ #: lib/mv_web/live/custom_field_live/show.ex #~ #, elixir-autogen, elixir-format #~ msgid "Auto-generated identifier (immutable)" @@ -1433,6 +1756,12 @@ msgstr "" #~ msgid "Configure global settings for membership contributions." #~ msgstr "" +#~ #: lib/mv_web/live/member_live/form.ex +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "Contribution" +#~ msgstr "" + #~ #: lib/mv_web/components/layouts/navbar.ex #~ #: lib/mv_web/live/contribution_settings_live.ex #~ #, elixir-autogen, elixir-format @@ -1489,6 +1818,16 @@ msgstr "" #~ msgid "New Custom field" #~ msgstr "" +#~ #: lib/mv_web/live/user_live/show.ex +#~ #, elixir-autogen, elixir-format, fuzzy +#~ msgid "Not set" +#~ msgstr "" + +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format, fuzzy +#~ msgid "Pending" +#~ msgstr "" + #~ #: lib/mv_web/live/contribution_settings_live.ex #~ #, elixir-autogen, elixir-format #~ msgid "Quarterly Interval - Joining Period Excluded" @@ -1504,6 +1843,12 @@ msgstr "" #~ msgid "This contribution type is automatically assigned to all new members. Can be changed individually per member." #~ msgstr "" +#~ #: lib/mv_web/live/member_live/form.ex +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "This data is for demonstration purposes only (mockup)." +#~ msgstr "" + #~ #: lib/mv_web/live/contribution_settings_live.ex #~ #, elixir-autogen, elixir-format #~ msgid "View Example Member" @@ -1528,3 +1873,14 @@ msgstr "" #~ #, elixir-autogen, elixir-format #~ msgid "Yearly Interval - Joining Period Included" #~ msgstr "" + +#~ #: lib/mv_web/live/member_live/form.ex +#~ #: lib/mv_web/live/member_live/show.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "monthly" +#~ msgstr "" + +#~ #: lib/mv_web/live/member_live/form.ex +#~ #, elixir-autogen, elixir-format +#~ msgid "yearly" +#~ msgstr "" diff --git a/test/mv_web/member_live/membership_fee_integration_test.exs b/test/mv_web/member_live/membership_fee_integration_test.exs index f58e7ee..3b7f4c8 100644 --- a/test/mv_web/member_live/membership_fee_integration_test.exs +++ b/test/mv_web/member_live/membership_fee_integration_test.exs @@ -75,7 +75,7 @@ defmodule MvWeb.MemberLive.MembershipFeeIntegrationTest do |> Ash.Query.filter(member_id == ^member.id) |> Ash.read!() - if length(cycles) > 0 do + if !Enum.empty?(cycles) do cycle = List.first(cycles) # Change status diff --git a/test/mv_web/member_live/show_membership_fees_test.exs b/test/mv_web/member_live/show_membership_fees_test.exs index 60e4345..e37fcc9 100644 --- a/test/mv_web/member_live/show_membership_fees_test.exs +++ b/test/mv_web/member_live/show_membership_fees_test.exs @@ -161,7 +161,9 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do # Mark as paid view - |> element("button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='paid']") + |> element( + "button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='paid']" + ) |> render_click() # Verify cycle is now paid @@ -184,7 +186,9 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do # Mark as suspended view - |> element("button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='suspended']") + |> element( + "button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='suspended']" + ) |> render_click() # Verify cycle is now suspended @@ -207,7 +211,9 @@ defmodule MvWeb.MemberLive.ShowMembershipFeesTest do # Mark as unpaid view - |> element("button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='unpaid']") + |> element( + "button[phx-click='mark_cycle_status'][phx-value-cycle_id='#{cycle.id}'][phx-value-status='unpaid']" + ) |> render_click() # Verify cycle is now unpaid