2012-01-29 20 views
7

मैं से sales_order/indexMagento मैं प्रोग्रामेटिक रूप से आदेश कैसे भेजूं?

किसी तरह के आदेश भेज दिया नहीं किया जा रहा Magento और जहाज और पूर्ण अनेक आदेश में MassAction जोड़ने के लिए कुछ कोड में देख रहा हूँ।

ऐसा लगता है (एक पूरी तरह से सामान्य आदेश) canship() परीक्षण पास नहीं कर रहा है। क्या इसे $orderid से पास किया जाना चाहिए?

यहाँ मेरी कोड

//Get orderids 
$orderIds = $this->getRequest()->getPost('order_ids'); 

//verify if the array is not empty 
if (!empty($orderIds)) { 
//loop through orders 
foreach ($orderIds as $orderId) { 

// Dont know what this does 
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId); 

// Is the order shipable? 
if($order->canShip()) 
{ 
$itemQty = $order->getItemsCollection()->count(); 
// This first definition and 2nd look overlapping, our one is obsolete? 
$shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); 
$shipment = new Mage_Sales_Model_Order_Shipment_Api(); 

// But still, no shipment, why? 
$shipmentId = $shipment->create($orderId, array(), 'Shipment created through ShipMailInvoice', true, true); 

उत्तर

6

आप आईडी के आधार पर लोड करने के लिए यदि आप हैं, तो आप वास्तव में आदेश incrementId मिल IncrementOrderId द्वारा OrderID, या लोड पाने की जरूरत है।

इस का उपयोग करें:

$order = Mage::getModel('sales/order')->load($orderId);

हमें बताएं कि क्या यह काम करते हैं।

और फिर:

$shipmentId = $shipment->create($order->getIncrementId(), $itemQty, 'Shipment created through ShipMailInvoice', true, true); 

कि कोशिश करो।

+0

बहुत धन्यवाद @ शुनोरिली। यह canship() पास है ... लेकिन एक अगली त्रुटि होती है: order_not_exists 'code' ट्रेस: ​​आदेश/शिपमेंट/Api.php (142): Mage_Api_Model_Resource_Abstract -> _ गलती ('order_not_exist ...') बिक्री/ऑर्डर कंट्रोलर.एफ़पी (45): Mage_Sales_Model_Order_Shipment_Api-> बनाएं ('121', ऐरे, 'शिपमेंट बनाएं ...', सच, सत्य) 'कोड' –

+0

तो अब यह $ शिपमेंट-> बनाएं पर क्रैश हो गया है। मैंने $ ऑर्डर और ऑर्डर दोनों की कोशिश की। दोनों काम नहीं कर रहे हैं। $ ऑर्डर परिणाम उल्लंघन उल्लंघन $ शिपमेंट आईडी = $ शिपमेंट-> बनाएं ($ ऑर्डर, सरणी(), –

+0

मेरे उत्तर के अंतिम संपादन को देखें। – ShaunOReilly

1
$order = Mage::getModel('sales/order')->load($orderId); 

//create shipment 
$itemQty = $order->getItemsCollection()->count(); 
$shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); 
$shipment = new Mage_Sales_Model_Order_Shipment_Api(); 
$shipmentId = $shipment->create($order->getIncrementId(), array(), 'Shipment created through ShipMailInvoice', true, true); 

//add tracking info 
$shipment_collection = Mage::getResourceModel('sales/order_shipment_collection'); 
$shipment_collection->addAttributeToFilter('order_id', $orderId); 
foreach($shipment_collection as $sc) 
{ 
$shipment = Mage::getModel('sales/order_shipment'); 
$shipment->load($sc->getId()); 
           if($shipment->getId() != '') 
           { 
           try 
           { 
            Mage::getModel('sales/order_shipment_track') 
            ->setShipment($shipment) 
            ->setData('title', 'carrier') 
            ->setData('number', $trackInfo) 
            ->setData('carrier_code', 'custom') 
            ->setData('order_id', $shipment->getData('order_id')) 
            ->save(); 

           }catch (Exception $e) 
           { 
            Mage::getSingleton('core/session')->addError('order id '.$orderId.' no found'); 
           } 
           } 
         } 
// change order status to complete 
         $order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE); 
         $order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE); 
         $order->save(); 

किसी भी व्यक्ति के लिए काम करने वाला कोड 1. एक जहाज बनाने वाला, 2. शिपिंग ट्रैकिंग जानकारी जोड़ें और 3. जहाज की स्थिति को पूरा करने के लिए बदलें।

शॉनोरिली के लिए बहुत बहुत धन्यवाद।

संबंधित मुद्दे