Sto lavorando alla visualizzazione della disponibilità di magazzino sulla pagina del prodotto (individuale) del mio tema Magento, e c'è qualcosa che non capisco completamente di questo.Qual è la differenza tra isSaleable() e isAvailable()?
vedo due metodi utilizzati nei modelli per verificare se un prodotto è disponibile per la vendita:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
mie scoperte:
vedo che isSalable()
(che a sua volta è chiamato da isSaleable()
) chiama isAvailable()
ma invia anche due eventi (catalog_product_is_salable_before
e catalog_product_is_salable_after
).
Sul fronted ho notato che nel modello base di Magento isAvailable()
viene utilizzato per decidere se visualizzare il prodotto come "disponibile" o "non disponibile"; isSaleable()
viene utilizzato per decidere qualcosa come se mostrare un pulsante "Aggiungi al carrello".
Sul backend ho notato che quando la quantità di magazzino diventa zero ei backorder sono non consentiti, la disponibilità di magazzino di un prodotto va a "esaurito". Quando la quantità di magazzino diventa zero ei backorder sono consentiti, la disponibilità di magazzino di un prodotto rimane invariata.
Domanda:
La proprietà "disponibilità di magazzino" e "quantità di riserva" sono ovviamente collegati tra loro e metodi PHP citati. Vorrei sapere:
ciò che il semantica differenza tra i metodi di PHP
isAvailable()
eisSaleable()
è e perché vorrei utilizzare uno sopra l'altro;cos'è che sembra non sapere ancora sulla loro relazione con queste proprietà e il comportamento di Magento.
Grazie.
EDIT:
Ho provato ogni combinazione di rilevanti quantità di stock (-1,0,1), disponibilità di magazzino (in/out) e ordini arretrati (on/off) per un prodotto, e questo è il risultato:
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
Solo per ragioni di completezza:
St.Av 0 = out of stock St.Av 1 = in stock BckOrd 0 = no backorders allowed BckOrd 1 = backorders are allowed
E 'l'interruttore magazzino disponibilità in Magento che controlla il valore di ritorno di tutti i metodi di PHP, ma quando ordini arretrati a la quantità di magazzino scende al di sotto di 1, la disponibilità di magazzino verrà automaticamente reimpostata su "esaurito" (quindi le righe N/A
).
Comprendo la differenza semantica tra l'avere qualcosa in magazzino e la possibilità di vendere qualcosa, ma non so ancora quale sia la differenza semantica tra isSaleable()/isSalable() e isAvailable(). Perché usarne uno sull'altro, quando in ogni situazione che posso pensare fanno la stessa cosa (vedi domanda modificata)? Dico "che posso pensare" perché vorrei sapere se ci sono situazioni che non ho pensato che potrebbero fare una distinzione tra questi metodi, perché ora ho la sensazione che uno di loro sia inutile, il che penso sia un po 'veloce per giudicare. – pancake
Nella tua domanda modificata, hai scritto quando i backorder sono disattivati e la quantità di stock scende sotto 1, la disponibilità di magazzino verrà automaticamente ripristinata a "esaurito" C'è anche una bandiera "stock_is_changed_automatically", che uso per mostrare articoli che sono (tecnicamente) non inventariati e che sono esplicitamente disponibili, ordini arretrati off e qty = 0 – elcash
Queste sono informazioni utili, grazie per questo. Non voglio sembrare ingrato, ma non so ancora quando usare isSaleable e quando usare isAvailable, quando * sembrano * fare la stessa cosa. Attualmente sto costruendo un tema, quindi mi piacerebbe farlo bene. – pancake