Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Artikel für bestimmte Zeit reservieren!

    sgei

    • Fördermitglied
    • Beiträge: 327
    • Geschlecht:
    Artikel für bestimmte Zeit reservieren!
    am: 01. Februar 2010, 16:12:41
    Hallo,

    kennt jemand eine Möglichkeit, Artikel die im Warenkorb liegen für eine Zeit X für andere Kunden zu sperren?

    Folgender Hintergrund:

    Ein Kunde möchte im Shop einen bestimmten Artikel haben und legt diesen in den Warenkorb. Gleichzeitig will aber ein zweiter Kunde diesen Artikel auch haben. Jetzt reicht der Lagerbestand aber nur für einen Kunden. Jetzt wäre es schön, wenn der Kunde z.B. 180s Zeit hat, um seine Bestellung abzuschließen, ansonsten ist der Artikel für andere Kunden wieder zu haben.

    Das gibt es ja schon in vielen Shops, habe es aber für XTC noch nicht gesehen.

    Steffen



    Linkback: https://www.modified-shop.org/forum/index.php?topic=3702.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    Neptuns

    • Neu im Forum
    • Beiträge: 33
    Artikel für bestimmte Zeit reservieren!
    Antwort #1 am: 06. März 2010, 10:46:57
    Moin Moin,

    auch für uns wäre so eine Erweiterung interessant.

    Möchte hier noch das Thema erweitern. Was passiert mit den Artikeln die der Kunde in den Warenkorb legt, es aber nicht zu einer Bestellung kommt. Gibt es eine Möglichkeit diese Artikel aus dem Warenkorb zu löschen also z.B. in der SQL Datenbank. Oder werden diese automatisch nach einer gewissen Zeit gelöscht?

    Gruß
    Georg

    vr

    • modified Team
    • Beiträge: 2.664
    Artikel für bestimmte Zeit reservieren!
    Antwort #2 am: 06. März 2010, 14:24:54
    Hallo Steffen und Georg,

    erstmal zu der zeitlichen Frist für den Einkauf - glaube nicht, dass das bei Kunden so gut ankommen würde: Ich kann zwar den Wunsch nachvollziehen, aber stellt euch das mal in einem normalen Laden vor, nach 3 Minuten kriegt man einen Artikel wieder aus dem Einkaufswagen genommen. Onlineshops haben ja u.a. den Vorteil gegenüber konventionellen Läden, dass man keinerlei Zeitdruck beim Einkaufen hat.

    Der zweite Punkt, stehengelassene Warenkörbe wieder auszuräumen, ist schon eher eine Überlegung wert. Das wird in einem normalen Laden ja auch so gemacht. Bisher werden Warenkörbe im Shop aber nicht geleert. Am besten würde das nach Abmeldung passieren, nur dieses Ereignis haben wir nicht, die Kunden machen einfach das Browserfenster zu. Hinzu kommt, man muss nicht mal angemeldet sein, um einen Warenkorb füllen zu können.

    Grüße, Volker

    sgei

    • Fördermitglied
    • Beiträge: 327
    • Geschlecht:
    Artikel für bestimmte Zeit reservieren!
    Antwort #3 am: 06. März 2010, 18:01:09
    Hallo vr,

    natürlich hast du recht, aber wenn man im Shop Artikel verkauft, die es immer nur 1x gibt, dann wäre eine Reservierung für die Zeit bis zum Checkout sehr nützlich. Sonst schnappt der nächste Kunde den Artikel weg. Ich benötige dies speziell für den Kauf von Platzkarten für Veranstaltungen. Ich habe eine Lösung gefunden. Falls Interesse besteht, skizziere ich den Weg mal etwas.

    Steffen

    baustelle

    • Fördermitglied
    • Beiträge: 1.622
    Artikel für bestimmte Zeit reservieren!
    Antwort #4 am: 06. März 2010, 18:56:27
    Hallo Steffen,

    ich hatte deinen Beitrag damals abonniert, weil ich das gleiche Problem (Einzelstücke) habe. An deiner Lösung habe ich großes Interesse - sie müsste ja in irgendeiner Form auch eine Art Kommunikation beinhalten, für zumindest einen der beiden "Kontrahenten", oder? Bin wirklich sehr gespannt, wie du das gelöst hast.

    Greets,
    Chris

    sgei

    • Fördermitglied
    • Beiträge: 327
    • Geschlecht:
    Artikel für bestimmte Zeit reservieren!
    Antwort #5 am: 06. März 2010, 19:34:33
    Hallo baustelle,

    also ich habe es bis jetzt so gelöst:

    Wichtig: Bei mir habe ich Artikel mit Optionen.

    1. Datenbank
    -neues Datenbankfeld in der Tabelle products bzw. products_attributes anlegen mit dem Datentyp Timestamp

    2. product_attributes.php
    -Datenbankabfrage um das neue Feld erweitern (dabei kann man gleich rechnen lassen now()-FELD)
    -das Smarty-Array um den neuen Wert erweitern

    3. cart_action.php
    -in der cart_action.php habe ich bei "add_cart" eine Erweiterung drin, dass beim "in den Warenkorb legen" der aktuelle Server-Timestamp in das neue Datenbankfeld eingetragen wird
    -vorher wird geprüft, ob ein anderer Kunde schneller war
    -dazu wird der aktuelle Server-Timestamp - alter Timestamp in DB subtrahiert
    -das Ergebnis ist eine Zeit in Sekunden
    -ist diese kleiner als eine von mir festgelegte Zeit, dann wurde der Artikel gerade in einen Warenkorb gelegt
    -in diesem Fall muss der Kunde eine Meldung bekommen, dass der Artikel gerade im Warenkorb eines anderen Kunden liegt.

    -beim bewussten Löschen des Artikels aus dem Warenkorb durch den Kunden wird der Timestamp in der DB auf "0000-00-00 00:00:00" gesetzt
    -dadurch ist die Differenz von aktuellen Timestamp - DB> der Zeit X und der Artikel ist wieder "frei"

    4. Produkt-Ansicht (bei mir in der product_dropdown.html)
    -wenn die Zeit (aktueller Timestamp - Timestamp aus DB) kleiner als Zeit X ist, dann lasse ich diese Option nicht anzeigen
    - somit kann man sie auch nicht kaufen
    - nach Ablauf der Zeit X wird die Option wieder angezeigt

    Wie gesagt ist das eine Lösung für Produkte mit Optionen. Man kann es aber auch für "normale" Artikel anwenden.

    Steffen

    vr

    • modified Team
    • Beiträge: 2.664
    Artikel für bestimmte Zeit reservieren!
    Antwort #6 am: 06. März 2010, 20:04:41
    Hallo Steffen,

    also der zweite Kunde bekommt angezeigt, dass sein gewünschter Artikel in einem anderen Warenkorb liegt. Und dann? Wird der Artikel nach Ablauf der Zeit x automatisch aus dem Warenkorb des 1. Kunden entfernt?

    Grüße, Volker

    vr

    • modified Team
    • Beiträge: 2.664
    Artikel für bestimmte Zeit reservieren!
    Antwort #7 am: 06. März 2010, 20:13:37
    Hallo Steffen,

    hatte das mit der Reservierung zu schnell überlesen. Klar, es ist in diesem Fall sinnvoll, nicht erst im Checkout einen Artikel auf nicht mehr verfügbar zu schalten. So ganz hab ichs aber noch nicht, wie sich das Timeout auswirkt. Du reduzierst ja nicht den Bestand beim Einfügen in den Warenkorb, sondern hast eine zusätzliche Funktion geschaffen, die die Verfügbarkeit steuert.

    Grüße, Volker

    sgei

    • Fördermitglied
    • Beiträge: 327
    • Geschlecht:
    Artikel für bestimmte Zeit reservieren!
    Antwort #8 am: 06. März 2010, 20:38:12
    Hallo vr,

    bei mir ging es speziell darum Optionen, die nicht mehr verfügbar sind bzw. reserviert sind nicht mehr anzuzeigen.
    Normalerweise sieht jeder Kunde in der Artikelansicht alle Optionen, also z.B. Artikel A mit den Optionen 1, 2, 3, 4 und 5.
    Wenn der Artikel A mit Option 1 verkauft ist, dann sollen die Kunden nur noch Option 2, 3, 4 und 5 sehen.
    Diese Anzeige der Optionen mache ich in Anhängigkeit des Lagerbestandes ( 1 oder 0 ) und ob der Artikel gerade reserviert ist.
    Dazu schreibe ich in dem Moment wenn der Kunde den Artikel in den Warenkorb legt den aktuellen Timestamp in die DB (product_attributes).
    Ruft jetzt ein zweiter Kunde den Artikel auf, dann wird in der product_dropdown.html geprüft, ob die jeweiligen Optionen einen Lagerbestand von 1 haben und nicht gerade reserviert sind. Gerade reserviert heisst:

    Zeit für den Kauf ist z.B. 15min = 900sec (Reservierzeit)
    Timestamp in der DB z.B. "2010-03-06 21:30:00" (wurde eingetragen, als Kunde 1 den Artikel in den Warenkorb gelegt hat)
    Aktueller Timestamp: "2010-03-06 21:41:34"

    "2010-03-06 21:41:34" - "2010-03-06 21:30:00" = 694sec

    694 <900, also ist Artikel im Moment reserviert und die Option wird ausgeblendet.

    Sind die 15min abgelaufen, und der Kunde 1 hat den Kauf nicht abgeschlossen (Lagerbestand ist dann immernoch 1), dann wird die Option wieder angezeigt.

    Wenn man das für "normale" Produkte ohne Optionen machen will, könnte man z.B. den Warenkorb-Button einfach ausblenden wenn der Artikel reserviert ist.

    Die Lösung ist auf jeden Fall simpel und funktioniert.

    Steffen

    EDIT: Denkanstoß dazu hat mit Ronald (web28) gegeben! Danke nochmal! :thumbs:

    vr

    • modified Team
    • Beiträge: 2.664
    Artikel für bestimmte Zeit reservieren!
    Antwort #9 am: 06. März 2010, 20:55:20
    Hallo Steffen,

    dh, Kunde 1 reserviert durch Einfügen in den Warenkorb einen Artikel mit Option A für 15 Minuten. Nach Ablauf der 15 Minuten kauft Kunde 2 den Artikel mit Option A. Was passiert denn dann mit Kunde 1? Der geht ja noch davon aus, dass er den Artikel mit Option A kauft. Weist Du auf die 15min Reservierzeit hin? Und informierst Du Kunde 1, wenn er zu lange gedaddelt hat und seine ausgewählte Option weggeschnappt wurde?

    Grüße, Volker

    sgei

    • Fördermitglied
    • Beiträge: 327
    • Geschlecht:
    Artikel für bestimmte Zeit reservieren!
    Antwort #10 am: 06. März 2010, 21:12:27
    Genau das ist im Moment noch offen. Schön wäre eine Countdown für Kunde 1. Der Hinweis vorher wird natürlich gegeben, nur wann sind die 15 Minuten um...
    Geil wäre hinter jedem Artikel im Warenkorb ein Countdown...

    Das ist sicher nicht das Hexenwerk. Werde mich mal dran versuchen.

    Steffen

    vr

    • modified Team
    • Beiträge: 2.664
    Artikel für bestimmte Zeit reservieren!
    Antwort #11 am: 06. März 2010, 22:28:28
    Hallo Steffen,

    Hmm, den Countdown wirst Du nur mit Javascript hinkriegen, dann brauchst Du aber ein Fallback, falls Javascript aus ist. Die ganze Seite neu laden willst Du ja auch nicht, also fällt HTML-refresh auch flach.

    Die Anforderung ist eigentlich grundsätzlicher:

    Wann wird der Bestand verringert, beim Einfügen in den Warenkorb oder beim Kauf an der Kasse? Evtl wäre es eine Idee, das schaltbar zu machen.

    Es hat auf jeden Fall Konsequenzen in Bezug aufs Warenkorbaufräumen. Dummerweise wissen wir nicht, wann jemand die Session beendet, das wäre der ideale Zeitpunkt. Ich finde es eigentlich überflüssig, Warenkörbe über Sessionende hinaus zu speichern. Dass das gemacht wird, hat vermutlich nur den technischen Grund, dass wir nicht mitkriegen, wenn jemand eine Session beendet, da sich nicht über einen Abmelden-Link abgemeldet wird, sondern durch Schließen des Browsertabs.

    Grüße, Volker

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    Artikel für bestimmte Zeit reservieren!
    Antwort #12 am: 06. März 2010, 23:08:24
    Hallo Steffen,

    Hmm, den Countdown wirst Du nur mit Javascript hinkriegen, dann brauchst Du aber ein Fallback, falls Javascript aus ist. Die ganze Seite neu laden willst Du ja auch nicht, also fällt HTML-refresh auch flach.

    Die Anforderung ist eigentlich grundsätzlicher:

    Wann wird der Bestand verringert, beim Einfügen in den Warenkorb oder beim Kauf an der Kasse? Evtl wäre es eine Idee, das schaltbar zu machen.

    Es hat auf jeden Fall Konsequenzen in Bezug aufs Warenkorbaufräumen. Dummerweise wissen wir nicht, wann jemand die Session beendet, das wäre der ideale Zeitpunkt. Ich finde es eigentlich überflüssig, Warenkörbe über Sessionende hinaus zu speichern. Dass das gemacht wird, hat vermutlich nur den technischen Grund, dass wir nicht mitkriegen, wenn jemand eine Session beendet, da sich nicht über einen Abmelden-Link abgemeldet wird, sondern durch Schließen des Browsertabs.

    Grüße, Volker

    Nun soo ganz überflüssig ist das mit dem Erhalt des Warenkorbes über das Ende der Session hinaus dann nicht, wenn der Besuch nicht willentlich durch Schließen des Browsertabs beendet wird, sondern durch Absturz oder ähnliches.

    Man nehme einen Fall wie letzte Woche bei dem Sturm. Ich bin Einkaufen im Shop, hab den Warenkorb grade voll - Strom weg. Nachdem der Strom wieder da, (wer weiß schon wie lange das dauert) Rechner hochfahren, Shop wieder besuchen, einloggen, und schwupps der Warenkorb ist noch da. Na das freut mich dann und ich beende den Kauf. Den Shop behalte ich in guter Erinnerung.

    Alternativ - ich logge mich nach all dem Ärger und Frust über den Stromausfall ein, Warenkorb weg. Noch mehr Frust. Stinkig wie ich in dem Augenblick dann sowieso schon bin, projeziere ich meinen Frust auf den Shop - Sch...laden - den besuch ich nie wieder.

    Ist natürlich jetzt eine prinzipielle Frage, wieviel Wert man jetzt darauf legt, auch solche seltenen Sonderfälle zufriedenstellend zu behandeln. Dazu müsste man aber unterscheiden können, ob die Verbindung durch Klick (= bewusste Aktion) auf das Schließen des Browsertags, oder gar das Schließen des Browsers zustande kam, oder eben durch ooops ich bin dann mal weg (= keine Aktion). Gäbe es überhaupt eine Möglichkeit das zu unterscheiden?

    baustelle

    • Fördermitglied
    • Beiträge: 1.622
    Artikel für bestimmte Zeit reservieren!
    Antwort #13 am: 07. März 2010, 06:24:39
    Hallo Alle,

    hochspannende Diskussion.

    Steffen, deine Gedankengänge hab ich soweit verstanden, danke fürs Teilen. Nach meinem (non-Programmier-)Verständnis knirscht die Kommunikation mit einem oder beiden Betroffenen/Interessenten noch bissl.

    Zitat
    [...] Schön wäre eine Countdown für Kunde 1. Der Hinweis vorher wird natürlich gegeben, nur wann sind die 15 Minuten um [...]
    Es gäbe ja grundsätzlich 2 Möglichkeiten der Kommunikation, oder auch beide zusammen, analog zu dem, was Volker schon sagte:

    Zitat
    [...] Was passiert denn dann mit Kunde 1? Der geht ja noch davon aus, dass er den Artikel mit Option A kauft. Weist Du auf die 15min Reservierzeit hin? Und informierst Du Kunde 1, wenn er zu lange gedaddelt hat und seine ausgewählte Option weggeschnappt wurde?
    - Kunde 2 erhält beim Reinlegen des Artikels in seinen WK, der bereits im WK von Kunde 1 liegt, einen Hinweis: "Dieser Artikel ist bereits von einem anderen Kunden reserviert. Die Reservierung läuft in XY Minuten ab. Danach ist der Artikel entweder ausverkauft, oder wieder für Sie verfügbar."

    - Kunde 1 erhält (falls Session noch aktuell) in seiner Warenkorbbox einen Hinweis: "Artikel wurde soeben angefragt, bitte hier klicken". In seinem Warenkorb findet er dann die Meldung: "Ein anderer Kunde interessiert sich ebenfalls für diesen Artikel. Restliche Reservierungszeit für Sie: XY Minuten. Wenn Sie Ihren Einkauf bis dahin nicht abgeschlossen haben, wird der Artikel aus Ihrem Warenkorb entfernt. Wir danken für Ihr Verständnis."

    Das wäre natürlich ein genialer Ablauf, der sich aber wohl programmiertechnisch nicht umsetzen lassen wird, befürchte ich.

    Zu dem von guensi angesprochenen Punkt:

    Dass der Inhalt des WK bis zum nächsten Einloggen gespeichert bleibt, ist ja auch ein zentraler Punkt in der Argumentation (jedenfalls in meiner), warum es sich lohnt, ein Kundenkonto anzulegen. Wenn es diese Funktion nicht gäbe, müsste stattdessen eine Merkliste her, auf die ich bisher GottSeiDank verzichten konnte. Insofern kann ich guensi nur beipflichten, das der WK-Inhalt auch über die aktuelle Session hinaus erhalten bleiben sollte.

    Angeregt durch diese Diskussion werde ich aber jetzt gleich mal eine kleine Textänderung vornehmen: bisher steht ja bei einem neuen Login folgender Standardtext oberhalb des Warenkorbs, wenn der Artikel inzwischen verkauft oder bei einer laufenden Bestellung der Lagerbestand unterschritten wurde:

    "Die mit *** markierten Artikel sind leider nicht in der von Ihnen gewünschten Menge auf Lager. Bitte reduzieren Sie Ihre Bestellmenge für die gekennzeichneten Artikel. Vielen Dank!"

    Ich ergänze nun wie folgt: "Die mit *** markierten Artikel sind leider nicht in der von Ihnen gewünschten Menge auf Lager bzw. wurden inzwischen verkauft. [...]" Das dürfte beim Kunden weniger Frust auslösen iSv "Selbst schuld, ich Doofie, hätte ich gestern mal lieber gleich bestellt".

    Greets,
    Chris

    vr

    • modified Team
    • Beiträge: 2.664
    Artikel für bestimmte Zeit reservieren!
    Antwort #14 am: 07. März 2010, 14:57:14
    Hallo Chris, guensi,

    ok, das sind Stimmen für den Erhalt des Warenkorbs über Sessions hinweg - ich finde das Feature zum Testen ja auch ganz praktisch  ;) . Die Anforderungen sind trotzdem etwas widersprüchlich. Einerseits soll die Zusammenstellung im Warenkorb erhalten bleiben, andererseits gibt es keine Garantie, dass der Warenkorb auch am nächsten Tag noch in der Form existiert - im Extremfall kann der ganze Inhalt in der Zwischenzeit weggekauft worden sein. Das Einfügen eines Artikels in den Warenkorb hat nur den Charakter einer Reservierung, und die ist zeitlich befristet. Als Merkliste funktioniert der WK davon unabhängig, klar. So ist es bisher, und das ist ein brauchbarer Kompromiss zwischen Betreiber- und Kundeninteresse.

    Steffens Ansatz macht den Reservierungsaspekt für Kunden sichtbar.

    Grüße, Volker

    7 Antworten
    4713 Aufrufe
    11. April 2012, 12:19:10 von Gradler
    4 Antworten
    3561 Aufrufe
    02. März 2011, 13:56:50 von Modulfux
    4 Antworten
    3898 Aufrufe
    18. April 2015, 13:42:28 von ingotester