Magento: Automatisches Ändern der "Lagerbestandsverfügbarkeit" von "Nicht vorrätig" in "Vorrätig" (und umgekehrt) bei Mengenänderung

  • Ich habe also nach einer Möglichkeit gesucht, die Verfügbarkeit von Lagerbeständen wieder in Lagerbestand zu ändern, wenn das Mengenfeld größer als 0 ist. Das System ändert die Lagerbestandsverfügbarkeit bereits automatisch, wenn Sie dies tun Setzen Sie die Menge auf 0 und speichern Sie das Produkt. Ich möchte eine Möglichkeit, es wieder auf Lager zu setzen, wenn Sie die Menge größer als 0 festlegen und das Produkt speichern.

    Nun, ich glaube, ich habe einen einfachen Weg gefunden, der in selbst macht mich nervös. Ich wollte also an Sie Gurus schreiben, um zu sehen, ob dies sicher, korrekt und in Ordnung ist.

    In app / design / adminhtml / default / default / template /catalog/product/tab/inventory.phtml

    Ich habe das geändert:

    <?php foreach ($this->getStockOption() as $option): ?> <?php $_selected = ($option['value'] == $this->getFieldValue('is_in_stock')) ? 'selected="selected"' : '' ?> <option value="<?php echo $option['value'] ?>" <?php echo $_selected ?>><?php echo $option['label'] ?></option> <?php endforeach; ?>

    Dazu:

    <?php if( ($this->getFieldValue('qty')*1) > 0): ?> <option selected="selected" value="1">In Stock</option> <?php else: ?> <option selected="selected" value="0">Out of Stock</option> <?php endif; ?>

    Alles was ich tun muss An dieser Stelle ist eine Live-Site, so dass Sie meine Besorgnis verstehen können.

    Bitte lassen Sie mich wissen, ob dies die beabsichtigte Wirkung haben wird (es scheint so, aber es scheint zu vereinfachend.) ...)

    07 September 2013
    Willkarka91
5 answers
  • Ich glaube, Sie können das Magento-Ereignis catalog_product_save_after verwenden. Erstellen Sie eine Observer-Methode, die bei event catalog_product_save_after Folgendes ausführt:

     public function catalog_product_save_after($observer) {
        $product = $observer->getProduct();
        $stockData = $product->getStockData();
    
        if ( $product && $stockData['qty'] ) {
            $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getEntityId()); // Load the stock for this product
            $stock->setData('is_in_stock', 1); // Set the Product to InStock                               
            $stock->save(); // Save
        }
    }
     
    26 June 2014
    sh0berlu1s
  • Erstellen Sie einfach einen cron-Job mit diesem Code-Snippet:

     public function setBackInStock()
    {
        $collection = Mage::getResourceModel('cataloginventory/stock_item_collection');
        $outQty = Mage::getStoreConfig('cataloginventory/item/options_min_qty');
        $collection->addFieldToFilter('qty', array('gt' => $outQty));
        $collection->addFieldToFilter('is_in_stock', 0);
    
        foreach($collection as $item) {
            $item->setData('is_in_stock', 1);
        }
        $collection->save();
    }
     

    Kleine Notiz, die Sie festlegen können Cron-Job für jede Minute, denn wenn keine Ergebnisse vorhanden sind, verbraucht der Job keine Zeit / Ressourcen

    02 July 2015
    golaod
  • Eine andere einfache Lösung besteht darin, eine gespeicherte Prozedur in der DB zu erstellen und sie mit einem Ereignis aufzurufen.

     ############################################# START : Enable Stock Status
    DELIMITER //
    CREATE PROCEDURE EnableStock()
    BEGIN
    
    -- UPDATE
    UPDATE cataloginventory_stock_status
    SET stock_status=1
    WHERE qty>0;  
    
    -- UPDATE
    UPDATE cataloginventory_stock_status
    SET stock_status=0
    WHERE qty<0;  
    
    END; //
    DELIMITER ;
    
    ############################################# END : Enable Stock Status
    
    #Create event
    CREATE EVENT CallEnableStock
        ON SCHEDULE EVERY 1 HOUR
        DO
          CALL EnableStock();
     
    22 March 2018
    Altravista
  • Dies musste ich tun.

             var stock_data = new catalogInventoryStockItemUpdateEntity()
            {
                qty = quantity,
                is_in_stock = inStock,
                manage_stock = stockManaged,
                is_in_stockSpecified = true,
            };
     

    is_in_stockSpezifiziert ist wichtig

    Ich habe die SOAP-API zur Aktualisierung des Bestandsstatus verwendet.

    Magento: Automatisches Ändern der "Lagerbestandsverfügbarkeit" von "Nicht vorrätig" in "Vorrätig" (und umgekehrt) bei Mengenänderung

    13 July 2017
    phanvugiap
  • Der Text zur Bestandsverfügbarkeit kann auf der Registerkarte Inventar der Produkteinstellungen behandelt werden, auf derselben Registerkarte wie das Feld für die Bestandsmenge. Da Sie Ihre Warenmenge trotzdem manuell eingeben müssen, würde ich vorschlagen, die Vorratsverfügbarkeitseinstellung einfach auf "In Stock" zu ändern, wenn Sie die neue Menge für Ihr Produkt eingeben.

    02 February 2012
    tomakun