magento magento 下订单后手动修改运费
一:配置config.xml 跟订单费率相关的 我们都进行重写方法 重写方法的依据是我们根据core/mage下面的方法来
<config>
<modules>
<More_CustomShippingRate>
<version>0.1.0</version>
<depends>
<Mage_Shipping />
</depends>
</More_CustomShippingRate>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite><!--重写shipping method-->
<sales_order_create_shipping_method_form>More_CustomShippingRate_Block_Sales_Order_Create_Shipping_Method_Form</sales_order_create_shipping_method_form>
</rewrite>
</adminhtml>
<checkout>
<rewrite><!--重写 cart shipping multishipping onepage shipping -->
<cart_shipping>More_CustomShippingRate_Block_Cart_Shipping</cart_shipping>
<multishipping_shipping>More_CustomShippingRate_Block_Multishipping_Shipping</multishipping_shipping>
<onepage_shipping_method_available>More_CustomShippingRate_Block_Onepage_Shipping_Method_Available</onepage_shipping_method_available>
</rewrite>
</checkout>
<paypal>
<rewrite>
<express_review>More_CustomShippingRate_Block_Express_Review</express_review>
</rewrite>
</paypal>
</blocks>
<helpers>
<customshippingrate>
<class>More_CustomShippingRate_Helper</class>
</customshippingrate>
</helpers>
<models>
<customshippingrate>
<class>More_CustomShippingRate_Model</class>
</customshippingrate>
<adminhtml>
<rewrite>
<sales_order_create>More_CustomShippingRate_Model_Sales_Order_Create</sales_order_create>
</rewrite>
</adminhtml>
<sales>
<rewrite>
<quote_address_total_shipping>More_CustomShippingRate_Model_Quote_Address_Total_Shipping</quote_address_total_shipping>
<service_quote>More_CustomShippingRate_Model_Service_Quote</service_quote>
</rewrite>
</sales>
</models>
<resources>
<customshippingrate_setup>
<setup>
<module>More_CustomShippingRate</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</customshippingrate_setup>
</resources>
</global>
<adminhtml>
<translate>
<modules>
<More_CustomShippingRate>
<files>
<default>More_CustomShippingRate.csv</default>
</files>
</More_CustomShippingRate>
</modules>
</translate>
<layout>
<updates>
<customshippingrate>
<file>more_customshippingrate.xml</file>
</customshippingrate>
</updates>
</layout>
</adminhtml>
<default>
<carriers>
<customshippingrate>
<active>1</active>
<sallowspecific>0</sallowspecific>
<model>customshippingrate/carrier_customshippingrate</model>
<name>CustomShippingRate</name>
<specificerrmsg>This shipping method is currently unavailable. If you would like to ship using this shipping method</specificerrmsg>
</customshippingrate>
</carriers>
</default>
</config>
二:配置前端 layout 我们根据后台默认的sales.xml reference
<layout>
<adminhtml_sales_order_create_index>
<reference name="shipping_method">
<block type="adminhtml/sales_order_create_shipping_method_form" template="more/customshippingrate/form_custom.phtml" name="form_custom" />
</reference>
</adminhtml_sales_order_create_index>
<adminhtml_sales_order_create_load_block_data>
<reference name="shipping_method">
<block type="adminhtml/sales_order_create_shipping_method_form" template="more/customshippingrate/form_custom.phtml" name="form_custom" />
</reference>
</adminhtml_sales_order_create_load_block_data>
<adminhtml_sales_order_create_load_block_shipping_method>
<reference name="shipping_method">
<block type="adminhtml/sales_order_create_shipping_method_form" template="more/customshippingrate/form_custom.phtml" name="form_custom" />
</reference>
</adminhtml_sales_order_create_load_block_shipping_method>
</layout>
三:前台模板 phtml
<?php if (Mage::helper('customshippingrate')->isEnabled()): ?>
<div>
<dl>
<dt><br/><hr/><br/></dt>
<dd id="custom-shipping-area">
<p><strong><?php echo $this->__('Custom Shipping Rate:'); ?></strong> <input id="custom-shipping-rate" type="text" style="width: 100px;" value="<?php if ($this->getCustomShippingPrice()): echo sprintf("%.2f", $this->getCustomShippingPrice()); endif; ?>" /></p>
<p><strong><?php echo $this->__('Title:'); ?></strong> <input id="custom-shipping-title" type="text" style="width: 200px;" value="<?php echo $this->getCustomTitle() ?>" /> <button id="custom-shipping-button" type="button" class="scalable "
onclick="order.setCustomShippingValues(document.getElementById('custom-shipping-rate').value,document.getElementById('custom-shipping-title').value,'customshippingrate');"><span><?php echo $this->__('Save'); ?></span></button></p>
<input id="custom-shipping-code" type="hidden" value="customshippingrate" />
<input type="radio" id="s_method_customshippingrate_customshippingrate" value="customshippingrate_customshippingrate" onclick="order.setShippingMethod(this.value)" name="order[shipping_method]">
<span>if you want update your rate,click this first!</span>
<ul class="messages">
<li class="notice-msg"><?php echo $this->__('Note: This will override any shipping method selected above.'); ?></li>
</ul>
<script type="text/javascript">
//<![CDATA[
AdminOrder.addMethods({
setCustomShippingValues : function(amount, description, method){
var data = {};
data['order[shipping_amount]'] = amount;
data['order[base_shipping_amount]'] = amount;
data['order[shipping_description]'] = description;
data['order[shipping_method]'] = method;
this.loadArea(['shipping_method', 'totals', 'billing_method'], true, data);
},
customshipFieldsBind : function(container){
if($(container)){
var fields = $(container).select('input');
for(var i=0; i<fields.length; i++){
fields[i].observe('change', this.customshipFieldChange.bind(this))
}
}
},
customshipFieldChange : function(){
if (document.getElementById('custom-shipping-rate').value && document.getElementById('custom-shipping-title').value) {
var data = {};
data['order[shipping_amount]'] = document.getElementById('custom-shipping-rate').value;
data['order[base_shipping_amount]'] = document.getElementById('custom-shipping-rate').value;
data['order[shipping_description]'] = document.getElementById('custom-shipping-title').value;
data['order[shipping_method]'] = document.getElementById('custom-shipping-code').value;
this.loadArea(false, false, data);
}
},
submit : function()
{
if (this.orderItemChanged) {
if (confirm('You have item changes')) {
//if (editForm.submit()) {
// disableElements('save');
// }
} else {
this.itemsUpdate();
}
} else {
if (editForm.submit()) {
disableElements('save');
}
}
}
});
order.customshipFieldsBind($('custom-shipping-area'));
//]]>
</script>
</dd>
</dl>
</div>
<?php endif; ?>
(责任编辑:好模板) |