Je suis en train de travailler sur l'affichage de la disponibilité en stock sur le (individuelle) à la page de produit de mon thème Magento, et il y a quelque chose que je ne comprends pas complètement à ce sujet.
Je vois deux méthodes utilisées dans les modèles pour vérifier si un produit est disponible à la vente:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
Mes propres conclusions:
Je vois qu' isSalable()
(qui, à son tour, est appelée en isSaleable()
) des appels isAvailable()
mais distribue également deux événements (catalog_product_is_salable_before
et catalog_product_is_salable_after
).
Sur la façade, j'ai remarqué que dans Magento template de base isAvailable()
est utilisé pour décider d'afficher le produit comme étant "en stock" ou "rupture de stock"; isSaleable()
est utilisée pour décider de quelque chose comme si de montrer une "Ajouter au Panier".
Sur le backend j'ai remarqué que lorsque la quantité en stock est à zéro et les reliquats sont pas autorisés, la disponibilité en stock d'un produit est "out of stock". Lorsque la quantité en stock est à zéro et les reliquats sont autorisés, la disponibilité en stock d'un produit reste inchangée.
Question:
Les propriétés de la "disponibilité en stock" et "quantité en stock" sont évidemment liés les uns avec les autres et le dit des méthodes de PHP. Je voudrais savoir:
ce que la sémantique de la différence entre les méthodes de PHP
isAvailable()
etisSaleable()
est et pourquoi je voudrais utiliser l'un sur l'autre;ce que je ne semblent pas encore au courant de leur relation avec ces propriétés et Magento comportement.
Je vous remercie.
EDIT:
J'ai essayé de chaque combinaison de la quantité de stock (-1,0,1), la disponibilité des stocks (en/de) et les reliquats de commande (on/off) pour un produit, et voici le résultat:
Saint Qu'BckOrd Saint-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
Juste par souci d'exhaustivité:
Saint-Av 0 = en rupture de stock Saint-Av 1 = en stock BckOrd 0 = pas de commande en suspens permis BckOrd 1 = les reliquats sont autorisés
Il est le stock de la disponibilité de l'interrupteur dans Magento qui contrôle la valeur de retour de toutes les méthodes de PHP, mais quand les reliquats de commande sont éteints et la quantité de stock descend en dessous de 1, la disponibilité en stock sera automatiquement réinitialisé à "out of stock" (d'où l' N/A
des lignes).