It might be quite a simple question, but I've found no valid related answer yet.

I'm trying to import sales prices from CRM with a custom module.

I've tried:

$item->setData('group_price', array(array ('website_id'=>0, 'cust_group'=>$custGroup->getId(), 'price'=>$price->precio)));

But when the price for the customer group does exist I get the following error:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '14729-0-784-0' for key 'CC12C83765B562314470A24F2BDD0F36'

I've tried several things, including obtaining existing data with:

$group_prices = $item->getData('group_price');

in order to merge results with the new one, deleting all group prices before I set them again. But I don't seem to get the group prices array I was expecting...

Can anyone help to get this solved?

3 Answers 3


Group pricing in Magento is relatively new and not a lot of model based functionality is available for this.

If you have the Store ID handy you can remove a single group price or include the new price as follows:

$product = Mage::getModel('catalog/product')->setStoreId(2)->load(1234);
$product->setData('group_price',array ());

Unfortunately, the situations I've faced have involved bulk group price updating and running the above multiple times isn't ideal. In which case I have had to use Direct SQL to clear the data for a particular product so you don't get the duplicate entry error followed by adding your new group prices again.

 * Clear out the group price table for a product
 * @param Mage_Catalog_Model_Product $product
private function _emptyGroupPrices($product) {
    /* @var $sql Mage_Core_Model_Resource */
    $sql = Mage::getSingleton('core/resource')->getConnection('core_write');
    $sql->query('delete from `catalog_product_entity_group_price` where `entity_id` = '.$product->getId());
  • Thanks, Raj, but I think I found another solution and I just don't like to make direct SQL changes in Magento's database. You might always be missing something that should be executed right before or after the database modification. Anyway, if I find my answer to be incorrect, I'll use your solution instead.
    – Jared
    Feb 17, 2014 at 10:16
  • I'd vote up your answer, but I just don't have enough points to reward your help.
    – Jared
    Feb 17, 2014 at 10:17
  • Yeah, it is a rather crude way of doing it - unfortunately, I can't find a better way. Don't worry about not being able to vote up the answer - I know the feeling as I can't vote up answers yet either.
    – Raj
    Feb 18, 2014 at 9:53

Finally I think I came out with a solution.

It occured to me, as I said, that since group_prices is an array assigned to 'group_price' attribute for item, what I should do is to set the whole array everytime. So:

$group_prices = $item->getData('group_price');
if (is_null($group_prices)) {
    $attribute = $item->getResource()->getAttribute('group_price');
    if ($attribute) {
        $group_prices = $item->getData('group_price');

    $group_prices = array();

$new_price = array(array ('website_id'=>0, 

$group_prices = array_merge($group_prices, $new_price);
$item->setData('group_price', $group_prices);

Looks like it worked just fine, anyway, I wouldn't mind if someone completed or corrected this answer.

  • This doesn't allow you to update a product that has an existing group price at least for me this didn't work
    – Joel Davey
    Jun 15, 2015 at 11:37

There doesn't seem to be a reliable way to do this, I've tried the above and tried other methods e.g updateAttributes. Here's my version for re-indexing and clearing Lesti's FPC along with updating the grouped product.

 private function _emptyGroupPrices($product) {
    /* @var $sql Mage_Core_Model_Resource */
    $sql = Mage::getSingleton('core/resource')->getConnection('core_write');
    $sql->query('delete from `catalog_product_entity_group_price` where `entity_id` = '.$product->getId());

 private function _updateGroupPrice($product,$groupPrice,$groupId) {
    $sql = Mage::getSingleton('core/resource')->getConnection('core_write');
    $sql->query('INSERT INTO `catalog_product_entity_group_price` (entity_id,all_groups,customer_group_id,value,website_id) VALUES ("'.$product->getId().'","0","'.$groupId.'","'.$groupPrice.'","0")');

$newPrice = "10.00";


Mage::getSingleton('fpc/fpc')->clean(sha1('product_' . $product->getId()));

$ids = $this->_getAssociatedProductIds($product->getId());
foreach($ids as $id) {
    Mage::getSingleton('fpc/fpc')->clean(sha1('product_' . $id));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.