2015-09-21 10 views
0

Я создал пользовательскую страницу, отображающую весь товар с кнопкой qty. Здесь мы можем выбрать несколько продуктов. После этого я хочу заказать место для всех выбранных продуктов. Как я могу разместить заказ на несколько продуктов? Есть ли какой-либо плагин в magento?Как можно заказать место для нескольких продуктов с пользовательской страницы после выбора нескольких штук в пурпуре?

ответ

0

Я также нуждался в такой же функциональности, закончил бы это, используя мой собственный скрипт вместо любого плагина. Ниже приведен полный код размещения заказа программно. Надеюсь это поможет.

<?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());   
     } 
    }