2011-01-08 7 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!"; 

을하지만 null로 내 특별 가격을 업데이트 한 후 젠토 제품 마법사가 내 제품에 대한 새로운 특별 가격을 설정할 수 없습니다 : 그러니까 기본적으로 내가 업데이트 할 때 내 제품의 특별 가격 프로그래밍이 코드를 사용. 양식을 저장하면 오류가 발생하지 않으며 특별 가격의 변경 사항에도 영향을 미치지 않으며 여전히 null입니다. 뭐가 문제 야?!

+0

하는 데 도움이? 그들과 관련이있는 것을 게시 할 수 있습니까? –

+1

문제는 너무 재미있었습니다! API와 직접 db 액세스를 사용하여 3 가지 다른 방법으로이 코드를 작성했으며 그 결과는 동일했습니다. 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() 

희망이 거기에 대한 관심의 어떤 항목이 exception.log 없거나 SYSTEM.LOG 것을 로깅이 설정되어 있는지 확인 했 누군가 밖으로

관련 문제