2012-07-09 15 views
7

He creado un atributo 'Nombre de empresa' que se agrega en la información de mi cuenta de cliente y es un campo obligatorio.Agregar un atributo personalizado en las plantillas de correo electrónico de orden - Magento

Se completa en las páginas de registro, formulario y edición y también se muestra en la cuadrícula del cliente en el back-end.

Sin embargo, no puedo mostrar el nombre de la empresa en ninguna de mis plantillas de correo electrónico de pedidos.

Creo que esto se debe a que no hay ninguna columna llamada 'nombre de empresa' en mis tablas de pedidos ni tampoco tengo ninguna variable personalizada que pueda pasar a las plantillas de pedido/factura/envío para mostrar el nombre de la compañía justo al lado de la línea Nombre del cliente.

Puede alguno señalar el archivo donde puedo crear esta variable personalizada que contiene mi costumbre 'nombredeempresa' atributo y pasarlo a todos los tipos de plantillas de correo electrónico de ventas

Gracias

Respuesta

17

Después de un poco de búsqueda Encontré el archivo correcto para hacer los cambios. Puesto que ya tenía 'nombredeempresa' como uno de mis atributos I recuperado el valor de este campo y se lo pasó como un parámetro en la función siguiente

app/código/core/Mago/Ventas/modelo/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*/ 
} 

Después de hacer este cambio. Edité mi correo electrónico transaccional para incluir este parámetro. Como quería mostrar el interior de la dirección de envío, coloqué mi variables justo antes de esta línea en

System > Transactional Emails > New Order Email 

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

Si su nombredeempresa se está guardado como una parte de la información del cliente, entonces esto sería conseguir que aparece en su pedido por correo electrónico en 'Dirección de envío 'Información directamente desde el comienzo.

Puede hacer lo mismo con los correos electrónicos de facturación y envío.

Espero que esto ayude a alguien !!! :-)

+2

¡Nunca debe, bajo ninguna circunstancia, editar archivos centrales! ... Si no ve otra oportunidad de cambiar el código central, haga una copia de ese archivo y colóquelo en la aplicación/código/local/Mage/Sales/Model/Order.php –

Cuestiones relacionadas