{% extends "base.html" %} {% block title %}Daten-Import{% endblock %} {% block heading %}Daten-Import (CSV){% endblock %} {% block content %} {% if not result %}

Kunden importieren

CSV mit Kopfzeile
Spalten: Name, PLZ, Stadt, Land, USt-IdNr, E-Mail …

Artikel importieren

CSV mit Kopfzeile
Spalten: Artikel-Nr, Bezeichnung, Typ, Bestand, Preis, Einheit …

Lieferanten importieren

CSV mit Kopfzeile
Spalten: Name, Adresse, PLZ, Stadt, Land, E-Mail, Telefon, Kategorie …

Hinweise zum CSV-Format

Trennzeichen: automatisch erkannt (;, ,, Tab, |).

Encoding: UTF-8 oder Windows-1252 (Excel-Default) — wird automatisch erkannt.

Kunden — bekannte Spaltennamen:
Name · Firma · Code · Kunden-Nr · Adresse · Straße · PLZ · Stadt · Ort · Land · Country_iso · USt-IdNr · VAT_ID · E-Mail · Telefon · Ansprechpartner · Zahlungsziel · Notiz

Artikel — bekannte Spaltennamen:
SKU · Artikel-Nr · Ident · Bezeichnung · Beschreibung · Typ (Werkzeug/Messmittel/Spannmittel/Material/...) · Bestand · Mindestbestand · Einzelpreis · Einheit

Duplikat-Erkennung:
Kunden: USt-IdNr → E-Mail → Kunden-Code (in dieser Reihenfolge)
Artikel: Artikel-Nr (eindeutig)

Empfehlung: zuerst „Vorschau" zum Mapping-Check, dann „Direkt importieren".

{% endif %} {% if result %}

Import-Ergebnis · {{ kind|capitalize }}

{% if filename %}

{{ filename }} {% if result.dry_run %}Vorschau{% else %}Import durchgeführt{% endif %}

{% endif %}
{% if not result.ok %}

Import abgebrochen

{{ result.error }}

{% if result.headers %}

Gefundene Spalten: {{ result.headers|join(' · ') }}

{% endif %}
{% else %}

Zeilen gesamt

{{ result.total_rows }}

Neu

{{ result.created }}

Aktualisiert

{{ result.updated }}

Übersprungen

{{ result.skipped }}

Spalten-Mapping

{% for canonical, idx in result.matched.items() %} {{ result.headers[idx] }} → {{ canonical }} {% endfor %} {% for h in result.headers %} {% if h not in (result.matched.keys() | map('string') | list) %} {% set h_idx = loop.index0 %} {% if h_idx not in result.matched.values() %} {{ h }} → ignoriert {% endif %} {% endif %} {% endfor %}
{% if result.dry_run and result.preview %}

Vorschau (erste 20)

{% if kind == 'customers' %} {% elif kind == 'vendors' %} {% else %} {% endif %} {% for p in result.preview %} {% if kind == 'customers' %} {% elif kind == 'vendors' %} {% else %} {% endif %} {% endfor %}
ZeileNameLandUSt-IdNrStadtNameStadtE-MailKategorienArtikel-NrBezeichnungTypAktion
{{ p.row }}{{ p.name }} {{ p.country_iso }} {{ p.vat_id or '—' }} {{ p.city or '—' }}{{ p.name }} {{ p.city or '—' }} {{ p.email or '—' }} {{ p.vendor_types or '—' }}{{ p.ident }} {{ p.description }} {{ p.item_type }} {% if p.action == 'create' %}neu {% else %}aktualisieren{% endif %}
{% endif %} {% if result.errors %}

{{ result.errors|length }} Warnungen / Fehler

{% for e in result.errors %}

{{ e }}

{% endfor %}
{% endif %} {% endif %}
← Zurück {% if result.ok and result.dry_run and result.created + result.updated > 0 %}

Vorschau-Datei nochmal anhängen + bestätigen:

{% else %} → Zur Liste {% endif %}
{% endif %} {% endblock %}