Exemple #1
0
 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'));
 }
Exemple #2
0
 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);
         }
     }
 }