Magento Checkout Page – Add Custom Fields

checkout-process
In this blog, we will see how to add custom fields to magento onepage checkout steps.

This method can be used to add custom field to any step in the checkout page, although in the current blog i have demonstrated how to add it to the billing step. This method will work on all magento versions. The tutorial is quite long since many files are required, here is source code of the module created in the tutorial. Module Name: Custom Field Checkout Module

The source code doesn’t have step1 files.. This tutorial is for people who have a good knowledge of magento module development.
Let start step by step, on how to add a single field on the billing step.

Step1: Adding HTML

This is the most simple step. I will add a text field to the billing.phtml file.
For magento 1.6(-) the file to edit is checkout/onepage/billing.phtml and for magento 1.6(+) you need to edit file persistent/checkout/onepage/billing.phtml. Open the phtml file, find the code

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

and just above the line add this

<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>

So, as you can see we are simply adding a text with name as custom[ssn] and value as $this->getQuote()->getSsn()
After doing this, you should see a field in billing.phtml as shown Checkout Page Billing Step. You can add this field on any checkout step, it doesn’t matter for my code.

Step2: Save the field in Quote and Order Tables

To save, out field to the quote object and database he are the things to do. First i will create a database table “sales_quote_custom”. Put the following sql in your modules mysql_install file

<?php
$installer = $this;
$installer->startSetup();
$installer->run("
CREATE TABLE IF NOT EXISTS {$this->getTable('sales_quote_custom')} (
  `id` int(11) unsigned NOT NULL auto_increment,
  `quote_id` int(11) unsigned NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS {$this->getTable('sales_order_custom')} (
  `id` int(11) unsigned NOT NULL auto_increment,
  `order_id` int(11) unsigned NOT NULL,
  `key` varchar(255) NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
");
$installer->endSetup(); 

Here we are creating two tables, one for quote and other for order. I will explain the use of order table later. Now open phpmyadmin and confirm if the quote and order tables are created.
Next we need to write some event observers to capture quote save, and load events. So open your modules config.xml file and inside the <global> tag put in

<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> 

and next we need to create our Observer classes in Model folder. So create an Observer.php in your modules Model folder.

<?php
class Excellence_Custom_Model_Observer{
	/**
	 * This function is called just before $quote object get stored to database. 
	 * Here, from POST data, we capture our custom field and put it in the quote object
	 * @param unknown_type $evt
	 */
	public function saveQuoteBefore($evt){
		$quote = $evt->getQuote();
		$post = Mage::app()->getFrontController()->getRequest()->getPost();
		if(isset($post['custom']['ssn'])){
			$var = $post['custom']['ssn'];
			$quote->setSsn($var);
		}
	}
	/**
	 * This function is called, just after $quote object get saved to database.
	 * Here, after the quote object gets saved in database
	 * we save our custom field in the our table created i.e sales_quote_custom
	 * @param unknown_type $evt
	 */
	public function saveQuoteAfter($evt){
		$quote = $evt->getQuote();
		if($quote->getSsn()){
			$var = $quote->getSsn();
			if(!empty($var)){
				$model = Mage::getModel('custom/custom_quote');
				$model->deteleByQuote($quote->getId(),'ssn');
				$model->setQuoteId($quote->getId());
				$model->setKey('ssn');
				$model->setValue($var);
				$model->save();
			}
		}
	}
	/**
	 * 
	 * When load() function is called on the quote object, 
	 * we read our custom fields value from database and put them back in quote object.
	 * @param unknown_type $evt
	 */
	public function loadQuoteAfter($evt){
		$quote = $evt->getQuote();
		$model = Mage::getModel('custom/custom_quote');
		$data = $model->getByQuote($quote->getId());
		foreach($data as $key => $value){
			$quote->setData($key,$value);
		}
	}
	/**
	 * 
	 * This function is called after order gets saved to database.
	 * Here we transfer our custom fields from quote table to order table i.e sales_order_custom
	 * @param $evt
	 */
	public function saveOrderAfter($evt){
		$order = $evt->getOrder();
		$quote = $evt->getQuote();
		if($quote->getSsn()){
			$var = $quote->getSsn();
			if(!empty($var)){
				$model = Mage::getModel('custom/custom_order');
				$model->deleteByOrder($order->getId(),'ssn');
				$model->setOrderId($order->getId());
				$model->setKey('ssn');
				$model->setValue($var);
				$order->setSsn($var);
				$model->save();
			}
		}
	}
	/**
	 * 
	 * This function is called when $order->load() is done.
	 * Here we read our custom fields value from database and set it in order object.
	 * @param unknown_type $evt
	 */
	public function loadOrderAfter($evt){
		$order = $evt->getOrder();
		$model = Mage::getModel('custom/custom_order');
		$data = $model->getByOrder($order->getId());
		foreach($data as $key => $value){
			$order->setData($key,$value);
		}
	}

}

So, what we have done above is captured the quote events sales_quote_save_before,sales_quote_save_after and sales_quote_load_after. Using these events saved our custom field to database. Details of functions are given in comments.
We have already create model classes for this
Excellence_Custom_Model_Custom_Order
Excellence_Custom_Model_Custom_Quote
which you will find in the source code.
Detailed Explanation

  • The first event captured by our module is sales_quote_save_before and saveQuoteBefore() function is called in our Observer class. What this function does, just before $quote->save() function is called, it reads our custom variable value ‘ssn’ from FORM POST data and simply sets it in the $quote object.
  • The next event captured by our module is sales_quote_save_after and saveQuoteAfter() function is called in our Observer class. What this function does, just after $quote->save() function is called i.e the quote object get stored in database, it store our custom variable to our database table “sales_quote_custom”
  • The next event is sales_quote_load_after and function called is loadQuoteAfter(). When the $quote->load($id) is called, i.e quote is created from database entries, our function is called and this read the values of the custom variable from our database table “sales_quote_custom” and sets it back again in the quote object.
  • The next event captured in sales_model_service_quote_submit_after and function called is saveOrderAfter(). This event is called, just after an order is successfully placed. In this event, we read our custom field value from quote object and put in order table.
  • The next event is sales_order_load_after and function called is loadOrderAfter(). This event is fired when $order->load() function is called, we read our fields values from database and place it back in the order object.
Step3: Display Our Field in My Account -> View Order

After the order is placed by the customer, our custom fields needs to be visible in My Account. So to do this in our module fronted layout file, in my case its custom.xml.

<?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> 

This layout file is simple and understandable. Basically, we are taking reference of my.account.wrapper block and adding a child block to it. Our block type is custom/order_view and template file is custom/order.phtml.
So we need to create our block class

<?php
class Excellence_Custom_Block_Custom_Order extends Mage_Core_Block_Template{
	public function getCustomVars(){
		$model = Mage::getModel('custom/custom_order');
		return $model->getByOrder($this->getOrder()->getId());
	}
	public function getOrder()
	{
		return Mage::registry('current_order');
	}
}

and our order.phtml file

<div class="col-set order-info-box">
    <div class="col">
        <div class="box">
            <div class="box-title">
                <h2><?php echo $this->__('Custom Fields') ?></h2>
            </div>
            <div class="box-content">
                
                	<?php
                		$custom = $this->getCustomVars();
                		foreach($custom as $key => $value){
                	?>
                		<b><?php echo $this->__($key);?></b> : <?php echo $value;?> <br/>
                	<?php } ?>
                
            </div>
        </div>
    </div>
</div>

After doing this, you should be able to see your custom field in My Account page as shown here My Account View Order

Step4: Admin Order View Page

Next we need to show our custom field in Admin -> Order -> View Order page. To do this, in our adminhtml layout file, in my case custom.xml we will put in this code.

<?xml version="1.0"?>
<layout version="0.1.0">
    <adminhtml_sales_order_view>
        <reference name="order_info">
        	<action method='setTemplate'><template>custom/sales/order/info.phtml</template></action>
        	<block type="adminhtml/sales_order_view_info" name="order_info2" template="sales/order/view/info.phtml"></block>
            <block type="custom/adminhtml_custom_order" name="custom.order" template='custom/order.phtml'/>
        </reference>
    </adminhtml_sales_order_view>
</layout>

So basically here i have added my block “custom.order” to the existing order_info block. So the code for block class custom/adminhtml_custom_order would be

<?php
class Excellence_Custom_Block_Adminhtml_Custom_Order extends Mage_Adminhtml_Block_Sales_Order_Abstract{
	public function getCustomVars(){
		$model = Mage::getModel('custom/custom_order');
		return $model->getByOrder($this->getOrder()->getId());
	}
}

and next we need to create their phtml files
custom/order.phtml

<?php $_order = $this->getOrder() ?>
<div class="box-left">
    <div class="entry-edit">
        <div class="entry-edit-head">
            <h4 class="icon-head head-account"><?php echo Mage::helper('sales')->__('Custom Fields') ?></h4>
        </div>
        <div class="fieldset">
            <table cellspacing="0" class="form-list">
            <?php 
            	$custom = $this->getCustomVars();
            	foreach($custom as $key => $value){ 
            ?>
            <tr>
                <td style="width:10%" class="label"><strong><?php echo Mage::helper('sales')->__($key) ?></strong></td>
                <td class="value"><?php echo $value;?></td>
            </tr>
            <?php } ?>
            </table>
        </div>
    </div>
</div>
<div class="clear"></div>

custom/sales/order/info.phtml

<?php echo $this->getChildHtml('order_info2');?>
<?php echo $this->getChildHtml('custom.order');?>

custom/sales/order/view/tab/info.phtml
you can get this file from the source code, there code in file is the default magento file. After doing these steps in admin we should be able to see this Admin Order View Page

Step5: Adding Custom Fields to Order Email

The final step, is adding the custom fields selected by user to the order email. So when user places an order, we will add our custom field to the order email. To do this open the order email template located at
app\locale\en_US\template\email\sales\order_new.html
app\locale\en_US\template\email\sales\order_new_guest.html
add the below code where you want

{{depend order.hasCustomFields()}}
                    <table cellspacing="0" cellpadding="0" border="0" width="650">
                    	<thead>
                        <tr>
                            <th align="left" width="325" bgcolor="#EAEAEA" style="font-size:13px; padding:5px 9px 6px 9px; line-height:1em;">Custom Fields:</th>
                        </tr>
                        </thead>   
                        <tbody>
                        <tr>
                            <td valign="top" style="font-size:12px; padding:7px 9px 9px 9px; border-left:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; border-right:1px solid #EAEAEA;">
                                {{var order.getFieldHtml()}}
                                &nbsp;
                            </td>
                        </tr>
                        </tbody> 
                    </table>
                    {{/depend}}
                    <br/>

So as per the above code, we need to two functions hasCustomFields() and getFieldHtml() in our Order class. So next we will override the Mage_Sales_Model_Order model. Open your config.xml file and inside <models> section put in this code

<sales>
        		<rewrite>
        			<order>Excellence_Custom_Model_Sales_Order</order>
        		</rewrite>
        	</sales>

and next create our new model class Excellence_Custom_Model_Sales_Order

<?php
class Excellence_Custom_Model_Sales_Order extends Mage_Sales_Model_Order{
	public function hasCustomFields(){
		$var = $this->getSsn();
		if($var && !empty($var)){
			return true;
		}else{
			return false;
		}
	}
	public function getFieldHtml(){
		$var = $this->getSsn();
		$html = '<b>SSN:</b>'.$var.'<br/>';
		return $html;
	}
}

This should add the custom fields to the order.

Thats it, we are done. Hopefully i have covered all sections related to order. If i missed something please comment below and i will add it.

  • http://pulse.yahoo.com/_KSPHEWLB24HSXOSJVZ6C7W7PU4 Rt

    Hello Manish, thanks alot for this tutorial, im learning great deal of knowledge from your blog. Im learning how to create module and your blog was very informative and complete. Please keep them coming, do you have plans to create tutorial on creating shipping and payment module (just a basic one). It would be really helpful for us newbie here..

    Greetz
    Roger

    • Manish Prakash

      Thanks for your appreciation:) 

      Yes a blog for shipping method would coming soon, maybe next week. 
      I will add blog on payment method after that.

      Subscribe to RSS list or twitter for blog updates 

  • Manish Prakash

    Thanks for your appreciation:) 

    Yes a blog for shipping method would coming soon, maybe next week. 
    I will add blog on payment method after that.

  • http://pulse.yahoo.com/_KSPHEWLB24HSXOSJVZ6C7W7PU4 Rt

    Im just so excited to hear you say that shipping and payment method is coming next week :)

  • http://twitter.com/rogeneiancarino Rogene Ian Carino

    There’s to many config.xml in magento which one I should right the step 2 xml

    • Manish Prakash

      If you have created your own module, then use your config.xml

      if you have not, then use sales modules config.xml

  • Brandon Cramer

    Thanks for the tutorial, I’ve been trying to find something like this for awhile now. I did have one question. If instead of creating new tables, I decide to create to new fields in the respective databases, would I have to modify any of the other code to save the data to these fields? Thanks for your help.

    Brandon

    • Manish Prakash

      Yes you can edit existing order and quote tables, i.e you can add extra columns for your fields. In that case code would be come much simple, i.e observer won’t be required.   Problem would arise when you update your magento version (magento might change the table structure) or it might change its code.  Rest most the code in observer won;t be required except the function public function saveOrderAfter($evt){ where the value from $quote object is transferred to $order object.

      • Brandon Cramer

        Thanks for the response, I’m gonna go ahead with your solution, so I don’t run into any problems with Magento updating.

        • Manish Prakash

          Yes there should not be any problems as far as i think.

  • Vishal Gaikwad

    Thanks Manish, Its really a great post. Keep Up the good work.

    Everything worked like a charm. 

    Could you please elaborate on what we need to do to add multiple fields say “ABC” from shipping section along with ssn from billing?

    • Manish Prakash

      Thanks J

      For adding multiple field you need make changes to the shipping.phtml + mainly make changes in the Observer class so that your fields gets saved to database

  • PJ

    Hi,

    I’ve followed this tut step by step, changed Excellence_Custom to Xcs_Customer (as I had such prefix & models already which I used for an extra field @ user registration). Yet I get a Fatal error: Call to a member function getByQuote() on a non-object in […]appcodelocalXcsCustomerModelCustomQuote.php on line 13
    Doing some debugging I found that the model it tries to load is Mage and not Xcs (Mage_Customer_Mysql4_Model_Custom_Quote)

    Any ideas what might be causing this?

    thx,
    PJ

    • Manish Prakash

      can you paste the code on 
      appcodelocalXcsCustomerModelCustomQuote.php
      on line 13
      here. mostly its trying to load some model or class, which it not able to find in your module. So magento is searching on Mage, but doesn’t find it.

      Check the class name of Xcs_Customer_Mysql4_Model_Custom_Quote in your module

      • http://www.facebook.com/jonathan.ullberg Jonathan Ullberg

        I’m having the same problem and this is my code for Avant_Custom_Model_Custom_Quote

        _init(‘custom/custom_quote’);
        }
        public function deteleByQuote($quote_id,$var){
        $this->_getResource()->deteleByQuote($quote_id,$var);
        }
        public function getByQuote($quote_id,$var = ”){
        return $this->_getResource()->getByQuote($quote_id,$var);
        }
        }

        Any help would be appreciated. Thanks.

  • Rose Satya

    This post is awsome.. I don’t know how i landed here but I am glad i did  :)

    • Manish Prakash

      Thanks

  • Ajay Makwana

    Hi,
    I have to add the delivery date field at the multiple shipping checkout proces.

    So please any one please help me on that how can I add the custom field on multi chckeout process
    So the value will be displyed at he admin order detail page.

    Ajay

    • Manish Prakash

      I am not sure yet, I haven’t worked much on multiple address checkout.

      • http://www.facebook.com/RajaZeeshanAhmed Raja Zeeshan Ahmed

        But sir, how to add delivery data field on onepage checkout page?

        • John Carter

          Sir, surely this is explained above, on this very page.

  • Jorge

    hi! I want to thank you for this great tutorial.
    I’m very new to magento and I need to add some fields to the checkout form.
    I downloaded the module you have, but I’m not sure what elsa I need to do to make it work.
    Please guide me where I need to look for inside magento’s menus to use your module.

    Thank you very much for your attention!
    Jorge

    • Manish Prakash

      Hi,

      You need to simple install the module.

      Upload all the files you have download into your magento, all files are placed already in their respective folder in the zip file you download.

      So you just to need to upload the files to make the module active.

  • http://twitter.com/hybrisCole Alberto Cole

    Hey Manish, Thanks for this awesome tutorial, I just tried a couple before this one and this was the only one that worked for me :).

    I have a question regarding what should I change if I don’t want to save/relate  my custom fields to Quote ($this->getQuote()->get{{CUSTOM_FIELD}}) so i.e. I want to have a custom field named County, and I see that City is stored on Address, so my question is: what files do I have to change to make this module save my County custom field and save it as a Address custom field.And again, thanks for this rocking tutorial :)

    • Manish Prakash

      hi,

      I think what you want is a mixture of the current tutorial + http://www.excellencemagentoblog.com/magento-adding-custom-field-to-customer-address

      please see how i have add new fields to checkout page which gets saved to customer address. i think that might help you.

  • Asif

    That’s great tutorial. I have a few Questions.
    – What is this Quote thing? can’t we go ahead without this?
    – What condition can I use on persistent/checkout/onepage/billing.phtml, if I only want this field appear for one of the cart products having a particular attribute?
    – Can you send me the link from where you learned about creating modules?

    I’d really appreciate this stuff you’ve posted. Thanks for it.

    • Manish Prakash

      1. No quote thing is important cannot do without it. If you don’t want to use quote you need to use session which is not correct.
      2. I have written a blog on shipping method, go through that I have put in many types of conditions which you can use here as well.
      3. I have learned modules from many resource including magento source code itself (which is the best place). Rest I have written a module development series also which you can go through.

      • Asif

        Perfect. This means that quote and order db tables must be identical as well. Right?
        I have many fields to put on checkout, so I am going to modify your work. For database and logic part (except display part), I’d only need to modify following files. Right?

        mysql_install.phpObserver.php

        Any other file where I need to work for fetching data and saving to database?

        Thanks for support.

  • Emerson Herzeg

    Hi, i can add file field to ?

  • Dragon048

    after all my ssn field in sales_flat_quote table is empty i have problem with setSsn method …. any help ?

  • Andres

    Hi Manish, I am agree with the other people that has commented your posts, this blog its amazing. I have reviewed this article, and there is a way to put a checkbox instead an input text, but with a numeric value that could be added to the grand total of the order. Thanks.

    • Manish Prakash

      Yes this is possible, but I will write a blog about this later. It a complicated thing but its possible.

  • http://twitter.com/SEOHarrogate SEO Harrogate

    Hi

    Great tutorial.

    I’m having problems adding multiple fields to the form. Can you advise how this would be done.

    I’m editing the observer.php file to add teh extra fields but nothing is being displayed on the email or in the admin panel

    Thanks in advance

  • Jacques

    Hi,
    I am new with Magento, and can undestand where put the class: Excellence_Custom_Model_Observer. Can you tell me the full path?Thanks,

    • Manish Prakash

      Hi Jacques.

      The full path of the file is app/code/local/Excellence/custom/Model/Observer.php

  • Neha Ce15

    hello
    I got following error  –
    2012-02-13T05:20:42+00:00 ERR (3): Warning: include(Excellence_Custom_Model_Sales_Order.php): failed to open stream: No such file or directory  in /var/www/html/magento/includes/src/Varien_Autoload.php on line 93

    PLEASE help me out ….

    • Manish Prakash

      You have not installed the module properly. Please check all files are there or not.

      • http://twitter.com/neha_ce15 Neha Gupta

         I have checked  everything installed properly…
        i am using Excellence_All.xml

           
               
                    true
                    local
               
                <!–
                    true
                    local
                –>
                 
                    true
                    local
               
           

        is it right???

      • http://twitter.com/neha_ce15 Neha Gupta

        Its working perfect after commenting the below line in Includes/config.php
        define(‘COMPILER_INCLUDE_PATH’, dirname(__FILE__).DIRECTORY_SEPARATOR.’src’);

        Thanks for response
        (I am using Magento 1.6.0….)

  • http://www.facebook.com/people/Akbar-Bhaijaan/100003664105307 Akbar Bhaijaan

     your post is very helpful for me
    i used remove shipping method module of yours but it shows a error like invalid shipping method
    pls check this issue.
    and i want to merge shipping method and payment information steps in one step how can i pls some guidence appreciated.

  • http://twitter.com/EdsonLara J. Edson Lara

    Hi, I have a question, how it is possible that only sends the block of this new fields when re-sending the email from control panel but not when its a sucessful payment?

  • Ratnakar

    Hi, your post is very useful. could you tell me how I can add a text field where the customer adds ‘Tip’ in USDollars and that should be automatically added to the Grand Total before submit.

  • alice

    I am stuck at step 2

  • alice

    Hi where can I find mysql_install file

  • jameswagoner

    Everything works as your module was packaged, but as soon as I change the ssn values to, lets say, rep. it doesn’t save in the sales custom tables. I updated every reference to ssn to rep and stuck.

  • jameswagoner

    “You can add this field on any checkout step, it doesn’t matter for my code.”

    Seems to be false here. I simply moved to code one by one to each step’s phtml file and no records were made. Only when in the billing area are they recorded.

    So what is the deal here?

  • http://www.facebook.com/Anthony.J.Alvarez Anthony Alvarez

    Tutorial is very good, but the data are not recorded in the database.

    that can happen?

  • David Buell

    This worked great, but when I used the other module you guys have to remove the payment method, it no longer shows the text box. But the thing is, I moved the text box to the Shipping_Method.phtml file and it was showing there under the options and worked fine. I also got it to not being required, but as soon as I uploaded the remove payment method module it doesnt show the custom text box

    This is the other extension

    http://www.excellencemagentoblog.com/magento-onestep-checkout-remove-payment-method-step

    Any ideas?

  • Nitin

    Hello,

    Thanks for the guide.

    Can you point me in the direction of how to add the custom field to the admin reorder page in the same way as you have it on the order page.

    Thanks
    Nitin

  • Nitin

    Hello,
    Thanks for the guide.
    Can you point me in the direction of how to add the custom field to the admin reorder page in the same way as you have it on the order page.

    Thanks,
    Nitin

  • Ninja

    Hello sir, is this only for the Checkout page, or can it be applied to the cart page? I would like to add a custom checkbox (Wrap this order) on the cart page.

    Thanks in advance
    Abdel

  • http://www.creativethemes.net/ Creative Themes

    Thanks for sharing the code, here a plugin that lets you add custom fields on checkout page

    fmeextensions (dot) com/magento-additional-checkout-attributes-fields.html

  • Sonic

    Is it possible to add a tick box instead of text field ?

  • Kuringimalar T

    Thanks for the tutorial, I have followed tutorial step by step just I have changed the field name ssn to ab.. and custom table fields, It doesn’t throw any error but values are not inserted in the custom tables. Please help

  • Dhanpat

    Hello Manish, Your blog is really helpful. Can you please help me on one thing. on a website I have some products which are free. My problem is related to shipping options. Free shipping will be available only if cart total is zero and all other shipping options will be hidden in this case. If cart total is more than $0, free shipping will be not be displayed. Can you please give me hint on where to change the code.

  • boby

    good day this tutorial is reall awesome , but i have some issues when i use the method $model->deteleByQuote that return a error that say: this is not a method does not exist

  • boby

    i got a question where did you get the method deleteByQuote() ?i cant see if you have already created

  • http://party.com.ua/ Sergiy Koval

    “We have already create model classes for this
    Excellence_Custom_Model_Custom_Order
    Excellence_Custom_Model_Custom_Quote
    which you will find in the source code.”

    I can’t download source code :(

  • sulty221

    Working with Magento 1.7.02 I am not seeing the custom field saved to the database table. The tables are there, but no data from the custom field is saved. Anyone figure out what the issue is here?

  • Awais

    Can we get these custom fields from magento Web Services? e.g REST API

  • Manuel

    It doesn’t work on magento 1.7.0.2, Any idea ??

  • Manuel

    The module doesn’t save data on database tables

  • Dharam

    I need to provide a checkbox and upon selecting that I need to update the price total..