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