2012-07-09 17 views
7

Ho creato un attributo "Nome azienda" che viene aggiunto nelle informazioni dell'account del mio cliente ed è un campo obbligatorio.Aggiungi attributo personalizzato nei modelli di email per l'ordine - Magento

Viene riempito alla fine della registrazione, forma e modifica pagine e viene visualizzato nella griglia del cliente anche nel back-end.

Tuttavia, non sono in grado di visualizzare il nome della società in nessuno dei miei modelli di email.

Credo che questo sia perché non v'è né una colonna chiamata 'companyname' nelle mie tabelle degli ordini né ho alcuna variabile personalizzata che posso passare per ordinare i modelli/fattura/spedizione per visualizzare il nome dell'azienda proprio accanto alla linea dopo Nome del cliente.

Può uno indicare il file in cui posso creare questa variabile personalizzata contenente mia abitudine 'companyname' attributo e passarlo a tutti i tipi di modelli e-mail vendite

Grazie

risposta

17

Dopo un po 'di ricerca Ho trovato il file giusto per apportare le modifiche. Dal momento che ho già avuto 'companyname' come uno dei miei attributi ho recuperato il valore di questo campo e passato come parametro nella seguente funzione

app/code/core/Mage/Vendite/Modello/order.php

public function sendNewOrderEmail() 
{ 
/*Existing Code*/ 
if ($this->getCustomerIsGuest()) { 
     $templateId = Mage::getStoreConfig(self::XML_PATH_EMAIL_GUEST_TEMPLATE, $storeId); 
     $customerId = Mage::getModel('customer/customer')->load($this->getCustomerId()); 
     $companyname = $customerId->getCompanyname(); 
     $customerName = $this->getBillingAddress()->getName(); 
    } else { 
     $templateId = Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE, $storeId); 
     $customerId = Mage::getModel('customer/customer')->load($this->getCustomerId()); 
     $companyname = $customerId->getCompanyname(); 
     $customerName = $this->getCustomerName(); 
    } 
    /*Existing Code*/ 
    $mailer->setTemplateParams(array(
     'order'  => $this, 
     'billing'  => $this->getBillingAddress(), 
     'payment_html' => $paymentBlockHtml, 
     'companyname' => $companyname 
    )); 
    /*Rest of the code remains the same*/ 
} 

Dopo aver apportato questa modifica. Ho modificato il mio Email Transazionale per includere questo parametro. Dal momento che ho voluto per visualizzare all'interno indirizzo di spedizione, ho messo la mia variabile appena prima di questa linea in

System > Transactional Emails > New Order Email 

    {{ var companyname }} 
    {{var order.getShippingAddress.format('html')}} 

Se il companyname è sempre salvato come parte del Customer Information allora questo sarebbe ottenere visualizzato nel vostro Ordine e-mail nel 'indirizzo di spedizione "Informazioni direttamente all'inizio.

È possibile fare lo stesso per le e-mail di fatturazione e spedizione.

Spero che questo aiuti qualcuno !!! :-)

+2

Non dovresti mai, in nessun caso modificare i file core! ... Se non vedi altre possibilità di modificare il codice di base, fai una copia di quel file e inseriscilo in app/code/local/Mage/Sales/Model/Order.php –

Problemi correlati