Preisberechnung Gold Silber | Artikelpreise folgen automatisch dem Rohstoffkurs
Preisberechnung aus Rohstoffkursen wie Gold und Silber: Ändert sich der Kurs, ändert sich dein Artikelpreis. Mit Formel, Aufschlägen, Rundung, Kursen je Kundentyp und Kurs-Feeds.
Verfügbarkeit
Das Plugin ist in Vorbereitung für den Shopware Community Store. Preise und Download-Link stehen mit der Freigabe hier.
Auf einen Blick
- Ändert sich der Kurs, ändert sich der Preis. Ohne Handarbeit am Artikel
- Kurs-Feeds holen die Kurse bei deinem Anbieter ab, kein Abtippen mehr
- Kunden sehen den aktuellen Preis, auch wenn die Seite aus dem Cache kommt
- Aufschläge, Mindest- und Höchstpreis sichern deine Marge bei jedem Kurs
- Händler und Endkunden bekommen eigene Kurse, getrennt nach Kundengruppe
Der Goldkurs bewegt sich mehrmals am Tag. Dein Shop zeigt trotzdem den Preis, den jemand am Morgen von Hand eingetragen hat. Steigt der Kurs, verkaufst du unter Wert. Fällt er, kauft der Kunde woanders.
Das Problem
Wer Münzen, Barren oder Schmuck verkauft, pflegt Preise im Akkord. Jeder Artikel braucht nach jeder Kursbewegung einen neuen Preis, Händler wollen andere Konditionen als Endkunden, und am Ende soll noch ein glatter Betrag dastehen. Das kostet jeden Tag Zeit. Und ein vergessener Artikel kostet Marge.
Die Lösung
Du trägst den Kurs einmal je Rohstoff ein, oder ein Kurs-Feed holt ihn bei deinem Anbieter ab. Jeder Artikel weiß, welcher Rohstoff in ihm steckt und wie viele Einheiten davon. Das Plugin rechnet daraus den Preis, legt deine Aufschläge drauf, rundet und zeigt das Ergebnis im Shop. Der Warenkorb rechnet mit demselben aktuellen Kurs weiter.
Was du davon hast
Ein Kurs, alle Preise. Du änderst den Goldkurs an einer Stelle, und jeder Goldartikel rechnet damit. Kein Artikel muss mehr einzeln angefasst werden.
Kurse kommen von selbst. Ein Kurs-Feed holt sie zeitgesteuert bei deinem Anbieter ab. Vorher zeigt dir die Vorschau, welche Kurse er aktualisieren, neu anlegen oder verwerfen würde.
Deine Marge ist eingebaut. Je erweitertem Preis legst du einen prozentualen und einen festen Aufschlag fest, dazu Mindest- und Höchstpreis. Fällt der Kurs ins Bodenlose, greift der Mindestpreis.
Kunden sehen den Preis von jetzt. Produktseite, Listings und Slider laden den Preis beim Aufruf frisch nach. Die Seite selbst darf im Cache liegen. Klappt das Nachladen nicht, steht dort ein Hinweis statt eines veralteten Preises.
Händler bekommen Händlerkurse. Kundentypen tragen eigene Kurse, du ordnest sie deinen Kundengruppen zu. Hat ein Kundentyp für einen Rohstoff keinen eigenen Kurs, gilt der Kurs des Kundentyps Default.
Glatte Preise statt 1.873,27 €. Rundungsregeln arbeiten mit Bruttopreis-Schwellen: bis 50 € auf 5 Cent, darüber auf 50 Cent, über 1.000 € auf volle Euro. Kundengruppen, die exakt rechnen wollen, nimmst du von der Rundung aus.
So arbeitet das Plugin
Unter Kataloge › Rohstoffberechnung › Kursdaten legst du je Rohstoff den aktuellen Marktkurs an. Kommt dein Kurs in US-Dollar, wählst du US-Dollar als Währung des Kurses. Das Plugin rechnet dann über den Währungsfaktor um, den du in Shopware für US-Dollar pflegst.
Am Artikel schaltest du in den Zusatzfeldern die Berechnung ein, wählst den Rohstoff und trägst die Anzahl an Einheiten ein, zum Beispiel 31,1 für eine Unze in Gramm.
Formel und Aufschläge hängen an einem erweiterten Preis mit einer Regel, die auf Positionen vom Typ „Rohstoffberechnung“ prüft. Dort hinterlegst du die Formel mit den Variablen x (Kurs), y (Währungsfaktor) und b (Einheiten), dazu Aufschläge, Mindest- und Höchstpreis. Ohne eigene Formel gilt Kurs mal Einheiten. Für Artikel mit dem Steuersatz, den du als Differenzbesteuerung kennzeichnest, bekommen die Aufschläge einen eigenen Steuersatz.
Kurs-Feeds legst du unter Kataloge › Rohstoffberechnung › Kurs-Feeds an, einen je Anbieter. Ein Feed liest CSV, XML oder JSON, auch gzip-komprimiert, über https, http oder SFTP oder aus einer hochgeladenen Datei. Code, Kurs und Währung ordnest du einmal zu, samt Umrechnung, etwa von der Feinunze auf Gramm. Jeder Lauf landet im Laufprotokoll, mit dem Grund für jeden verworfenen Kurs.
Im Warenkorb rechnet das Plugin bei jeder Neuberechnung mit dem aktuellen Kurs. In der Bestellung landet eine ganz normale Produktposition.
Für Sortierung, Filter und Exporte speichert der Konsolenbefehl resourcecalc:cron die berechneten Preise in der Datenbank. Wie oft er läuft, legst du per Cronjob auf deinem Server fest.
Typische Einsatzszenarien
Edelmetallhandel. Du verkaufst Krügerrand, Maple Leaf und Barren in Gold und Silber. Ein Kurs-Feed holt die Kurse stündlich bei deinem Anbieter ab, und alle Preise im Shop ziehen mit. Händler mit Gewerbeschein bekommen über ihren Kundentyp einen eigenen Kurs.
Schmuck nach Goldgewicht. Der Ring enthält 2,5 Gramm Feingold. Der Goldanteil folgt dem Kurs, die Verarbeitung steckt als fester Aufschlag im Preis. Ein Mindestpreis verhindert, dass ein Kurssturz deine Arbeit entwertet.
Kabel und Metallwaren. Der Kupferanteil macht bei Kabeln einen großen Teil des Preises aus. Mit Kupfer als Rohstoff und der Kupfermenge je Meter als Einheiten passt sich der Preis an, ohne dass du Preislisten nachziehst.
Kurswidget auf der Startseite. Mit dem Erlebniswelten-Element „Rohstoff-Widget“ zeigst du deinen Kunden die aktuellen Kurse in Reitern je Währung. Das Widget lädt sie im eingestellten Intervall in Minuten neu.
Technische Fakten für deine IT
- Shopware 6.7.7 oder höher, PHP 8.2 oder höher.
- Vier eigene Tabellen für Kursdaten, Kundentypen, Kurs-Feeds und deren Läufe. Dazu Zusatzfelder an Artikel, erweitertem Preis und Kundengruppe. Die Originaltabellen bleiben im Aufbau unverändert.
- Externe Abrufe nur mit Kurs-Feeds und erst, wenn du sie in der Plugin-Konfiguration erlaubst, ab Werk sind sie aus. Dein Anbieter erfährt dann die IP-Adresse deines Servers und bekommt die hinterlegten Zugangsdaten. Sonst sendet das Plugin keine Daten an externe Server.
- Zugangsdaten liegen verschlüsselt in der Datenbank (Schlüssel aus dem APP_SECRET). Das Plugin sendet sie nur über https oder SFTP, bei SFTP nur mit passendem Fingerabdruck des Host-Schlüssels. Adressen aus internen Netzen bleiben gesperrt, bis du sie freigibst.
- Kurs-Feeds laufen im Hintergrund, nie beim Seitenaufruf: über den Worker von Shopware ab 5 Minuten oder einen System-Cronjob mit resourcecalc:feed:import —due ab 1 Minute. Höchstens 10.000 Kurse je Lauf.
- Bei Installation und Update führt Shopware für das Plugin Composer aus, um eine Formel-Bibliothek und eine SFTP-Bibliothek zu laden. Dein Server braucht dafür Composer und Zugriff auf Packagist.
- Keine personenbezogenen Daten. Lässt sich eine Formel nicht auswerten, rechnet das Plugin mit Kurs mal Einheiten und schreibt die Formel in eine eigene Logdatei unter var/log, ebenso je Feed-Lauf eine Zusammenfassung, Zugangsdaten nie. Laufprotokolle bewahrt es je nach Einstellung 1 bis 180 Tage auf.
- Die Preisbereiche lädt die Storefront per AJAX nach, ein Listing oder Slider braucht dafür eine einzige Anfrage. Die übrige Seite bleibt im HTTP-Cache. Die Preisanzeige braucht JavaScript im Browser.
- resourcecalc:cron arbeitet in Stapeln zu 250 Artikeln und rechnet aus Sicht des ersten aktiven Storefront-Verkaufskanals mit eingeschaltetem Plugin. Er ersetzt den gespeicherten Preis vollständig, ein gepflegter Streichpreis geht dabei verloren.
- Eigene Berechtigungen für Kursdaten, Kundentypen und Kurs-Feeds, vergeben über die Rollen unter Benutzer & Rechte. Abrufen und Zugangsdaten verwalten sind eigene Rechte.
- Für Entwickler: Das Event ResourceCalcFinalPriceEvent erlaubt eigene Beträge nach Rundung, Mindest- und Höchstpreis.
- Deinstallation ohne Daten behalten: Das Plugin löscht seine Tabellen, die hochgeladenen Feed-Dateien und seine Zusatzfelder. Die Artikel behalten den zuletzt gespeicherten Preis.
Ehrlich gesagt
Das Plugin bringt keinen eigenen Kursdienst mit und keine fertige Vorlage für irgendeinen Kursanbieter: Den Anbieter wählst du selbst, seine Datei ordnest du einmal zu. FTP und FTPS beherrscht der Kurs-Feed nicht. Den Ankauf, bei dem Kunden dir Edelmetall verkaufen, deckt dieses Plugin nicht ab. Probier es in einem Testshop mit zwei, drei Artikeln aus, dann siehst du schnell, ob die Rechnung zu deinem Sortiment passt.
Häufige Fragen
Woher kommen die Kurse?
Von dir oder deinem Kursanbieter. Das Plugin hat keinen eingebauten Kursdienst. Du pflegst die Kurse unter Kataloge › Rohstoffberechnung › Kursdaten, holst sie mit einem Kurs-Feed bei deinem Anbieter ab oder schreibst sie über die Admin-API von Shopware, zum Beispiel aus deiner Warenwirtschaft.
Mit welchen Kursanbietern funktioniert der Kurs-Feed?
Mit Anbietern, die ihre Kurse als CSV-, XML- oder JSON-Datei über https, http oder SFTP bereitstellen und eine der angebotenen Anmeldearten nutzen. Fertige Vorlagen für einzelne Anbieter bringt das Plugin nicht mit: Wo Code, Kurs und Währung stehen, legst du je Feed einmal fest, und die Vorschau zeigt dir vor dem ersten Lauf, was ankommen würde. FTP und FTPS beherrscht der Kurs-Feed nicht, dann bleibt der Datei-Upload.
Wie oft aktualisieren sich die Preise im Shop?
Die Anzeige rechnet bei jedem Aufruf mit dem Kurs, der gerade in der Datenbank steht. Die gespeicherten Preise für Sortierung, Filter und Exporte ändern sich erst, wenn der Befehl resourcecalc:cron läuft, auch nach einem Feed-Import. Den Zeitplan dafür legst du per Cronjob auf deinem Server fest, für die Preise bringt das Plugin keine eigene geplante Aufgabe mit.
Was zahlt der Kunde, wenn sich der Kurs während des Einkaufs ändert?
Den Preis der letzten Warenkorb-Berechnung. Der Warenkorb rechnet bei jeder Neuberechnung mit dem dann gültigen Kurs. Auf der Bestellbestätigung kann deshalb ein anderer Preis stehen als vorhin auf der Produktseite.
Funktioniert das mit meinem Theme?
Mit der Standard-Storefront von Shopware 6.7 ja. Das Plugin erweitert die Bereiche für Preis und Kaufen-Button und reicht alles Übrige an das Theme weiter. Themes, die genau diese Bereiche komplett neu bauen, können eine Anpassung brauchen. Prüfe das am besten in einem Testshop.
Kann ich das Plugin nur in einem Verkaufskanal nutzen?
Ja. Der Schalter „Plugin für diesen Verkaufskanal aktivieren“ und die Einstellungen der Preisberechnung gelten je Verkaufskanal. Die Karte „Kurs-Feeds“ gilt dagegen für den ganzen Shop, denn Kurse hängen an keinem Verkaufskanal. Der Befehl resourcecalc:cron speichert die Preise aus Sicht des ersten aktiven Storefront-Verkaufskanals, in dem das Plugin eingeschaltet ist.
Was passiert bei der Deinstallation mit meinen Daten?
Behältst du die Daten, bleibt alles erhalten. Löschst du sie, entfernt das Plugin seine Tabellen für Kursdaten, Kundentypen, Kurs-Feeds und deren Läufe, die hochgeladenen Feed-Dateien sowie seine Zusatzfelder. Die Artikel behalten den Preis, den resourcecalc:cron zuletzt gespeichert hat.
Werden Daten an externe Dienste übertragen?
Nur, wenn du Kurs-Feeds mit einer Adresse nutzt und den Abruf in der Plugin-Konfiguration erlaubst, ab Werk ist er ausgeschaltet. Dein Kursanbieter erfährt dann die IP-Adresse deines Servers und bekommt die Zugangsdaten, die du für ihn hinterlegt hast. Personenbezogene Daten speichert und sendet das Plugin nicht, Kurse und Einstellungen bleiben in deiner Shopware-Datenbank.
Bremst das Plugin meinen Shop?
Die Seite selbst lädt wie gewohnt aus dem Cache, nur der Preis kommt mit einer eigenen Anfrage hinterher. Ein Listing oder Slider holt alle Preise in einer einzigen Anfrage, Steuer- und Regelabfragen speichert das Plugin je Anfrage zwischen. Dein Kunde sieht deshalb kurz einen Ladeindikator, bevor der Preis erscheint.
Kann das Plugin auch Ankauf, also Edelmetall von Kunden zurückkaufen?
Nicht allein. Dieses Plugin berechnet Verkaufspreise. Den Ankauf deckt ein Ankauf-Plugin ab, das mit diesem Plugin zusammenarbeitet.
Features im Überblick
- Preisformel je erweitertem Preis mit x = Rohstoffkurs, y = Währungsfaktor, b = Anzahl an Einheiten
- Ohne eigene Formel gilt Kurs mal Einheiten; Kurse in jeder Währung deines Shops
- Aufschläge, Mindest-/Höchstpreis je erweitertem Preis; Kursaufschlag und Rückfallkurs je Rohstoff
- Rundungsregeln nach Bruttopreis-Schwellen, Kundengruppen ohne Rundung wählbar
- Kundentypen mit eigenen Kursen, Zuordnung je Kundengruppe, Rückfall auf den Kundentyp Default
- Differenzbesteuerung: Aufschläge mit eigenem oder festem Steuersatz
- Je Verkaufskanal aktivierbar und getrennt konfigurierbar
- Produktseite, Listings und Slider laden den Preis beim Aufruf nach, Suchvorschläge zeigen ihn mit
- Warenkorb rechnet mit dem aktuellen Kurs; Lagerbestand, Mindestabnahme und Staffelung gelten weiter
- Erlebniswelten-Element „Rohstoff-Widget“ mit Kursen je Währung und Aktualisierungsintervall
- Konsolenbefehl resourcecalc:cron speichert die Preise für Sortierung, Filter und Exporte
- Kurs-Feeds je Anbieter: CSV, XML oder JSON, auch gzip, per https, http, SFTP oder Datei-Upload
- Feed-Anmeldung von HTTP Basic bis OAuth 2.0, mTLS und SFTP-Schlüssel, Zugangsdaten verschlüsselt
- Feed-Zuordnung mit Umrechnung und Zeilenfilter, Vorschau, Probelauf, Zeitplan und Laufprotokoll
- Kursdaten, Kundentypen und Kurs-Feeds unter Kataloge › Rohstoffberechnung, mit eigenen Rechten
Brauchst du Hilfe bei der Installation?
Wir installieren, konfigurieren und pflegen das Plugin auch dauerhaft, als Teil unserer Shop-Betreuung. Damit es bei Updates nicht plötzlich Schwierigkeiten gibt.
Familie Rohstoffberechnung
-
Rohstoffberechnung Kursimport VWD | Kurse per Import statt Abtippen -
Rohstoffberechnung Kursimport StoneX | Kurse automatisch abrufen statt abtippen -
Rohstoffberechnung Kursimport Goldmarkt | Kurse nicht mehr von Hand eintragen -
Rohstoffberechnung Kursimport GoldFeed | Kurse automatisch importieren -
Rohstoffberechnung Zeitzuschlag | Zuschlag nach Tag und Uhrzeit ohne Umpreisen -
Rohstoffberechnung Versandsteuer bei Differenzbesteuerung | Steuer nach Anteil
Screenshots
Wie geht es jetzt weiter?
Such dir den passenden Weg aus.