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 A | Spalte B | Spalte C | Spalte D | ... |
|---|---|---|---|---|
internal_number | product oder regular_product | Kundengruppen-Name oder /api_v2/customer_group/123 | Weitere Kundengruppen... |
Erforderliche Spalten
🔑 Pflicht-Spalten:
internal_number- Die Artikelnummer des Produkts- Mindestens eine Preisspalte (entweder Produktpreis oder Kundengruppen-Preis)
⚙️ Optionale Spalten:
productoderregular_product- Standard-Produktpreis- Kundengruppen-Spalten - Name der Kundengruppe oder API-Pfad
Beispiel Import-Datei
| internal_number | product | Einzelhandel | Großhandel | VIP-Kunden |
|---|---|---|---|---|
| ART001 | 10.50 | 12.99 | 9.50 | 8.99 |
| ART002 | 5.25 | 4.75 | 4.50 | |
| ART003 | 15.00 | 13.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-Typ | Erkennung | Beschreibung |
|---|---|---|
| Artikelnummer | internal_number | Eindeutige Produkt-ID |
| Produktpreis | product oder regular_product | Standard-Verkaufspreis |
| Kundengruppe | Kundengruppen-Name oder /api_v2/... | Spezielle Preise pro Kundengruppe |
3. Preis-Verarbeitung
💰 Netto vs. Brutto:
price_type = "price_gross"→ Ihre Eingabe wird als Brutto-Preis interpretiertprice_type = "price_net"→ Ihre Eingabe wird als Netto-Preis interpretiert- Automatische MwSt-Berechnung basierend auf dem Steuersatz des jeweiligen Produkts
🔄 Wie Preise aktualisiert werden:
| Situation | Aktion | Ergebnis |
|---|---|---|
| Neuer Preis | Zelle enthält Preis, war vorher leer | Kundengruppen-Preis wird erstellt |
| Preis ändern | Zelle enthält anderen Preis als bisher | Bestehender Preis wird aktualisiert |
| Preis löschen | Zelle ist leer, hatte vorher einen Preis | Kundengruppen-Preis wird gelöscht → Standard-Preis greift |
| Kein Eintrag | Zelle war und bleibt leer | Keine Änderung |
🎯 Verschiedene Szenarien
Szenario 1: Standard-Produktpreis Update
| internal_number | product |
|---|---|
| ART001 | 12.99 |
→ Ergebnis: Produkt ART001 erhält neuen Standard-Preis 12,99€
Szenario 2: Kundengruppen-spezifische Preise
| internal_number | Einzelhandel | Großhandel |
|---|---|---|
| ART001 | 15.00 | 10.00 |
→ Ergebnis: ART001 hat verschiedene Preise je Kundengruppe
Szenario 3: Kombinierter Update
| internal_number | product | VIP-Kunden |
|---|---|---|
| ART001 | 12.99 | 9.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
python
create_missing_customer_groups = True
→ Ergebnis: Unbekannte Kundengruppen werden automatisch angelegt
📅 Bestellungs-Aktualisierung
Parameter
python
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 (15 Minuten) kontrolliert ab
- Logging: Zeigt Preis-Unterschiede vor/nach Update
⚠️ Fehlerbehandlung
Häufige Fehler:
| Fehler | Ursache | Lösung |
|---|---|---|
| "Artikelnummer nicht gefunden" | Produkt existiert nicht in FrachtPilot | Produkt zuerst anlegen |
| "Kundengruppe nicht gefunden" | Kundengruppe existiert nicht | create_missing_customer_groups=true setzen |
| "Preis konnte nicht konvertiert werden" | Ungültiges Preis-Format | Zahlenformat prüfen (z.B. 12.99 statt 12,99) |
| "Spalte internal_number nicht gefunden" | Header-Zeile fehlerhaft | Erste Zeile muss internal_number enthalten |
🚀 Verwendung
Parameter bei Aufruf:
| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
file | Datei | Excel/CSV-Datei mit Preisen | Pflicht |
price_type | Text | "price_gross" oder "price_net" | "price_gross" |
sheet_name | Text | Name des Excel-Sheets | Automatisch |
create_missing_customer_groups | Checkbox | Unbekannte Kundengruppen automatisch erstellen | false |
update_from | Datum | Bestellungen ab diesem Datum aktualisieren | Keine |
update_to | Datum | Bestellungen bis zu diesem Datum aktualisieren | Keine |