我最近将magento从1.4.0.1升级到1.7.0.2。现在我在发票明细页面上收到错误。
致命错误:在D:\ xampp \ htdocs \ magento171 \ app \ code \ core \ Mage \ Adminhtml \ controllers \ Sales \ Order \ InvoiceController.php中的非对象上调用成员函数updateBackButtonUrl() 151
第151行的代码是
$this->getLayout()->getBlock('sales_invoice_view')->updateBackButtonUrl($this->getRequest()->getParam('come_from'));
任何人都可以提供帮助,如何解决这个问题。
答案 0 :(得分:3)
因为我最近更新了磁控,所以有可能更换控制器或查看文件,所以我用新的新版本替换了所有文件,但问题仍然存在。
然后我从exception.log文件中找到了
例外' Mage_Core_Exception'消息'请求的付款方式不可用。'在D:\ Mage.php:594
由于数据库中已有许多订单和发票记录,因此我假设这些订单和发票的付款方式可能未安装或可能被禁用。因此,分析并与旧管理员比较,系统无法识别这两种付款方式的订单。
与此相关的所有订单在详细页面中都有问题。 后来我发现付款存储在' sales_flat_order_payments'表格和字段是'方法',但是当我看到字段时它有值。
然后我做了一个技巧,并使用有线传输和亚马逊支付完成了一些测试订单(我已经为亚马逊支付安装了一个新模块),所以对于有线传输,我现在可以看到与其相关的发票的详细信息页面,所以我确信以前没有打开我们在与销售和有线传输相关的数据库表中存在冲突,并通过执行此事务解决了冲突
对于亚马逊来说,新订单的价值是不同的,所以我用新的亚马逊支付价格取代旧值。
UPDATE sales_flat_order_payment SET method='checkoutbyamazon_sandbox' WHERE method='amazonpayments_cba';
现在所有与亚马逊相关的发票的详细页面都没有错误。
答案 1 :(得分:0)
此按钮的工作频率为1.7x,因此它是您的设置,而不是Magento中的错误。要弄清楚发生了什么:
检查没有重新编写Mage_Adminhtml_Block_Sales_Order_Invoice_View的模块,并确保InvoiceController.php文件的app / code / local中没有副本。
通过'消除过程',你可以在app / etc / modules中禁用add on modules。
还要确保控制器文件和app / code / core / Mage / Adminhtml / Block / Sales / Order / Invoice / View.php是1.7x而不是1.4x。