J'ai essayé quelques extraits trouvés en ligne mais sans succès.
J'essaie simplement de définir un produit pour qu'il soit en stock / en rupture de stock avec le code, c'est pour autant que je suis arrivé:
$product = Mage::getModel('catalog/product')->load( 'id' );
$stockItem = $product->getStockItem();
$stockItem->setData('manage_stock', 1);
$stockItem->setData('is_in_stock', 0);
$stockItem->setData('use_config_notify_stock_qty', 0);
$stockItem->setData('qty', 0);
$stockItem->save();
$product->save();
Il ne modifie pas les informations sur le produit lorsqu'il est affiché via le panneau d'administration, des idées?
inventory
ce-1.6.2.0
Mike
la source
la source
Réponses:
Essayez plutôt ceci:
puis définissez et enregistrez vos modifications comme précédemment.
la source
Essayez ce qui suit. vous ne devriez pas avoir à charger un nouvel objet stock
Et enregistrez simplement le produit comme vous l'avez fait dans votre script
la source
J'ai eu un problème similaire, mais avec la différence qu'il n'y avait aucun objet de stock pour un produit particulier. Lorsque cela se produit, il est bon de créer l'objet article en stock initialement avant de définir la quantité (sauf s'il existe un moyen pour eux en même temps).
la source
$product->save();
- est-il obligatoire après avoir enregistré$stockItem
?essayant sur magento 1.8.1.0 CE et n'a pas pu enregistrer "qty" en raison de la valeur "type_id" manquante (pour le nouvel élément). résolu par
la source
En tant qu'addition à toutes les réponses, il peut être judicieux d'utiliser
addData
au lieu de moinssetData
pour être sûr de mettre à jour les informations et pas seulement de les configurer.la source
Je veux suggérer un changement à la réponse de Raj pour soutenir des situations étranges. Pour que la réponse fonctionne, j'ai dû commenter l'instruction if, car les produits créés de manière programmatique peuvent avoir des données de stock partielles mais incomplètes. C'était la seule façon pour moi de le faire fonctionner.
la source
Voici une cause possible qui m'a coûté environ 2 heures de travail: j'essayais cela depuis des siècles en me demandant pourquoi cela ne sauverait pas. J'ai eu une
exit;
déclaration php après le->save()
et un tas d'échos afin qu'elle ne passe pas automatiquement à l'écran suivant (pour aider au débogage).Cependant, les validations dans la base de données doivent se produire tard dans le chargement de la page, elles ne seraient pas enregistrées pour moi jusqu'à ce que j'aie supprimé le
exit;
!la source
Comme dans d'autres réponses suggérées, on peut utiliser
Mage_CatalogInventory_Model_Stock_Item
directement la classe . Mais il faut référencer le produit correctement via un appelsetProduct
pour avoir un code de travail à la fois pour les articles en stock nouveaux et existants.Solution alternative
Cependant, si vous appelez de
$product->save
toute façon, je définirais simplement les données de stock$product->setStockdata($array)
comme suit. De cette façon, Magento crée un article de stock correct à partir des données de stock. Le gros avantage est que la mise à jour du stock se produit dans la même transaction que$product->save()
. Ceci est important pour la cohérence des données.la source
Ceci est mon code C #
is_in_stockSpecified
est importantCeci est la sortie
la source