I am trying to set customer group specific price for product like this:
// Parse group prices
$groupPrices = array();
foreach ($productInfo->Prices as $groupPrice) {
$groupPrices[] = array(
'website_id' => 0,
'cust_group' => intval($groupPrice->GroupId),
'price' => floatval($groupPrice->GroupPrice)
);
}
// Load product id by sku
$productId = (int)Mage::getModel('catalog/product')->getIdBySku($productInfo->Sku);
if (!$productId)
throw new Exception('Product does not exists by SKU: '. $productInfo->Sku);
// Load product
$product = Mage::getModel('catalog/product')
->load($productId);
// Clear any previous group prices
$product->setGroupPrice(null);
$product->save();
// Save new group prices
$product->setGroupPrice($groupPrices);
$product->save();
When this code runs, I am getting the following error:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
'86-1-0-10.0000-0' for key 'E8AB433B9ACB00343ABB312AD2FAB087', query
was: INSERT INTOcatalog_product_entity_tier_price
(entity_id
,
all_groups
,customer_group_id
,qty
,value
,website_id
)
VALUES (?, ?, ?, ?, ?, ?)
Any ideas what might be wrong?
Best Answer
I have found the problem.
If a product already has "Tier Prices" defined, updating customer group prices somehow causes that error I reported above.
So, this is how I have solved it and it's working: