From bf2e1a57ced3557244dda5ef798b19ab5bc23c27 Mon Sep 17 00:00:00 2001 From: fomichev Date: Thu, 21 Nov 2024 08:49:24 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20?= =?utf8?q?=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB?= =?utf8?q?=D0=B0=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/ProductsController.php | 222 ++++++++++++++++++++- erp24/views/products/ajax-group-config.php | 4 +- erp24/views/products/products-1c.php | 105 +++++++++- 3 files changed, 323 insertions(+), 8 deletions(-) diff --git a/erp24/controllers/ProductsController.php b/erp24/controllers/ProductsController.php index 429e8153..417f4cad 100755 --- a/erp24/controllers/ProductsController.php +++ b/erp24/controllers/ProductsController.php @@ -2,18 +2,232 @@ namespace app\controllers; +use Yii; +use yii\helpers\Html; use yii\web\Controller; +use yii_app\records\Prices; +use yii_app\records\Products1c; +use yii_app\records\Products1cOptions; +use yii_app\records\ProductsClass; +use yii_app\records\ProductsVarieties; +use yii_app\records\ShipmentProviders; class ProductsController extends Controller { - public function actionProducts1c() { return $this->render('products-1c'); } + public function actionProducts1c() { + + $id = Yii::$app->request->get('id', null); + if (!empty($id)) { + $id = (int) $id; + } + + + $productsClassData = ProductsClass::find()->all(); + $products_class_row = []; + foreach ($productsClassData as $row) { + + $products_class_row[$row->category_id][] = $row->tip; + } + + + $pricesData = Prices::find()->all(); + $prices = []; + foreach ($pricesData as $row) { + + $prices[$row->product_id] = $row->price; + } + + + $groupsData = Products1c::find() + ->select(['id', 'name', 'parent_id']) + ->where(['tip' => 'products_group']) + ->orderBy(['name' => SORT_ASC]) + ->all(); + + $groups = []; + $groups_arr = []; + foreach ($groupsData as $row) { + + $groups[$row->id] = $row->name; + + $groups_arr[$row->parent_id][$row->id] = $row; + } + + + return $this->render('products-1c', [ + 'id' => $id, + 'products_class_row' => $products_class_row, + 'prices' => $prices, + 'groups' => $groups, + 'groups_arr' => $groups_arr, + ]); + + + } public function actionAjaxProductProvider() { return $this->renderPartial('ajax-product-provider'); } - public function actionAjaxGroupConfig() { return $this->renderPartial('ajax-group-config'); } - public function actionAjaxProductsInGroup() { return $this->renderPartial('ajax-products-in-group'); } + public function actionAjaxGroupConfig() { + + if (Yii::$app->request->isAjax) { + $id = Yii::$app->request->post('id'); + if (!empty($id)) { + $id = htmlentities($id); + + + $data = ProductsClass::find()->where(['category_id' => $id])->all(); + $data2 = []; + foreach ($data as $row) { + $data2[$row->tip] = $id; + } + + $array = [ + "wrap" => "Упаковка", + "potted" => "Горшечка", + "services" => "Услуги", + "services_delivery" => "Услуги по доставке", + "salut" => "Пиротехника", + "matrix" => "Матрица", + "marketplace" => "Товары для маркетплейсов", + "marketplace_additional" => "Доп. товары для маркетплейсов", + "related" => "Сопутка", + "other_items" => "Номенклатура 1%" + ]; + + $dataString = ''; + + foreach($array as $k => $arr) { + $dataString .= "'; + } + $dataString .= '
$arr "; + if(!empty( $data2[$k] )) { + $dataString .= '
удалить
'; + } + else { + $dataString .= '
добавить
'; + } + + $dataString .= ' ('.$k.')
'; + + + return $dataString; + + } + } + + return ''; + + + + } + public function actionAjaxProductsInGroup() { + + if (Yii::$app->request->isAjax) { + $parent_id = Yii::$app->request->post('parent_id'); + if (!empty($parent_id)) { + $parent_id = htmlentities($parent_id); + + + $data = Products1c::find() + ->alias('p') + ->select(['p.id', 'p.name', 'e.entity_id', 'p.view']) + ->leftJoin('export_import_table e', "e.export_iD = p.id AND e.export_val = '1' AND e.entity = 'products'") + ->where(['p.tip' => 'products', 'p.parent_id' => $parent_id]) + ->orderBy(['p.name' => SORT_ASC]) + ->asArray() + ->all(); + + + $prices = Prices::find() + ->select(['product_id', 'price']) + ->indexBy('product_id') + ->column(); + + + $providers = ShipmentProviders::find() + ->select(['id', 'name']) + ->indexBy('id') + ->column(); + + + $optionsData = Products1cOptions::find() + ->select(['id', 'colors']) + ->all(); + + $colorsProducts = []; + foreach ($optionsData as $option) { + $colorsProducts[$option->id] = explode(';', $option->colors); + } + + + $varietiesData = ProductsVarieties::find() + ->select(['product_id', 'color', 'name']) + ->orderBy(['posit' => SORT_DESC]) + ->all(); + + $products_varieties = []; + foreach ($varietiesData as $variety) { + $products_varieties[$variety->product_id][$variety->color][] = $variety->name; + } + + + /* return $this->renderPartial('ajax-products-in-group', [ + 'data' => $data, + 'prices' => $prices, + 'providers' => $providers, + 'colorsProducts' => $colorsProducts, + 'products_varieties' => $products_varieties, + ]);*/ + } + } + + // Возвращаем пустой ответ, если запрос не AJAX или parent_id пустой + return ''; + } public function actionAjaxClassGroup() { return $this->renderPartial('ajax-class-group'); } public function actionAjaxClassGroupRemove() { return $this->renderPartial('ajax-class-group-remove'); } public function actionAjaxAddProduct() { return $this->renderPartial('ajax-add-product'); } public function actionAjaxRemoveProduct() { return $this->renderPartial('ajax-remove-product'); } public function actionAjaxRemoveExport() { return $this->renderPartial('ajax-remove-export'); } public function actionAjaxProductProviderAdd() { return $this->renderPartial('ajax-product-provider-add'); } -} \ No newline at end of file + + public function build_tree($cats, $parent_id, $products_class_row, $only_parent = false) + { + $products_class = [ + "wrap" => "Упаковка", + "potted" => "Горшечка", + "services" => "Услуги", + "services_delivery" => "Услуги по доставке", + "salut" => "Пиротехника", + "matrix" => "Матрица", + "marketplace" => "Товары для маркетплейсов", + "marketplace_additional" => "Доп. товары для маркетплейсов", + "related" => "Сопутка", + "other_items" => "Номенклатура 1%" + ]; + + $tree = ''; + + return $tree; + } + +} diff --git a/erp24/views/products/ajax-group-config.php b/erp24/views/products/ajax-group-config.php index 042f73a3..a7530bdd 100644 --- a/erp24/views/products/ajax-group-config.php +++ b/erp24/views/products/ajax-group-config.php @@ -1,5 +1,5 @@ title = 'Каталог 1С'; +?> +

title) ?>

+ +
+
+ context->build_tree($groups_arr, "", $products_class_row) ?> +
+
+
+ + + + +registerJs(<<' + data + ''); + } + }); +} + +// Добавьте остальные функции JavaScript аналогично +JS + , \yii\web\View::POS_END); +?> \ No newline at end of file -- 2.39.5