문제

나는 모든 보류 주문을 한 번에 선택하고 관리자의 주문 관리 페이지에서 완료 상태로 이동해야 하는 마젠토 프로젝트를 하고 있습니다.

나는이 수정을했고 잘 작동합니다.그러나 요구 사항은 해당 주문을 완료 상태로 이동하는 동안 주문이 하나의 특정 제품으로 구성된 경우 해당 제품을 제거하거나 수량을 0으로 변경하고 처리해야 한다는 것입니다.

마젠토의 초보자로서 나는 여기에 논리/아이디어가 부족합니다.도움을 주시면 대단히 감사하겠습니다.

도움이 되었습니까?

해결책

약간의 분석과 인터넷 검색 후 아래 코드를 사용하여 달성했습니다.

$orderIds = $this->getRequest()->getPost('order_ids', array());  // get all order ids
$countCompleteOrder = 0;
$_resource = Mage::getSingleton('catalog/product')->getResource();
$mailBody = '';
$mailSend = 0;
foreach ($orderIds as $orderId) {
    $order = Mage::getModel('sales/order')->load($orderId);
    //echo '<pre>'; print_r($order); exit;
    $customer = Mage::getModel("customer/customer")->load($order->getCustomerId());
    $items = $order->getAllItems();
    $pass = 0;
    $true = $k = 0;
    $items_count = count($items);
    foreach ($items as $item) {
        //echo '<pre>'; print_r($item); exit;
        $k++;
        if ($k == 1) {
            $product = Mage::getModel('catalog/product')->load($item->getProductId());
            $cats = $product->getCategoryIds();
            $category_id = $cats[0];

            $_cat = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($category_id);
        }

        $base_grand_total = $order->getBaseGrandTotal();

        $base_subtotal = $order->getBaseSubtotal();
        $base_tva = $order->getBaseTaxAmount();

        $grand_total = $order->getGrandTotal();

        $subtotal = $order->getSubtotal();
        $tva = $order->getTaxAmount();


        $base_subtotal_incl_tax = $order->getBaseSubtotalInclTax();

        $subtotal_incl_tax = $order->getSubtotalInclTax();

        $total_item_count = $order->getTotalItemCount();

        $minorderqty = $_resource->getAttributeRawValue($item->getProductId(), 'min_order_qty', Mage::app()->getStore());

        $report = Mage::getResourceModel('reports/product_sold_collection')
                ->addOrderedQty()
                ->addAttributeToSelect(array('name', 'id'))
                ->addFieldToFilter('entity_id', $item->getProductId())
                ->getFirstItem();
        $ordered_qty = intval($report->getOrderedQty());

        for ($i = 0; $i < $items_count; $i++) {
            if ($ordered_qty >= $minorderqty) {
                $true++;
            }
        }

        if (($ordered_qty < $minorderqty) && ($true > 0)) {
            $item_price = $item->getPrice();
            $item_tva = $item->getTaxAmount();
            if ($items_count > 1) {

                $item->delete();
                $order->setBaseGrandTotal($base_grand_total - $item_price - $item_tva);

                $order->setBaseSubtotal($base_subtotal - $item_price);

                $order->setBaseTaxAmount($base_tva - $item_tva);

                $order->setGrandTotal($grand_total - $item_price - $item_tva);

                $order->setSubtotal($subtotal - $item_price);

                $order->setTaxAmount($tva - $item_tva);


                $order->setBaseSubtotalInclTax($base_subtotal_incl_tax - $item_price);

                $order->setSubtotalInclTax($subtotal_incl_tax - $item_price);

                $order->setTotalItemCount(count($items) - 1);

                $order->save();

                $mailSend++;
            }
        }
    }

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top