<?php
+use yii\helpers\ArrayHelper;
+use yii_app\services\SupportService;
+use yii_app\records\StoreOrdersFieldsData;
+use yii_app\records\AdminGroup;
+use yii_app\records\Products1c;
+use yii_app\records\ShipmentProviders;
+use yii_app\records\StoreOrdersStatuses;
+use yii_app\records\StoreOrdersFieldsProperty;
+use yii_app\records\StoreOrdersFields;
+use yii_app\records\StoreOrders;
+use yii_app\records\Products1cOptions;
+use yii\db\Expression;
+use yii_app\records\ExportImportTable;
+use yii_app\records\StoreOrderStatus;
+use yii_app\records\ProductsClass;
+use yii_app\records\Balances;
+use yii_app\records\StorePlanogram;
+use yii_app\records\StoreProductsFact;
+use yii_app\records\Sales;
+use yii_app\records\WriteOffs;
+use yii_app\records\StoreOrdersItem;
+use yii_app\records\StoreOrdersPrices;
+use yii_app\records\StoreOrdersColors;
+
error_reporting(E_ALL ^ E_NOTICE);
global $products, $fieldsRows, $ProductsOptions, $FiledsDataArray, $fieldsPropertyArray,$date_start_sale, $date_start_division, $order_date_add,
-$whereInProductsId, $DataFieldStats, $FiledsData, $productsColorsArray, $storesArrayAll;
-
+$whereInProductsId, $whereInProductsIdArr, $DataFieldStats, $FiledsData, $productsColorsArray, $storesArrayAll;
+
$fieldsPropertyArray=[]; $FiledsData=[]; $FiledsDataArray=[]; $fieldsPropertyArray=[]; $DataFieldStats=[]; $productsColorsArray=[];
$whereGuid = " AND id in($whereGuid) ";
}
-$roles=$db::mapping("SELECT id, name FROM admin_group WHERE id=7 or id=30 or id=17 or id=70 or id=71 or id=9 or id=51 or id=1 or id=10");
+$roles = ArrayHelper::map(AdminGroup::find()->select(['id', 'name'])->where(['in', 'id', [7, 30, 17, 70, 71, 9, 51, 1, 10]])->all(), 'id', 'name');
+//$roles=$db::mapping("SELECT id, name FROM admin_group WHERE id=7 or id=30 or id=17 or id=70 or id=71 or id=9 or id=51 or id=1 or id=10");
$fields=array(
"show"=>array(
)
);
-$users_group=$db::mapping("SELECT id,name FROM admin_group order by name ASC");
+$users_group = ArrayHelper::map(AdminGroup::find()->select(['id', 'name'])->orderBy(['name' => SORT_ASC])->all(), 'id', 'name');
+//$users_group=$db::mapping("SELECT id,name FROM admin_group order by name ASC");
-$storesArray=$db::mapping("SELECT id,name FROM products_1c WHERE tip='city_store' $whereGuid AND view='1' order by name ASC");
+$storesArray = ArrayHelper::map(Products1c::find()->select(['id', 'name'])->where(['tip' => 'city_store', 'view' => 1])
+ ->andWhere(['in', 'id', $_SESSION["store_arr_guid_dostup"]])
+ ->orderBy(['name' => SORT_ASC])->all(), 'id', 'name');
+//$storesArray=$db::mapping("SELECT id,name FROM products_1c WHERE tip='city_store' $whereGuid AND view='1' order by name ASC");
if (empty($providers)) {
- $providers = $db::mapping("SELECT id,name FROM shipment_providers ");
+ $providers = ArrayHelper::map(ShipmentProviders::find()->select(['id', 'name'])->all(), 'id', 'name');
+// $providers = $db::mapping("SELECT id,name FROM shipment_providers ");
}
-$storesArrayAll=$db::mapping("SELECT id,name FROM products_1c WHERE tip='city_store' AND view='1'");
+$storesArrayAll = ArrayHelper::map(Products1c::find()->select(['id', 'name'])
+ ->where(['tip' => 'city_store', 'view' => 1])->all(), 'id', 'name');
+//$storesArrayAll=$db::mapping("SELECT id,name FROM products_1c WHERE tip='city_store' AND view='1'");
-// статусы закупок - массивы с доступами к полям
-$data=$db::getRows("SELECT * FROM store_orders_statuses");
+// статусы закупок - массивы с доступами к полям
+$data = StoreOrdersStatuses::find()->asArray()->all();
+//$data=$db::getRows("SELECT * FROM store_orders_statuses");
foreach($data as $row) {
$store_orders_statuses[$row["id"]]=$row["name"];
$store_orders_status_description[$row["id"]]=$row["description"];
// готовим массим со всеми данными по столбцам по каждому товару магазину и цвету Если NULL - то это сумма по магазинам и по цветам
-$dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
+$dataF = StoreOrdersFieldsData::find()->where(['order_id' => $orderId])->asArray()->all();
+//$dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
foreach($dataF as $row0) {
if (!empty($fieldsRows[$row0["field_name"]])) {
//если тип поля текст то заменяем
// создаем массив со свойствами подсветки ячеек store_orders_fields_property
-$data=$db::getRows("SELECT * FROM store_orders_fields_property WHERE 1 order by id ASC");
+$data = StoreOrdersFieldsProperty::find()->orderBy(['id' => SORT_ASC])->asArray()->all();
+//$data=$db::getRows("SELECT * FROM store_orders_fields_property WHERE 1 order by id ASC");
foreach($data as $row) {
$fieldsPropertyArray[$row["field_id"]][]=$row;
}
// достаем поля в массив
-$data=$db::getRows("SELECT * FROM store_orders_fields WHERE 1 order by position ASC");
+$data = StoreOrdersFields::find()->orderBy(['position' => SORT_ASC])->asArray()->all();
+//$data=$db::getRows("SELECT * FROM store_orders_fields WHERE 1 order by position ASC");
foreach($data as $row) {
$fieldsRows[$row["name_eng"]]=$row;
if (array_key_exists($row["id"], $fieldsPropertyArray)) {
// данные по закупке - достаем параметры закупки - дата старта продаж - от нее считаем продажи списания и закупки прошлой недели
-$OrderData=$db::getRow("SELECT name,id,providers_arr, status, DATE_FORMAT(date_start, '%Y-%m-%d') as date_start, DATE_FORMAT(date_add, '%Y-%m-%d') as date_add,
-DATE_FORMAT(division_date, '%Y-%m-%d') as division_date, UNIX_TIMESTAMP(date_update) as date_update, parent_id FROM store_orders WHERE id=?",[$orderId]);
+$OrderData = SupportService::storeOrdersSelect001($orderId);
+//$OrderData=$db::getRow("SELECT name,id,providers_arr, status, DATE_FORMAT(date_start, '%Y-%m-%d') as date_start, DATE_FORMAT(date_add, '%Y-%m-%d') as date_add,
+//DATE_FORMAT(division_date, '%Y-%m-%d') as division_date, UNIX_TIMESTAMP(date_update) as date_update, parent_id FROM store_orders WHERE id=?",[$orderId]);
$providersIdInThisOrder=explode(",",$OrderData["providers_arr"]);
$status_order_id=$OrderData["status"];
$date_start_sale=$OrderData["date_start"];
$date_update=$OrderData["date_update"];
$date_start_division=$OrderData["division_date"];
-$order_date_add=$OrderData["date_add"];
+$order_date_add=$OrderData["date_add"];
if (empty($OrderData["parent_id"])) { //если это материнская - главная закупка
} else {
// иначе идем к родителю и узнаем дату матери к которой будем привязываться
if (!empty($row["parent_id"])) {
- $date_start=$db::getValue("SELECT DATE_FORMAT(date_start, '%Y-%m-%d') as date_start FROM store_orders WHERE id=?",[$row["parent_id"]]);
+ $storeOrders = StoreOrders::find()->select(["DATE_FORMAT(date_start, '%Y-%m-%d') as date_start"])->where(['id' => $row["parent_id"]])->asArray()->one();
+ $date_start = $storeOrders['date_start'];
+// $date_start=$db::getValue("SELECT DATE_FORMAT(date_start, '%Y-%m-%d') as date_start FROM store_orders WHERE id=?",[$row["parent_id"]]);
}
}
// если не указан магазин или надо просуммировать для какого-то поля
-$dataF=$db::getRows("SELECT field_name,product_id,sum(value) as sum FROM store_orders_fields_data WHERE order_id=? AND
-store_id IS NULL AND color IS NULL group by field_name,product_id",[$orderId]);
+$dataF = StoreOrdersFieldsData::find()->select(['field_name', 'product_id', 'sum(value) as sum'])->where(['order_id' => $orderId])
+ ->andWhere(['IS', 'store_id', new Expression('null')])->andWhere(['IS', 'color', new Expression('null')])->groupBy(['field_name', 'product_id'])->asArray()->all();
+//$dataF=$db::getRows("SELECT field_name,product_id,sum(value) as sum FROM store_orders_fields_data WHERE order_id=? AND
+//store_id IS NULL AND color IS NULL group by field_name,product_id",[$orderId]);
foreach($dataF as $row) {
$FiledsDataSumm[$row["field_name"]][$row["product_id"]] = $row["sum"];
}
-
-$dataF=$db::getRows("SELECT field_name,product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
-store_id IS NOT NULL group by field_name,product_id, color",[$orderId]);
+$dataF = StoreOrdersFieldsData::find()->select(['field_name', 'product_id', 'sum(value) as sum', 'color'])->where(['order_id' => $orderId])
+ ->andWhere(['IS NOT', 'store_id', new Expression('null')])->groupBy(['field_name', 'product_id', 'color'])->asArray()->all();
+//$dataF=$db::getRows("SELECT field_name,product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
+//store_id IS NOT NULL group by field_name,product_id, color",[$orderId]);
foreach($dataF as $row) {
$FiledsDataSummStats[$row["field_name"]][$row["product_id"]][$row["color"]] = $row["sum"];
}
// формируем массив с товарами и часть условия для запросов $whereInProductsId - вхождение ID продуктов
if (empty($whereInProductsId)) {
$whereInProductsId=" in (";
- $z="SELECT p.id, p.name, o.provider_id, o.price_zakup, p.parent_id FROM products_1c_options as o, products_1c as p
- WHERE o.provider_id in($whereProvidersId) AND p.id=o.id order by o.provider_id ASC, p.name ASC";
- $data2=$db::getRows($z);
+// $z="SELECT p.id, p.name, o.provider_id, o.price_zakup, p.parent_id FROM products_1c_options as o, products_1c as p
+// WHERE o.provider_id in($whereProvidersId) AND p.id=o.id order by o.provider_id ASC, p.name ASC";
+// $data2=$db::getRows($z);
+ $data2 = SupportService::products1cOptionsProducts1cSelect001($providersIdInThisOrder);
+ $whereInProductsIdArr = ArrayHelper::getColumn($data2, 'id');
$k=0;
foreach($data2 as $row) {
if ($k!=0) {
//глобальный массив с переменными - только по определнным товарам - лишнего не берем
-$da=$db::getRows("SELECT id,min_lot,min_order FROM products_1c_options WHERE id $whereInProductsId");
+$da = Products1cOptions::find()->select(['id', 'min_lot', 'min_order'])->where(['in', 'id', $whereInProductsIdArr])->asArray()->all();
+//$da=$db::getRows("SELECT id,min_lot,min_order FROM products_1c_options WHERE id $whereInProductsId");
foreach($da as $r) {
$FiledsData["min_order"][$r["id"]]=$r["min_order"];
$FiledsData["min_lot"][$r["id"]]=$r["min_lot"];
}
-
-$data2=$db::getRows("SELECT p.id, p.name, o.provider_id, o.colors FROM products_1c_options as o, products_1c as p
-WHERE p.id $whereInProductsId AND p.id=o.id order by o.provider_id ASC, p.name ASC");
+$data2 = Products1cOptions::find()->alias('o')->select(['p.id', 'p.name', 'o.provider_id', 'o.colors'])
+ ->innerJoin(['products_1c as p', 'p.id = o.id'])
+ ->where(['in', 'p.id', $whereInProductsIdArr])
+ ->orderBy(['o.provider_id' => SORT_ASC, 'p.name' => SORT_ASC])
+ ->asArray()->all();
+//$data2=$db::getRows("SELECT p.id, p.name, o.provider_id, o.colors FROM products_1c_options as o, products_1c as p
+//WHERE p.id $whereInProductsId AND p.id=o.id order by o.provider_id ASC, p.name ASC");
$k=0;
foreach($data2 as $row) {
$providers_products[$row["provider_id"]][]=$row["id"];
//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='$fieldName' AND order_id='$orderId'");
$pole=trim($fieldsRows[$fieldName]["func_content"]);
$data_up=array();
- $dataF=$db::getRows("SELECT product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
- store_id!='' AND store_id!='NULL' AND field_name='$pole' group by product_id, color",[$orderId]);
+ $dataF = StoreOrdersFieldsData::find()->select(['product_id', 'sum(value) as sum', 'color'])->where(['order_id' => $orderId])
+ ->andWhere(['NOT IN', 'store_id', ['', 'NULL']])->andWhere(['field_name' => $pole])
+ ->groupBy(['product_id', 'color'])
+ ->asArray()->all();
+// $dataF=$db::getRows("SELECT product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
+// store_id!='' AND store_id!='NULL' AND field_name='$pole' group by product_id, color",[$orderId]);
foreach($dataF as $row) {
if (empty($row["color"]))
//////
- $data=$db::getRows("SELECT id,name_eng as field_name, position, field_type, description, sql_table_values
- FROM store_orders_fields WHERE 1 order by position ASC, id ASC");
+ $data = StoreOrdersFields::find()->select(['id,name_eng as field_name', 'position', 'field_type', 'description', 'sql_table_values'])
+ ->orderBy(['position' => SORT_ASC, 'id' => SORT_ASC])
+ ->asArray()->all();
+// $data=$db::getRows("SELECT id,name_eng as field_name, position, field_type, description, sql_table_values
+// FROM store_orders_fields WHERE 1 order by position ASC, id ASC");
$html .="<table class=t>";
foreach($data as $row) {
}
- $db::sql("UPDATE store_orders SET date_update=NOW() WHERE id='$orderId'");
+ StoreOrders::updateAll(['date_update' => new Expression('NOW()')], ['id' => $orderId]);
+// $db::sql("UPDATE store_orders SET date_update=NOW() WHERE id='$orderId'");
if (!empty($_REQUEST["html_print"])) echo $html;
if (!empty($_GET["insert"])) {
// массив соответствия ID магазинов и GUID
- $data=$db::getRows("SELECT entity_id, export_val FROM export_import_table WHERE entity='city_store' AND export_id='1'");
+ $data = ExportImportTable::find()->select(['entity_id', 'export_val'])->where(['entity' => 'city_store', 'export_id' => 1])->asArray()->all();
+// $data=$db::getRows("SELECT entity_id, export_val FROM export_import_table WHERE entity='city_store' AND export_id='1'");
foreach($data as $row) {
$export[$row["entity_id"]]=$row["export_val"];
$export_revers[$row["export_val"]]=$row["entity_id"];
}
- $db::sql("DELETE FROM store_orders_fields_data WHERE (value='0.000' or value='0.00') AND value_text=''",[$orderId]);
+ StoreOrdersFieldsData::deleteAll(['and', ['or', ['value' => '0.000'], ['value' => '0.00']], ['value_text' => '']]); // ??? order id
+// $db::sql("DELETE FROM store_orders_fields_data WHERE (value='0.000' or value='0.00') AND value_text=''",[$orderId]);
}
//показываем магазины если статус закупки подразумевает разбивку данных по магазинам
if (true) {//if ($statuses_stores_show[$status_order_id]) {
- $stores_arr=$db::mapping("SELECT name,id FROM products_1c WHERE tip='city_store' AND view='1' order by name ASC");
+ $stores_arr = ArrayHelper::map(Products1c::find()->where(['tip' => 'city_store', 'view' => 1])->orderBy(['name' => SORT_ASC])->all(), 'id', 'name');
+// $stores_arr=$db::mapping("SELECT name,id FROM products_1c WHERE tip='city_store' AND view='1' order by name ASC");
$stores_cnt=count($stores_arr);
- $vnesli=$db::getValue("SELECT count(*) as cnt FROM store_order_status
- WHERE order_id=? AND status_id=? AND status=1 group BY order_id",[$orderId,$status_order_id]);
+ $vnesli = StoreOrderStatus::find()->where(['order_id' => $orderId, 'status_id' => $status_order_id, 'status' => 1])
+ ->groupBy(['order_id', 'store_id', 'status_id'])->count();
+// $vnesli=$db::getValue("SELECT count(*) as cnt FROM store_order_status
+// WHERE order_id=? AND status_id=? AND status=1 group BY order_id",[$orderId,$status_order_id]);
$store_order_status=array();
- $data2=$db::getRows("SELECT store_id,status FROM store_order_status WHERE order_id=? AND status_id=? ",[$orderId,$status_order_id]);
+ $data2 = StoreOrderStatus::find()->select(['store_id', 'status'])->where(['order_id' => $orderId, 'status_id' => $status_order_id])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT store_id,status FROM store_order_status WHERE order_id=? AND status_id=? ",[$orderId,$status_order_id]);
foreach($data2 as $row2) $store_order_status_value[$row2["store_id"]]=$row2["status"];
if (!empty($store_id)) {
if (!empty($_GET["status"]) and !empty($store_id) and !empty($orderId)) {
- $db::sql("INSERT IGNORE INTO store_order_status SET order_id=?, store_id=?, status_id=?, status=?, date=NOW(), admin_id=? ",
- [$orderId,$store_id,$status_order_id,1,$_SESSION["admin_id"]]);
+ $storeOrderStatus = StoreOrderStatus::find()->where(['order_id' => $orderId, 'store_id' => $store_Id, 'status_id' => $status_order_id])->one();
+ if (!$storeOrderStatus) {
+ $storeOrderStatus = new StoreOrderStatus;
+ $storeOrderStatus->order_id = $orderId;
+ $storeOrderStatus->store_id = $store_id;
+ $storeOrderStatus->status_id = $status_order_id;
+ $storeOrderStatus->status = 1;
+ $storeOrderStatus->date = date('Y-m-d H:i:s');
+ $storeOrderStatus->admin_id = $_SESSION["admin_id"];
+ $storeOrderStatus->save();
+ }
+// $db::sql("INSERT IGNORE INTO store_order_status SET order_id=?, store_id=?, status_id=?, status=?, date=NOW(), admin_id=? ",
+// [$orderId,$store_id,$status_order_id,1,$_SESSION["admin_id"]]);
}
- $store_order_status_value=$db::getValue("SELECT status FROM store_order_status WHERE order_id=? AND store_id=? AND status_id=?",[$orderId,$store_id,$status_order_id]);
+ $sosStatus = StoreOrderStatus::find()->select(['status'])->where(['order_id' => $orderId, 'store_id' => $store_id, 'status_id' => $status_order_id])->asArray()->one();
+ $store_order_status_value = $sosStatus['status'];
+// $store_order_status_value=$db::getValue("SELECT status FROM store_order_status WHERE order_id=? AND store_id=? AND status_id=?",[$orderId,$store_id,$status_order_id]);
$status_store=" <span class=\"btn btn-lime m-1\">".$storesArray[$store_id]."</span>:";
// вторая формула автозаказа
if ($type=="auto_purchase_formula") {
if (empty($storesAll)) {
- $storesAll = $db::mapping("SELECT id, name FROM products_1c WHERE tip='city_store'");
+ $storesAll = ArrayHelper::map(Products1c::find()->select(['id', 'name'])->where(['tip' => 'city_store'])->all(), 'id', 'name');
+// $storesAll = $db::mapping("SELECT id, name FROM products_1c WHERE tip='city_store'");
}
$value_arr=function_auto_purchase_formula($param);
if (($type!="string") or ($type=="string" and $value_text!="")) {
$title=$massivTitle[$productId][$storeIdData][$colorData];
-
- $db::sql("INSERT IGNORE INTO store_orders_fields_data (product_id, order_id, store_id, field_name, field_id, value, value_text, color,hand,date_update, title)
- VALUES (?,?,?,?,?,?,?,?,'-1',NOW(),?) ON DUPLICATE KEY UPDATE value=?, hand=0, value_text=?, date_update=NOW(), title=?",
- [$productId, $orderId, $storeId, $field_name, $field_id, $value, $value_text, $color, $title, $value, $value_text , $title]);
+ $storeOrdersFieldsData = StoreOrdersFieldsData::find()->where(['order_id' => $orderId, 'product_id' => $productId, 'store_id' => $storeId,
+ 'field_id' => $field_id, 'field_name' => $field_name, 'color' => $color])->one();
+ if (!$storeOrdersFieldsData) {
+ $storeOrdersFieldsData = new StoreOrdersFieldsData;
+ $storeOrdersFieldsData->order_id = $orderId;
+ $storeOrdersFieldsData->product_id = $productId;
+ $storeOrdersFieldsData->store_id = $storeId;
+ $storeOrdersFieldsData->field_id = $field_id;
+ $storeOrdersFieldsData->field_name = $field_name;
+ $storeOrdersFieldsData->color = $color;
+ $storeOrdersFieldsData->hand = -1;
+ } else {
+ $storeOrdersFieldsData->hand = 0;
+ }
+ $storeOrdersFieldsData->value = $value;
+ $storeOrdersFieldsData->value_text = $value_text;
+ $storeOrdersFieldsData->date_update = date('Y-m-d H:i:s');
+ $storeOrdersFieldsData->title = $title;
+// $db::sql("INSERT IGNORE INTO store_orders_fields_data (product_id, order_id, store_id, field_name, field_id, value, value_text, color,hand,date_update, title)
+// VALUES (?,?,?,?,?,?,?,?,'-1',NOW(),?) ON DUPLICATE KEY UPDATE value=?, hand=0, value_text=?, date_update=NOW(), title=?",
+// [$productId, $orderId, $storeId, $field_name, $field_id, $value, $value_text, $color, $title, $value, $value_text , $title]);
}
// работает на перенос данных из старого формата в новый обнуляя введенную информацию! аккуратно с применением. применяем 1 раз перед переходом на новые талицы
// собираем массив с данными по названию поля - входной параметр Имя поля
function getArrayByFiledName($field_name,$date1,$date2) {
- global $db,$providers,$products,$ProductsOptions,$whereInProductsId,$date_start_sale,$order_date_add,$date_start_division, $printArray,$orderId,$fieldsRows;
+ global $db,$providers,$products,$ProductsOptions,$whereInProductsId,$whereInProductsIdArr, $date_start_sale,$order_date_add,$date_start_division, $printArray,$orderId,$fieldsRows;
$products_class=[];
- $data=$db::getRows("SELECT * FROM products_class WHERE tip in ('potted','wrap')");
+ $data = ProductsClass::find()->where(['in', 'tip', ['potted', 'wrap']])->asArray()->all();
+// $data=$db::getRows("SELECT * FROM products_class WHERE tip in ('potted','wrap')");
foreach($data as $row) {
$products_class[$row["category_id"]] = $row["tip"];
}
// сколько на складе по 1с
if ($field_name=="quantity_storage") {
- $data2=$db::getRows("SELECT * FROM balances WHERE quantity>0 AND product_id $whereInProductsId ");
+ $data2 = Balances::find()->where(['>', 'quantity', 0])->andWhere(['in', 'product_id', $whereInProductsIdArr])->asArray()->all();
+// $data2=$db::getRows("SELECT * FROM balances WHERE quantity>0 AND product_id $whereInProductsId ");
foreach($data2 as $row2) {
$data_values[$row2["product_id"]][$row2["store_id"]][0]+=$row2["quantity"];
$data_values[$row2["product_id"]][0][0]+=$row2["quantity"];
//полнограмма
if ($field_name=="quantity") {
- $store_planogram=$db::getRows("SELECT product_id,quantity, store_id,color FROM store_planogram WHERE quantity>0 AND product_id $whereInProductsId");
+ $store_planogram = StorePlanogram::find()->select(['product_id', 'quantity', 'store_id', 'color'])->where(['>', 'quantity', 0])
+ ->andWhere(['in', 'product_id', $whereInProductsIdArr])->asArray()->all();
+// $store_planogram=$db::getRows("SELECT product_id,quantity, store_id,color FROM store_planogram WHERE quantity>0 AND product_id $whereInProductsId");
foreach($store_planogram as $row) {
// echo"<br>$field_name {$row["product_id"]} = {$row["store_id"]} g ={$row["quantity"]}";
//плнограмма факт quantity_fact
if ($field_name=="quantity_fact") {
- $db::sql("DELETE FROM store_orders_fields_data WHERE order_id='$orderId' AND field_name='quantity_fact'");
-
- $date_id=$db::getValue("SELECT date_id FROM store_products_fact order by date_id DESC LIMIT 1");
- $store_products_fact=$db::getRows("SELECT product_id,quantity, store_id,color FROM store_products_fact WHERE quantity>0 AND date_id=? AND product_id $whereInProductsId",[$date_id]);
+ StoreOrdersFieldsData::deleteAll(['order_id' => $orderId, 'field_name' => 'quantity_fact']);
+// $db::sql("DELETE FROM store_orders_fields_data WHERE order_id='$orderId' AND field_name='quantity_fact'");
+
+ $spf = StoreProductsFact::find()->select(['date_id'])->orderBy(['date_id' => SORT_DESC])->asArray()->one();
+ $date_id = $spf['date_id'];
+// $date_id=$db::getValue("SELECT date_id FROM store_products_fact order by date_id DESC LIMIT 1");
+ $store_products_fact = StoreProductsFact::find()->select(['product_id', 'quantity', 'store_id', 'color'])
+ ->where(['>', 'quantity', 0])->andWhere(['date_id' => $date_id])
+ ->andWhere(['in', 'product_id', $whereInProductsIdArr])->asArray()->all();
+// $store_products_fact=$db::getRows("SELECT product_id,quantity, store_id,color FROM store_products_fact WHERE quantity>0 AND date_id=? AND product_id $whereInProductsId",[$date_id]);
foreach($store_products_fact as $row) {
// echo"<br>$field_name {$row["product_id"]} = {$row["store_id"]} quantity ={$row["quantity"]}";
foreach($pArray as $prodId) {if ($j>0) $whereInProductsId_in .=","; $whereInProductsId_in .="'$prodId'"; $j++;}
if (!empty($whereInProductsId_in)) {
- $data2=$db::getRows("SELECT i.product_id, s.store_id_1c as store_id,sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt, sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt
- FROM sales as s, sales_products as i
- WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in)
- AND s.date<='$date_start_sale 00:00:00' AND s.date>='$date_start_sale' -interval $day_sales day group BY i.product_id, s.store_id, s.operation ");
+ $data2 = Sales::find()->alias('s')->select(["i.product_id", "s.store_id_1c as store_id",
+ "sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt", "sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt"])
+ ->innerJoin('sales_products as i', 's.id = i.check_id')
+ ->where(['in', 'i.product_id', $pArray])
+ ->andWhere(['<=', 's.date', "$date_start_sale 00:00:00"])
+ ->andWhere(['>=', 's.date', new Expression($date_start_sale . ' - INTERVAL ' . $day_sales . ' day')])
+ ->groupBy(['i.product_id', 's.store_id', 's.operation'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT i.product_id, s.store_id_1c as store_id,sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt, sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt
+// FROM sales as s, sales_products as i
+// WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in)
+// AND s.date<='$date_start_sale 00:00:00' AND s.date>='$date_start_sale' -interval $day_sales day group BY i.product_id, s.store_id, s.operation ");
foreach($data2 as $row2) {
$cnt=$row2["sale_cnt"]-$row2["vozvr_cnt"];
$cnt=(int)$cnt;
//продажи количество штук привязанные к дате старта продаж
if ($field_name=="sales_cnt111") {
- $data2=$db::getRows("SELECT i.product_id, s.store_id_1c as store_id,sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt, sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt
- FROM sales as s, sales_products as i
- WHERE s.id=i.check_id AND i.product_id $whereInProductsId
- AND s.date<='$date_start_sale 00:00:00' AND s.date>='$date_start_sale' -interval 7 day group BY i.product_id, s.store_id, s.operation ");
+ $data2 = Sales::find()->alias('s')->select(["i.product_id", "s.store_id_1c as store_id",
+ "sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt", "sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt"])
+ ->innerJoin('sales_products as i', 's.id = i.check_id')
+ ->where(['in', 'i.product_id', $pArray])
+ ->andWhere(['<=', 's.date', "$date_start_sale 00:00:00"])
+ ->andWhere(['>=', 's.date', new Expression($date_start_sale . ' - INTERVAL 7 day')])
+ ->groupBy(['i.product_id', 's.store_id', 's.operation'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT i.product_id, s.store_id_1c as store_id,sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt, sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt
+// FROM sales as s, sales_products as i
+// WHERE s.id=i.check_id AND i.product_id $whereInProductsId
+// AND s.date<='$date_start_sale 00:00:00' AND s.date>='$date_start_sale' -interval 7 day group BY i.product_id, s.store_id, s.operation ");
foreach($data2 as $row2) {
$cnt=$row2["sale_cnt"]-$row2["vozvr_cnt"];
$cnt=(int)$cnt;
if (!empty($whereInProductsId_in)) {
- $data2=$db::getRows("SELECT i.product_id, s.store_id_1c as store_id, sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt, sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt
- FROM sales as s, sales_products as i
- WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in) AND s.date<='$date_start_division 00:00:00' AND s.date>='$date_start_division' -interval $day_sales day group BY i.product_id, s.store_id, s.operation ");
+ $data2 = Sales::find()->alias('s')->select(["i.product_id", "s.store_id_1c as store_id",
+ "sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt", "sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt"])
+ ->innerJoin('sales_products as i', 's.id = i.check_id')
+ ->where(['in', 'i.product_id', $pArray])
+ ->andWhere(['<=', 's.date', "$date_start_sale 00:00:00"])
+ ->andWhere(['>=', 's.date', new Expression($date_start_sale . ' - INTERVAL ' . $day_sales . ' day')])
+ ->groupBy(['i.product_id', 's.store_id', 's.operation'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT i.product_id, s.store_id_1c as store_id, sum(if (s.operation='Продажа',i.quantity,0)) as sale_cnt, sum(if (s.operation='Возврат',i.quantity,0)) as vozvr_cnt
+// FROM sales as s, sales_products as i
+// WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in) AND s.date<='$date_start_division 00:00:00' AND s.date>='$date_start_division' -interval $day_sales day group BY i.product_id, s.store_id, s.operation ");
foreach($data2 as $row2) {
$cnt=$row2["sale_cnt"]-$row2["vozvr_cnt"];
$cnt=(int)$cnt;
foreach($pArray as $prodId) {if ($j>0) $whereInProductsId_in .=","; $whereInProductsId_in .="'$prodId'"; $j++;}
if (!empty($whereInProductsId_in)) {
- $data2=$db::getRows("SELECT i.product_id, sum(if (s.operation='Продажа',i.summ,0)) as sale, s.store_id_1c as store_id, sum(if (s.operation='Возврат', i.summ ,0)) as vozvr
- FROM sales as s, sales_products as i
- WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in) AND s.date<='$date_start_division 00:00:00' AND s.date>='$date_start_division' -interval $day_sales day group BY i.product_id, s.store_id, s.operation");
+ $data2 = Sales::find()->alias('s')->select(["i.product_id", "s.store_id_1c as store_id",
+ "sum(if (s.operation='Продажа',i.summ,0)) as sale", "sum(if (s.operation='Возврат',i.summ,0)) as vozvr"])
+ ->innerJoin('sales_products as i', 's.id = i.check_id')
+ ->where(['in', 'i.product_id', $pArray])
+ ->andWhere(['<=', 's.date', "$date_start_division 00:00:00"])
+ ->andWhere(['>=', 's.date', new Expression($date_start_division . ' - INTERVAL ' . $day_sales . ' day')])
+ ->groupBy(['i.product_id', 's.store_id', 's.operation'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT i.product_id, sum(if (s.operation='Продажа',i.summ,0)) as sale, s.store_id_1c as store_id, sum(if (s.operation='Возврат', i.summ ,0)) as vozvr
+// FROM sales as s, sales_products as i
+// WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in) AND s.date<='$date_start_division 00:00:00' AND s.date>='$date_start_division' -interval $day_sales day group BY i.product_id, s.store_id, s.operation");
foreach($data2 as $row2) {
$sale=$row2["sale"]-$row2["vozvr"];
$sale=(int)$sale;
foreach($pArray as $prodId) {if ($j>0) $whereInProductsId_in .=","; $whereInProductsId_in .="'$prodId'"; $j++;}
if (!empty($whereInProductsId_in)) {
- $data2=$db::getRows("SELECT i.product_id,sum(if (s.operation='Продажа',i.summ,0)) as sale, s.store_id_1c as store_id, sum(if (s.operation='Возврат', i.summ ,0)) as vozvr
- FROM sales as s, sales_products as i
- WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in) AND s.date<='$date_start_sale 00:00:00' AND s.date>='$date_start_sale' -interval $day_sales day group BY i.product_id, s.store_id_1c, s.operation");
+ $data2 = Sales::find()->alias('s')->select(["i.product_id", "s.store_id_1c as store_id",
+ "sum(if (s.operation='Продажа',i.summ,0)) as sale", "sum(if (s.operation='Возврат',i.summ,0)) as vozvr"])
+ ->innerJoin('sales_products as i', 's.id = i.check_id')
+ ->where(['in', 'i.product_id', $pArray])
+ ->andWhere(['<=', 's.date', "$date_start_sale 00:00:00"])
+ ->andWhere(['>=', 's.date', new Expression($date_start_sale . ' - INTERVAL ' . $day_sales . ' day')])
+ ->groupBy(['i.product_id', 's.store_id', 's.operation'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT i.product_id,sum(if (s.operation='Продажа',i.summ,0)) as sale, s.store_id_1c as store_id, sum(if (s.operation='Возврат', i.summ ,0)) as vozvr
+// FROM sales as s, sales_products as i
+// WHERE s.id=i.check_id AND i.product_id in($whereInProductsId_in) AND s.date<='$date_start_sale 00:00:00' AND s.date>='$date_start_sale' -interval $day_sales day group BY i.product_id, s.store_id_1c, s.operation");
foreach($data2 as $row2) {
$sale=$row2["sale"]-$row2["vozvr"];
$sale=(int)$sale;
if ($periodDaysStats==7) $periodDaysStats_where=14;
else $periodDaysStats_where=$periodDaysStats;
- $data2=$db::getRows("SELECT p.product_id,sum(p.quantity) as cnt, w.store_id
- FROM write_offs as w, write_offs_products as p
- WHERE p.write_offs_id=w.id AND w.type='Брак' AND
-
- w.date<='$date_start_sale 00:00:00' AND w.date>='$date_start_sale' -interval $periodDaysStats_where day
- AND p.product_id in($whereInProductsId_in) group BY p.product_id,w.store_id");
+ $data2 = WriteOffs::find()->alias('w')->select(["p.product_id", "sum(p.quantity) as cnt", "w.store_id"])
+ ->innerJoin('write_offs_products as p', 'p.write_offs_id = w.id')
+ ->where(['w.type' => 'Брак'])
+ ->andWhere(['in', 'p.product_id', $pArray])
+ ->andWhere(['<=', 'w.date', "$date_start_sale 00:00:00"])
+ ->andWhere(['>=', 'w.date', new Expression($date_start_sale . ' - INTERVAL ' . $periodDaysStats_where . ' day')])
+ ->groupBy(['p.product_id', 'w.store_id'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT p.product_id,sum(p.quantity) as cnt, w.store_id
+// FROM write_offs as w, write_offs_products as p
+// WHERE p.write_offs_id=w.id AND w.type='Брак' AND
+//
+// w.date<='$date_start_sale 00:00:00' AND w.date>='$date_start_sale' -interval $periodDaysStats_where day
+// AND p.product_id in($whereInProductsId_in) group BY p.product_id,w.store_id");
echo "<br>SELECT p.product_id,sum(p.quantity) as cnt, w.store_id
}
if (!empty($whereInProductsId_in)) {
- $data2=$db::getRows("SELECT p.product_id,sum(p.quantity) as cnt, w.store_id
- FROM write_offs as w, write_offs_products as p
- WHERE p.write_offs_id=w.id AND w.type='Брак' AND p.product_id in($whereInProductsId_in) AND w.date<='$date_start_division 00:00:00' AND w.date>='$date_start_division' -interval $periodDaysStats day group BY p.product_id,w.store_id");
+ $data2 = WriteOffs::find()->alias('w')->select(["p.product_id", "sum(p.quantity) as cnt", "w.store_id"])
+ ->innerJoin('write_offs_products as p', 'p.write_offs_id = w.id')
+ ->where(['w.type' => 'Брак'])
+ ->andWhere(['in', 'p.product_id', $pArray])
+ ->andWhere(['<=', 'w.date', "$date_start_division 00:00:00"])
+ ->andWhere(['>=', 'w.date', new Expression($date_start_division . ' - INTERVAL ' . $periodDaysStats . ' day')])
+ ->groupBy(['p.product_id', 'w.store_id'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT p.product_id,sum(p.quantity) as cnt, w.store_id
+// FROM write_offs as w, write_offs_products as p
+// WHERE p.write_offs_id=w.id AND w.type='Брак' AND p.product_id in($whereInProductsId_in) AND w.date<='$date_start_division 00:00:00' AND w.date>='$date_start_division' -interval $periodDaysStats day group BY p.product_id,w.store_id");
$valAll=0;
foreach ($data2 as $row2) {
$date_start_sale2=date("Y-m-d");
- $data2=$db::getRows("SELECT p.product_id,sum(c.quantity) as cnt, w.store_id, c.comment_id
- FROM write_offs as w, write_offs_products as p, write_offs_comments as c
- WHERE p.write_offs_id=w.id AND w.type='Брак' AND c.write_offs_id=p.write_offs_id AND p.product_id=c.product_id AND c.quantity>0
-
- AND p.product_id in($whereInProductsId_in)
-
- AND w.date<='$date_start_sale2 00:00:00' AND w.date>='$date_start_sale2' -interval $periodDaysStats_where day
-
- group BY p.product_id,w.store_id, c.comment_id");
+ $data2 = WriteOffs::find()->alias('w')->select(["p.product_id", "sum(c.quantity) as cnt", "w.store_id", "c.comment_id"])
+ ->innerJoin('write_offs_products as p', 'p.write_offs_id = w.id')
+ ->innerJoin('write_offs_comments as c', 'c.write_offs_id = p.write_offs_id AND p.product_id = c.product_id')
+ ->where(['w.type' => 'Брак'])
+ ->andWhere(['>', 'c.quantity', 0])
+ ->andWhere(['in', 'p.product_id', $pArray])
+ ->andWhere(['<=', 'w.date', "$date_start_sale2 00:00:00"])
+ ->andWhere(['>=', 'w.date', new Expression($date_start_sale2 . ' - INTERVAL ' . $periodDaysStats_where . ' day')])
+ ->groupBy(['p.product_id', 'w.store_id', 'c.comment_id'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT p.product_id,sum(c.quantity) as cnt, w.store_id, c.comment_id
+// FROM write_offs as w, write_offs_products as p, write_offs_comments as c
+// WHERE p.write_offs_id=w.id AND w.type='Брак' AND c.write_offs_id=p.write_offs_id AND p.product_id=c.product_id AND c.quantity>0
+//
+// AND p.product_id in($whereInProductsId_in)
+//
+// AND w.date<='$date_start_sale2 00:00:00' AND w.date>='$date_start_sale2' -interval $periodDaysStats_where day
+//
+// group BY p.product_id,w.store_id, c.comment_id");
$valAll=0;
$date_14day=date('Y-m-d 00:00:00', $time2-86400*$periodDaysStats); /////// списание за 14 дней AND ($whereInProductsId) w.date>=NOW() - INTERVAL 14 DAY
//echo"Дата старта $date_start Считаем списания от даты $date1 до $date_14day и делим на 2 = среднее арифметическое списание за 1 неделю";
//echo"<br>$field_name $date1 - $date_14day";
- $data2=$db::getRows("SELECT p.product_id,sum(c.quantity) as cnt, c.comment_id
- FROM write_offs as w, write_offs_products as p, write_offs_comments as c
- WHERE p.write_offs_id=w.id AND w.type='Брак' AND c.write_offs_id=p.write_offs_id AND p.product_id=c.product_id AND c.quantity>0 AND w.date>=? AND w.date<=?
- group BY p.product_id, c.comment_id",[$date_14day,$date2]);
+ $data2 = WriteOffs::find()->alias('w')->select(["p.product_id", "sum(c.quantity) as cnt", "c.comment_id"])
+ ->innerJoin('write_offs_products as p', 'p.write_offs_id = w.id')
+ ->innerJoin('write_offs_comments as c', 'c.write_offs_id = p.write_offs_id AND p.product_id = c.product_id')
+ ->where(['w.type' => 'Брак'])
+ ->andWhere(['>', 'c.quantity', 0])
+ ->andWhere(['>=', 'w.date', $date_14day])
+ ->andWhere(['<=', 'w.date', $date2])
+ ->groupBy(['p.product_id', 'c.comment_id'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT p.product_id,sum(c.quantity) as cnt, c.comment_id
+// FROM write_offs as w, write_offs_products as p, write_offs_comments as c
+// WHERE p.write_offs_id=w.id AND w.type='Брак' AND c.write_offs_id=p.write_offs_id AND p.product_id=c.product_id AND c.quantity>0 AND w.date>=? AND w.date<=?
+// group BY p.product_id, c.comment_id",[$date_14day,$date2]);
$valAll=0;
foreach($data2 as $row2) {
// старый формат и старая таблица данных - нужно заменить на данные из таблицы store_orders_fields_data - сначала берем старые
//echo"<b>Дата старта проаж $date_start_sale от нее вычитаем 7 дней и получаем Закупки для формирования суммарного заказа от предыдущих недель.</b>";
- $dataOrders=$db::getRows("SELECT id, name,date_start FROM store_orders WHERE date_start<='$date_start_sale 00:00:00' AND date_start>='$date_start_sale' -interval 7 day");
+ $dataOrders = StoreOrders::find()->select(['id', 'name', 'date_start'])
+ ->where(['<=', 'date_start', $date_start_sale . ' 00:00:00'])
+ ->andWhere(['>=', 'date_start', new Expression($date_start_sale . ' - INTERVAL 7 day')])
+ ->asArray()->all();
+// $dataOrders=$db::getRows("SELECT id, name,date_start FROM store_orders WHERE date_start<='$date_start_sale 00:00:00' AND date_start>='$date_start_sale' -interval 7 day");
+ $orders_whereArr = ArrayHelper::getColumn($dataOrders, 'id');
$orders_where="";
$i=0;
echo"В этих закупках считаем закупленный товар";
$orders_where = " AND order_id in($orders_where)";
}
- $data3=$db::getRows("SELECT sum(quantity_purchase) as quantity_purchase, product_id, store_id FROM store_orders_item WHERE quantity_purchase>0 $orders_where group by product_id, store_id");
+ $data3 = StoreOrdersItem::find()->select(['sum(quantity_purchase) as quantity_purchase', 'product_id', 'store_id'])
+ ->where(['>', 'quantity_purchase', 0])->andWhere(['in', 'order_id', $orders_whereArr])
+ ->groupBy(['product_id', 'store_id'])->asArray()->all();
+// $data3=$db::getRows("SELECT sum(quantity_purchase) as quantity_purchase, product_id, store_id FROM store_orders_item WHERE quantity_purchase>0 $orders_where group by product_id, store_id");
foreach($data3 as $row2) {
$data_values[$row2["product_id"]][$row2["store_id"]][0]=$row2["quantity_purchase"];
}
}
- $dataOrders2=$db::getRows("SELECT id,date_add FROM store_orders
- WHERE date_add<='$order_date_add' AND date_add>='$order_date_add' - interval 7 day");
+ $dataOrders2 = StoreOrders::find()->select(['id', 'date_add'])
+ ->where(['<=', 'date_add', $order_date_add])
+ ->andWhere(['>=', 'date_add', new Expression($order_date_add . ' - INTERVAL 7 day')])
+ ->asArray()->all();
+// $dataOrders2=$db::getRows("SELECT id,date_add FROM store_orders
+// WHERE date_add<='$order_date_add' AND date_add>='$order_date_add' - interval 7 day");
+ $idssArr = ArrayHelper::getColumn($dataOrders2, 'id');
$idss="";
$k=0;
echo"order_date_add = $order_date_add orders_where=$orders_where ";
- $data2=$db::getRows("SELECT sum(value) as value, product_id, color FROM
- store_orders_fields_data WHERE field_name='quantity_zakup_fact' AND value>0 $orders_where group by product_id,color");
+ $data2 = StoreOrdersFieldsData::find()->select(['sum(value) as value', 'product_id', 'color'])
+ ->where(['field_name' => 'quantity_zakup_fact'])
+ ->andWhere(['>', 'value', 0])->andWhere(['in', 'order_id', $idssArr])
+ ->andWhere(['!=', 'order_id', $orderId])
+ ->groupBy(['product_id', 'color'])
+ ->asArray()->all();
+// $data2=$db::getRows("SELECT sum(value) as value, product_id, color FROM
+// store_orders_fields_data WHERE field_name='quantity_zakup_fact' AND value>0 $orders_where group by product_id,color");
// echo"<br> SQL SELECT sum(value) as value, product_id, color FROM store_orders_fields_data WHERE field_name='quantity_zakup_fact' AND value>0 $orders_where group by product_id,color ";
if (in_array($field_name,$inFieldTable)) {
/// echo"+$field_name+ order_id=$orderId";
- $data=$db::getRows("SELECT product_id,$field_name FROM store_orders_prices WHERE order_id=?",[$orderId]);
+ $data = StoreOrdersPrices::find()->select(['product_id', $field_name])->where(['order_id' => $orderId])->asArray()->all();
+// $data=$db::getRows("SELECT product_id,$field_name FROM store_orders_prices WHERE order_id=?",[$orderId]);
foreach($data as $row) {
//foreach($inFieldTable as $field)
$data_values[$row["product_id"]][0][0]=$row[$field_name];
$inFieldTableColor=["quantity_zakup","quantity_zakup_fact","comment_zakup","comment_discrepancy_polnogramm","quantity_warehouseman_fact","quantity_rejection","quantity_zakup_info","additional_quantity"];
$field_id=$fieldsRows[$field_name]["id"];
if (!empty($field_id) and in_array($field_name,$inFieldTableColor)) {
- $data=$db::getRows("SELECT product_id, store_id, quantity, color FROM store_orders_colors WHERE order_id=? AND field_id=? AND color!='' AND store_id!='undefined'",[$orderId,$field_id]);
+ $data = StoreOrdersColors::find()->select(['product_id', 'store_id', 'quantity', 'color'])
+ ->where(['order_id' => $orderId, 'field_id' => $field_id])->andWhere(['!=', 'color', ''])
+ ->andWhere(['!=', 'store_id', 'undefined'])->asArray()->all();
+// $data=$db::getRows("SELECT product_id, store_id, quantity, color FROM store_orders_colors WHERE order_id=? AND field_id=? AND color!='' AND store_id!='undefined'",[$orderId,$field_id]);
foreach($data as $row) {
if (empty($row["store_id"])) $data_values[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["quantity"];
}
if (in_array($field_name,$inFieldTable)) {
//echo"+!!!!!$field_name+ order_id=$orderId";
- $data=$db::getRows("SELECT product_id, store_id, $field_name FROM store_orders_item WHERE order_id=? AND store_id!='undefined'",[$orderId]);
+ $data = StoreOrdersItem::find()->select(['product_id', 'store_id', $field_name])
+ ->where(['order_id' => $orderId])
+ ->andWhere(['!=', 'store_id', 'undefined'])->asArray()->all();
+// $data=$db::getRows("SELECT product_id, store_id, $field_name FROM store_orders_item WHERE order_id=? AND store_id!='undefined'",[$orderId]);
foreach($data as $row) {
$data_values[$row["product_id"]][$row["store_id"]][0]=$row[$field_name];
}
$inFieldTableColor=["quantity_purchase","goods_in_transit122","division_quantity","division_fact"];
$field_id=$fieldsRows[$field_name]["id"];
if (!empty($field_id) and in_array($field_name,$inFieldTableColor)) {
- $data=$db::getRows("SELECT product_id, store_id, quantity, color FROM store_orders_colors WHERE order_id=? AND field_id=? AND color!='' AND store_id!='undefined'",[$orderId,$field_id]);
+ $data = StoreOrdersColors::find()->select(['product_id', 'store_id', 'quantity', 'color'])
+ ->where(['order_id' => $orderId, 'field_id' => $field_id])->andWhere(['!=', 'color', ''])
+ ->andWhere(['!=', 'store_id', 'undefined'])->asArray()->all();
+// $data=$db::getRows("SELECT product_id, store_id, quantity, color FROM store_orders_colors WHERE order_id=? AND field_id=? AND color!='' AND store_id!='undefined'",[$orderId,$field_id]);
foreach($data as $row) {
$data_values[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["quantity"];
}
// функция заносит в массив данные по полям в заказеЗакупщика исходные данные ID заказа Дата 1 Дата2 И магазин Может быть =0
function data_values_insert_sql($date1,$date2) {
global $db,$providers,$products,$ProductsOptions,$whereInProductsId,$date_start_sale,$date_start_division,$orderId,$fieldsRows;
-$data=$db::getRows("SELECT id,name_eng as field_name, position, field_type, description, sql_table_values FROM store_orders_fields WHERE 1 order by position ASC, id ASC");
+$data = StoreOrdersFields::find()->select(['id', 'name_eng as field_name', 'position', 'field_type', 'description', 'sql_table_values'])
+ ->orderBy(['position' => SORT_ASC, 'id' => SORT_ASC])
+ ->asArray()->all();
+//$data=$db::getRows("SELECT id,name_eng as field_name, position, field_type, description, sql_table_values FROM store_orders_fields WHERE 1 order by position ASC, id ASC");
echo"<table class=t>";
foreach($data as $row) {
echo "<tr><td>".$row["position"]."</td><td> ".$row["field_name"]."</td><td> ".$row["field_type"]."</td><td>".$row["sql_table_values"]."
}
function getDataFiledsData() {
- global $orderId, $db,$whereInProductsId,$fieldsRows;
+ global $orderId, $db, $whereInProductsId, $whereInProductsIdArr, $fieldsRows;
//глобальный массив с переменными - только по определнным товарам - лишнего не берем
- $da=$db::getRows("SELECT id,min_lot,min_order FROM products_1c_options WHERE id $whereInProductsId");
+ $da = Products1cOptions::find()->select(['id', 'min_lot', 'min_order'])
+ ->where(['in', 'id', $whereInProductsIdArr ?? []])
+ ->asArray()->all();
+// $da=$db::getRows("SELECT id,min_lot,min_order FROM products_1c_options WHERE id $whereInProductsId");
foreach($da as $r) {
$FiledsData["min_order"][$r["id"]]=$r["min_order"];
$FiledsData["min_lot"][$r["id"]]=$r["min_lot"];
}
// готовим массим со всеми данными по столбцам по каждому товару магазину и цвету Если NULL - то это сумма по магазинам и по цветам
- $dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
+ $dataF = StoreOrdersFieldsData::find()->where(['order_id' => $orderId])->asArray()->all();
+// $dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
foreach($dataF as $row) {
//если тип поля текст то заменяем
if ($fieldsRows[$row["field_name"]]["tip"]=="string")
//функция обновления данных
function updatefieldsRows() {
- global $db,$fieldsRows,$whereInProductsId,$ProductsOptions,$date_start_sale, $order_date_add, $date_start_division, $DataFieldStats ,$orderId, $FiledsData,$storesArr, $storesArrayAll,
+ global $db,$fieldsRows,$whereInProductsId,$whereInProductsIdArr,$ProductsOptions,$date_start_sale, $order_date_add, $date_start_division, $DataFieldStats ,$orderId, $FiledsData,$storesArr, $storesArrayAll,
$products, $productsColorsArray;
$html="";
//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='$fieldName' AND order_id='$orderId'");
$pole=trim($fieldsRows[$fieldName]["func_content"]);
$data_up=array();
- $dataF=$db::getRows("SELECT product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
-store_id!='' AND store_id!='NULL' AND field_name='$pole' group by product_id, color",[$orderId]);
+ $dataF = StoreOrdersFieldsData::find()->select(['product_id', 'sum(value) as sum', 'color'])
+ ->where(['order_id' => $orderId])->andWhere(['not in', 'store_id', ['', 'NULL']])
+ ->andWhere(['field_name' => $pole])->groupBy(['product_id', 'color'])
+ ->asArray()->all();
+// $dataF=$db::getRows("SELECT product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
+//store_id!='' AND store_id!='NULL' AND field_name='$pole' group by product_id, color",[$orderId]);
foreach($dataF as $row) {
if (empty($row["color"])) $row["color"]="NULL";
$data_up[$row["product_id"]]["NULL"][$row["color"]]=$row["sum"];
// полнограммы факт по всем магазинам
- $date_id=$db::getValue("SELECT date_id FROM store_products_fact order by date_id desc LIMIT 1");
- $data3=$db::getRows("SELECT store_id,product_id,quantity,color FROM store_products_fact WHERE date_id=? AND quantity>0 AND product_id
-$whereInProductsId",[$date_id]);
+ $spf005 = StoreProductsFact::find()->select(['date_id'])->orderBy(['date_id' => SORT_DESC])->one();
+ $date_id = $spf005['date_id'];
+// $date_id=$db::getValue("SELECT date_id FROM store_products_fact order by date_id desc LIMIT 1");
+ $data3 = StoreProductsFact::find()->select(['store_id', 'product_id', 'quantity,color'])
+ ->where(['date_id' => $date_id])->andWhere(['>', 'quantity', 0])
+ ->andWhere(['in', 'product_id', $whereInProductsIdArr])
+ ->asArray()->all();
+// $data3=$db::getRows("SELECT store_id,product_id,quantity,color FROM store_products_fact WHERE date_id=? AND quantity>0 AND product_id
+//$whereInProductsId",[$date_id]);
foreach($data3 as $row2) {
if ($row2["color"]=="" or $row2["color"]=="NULL")
$polnogrammaFact[$row2["product_id"]][$row2["store_id"]]["NULL"]=$row2["quantity"];
$html .="<h4>Считаем коэффиценты по цветам для полнограммы </h4>";
- $data=$db::getRows("SELECT product_id, store_id,quantity, color FROM store_planogram WHERE quantity>0 AND product_id $whereInProductsId");
+ $data = StorePlanogram::find()->select(['product_id', 'store_id', 'quantity', 'color'])->where(['>', 'quantity', 0])
+ ->andWhere(['in', 'product_id', $whereInProductsIdArr])
+ ->asArray()->all();
+// $data=$db::getRows("SELECT product_id, store_id,quantity, color FROM store_planogram WHERE quantity>0 AND product_id $whereInProductsId");
foreach($data as $row) {
if (empty($row["color"])) $store_planogram[$row["product_id"]][$row["store_id"]]=$row["quantity"];
else $store_planogram_colors[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["quantity"];
- $data4=$db::getRows("SELECT id,colors FROM products_1c_options WHERE provider_id>0 AND colors!='' AND id $whereInProductsId group by id order by id");
+ $data4 = Products1cOptions::find()->select(['id', 'colors'])->where(['>', 'provider_id', 0])->andWhere(['!-', 'colors', ''])
+ ->andWhere(['in', 'id', $whereInProductsIdArr])->groupBy(['id'])->orderBy(['id' => SORT_DESC])
+ ->asArray()->all();
+// $data4=$db::getRows("SELECT id,colors FROM products_1c_options WHERE provider_id>0 AND colors!='' AND id $whereInProductsId group by id order by id");
foreach($data4 as $row2) {
$colors=explode(";",$row2["colors"]);
//////
- $data=$db::getRows("SELECT id,name_eng as field_name, name, position, field_type, description, sql_table_values
-FROM store_orders_fields WHERE 1 order by position ASC, id ASC");
+ $data = StoreOrdersFields::find()->select(['id', 'name_eng as field_name', 'name', 'position', 'field_type', 'description', 'sql_table_values'])
+ ->orderBy(['position' => SORT_ASC, 'id' => SORT_ASC])
+ ->asArray()->all();
+// $data=$db::getRows("SELECT id,name_eng as field_name, name, position, field_type, description, sql_table_values
+//FROM store_orders_fields WHERE 1 order by position ASC, id ASC");
$html .="<table class=\"table table-bordered table-sm\">";
foreach($data as $row) {
$html .= "<tr><td>".$row["position"]."</td><td class=\"text-left\"><b>".$row["name"]."</b>";
// вычисляем массив по цветам привязанным к товару
- $data4=$db::getRows("SELECT id,colors FROM products_1c_options WHERE provider_id>0 AND colors!='' AND id $whereInProductsId group by id order by id");
+ $data4 = Products1cOptions::find()->select(['id', 'colors'])->where(['>', 'provider_id', 0])->andWhere(['!=', 'colors', ''])
+ ->andWhere(['in', 'id', $whereInProductsIdArr])->groupBy(['id'])->orderBy(['id' => SORT_DESC])
+ ->asArray()->all();
+// $data4=$db::getRows("SELECT id,colors FROM products_1c_options WHERE provider_id>0 AND colors!='' AND id $whereInProductsId group by id order by id");
foreach($data4 as $row2) {
$colors=explode(";",$row2["colors"]);
$productId=$row2["id"];
// exit("+++++++exit +++++");
$rowFactName="quantity_warehouseman_fact"; // old quantity_warehouseman_fact quantity_zakup_fact
- $db::sql("DELETE FROM store_orders_fields_data WHERE field_name in ('division_auto','division_summ') AND order_id='$orderId'");
+ StoreOrdersFieldsData::deleteAll(['and', ['in', 'field_name', ['division_auto', 'division_summ']], ['order_id' => $orderId]]);
+// $db::sql("DELETE FROM store_orders_fields_data WHERE field_name in ('division_auto','division_summ') AND order_id='$orderId'");
echo $html.$rp;
- $db::sql("DELETE FROM store_orders_fields_data WHERE value='0.000' AND value_text=''",[$orderId]);
+ StoreOrdersFieldsData::deleteAll(['value' => '0.000', 'value_text' => '']); // ???
+// $db::sql("DELETE FROM store_orders_fields_data WHERE value='0.000' AND value_text=''",[$orderId]);
- $db::sql("UPDATE store_orders SET date_update=NOW(), update_html=? WHERE id=?",["$html.$rp",$orderId]);
+ StoreOrders::updateAll(['date_update' => new Expression("NOW()"), 'update_html' => "%html.$rp"], ['id' => $orderId]);
+// $db::sql("UPDATE store_orders SET date_update=NOW(), update_html=? WHERE id=?",["$html.$rp",$orderId]);
if (!empty($_REQUEST["html_print"])) echo $html;
echo"<h3>Обновляем данные по выбранным полям и перезаписываем их в таблицу </h3>";
- $data=$db::getRows("SELECT id,name_eng as field_name, position, field_type, description, sql_table_values FROM store_orders_fields
- WHERE $whereF order by position ASC, id ASC");
+ $data = StoreOrdersFields::find()->select(['id', 'name_eng as field_name', 'position', 'field_type', 'description', 'sql_table_values'])
+ ->where(['in', 'name_eng', $fieldsNamesArr])->orderBy(['position' => SORT_ASC, 'id' => SORT_ASC])
+ ->asArray()->all();
+// $data=$db::getRows("SELECT id,name_eng as field_name, position, field_type, description, sql_table_values FROM store_orders_fields
+// WHERE $whereF order by position ASC, id ASC");
echo"<table class=t>";
foreach($data as $row) {
echo"<br>== ".$row["field_name"]." ".$row["field_type"]." ";