2011-01-08 9 views
2

「特別価格」の後に「特別価格」を戻すと、nullになりました。だから、基本的に、私はこのコードを使用してプログラム私の製品の特別価格を更新するとき:Magento特別価格の更新

$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!"; 

しかし、私はMagentoの製品のウィザードは私が私の製品の新しい特別価格を設定することはできませんnullに私の特別価格を更新した後に。私がフォームを保存すると、エラーが発生せず、特別価格の変更にも影響しません。どうしましたか?!

+0

に役立ちますあなたはロギングが有効になっていることを確認し、関心のないエントリがexception.logまたはSYSTEM.LOGに存在しないことがありますか?あなたはそれらから関連性のあるものを投稿できますか? –

+1

問題は面白かったです!私はこのコードを3つの異なる方法でAPIとダイレクトdbアクセスを使って書いた。結果は同じで、Magentoのインストールに間違っていて、他のインストールで魅力的なものがあったことが判明した!愚かなMagento! – Farid

+0

Magento 1.4.2.0でバグを再現しました。すべてが計画どおりに機能します。 –

答えて

5

これを解決するには、あなたに合ったものを選んでください。 あなたのような過去に「のToDate」を設定することができ、次のいずれか

->setSpecialToDate(date("m-d-Y", strtotime('25 year'))); 
:ちょうどあなたが戻ってそれを設定したい場合は、あなたのような将来的には「のToDate」を設定する必要がありますので注意してください

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

または 'null'の代わりに、空の文字列 ''を挿入するだけです。以下のような はそう:

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

希望、これは誰か出て

関連する問題