你好亲爱的社区。 p>
我正在使用Magento 1.9.0.1,我目前正在开发一个自定义扩展程序,我被困在管理员订单视图页面。
让我用图像描述我的问题,这样你就可以更容易了。
以下是创建订单之前页面的屏幕截图(在前端):
以下是管理面板中页面的屏幕截图,您可以在其中查看创建的订单详细信息(在管理面板中):
我的整个问题是扩展程序未在管理订单视图页面中显示SMS Notification
金额。正如您在订单视图页面中所看到的,0.50
的金额已包含在总计中,但未显示在SMS Notification
的行中。
现在我要发布扩展程序的所有文件,我认为可能对解决问题有任何作用。
我在:/store/app/code/community/VivasIndustries/SmsNotification/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<VivasIndustries_SmsNotification>
<version>1.0.0</version>
</VivasIndustries_SmsNotification>
</modules>
<global>
<models>
<smsnotification>
<class>VivasIndustries_SmsNotification_Model</class>
<resourceModel>vivasindustries_smsnotification_resource</resourceModel>
</smsnotification>
<vivasindustries_smsnotification_resource>
<class>VivasIndustries_SmsNotification_Model_Resource</class>
<entities>
<smsnotification>
<table>VivasIndustries_SmsNotification</table>
</smsnotification>
<smsnotificationhistory>
<table>VivasIndustries_SmsHistory</table>
</smsnotificationhistory>
</entities>
</vivasindustries_smsnotification_resource>
</models>
<resources>
<smsnotification_setup>
<setup>
<module>VivasIndustries_SmsNotification</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</smsnotification_setup>
<smsnotification_read>
<connection>
<use>core_read</use>
</connection>
</smsnotification_read>
<smsnotification_write>
<connection>
<use>core_write</use>
</connection>
</smsnotification_write>
</resources>
<events>
<checkout_type_onepage_save_order_after> <!-- identifier of the event we want to catch -->
<observers>
<checkout_type_onepage_save_order_after_smsprice_handler> <!-- identifier of the event handler -->
<type>model</type> <!-- class method call type; valid are model, object and singleton -->
<class>smsnotification/newordertotalobserver</class> <!-- observers class alias -->
<method>saveSmspriceTotal</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</checkout_type_onepage_save_order_after_smsprice_handler>
</observers>
</checkout_type_onepage_save_order_after>
<checkout_type_multishipping_create_orders_single> <!-- identifier of the event we want to catch -->
<observers>
<checkout_type_multishipping_create_orders_single_smsprice_handler> <!-- identifier of the event handler -->
<type>model</type> <!-- class method call type; valid are model, object and singleton -->
<class>smsnotification/newordertotalobserver</class> <!-- observers class alias -->
<method>saveSmspriceTotalForMultishipping</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</checkout_type_multishipping_create_orders_single_smsprice_handler>
</observers>
</checkout_type_multishipping_create_orders_single>
<sales_order_save_after>
<observers>
<vivasindustries_smsnotification>
<class>smsnotification/observer</class>
<method>orderSaved</method>
</vivasindustries_smsnotification>
</observers>
</sales_order_save_after>
</events>
<sales>
<quote>
<totals>
<smsprice_total>
<class>smsnotification/quote_address_total_smsprice</class>
<after>subtotal,freeshipping,tax_subtotal,shipping</after>
<before>grand_total</before>
</smsprice_total>
</totals>
</quote>
<order_invoice>
<totals>
<smsprice_total>
<class>smsnotification/order_invoice_total_smsprice</class>
<after>subtotal,freeshipping,tax_subtotal,shipping</after>
<before>grand_total</before>
</smsprice_total>
</totals>
</order_invoice>
<order_creditmemo>
<totals>
<smsprice_total>
<class>percentpayment/order_creditmemo_total_smsprice</class>
<after>subtotal,freeshipping,tax_subtotal,shipping</after>
<before>grand_total</before>
</smsprice_total>
</totals>
</order_creditmemo>
</sales>
<helpers>
<smsnotification>
<class>VivasIndustries_SmsNotification_Helper</class>
</smsnotification>
</helpers>
<blocks>
<smsnotification>
<class>VivasIndustries_SmsNotification_Block</class>
</smsnotification>
</blocks>
</global>
<adminhtml>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<system>
<children>
<config>
<children>
<vivas>
<title>Vivas - All</title>
</vivas>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<smsnotification>
<file>smsnotification.xml</file>
</smsnotification>
</updates>
</layout>
</adminhtml>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<VivasIndustries_SmsNotification before="Mage_Adminhtml">VivasIndustries_SmsNotification_Adminhtml</VivasIndustries_SmsNotification>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<default>
<vivas>
<smspricegroup>
<smsprice_name>SMS Notification</smsprice_name>
<smsprice_fee>0.5</smsprice_fee>
</smspricegroup>
</vivas>
</default>
</config>
我在:/store/app/code/community/VivasIndustries/SmsNotification/Helper/Data.php:
<?php
class VivasIndustries_SmsNotification_Helper_Data extends Mage_Core_Helper_Abstract
{
public function formatFee($amount){
$SmspriceLabel = Mage::getStoreConfig('vivas/smspricegroup/smsprice_name');
return Mage::helper('smsnotification')->__($SmspriceLabel);
}
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/Helper/Adminhtml/Data.php:
<?php
class VivasIndustries_SmsNotification_Helper_Adminhtml_Data extends Mage_Adminhtml_Helper_Data
{
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/Model/Newordertotalobserver.php
<?php
class VivasIndustries_SmsNotification_Model_Newordertotalobserver
{
public function saveSmspriceTotal(Varien_Event_Observer $observer)
{
$order = $observer -> getEvent() -> getOrder();
$quote = $observer -> getEvent() -> getQuote();
$shippingAddress = $quote -> getShippingAddress();
if($shippingAddress && $shippingAddress -> getData('smsprice_total')){
$order -> setData('smsprice_total', $shippingAddress -> getData('smsprice_total'));
}
else{
$billingAddress = $quote -> getBillingAddress();
$order -> setData('smsprice_total', $billingAddress -> getData('smsprice_total'));
}
$order -> save();
}
public function saveSmspriceTotalForMultishipping(Varien_Event_Observer $observer)
{
$order = $observer -> getEvent() -> getOrder();
$address = $observer -> getEvent() -> getAddress();
$order -> setData('smsprice_total', $shippingAddress -> getData('smsprice_total'));
$order -> save();
}
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/Model/Quote/Address/Total/Smsprice.php:
<?php
class VivasIndustries_SmsNotification_Model_Quote_Address_Total_Smsprice extends Mage_Sales_Model_Quote_Address_Total_Abstract
{
public function __construct()
{
$this -> setCode('smsprice_total');
}
public function getSmsPriceStatus()
{
$EnableSmsPrice = Mage::getStoreConfig('vivas/smspricegroup/smsprice_active');
return ($EnableSmsPrice);
}
public function collect(Mage_Sales_Model_Quote_Address $address)
{
parent :: collect($address);
$items = $this->_getAddressItems($address);
if (!count($items)) {
return $this;
}
$quote= $address->getQuote();
if($this->getSmsPriceStatus())
{
$discountAmount = Mage::getStoreConfig('vivas/smspricegroup/smsprice_fee');
$address->setSmspriceAmount($discountAmount);
$address->setBaseSmspriceAmount($discountAmount);
$quote->setSmspriceAmount($discountAmount);
//amount definition
$discountAmount = $quote -> getStore() -> roundPrice($discountAmount);
$this -> _setAmount($discountAmount) -> _setBaseAmount($discountAmount);
$address->setData('smsprice_total',$discountAmount);
return $this;
}
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
$EnableSmsPrice = Mage::getStoreConfig('vivas/smspricegroup/smsprice_active');
if($this->getSmsPriceStatus())
{
parent :: fetch($address);
$amount = $address -> getTotalAmount($this -> getCode());
if ($amount != 0){
$address -> addTotal(array(
'code' => $this -> getCode(),
'title' => $this -> getLabel(),
'value' => $amount
));
}
return $address;
}
}
public function getLabel()
{
$SmspriceLabel = Mage::getStoreConfig('vivas/smspricegroup/smsprice_name');
return Mage::helper('smsnotification')->__("$SmspriceLabel:");
}
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/Model/Order/Invoice/Total/Smsprice.php:
<?php
class VivasIndustries_SmsNotification_Model_Order_Invoice_Total_Smsprice
extends Mage_Sales_Model_Order_Invoice_Total_Abstract
{
public function collect(Mage_Sales_Model_Order_Invoice $invoice)
{
$order=$invoice->getOrder();
$orderDiscountTotal = $order->getSmspriceTotal();
if ($orderDiscountTotal&&count($order->getInvoiceCollection())==0) {
$invoice->setGrandTotal($invoice->getGrandTotal()+$orderDiscountTotal);
$invoice->setBaseGrandTotal($invoice->getBaseGrandTotal()+$orderDiscountTotal);
}
return $this;
}
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/Model/Order/Creditmemo/Total/Smsprice.php:
<?php
class VivasIndustries_SmsNotification_Model_Order_Creditmemo_Total_Smsprice
extends Mage_Sales_Model_Order_Creditmemo_Total_Abstract
{
public function collect(Mage_Sales_Model_Order_Creditmemo $creditmemo)
{
return $this;
$order = $creditmemo->getOrder();
$orderDiscountTotal = $order->getSmspriceTotal();
if ($orderDiscountTotal) {
$creditmemo->setGrandTotal($creditmemo->getGrandTotal()+$orderDiscountTotal);
$creditmemo->setBaseGrandTotal($creditmemo->getBaseGrandTotal()+$orderDiscountTotal);
}
return $this;
}
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/Model/Resource/Smsnotification/Collection.php:
<?php
class VivasIndustries_SmsNotification_Model_Resource_Smsnotification_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract{
protected function _construct(){
$this->_init('smsnotification/smsnotification');
}
}
我在:/store/app/code/community/VivasIndustries/SmsNotification/sql/smsnotification_setup/mysql4-install-1.0.0.php:
<?php
$installer=$this;
$installer->startSetup();
$installer->run("
CREATE TABLE IF NOT EXISTS `VivasIndustries_SmsNotification` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state` varchar(500) NOT NULL,
`smstext` varchar(500) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `VivasIndustries_SmsHistory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`receiver` varchar(500) NOT NULL,
`phone` varchar(500) NOT NULL,
`email` varchar(500) NOT NULL,
`smstext` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
");
/*$installer->run("
ALTER TABLE `".$this->getTable('sales/quote_address')."` ADD `smsprice_total` DECIMAL( 10, 2 ) NOT NULL;
ALTER TABLE `".$this->getTable('sales/order')."` ADD `smsprice_total` DECIMAL( 10, 2 ) NOT NULL;
"); */
$installer->addAttribute("quote_address", "smsprice_total", array("type"=>"varchar"));
$installer->addAttribute("order", "smsprice_total", array("type"=>"varchar"));
$installer->endSetup();
?>
所以这些人都是我认为可能对解决我的问题很重要的文件。如果您需要更多信息,请告诉我。
我希望你能帮我解决问题。提前谢谢!