0

我正在使用 Magento SOAP API 做一些工作,我正在尝试创建一个有效的订单列表。我有列表,但它显示了可配置产品和简单产品,让我复制如下图所示: 项目清单

同一产品的第一个清单是可配置产品,第二个是简单产品。我需要做的是过滤掉简单的产品,这样它们就不会显示在列表中或被存储。这听起来很简单,但有一个问题让我很难弄清楚如何解决,那就是像上图中的诺基亚这样的产品是标准的简单产品,没有可配置的属性,它们也需要展示!

所以基本上我需要摆脱与可配置产品相​​关的简单产品,而不是其他产品。

这是我的循环和数组推送:

foreach($sales_order_info->items as $i){
                $nextItem = new item();
                $nextItem->set_order_id($i->order_id);
                $nextItem->set_sku($i->sku);
                $nextItem->set_name($i->name);
                $nextItem->set_qty_ordered($i->qty_ordered);
                $nextItem->set_price($i->price);
                $nextItem->set_row_total($i->row_total);

                array_push($this->items, $nextItem);
            }

非常感谢

4

1 回答 1

1

如果您需要过滤可配置产品的简单产品:

 if ($product->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) {              
    if ( $product->getParentItemId()) {
                        $parent_product_type = Mage::getModel('sales/order_item')->load($product->getParentItemId())->getProductType();
                        //if Parent product type is configurable don't output its simple product
                        if ($parent_product_type == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
                            continue; 
                        }
                    }
}

如果您不想扩展 Magento API 并编写自己的自定义调用,您可以尝试以下方法。

第二种选择是尝试使用(不确定如何加载它,使用什么调用):

$i->type

然后用 PHP 过滤数组(即如果有 2 个具有相同名称和数量的元素,则删除具有 type==simple 的元素)

或者第三个选项是(如果您没有任何免费产品)只需检查价格是否等于零,因为属于可配置的简单产品的价格 = 0.0000

if ($i->price==0.0000) {
    continue;
}
于 2013-11-03T16:40:44.667 回答