2014-01-27 5 views
1

У меня проблема с добавлением цены на уровне продукта по коду. Я провел некоторое исследование, что есть API-интерфейс magento, который можно использовать для добавления цены уровня. Однако, поскольку я настроил наш magento и добавил новое поле к цене уровня, что является «производственным временем», я не знаю, как добавить цену уровня через API.Magento добавляет цену уровня программно, но с настраиваемыми полями

Вот пример код

$proxy = new SoapClient(Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'/api/soap/?wsdl'); 
$sessionId = $proxy->login('API user','API Key'); 
$tierPrices[] = array(
    'website'   => 'all', 
    'customer_group_id' => 'all', 
    'production_time => $data[2], 
    'qty'    => $data[3], 
    'price'    => $data[4] 
); 
try { 
     $proxy->call($sessionId, 'product_tier_price.update', array($sku, $tierPrices)); 
    } catch (Exception $e) { 
     $e->getMessage() . "\n"; 
} 

Я получаю сообщение об ошибке говорит «недействительная цена уровня».

Любая идея, почему это происходит? или есть ли другие способы добавить цены уровня?

спасибо.

ответ

-1

Лучше, чем API, где далеко не все функции, которые вы можете использовать стандартный Magento скрипт, вам нужно только быть размещены в любом месте в папке Magento:

require("../../app/Mage.php"); 
Mage::init(); 

// Set an Admin Session 
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
Mage::getSingleton('core/session', array('name' => 'adminhtml')); 
$userModel = Mage::getModel('admin/user'); 
$userModel->setUserId(1); 
$session = Mage::getSingleton('admin/session'); 
$session->setUser($userModel); 
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); 


foreach ($youritemlist as $item) { 


    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$item); 

    if(is_object($product)) {    


       $product->setTierPrice($yourprice); 
       echo "..(set).."; 


         $product->save();       

         echo "..saved\n";          

     }; // end testing of product exist    


}; // enf foreach 
+0

Было бы полезно, если бы вы показали, как правильно установить $ yourprice. –

1

Я обнаружил, что это проще загрузить модель, что API использует для Tiered Prices так, чтобы он мог помочь вам, подтвердив ваши данные для вас.

$tierPrices = array(); 

$tierPrices[] = array(
    'customer_group_id' => 1,  // or 'all' or whatever your customer group ID is 
    'qty'    => 1,  // Must be greater than 0 
    'price'    => 5.99, // Use an int here, don't currency format 
    'website_id'  => 0  // or whatever website ID you need to set this to 
); 

// Set more tiered prices here if you'd like... 

$tierPriceModel = Mage::getModel('catalog/product_attribute_tierprice_api'); 

// Assume 12345 is your product ID 
$tierPriceModel->update(12345, $tierPrices); 
0

Fo которого, как я, которые задавались вопросом, почему цены уровня не были обновлены с учетом website_id это потому, что есть ошибка в @Tyler В. код или код апи изменилось.

Это правильный способ форматирования новых цен яруса:

$tierPrices[] = array(
    'customer_group_id' => 'all',  
    'qty'    => 1,  
    'price'    => 5.99,  
    'website'  => 0   
); 

Это уже не website_id но сайт при указании сайта в ценовом массиве уровня!