public function getRMAItems() { return RMAItem::getByRMA($this); }
/** * 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); }