Добавить настраиваемое поле для заказа в magento - PullRequest
0 голосов
/ 25 ноября 2011

Я новичок в Magento, все, что мне нужно, это добавить настраиваемое поле для заказа в серверной части и распечатать это значение в PDF.

Я хочу сохранить имя торгового представителя с заказом при добавлении заказов из серверной части и распечатать имя торгового представителя в PDF.

Есть идеи? лучше модуль или что-нибудь?

Ответы [ 2 ]

1 голос
/ 29 августа 2016

Прежде всего, вам нужно добавить текстовое поле html в файл billing.phtml. Найдите следующий код в этом файле.

<?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, чтобы подтвердить, созданы ли обе таблицы. Затем запишите некоторые наблюдатели событий в файл config.xml. Введите следующий код внутри тега <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>

Для получения полного пошагового руководства посетите страницу: Добавление настраиваемого поля на страницу заказа

1 голос
/ 30 ноября 2012

Предполагая, что вы хотите добавить mageigniter_sales_person к вашей базе данных заказа и добавить поле ввода к администратору, создать заказ и отобразить его в подробном представлении заказа

В / app / code / local / 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 / design / adminhtml / default / default / template / sales / order/view/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 (), посмотрите @ Добавить пользовательский атрибут в PDF-счет Magento

...