【问题标题】:Magento options not shown on order, invoice (database not populated)订单、发票上未显示 Magento 选项(未填充数据库)
【发布时间】:2012-02-14 07:36:29
【问题描述】:

升级到 Magento 1.6.2.0(从 1.4)后,表 sales_flat_order_item 中的 product_option 字段不会在下新订单时更新。

在升级前的旧订单中,条目显示为:

a:2:{s:15:"info_buyRequest";a:3:{s:7:"options";a:2…等

但升级后:

a:0:{}

我尝试切换到标准模板,添加带有选项的新测试产品,删除扩展均无济于事。

也许有人知道 product_options 字段是如何填充的?

选项值在产品添加到购物篮时插入到 sales_flat_quote_item_option 中,但在实际下订单时不会插入到 sales_flat_order_item 中。

谢谢。

【问题讨论】:

    标签: magento


    【解决方案1】:

    升级后我没有遇到过这个问题,但这里有一些提示,希望能帮助您查明问题并提供一些背景信息。

    从报价项目到订单项目的转换由Mage_Sales_Model_Convert_Quote::itemToOrderItem() 处理。

    这是复制产品选项的方式。

    $options = $item->getProductOrderOptions();
    if (!$options) {
        $options = $item->getProduct()
            ->getTypeInstance(true)
            ->getOrderOptions($item->getProduct());
    }
    $orderItem->setProductOptions($options);
    

    getOrderOptions() 从产品中获取选项数组,包括info_buyRequest 和任何选定的属性选项。

    复合产品处理已与 Magento 1.5 统一。任何选项,无论是可配置产品选项、捆绑产品配置还是自定义选项,都由同一个复合产品子系统处理。

    这些更改还旨在尽可能保持向后兼容性,但必须升级一些覆盖深层核心功能的扩展才能与新流程一起使用。

    要查明是否存在任何更改相关类的重写,我将运行以下代码来检查目录和销售模块。

    require_once 'app/Mage.php';
    Mage::app();
    
    print_r(array(
        'Mage_Catalog Model Rewrites' => Mage::getConfig()->getNode('global/models/catalog/rewrite'),
        'Mage_Sales Model Rewrites'   => Mage::getConfig()->getNode('global/models/sales/rewrite')
    ));
    

    如果产品类型模型、销售订单或报价项目或销售转换或服务模型被重写,请尝试禁用这些扩展。

    【讨论】:

    • 非常感谢 Vinai 抽出宝贵时间撰写这篇出色的教育解释。事实证明,app/code/core/Mage/Sales/Model/Convert/order.php 和 quote.php(在搜索 Mage_Sales_Model_Convert_Quote 后找到)正在被一个很久以前被遗忘、未正确卸载的扩展程序重写以创建自定义发票.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多