dqczgtem06898 2015-09-21 10:27
浏览 46
已采纳

在magento中选择多个数量后如何从自定义页面订购多个产品?

I created a custom page, displaying all product with qty button. Here we can choose multiple products. After that i want to order place of all selected products. How can i place order for multiple product? Is any plugin is available in magento?

  • 写回答

1条回答 默认 最新

  • duandaodao6951 2015-09-24 08:20
    关注

    I was also in need of same functionality, will ended up this by using my own script instead of any plugin. Below is the complete code of placing order programatically. Hope this helps.

    <?php
        $transaction = Mage::getModel('core/resource_transaction');
        $increment_ids = array();
        if ($orderData) {
    
            try {
    
                $reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($store_id);
                $order = Mage::getModel('sales/order')
                    ->setIncrementId($reservedOrderId)
                    ->setStoreId($store_id)
                    ->setQuoteId(0)
                    ->setGlobal_currency_code('USD')
                    ->setBase_currency_code('USD')
                    ->setStore_currency_code('USD')
                    ->setOrder_currency_code('USD');
                    //saving customer
                    $order->setCustomer_email($orderData['email'])
                    ->setCustomerFirstname($orderData['firstname'])
                    ->setCustomerLastname($orderData['lastname'])
                    ->setCustomerGroupId(1)
                    ->setCustomer_is_guest(1);
    
    
                    $regionModel = Mage::getModel('directory/region')->loadByCode("CA", 'US');
    
    
                    $shippingAddress = Mage::getModel('sales/order_address')
                    ->setStoreId($storeId)
                    ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
                    ->setFirstname($orderData['firstname'])
                    ->setLastname($orderData['lastname'])
                    ->setStreet($orderData['shipping']['line'])
                    ->setCity($orderData['shipping']['city'])
                    ->setRegion($orderData['shipping']['region'])
                    ->setRegionId($regionModel->getId())
                    ->setCountry_id('US')
                    ->setPostcode($orderData['shipping']['postcode'])
                    ->setTelephone($orderData['shipping']['telephone']);
    
                    $order->setShippingAddress($shippingAddress)
                    ->setShipping_method($orderData['shipping_method'])
                    ->setShippingDescription($orderData['shipping_description']);
    
                    //get region code
                    $regionModel = Mage::getModel('directory/region')->loadByCode($orderData['billing']['region'], 'US');
    
                    // set Billing Address            
                    $billingAddress = Mage::getModel('sales/order_address')
                    ->setStoreId($storeId)
                    ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
                    ->setFirstname($orderData['firstname'])
                    ->setLastname($orderData['lastname'])
                    ->setStreet($orderData['billing']['line'])
                    ->setCity($orderData['billing']['city'])
                    ->setRegion($regionModel->getName())
                    ->setRegionId($regionModel->getId())
                    ->setCountry_id('US')
                    ->setPostcode($orderData['billing']['postcode'])
                    ->setTelephone($orderData['billing']['telephone']);
                    $order->setBillingAddress($billingAddress);
    
    
                    //save products
                    $subTotal = 0;
                    $productPrice=0;
                    $qtyTotal=0;
                    foreach ($orderData['items'] as $key=>$product) {
                        $_product = Mage::getModel('catalog/product')->load($key);
                        $rowTotal = $_product->getPrice() * $product;
                        $orderItem = Mage::getModel('sales/order_item')
                        ->setStoreId($storeId)
                        ->setQuoteItemId(0)
                        ->setQuoteParentItemId(NULL)
                        ->setProductId($key)
                        ->setProductType($_product->getTypeId())
                        ->setQtyBackordered(NULL)
                        ->setTotalQtyOrdered($product)
                        ->setQtyOrdered($product)
                        ->setName($_product->getName())
                        ->setSku($_product->getSku())
                        ->setPrice(($_product->getPrice()))
                        ->setBasePrice($_product->getPrice())
                        ->setOriginalPrice($_product->getPrice())
                        ->setRowTotal($rowTotal)
                        ->setBaseRowTotal($rowTotal);
    
                        $qtyTotal += $product;
                        $subTotal += $rowTotal;
                        $order->addItem($orderItem);
                    }
    
                    $grandTotal = ($subTotal+$orderData['shipping_charge'])-$orderData['discount'];
    
    
                    $orderPayment = Mage::getModel('sales/order_payment')
                    ->setStoreId($store_id)
                    ->setCustomerPaymentId(0)
                    ->setMethod('purchaseorder')
                    ->setPo_number($reservedOrderId);
                    $order->setPayment($orderPayment);
    
    
                    //date_default_timezone_set('America/Los_Angeles');
                    $order->setSubtotal($subTotal)
                    ->setState('processing')
                    ->setStatus('processing')
                    ->setCouponCode($orderData['coupon'])
                    ->setBaseDiscountAmount($orderData['discount'])
                    ->setBaseGrandTotal($grandTotal)
                    ->setBaseSubtotal($subTotal)
                    ->setBaseTotalInvoiced($grandTotal)
                    ->setBaseTotalQtyOrdered($qtyTotal)
                    ->setDiscountAmount($orderData['discount'])
                    ->setGrandTotal($grandTotal)
                    ->setSubtotal($subTotal)
                    ->setTotalQtyOrdered($qtyTotal)
                    ->setBaseTotalDue($grandTotal)
                        //->setCreatedAt(date('Y-m-d'))
                        //->setUpdatedAt(date('Y-m-d'))
                    ->setTotalItemCount($order_detail['qty'])
                    ->setShippingAmount($orderData['shipping_charge'])
                    ->setBaseShippingAmount($orderData['shipping_charge']);
    
                    $transaction->addObject($order);
                    $transaction->addCommitCallback(array($order, 'place'));
                    $transaction->addCommitCallback(array($order, 'save'));
                    $transaction->save();
                    $order_data = $order->getData();
                    $order_id = $order_data['increment_id'];
    
    
                    $order->sendNewOrderEmail();
    
    
            } catch (Exception $e) {
                $finalresult=array('exception',$e->getMessage());           
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?