Was ist der Unterschied zwischen isSaleable() und isAvailable()?

Lesezeit: 5 Minuten

Benutzer-Avatar
Pfannkuchen

Ich arbeite an der Anzeige der Lagerverfügbarkeit auf der (einzelnen) Produktseite meines Magento-Themes und verstehe etwas nicht ganz.

Ich sehe zwei Methoden, die in den Vorlagen verwendet werden, um zu prüfen, ob ein Produkt zum Verkauf verfügbar ist:

    Mage_Catalog_Model_Product::isAvailable()
    Mage_Catalog_Model_Product::isSaleable()

Meine eigenen Erkenntnisse:

Ich sehe das isSalable() (was wiederum aufgerufen wird von isSaleable()) Anrufe isAvailable() sondern sendet auch zwei Ereignisse (catalog_product_is_salable_before und catalog_product_is_salable_after).

Am Frontend ist mir das im Basis-Template von Magento aufgefallen isAvailable() wird verwendet, um zu entscheiden, ob das Produkt als “auf Lager” oder “nicht auf Lager” angezeigt wird; isSaleable() wird verwendet, um beispielsweise zu entscheiden, ob eine Schaltfläche “In den Warenkorb” angezeigt werden soll.

Am Backend ist mir aufgefallen, dass wenn die Bestandsmenge Null wird und es Nachbestellungen gibt nicht erlaubt, geht die Lagerverfügbarkeit eines Produktes auf “out of stock”. Wenn die Lagermenge Null wird und Nachbestellungen sind zulässig, die Lagerverfügbarkeit des Produkts bleibt unverändert.

Frage:

Die Eigenschaften „Lagerverfügbarkeit“ und „Lagermenge“ sind offensichtlich miteinander und den erwähnten PHP-Methoden verknüpft. Ich würde gerne wissen:

  • was zum semantisch Unterschied zwischen den PHP-Methoden isAvailable() und
    isSaleable() ist und warum ich einen über dem anderen verwenden würde;

  • Was es ist, scheine ich noch nicht über ihre Beziehung zu diesen Eigenschaften und Magentos Verhalten zu wissen.

Vielen Dank.

BEARBEITEN:

Ich habe jede relevante Kombination aus Lagermenge (-1,0,1), Lagerverfügbarkeit (ein/aus) und Nachbestellungen (ein/aus) für ein Produkt ausprobiert und das ist das Ergebnis:

St.Qu  BckOrd  St.Av  isSalable()  isSaleable()  isAvailable()
   -1       0      0            0             0              0
   -1       0      1          N/A           N/A            N/A
   -1       1      0            0             0              0
   -1       1      1            1             1              1
    0       0      0            0             0              0
    0       0      1          N/A           N/A            N/A
    0       1      0            0             0              0
    0       1      1            1             1              1
    1       0      0            0             0              0
    1       0      1            1             1              1
    1       1      0            0             0              0
    1       1      1            1             1              1

Nur der Vollständigkeit halber:

St.Av 0  = out of stock
St.Av 1  = in stock
BckOrd 0 = no backorders allowed
BckOrd 1 = backorders are allowed

Es ist der Schalter für die Lagerverfügbarkeit in Magento, der den Rückgabewert aller PHP-Methoden steuert, aber wenn die Lieferrückstände deaktiviert sind und die Lagermenge unter 1 fällt, wird die Lagerverfügbarkeit automatisch auf “nicht auf Lager” zurückgesetzt (daher die N/A Reihen).

  • Schöner Tisch, hat mir geholfen 🙂

    – Akif

    1. Dezember 2021 um 12:45 Uhr

  • gerne geschehen! Ich war seit Jahren nicht mehr hier, also könnte es veraltet sein.

    – Pfannkuchen

    28. August um 12:44 Uhr

Benutzer-Avatar
qvotaxon

Wenn ich mich nicht irre, hat der Unterschied in diesen Prüfungen mit Reservierungen von Produkten für aufgegebene Bestellungen zu tun. Wenn ein Kunde Produkte zu einer Bestellung hinzufügt, befinden sich diese Produkte weiterhin in Ihrem Bestand, sodass sie weiterhin verfügbar sind. Sie sind jedoch nicht verkaufsfähig, da sie bereits von einem anderen Kunden bestellt wurden.

Der semantische Unterschied ist also:

  • verkaufsfähig bedeutet: auf Lager und noch nicht von einem anderen Kunden bestellt
  • verfügbar bedeutet: auf Lager, aber von einem anderen Kunden bestellt, also verfügbar, aber nicht verkaufsfähig.

Sie könnten versuchen, dies zu überprüfen, indem Sie eine Bestellung für ein Produkt aufgeben. Und machen Sie die gleiche Prüfung wie Sie es bereits getan haben. Dies sollte eine Differenz zwischen der Menge der verfügbaren Produkte und der Menge der verkaufsfähigen Produkte bewirken.

Bearbeiten:
Mehr Infos hier:

https://blog.magestore.com/magento-multi-source-inventory-msi/#a3

Benutzer-Avatar
soraya.e

isSeable() sieht so aus, als würde es prüfen, ob es 0 erreicht

isAvailable() sieht aus wie es zählt

  • Kannst du das etwas genauer erklären, vielleicht mit ein paar Beispielen?

    – Ganesh

    18. August 2020 um 3:32 Uhr

Benutzer-Avatar
Elch

Ich sehe diejenigen mit semantischen Unterschieden. Ein Artikel, der nicht auf Lager ist, kann noch verkaufsfähig sein, wenn dieser Artikel so eingestellt ist, dass Nachbestellungen zulässig sind.

Soweit ich das beurteilen kann, sieht es so aus isAvailable überprüft eine Produkttypinstanz, um zu sehen, ob der Produkttyp könnte verkauft werden, wenn es tatsächlich verfügbar ist.

Also, um eine Vermutung zu wagen, wann Sie sich für eines entscheiden könnten:

Wenn Sie ein einzelnes Produkt daraufhin prüfen, ob es tatsächlich verkaufsfertig ist, sollten Sie verwenden isSalable()wie es nennen wird isAvailable().

Um zu überprüfen, ob ein Produkt (dessen Typ Sie nicht auswendig kennen) verkauft werden könnte, und ich nehme an, den Schritt der Überprüfung des Produkttyps zu überspringen, könnten Sie anrufen isAvailable() auf dem Produkt.

isAvailable() prüft, ob der Typ eines Produkts verkaufsfähig ist.

isSalable() prüft, ob ein Produkt verkaufsfähig ist.

isSaleable() ist ein Pseudonym von isSalable().

  • Ich verstehe den semantischen Unterschied zwischen etwas auf Lager zu haben und etwas verkaufen zu können, aber ich weiß immer noch nicht, was der semantische Unterschied zwischen isSaleable()/isSalable() und isAvailable() ist. Warum übereinander verwenden, wenn sie in jeder Situation, die ich mir vorstellen kann, dasselbe tun (siehe bearbeitete Frage)? Ich sage “an die ich denken kann”, weil ich gerne wissen möchte, ob es Situationen gibt, an die ich nicht gedacht habe, die einen Unterschied zwischen diesen Methoden machen könnten, weil ich jetzt das Gefühl habe, dass eine davon nutzlos ist, was ich denke etwas schnell zu urteilen.

    – Pfannkuchen

    28. Januar 2012 um 11:46 Uhr


  • In Ihrer bearbeiteten Frage haben Sie geschrieben, dass die Lagerverfügbarkeit automatisch auf “nicht vorrätig” zurückgesetzt wird, wenn die Lieferrückstände deaktiviert sind und die Lagermenge unter 1 fällt. Es gibt auch ein Flag “stock_is_changed_automatically”, mit dem ich Artikel anzeigen kann, die ( technisch gesehen) nicht inventarisiert und sind ausdrücklich auf Lager, Nachlieferungen aus und Menge = 0

    – Elch

    28. Januar 2012 um 17:26 Uhr


  • Das sind nützliche Informationen, danke dafür. Ich möchte nicht undankbar erscheinen, aber ich weiß immer noch nicht, wann ich isSaleable und wann ich isAvailable verwenden soll, wann sie erscheinen dasselbe zu tun. Ich baue gerade ein Thema, also möchte ich es richtig machen.

    – Pfannkuchen

    28. Januar 2012 um 20:09 Uhr


  • Richtig, der Kommentar hat Ihre Frage nicht beantwortet, aber ich dachte, es könnte irgendwie damit zusammenhängen, und meine Bearbeitung meiner Antwort stimmt irgendwie nicht mit der Art und Weise überein, wie Sie sagten, dass die Basisvorlagen von Mage eingerichtet sind. Vielleicht meldet sich noch jemand.

    – Elch

    28. Januar 2012 um 22:08 Uhr

Benutzer-Avatar
Bhavna Malhi

Was mein Anliegen betrifft, isSaleable() bedeutet, dass Sie das oberste Produkt prüfen, das zum Verkauf bereit ist. Während isAvailable() bedeutet, dass Sie das Produkt aus den verfügbaren Listen prüfen.

ist verfügbar() wird verwendet, um zu entscheiden, ob das Produkt als angezeigt werden soll auf Lager oder ausverkauftwährend istVerkäuflich() wird verwendet, um zu entscheiden, ob ein angezeigt wird In den Warenkorb legen Knopf oder nicht.

1334080cookie-checkWas ist der Unterschied zwischen isSaleable() und isAvailable()?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy