Isso é feito combinando seu conhecimento de observadores e config.xml. O Config.xml gerenciará o fornecimento de uma definição de atributo personalizado no item de cotação e um observador tratará de salvar o atributo do produto na cotação quando adicionado a uma cotação.
A partir daí, você usa o config.xml para chamar a definição de conjunto de campos, que manipulará a conversão de quote_item
para order_item
.
Divulgação completa: O conteúdo abaixo é da Atwix. Link abaixo da resposta.
Inicialmente, você deve adicionar atributo personalizado ao
sales->quote->item->product_attributes
nó:
<sales>
<quote>
<item>
<product_attributes>
<custom_attribute />
</product_attributes>
</item>
</quote>
</sales>
Isso torna o atributo acessível quando o copiaremos do produto para o item de cotação - que é o próximo passo. Para esta tarefa, o observador é usado e o evento será chamado
sales_quote_item_set_product
:
<sales_quote_item_set_product>
<observers>
<yourmodule_customattribute>
<class>yourmodule_customattribute/observer</class>
<method>salesQuoteItemSetCustomAttribute</method>
</yourmodule_customattribute>
</observers>
</sales_quote_item_set_product>
Observador:
public function salesQuoteItemSetCustomAttribute($observer)
{
$quoteItem = $observer->getQuoteItem();
$product = $observer->getProduct();
$quoteItem->setCustomAttribute($product->getCustomAttribute());
}
A última coisa com a qual precisamos nos preocupar - é converter o atributo de quote_item
para order_item
. E isso pode ser feito com XML:
<fieldsets>
<sales_convert_quote_item>
<custom_attribute>
<to_order_item>*</to_order_item>
</custom_attribute>
</sales_convert_quote_item>
<sales_convert_order_item>
<custom_attribute>
<to_quote_item>*</to_quote_item>
</custom_attribute>
</sales_convert_order_item>
</fieldsets>
Fonte: Atwix (que está cheia de vitórias): http://www.atwix.com/magento/custom-product-attribute-quote-order-item/