2011-11-25 131 views
0

我是Magento新手,我需要的是添加自定义字段以在后端订购,并在PDF上打印该值。添加要在magento中订购的自定义字段

我想要在订单从后台添加后,订单中保存销售人员姓名,并在PDF上打印销售人员姓名。

任何想法?任何更好的模块或什么?

回答

1

假设你要添加mageigniter_sales_person到您的订单分贝和输入字段添加到您的管理员创建订单和订单详细信息视图显示它

在/ app /代码/本地/ MageIgniter/CustomOrderSalesPerson的/ etc/config.xml中

<?xml version="1.0"?> 
<config> 
    <modules> 
     <MageIgniter_CustomOrderSalesPerson> 
      <version>1.1</version> 
     </MageIgniter_CustomOrderSalesPerson> 
    </modules> 

    <global> 
     <fieldsets> 
      <sales_convert_quote>       
       <mageigniter_sales_person><to_order>*</to_order></mageigniter_sales_person> 
      </sales_convert_quote> 

      <sales_convert_order>            
       <mageigniter_sales_person><to_quote>*</to_quote></mageigniter_sales_person> 
      </sales_convert_order> 
     </fieldsets> 
     <helpers> 
      <customordersalesperson> 
       <class>MageIgniter_CustomOrderSalesPerson_Helper</class> 
      </customordersalesperson>    
     </helpers> 

     <models> 
      <customordersalesperson> 
       <class>MageIgniter_CustomOrderSalesPerson_Model</class> 
       <resourceModel>customordersalesperson_mysql4</resourceModel> 
      </customordersalesperson> 
     </models> 
     <resources> 
      <customordersalesperson_setup> 
       <setup> 
        <module>MageIgniter_CustomOrderSalesPerson</module> 
        <class>Mage_Sales_Model_Mysql4_Setup</class> 
       </setup> 
       <connection> 
        <use>core_setup</use> 
       </connection> 
      </customordersalesperson_setup> 
      <customordersalesperson_write> 
       <connection> 
        <use>core_write</use> 
       </connection> 
      </customordersalesperson_write> 
      <customordersalesperson_read> 
       <connection> 
        <use>core_read</use> 
       </connection> 
      </customordersalesperson_read> 
     </resources> 

     <events> 
      <adminhtml_sales_order_create_process_data_before> 
       <observers> 
        <customordersalesperson> 
         <type>singleton</type> 
         <class>customordersalesperson/observer</class> 
         <method>saveCustomData</method> 
        </customordersalesperson> 
       </observers> 
      </adminhtml_sales_order_create_process_data_before> 
     </events> 

     <blocks> 
      <customordersalesperson> 
       <class>MageIgniter_CustomOrderSalesPerson_Block</class> 
      </customordersalesperson> 
     </blocks> 
    </global> 
</config> 

在/app/code/local/MageIgniter/CustomOrderSalesPerson/sql/customordersalesperson_setup/mysql4-install-1.1.php

<?php 
$installer = $this; 
$installer->startSetup(); 

$installer->addAttribute("order", "mageigniter_sales_person", array("type"=>"varchar")); 
$installer->addAttribute("quote", "mageigniter_sales_person", array("type"=>"varchar")); 
$installer->endSetup(); 

在/app/code/local/MageIgniter/CustomOrderSalesPerson/Model/Observer.php

class MageIgniter_CustomOrderSalesPerson_Model_Observer 
{ 
    public function saveCustomData($event) 
    { 
     $quote = $event->getSession()->getQuote(); 
     $quote->setData('mageigniter_sales_person', $event->getRequestModel()->getPost('mageigniter_sales_person')); 

     return $this; 
    } 
} 

(你应该避免更改核心默认 - 你应该做一些研究,围绕这种方式)

在/app/design/adminhtml/default/default/template/sales/order/create/form/account.phtml

<input id="mageigniter_sales_person" name="mageigniter_sales_person" value="<?php echo Mage::getSingleton('adminhtml/session_quote')->getQuote()->getMageigniterSalesPerson() ?>" class="input-text" type="text"> 

在/ app /设计/ adminhtml /默认/缺省的/模板/销售/订单/图/info.phtml

<?php if($_order->getMageigniterSalesPerson()): ?> 
<tr> 
    <td class="label"><label><?php echo Mage::helper('sales')->__('Sales Person') ?></label></td> 
    <td class="value"><strong><?php echo $_order->getMageigniterSalesPerson() ?></strong></td> 
</tr> 
<?php endif; ?> 

您可以使用 $ _user = Mage :: getSingleton('admin/session')获取当前的管理员名称; $ user ['email'] = $ _user-> getUser() - > getEmail(); $ user ['firstname'] = $ _user-> getUser() - > getFirstname(); $ user ['lastname'] = $ _user-> getUser() - > getLastname();

在您的PDF,你应该能够访问$ _order-> getMageigniterSalesPerson(),看看@Add custom attribute to Magento’s PDF invoice

1

首先,你需要在billing.phtml文件中添加HTML文本字段。在这个文件中找到以下代码。

<?php if ($this->canShip()): ?> 

添加略高于线

<li class="fields"> 

<div class="field"> 

<label for="billing:ssn" class="required"><em>*</em><?php echo $this->__('SSN') ?></label> 

<div class="input-box"> 

<input type="text" name="custom[ssn]" value="<?php echo $this->htmlEscape($this->getQuote()->getSsn()) ?>" title="<?php echo $this->__('SSN') ?>" class="input-text required-entry" id="billing:ssn" /> 

</div> 

</div> 

</li> 

现在你要救场的报价与订单表

创建两个表下面的代码。销售的'sales_quote_custom'和订单的'sales_order_custom'。检查phpmyadmin以确认两个表是否都已创建。接下来在​​3210文件中写一些事件观察者。在<global>标记中加入以下代码。

<events> 

<sales_quote_save_before> <!-- Event Called Before Quote Object is saved --> 

<observers> 

<save_before> 

<type>singleton</type> 

<class>Excellence_Custom_Model_Observer</class> <!-- Over Model Class --> 

<method>saveQuoteBefore</method> <!-- name of function --> 

</save_before> 

</observers> 

</sales_quote_save_before> 

<sales_quote_save_after> <!-- Event called After Quote Object is saved --> 

<observers> 

<save_after> 

<type>singleton</type> 

<class>Excellence_Custom_Model_Observer</class> <!-- Over Model Class --> 

<method>saveQuoteAfter</method> <!-- name of function --> 

</save_after> 

</observers> 

</sales_quote_save_after> 

<sales_quote_load_after> <!-- Event called when Quote Object is loaded --> 

<observers> 

<load_after> 

<type>singleton</type> 

<class>Excellence_Custom_Model_Observer</class> <!-- Over Model Class --> 

<method>loadQuoteAfter</method> <!-- name of function --> 

</load_after> 

</observers> 

</sales_quote_load_after> 

<sales_model_service_quote_submit_after> <!-- Event called after order placed --> 

<observers> 

<sales_model_service_quote_submit_after> 

<type>singleton</type> 

<class>Excellence_Custom_Model_Observer</class> <!-- Over Model Class --> 

<method>saveOrderAfter</method> <!-- name of function --> 

</sales_model_service_quote_submit_after> 

</observers> 

</sales_model_service_quote_submit_after> 

<sales_order_load_after> <!-- Event called after Order Object is loaded --> 

<observers> 

<sales_order_load_after> 

<type>singleton</type> 

<class>Excellence_Custom_Model_Observer</class> <!-- Over Model Class --> 

<method>loadOrderAfter</method> <!-- name of function --> 

</sales_order_load_after> 

</observers> 

</sales_order_load_after> 

</events> 

对于教程一步一步完成,请访问:Add custom field to Order page

相关问题