Magento以编程方式添加层级价格,但使用自定义字段

时间:2014-01-27 21:57:50

标签: php magento magento-1.6

我有一个关于按代码添加产品等级价格的问题。我做了一些研究,有一个magento API可以用来增加等级价格。但是,由于我已经定制了我们的magento并在层级价格中添加了一个新字段,即“生产时间”,我不知道如何通过API再添加层价格。

以下是示例代码

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

我会收到一个错误,上面写着“无效等级价格”。

知道为什么会这样吗?或者还有其他方法来增加等级价格吗?

谢谢。

3 个答案:

答案 0 :(得分:2)

我发现最简单的方法是加载API用于分层价格的模型,以便它可以为您验证数据,从而为您提供帮助。

$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);

答案 1 :(得分:0)

和我一样想知道为什么等级价格没有更新时考虑到website_id这是因为@Tyler V.代码中存在错误,或者api代码已经更改。

这是格式化新等级价格的正确方法:

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

当您将网站指定为等级价格数组时,不再是 website_id ,而是网站

答案 2 :(得分:-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