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: Lieferzeitangabe ändern

    Rennschnecke123

    • Fördermitglied
    • Beiträge: 177
    Lieferzeitangabe ändern
    am: 28. März 2013, 13:44:05
    Hallo,

    bei einem Artikel wird ja "Lieferzeit: sofort lieferbar" angezeigt.
    Unter Konfiguration -> Lieferstatus habe ich den Status "nicht auf Lager" angelegt.

    Was muss ich denn machen, damit er automatisch wenn Artikelbestand 0 ist auf "Lieferzeit: nicht auf Lager" anzeigt?

    Ich verwende bereits die Lagerampel, welche dann auch auf rot schaltet, aber die Änderung der Lieferzeit wäre noch ganz praktisch.

    Grüße

    Linkback: https://www.modified-shop.org/forum/index.php?topic=25514.0

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #1 am: 30. April 2014, 16:39:01
    Hallo,

    ich muss diesen Beitrag mal nach oben holen, weil ich genau das gleiche Problem habe. Wenn der Lagerbestand auf null geht, ändert sich nichts in der Angabe der Lieferzeit. Im Handbuch und Forum bin ich nicht fündig geworden.

    Bitte um Hilfe.

    Grüße
    Roberto

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.989
    • Geschlecht:
    Re: Lieferzeitangabe ändern
    Antwort #2 am: 30. April 2014, 18:51:00
    Wenn es dir reicht, daß im Frontend z.B. "mom. nicht lieferbar" angezeigt wird anstatt des im Backend eingestellten und somit in der DB hinterlegten Lieferstatus machst du einfach folgendes:

    (Beispiel für die /templates/DEIN_TEMPLATE/module/product_info/product_info_*.html)
    Anstatt
    Code: PHP  [Auswählen]
    {if $SHIPPING_NAME}
    <p class="shippingtime"><strong>{#text_shippingtime#}</strong>
       {if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if}  
        {$SHIPPING_NAME}
    </p>
    {/if}

    das
    Code: PHP  [Auswählen]
    {if $SHIPPING_NAME}
    {if $PRODUCTS_QUANTITY <= 0}
    <p class="shippingtime">
        <strong>{#text_shippingtime#}</strong> {#txt_not_available#}
    </p>
    {else}
    <p class="shippingtime"><strong>{#text_shippingtime#}</strong>
       {if $SHIPPING_IMAGE}<img src="{$SHIPPING_IMAGE}" alt="{$SHIPPING_NAME}" />{/if}  
        {$SHIPPING_NAME}
    </p>
    {/if}
    {/if}

    txt_not_available definierst du in den Sprachdateien in der section [product_info] nach Vorbild.
    (/lang/SPRACHE/lang_SPRACHE.conf)

    Gruß,
    noRiddle

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #3 am: 30. April 2014, 19:39:03
    Hallo noRiddle,

    vielen Dank für deine Antwort!  :-O
    Eigentlich ist es aber die halbe Miete und nicht so ganz richtig, denn in der Bestellübersicht am Ende der Bestellung wird der in der DB hinterlegte Lieferstatus angezeigt.

    Eigentlich muss es doch eine einfache Möglichkeit geben, dass der Lieferstatus automatisch geändert wird: Wenn Artikelmenge=0 dann Lieferstatus=rot.
    Das haben doch so viele Onlineshops, deshalb frage ich mich, weshalb das so schwierig umzusetzen ist. Oder bin ich auf dem Holzweg?

    Grüße
    Roberto

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.989
    • Geschlecht:
    Re: Lieferzeitangabe ändern
    Antwort #4 am: 30. April 2014, 19:55:50
    War ja auch, wie ich schrieb, nur ein Beispiel, muß halt überall gemacht werden wo das auftaucht.
    Was du möchtest bedarf eines Core-Code-Umbaus und nichtmal eines so einfachen, denn theoretisch müsste bei jeder Bestellung der Rest-Bestand überprüft und dann ggfls. der Lieferstatus in der DB geändert werden.
    Da es beliebig viele frei definierbare Lieferstatus gibt, leidet darunter außerdem die Flexibilität.
    Es nur im Frontend so anzeigen zu lassen ist folglich kein dummer Ansatz.

    Gruß,
    noRiddle

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #5 am: 30. April 2014, 20:02:19
    Hallo,

    das es nicht so einfach geht, hatte ich schon befürchtet  :’-(
    Dein Beispiel ist ja auch nicht schlecht, und die Arbeit hält sich in Grenzen. Zusätzlich lasse ich die Artikelmenge noch anzeigen, dass es auch wirklich jeder Kunde begreift  :whistle:

    Code: PHP  [Auswählen]
    <p class="shippingtime"><strong>Lagerbestand: </strong>{$PRODUCTS_QUANTITY}<br /></p>

    Danke für deine Hilfe!!!!
    :thx:

    Grüße
    Roberto

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #6 am: 01. Mai 2014, 06:37:03
    Nachtrag:

    Das hat mir irgendwie doch keine Ruhe gelassen und daher habe ich weiter probiert und gebastelt. Dabei ist folgendes raus gekommen:

    In der includes/application_top.php muss am Ende vor dem ?> folgenden Code eingefügt werden:

    Code: PHP  [Auswählen]
    xtc_db_query('UPDATE ' . TABLE_PRODUCTS . ' SET products_shippingtime=2 WHERE products_quantity<=0');

    Sinnvoller Weise sollte vorher im Admin-Menü unter Konfiguration -> Lieferstatus ein Lieferstatus erzeugt wurden sein, der das gewünschte anzeigt. Bei mir gibt es nur "Verfügbar" (ID=1) und "nicht lieferbar" (ID=2)

    Ich meine, dass ist der Weg zum Ziel aber bitte korrigiert mich,wenn ich Mist gebaut habe!

    Grüße
    Roberto

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.989
    • Geschlecht:
    Re: Lieferzeitangabe ändern
    Antwort #7 am: 01. Mai 2014, 14:06:55
    Das ist, vor allem bei vielen Produkten, ein performance-lastiger Ansatz und kein guter Programmierstil.
    Bei jedem Seitenaufruf /-wechsel wird diese DB-Abfrage durchgeführt wenn sie in der application_top.php steht.
    Würde man eine solche Query jedoch bei jeder Bestellung produkt-bezogen durchführen, wäre es zwar mehr Code aber nicht performance-lastig, weil eben nur bei einer Bestellung und nur bei den bestellten Produkten durchgeführt.

    Ich würde es in der /checkout_process.php an dieser Stelle machen:
    Code: PHP  [Auswählen]
    xtc_db_query("UPDATE ".TABLE_PRODUCTS."
                             SET products_quantity = '"
    .$stock_left."'
                           WHERE products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
    if (($stock_left < 1) && (STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS == 'true')) {
        xtc_db_query("UPDATE ".TABLE_PRODUCTS."
                         SET products_status = '0'
                       WHERE products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
    }

    Aber Achtung, nicht im letzten Code-Teil wo der products_status gesetzt wird einfach die products_shippingtime ebenfalls ändern, schau dir den Code genau an.
    STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS wird im Backend bei Konfiguartion => Lagerverwaltungs Optionen gesetzt.
    Der Code sollte also so aussehen:
    Code: PHP  [Auswählen]
    xtc_db_query("UPDATE ".TABLE_PRODUCTS."
                             SET products_quantity = '"
    .$stock_left."'
                           WHERE products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
    if($stock_left < 1) {
        if(STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS == 'true') {
            xtc_db_query("UPDATE ".TABLE_PRODUCTS."
                             SET products_status = '0',
                                 products_shippingtime = 'WHAT_EVER'
                           WHERE products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
        } else {
            xtc_db_query("UPDATE ".TABLE_PRODUCTS."
                             SET products_shippingtime = 'WHAT_EVER'
                           WHERE products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
        }
    }

    Im ersten Teil kann man das Setzen der products_shippingtime evtl. weglassen da der Artikel deaktiviert wird wenn kein Bestand vorhanden ist.
    WHAT_EVER würde ich sogar als Sprachkonstante festlegen damit es nie versehentlich im Backend umbenannt wird, es also somit kein frei editierbarer echter Lieferstatus ist.

    Gruß,
    noRiddle

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #8 am: 01. Mai 2014, 15:37:43
    Hallo,

    ja, das ist wesentlich eleganter.
    Nur soll der Artikel nicht deaktiviert werden, sondern der Lieferstatus geändert werden. Damit sollen die Kunden den Artikel noch bestellen können aber auf eine längere Lieferzeit hingewiesen werden.
    Wenn ich WHAT_EVER durch eine ID aus der Tabelle shipping_status ersetze funktioniert das aber nicht.  :-( Ich habe schon etliche Varianten probiert und nichts davon führte zum Ziel.

    Grüße
    Roberto

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.989
    • Geschlecht:
    Re: Lieferzeitangabe ändern
    Antwort #9 am: 01. Mai 2014, 17:02:08
    Ein wenig Eigeninitiative ist hier schon gefragt.
    Ich sagte doch
    Zitat von: noRiddle
    STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS wird im Backend bei Konfiguartion => Lagerverwaltungs Optionen gesetzt.
    Wenn du das auf "false" stehen hast, also Artikel nicht deaktiviert werden sollen bei Beständen unter 1, dann werden sie auch nicht deaktiviert.
    Wenn du meinen Code nochmals genau anschaust siehst du, daß wenn STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS auf "false" steht lediglich die products_shippingtime gesetzt wird, der Artikel jedoch aktiviert bleibt.

    Und was heißt
    "Ich habe schon etliche Varianten probiert und nichts davon führte zum Ziel."
    genau ?
    Du wirst doch in der Lage sein eine Zahl in den Code einzutragen, was gibt's da für "Varianten" ?
    Außerdem empfahl ich ja auch dafür eine Sprachkonstante zu verwenden, mußt du aber ja nicht machen, geht auch mit der ID.

    Gruß,
    noRiddle

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #10 am: 01. Mai 2014, 18:13:57
    Hallo,

    STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS gibt es bei mir im Backend nicht, sondern nur die in der angehängten Grafik dargestellten Optionen.
    Ich vermute mal, du meinst den Punkt Bestellabschluß - Ausverkaufte Artikel deaktivieren, welcher bei mir bei allen Versuchen deaktiviert war.

    Natürlich kann ich PHP- und SQL-Code bearbeiten. Folgende Varianten habe ich erfolglos probiert:

    Code: SQL  [Auswählen]
    products_shippingtime = 'WHAT_EVER'
    products_shippingtime = '1'
    products_shippingtime = 1
    products_shippingtime = "1"

    Grüße
    Roberto

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.989
    • Geschlecht:
    Re: Lieferzeitangabe ändern
    Antwort #11 am: 01. Mai 2014, 18:24:02
    Genau das meine ich, "Bestellabschluß - Ausverkaufte Artikel deaktivieren", wenn du da in den Quelltext schaust siehst du die genannte Konstante STOCK_CHECKOUT_UPDATE_PRODUCTS_STATUS.

    Wenn das bei dir auf 'false' stand verstehe ich deinen vorherigen Einwand nicht du wollest Artikel ja nicht deaktivieren wenn sie eine Stückzahl kleiner 1 haben.

    Warum es nicht geht weiß ich nicht, sehe keinen Fehler in meinem Code.

    Wie hast du's denn getestet ?
    Artikel auf 1 Stück gesetzt, bestellt und dann geschaut (auch in der DB) ob er nun die neue products_shippingtime hat ?

    Schalte doch mal das error_reporting (im Ordner /export/error_reporting.admin in error_reporting.all umbenennen) an, sonst kommen wir nicht weiter.

    Gruß,
    noRiddle

    Roberto

    • Frisch an Board
    • Beiträge: 84
    Re: Lieferzeitangabe ändern
    Antwort #12 am: 03. Mai 2014, 17:53:50
    Hallo,

    genau wie du es beschrieben hast, habe ich es getestet.

    Auch nach dem Umbenennen ist die error_reporting.all leer.

    Keine Ahnung wo der Fehler liegt, wahrscheinlich habe ich es kaputt experimentiert....

    Grüße
    Roberto

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.989
    • Geschlecht:
    Re: Lieferzeitangabe ändern
    Antwort #13 am: 03. Mai 2014, 20:36:44
    Tja, ohne Einblick kann ich dir dazu leider auch nicht mehr sagen.
    Es sollte genau so gehen wie ich für die /checkout_process.php beschrieben habe.

    Gruß,
    noRiddle
    1 Antworten
    2410 Aufrufe
    31. August 2010, 20:07:22 von Tomcraft
    1 Antworten
    2894 Aufrufe
    18. Januar 2013, 22:16:21 von Zaldoran
    25 Antworten
    12680 Aufrufe
    15. August 2010, 15:13:11 von Tomcraft
               
    anything