Example #1
0
 function __construct()
 {
     $lang = MG::get('lang');
     $settings = MG::get('settings');
     $this->lang = $lang;
     $status = 0;
     if (User::isAuth()) {
         $order = new Models_Order();
         $status = 3;
         //обработка запроса на изменение данных пользователя
         if (URL::getQueryParametr('userData')) {
             $customer = URL::getQueryParametr('customer');
             $userData = array('name' => URL::getQueryParametr('name'), 'sname' => URL::getQueryParametr('sname'), 'address' => URL::getQueryParametr('address'), 'phone' => URL::getQueryParametr('phone'), 'nameyur' => $customer == 'yur' ? URL::getQueryParametr('nameyur') : '', 'adress' => $customer == 'yur' ? URL::getQueryParametr('adress') : '', 'inn' => $customer == 'yur' ? URL::getQueryParametr('inn') : '', 'kpp' => $customer == 'yur' ? URL::getQueryParametr('kpp') : '', 'bank' => $customer == 'yur' ? URL::getQueryParametr('bank') : '', 'bik' => $customer == 'yur' ? URL::getQueryParametr('bik') : '', 'ks' => $customer == 'yur' ? URL::getQueryParametr('ks') : '', 'rs' => $customer == 'yur' ? URL::getQueryParametr('rs') : '');
             if (USER::update(User::getThis()->id, $userData)) {
                 $message = 'Данные успешно сохранены';
             } else {
                 $error = 'Не удалось сохранить данные ' . $this->_newUserData['sname'];
             }
         }
         // Обработка запроса на изменения пароля.
         if (URL::getQueryParametr('chengePass')) {
             if (USER::auth(User::getThis()->email, URL::getQueryParametr('pass'))) {
                 $person = new Models_Personal();
                 $message = $person->changePass(URL::getQueryParametr('newPass'), User::getThis()->id);
             } else {
                 $error = 'Неверный пароль';
             }
         }
         // Обработка запроса на изменения способа оплаты.
         if (URL::getQueryParametr('changePaymentId')) {
             $order = new Models_Order();
             $status = $order->updateOrder(array('payment_id' => $_POST['changePaymentId'], 'id' => $_POST['orderId']));
             $result = array('status' => $status, 'comment' => 2, 'orderStatus' => 3);
             echo json_encode($result);
             MG::disableTemplate();
             exit;
         }
         // Обработка AJAX запроса на закрытие заказа.
         if (URL::getQueryParametr('delOK')) {
             $comment = 'Отменено покупателем, по причине <br>"' . URL::getQueryParametr('comment') . '"';
             // Пересчитываем остатки продуктов из заказа.
             $orderModel = new Models_Order();
             $orderModel->refreshCountProducts(URL::getQueryParametr('delID'), 4);
             $res = DB::query('
       UPDATE `' . PREFIX . 'order`
       SET close_date = now(), status_id = 4, comment = "%s"
       WHERE id = %d AND user_email = "%s"', $comment, URL::getQueryParametr('delID'), User::getThis()->email);
             if ($res) {
                 $status = true;
             }
             if ($comment) {
                 $comm = "<b>Комментарий: " . $comment . "</b>";
             }
             $result = array('status' => $status, 'comment' => $comm, 'orderStatus' => $lang[$order->getOrderStatus(array('status_id' => 4))]);
             $orderModel->sendMailOfUpdateOrder(URL::getQueryParametr('delID'));
             echo json_encode($result);
             MG::disableTemplate();
             exit;
         }
         // Отображение данных пользователя.
         $orderArray = $order->getOrder('user_email = "' . User::getThis()->email . '"', TRUE);
         if (is_array($orderArray)) {
             foreach ($orderArray as $orderId => $orderItems) {
                 $orderArray[$orderId]['string_status_id'] = $order->getOrderStatus($orderItems);
                 $paymentArray = $order->getPaymentMethod($orderItems['payment_id']);
                 $orderArray[$orderId]['name'] = $paymentArray['name'];
                 $orderArray[$orderId]['paided'] = $order->getPaidedStatus($orderItems);
             }
         }
         if (!User::getThis()->activity) {
             $status = 2;
             unset($_SESSION['user']);
         }
         if (User::getThis()->blocked) {
             $status = 1;
             unset($_SESSION['user']);
         }
         $paymentList = $order->getPaymentBlocksMethod();
     } else {
         MG::redirect('/enter');
     }
     $this->data = array('error' => !empty($error) ? $error : '', 'message' => !empty($message) ? $message : '', 'status' => !empty($status) ? $status : '', 'userInfo' => User::getThis(), 'orderInfo' => !empty($orderArray) ? $orderArray : '', 'currency' => $settings['currency'], 'paymentList' => $paymentList, 'meta_title' => 'Личный кабинет', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "заказы,личные данные, личный кабинет", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "В личном кабинете нашего сайта вы сможете отслеживать состояние заказов и менять свои данные");
 }
Example #2
0
 /**
  * Выполняет операцию над отмеченными заказами в админке.
  * @return boolean
  */
 public function operationOrder()
 {
     $model = new Models_Order();
     $operation = $_POST['operation'];
     if (empty($_POST['orders_id'])) {
         $this->messageError = 'Необходимо отметить заказы!';
         return false;
     }
     if ($operation == 'delete') {
         foreach ($_POST['orders_id'] as $orderId) {
             $model->refreshCountProducts($orderId, 4);
         }
         $result = $model->deleteOrder(true, $_POST['orders_id']);
     } elseif (strpos($operation, 'status_id') === 0 && !empty($_POST['orders_id'])) {
         foreach ($_POST['orders_id'] as $orderId) {
             $result = $model->updateOrder(array('id' => $orderId, 'status_id' => substr($operation, -1, 1)));
         }
     }
     $this->data = array('count' => $model->getNewOrdersCount());
     return $result;
 }
Example #3
0
 public function ordersUpdate($filename)
 {
     // вычисляем какой из имеющихся файлов в папке обмена относится к заказам.
     $sep = DIRECTORY_SEPARATOR;
     $dirname = dirname(__FILE__);
     $realDocumentRoot = str_replace($sep . 'mg-core' . $sep . 'controllers', '', $dirname);
     $files = scandir($realDocumentRoot . '/tempcml/');
     foreach ($files as $name) {
         if (end(explode(".", $name)) == 'xml' && $name != "import.xml" && $name != "offers.xml") {
             $filename = $name;
         }
     }
     $orderModel = new Models_Order();
     $arrayStatus = array('Новый' => 0, 'Подтвержден' => 1, 'Собран' => 6, 'Отгружен' => 3, 'Доставлен' => 5, 'Возврат' => 5, 'Отменен' => 4, '[F] Доставлен' => 5, '[N] Принят' => 0);
     $xml = simplexml_load_file('tempcml/' . $filename);
     foreach ($xml->Документ as $order) {
         $orderId = $order->Ид;
         $orderNumber = $order->Номер;
         $orderStatusId = '';
         foreach ($order->ЗначенияРеквизитов->ЗначениеРеквизита as $item) {
             //if ($item->Наименование == "Номер по 1С") {
             //  $orderNumber = $item->Значение;
             //}
             $res = DB::query("SELECT id FROM " . PREFIX . "order WHERE number = " . DB::quote($orderNumber));
             if ($row = DB::fetchAssoc($res)) {
                 $orderId = $row['id'];
             }
             if ($item->Наименование == "Статус заказа") {
                 $orderStatus = $item->Значение;
                 $orderStatusId = $arrayStatus[(string) $orderStatus];
             }
             //if ($item->Наименование == "Проведен") {
             //  $passed = $item->Значение == "true"?1:0;
             //}
             if ($item->Наименование == "ПометкаУдаления") {
                 $delete = $item->Значение == "true" ? 1 : 0;
                 if ($delete) {
                     $orderModel->deleteOrder($orderId);
                 }
             }
         }
         if (empty($orderId)) {
             continue;
         }
         //echo "<br>".$orderId.'['.$orderNumber.']['.$orderId1c.']='.$orderStatus.'['.$orderStatusId.']';
         $arrayOrder = array('id' => $orderId, 'status_id' => $orderStatusId);
         $orderModel->updateOrder($arrayOrder);
     }
     unlink($realDocumentRoot . '/tempcml/' . $filename);
 }