Pracuję nad wyświetlaniem dostępności zapasów na (indywidualnej) stronie produktu mojego tematu Magento i jest coś, czego nie całkiem rozumiem.Jaka jest różnica między isSaleable() i isAvailable()?
widzę dwie metody wykorzystywane w szablonach, aby sprawdzić czy produkt jest dostępny na sprzedaż:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
Własne półfabrykaty:
widzę, że isSalable()
(co z kolei jest nazywany przez isSaleable()
) wywołuje isAvailable()
, ale także wywołuje dwa zdarzenia (catalog_product_is_salable_before
i catalog_product_is_salable_after
).
Na froncie zauważyłem, że w podstawowym szablonie Magento użyto szablonu isAvailable()
, aby zdecydować, czy wyświetlić produkt jako "w magazynie", czy "na stanie"; isSaleable()
służy do decydowania, czy wyświetlić przycisk "Dodaj do koszyka".
Na zapleczu zauważyłem, że gdy ilość zapasów wynosi zero, a zaległe zamówienia to , a nie, dostępność zapasów produktu przechodzi do stanu "brak w magazynie". Gdy ilość zapasów wynosi zero, a zaległe zamówienia to , są dozwolone, dostępność zapasów produktu pozostaje niezmieniona.
Pytanie:
Własności „dostępność ręki” i „ilość ręki” są oczywiście połączone ze sobą i z wymienionych metod PHP. Chciałbym wiedzieć:
co semantyczny różnica między metodami PHP
isAvailable()
iisSaleable()
i dlaczego chciałbym użyć jeden nad drugim;co to jest, wydaje mi się, że jeszcze nie wiem o ich związku z tymi właściwościami i zachowaniem Magento.
Dziękuję.
EDIT:
Próbowałem wszelkich odpowiednich kombinacji ilości akcji (-1,0,1), dostępności zapasów (w/poza) i zaległych zamówień (on/off) na produkt, a to jest wynikiem:
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
tylko dla kompletności wywodu:
St.Av 0 = out of stock St.Av 1 = in stock BckOrd 0 = no backorders allowed BckOrd 1 = backorders are allowed
jest to przełącznik dostępność towaru w Magento, który kontroluje wartość zwracaną wszystkie metody PHP, ale kiedy Zaległości a ponownie, a ilość zapasów spadnie poniżej 1, dostępność zapasów zostanie automatycznie zresetowana do "brak w magazynie" (stąd wiersze N/A
).
Rozumiem semantyczną różnicę między posiadaniem czegoś w magazynie a możliwością sprzedaży, ale nadal nie wiem jaka jest różnica semantyczna między isSaleable()/isSalable() i isAvailable(). Po co używać jednego z drugim, kiedy w każdej sytuacji, o której myślę, że robią to samo (patrz pytanie edytowane)? Mówię "o czym mogę myśleć", ponieważ chciałbym się dowiedzieć, czy są sytuacje, o których nie myślałem, które mogłyby wprowadzić rozróżnienie między tymi metodami, ponieważ teraz mam wrażenie, że jedno z nich jest bezużyteczne, co uważam za trochę szybka do osądzenia. – pancake
W edytowanym pytaniu napisałeś , gdy zaległości są wyłączone, a ilość zapasów spadnie poniżej 1, dostępność zapasów zostanie automatycznie zresetowana do stanu "niedostępny" Istnieje również flaga "stock_is_changed_automatically", której używam do wyświetlania przedmioty, które (technicznie) nie są zinwentaryzowane i są wyraźnie dostępne w magazynie, zaległe zlecenia i qty = 0 – elcash
To przydatne informacje, dziękuję za to. Nie chcę wydawać się niewdzięczny, ale nadal nie wiem, kiedy używać isSaleable i kiedy używać JestAvailable, kiedy * wydają się * robić to samo. Obecnie buduję motyw, więc chciałbym to naprawić. – pancake