2011-01-08 10 views
2

Ich versuche, "Sonderpreis" nach dem "Sonderpreis zu Datum" auf null zurückgesetzt. Also im Grunde, wenn ich Sonderpreis meines Produkts aktualisiere programmatisch mit diesem Code:Update Magento Sonderpreis

$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); 

$collection = Mage::getModel('catalog/product')->getCollection() 
     ->addStoreFilter() 
     ->addAttributeToFilter('special_price', array('gt' => 0)) 
     ->addAttributeToFilter('special_to_date', array('date' => true, 'to' => $todayDate)); 
echo "Total products found : ".count($collection); 
foreach ($collection as $product) 
{ 
     $product->setSpecialPrice(null) 
     ->setSpecialFromDate(null) 
     ->setSpecialToDate(null) 
     ->save(); 
} 

echo "<br/> Done!"; 

Aber nachdem ich meinen Sonderpreis aktualisiere die magento Produkt-Assistenten auf null hat mich nicht einen neuen Sonderpreis für mein Produkt gesetzt. Wenn ich das Formular speichere, gibt es mir weder einen Fehler noch irgendwelche Änderungen im Sonderpreis und es ist immer noch null! Was ist los mit dir?!

+0

Haben Sie überprüft, dass die Protokollierung aktiviert ist und dass es keine Einträge von Interesse in Exception.log oder system.log? Kannst du irgendetwas Relevantes von ihnen posten? –

+1

Das Problem war so lustig! Ich habe diesen Code auf 3 verschiedene Arten mit API und direktem DB-Zugriff geschrieben und das Ergebnis war das gleiche, es stellte sich heraus, dass etwas mit meiner Magento-Installation nicht stimmte und das funktioniert wie Charme in anderen Installationen! Dummes Magento! – Farid

+0

Ich kann Ihren Fehler auf Magento 1.4.2.0 nicht reproduzieren. Alles funktioniert wie geplant. –

Antwort

5

Um dies zu lösen, wählen Sie, was für Sie mehr passt. Sie können entweder die „ToDate“ in der Vergangenheit wie:

->setSpecialToDate(date("m-d-Y", strtotime('-25 year'))); 

nur aufpassen, dass, wenn Sie es zurück setzen möchten, werden Sie die „ToDate“ in Zukunft wie einstellen:

->setSpecialToDate(date("m-d-Y", strtotime('25 year'))); 

oder anstelle von 'null', fügen Sie einfach eine leere Zeichenfolge '' ein. wie so:

$product->setSpecialPrice('') 
     ->setSpecialToDate('') 
     ->setSpecialFromDate('') 
     ->save() 

Hoffnung hilft dies jemand aus