Shop Projekt - Dokumentation
Shop LDM
Teil 07: Versand & Kostenberechnung
Dieses Modul regelt Versand, Gebühren, Zonen und internationale Abwicklungen.
Es bildet die Grundlage, um Transportkosten, Zölle und Gebühren automatisch zu berechnen und dynamisch auf Basis von Ländern, Tarifen und Währungen anzuwenden.
Die Basiswährung wird im Code unter config definiert.
- Country: Stammdaten aller Länder inkl. ISO-Codes.
- Shipping_zone & tb_s_zone_country: Gruppierung von Ländern zu Versandzonen.
- Customs_zone & tb_c_zone_country: Definition von Zollbereichen.
- Currency_rate: Wechselkurse zur Referenzwährung.
- Customs_rule: Zollregeln mit Freigrenzen und Steuersätzen.
- Carrier: Versanddienstleister mit Herkunftsland.
- Shipping_tariff: Versandarten mit Limits und Preisen.
- Shipping_extra: Zusatzoptionen (Express, Versicherung).
- Fees: Shop-interne Gebühren.
Dieses Modul sorgt für transparente, dynamische und internationale Versandkostenberechnung und kann weltweit eingesetzt werden.
Country (Länder)
Felder:
- cun_ID (PK)
- cun_name VARCHAR(100)
- cun_international_name VARCHAR(150)
- cun_abbrev VARCHAR(10) -- Abkürzung
- cun_iso2 CHAR(2) -- ISO 3166-1 Alpha-2 (z.B. 'CH')
- cun_iso3 CHAR(3) -- ISO 3166-1 Alpha-3 (z.B. 'CHE')
Hinweis: Erstelle ein Frendschlüssel in address aus 02 user und in Set aus teil 04 Product.Shipping_zone (Versandzonen)
Felder:
- siz_ID (PK)
- siz_name VARCHAR(100) -- Zonenname (z.B. 'EU', 'Weltweit')
- siz_type CHAR(1) -- Typ: R=Region, C=CountryGroupCustoms_zone (Zollzonen)
Felder:
- cuz_ID (PK)
- cuz_name VARCHAR(100) -- Zonenname
- cuz_type CHAR(1) -- Typ: N=National, I=InternationalS_zone_country (Verknüpfung)
Felder:
- cun_ID (PK → country)
- siz_ID (PK → shipping_zone)C_zone_country (Verknüpfung)
Felder:
- cun_ID (PK → country)
- cuz_ID (PK → customs_zone)Carrier (Versanddienstleister)
Zweck: Enthält Versanddienstleister und deren Vertriebsländer.
Felder:
- car_ID (PK)
- cun_ID (FK → country) -- Vertriebsländer
- car_name VARCHAR(100) -- Name (z.B. 'DHL Schweiz', 'FedEx')Currency_rate (Wechselkurse)
Zweck: Enthält Wechselkurse zur Referenzwährung.
Felder:
- cur_ID (PK)
- cur_code CHAR(3) -- ISO-Code (CHF, EUR, USD)
- cur_rate DECIMAL(12,6) -- Relativer Kurs (z.B. 1 EUR = 0.95 CHF)
- cur_valid_from DATETIME -- Gültig ab
- cur_valid_to DATETIME NULL -- Gültig bis
Hinweis: API-Update möglich, Shop-Referenzwährung als Basis.Customs_rule (Zollregeln)
Zweck: Definiert Zollregeln für Zollzonen (als Information für Kunden oder vorab geregelte Zollgebühren).
Felder:
- cus_ID (PK)
- cuz_ID (FK → customs_zone)
- cus_threshold DECIMAL(12,2) -- Freigrenze für Abgaben
- cus_tax_rate DECIMAL(5,2) -- MwSt./Umsatzsteuer %
- cus_duty_rate DECIMAL(5,2) -- Zollsatz %
- cus_valid_from DATETIME -- Gültig ab
- cus_valid_to DATETIME NULL -- Gültig bisShipping_tariff (Versandtarife)
Zweck: Enthält Versandtarife mit Gewicht-/Größenlimits und Preisen.
Felder:
- sip_ID (PK)
- siz_ID (FK → shipping_zone) -- Zielgebiet
- car_ID (FK → carrier)
- sip_name VARCHAR(100) -- Name (z.B. 'Brief Inland 100g')
- sip_valid_from DATETIME -- Gültig ab
- sip_valid_to DATETIME NULL -- Gültig bis
- sip_max_weight DECIMAL(12) -- Maximalgewicht in g
- sip_max_length DECIMAL(12) -- Maximallänge in mm
- sip_max_width DECIMAL(12) -- Maximalbreite in mm
- sip_max_height DECIMAL(12) -- Maximalhöhe in mm
- sip_price DECIMAL(12,2) -- Preis lokale Währung
- sip_currency CHAR(3) -- ISO Währungscode
Hinweis: Beim Versand wird automatisch der kleinste passende Tarif gewählt.
Hinweis: Erstelle einen Fremdschlüssel in purchase aus 06 purchase.Shipping_extra (Zusatzoptionen)
Zweck: Enthält Zusatzoptionen für Versandtarife (carrier- und tarifgebunden).
Felder:
- six_ID (PK)
- car_ID (FK → carrier)
- sip_ID (FK → shipping_tariff)
- six_name VARCHAR(100) -- Name (z.B. 'Express', 'Versicherung')
- six_price DECIMAL(12,2) -- Zusatzpreis
- six_currency CHAR(3) -- ISO Währungscode
- six_valid_from DATETIME -- Gültig ab
- six_valid_to DATETIME NULL -- Gültig bisFees (Shop-Gebühren)
Zweck: Enthält shop-interne Gebühren, unabhängig von Versandkosten (nur auf Waren berechnet).
Felder:
- fes_ID (PK)
- fes_name VARCHAR(100) -- Gebührenname
- fes_threshold DECIMAL(12,2) -- Mindestwert, ab dem die Gebühr greift
- fes_percentage DECIMAL(5,2) -- Prozentsatz (z.B. 2.00 = 2%)
- fes_valid_from DATETIME -- Gültig ab
- fes_valid_to DATETIME NULL -- Gültig bis
Hinweis: Fremdschlüssel muss in purchase aus 06 purchase gesetzt werden.