Gambio Sonderangebote löschen

Zwar lassen sich Sonderangebote im Gambio-Admin mittels Mehrfachauswahl relativ schnell löschen. Auch lässt sich ein Ablaufdatum festlegen, mit dem sich ein psychologisch wirksamer 📆 Sonderpreis Countdown im Gambio-Shop realisieren lässt. Für die Praxis hilfreich sind aber weitere Routinen, die Sonderpreise automatisch deaktivieren oder löschen.

Warum Sonderangebote für nicht-vorrätige Artikel deaktivieren?

Angebote mit Sonderpreis und Sold-out-Ribbon
Frust vorprogrammiert: Ausverkaufte Sonderangebote

Niemand mag leere Versprechungen – das gilt im Supermarkt genauso wie im Onlinehandel. Kaum etwas sorgt für mehr Frust bei Kunden als Sonderangebote für Artikel, die gar nicht mehr verfügbar sind. Man kennt das Problem aus den Prospekten großer Discounter: Ein stark beworbenes Angebot lockt in den Laden, doch dort ist das Produkt längst ausverkauft. Die Enttäuschung ist groß, und nicht selten bleibt ein fader Beigeschmack, der Kunden langfristig verärgert.

malibu Sonderangebote mit Schriftzug Jetzt zuschlagen! und einer Hammer-Illustration
Besser: Gambio-Sonderangebotsseite optimieren und verfügbare Angebote präsentieren

Im Onlineshop verhält es sich ähnlich. Wenn Sonderangebote für ausverkaufte Artikel weiterhin sichtbar bleiben oder sogar über externe Preisportale und Google Shopping beworben werden, führt das zu unnötigem Ärger. Kunden klicken auf ein vermeintliches Schnäppchen, nur um dann festzustellen, dass es gar nicht mehr verfügbar ist. Im schlimmsten Fall wandern sie genervt zur Konkurrenz.

Deshalb lohnt es sich, Sonderangebote für nicht-vorrätige Produkte konsequent zu deaktivieren oder direkt aus der Datenbank zu löschen. So bleibt das Angebot immer aktuell, die Customer Experience wird verbessert, und wir vermeiden unnötige Enttäuschungen. Mit den richtigen Automatisierungen können wir diesen Prozess effizient gestalten und sicherstellen, dass nur tatsächlich verfügbare Produkte beworben werden.

Sonderangebote im Gambio-Admin löschen

Tabelle mit Sonderangeboten, Kontrollkästchen und Löschen-Button
Sonderangebote löschen im Gambio-Admin

Im Gambio-Admin-Panel navigieren wir zum Menüpunkt Artikel und wählen dort Sonderangebote. Hier können wir bestehende Sonderangebote einsehen und bearbeiten. Um ein Sonderangebot zu löschen, klicken wir auf das Papierkorbsymbol neben dem entsprechenden Eintrag. Für das gleichzeitige Löschen mehrerer Angebote markieren wir die gewünschten Einträge und wählen die Option zum Löschen.

Diese integrierte Funktionalität ist zwar hilfreich, jedoch stoßen wir schnell an ihre Grenzen. Ein massenhaftes Deaktivieren von Sonderangeboten ist bedauerlicherweise überhaupt nicht möglich; die Massenbearbeitung beschränkt sich ausschließlich auf das Löschen. Gerade in Zeiten von saisonalen Aktionen oder kurzfristigen Preisänderungen wäre eine komfortablere Lösung wünschenswert, um Sonderangebote effizient zu verwalten.

Sonderangebote gemäß Lagerbestand…

Kontrollieren

SQL: Eingabefeld und Go-Button
Toolbox > SQL für einfache Datenbank­operationen im Gambio-Admin

Wir möchten Sonderangebote schneller beenden können – am besten automatisch. Dafür wagen wir uns an die Datenbank. Als Warm-up starten wir mit einigen Select-Befehlen, also rein lesendem Zugriff, um uns einen Überblick zu verschaffen.

Alle Sonderangebote finden wir in der Datenbank-Tabelle specials. Aktive Sonderangebote haben den Status (status) 1, inaktive 0. Mit den zugehörigen Produkten verknüpft sind sie mittels der products_id, also der laufenden Nummer und eindeutigen Kennung für jeden Artikel im Shop.

Die Produkte selbst liegen mit ebenjener products_id in der Tabelle products. Hier finden wir auch den Lagerbestand (Spalte products_quantity) und zur menschenlesbaren Kennung die Artikelnummer (products_model).

5 Ergebnisse mit Spalten products_model und products_quantity
Artikelnummer und Lagerbestand aktiver Sonderangebote

Mit folgendem MySQL-Select-Statement lassen wir uns eine Tabelle aktiver Sonderangebote mit Artikelnummer und Lagerbestand ausgeben, sortiert nach Lagerbestand aufsteigend.

SELECT p.products_model, p.products_quantity 
FROM specials s
JOIN products p ON s.products_id = p.products_id
WHERE s.status = 1
ORDER BY p.products_quantity ASC;
Ergebnis Datenbankabfrage mit Spalten products_model products_quantity products_name discount_percentage
Sonderangebote und Bestand

Nehmen wir noch den Artikelnamen aus der Tabelle products_description (Spalte products_name, referenziert über products_id und language_id=2 für deutsch) und den prozentualen Rabatt des Sonderpreises in unsere Tabelle auf. Der Rabatt lässt sich anhand der Nettopreise (`specials`.`specials_new_products_price` und `products`.`products_price`) berechnen.

SELECT 
    p.products_model, 
    p.products_quantity, 
    pd.products_name, 
    ROUND((1 - s.specials_new_products_price / p.products_price) * 100, 2) AS discount_percentage
FROM specials s
JOIN products p ON s.products_id = p.products_id
JOIN products_description pd ON s.products_id = pd.products_id
WHERE s.status = 1 AND pd.language_id = 2
ORDER BY p.products_quantity ASC;

Damit haben wir eine detaillierte Übersicht, um gezielt Sonderangebote mit geringem Lagerbestand und hohem Rabatt zu identifizieren!

Deaktivieren

Enthält die Ergebnistabelle Artikel ohne Bestand, deren Sonderaktion zu beenden ist? Dann können wir mit folgendem SQL-Befehl die zugehörigen Sonderangebote deaktivieren:

UPDATE specials s
JOIN products p ON s.products_id = p.products_id
SET s.status = 0
WHERE p.products_quantity <= 0 AND s.status = 1;

Löschen

Werden die Sonderangebote von Artikeln ohne Bestand zukünftig nicht mehr gebraucht, zum Beispiel weil es sich um einen Ausverkauf handelte? Statt sie nur zu deaktivieren können wir sie dann auch gleich löschen:

DELETE s 
FROM specials s
JOIN products p ON s.products_id = p.products_id
WHERE p.products_quantity <= 0;

Automatisiert managen

Loginseite von phpMyAdmin
Login in phpMyAdmin

Zur Automatisierung legen wir Trigger an. Damit ist das kleine, aber nützliche Tool phpMiniAdmin im Gambio-Admin ist leider überfordert. Deshalb wechseln wir zum Quasi-Standard-Datenbankadministrationstool phpMyAdmin. Bei den meisten Gambio Hosting Anbietern ist dieses über das Kundenmenü (IONOS, Strato) bzw. technische Administrationsoberfläche (konsoleH bei Hetzner, KAS bei All-inkl, Plesk bei u.a. Estugo) erreichbar. Im Übrigen kennen wir phpMyAdmin auch schon vom Gambio CSV Export ohne separates Modul 😊

Eingabefeld in phpMyAdmin mit Trigger-Code
Trigger in phpMyAdmin anlegen

Sonderangebote gar nicht erst anlegen: Mit dem kostenlosen Gambio-Tool Massenangebot lassen sich massenweise Sonderangebote für Produkte bestimmter Hersteller oder in bestimmten Kategorien auf Knopfdruck generieren. Den Lagerbestand berücksichtigt das Tool allerdings nicht. Folgender Trigger sorgt dafür, dass ein Sonderangebot gar nicht erst angelegt wird, wenn der Artikelbestand kleiner oder gleich 0 ist:

DELIMITER //

CREATE TRIGGER prevent_specials_insert
BEFORE INSERT ON specials
FOR EACH ROW
BEGIN
DECLARE stock INT;

-- Lagerbestand des betreffenden Artikels abrufen
SELECT products_quantity INTO stock
FROM products
WHERE products_id = NEW.products_id;

-- Falls der Bestand <= 0 ist, Einfügen verhindern
IF stock <= 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Kein Sonderangebot für Artikel ohne Bestand erlaubt';
END IF;
END;

//

DELIMITER ;

Sonderangebote bei Ausverkauf automatisch deaktivieren: Rutscht der Artikelbestand durch Abgleich mit der Warenwirtschaft oder Bestelleingang auf 0, können wir Sonderangebote ausverkaufter Artikel mit folgendem Trigger automatisch beenden:

DELIMITER //

CREATE TRIGGER deactivate_specials_on_out_of_stock
AFTER UPDATE ON products
FOR EACH ROW
BEGIN
IF NEW.products_quantity <= 0 THEN
UPDATE specials
SET status = 0
WHERE products_id = NEW.products_id AND status = 1;
END IF;
END;

//

DELIMITER ;

Sonderangebote bei Ausverkauf automatisch löschen: Wird ein zugehöriges Sonderangebot bei Verkauf des letzten Exemplares eines Artikels nicht mehr benötigt, können wir es auch gleich via Trigger aus der Datenbank löschen lassen:

DELIMITER //

CREATE TRIGGER delete_specials_on_out_of_stock
AFTER UPDATE ON products
FOR EACH ROW
BEGIN
IF NEW.products_quantity <= 0 THEN
DELETE FROM specials
WHERE products_id = NEW.products_id;
END IF;
END;

//

DELIMITER ;

Sonderangebote gemäß Lieferstatus…

Ergebnistabelle shipping_status_id und shipping_status_name
Lieferstatus-IDs auflisten lassen in phpMyAdmin
SQL-Befehl mit Ergebnistabelle shipping_status_id und shipping_status_name
Lieferstatus-IDs in phpMiniAdmin

Das Vorgehen ist prinzipiell dasselbe wie beim Lagerbestand. Statt der verfügbaren Artikelanzahl (products_quantity) prüfen wir den Lieferstatus. In der products-Tabelle finden wir die ID des Lieferstatus in der Spalte products_shippingtime.

Im ersten Schritt finden wir heraus, welche ID der Lieferstatus hat, für den Angebote deaktiviert oder gelöscht werden sollen. Folgendes Select-Statement zeigt uns eine Tabelle der Einträge aus dem Gambio-Admin Einstellungen > Lieferstatus:

SELECT 
    shipping_status_id, 
    shipping_status_name 
FROM `shipping_status`
WHERE language_id=2;

Gehen wir nun davon aus, dass wir für einen sinngemäßen Lieferstatus ausverkauft eine exemplarische ID 123456 identifiziert haben. Lassen wir uns zunächst alle Produkte mit Artikelnummer, Name und prozentualem Rabatt anzeigen, für die ein Sonderpreis aktiv ist und deren Lieferstatus ausverkauft lautet:

SELECT
    p.products_model, 
    pd.products_name, 
    ROUND((1 - s.specials_new_products_price / p.products_price) * 100, 2) AS discount_percentage
FROM specials s
JOIN products p ON s.products_id = p.products_id
JOIN products_description pd ON s.products_id = pd.products_id
WHERE s.status = 1 
AND p.products_shippingtime = 123456 
AND pd.language_id = 2
ORDER BY pd.products_name ASC;

Enthält die Ergebnistabelle die erwarteten Artikel, für das Sonderangebot beendet werden soll? Dann deaktivieren wir die Sonderangebote mit diesem Befehl:

UPDATE specials s
JOIN products p ON s.products_id = p.products_id
SET s.status = 0
WHERE p.products_shippingtime = 123456 AND s.status = 1;

Ohne Umwege direkt aus der Datenbank löschen können wir die entsprechenden Sonderangebote mit diesem MySQL-Befehl:

DELETE s
FROM specials s
JOIN products p ON s.products_id = p.products_id
WHERE p.products_shippingtime = 123456;

Genau wie bei Lagerbestandsänderungen können wir auch bei Änderung des Lieferstatus Sonderangebote automatisch löschen oder deaktivieren lassen. Folgender Trigger deaktiviert Sonderangebote für Artikel, deren Lieferstatus sich auf ausverkauft ändert:

DELIMITER //

CREATE TRIGGER deactivate_specials_on_sold_out_status
AFTER UPDATE ON products
FOR EACH ROW
BEGIN
    IF NEW.products_shippingtime = 123456 THEN
        UPDATE specials 
        SET status = 0 
        WHERE products_id = NEW.products_id AND status = 1;
    END IF;
END;

//

DELIMITER ;

Sonderangebote bei Änderung des Lieferstatus auf ausverkauft automatisch löschen geht mit diesem Trigger:

DELIMITER //

CREATE TRIGGER delete_specials_on_sold_out_status
AFTER UPDATE ON products
FOR EACH ROW
BEGIN
    IF NEW.products_shippingtime = 123456 THEN
        DELETE FROM specials 
        WHERE products_id = NEW.products_id;
    END IF;
END;

//

DELIMITER ;

Mit folgendem Trigger können wir verhindern, dass Sonderangebote für Artikel angelegt werden, die den Lieferstatus ausverkauft haben:

DELIMITER //

CREATE TRIGGER prevent_specials_insert_on_sold_out
BEFORE INSERT ON specials
FOR EACH ROW
BEGIN
    DECLARE stock_status INT;

    -- Lieferstatus des betreffenden Artikels abrufen
    SELECT products_shippingtime INTO stock_status 
    FROM products 
    WHERE products_id = NEW.products_id;

    -- Falls der Lieferstatus "ausverkauft" ist, Einfügen verhindern
    IF stock_status = 123456 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Kein Sonderangebot für Artikel mit Lieferstatus "ausverkauft" erlaubt';
    END IF;
END;

//

DELIMITER ;

Damit bleiben die Sonderangebote immer aktuell und werden gar nicht erst für nicht verfügbare Artikel angelegt!

«

Schreiben Sie einen Kommentar