Producto asociado en múltiples posiciones en el mismo producto agrupado
-
12-12-2019 - |
Pregunta
Estamos creando productos agrupados basados en imágenes de motores y esquemas de piezas.Esos esquemas tienen marcadores numéricos para cada pieza específica del esquema y podemos hacer coincidir la posición del producto asociado con el marcador numérico en el esquema.
Nuestro problema es que algunos esquemas tienen la misma parte en múltiples posiciones.Por ejemplo, la misma lavadora puede aparecer en las posiciones 1, 15 y 40.La grilla de productos asociada sólo nos permite indicar una posición para esa lavadora.
¿Alguna idea sobre cómo podríamos configurar un producto agrupado para permitir múltiples posiciones de un producto asociado?He estado investigando durante varias horas tratando de encontrar una manera de agregar un atributo adicional a un producto asociado, pero no encuentro ninguna posibilidad allí.
Solución
Después de más horas buscando en línea, pude encontrar una solución basada en una publicación en otro foro de magento.Voy a reescribirlo aquí con la esperanza de que ayude a alguien más que lo encuentre.
Para este enfoque, decidí agregar una columna personalizada en la cuadrícula de productos asociados para mi producto agrupado.Para agregar la nueva columna copié el archivo en:app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php
en mi código local en: app/code/localMage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php
En la función _prepareColumns()` agregué esto:
$this->addColumn('diagrampos', array(
'header' => Mage::helper('catalog')->__('Other Position'),
'name' => 'diagrampos',
'index' => 'diagrampos',
'width' => '60px',
'editable' => true
));
Más abajo en ese archivo necesitamos cambiar el getSelectedGroupedProducts()
en la línea 214 para que nuestras actualizaciones en el administrador se guarden correctamente.Así es como debería verse ahora:
public function getSelectedGroupedProducts()
{
$associatedProducts = Mage::registry('current_product')->getTypeInstance(true)
->getAssociatedProducts(Mage::registry('current_product'));
$products = array();
foreach ($associatedProducts as $product) {
$products[$product->getId()] = array(
'qty' => $product->getQty(),
'position' => $product->getPosition(),
'diagrampos' => $product->getDiagrampos()
);
}
return $products;
}
Luego necesitamos actualizar la tabla de la base de datos para catalog_product_link_attribute
.Agregué los siguientes valores como una nueva fila a la tabla.Es posible que deba ajustar el primer valor según el incremento actual en su tabla:
product_link_attribute_id => 6
link_type_id => 3
product_link_attribute_code => diagrampos
data_type => varchar
A continuación tenemos que cambiar app/design/adminhtml/default/default/layout/catalog.xml
para que el serializador capte nuestro nuevo campo.Necesitamos modificar el diseño debajo del nodo. <adminhtml_catalog_product_supergroup>
agregando una nueva línea debajo addColumnInputName
para que quede así:
<action method="addColumnInputName">
<input_name>qty</input_name>
<input_name>position</input_name>
<input_name>diagrampos</input_name>
</action>
Ahora puedo agregar una lista de números enteros separados por comas en ese campo de entrada.Con una personalización moderada de las plantillas de productos agrupados, ahora puedo mostrar el mismo SKU de producto asociado en varias posiciones.