管理订单创建:与帐单相同的运输总是检查的:我可以清楚吗?
-
16-10-2019 - |
题
我的情况与 这个问题...我的版本是1.7.0.1
在电话订单的后端创建新订单时,我们发现始终检查“相同的计费地址” tickbox。由于此,我的运输人员有时会错误地发货订单,因为某种程度上,运输地址实际上不是帐单地址。
当然,我尝试编辑应用程序/design/adminhtml/default/default/template/sales/sales/creation/creation/form/form/address.phtml在第67行上删除 <?php if($this->getIsAsBilling()): ?>checked<?php endif; ?>
从复选框中,但这绝对不是解决方案。 :p是的,该表格然后未检查,但是如果您检查它,现在应该更改时会被清除。
这让我认为我正在看症状,问题在其他地方。
请帮助,在订单开始时找到一种方法来取消选中该框?
解决方案
伙计们,这只是可怕的解决方案。您无法修改核心文件(甚至更少将它们复制到 /local),而您的问题与后端问题有关,最终您会修改一个也会改变前端的文件。
如果您检查此控制器: Mage_Adminhtml_Sales_Order_CreateController
您会看到一个函数称为 _processActionData
它设置了 setShippingAsBilling
到1。
只需创建一个扩展名并添加观察者 adminhtml_sales_order_create_process_data
应用您想要的修改。
其他提示
查看 @ app/code/cod/mage/sales/sales/sales/quote/worders.php
在第246行 _beforeSave()
if ($this->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
&& $this->getSameAsBilling() === null
) {
$this->setSameAsBilling(1);
}
至
if ($this->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
&& $this->getSameAsBilling() === null
&& $this->getQuote()->getBillingAddress()->getData('customer_address_id') == $this->getQuote()->getShippingAddress()->getData('customer_address_id')
) {
$this->setSameAsBilling(1);
}
为了避免更改为核心,您可以创建一个自定义模块来覆盖 Mage_Sales_Model_Quote_Address
看 http://www.magentocommerce.com/boards/viewthread/53671/ 或复制到 local
具有相同目录结构的文件夹
尝试改变 app/code/core/Mage/Sales/Model/Quote/Address.php
文件。查找功能 _beforeSave()
并查看以下行:
if ($this->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
&& $this->getSameAsBilling() === null
) {
$this->setSameAsBilling(1);
}
这些行告诉我们默认情况下的运输地址将与新报价的帐单地址相同(也是 同开票 列 sales_flat_quote_address 表默认为null)。您应该更改为:
$this->setSameAsBilling(0);
看一眼 app/code/core/Mage/Adminhtml/Model/Sales/Order/Create.php
并找到受保护的方法 _initShippingAddressFromOrder(Mage_Sales_Model_Order $order)
:
$this->getQuote()->getShippingAddress()->setCustomerAddressId('');
至
$orderShippingAddress = $order->getShippingAddress();
$quoteShippingAddress = $this->getQuote()->getShippingAddress()
->setCustomerAddressId('')
->setSameAsBilling($orderShippingAddress && $orderShippingAddress->getSameAsBilling());
您切勿修改核心文件。只需创建一个新的模块并重写类。