Zum Hauptinhalt springen

Preis Import

📋 Übersicht

Diese Funktion muss ggf. durch das Team von FrachtPilot freigeschaltet werden. Die Funktion ermöglicht den spaltenbasierten Import von Produktpreisen für verschiedene Kundengruppen. Sie kann sowohl Standard-Produktpreise als auch kundengruppen-spezifische Preise aktualisieren und optional bestehende Bestellungen mit den neuen Preisen aktualisieren.

📁 Datei-Format

Excel/CSV Struktur

Die Import-Datei muss folgende Header-Zeile (Zeile 1) enthalten:

Spalte ASpalte BSpalte CSpalte D...
internal_numberproduct oder regular_productKundengruppen-Name oder /api_v2/customer_group/123Weitere Kundengruppen...

Erforderliche Spalten

🔑 Pflicht-Spalten:

  • internal_number - Die Artikelnummer des Produkts
  • Mindestens eine Preisspalte (entweder Produktpreis oder Kundengruppen-Preis)

⚙️ Optionale Spalten:

  • product oder regular_product - Standard-Produktpreis
  • Kundengruppen-Spalten - Name der Kundengruppe oder API-Pfad

Beispiel Import-Datei

internal_numberproductEinzelhandelGroßhandelVIP-Kunden
ART00110.5012.999.508.99
ART0025.254.754.50
ART00315.0013.50

⚡ Funktionsweise

1. Datei-Verarbeitung

  • Liest Excel/CSV-Datei (alle gängigen Formate unterstützt)
  • Erkennt automatisch Spalten-Typen aus der ersten Zeile
  • Konvertiert Preise automatisch (unterstützt Komma und Punkt als Dezimaltrennzeichen)

2. Spalten-Erkennung

Die Funktion analysiert die erste Zeile und identifiziert:

Spalten-TypErkennungBeschreibung
Artikelnummerinternal_numberEindeutige Produkt-ID
Produktpreisproduct oder regular_productStandard-Verkaufspreis
KundengruppeKundengruppen-Name oder /api_v2/...Spezielle Preise pro Kundengruppe

3. Preis-Verarbeitung

💰 Netto vs. Brutto:

  • price_type = "price_gross" → Ihre Eingabe wird als Brutto-Preis interpretiert
  • price_type = "price_net" → Ihre Eingabe wird als Netto-Preis interpretiert
  • Automatische MwSt-Berechnung basierend auf dem Steuersatz des jeweiligen Produkts

🔄 Wie Preise aktualisiert werden:

SituationAktionErgebnis
Neuer PreisZelle enthält Preis, war vorher leerKundengruppen-Preis wird erstellt
Preis ändernZelle enthält anderen Preis als bisherBestehender Preis wird aktualisiert
Preis löschenZelle ist leer, hatte vorher einen PreisKundengruppen-Preis wird gelöscht → Standard-Preis greift
Kein EintragZelle war und bleibt leerKeine Änderung

🎯 Verschiedene Szenarien

Szenario 1: Standard-Produktpreis Update

internal_numberproduct
ART00112.99

Ergebnis: Produkt ART001 erhält neuen Standard-Preis 12,99€

Szenario 2: Kundengruppen-spezifische Preise

Kundengruppen Produkt Preis Import - Spaltenbasiert

📋 Übersicht

Diese Funktion ermöglicht den spaltenbasierten Import von Produktpreisen für verschiedene Kundengruppen. Sie kann sowohl Standard-Produktpreise als auch kundengruppen-spezifische Preise aktualisieren und optional bestehende Bestellungen mit den neuen Preisen aktualisieren.

📁 Datei-Format

Excel/CSV Struktur

Die Import-Datei muss folgende Header-Zeile (Zeile 1) enthalten:

Spalte ASpalte BSpalte CSpalte D...
internal_numberproduct oder regular_productKundengruppen-Name oder /api_v2/customer_group/123Weitere Kundengruppen...

Erforderliche Spalten

🔑 Pflicht-Spalten:

  • internal_number - Die Artikelnummer des Produkts
  • Mindestens eine Preisspalte (entweder Produktpreis oder Kundengruppen-Preis)

⚙️ Optionale Spalten:

  • product oder regular_product - Standard-Produktpreis
  • Kundengruppen-Spalten - Name der Kundengruppe oder API-Pfad

Beispiel Import-Datei

internal_numberproductEinzelhandelGroßhandelVIP-Kunden
ART00110.5012.999.508.99
ART0025.254.754.50
ART00315.0013.50

⚡ Funktionsweise

1. Datei-Verarbeitung

  • Liest Excel/CSV-Datei (alle gängigen Formate unterstützt)
  • Erkennt automatisch Spalten-Typen aus der ersten Zeile
  • Konvertiert Preise automatisch (unterstützt Komma und Punkt als Dezimaltrennzeichen)

2. Spalten-Erkennung

Die Funktion analysiert die erste Zeile und identifiziert:

Spalten-TypErkennungBeschreibung
Artikelnummerinternal_numberEindeutige Produkt-ID
Produktpreisproduct oder regular_productStandard-Verkaufspreis
KundengruppeKundengruppen-Name oder /api_v2/...Spezielle Preise pro Kundengruppe

3. Preis-Verarbeitung

💰 Netto vs. Brutto:

  • price_type = "price_gross" → Ihre Eingabe wird als Brutto-Preis interpretiert
  • price_type = "price_net" → Ihre Eingabe wird als Netto-Preis interpretiert
  • Automatische MwSt-Berechnung basierend auf dem Steuersatz des jeweiligen Produkts

🔄 Wie Preise aktualisiert werden:

SituationAktionErgebnis
Neuer PreisZelle enthält Preis, war vorher leerKundengruppen-Preis wird erstellt
Preis ändernZelle enthält anderen Preis als bisherBestehender Preis wird aktualisiert
Preis löschenZelle ist leer, hatte vorher einen PreisKundengruppen-Preis wird gelöscht → Standard-Preis greift
Kein EintragZelle war und bleibt leerKeine Änderung

🎯 Verschiedene Szenarien

Szenario 1: Standard-Produktpreis Update

internal_numberproduct
ART00112.99

Ergebnis: Produkt ART001 erhält neuen Standard-Preis 12,99€

Szenario 2: Kundengruppen-spezifische Preise

internal_numberEinzelhandelGroßhandel
ART00115.0010.00

Ergebnis: ART001 hat verschiedene Preise je Kundengruppe

Szenario 3: Kombinierter Update

internal_numberproductVIP-Kunden
ART00112.999.99

Ergebnis: Standard-Preis UND VIP-Preis werden aktualisiert

Szenario 4: Preis löschen

internal_numberGroßhandel
ART001

Ergebnis: Großhandel-Preis wird gelöscht, Standard-Preis greift

Szenario 5: Kundengruppe automatisch erstellen

create_missing_customer_groups = True

Ergebnis: Unbekannte Kundengruppen werden automatisch angelegt

📅 Bestellungs-Aktualisierung

Parameter

update_from = '2025-01-01'    # Ab diesem Datum
update_to = '2025-12-31' # Bis zu diesem Datum (optional)

Verhalten

  • Nur offene Bestellungen werden aktualisiert
  • Ausgeschlossen: Stornierte, vorläufig oder final berechnete Bestellungen
  • Timeout-Schutz: Bricht bei Zeitlimit-Überschreitung kontrolliert ab
  • Logging: Zeigt Preis-Unterschiede vor/nach Update

⚠️ Fehlerbehandlung

Häufige Fehler:

FehlerUrsacheLösung
"Artikelnummer nicht gefunden"Produkt existiert nicht in FrachtPilotProdukt zuerst anlegen
"Kundengruppe nicht gefunden"Kundengruppe existiert nichtcreate_missing_customer_groups=true setzen
"Preis konnte nicht konvertiert werden"Ungültiges Preis-FormatZahlenformat prüfen (z.B. 12.99 statt 12,99)
"Spalte internal_number nicht gefunden"Header-Zeile fehlerhaftErste Zeile muss internal_number enthalten

Logging-Level:

  • 🔵 Info: Normale Preis-Updates
  • 🟡 Warn: Gelöschte Preise, Zeitlimit-Warnungen
  • 🔴 Error: Produkte/Kundengruppen nicht gefunden

🚀 Verwendung

Parameter bei Aufruf:

ParameterTypBeschreibungStandard
fileDateiExcel/CSV-Datei mit PreisenPflicht
price_typeText"price_gross" oder "price_net""price_gross"
sheet_nameTextName des Excel-SheetsAutomatisch
create_missing_customer_groupsCheckboxUnbekannte Kundengruppen automatisch erstellenfalse
update_fromDatumBestellungen ab diesem Datum aktualisierenKeine
update_toDatumBestellungen bis zu diesem Datum aktualisierenKeine
internal_numberEinzelhandelGroßhandel
------------------------------------------ -
ART00115.0010.00

Ergebnis: ART001 hat verschiedene Preise je Kundengruppe

Szenario 3: Kombinierter Update

internal_numberproductVIP-Kunden
ART00112.999.99

Ergebnis: Standard-Preis UND VIP-Preis werden aktualisiert

Szenario 4: Preis löschen

| internal_number | Großhandel | | – --------------|------------| | ART001 | |

Ergebnis: Großhandel-Preis wird gelöscht, Standard-Preis greift

Szenario 5: Kundengruppe automatisch erstellen

create_missing_customer_groups = True

Ergebnis: Unbekannte Kundengruppen werden automatisch angelegt

📅 Bestellungs-Aktualisierung

Parameter

update_from = '2025-01-01'    # Ab diesem Datum
update_to = '2025-12-31' # Bis zu diesem Datum (optional)

Verhalten

  • Nur offene Bestellungen werden aktualisiert
  • Ausgeschlossen: Stornierte, vorläufig oder final berechnete Bestellungen
  • Timeout-Schutz: Bricht bei Zeitlimit-Überschreitung kontrolliert ab
  • Logging: Zeigt Preis-Unterschiede vor/nach Update

⚠️ Fehlerbehandlung

Häufige Fehler:

FehlerUrsacheLösung
"Artikelnummer nicht gefunden"Produkt existiert nicht in FrachtPilotProdukt zuerst anlegen
"Kundengruppe nicht gefunden"Kundengruppe existiert nichtcreate_missing_customer_groups=true setzen
"Preis konnte nicht konvertiert werden"Ungültiges Preis-FormatZahlenformat prüfen (z.B. 12.99 statt 12,99)
"Spalte internal_number nicht gefunden"Header-Zeile fehlerhaftErste Zeile muss internal_number enthalten

Logging-Level:

  • 🔵 Info: Normale Preis-Updates
  • 🟡 Warn: Gelöschte Preise, Zeitlimit-Warnungen
  • 🔴 Error: Produkte/Kundengruppen nicht gefunden

🚀 Verwendung

Parameter bei Aufruf:

ParameterTypBeschreibungStandard
fileDateiExcel/CSV-Datei mit PreisenPflicht
price_typeText"price_gross" oder "price_net""price_gross"
sheet_nameTextName des Excel-SheetsAutomatisch
create_missing_customer_groupsCheckboxUnbekannte Kundengruppen automatisch erstellenfalse
update_fromDatumBestellungen ab diesem Datum aktualisierenKeine
update_toDatumBestellungen bis zu diesem Datum aktualisierenKeine