61 votes

Quelle est la différence entre isSaleable () et isAvailable ()?

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()et isSaleable() 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).

-1voto

elcash Points 310

Je vois ceux ayant des différences sémantiques. Un élément qui n'est pas en stock peuvent encore être commercialisé, si l'élément est défini pour permettre à des commandes en souffrance.

Aussi loin que je peux dire, il ressemble isAvailable vérifie un type de produit instance pour voir si le type de produit pourrait être pour la vente si elle est en effet disponible.

Donc, pour oser une deviner le moment où vous pourriez choisir l'un sur l'autre:

Si vous êtes à la vérification de chaque produit pour voir si le produit est prêt pour la vente, vous devez utiliser isSalable(), qu'il appellera isAvailable().

Pour vérifier si un produit (dont le type que vous ne connaissez pas la main) pourrait être vendu, et je suppose que de sauter l'étape de vérification du produit, le type, vous pouvez l'appeler isAvailable() sur le produit.

isAvailable() vérifie si un produit est de type vendable.

isSalable() vérifie si un produit est vendable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X