/**
  * @see Varien_Object::_construct()
  * overriding in order to implement order shipment
  * business logic to replace Magento data with
  * OMS order detail data.
  * @return void
  */
 protected function _construct()
 {
     parent::_construct();
     // @see parent::_order property.
     $this->setOrder($this->getData('order'));
     // templates and blocks expect something from the getId method, so set the id to
     // the increment id to ensure output is generated.
     $this->setId($this->getIncrementId());
     // remove the order key, we no long need it.
     $this->unsetData('order');
     if (trim($this->getIncrementId())) {
         $items = $this->getOrder()->getItemsCollection();
         foreach ($this->getShippedItemIds() as $itemRefId) {
             $item = $items->getItemByColumnValue('ref_id', $itemRefId);
             if ($item && $item->getSku()) {
                 $this->_injectShipmentItems(array_merge($item->getData(), ['qty' => $item->getQtyShipped()]));
             }
         }
         $tracks = $this->getTracks();
         if (!empty($tracks)) {
             foreach ($tracks as $track) {
                 $this->_injectShipmentTracks(['number' => $track]);
             }
         }
         $this->setAllItems($this->getItems());
     }
 }