Exemple #1
0
 public function getRMAItems()
 {
     return RMAItem::getByRMA($this);
 }
Exemple #2
0
 /**
  * Creating a RMA Item
  *
  * @param RMA       $rma
  * @param OrderItem $product
  * @param int       $qty
  * @param double    $itemDescription
  * @param duble     $unitCost
  *
  * @return RMAItem
  */
 public static function createFromOrderItem(RMA $rma, OrderItem $orderItem, $qty, $itemDescription = '', $unitCost = null)
 {
     $item = new RMAItem();
     $item->setRMA($rma)->setOrderItem($orderItem)->setProduct($orderItem->getProduct())->setQty($qty)->setItemDescription(trim($itemDescription))->setUnitCost($unitCost !== null ? $unitCost : $orderItem->getUnitCost())->save();
     $msg = 'A RMAItem has been created based on OrderItem(ID=' . $orderItem->getId() . ', OrderNo=' . $orderItem->getOrder()->getOrderNo() . ') with ' . $qty . 'Product(s) (SKU=' . $product->getSku() . ', ID=' . $product->getId() . '), unitCost=' . StringUtilsAbstract::getCurrency($item->getUnitCost());
     $rma->addComment($msg, Comments::TYPE_SYSTEM)->addLog($msg, Comments::TYPE_SYSTEM);
     return $item;
 }
 /**
  * saveOrder
  *
  * @param unknown $sender
  * @param unknown $param
  *
  * @throws Exception
  *
  */
 public function saveOrder($sender, $param)
 {
     $results = $errors = array();
     try {
         Dao::beginTransaction();
         $customer = Customer::get(trim($param->CallbackParameter->customer->id));
         if (!$customer instanceof Customer) {
             throw new Exception('Invalid Customer passed in!');
         }
         if (!isset($param->CallbackParameter->status) || ($status = trim($param->CallbackParameter->status)) === '' || !in_array($status, RMA::getAllStatuses())) {
             throw new Exception('Invalid Status passed in!');
         }
         if (isset($param->CallbackParameter->RMA) && !($RMA = RMA::get(trim($param->CallbackParameter->RMA->id))) instanceof RMA) {
             throw new Exception('Invalid RMA To passed in!');
         }
         $RMA = isset($param->CallbackParameter->RMA) && ($RMA = RMA::get(trim($param->CallbackParameter->RMA->id))->setDescription(trim($param->CallbackParameter->description))) instanceof RMA ? $RMA : RMA::create($customer, trim($param->CallbackParameter->description));
         if (isset($param->CallbackParameter->order) && ($order = Order::get(trim($param->CallbackParameter->order->id))) instanceof Order) {
             $RMA->setOrder($order);
         }
         if (isset($param->CallbackParameter->shippingAddr)) {
             $shippAddress = Address::create($param->CallbackParameter->shippingAddr->street, $param->CallbackParameter->shippingAddr->city, $param->CallbackParameter->shippingAddr->region, $param->CallbackParameter->shippingAddr->country, $param->CallbackParameter->shippingAddr->postCode, $param->CallbackParameter->shippingAddr->contactName, $param->CallbackParameter->shippingAddr->contactNo, $param->CallbackParameter->shippingAddr->companyName);
             $customer->setShippingAddress($shippAddress);
         }
         $printItAfterSave = false;
         if (isset($param->CallbackParameter->printIt)) {
             $printItAfterSave = intval($param->CallbackParameter->printIt) === 1 ? true : false;
         }
         if (isset($param->CallbackParameter->comments)) {
             $comments = trim($param->CallbackParameter->comments);
             $RMA->addComment($comments, Comments::TYPE_SALES);
         }
         $totalPaymentDue = 0;
         foreach ($param->CallbackParameter->items as $item) {
             $product = Product::get(trim($item->product->id));
             if (!$product instanceof Product) {
                 throw new Exception('Invalid Product passed in!');
             }
             $unitPrice = trim($item->unitPrice);
             $qtyOrdered = trim($item->qtyOrdered);
             $totalPrice = trim($item->totalPrice);
             $itemDescription = trim($item->itemDescription);
             $active = trim($item->valid);
             $totalPaymentDue += $totalPrice;
             if (is_numeric($item->RMAItemId) && !RMAItem::get(trim($item->RMAItemId)) instanceof RMAItem) {
                 throw new Exception('Invalid RMA Item passed in');
             }
             $RMAItem = is_numeric($item->RMAItemId) ? RMAItem::get(trim($item->RMAItemId))->setActive($active)->setProduct($product)->setQty($qtyOrdered)->setItemDescription($itemDescription) : RMAItem::create($RMA, $product, $qtyOrdered, $itemDescription);
             if (isset($item->orderItemId) && ($orderItem = OrderItem::get(trim($item->orderItemId))) instanceof OrderItem) {
                 $RMAItem->setOrderItem($orderItem)->setUnitCost($orderItem->getUnitCost());
             }
             if (isset($item->RMAItemId) && ($RMAItem = RMAItem::get(trim($item->RMAItemId))) instanceof RMAItem && $product->getUnitCost() != 0) {
                 $RMAItem->setUnitCost($RMAItem->getUnitCost())->save();
             } else {
                 $RMAItem->setUnitCost($product->getUnitCost())->save();
             }
             $RMAItem->save();
         }
         $RMA->setTotalValue($totalPaymentDue)->setStatus($status)->save();
         $results['item'] = $RMA->getJson();
         // 			if($printItAfterSave === true)
         // 				$results['printURL'] = '/print/rma/' . $RMA->getId() . '.html?pdf=1';
         Dao::commitTransaction();
     } catch (Exception $ex) {
         Dao::rollbackTransaction();
         // 			$errors[] = $ex->getMessage();
         $errors[] = $ex->getTraceAsString();
     }
     $param->ResponseData = StringUtilsAbstract::getJson($results, $errors);
 }