如何编辑和更新洋红色订单中订单商品的商品状态



一旦在 magento 中下订单,订单项目的状态就会为"已订购"。我能够获取此状态。但是我需要编辑此状态,例如"创建"。

已尝试使用以下代码,但更改未反映

$order = Mage::getModel("sales/order")->loadByIncrementId($orderId); 
$ordered_items = $order->getAllVisibleItems();
foreach($ordered_items as $item){  
      $item->getStatus();
      $item->setStatus('Creating');
      $order->save();
      }

甚至尝试使用此处建议的选项 如何在Magento中更新订单项目的自定义选项? 这也不起作用。请在此处添加您的建议。提前致谢

订单项没有单独的字段 - 状态。要了解如何确定状态,您可以查看方法 Mage_Sales_Model_Order_Item :: getStatusId

/**
 * Retrieve item status identifier
 *
 * @return int
 */
public function getStatusId()
{
    $backordered = (float)$this->getQtyBackordered();
    if (!$backordered && $this->getHasChildren()) {
        $backordered = (float)$this->_getQtyChildrenBackordered();
    }
    $canceled    = (float)$this->getQtyCanceled();
    $invoiced    = (float)$this->getQtyInvoiced();
    $ordered     = (float)$this->getQtyOrdered();
    $refunded    = (float)$this->getQtyRefunded();
    $shipped     = (float)$this->getQtyShipped();
    $actuallyOrdered = $ordered - $canceled - $refunded;
    if (!$invoiced && !$shipped && !$refunded && !$canceled && !$backordered) {
        return self::STATUS_PENDING;
    }
    if ($shipped && $invoiced && ($actuallyOrdered == $shipped)) {
        return self::STATUS_SHIPPED;
    }
    if ($invoiced && !$shipped && ($actuallyOrdered == $invoiced)) {
        return self::STATUS_INVOICED;
    }
    if ($backordered && ($actuallyOrdered == $backordered) ) {
        return self::STATUS_BACKORDERED;
    }
    if ($refunded && $ordered == $refunded) {
        return self::STATUS_REFUNDED;
    }
    if ($canceled && $ordered == $canceled) {
        return self::STATUS_CANCELED;
    }
    if (max($shipped, $invoiced) < $actuallyOrdered) {
        return self::STATUS_PARTIAL;
    }
    return self::STATUS_MIXED;
}

和可用状态:

/**
 * Retrieve order item statuses array
 *
 * @return array
 */
public static function getStatuses()
{
    if (is_null(self::$_statuses)) {
        self::$_statuses = array(
            //self::STATUS_PENDING        => Mage::helper('sales')->__('Pending'),
            self::STATUS_PENDING        => Mage::helper('sales')->__('Ordered'),
            self::STATUS_SHIPPED        => Mage::helper('sales')->__('Shipped'),
            self::STATUS_INVOICED       => Mage::helper('sales')->__('Invoiced'),
            self::STATUS_BACKORDERED    => Mage::helper('sales')->__('Backordered'),
            self::STATUS_RETURNED       => Mage::helper('sales')->__('Returned'),
            self::STATUS_REFUNDED       => Mage::helper('sales')->__('Refunded'),
            self::STATUS_CANCELED       => Mage::helper('sales')->__('Canceled'),
            self::STATUS_PARTIAL        => Mage::helper('sales')->__('Partial'),
            self::STATUS_MIXED          => Mage::helper('sales')->__('Mixed'),
        );
    }
    return self::$_statuses;
}

最新更新