2013-07-11 7 views
16

Sto tentando di aggiungere un campo personalizzato ai miei ordini. In questo momento, ho trovato il muggito post che mi ha aiutato a creare tale attributo nel mio database: http://fabrizioballiano.net/2011/11/15/create-a-custom-order-attribute-in-magento/Magento - Aggiungi attributo personalizzato all'ordine

require_once('app/Mage.php'); 
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

$installer = new Mage_Sales_Model_Mysql4_Setup; 
$attribute = array(
    'type'   => 'int', 
    'backend_type' => 'text', 
    'frontend_input' => 'text', 
    'is_user_defined' => true, 
    'label'   => 'My Label', 
    'visible'  => true, 
    'required'  => false, 
    'user_defined' => true, 
    'searchable' => true, 
    'filterable' => true, 
    'comparable' => true, 
    'default'  => 0 
); 
$installer->addAttribute('order', 'special_attribute', $attribute); 
$installer->endSetup(); 

Dopo l'esecuzione del codice di cui sopra e la creazione di diversi ordini, sono in grado di scorrere tutti gli ordini e vedere il valore predefinito per ogni ordine.

La domanda è: come posso archiviare i dati desiderati in questo campo? Come posso recuperare tali dati?

Grazie!

risposta

27

Aggiungilo allo scope gobal in config.xml. Quindi imposta semplicemente l'attributo nella citazione: viene automaticamente trasferito nell'ordine nel preventivo per ordinare il processo di conversione.

<global> 
... 
    <fieldsets> 
     <sales_convert_quote> 
      <your_special_attribute> 
       <to_order>*</to_order> 
      </your_special_attribute> 
     </sales_convert_quote> 
    </fieldsets> 
... 
</global> 

È possibile recuperare/impostare l'attributo in qualsiasi momento tramite il getter/setter magico ad es.

$quote->getYourSpecialAttribute() 
$order->getYourSpecialAttribute() 

$quote->setYourSpecialAttribute() 
+1

Ha funzionato! Grazie uomo :) – MatheusJardimB

+2

Il mio problema ora è: ha funzionato solo perché ho aggiunto le tue linee xml o anche le mie hanno contribuito? – MatheusJardimB

+4

ovviamente ... hai aggiunto l'attributo tramite lo script di installazione. le linee xml ti ho dato push l'attributo automaticamente attraverso la citazione per la conversione dell'ordine. dato che anche quote sono salvate in db dovresti creare l'attributo anche in preventivo! basta controllare la tabella db della quotazione ordine di vendita. –

0

Dopo aver aggiunto un campo di testo per il file billing.phtml e salvare il campo nel Preventivo e ordine tabelle, è possibile visualizzare l'attributo. È possibile visualizzare il campo in Il mio account -> Visualizza ordine. Apportare le seguenti modifiche in custom.xml fie.

<?xml version="1.0"?> 
<layout version="0.1.0"> 
    <sales_order_view> 
     <reference name="my.account.wrapper"> 
      <block type="custom/custom_order" name="custom.order" template="custom/order.phtml" after='sales.order.info' /> 
     </reference> 
    </sales_order_view> 
</layout> 

Per di più, si prega di fare riferimento al blog How to add custom attribute to order in Magento