function voidDeal() { $db = JFactory::getDBO(); $option = 'com_enmasse'; $cid = JRequest::getVar('cid', array(), '', 'array'); $appication = JFactory::getApplication(); if ($cid == null) { $appication->redirect('index.php?option=' . $option . '&controller=deal', JText::_('CHOOSE_DEAL_TO_VOID'), 'error'); } for ($i = 0; $i < count($cid); $i++) { $status = JModel::getInstance('deal', 'enmasseModel')->getStatus($cid[$i]); if ($status == "Voided") { $appication->redirect('index.php?option=' . $option . '&controller=deal', JText::_('CANNOT_VOID_VOIDED_DEAL_MSG'), 'error'); } elseif ($status == "Confirmed") { $appication->redirect('index.php?option=' . $option . '&controller=deal', JText::_('CANNOT_VOID_CONFIRMED_DEAL'), 'error'); } elseif ($status == "Pending") { $appication->redirect('index.php?option=' . $option . '&controller=deal', JText::_('CANNOT_VOID_PENDING_DEAL'), 'error'); } } for ($i = 0; $i < count($cid); $i++) { $dealId = $cid[$i]; $orderItemList = JModel::getInstance('orderItem', 'enmasseModel')->listByPdtIdAndStatus($dealId, "Paid"); foreach ($orderItemList as $orderItem) { EnmasseHelper::orderItemWaitingForRefund($orderItem); sleep(1); } // update status JModel::getInstance('deal', 'enmasseModel')->updateStatus($dealId, 'Voided'); //Integration with point system, refund point automatically if users paid with point if (EnmasseHelper::isPointSystemEnabled()) { //generate integration class $integrationClass = EnmasseHelper::getPointSystemClassFromSetting(); $integrateFileName = $integrationClass . '.class.php'; require_once JPATH_SITE . DS . "components" . DS . "com_enmasse" . DS . "helpers" . DS . "pointsystem" . DS . $integrationClass . DS . $integrateFileName; $buyerList = EnmasseHelper::getBuyerRefundVoidDeal($dealId); $integrationObject = new $integrationClass(); foreach ($buyerList as $buyer) { $integrationObject->integration($buyer['buyer_id'], 'refunddeal', $buyer['point_used_to_pay']); } } } $appication->redirect('index.php?option=' . $option . '&controller=deal', JText::_('VOID_DEAL_SUCCESS_MSG')); }
function save() { $status = JRequest::getVar('status', '', 'post'); $partial = JRequest::getVar('partial', 0, 'method', 'int'); $orderData = new JObject(); $orderData->id = JRequest::getInt('id', '', 'post'); $orderData->description = JRequest::getVar('description', '', 'post', 'text', JREQUEST_ALLOWRAW); // $orderData->buyerid = JRequest::getInt('buyerid', '', 'post'); $model = JModel::getInstance('order', 'enmasseModel'); if (empty($status)) { if ($model->store($orderData)) { $msg = JText::_('SAVE_SUCCESS_MSG'); if ($partial) { $this->setRedirect('index.php?option=com_enmasse&controller=partialOrder', $msg); } else { $this->setRedirect('index.php?option=com_enmasse&controller=' . JRequest::getVar('controller'), $msg); } } else { $msg = JText::_('SAVE_ERROR_MSG') . ": " . $model->getError(); if ($orderData->id == null) { $this->setRedirect('index.php?option=com_enmasse&controller=' . JRequest::getVar('controller') . '&task=add', $msg, 'error'); } else { $this->setRedirect('index.php?option=com_enmasse&controller=' . JRequest::getVar('controller') . '&task=edit&cid[0]=' . $orderData->id . '&partial=' . $partial, $msg, 'error'); } } } else { //------------------------------ // send email and update total sold qty for each case of when change status of order if ($status == EnmasseHelper::$ORDER_STATUS_LIST["Paid"]) { EnmasseHelper::doNotify($orderData->id); $msg = JTEXT::_('SAVE_SUCCESS_MSG_AND_SEND_RECEIPT'); } else { if ($status == EnmasseHelper::$ORDER_STATUS_LIST["Cancelled"]) { $orderId = $orderData->id; $order = JModel::getInstance('order', 'enmasseModel')->getById($orderId); JModel::getInstance('order', 'enmasseModel')->updateStatus($order->id, 'Cancelled'); $orderItemList = JModel::getInstance('orderItem', 'enmasseModel')->listByOrderId($orderId); for ($count = 0; $count < count($orderItemList); $count++) { $orderItem = $orderItemList[$count]; JModel::getInstance('orderItem', 'enmasseModel')->updateStatus($orderItem->id, 'Unpaid'); JModel::getInstance('invty', 'enmasseModel')->freeCouponByOrderItemId($orderItem->id, 'Free'); } $msg = JTEXT::_('SAVE_SUCCESS_MSG'); } else { if ($status == EnmasseHelper::$ORDER_STATUS_LIST["Waiting_For_Refund"]) { $orderItemList = JModel::getInstance('orderItem', 'enmasseModel')->listByOrderId($orderData->id); foreach ($orderItemList as $orderItem) { EnmasseHelper::orderItemWaitingForRefund($orderItem); sleep(1); } $msg = JTEXT::_('SAVE_SUCCESS_MSG_AND_SEND_REFUND'); } else { if ($status == EnmasseHelper::$ORDER_STATUS_LIST["Refunded"]) { $orderItemList = JModel::getInstance('orderItem', 'enmasseModel')->listByOrderId($orderData->id); foreach ($orderItemList as $orderItem) { // reduce deal quality sold // only reduce when order item was delivered $isDelivered = intVal($orderItem->is_delivered); if ($isDelivered) { JModel::getInstance('deal', 'enmasseModel')->reduceQtySold($orderItem->pdt_id, $orderItem->qty); } EnmasseHelper::orderItemRefunded($orderItem); sleep(1); } $msg = JTEXT::_('SAVE_SUCCESS_MSG'); } else { if ($status == 'Delivered') { $orderItemList = JModel::getInstance('orderItem', 'enmasseModel')->listByOrderId($orderData->id); //update paid_amount of coupon to 100% $model->updateToFullPaid($orderData->id); JModel::getInstance("orderDeliverer", 'EnmasseModel')->updateStatus($orderData->id, "Delivered"); foreach ($orderItemList as $orderItem) { // update deal quality sold JModel::getInstance('deal', 'enmasseModel')->addQtySold($orderItem->pdt_id, $orderItem->qty); EnmasseHelper::orderItemDelivered($orderItem); sleep(1); } $msg = JTEXT::_('SAVE_SUCCESS_MSG_AND_SEND_DELIVERY'); } } } } } if ($partial) { $this->setRedirect('index.php?option=com_enmasse&controller=partialOrder', $msg); } else { $this->setRedirect('index.php?option=com_enmasse&controller=order', $msg); } } }