I have recently completed a magento project that customer asked to remove billing section from checkout page. Magento checkout process is quite complex so I decide to just hide that one from magento template.
I suppose you are using RWD default theme and it loads this one page checkout javascript:
skin/frontend/rwd/default/js/opcheckout_rwd.js
I appended these lines to that one:
$j(document).ready(function(){
console.log(accordion);
if(accordion.currentSection == 'opc-billing') {
billing.save();
}
$j("#opc-billing").hide();
$j("#opc-shipping .step-title").css('border-top', 'none');
$j("span.number").each(function(){
var n = parseInt($j(this).text());
$j(this).text(n-1);
});
});
And the file source code looks like:
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magento.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to https://www.magento.com for more information.
*
* @category design
* @package rwd_default
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (https://www.magento.com)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
Checkout.prototype.gotoSection = function (section, reloadProgressBlock) {
// Adds class so that the page can be styled to only show the "Checkout Method" step
if ((this.currentStep == 'login' || this.currentStep == 'billing') && section == 'billing') {
$j('body').addClass('opc-has-progressed-from-login');
}
if (reloadProgressBlock) {
this.reloadProgressBlock(this.currentStep);
}
this.currentStep = section;
var sectionElement = $('opc-' + section);
sectionElement.addClassName('allow');
this.accordion.openSection('opc-' + section);
// Scroll viewport to top of checkout steps for smaller viewports
if (Modernizr.mq('(max-width: ' + bp.xsmall + 'px)')) {
$j('html,body').animate({scrollTop: $j('#checkoutSteps').offset().top}, 800);
}
if (!reloadProgressBlock) {
this.resetPreviousSteps();
}
}
$j(document).ready(function(){
console.log(accordion);
if(accordion.currentSection == 'opc-billing') {
billing.save();
}
$j("#opc-billing").hide();
$j("#opc-shipping .step-title").css('border-top', 'none');
$j("span.number").each(function(){
var n = parseInt($j(this).text());
$j(this).text(n-1);
});
});
You should remember to remove checkout progress from the right column to make it consistent by doing these steps:
Copy base app/design/frontend/base/default/template/checkout/onepage/progress/billing.phtml default template to
app/design/frontend/rwd/default/template/checkout/onepage/progress/billing.phtml
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magento.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to https://www.magento.com for more information.
*
* @category design
* @package base_default
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (https://www.magento.com)
* @license https://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
?>
<?php if ($this->getCheckout()->getStepData('billing', 'complete')): ?>
<dt class="complete">
<?php echo $this->__('Billing Address') ?><span class="changelink"> <span class="separator">|</span> <a
href="#billing"
onclick="checkout.changeSection('opc-billing'); return false;"><?php echo $this->__('Change') ?></a></span>
</dt>
<dd class="complete">
<address><?php echo $this->getBilling()->format('html') ?></address>
</dd>
<?php else: ?>
<dt>
<?php echo $this->__('Billing Address') ?>
</dt>
<?php endif; ?>
after that removing all source code from this file
<?php //nothing to show
I had to write a simple magento extension to update billing address for all registered customers.
app/code/local/Beehexa/Customerbilling/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Beehexa_Customerbilling>
<version>0.1.0</version>
</Beehexa_Customerbilling>
</modules>
<global>
<customerbilling>
<class>Beehexa_Customerbilling_Model</class>
</customerbilling>
<events>
<customer_save_before>
<observers>
<Beehexa_Customerbilling>
<type>singleton</type>
<class>Beehexa_Customerbilling_Model_Observer</class>
<method>updateCustomerBilling</method>
</Beehexa_Customerbilling>
</observers>
</customer_save_before>
<customer_register_success>
<observers>
<Beehexa_Customerbilling>
<type>singleton</type>
<class>Beehexa_Customerbilling_Model_Observer</class>
<method>updateCustomerBilling</method>
</Beehexa_Customerbilling>
</observers>
</customer_register_success>
</events>
</global>
</config>
app/code/local/Beehexa/Customerbilling/Model/Observer.php
<?php
class Beehexa_Customerbilling_Model_Observer {
public function updateCustomerBilling($event) {
$customer = $event->getCustomer();
if($customer->getId())
{
$address = $customer->getPrimaryBillingAddress();
} else {
return;
}
if ($address)
return;
$data = [
'street' => 'default street',
'company' => 'company',
'postcode' => '55555',
'region' => 'Georgia',
'region_id' => '19',
'city' => 'Atlanta',
'firstname' => $customer->getFirstname(),
'lastname' => $customer->getLastname(),
'telephone' => '000000000',
'country_id' => 'US'
];
try {
$address = Mage::getModel('customer/address');
$address->setCustomer($customer);
$address->addData($data);
$address->save();
$customer->addAddress($address)
->setDefaultBilling($address->getId())
->save();
} catch (Exception $ex) {
Mage::logException($ex);
}
}
}
I hope this post can save you time for hiding billing section from magento checkout page.