public function cancelOrderItem($observer)
 {
     if (!Mage::helper('udmulti')->isActive()) {
         return parent::cancelOrderItem($observer);
     }
     $item = $observer->getEvent()->getItem();
     $children = $item->getChildrenItems();
     $qty = $item->getQtyOrdered() - max($item->getQtyShipped(), $item->getQtyInvoiced()) - $item->getQtyCanceled();
     if ($item->getId() && ($productId = $item->getProductId()) && empty($children)) {
         $qty = $item->getQtyOrdered() - $item->getQtyCanceled();
         $parentItem = $item->getParentItem();
         $qtyInvoiced = $qtyShipped = 0;
         if ($item->isDummy(true) && $parentItem) {
             $parentQtyShipped = $parentItem->getQtyShipped();
             $parentQtyOrdered = $parentItem->getQtyOrdered();
             $parentQtyOrdered = $parentQtyOrdered > 0 ? $parentQtyOrdered : 1;
             $qtyShipped = $parentQtyShipped * $item->getQtyOrdered() / $parentQtyOrdered;
         } elseif (!$item->isDummy(true)) {
             $qtyShipped = $item->getQtyShipped();
         }
         if ($item->isDummy() && $parentItem) {
             $parentQtyInvoiced = $parentItem->getQtyInvoiced();
             $parentQtyOrdered = $parentItem->getQtyOrdered();
             $parentQtyOrdered = $parentQtyOrdered > 0 ? $parentQtyOrdered : 1;
             $qtyInvoiced = $parentQtyInvoiced * $item->getQtyOrdered() / $parentQtyOrdered;
         } elseif (!$item->isDummy()) {
             $qtyInvoiced = $item->getQtyInvoiced();
         }
         $qty -= max($qtyShipped, $qtyInvoiced);
         if ($qty > 0) {
             Mage::helper('udmulti')->saveThisVendorProductsPidKeys(array($productId => array('stock_qty_add' => $qty)), $item->getUdropshipVendor());
         }
     }
     return $this;
 }