2

我正在尝试使用 Mage 更新 Magento 中的客户组价格(因为我在 SOAP V2 API 中找不到这样做的方法)。我找到了一个 StackOverflow 示例,但它对我不起作用。我正在使用的代码如下:

<?php
  include_once '../App/Mage.php';
  Mage::app();

  $productID = $_GET["id"];
  $product = Mage::getModel('catalog/product')->load($productID);


  $groupPricingData = array(array('price_id'=>1,'website_id'=>0, 
                                'cust_group'=>3, 'price'=>666));


  $product->setData('group_price',$groupPricingData);
  $product->save();

  echo "true"; 

?>

如果我使用已设置任何客户价格的产品,我会收到以下错误。如果我尝试没有现有价格的产品,它不会出错,但不会创建客户组价格。

SCREAM: Error suppression ignored for 
( ! ) Fatal error: Uncaught exception 'Mage_Eav_Model_Entity_Attribute_Exception' with
message 'SQLSTATE[23000]: Integrity constraint violation: 1062
Duplicate entry '24-0-3-0' for key 'CC12C83765B562314470A24F2BDD0F36'' in      
C:\wamp\www\magento\app\code\core\Mage\Core\Model\Config.php on line 1348 
( ! ) Mage_Eav_Model_Entity_Attribute_Exception: SQLSTATE[23000]: 
Integrity constraint violation: 1062 Duplicate entry '24-0-3-0' for   
key 'CC12C83765B562314470A24F2BDD0F36' in    
C:\wamp\www\magento\app\code\core\Mage\Core\Model\Config.php on line 1348 
4

2 回答 2

1

尝试将此扩展用于 magmi 团体价格:

https://github.com/tim-bezhashvyly/magmi-grouped-price-plugin

于 2013-03-18T12:00:01.020 回答
1

我一直在网上搜寻有关如何正确“更新” Magento 产品记录上的团体价格的答案,但没有成功。倾注于 Magento 的源代码也没有让我到任何地方。但是,我发现了两种关于如何清除现有团体价格的解决方案,这样您就不会收到此错误。

1 - 直接 SQL 查询以删除现有的组价数据

$coreResource = Mage::getSingleton('core/resource');
$conn         = $coreResource->getConnection('core_write');
$table_name   = $coreResource->getTableName('catalog_product_entity_group_price');
$conn->delete($table_name, array('entity_id = '.$product->getId()));

2-将产品的组价设置为空,并保存产品。

$product->setData('group_price', array())->save();

在设置您的团体价格数据和保存产品之前执行其中任何一个(无需同时执行),将避免违反完整性约束,因为它们有效地删除了产品的现有团体价格。方法 1 感觉很粗略,因为我们通常不进行直接的 sql 查询,而是依赖模型类来为我们封装这个逻辑已经内置的方法,但是在我的测试环境(Magento 1.9)中它可以工作。方法 2 可能看起来更安全,但是它更耗费资源,因为它保存了整个产品记录,而我们真正需要做的就是更新/删除现有的团体价格。另外,它需要一个多余的保存,因为我们正在“保存以删除”现有的团体价格。

我建议之后重新索引产品价格,因为组价格数据也存储在“catalog_product_index_group_price”中。

于 2014-07-23T17:00:47.720 回答