Ejemplo n.º 1
0
 /** 
  * Edits existing items of the order
  * @param TinyBrick_OrderEdit_Model_Order $order
  * @param array $data
  * @return boolean 
  */
 public function edit(TinyBrick_OrderEdit_Model_Order $order, $data = array())
 {
     $comment = "";
     foreach ($data['id'] as $key => $itemId) {
         $item = $order->getItemById($itemId);
         $product = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('sku', $item->getSku())->addAttributeToSelect('*')->getFirstItem();
         if ($data['remove'][$key]) {
             $comment .= "Removed Item(SKU): " . $item->getSku() . "<br />";
             $oldQty = $item->getQtyOrdered();
             $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
             $stockItem->addQty($oldQty);
             $stockItem->save();
             $order->removeItem($itemId);
         } else {
             $oldArray = array('price' => $item->getPrice(), 'discount' => $item->getDiscountAmount(), 'qty' => $item->getQtyOrdered());
             $item->setPrice($data['price'][$key]);
             $item->setBasePrice($data['price'][$key]);
             $item->setBaseOriginalPrice($data['price'][$key]);
             $item->setOriginalPrice($data['price'][$key]);
             $item->setBaseRowTotal($data['price'][$key]);
             if ($data['discount'][$key]) {
                 $item->setDiscountAmount($data['discount'][$key]);
                 $item->setBaseDiscountAmount($data['discount'][$key]);
             }
             if ($data['qty'][$key]) {
                 $oldQty = $item->getQtyOrdered();
                 $item->setQtyOrdered($data['qty'][$key]);
                 $newQty = $item->getQtyOrdered();
                 if ($newQty > $oldQty) {
                     $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
                     $stockItem->subtractQty($newQty - $oldQty);
                     $stockItem->save();
                 } else {
                     if ($newQty < $oldQty) {
                         $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
                         $stockItem->addQty($oldQty - $newQty);
                         $stockItem->save();
                     }
                 }
             }
             $item->save();
             $newArray = array('price' => $item->getPrice(), 'discount' => $item->getDiscountAmount(), 'qty' => $item->getQtyOrdered());
             if ($newArray['price'] != $oldArray['price'] || $newArray['discount'] != $oldArray['discount'] || $newArray['qty'] != $oldArray['qty']) {
                 $comment = "Edited item " . $item->getSku() . "<br />";
                 if ($newArray['price'] != $oldArray['price']) {
                     $comment .= "Price FROM: " . $oldArray['price'] . " TO: " . $newArray['price'] . "<br />";
                 }
                 if ($newArray['discount'] != $oldArray['discount']) {
                     $comment .= "Discount FROM: " . $oldArray['discount'] . " TO: " . $newArray['discount'] . "<br />";
                 }
                 if ($newArray['qty'] != $oldArray['qty']) {
                     $comment .= "Qty FROM: " . $oldArray['qty'] . " TO: " . $newArray['qty'] . "<br />";
                 }
             }
         }
     }
     if ($comment != "") {
         $comment = "Edited items:<br />" . $comment . "<br />";
         return $comment;
     }
     return true;
 }