TL; DR : Existe alguma razão para que os produtos simples associados a um produto configurável tenham que estar no mesmo conjunto de atributos que o próprio produto configurável? Quero dizer, existe algum motivo técnico ? Eu sei o motivo do "senso comum". Se você vende um par de sapatos , todas as versões, dependendo da cor e tamanho, também precisam ser sapatos .
Versão longa : tive a tarefa de "mesclar" alguns produtos configuráveis. Quero dizer de 2 ou mais para fazer apenas um. Eu não queria fazê-los manualmente por causa da quantidade de produtos e não queria passar por$product->load(..)->set...()->save()
devido à quantidade de tempo que levou para executar o script. Então, eu interrompi o processo porque tinha certeza de que nenhum dos produtos simples se sobrepunha. Houve uma combinação única de tamanho e cor. Eu fiz isso:
Mage::getResourceSingleton('catalog/product_type_configurable')
->saveProducts($mainConfigrableProduct, $simpleProductIds);
onde $simpleProductIds
existe uma matriz de todos os IDs de produtos simples associados todos aos produtos configuráveis que precisam ser mesclados.
Isso funcionou perfeitamente para a maioria dos produtos, mas havia alguns que apresentavam problemas.
Se eu chamasse
$productIds = $product->getTypeInstance()->getUsedProductIds()
Eu obteria todos os IDs de produtos simples, mas no back-end apenas alguns deles apareceram. Depois de cavar por algum tempo, descobri que os únicos mostrados eram aqueles no mesmo atributo definido como o produto configurável. O outro conjunto de atributos é muito semelhante ao primeiro, apenas algumas pequenas diferenças, mas contém os atributos configuráveis (tamanho e cor).
E agora a coisa estranha. No front-end, esperava ver todos os produtos ($ productIds no código acima) ou apenas os produtos no mesmo conjunto de atributos. Bem, havia algo entre.
- 20 IDs de produtos associados - 5 tamanhos, 4 cores
- 10 produtos associados no back-end - 5 tamanhos, 2 cores - as outras 2 cores (10 produtos) estavam em um conjunto de atributos diferente
- 15 combinações no frontend - 5 tamanhos 3 cores (???)
Consegui resolver o problema alterando o conjunto de atributos para os produtos que não apareceram, mas ainda estou confuso.
Nota : Não tente fazer isso em casa. Ou você pode experimentá-lo em casa, mas não em um servidor ativo.
Usamos uma extensão chamada RapidFlow da Unirgy (que não posso recomendar o suficiente) para importação e exportação. Um dos recursos da versão Pro permite alterar os conjuntos de atributos. Outra é a criação de produtos via importação de CSV. Ocasionalmente, criamos novos produtos simples para configuráveis e, por acidente, esses produtos simples têm conjuntos de atributos diferentes dos de seus pais.
O Rapidflow importará esses produtos com prazer e alterará os conjuntos de atributos. Nós tendemos a não ficar felizes com os resultados. Os produtos configuráveis configurados por atributos fora do conjunto de atributos falham na renderização no administrador do produto e devem ser reparados. Se não alterarmos o conjunto de atributos dos pais, como você notou, os filhos simplesmente não conseguem ser associados adequadamente aos pais. Eles existem como entidades Magento, podem ser editados, mas não aparecerão como filhos na página de produto de front-end ou na lista de produtos associada do pai configurável.
Portanto, do ponto de vista puramente técnico, é possível que produtos simples estejam em um conjunto de atributos diferente do pai. Mas como esse comportamento não é suportado, mesmo no EE, o Razor da Occam diz que quando eles estavam projetando o Magento, os desenvolvedores do Varien não viram a necessidade.
fonte