2011-09-21 12 views
8

मुझे यह जांचने की ज़रूरत है कि क्या ऑर्डर पहले से ही कुछ शिपमेंट सेट है या नहीं। एकमात्र डेटा जो मैं उपयोग कर सकता हूं वह आदेश की वृद्धि आईडी है। मुझे मॉडल ऑर्डर का एक उदाहरण मिल रहा है, लेकिन मुझे कोई रास्ता नहीं दिख रहा है कि मैं शिपमेंट इंस्टेंस प्राप्त कर सकता हूं।मैगेंटो में ऑर्डर के शिपमेंट के बारे में कैसे जांचें?

मैं इस कोड का उपयोग कर रहा:

$order = Mage::getModel('sales/order') 
    ->loadByIncrementId($order_increment_id); 

लेकिन यह कैसे मैं एक शिपमेंट उदाहरण मिल सकता है? मुझे पता है कि मैं Mage::getModel('sales/order_shipment')->loadByIncrementId($shipment_increment_id) पर कॉल कर सकता हूं लेकिन मुझे शिपमेंट वृद्धि आईडी कैसे प्राप्त हो सकती है?

उत्तर

26

मान लीजिए कि जिस व्यक्ति ने इसे लिखा है उसे करने के लिए आपको जो भी करने की आवश्यकता है, उसे भी करने की आवश्यकता हो सकती है। आम तौर पर, जब Magento ऑब्जेक्ट्स में कई रिश्तों में से एक होता है तो आप एक को कई को लोड करने के लिए एक विधि पा सकते हैं।

आपके पास कक्षा उपनाम sales/order है।

यह Mage_Sales_Model_Order (स्टॉक स्थापना में) से मेल खाता है।

आप इस कक्षा को app/code/core/Mage/Sales/Model/Order.php पर पा सकते हैं।

आप इस वर्ग की जांच करते हैं, तो उन में शब्द "जहाज" के साथ 7 तरीकों

function canShip 
function setShippingAddress 
function getShippingAddress 
function getShip 
function getShipmentsCollection 
function hasShip 
function prepareShip 
उन 7 के

, केवल getShipmentsCollection के शब्दों का संकेत एक आदेश के लदान हथियाने के लिए एक विधि है। तो

foreach($order->getShipmentsCollection() as $shipment) 
{ 
    var_dump(get_class($shipment)); 
    //var_dump($shipment->getData()); 
} 

कोशिश या के लिए getShipmentsCollection

public function getShipmentsCollection() 
{ 
    if (empty($this->_shipments)) { 
     if ($this->getId()) { 
      $this->_shipments = Mage::getResourceModel('sales/order_shipment_collection') 
       ->setOrderFilter($this) 
       ->load(); 
     } else { 
      return false; 
     } 
    } 
    return $this->_shipments; 
} 
+2

बहुत बहुत धन्यवाद, एलन! GetShipmentsCollection() और Magento संग्रहों को देखने के बाद, मुझे पता चला कि getShipmentsCollection() -> गिनती() का उपयोग करना मुझे बस चाहिए। –

+5

आपकी व्याख्या हमेशा के रूप में बहुत स्पष्ट है (मुझे आश्चर्य है कि आप कोर टीम में क्यों काम नहीं करते :) :) ... हालांकि ... ऑर्डर स्थिति = 'पूर्ण' जांचना आसान नहीं होगा? ... तो: $ संग्रह = मैगे :: getResourceModel ('sales/order_collection') -> addAttributeToFilter ('increment_id', $ id) -> addAttributeToFilter ('state', 'full') – WonderLand

8

स्रोत पर एक नज़र डालें बस बनाने के लिए यह पूरा Mage_Sales_Model_Order सार्वजनिक विधि है:
hasShipments()
जो लदान की संख्या देता है और आंतरिक रूप से getShipmentsCollection() उल्लेख उपयोग करता है।

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