[UPDATED]Esta solução só é indicada para quem usa o TBT Enhancedgrid, se você deseja esta funcionalidade recomendo utilizar o módulo Flagbit Change Attribute Set disponível aqui:
http://www.magentocommerce.com/magento-connect/flagbit-change-attribute-set.html
Apesar de não constar compatibilidade com o Magento 1.7.x, funciona!

Este é o meu primeiro post sobre magento, acredito que deverá ser útil, principalmente em pt_BR.

O magento não permite nativamente que esta operação seja realizado obrigando ao administrador exportar e importar os produtos.
É um pouco chato isso pois perde-se muito tempo, mas com essa simples solução o processo se torna bem simples e possível diretamente através da listagem de produtos.
Uma nova ação é adicionada à lista, permitindo assim escolher o grupo de atributos para os produtos selecionados.

 Mão na massa:

Copie o arquivo em app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php para app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php

Se os diretórios/estrutura não existirem, crie!

Edite o arquivo Grid.php e (na versão 1.7.0.2) adicione na função  _prepareMassaction(), linha 286:

        $sets = Mage::getResourceModel('eav/entity_attribute_set_collection')
                ->setEntityTypeFilter(Mage::getModel('catalog/product')
                ->getResource()->getTypeId())->load()->toOptionHash();

        array_unshift($statuses, array('label'=>'', 'value'=>''));

        $this->getMassactionBlock()->addItem('attribute_set', array(
            'label'=> 'Alterar Grupo de Atributos',
            'url' => $this->getUrl('*/*/massAttributeSet', array('_current'=>true)),
            'additional' => array(
                'visibility' => array(
                    'name' => 'attribute_set',
                    'type' => 'select',
                    'class' => 'required-entry',
                    'label' => Mage::helper('catalog')->__('Attribute Set'),
                    'values' => $sets
                )
            )
            ));

Copie o arquivo em app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php para app/code/local/Mage/Adminhtml/controllers/Catalog/ProductController.php

Se os diretórios/estrutura não existirem, crie!

Edite o arquivo ProductController.php e (na versão 1.7.0.2) adicione ao final da classe a função massAttributeSetAction, na linha 1103:

public function massAttributeSetAction(){
        $productIds = $this->getRequest()->getParam('product');
        $storeId = (int)$this->getRequest()->getParam('store', 0);
        if(!is_array($productIds)) {
            $this->_getSession()->addError($this->__('Please select product(s)'));
        } else {
            try {
                foreach ($productIds as $productId) {
                $product = Mage::getSingleton('catalog/product')
                ->unsetData()
                ->setStoreId($storeId)
                ->load($productId)
                ->setAttributeSetId($this->getRequest()->getParam('attribute_set'))
                ->setIsMassupdate(true)
                ->save();
                }
                Mage::dispatchEvent('catalog_product_massupdate_after', array('products'=>$productIds));
                $this->_getSession()->addSuccess(
                $this->__('Total of %d record(s) were successfully updated', count($productIds)));
            } catch (Exception $e) {
                $this->_getSession()->addError($e->getMessage());
            }
        }
//        $this->_redirect('*/*/index', array('store'=>(int)$this->getRequest()->getParam('store', 0)));
        $this->_redirect('*/*/index');
}

Se você utilizar a extensão/módulo TBT Enhancedgrid, ela subscreve a customização em /local e estas alterações devem ser feitas nos mesmo arquivos mas só que em /app/community/TBT/Enhancedgrid/Block/Catalog/Product/Grid.php na linha 543 e em /app/controllers/Catalog/ProductController.php linha 153.

 

UPDATE:
Dependendo da configuração do PHP do seu servidor, específicamente para:

max_input_vars
e
Maximum execution time

A quantidade de produtos que poderão ser alterados ao mesmo tempo pode variar.

Este conteúdo foi postado 31 de maio de 2013 as 18:54 e está em Balneário Camboriú, Comércio Eletrônico, Customização, Gerencial, Loja, Magento, PHP, Software, Tecnologias da Informação Emergentes, Trabalho. Você pode receber este conteúdo através do feed RSS 2.0. Você pode deixar um comentário, ou trackback a partir de seu site.

2 Comentários para “Magento 1.7.0.2: Alterando o grupo de atributos de um produto pelo grid de produtos”

Renato escreveu:

Olá Luciano

Sua solução foi bem criativa para um grande problema!

Fiz as alterações e está exibindo ok opção “Alterar Grupo de Atributos”. Entretanto, quando clico em enviar, vai para outra página e exibe erro 404. Mesmo se retornar e selecionar um produto, exibe mesma mensagem erro 404 – página não encontrada.
Você pode me dar uma dica pra resolver esse problema?
Obrigado,
Renato – Vitrine das compras

Fuza escreveu:

altere a linha:
$this->_redirect(‘*/*/index’, array(‘store’=>(int)$this->getRequest()->getParam(‘store’, 0)));

para:
$this->_redirect(‘*/*/index’);

Deixe seu comentário.

XHTML: Você pode utilizar tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>