feat(import): confirm column mapping in a preview before importing members

This commit is contained in:
Moritz 2026-06-03 02:25:50 +02:00
parent a93dd9d535
commit 68a1a9530a
8 changed files with 816 additions and 38 deletions

View file

@ -390,6 +390,7 @@ msgstr "Kann jederzeit geändert werden. Änderungen des Betrags betreffen nur z
#: lib/mv_web/live/custom_field_live/form_component.ex
#: lib/mv_web/live/custom_field_live/index_component.ex
#: lib/mv_web/live/group_live/show.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_field_live/form_component.ex
#: lib/mv_web/live/member_live/form.ex
#: lib/mv_web/live/member_live/show.ex
@ -1329,6 +1330,7 @@ msgstr "Feb."
msgid "Fee Type"
msgstr "Beitragsart"
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/statistics_live.ex
#, elixir-autogen, elixir-format
msgid "Fee type"
@ -1488,6 +1490,7 @@ msgstr "Gruppe erfolgreich gespeichert."
#: lib/mv_web/components/layouts/sidebar.ex
#: lib/mv_web/live/components/member_filter_component.ex
#: lib/mv_web/live/group_live/index.ex
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/member_live/index.html.heex
#: lib/mv_web/live/member_live/show.ex
#: lib/mv_web/translations/member_fields.ex
@ -2643,6 +2646,7 @@ msgstr "Geprüft von"
msgid "Reviewed at"
msgstr "Geprüft am"
#: lib/mv_web/live/import_live/components.ex
#: lib/mv_web/live/role_live/form.ex
#: lib/mv_web/live/user_live/form.ex
#: lib/mv_web/live/user_live/index.html.heex
@ -3303,11 +3307,6 @@ msgstr "Aufhebung der Verknüpfung geplant"
msgid "Unpaid"
msgstr "Unbezahlt"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored. Groups and membership fees are not supported for import."
msgstr "Verwende die Namen der Datenfelder als Spaltennamen in der CSV-Datei. Datenfelder müssen in Mila bereits angelegt sein, da unbekannte Spaltennamen ignoriert werden. Gruppen und Beitragsstatus können nicht importiert werden."
#: lib/mv_web/live/user_live/form.ex
#, elixir-autogen, elixir-format
msgid "User"
@ -3977,3 +3976,103 @@ msgstr "Beitragsart '%{name}' nicht gefunden; Standard-Beitragsart wird verwende
#, elixir-autogen, elixir-format
msgid "Group assignment failed: %{reason}"
msgstr "Gruppenzuordnung fehlgeschlagen: %{reason}"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Confirm and Import"
msgstr "Bestätigen und importieren"
#: lib/mv_web/live/import_live.ex
#, elixir-autogen, elixir-format
msgid "No prepared import to confirm. Please upload again."
msgstr "Kein vorbereiteter Import zum Bestätigen. Bitte erneut hochladen."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Preview import"
msgstr "Importvorschau"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Column"
msgstr "Spalte"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Custom field"
msgstr "Benutzerdefiniertes Feld"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Ignored (system-computed field)"
msgstr "Ignoriert (vom System berechnetes Feld)"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Member field"
msgstr "Mitgliedsfeld"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Rows with an empty fee type will get the default fee type."
msgstr "Zeilen ohne Beitragsart erhalten die Standard-Beitragsart."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "These groups will be created automatically: %{names}"
msgstr "Diese Gruppen werden automatisch erstellt: %{names}"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown (ignored)"
msgstr "Unbekannt (ignoriert)"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Unknown fee types (members get the default): %{names}"
msgstr "Unbekannte Beitragsarten (Mitglieder erhalten den Standard): %{names}"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee status columns (Membership Fee Status, Bezahlstatus, Mitgliedsbeitragsstatus) are always ignored and cannot be imported."
msgstr "Beitragsstatus-Spalten (Membership Fee Status, Bezahlstatus, Mitgliedsbeitragsstatus) werden immer ignoriert und können nicht importiert werden."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Groups column (recognized headers): Groups, Gruppen, Gruppe. Comma-separated group names are supported and missing groups are created automatically."
msgstr "Gruppen-Spalte (erkannte Spaltennamen): Groups, Gruppen, Gruppe. Mehrere durch Komma getrennte Gruppennamen werden unterstützt; fehlende Gruppen werden automatisch erstellt."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Use the data field name as the CSV column header in your file. Data fields must exist in Mila before importing, because unknown data field columns will be ignored."
msgstr "Verwende die Namen der Datenfelder als Spaltennamen in der CSV-Datei. Datenfelder müssen in Mila bereits angelegt sein, da unbekannte Spaltennamen ignoriert werden."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Fee type column (recognized headers): Fee Type, fee type, fee_type, membership_fee_type, Beitragsart. Unknown fee types fall back to the default."
msgstr "Beitragsart-Spalte (erkannte Spaltennamen): Fee Type, fee type, fee_type, membership_fee_type, Beitragsart. Unbekannte Beitragsarten erhalten die Standard-Beitragsart."
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create custom field"
msgstr "Datenfeld erstellen"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Create fee type"
msgstr "Beitragsart erstellen"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 1"
msgstr "Zeile 1"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 2"
msgstr "Zeile 2"
#: lib/mv_web/live/import_live/components.ex
#, elixir-autogen, elixir-format
msgid "Row 3"
msgstr "Zeile 3"