/** * Adding a RMAItem to this RMA * * @param Product $product The product we are raising RMA for * @param int $qty The qty * @param double $itemDescription The item description * @param duble $unitCost The unitcost of that the product * @param mixed $rmaItem The new created RMAItem * * @return RMA */ public function addItem(Product $product, $qty, $itemDescription = '', $unitCost = null, &$rmaItem = null) { $rmaItem = RMAItem::create($this, $product, $qty, $itemDescription, $unitCost); return $this; }
/** * 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); }