예제 #1
0
 public function find_tovar($params)
 {
     $p['id'] = $params['id'];
     $query = Tovar::find()->andwhere('id=:id', $p);
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     return $dataProvider;
 }
예제 #2
0
파일: Basket.php 프로젝트: kd-brinex/kd
 public function put($params)
 {
     $model = Tovar::findOne(['id' => $params['id']]);
     $t = $model->attributes;
     $basket = Yii::$app->getDb();
     $default = ['session_id' => $this->getPhpsessid(), 'tovar_count' => 1, 'tovar_min' => 1, 'tovar_id' => $t['id'], 'tovar_price' => $t['price']];
     $params = array_merge($default, $params);
     if ($params['tovar_count'] > 0) {
         return $basket->createCommand('insert into `basket` (`tovar_id`,`tovar_count`,`tovar_min`,`tovar_price`,`session_id`)' . 'values(:tovar_id,:tovar_count,:tovar_min,:tovar_price,:session_id)' . ' ON DUPLICATE KEY UPDATE `tovar_count`=:tovar_count')->bindValues($params)->execute();
     } else {
         $p = ['session_id' => $params['session_id'], 'tovar_id' => $params['tovar_id']];
         return $basket->createCommand('delete from `basket` where `session_id`=:session_id and `tovar_id`=:tovar_id')->bindValues($p)->execute();
     }
 }
예제 #3
0
파일: Api.php 프로젝트: kd-brinex/kd
    public static function finddetails($params)
    {
        $p = array_merge(Yii::$app->request->post(), Yii::$app->request->get());
        $params['store_id'] = !empty($p['store_id']) ? $p['store_id'] : 109;
        $tstore = new TStore();
        $store = $tstore->findOne(['id' => $params['store_id']]);
        $params['city_id'] = $store->city_id;
        //        var_dump($params);die;
        $details = Tovar::findDetails($params);
        $xml = '<?xml version="1.0" encoding="utf-8"?>
<ArrayOfDetailInfo>';
        foreach ($details as $d) {
            $xml .= '<DetailInfo>
<detailnumber>' . $d['code'] . '</detailnumber>
<detailname>' . htmlspecialchars($d['name'], ENT_XML1) . '</detailname>
<dname>' . htmlspecialchars($d['name'], ENT_XML1) . '</dname>
<maker>
<id>-</id>
<name>' . htmlspecialchars($d['manufacture'], ENT_XML1) . '</name>
</maker>
<quantity>' . $d['quantity'] . '</quantity>
<lotquantity>' . $d['lotquantity'] . '</lotquantity>
<price>' . $d['price'] . '</price>
<pricedestination>' . $d['pricedestination'] . '</pricedestination>
<days>' . $d['srokmin'] . '</days>
<dayswarranty>' . $d['srokmax'] . '</dayswarranty>
<regionname>' . htmlspecialchars($d['sklad'], ENT_XML1) . '</regionname>
<estimation>' . $d['estimation'] . '</estimation>
<orderrefernce>' . $d['reference'] . '</orderrefernce>
<pricedate>' . $d['pricedate'] . '</pricedate>
<groupid>' . $d['groupid'] . '</groupid>
<provider>' . $d['provider'] . '</provider>
<pid>' . $d['pid'] . '</pid>
<storeid>' . $d['storeid'] . '</storeid>
<FlagPostav>' . $d['flagpostav'] . '</FlagPostav>
<srok>' . $d['srok'] . '</srok>
<ball>' . $d['ball'] . '</ball>
</DetailInfo>';
        }
        $xml .= '
</ArrayOfDetailInfo>';
        return $xml;
    }
예제 #4
0
 public function actionPut()
 {
     $params = Yii::$app->request->post();
     $post = array_merge(Yii::$app->request->post());
     $params = Yii::$app->request->queryParams;
     switch ($params['mode']) {
         case 'changeQuantity':
             if (Yii::$app->request->isAjax) {
                 if (!empty($position = (int) $post['position']) && !empty($quantity = (int) $post['quantity'])) {
                     $basket = BasketSearch::findOne($position);
                     $basket->tovar_count = $quantity;
                     return $basket->update();
                 }
             }
             break;
         case 'put':
             $session = new \yii\web\Session();
             $id = Yii::$app->request->post('id');
             if ($id) {
                 $tovar = Tovar::findOne(['id' => $id]);
                 if ($tovar) {
                     $toBasket = new BasketSearch();
                     $toBasket->tovar_id = $id;
                     $toBasket->tovar_count = 1;
                     $toBasket->tovar_price = $tovar->price;
                     $toBasket->session_id = Yii::$app->session->id;
                     $toBasket->tovar_min = 1;
                     $toBasket->provider_id = 5;
                     //id=5 провайдер KD ищет в локальной базе
                     if (Yii::$app->user->id) {
                         $toBasket->uid = Yii::$app->user->id;
                     }
                     if ($toBasket->save()) {
                         return '<a class="btn" href="' . url::toRoute(['/basket/basket'], true) . '"><i class="icon-shopping-cart icon-black"></i>Уже в корзине</a>';
                     } else {
                         if (YII_DEBUG) {
                             var_dump($toBasket->getErrors());
                         }
                     }
                 } else {
                     return false;
                 }
             }
             return '<a class="btn" href="' . url::toRoute(['/basket/basket'], true) . '"><i class="icon-shopping-cart icon-black"></i>Уже в корзине</a>';
             break;
         case 'update':
             //                $data = Yii::$app->request->post();
             //                if (isset($data) && $data != '') {
             //                    $basket = BasketSearch::findOne(['id' => intval($data['row_id'])]);
             //                    if ($basket)
             //                        $basket->description = Html::encode($data['text']);
             //                    if ($basket->save())
             //                        return true;
             //                }
             if (Yii::$app->request->post('hasEditable')) {
                 $post = Yii::$app->request->post();
                 $model = $basket = BasketSearch::findOne(['id' => $post['editableKey']]);
                 $data['OrderSearch'] = current($post['OrderSearch']);
                 if ($model->load($data) && $model->save()) {
                     $data = ['output' => $model->comment];
                 }
                 return Json::encode($data);
             }
             break;
         case 'order':
             // создаем новый заказ
             $user_id = Yii::$app->user->id;
             $number = ($user_id ? $user_id : 'N') . '-' . date("ymdhis");
             $orders = explode(';', Yii::$app->request->post('orderData'));
             $formData = Yii::$app->request->post('formData');
             if (isset($formData) && $formData != '') {
                 parse_str($formData, $fdata);
                 $profileData = array_values($fdata['Profile']);
             }
             $fdata['deliveryStore'] = isset($fdata['deliveryStore']) ? $fdata['deliveryStore'] : 0;
             $cityCode = Yii::$app->request->cookies['city'];
             $city = \app\modules\city\models\CitySearch::find()->where(['id' => $cityCode ? $cityCode : 2097])->one();
             $order_data = ['number' => $number, 'date' => date("Y-m-d H:i:s"), 'user_id' => $user_id, 'user_name' => $fdata['Profile']['name'], 'user_email' => $fdata['User']['email'], 'user_telephone' => $fdata['User']['telephone'], 'user_location' => $city->name, 'store_id' => (int) $fdata['deliveryStore']];
             $order = new Order();
             $order->load($order_data, '');
             $order->save();
             // передаем id заказа
             $order_id = $order->id;
             $order = new OrderUpdate1c();
             $order->OrderId = $order_id;
             $order->save();
             $user = \app\modules\user\models\User::findOne($user_id);
             $user->scenario = 'update';
             $user->telephone = $order_data['user_telephone'];
             $user->save();
             $profile = Profile::findOne($user_id);
             $profile->scenario = 'order';
             $profile->name = $order_data['user_name'];
             $profile->save();
             foreach ($orders as $order) {
                 $order = explode(':', $order);
                 $basket = BasketSearch::findOne(['id' => intval($order[0])]);
                 if ($basket) {
                     $product = Tovar::findOne(['id' => $basket->tovar_id]);
                     $data['Orders'] = ['product_id' => $product ? $product->id : null, 'manufacture' => $basket->manufacturer, 'part_name' => $product ? $product->name : $basket->part_name, 'part_price' => $basket->tovar_price, 'product_article' => $product ? null : $basket->part_number, 'quantity' => $order[1], 'reference' => '', 'status' => \app\modules\user\models\Orders::ORDER_ADOPTED, 'datetime' => date('Y-m-d H:i:s'), 'description' => $basket->description, 'order_id' => (int) $order_id, 'provider_id' => (int) $basket->provider_id, 'delivery_days' => (int) $basket->period];
                     $Orders = new Orders();
                     if ($Orders->load($data) && $Orders->save()) {
                         $basket->delete();
                     }
                 }
             }
             return true;
             break;
         case 'remove':
             if (BasketSearch::deleteAll(['in', 'id', $post['id']])) {
                 return JSON::encode($_POST);
             }
             //$this->basket_row($dataProvider);
             break;
     }
 }
예제 #5
0
 public function actionFinddetails()
 {
     $params = \Yii::$app->request->queryParams;
     $parts = Yii::$app->params['Parts'];
     $details = isset($params['article']) ? Tovar::findDetails($params) : [];
     $provider = new ArrayDataProvider(['allModels' => $details, 'sort' => $parts['sort'], 'pagination' => $parts['pagination']]);
     $catalog = Yii::$app->getModule('autocatalog')->getModel();
     return $this->render('finddetails_tabs', ['provider' => $provider, 'columns' => $parts['columns'], 'params' => $params, 'catalog' => $catalog]);
 }
예제 #6
0
 public function actionPricing()
 {
     $id = (int) Yii::$app->request->post('order');
     $code = Yii::$app->request->post('code');
     $city = (int) Yii::$app->request->post('city_id');
     if (empty($id) && empty($code)) {
         return false;
     }
     $allDetails = [];
     if (!empty($id)) {
         $details = OrdersSearch::find()->where('order_id = :order_id', [':order_id' => $id])->andWhere('status = :status', [':status' => [Orders::ORDER_ADOPTED, Orders::ORDER_CANCELED, Orders::ORDER_CANCELED_BY_PROVIDER]])->andWhere('provider_id <> 5 OR provider_id IS NULL')->andWhere('related_detail IS NULL')->all();
         //            var_dump($details);die;
         foreach ($details as $detail) {
             $article = !empty($detail->product_article) ? $detail->product_article : (!empty($detail->product_id) ? $detail->product_id : null);
             $compareDetails = Tovar::findDetails(['article' => $article, 'city_id' => $detail->order->store->city_id]);
             $allDetails[$article]['manufacture'] = $detail->manufacture;
             $allDetails[$article]['offers'] = $compareDetails;
         }
     } else {
         $allDetails[$code]['offers'] = Tovar::findDetails(['article' => $code, 'city_id' => $city]);
     }
     $offers = [];
     foreach ($allDetails as $key => $detail_offers) {
         if (is_array($detail_offers) && !empty($detail_offers)) {
             foreach ($detail_offers['offers'] as $offer) {
                 if (strtoupper($offer['code']) == strtoupper($key)) {
                     $offers[$key]['offers'][] = $offer;
                 }
             }
         }
     }
     if (!empty($id)) {
         $firstOffers = $this->firstOffers($details, $offers);
         $data = $this->buildArray($firstOffers, $offers, $details);
         $orderdetails = $details;
     } else {
         $data = $offers[key($offers)]['offers'];
         $orderdetails['order_id'] = Yii::$app->request->post('order_id');
         $orderdetails['detail_id'] = 0;
     }
     $dataProvider = new ArrayDataProvider(['allModels' => $data, 'pagination' => false]);
     $offersData = $this->toDataProvider($offers);
     $params = ['model' => $dataProvider, 'offersData' => $offersData, 'orderedDetails' => $orderdetails];
     return Json::encode(['output' => '', 'table' => $this->renderAjax('_pricing', $params)]);
 }