+++ /dev/null
-<?php
-
-global $products, $fieldsRows, $ProductsOptions, $FiledsDataArray, $fieldsPropertyArray,$date_start_sale, $date_start_division, $order_date_add,
-$whereInProductsId, $DataFieldStats, $FiledsData, $productsColorsArray, $storesArrayAll;
-
-
-$fieldsPropertyArray=[]; $FiledsData=[]; $FiledsDataArray=[]; $fieldsPropertyArray=[]; $DataFieldStats=[]; $productsColorsArray=[];
-
-$k=0;
-$whereGuid="";
-foreach($_SESSION["store_arr_guid_dostup"] as $guid) {
-if(!empty($guid)) { if($k!=0) $whereGuid .=","; $whereGuid .=" '$guid' "; $k++; }
-}
-if(!empty($whereGuid)) $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");
-
-$fields=array("show"=>array("name"=>"Просмотр"),
-"edit"=>array("name"=>"Правка"),
-"dostup"=>array("name"=>"Доступ", "array"=>array(""=>"x","show"=>"Просмотр","edit"=>"Редактирование")),
-"bg"=>array("name"=>"цвет", "array"=>array(""=>"без цвета","bg-white"=>"Белый",
-"bg-info"=>"Синий","bg-indigo"=>"Индиго","bg-success"=>"Зеленый","bg-danger"=>"Красный", "bg-warning"=>"Оранжевый","bg-lime"=>"Лайм"))
-);
-
-$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");
-if(empty($providers)) $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'");
-
-
-
-// статусы закупок - массивы с доступами к полям
-$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"];
-$statuses_groups[$row["id"]]=explode(",",$row["groups"]);
-$statuses_stores_show[$row["id"]]=$row["stores_show"];
-$statuses_dostup[$row["id"]]=json_decode($row["dostup"],true,512,JSON_UNESCAPED_UNICODE);
-$status_edit_dostup[$row["id"]]=json_decode($row["status_edit_dostup"],true,512,JSON_UNESCAPED_UNICODE);
-}
-
-
-
-
-// готовим массим со всеми данными по столбцам по каждому товару магазину и цвету Если NULL - то это сумма по магазинам и по цветам
-$dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
-foreach($dataF as $row0) {
-//если тип поля текст то заменяем
-if($fieldsRows[$row0["field_name"]]["tip"]=="string") $v=$row0["value_text"]; else $v=$row0["value"];
-$storeId=$row0["store_id"];
-$color=$row0["color"];
-if(empty($storeId)) $storeId="NULL";
-if(empty($color)) $color="NULL";
-$FiledsDataArray[$row0["field_name"]][$row0["product_id"]][$storeId][$color]=$v;
-}
-
-
-
-
-// создаем массив со свойствами подсветки ячеек store_orders_fields_property
-$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");
-foreach($data as $row) {
- $fieldsRows[$row["name_eng"]]=$row;
- $fieldsRows[$row["name_eng"]]["property"]=$fieldsPropertyArray[$row["id"]];
-
-
- $fieldsArrayDepended[$row["id"]]=explode(",",$row["dependent_fields"]); //считаем поля и зависимые поля рекурсивно
- if($row["colors_save"]==1) $fields_colors[$row["name_eng"]]=$row["id"];
- }
-
-
-
-// возвращаем css класс по значению ячейки
-function returnRowCssClassByFieldValue($fieldName,$value){
- global $fieldsRows;
- $valueCss="";
- if(!empty($fieldsRows[$fieldName]["property"] )) {
- foreach($fieldsRows[$fieldName]["property"] as $idf => $row) {
- if($row["type"]==">") if($value>$row["value"]) $valueCss=$row["style_class"];
- if($row["type"]==">=") if($value>=$row["value"]) $valueCss=$row["style_class"];
- if($row["type"]=="=") if($value==$row["value"]) $valueCss=$row["style_class"];
- if($row["type"]=="<=") if($value<=$row["value"]) $valueCss=$row["style_class"];
- if($row["type"]=="<") if($value<$row["value"]) $valueCss=$row["style_class"];
-
-}
-}
- return $valueCss;
-}
-
-
-
-// данные по закупке - достаем параметры закупки - дата старта продаж - от нее считаем продажи списания и закупки прошлой недели
-$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"];
-
-
-if(empty($OrderData["parent_id"])) { //если это материнская - главная закупка
- $date_start=$OrderData["date_start"]; // узнаем точку времени от которой считать продажи и списания
-} else {
- // иначе идем к родителю и узнаем дату матери к которой будем привязываться
- $date_start=$db::getValue("SELECT DATE_FORMAT(date_start, '%Y-%m-%d') as date_start FROM store_orders WHERE id=?",[$row["parent_id"]]);
-}
-
-
-
-$time = strtotime($date_start);
-$date2=date('Y-m-d 23:59:59', $time-86400);
-$date1=date('Y-m-d 00:00:00', $time-86400*8);
-//echo"Дата старта $date_start Считаем продажи и списания от даты $date1 до $date2";
-
-
-foreach($statuses_dostup[$status_order_id][$group_id] as $fieldid => $arrs) {
- $dostup_fields[$fieldid]=$arrs["dostup"];
- $bg_fields[$fieldid]=$arrs["bg"];
-}
-
-
-
-
-function getDataFiledsData() {
-global $orderId, $db,$whereInProductsId,$fieldsRows;
-
-
-//глобальный массив с переменными - только по определнным товарам - лишнего не берем
-$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]);
-foreach($dataF as $row) {
-//если тип поля текст то заменяем
-if($fieldsRows[$row["field_name"]]["tip"]=="string") $v=$row["value_text"]; else $v=$row["value"];
-
-$storeId=$row["store_id"];
-$color=$row["color"];
-if(empty($storeId)) $storeId="NULL";
-if(empty($color)) $color="NULL";
-
-$FiledsData[$row["field_name"]][$row["product_id"]][$storeId][$color]=$v;
-
-
-
-
-if(!empty($row["title"])) $FiledsData["title__".$row["field_name"]][$row["product_id"]][$storeId][$color]=$row["title"];
-
-}
-
-return $FiledsData;
-}
-
-
-//функция обновления данных
-function updatefieldsRows() {
- global $db,$fieldsRows,$whereInProductsId,$ProductsOptions,$date_start_sale, $order_date_add, $date_start_division, $DataFieldStats ,$orderId, $FiledsData,$storesArr, $storesArrayAll,
- $products, $productsColorsArray;
-
-$html="";
- $fieldsArr=[];
-foreach($fieldsRows as $pole => $array) {
-
-if($array["field_type"]=="stats") $fieldsArr[]=$pole;
-if($array["field_type"]=="stats_summ" and $pole!=="division_auto_need_all") $fieldsStatsSum[]=$pole;
-//echo"<br> <b>$pole </b> ";
-
-}
-
-foreach($fieldsArr as $fieldName) {
-//echo"<br> $fieldName";
- $data_up=getArrayByFiledName($fieldName,$date1,$date2);
- insert_store_orders_fields($data_up,$fieldName);
- $FiledsData[$fieldName]=$data_up;
-
-}
-
-
-foreach($fieldsStatsSum as $fieldName) {
-//$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]);
-foreach($dataF as $row) {
- if(empty($row["color"])) $row["color"]="NULL";
- $data_up[$row["product_id"]]["NULL"][$row["color"]]=$row["sum"];
- $FiledsData[$pole][$row["product_id"]][$storeId][$row["color"]]=$array["sum"];
-}
- $html .= "<br><b>$fieldName</b> считаем массив! ";
-
-insert_store_orders_fields($data_up,$fieldName);
-
-}
-
-
-
-
-// полнограммы факт по всем магазинам
-$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]);
-foreach($data3 as $row2) {
- if($row2["color"]=="" or $row2["color"]=="NULL")
- $polnogrammaFact[$row2["product_id"]][$row2["store_id"]]["NULL"]=$row2["quantity"];
- else $polnogrammaFact[$row2["product_id"]][$row2["store_id"]][$row2["color"]]=$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");
-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"];
-
-}
-
-
-
-
-
-$massivSQLColor=[];$inProduct=[];
-
-
-
-$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"];
-
- if(!in_array($productId,$inProduct)) {
-
- $html .="<h3>".$products[$productId]."</h3>";
- $inProduct[]=$productId;
-
- }
-
- $html .="<table class=\"table table-sm table-bordered zak\"><thead><tr class=zag><th>цвет</th><th>магазин</th>
- <th>пол-ма</th><th>кол-во по цвету</th><th>% от полнограммы</th></tr></thead><tbody>";
-
-
- foreach($colors as $color) {
- $color=trim($color);
- // пробегаемся по каждому магазинам
- foreach($storesArrayAll as $storeId => $nameSt) {
-
-
- if(!empty($store_planogram[$productId][$storeId]) and !empty($store_planogram_colors[$productId][$storeId][$color])) {
- //получаем процент цвета в полнограмме
- if(!empty($store_planogram_colors[$productId][$storeId]) and $store_planogram_colors[$productId][$storeId][$color]<$store_planogram[$productId][$storeId])
- $percentColor=$store_planogram_colors[$productId][$storeId][$color]/$store_planogram[$productId][$storeId];
- else $percentColor=0;
- // округляем до сотых
- $percentColor=round($percentColor,3);
-
- $massivSQLColor[$productId][$storeId][$color]=$percentColor;
-
- //заносим в глобальную переменную
- $FiledsData["color_percent"][$productId][$storeId][$color]=$percentColor;
- $html .="<tr><td>$color</td><td>$nameSt</td><td>".$store_planogram[$productId][$storeId]."</td><td>".$store_planogram_colors[$productId][$storeId][$color]."</td>
- <td>$percentColor</td></tr>";
-
- }
- }
- }
- $html .="</tbody></table>";
-}
-
-insert_store_orders_fields($massivSQLColor,"color_percent","",false);
-
-
-//////
-$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>";
- if(trim($row["name"])!=trim($row["description"])) $html .=$row["description"];
-
- $html .="</td><td> <b>".$row["field_name"]."</b>
- ".$row["field_type"]."</td><td>";
-
-
- if(is_array($FiledsData[$row["field_name"]])) {
- $html .="<font color=green>++</font>";
- }
- //<td>".$row["sql_table_values"]."</td>
- //$data_values[$row["field_name"]]=getArrayByFiledName($row["field_name"],$date1,$date2);
-
-
-
-/*
-// готовим массим со всеми данными по столбцам по каждому товару магазину и цвету Если NULL - то это сумма по магазинам и по цветам
-$dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
-foreach($dataF as $row0) {
-//если тип поля текст то заменяем
-if($fieldsRows[$row0["field_name"]]["tip"]=="string") $v=$row0["value_text"]; else $v=$row0["value"];
-
-$storeId=$row0["store_id"];
-$color=$row0["color"];
-if(empty($storeId)) $storeId="NULL";
-if(empty($color)) $color="NULL";
-
-$FiledsData[$row0["field_name"]][$row0["product_id"]][$storeId][$color]=$v;
-}
-*/
-
-// получаем массив с данными по полям из таблицы store_orders_fields_data
-$FiledsData=getDataFiledsData();
-
-
-
- // if(is_array($FiledsDataSumm[$row["field_name"]])) {
-
-
- if($row["field_type"]=="stats_formula") {
- // echo"<h2>".$row["field_name"]." формула</h2>";
-
- // $db::sql("DELETE FROM store_orders_fields_data WHERE field_name=? AND order_id=?",[$row["field_name"], $orderId]);
-
- foreach($products as $productId => $nameProduct) {
- $massivSQL=array();
- // считать или нет по каждому магазину
- $storesArr=["NULL"=>"NULL"];
-
- // если нужна статистика по магазинам для этого поля то добавляем к массиву все магазины
-
- if($row["field_name"]!="storehouse_balance") {
- if($fieldsRows[$row["field_name"]]["stores_stats"]==1 or $row["field_name"]=="division_auto_need" or $row["field_name"]=="division_summ")
- $storesArr = array_merge($storesArr, $storesArrayAll);
- }
-
- $k=1;
- foreach($storesArr as $storeId => $nameStore) {
-
- // if($row["field_name"]=="division_auto_need") $html .="<br><h4>Магазин $k $nameStore</h4>";
-
- $k++; $color="";
- $array=getValueStatsFormula($row["field_name"],$productId,$storeId,$color);
-
- // добавляем в массив глобальные новые значение которые мы посчитали по формулам
- if(!empty($array["value"])) {
- $FiledsData[$row["field_name"]][$productId][$storeId]["NULL"]=$array["value"];
- $massivSQL[$productId][$storeId]["NULL"]=$array["value"];
-
- foreach($productsColorsArray[$productId] as $color) {
- $color=trim($color);
- $array2=getValueStatsFormula($row["field_name"],$productId,$storeId,$color);
- if(!empty($array2["value"])) {
- // if($row["field_name"]=="division_summ_all") echo "<br>+ ЦВЕТ $color = ".$array2["value"]." " ;
- $FiledsData[$row["field_name"]][$productId][$storeId][$color]=$array2["value"];
- $massivSQL[$productId][$storeId][$color]=$array2["value"];
- }
-
- }
- }
- }
- //if(!empty($array["value"]))
-
- insert_store_orders_fields($massivSQL,$row["field_name"]);
-
- }
-
- }
-
-
- // $FiledsData[$row["field_name"]]
- $html .="</td>
-
-
-
- </tr> ";
-}
-
- $html .="</table>";
- /////////
-
-
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='division_auto_need_all' AND order_id='$orderId'");
-
-/*
-// суммируем деление и заносим данные в таблицу хранения данных по полям
-foreach($products as $productId => $name) {
- $division_auto_need_all=0;
- foreach($storesArrayAll as $storeId => $nameStore) {
- // echo"<br> <b>$nameStore</b>division_auto_need= ".$FiledsData["division_auto_need"][$productId][$storeId]["NULL"]." ";
- // $summ=$FiledsData["division_auto_need"][$productId][$storeId]["NULL"] + $FiledsData["division_hand"][$productId][$storeId]["NULL"];
- $val=(int)$FiledsData["division_auto_need"][$productId][$storeId]["NULL"];
-
- if(!empty($val)) $division_auto_need_all +=$val;
- }
-
-//$field_name="division_auto_need_all";
-//echo" Итого деления потребность + $division_auto_need_all = ".$FiledsData[$field_name][$productId]["NULL"]["NULL"]." division_auto_need_all=$division_auto_need_all ";
-if(!empty($division_auto_need_all)) {
- $FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]=$division_auto_need_all;
- $data_uper=[];$data_uper[$productId]["NULL"]["NULL"]=$division_auto_need_all;
- insert_store_orders_fields($data_uper,"division_auto_need_all");
-
- }
-}
-
-*/
-
-//пробегаемся по всем продуктам
-/*
-foreach($products as $productId => $name) {
- $division_auto_need_all=$FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"];
-$quantity_warehouseman_fact=$FiledsData["quantity_warehouseman_fact"][$productId]["NULL"]["NULL"];
-
-
-if(!in_array($productId,$productInner)) $html .="<br><h5>$name</h5>";
-$productInner[]=$productId;
-
-$html .=" потребность всего =".$FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]."
-получаено по факту ".$quantity_warehouseman_fact."";
-
-$division_ratio=1;
-if($division_auto_need_all > $quantity_warehouseman_fact) {
-$division_ratio=round($quantity_warehouseman_fact/$division_auto_need_all,2);
-
-$html .="<font color=red>-меньше!</font>";
-$html .=" применяем коэффициент $division_ratio = ".$FiledsData["division_ratio"][$productId]["NULL"]["NULL"]." ";
-
-}
-
-$html .="<font color=red>коэффициент $division_ratio</font>";
-
-$data_uper=[];$data_uper[$productId]["NULL"]["NULL"]=$division_ratio;
-insert_store_orders_fields($data_uper,"division_ratio");
-
-
-}
-
-*/
-
-
- /*
-//division_summ_all суммируем деление и заносим данные в таблицу хранения данных по полям
-foreach($products as $productId => $name) {
- $division_summ_all=0;
- foreach($storesArrayAll as $storeId => $nameStore) {
- $val=$FiledsData["division_hand_summ"][$productId][$storeId]["NULL"]+$FiledsData["division_summ_all"][$productId][$storeId]["NULL"];
- if(!empty($val)) $division_summ_all +=$val;
- }
-
-//$field_name="division_auto_need_all";
-//echo" Итого деления потребность + $division_summ_all = ".$FiledsData[$field_name][$productId]["NULL"]["NULL"]." division_auto_need_all=$division_auto_need_all ";
-if(!empty($division_summ_all)) {
- $FiledsData["division_summ_all"][$productId]["NULL"]["NULL"]=$division_summ_all;
- $data_uper=[];$data_uper[$productId]["NULL"]["NULL"]=$division_summ_all;
- insert_store_orders_fields($data_uper,"division_summ_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"];
-
- foreach($colors as $color) {
- $color=trim($color);
- $colorsProductsArray[$productId][$color]=$color;
-
- }
- }
-
-
-//$db::sql("DELETE FROM store_orders_fields_data WHERE (field_name='division_summ_all' or field_name='division_auto_need' or field_name='division_summ' or field_name='storehouse_balance' ) AND order_id='$orderId'");
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='storehouse_balance' AND store_id!='' AND order_id='$orderId'");
-
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='division_auto_need' AND order_id='$orderId'");
- $data_up=[];
-foreach($products as $productId => $nameProduct) {
-
- // $storesArr = array_merge($storesArrayAll);
- $all=0;
- foreach($storesArrayAll as $storeId => $nameStore) {
-
- $valueArray=getValueField("division_auto_need",$productId,$storeId,"NULL");
- // echo"<br>$nameProduct -$nameStore division_auto_need =".$valueArray["value"];
- $all =$all + $valueArray["value"];
- $FiledsData["division_auto_need"][$productId][$storeId]["NULL"]=$valueArray["value"];
-
- $data_up2[$productId]["NULL"]["NULL"]=$valueArray["value"];
- if($orderId!=263) insert_store_orders_fields($data_up2,"division_auto_need");
-
- }
-
- $FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]=$all;
- $data_up[$productId]["NULL"]["NULL"]=$all;
-
- }
- if($orderId!=263) insert_store_orders_fields($data_up,"division_auto_need_all");
- // 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'");
-
-
-
-foreach($products as $productId => $nameProduct) {
-$massivSQL=array();
-$FiledsData["division_theory_all"][$productId]["NULL"]["NULL"]=$FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]+$FiledsData["division_hand_summ"][$productId]["NULL"]["NULL"];
-
-if($FiledsData["$rowFactName"][$productId]["NULL"]["NULL"]>=$FiledsData["division_theory_all"][$productId]["NULL"]["NULL"]) {
- $FiledsData["division_ratio"][$productId]["NULL"]["NULL"]=1;
-}
-else $FiledsData["division_ratio"][$productId]["NULL"]["NULL"]=round($FiledsData["$rowFactName"][$productId]["NULL"]["NULL"]/$FiledsData["division_theory_all"][$productId]["NULL"]["NULL"],2);
-
- $data_up=[];
- $data_up[$productId]["NULL"]["NULL"]=$FiledsData["division_ratio"][$productId]["NULL"]["NULL"];
- insert_store_orders_fields($data_up,"division_ratio");
-
- $data_up=[];
- $FiledsData["division_auto"][$productId][$storeId]["NULL"]=$FiledsData["division_auto_need"][$productId][$storeId]["NULL"]*$FiledsData["division_ratio"][$productId]["NULL"]["NULL"];
- $FiledsData["division_auto"][$productId][$storeId]["NULL"]=ceilCoefficient($FiledsData["division_auto"][$productId][$storeId]["NULL"],$FiledsData["min_lot"][$productId]);
- $data_up[$productId]["NULL"]["NULL"]=$FiledsData["division_auto"][$productId]["NULL"]["NULL"];
-
-
- insert_store_orders_fields($data_up,"division_auto");
-
-}
-
-
-$productInner=[];
-$rp="";
-foreach($products as $productId => $nameProduct) {
- $data_up=[];
- //$storesArr = array_merge($storesArrayAll);
-
- if(empty($FiledsData["min_lot"][$productId])) $FiledsData["min_lot"][$productId]=1;
-
-$planogram_all=[];
-$planogram_fact_all=[];
-
-if(!in_array($productId,$productInner)) {}
-
-
-$rp .="
-<div class=\"expanel expanel-secondary\">
-<div class=\"expanel-heading\">
-
-
-<h3 class=\"expanel-title\">$nameProduct
-</h3>
-</div> <div class=\"expanel-body p-0 m-0\">
-факт ".$FiledsData["$rowFactName"][$productId]["NULL"]["NULL"]."
-, коэффициент (потребность/факт) =".$FiledsData["division_ratio"][$productId]["NULL"]["NULL"].",
-мин лот=".$FiledsData["min_lot"][$productId]."
-<table class=\"zak table table-sm\"><thead><tr class=\"zg\">
-<th>Магазин</th>
-<th><b>полнограмма</b></th>
-<th><b>факт</b></th>
-<th><b>потребность</b></th>
-<th><b>авто-деление с коэффицентом</b></th>
-<th><b>ручная добавка</b></th>
-<th><b>авто-деление с ручной добавкой</b></th></tr>
-</thead>";
-
-
-$all=0;
-$productInner[]=$productId;
-$data_uper=[];
-$division_summ_all=0;
- foreach($storesArrayAll as $storeId => $nameStore) {
-
- $FiledsData["division_auto"][$productId][$storeId]["NULL"]=$FiledsData["division_auto_need"][$productId][$storeId]["NULL"]*$FiledsData["division_ratio"][$productId]["NULL"]["NULL"];
- $FiledsData["division_auto"][$productId][$storeId]["NULL"]=ceilCoefficient($FiledsData["division_auto"][$productId][$storeId]["NULL"],$FiledsData["min_lot"][$productId]);
- //if($storeId=="56524cb1-4763-11ea-8cce-b42e991aff6c") $FiledsData["division_auto"][$productId][$storeId]["NULL"]=0;
-
-
- $data_uper["division_auto_color"][$productId][$storeId]["NULL"]=$FiledsData["division_auto"][$productId][$storeId]["NULL"];
-
- $all +=$FiledsData["division_auto"][$productId][$storeId]["NULL"];
-
- $planogram_all[$productId] +=$store_planogram[$productId][$storeId];
- $planogram_fact_all[$productId] +=$polnogrammaFact[$productId][$storeId]["NULL"];
-
-
- $rp .="<tr><td class=\"text-right\">$nameStore</td>
- <td>".$store_planogram[$productId][$storeId]."</td>
- <td>".$polnogrammaFact[$productId][$storeId]["NULL"]."</td>
-
- <td>".(int)$FiledsData["division_auto_need"][$productId][$storeId]["NULL"]."
- </td><td>".(int)$FiledsData["division_auto"][$productId][$storeId]["NULL"]."</td>
- <td>".(int)$FiledsData["division_hand"][$productId][$storeId]["NULL"]."</td>
- <td>".(int)$FiledsData["division_summ"][$productId][$storeId]["NULL"]."</td>
- </tr> ";
-
-
- foreach($store_planogram_colors[$productId][$storeId] as $color => $quantity) {
- $percent_color=$FiledsData["color_percent"][$productId][$storeId][$color];
- if( (!empty($quantity) and !empty($percent_color) ) or !empty($FiledsData["division_hand"][$productId][$storeId]["NULL"]) ) {
-
- $division_auto_need_color=round($percent_color * $FiledsData["division_auto_need"][$productId][$storeId]["NULL"]);
- $division_auto_color=round($percent_color * $FiledsData["division_auto"][$productId][$storeId]["NULL"]);
- $division_hand_color=(int)$FiledsData["division_hand"][$productId][$storeId][$color];
- $division_summ_color=$division_auto_color+$division_hand_color;
-
- $data_uper["division_auto_need_color"][$productId][$storeId][$color]=$division_auto_need_color;
- $data_uper["division_auto_color"][$productId][$storeId][$color]=$division_auto_color;
- $data_uper["division_summ_color"][$productId][$storeId][$color]=$division_summ_color;
-
-
-
- $percent_color_per=$percent_color*100;
- $rp .="<tr class=\"bg-warning\"><td class=\"text-right\">--$color ($percent_color_per%)</td>
- <td>".$store_planogram_color[$productId][$storeId][$color]."</td>
- <td>".$polnogrammaFact[$productId][$storeId][$color]."</td>
- <td>".$division_auto_need_color."
- </td><td>".$division_auto_color."</td>
- <td>".$division_hand_color."</td>
- <td>".$division_summ_color."</td>
- </tr> ";
- }
-
- }
-
-
-
-
- }
-
- $division_summ_all=$all+$FiledsData["division_hand_summ"][$productId]["NULL"]["NULL"];
-
-
-
- $FiledsData["division_auto_all"][$productId]["NULL"]["NULL"]=$all;
-
- insert_store_orders_fields($data_uper["division_auto_need_color"],"division_auto_need");
- insert_store_orders_fields($data_uper["division_auto_color"],"division_auto");
- insert_store_orders_fields($data_uper["division_summ_color"],"division_summ");
-
- $data_up=[];
- $data_up[$productId]["NULL"]["NULL"]=$FiledsData["division_auto_all"][$productId]["NULL"]["NULL"];
- insert_store_orders_fields($data_up,"division_auto_all");
-
- // $data_up=[];
- // $data_up[$productId]["NULL"]["NULL"]=$division_summ_all;
- // $FiledsData["division_summ_all"][$productId]["NULL"]["NULL"]=$division_summ_all;
-
- // insert_store_orders_fields($data_up,"division_summ_all");
-
-
-
-
-
- $rp .="<tfooter>
- <tr class=\"bg-success\"><td class=\"text-right\"><b>Итого</b></td>
- <td>".$planogram_all[$productId]."</td><td>".$planogram_fact_all[$productId]."</td>
-
- <td>
- ".$FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]."</td>
-</td><td>".$FiledsData["division_auto_all"][$productId]["NULL"]["NULL"]."</td>
-<td>".$FiledsData["division_hand_summ"][$productId]["NULL"]["NULL"]."</td>
-
-<td>".$FiledsData["division_summ_all"][$productId]["NULL"]["NULL"]."
-
-
-</td></tr></tfooter></table>
-Остаток склада (факт-сумма даления Итого)
-(".$FiledsData["$rowFactName"][$productId]["NULL"]["NULL"]."-".$FiledsData["division_summ_all"][$productId]["NULL"]["NULL"].")
-Остаток склада =".$FiledsData["$rowFactName"][$productId]["NULL"]["NULL"]." шт.
-</div> </div>";
-}
-
-$FiledsData=getDataFiledsData();
- $data_up=[];
-foreach($products as $productId => $nameProduct) {
- $division_summ_all=0;
-
- echo"<h1>$nameProduct</h1>";
- foreach($storesArrayAll as $storeId => $nameStore) {
- echo"<br> $nameStore
- ".$FiledsData["division_auto"][$productId][$storeId]["NULL"] ." + ".$FiledsData["division_hand"][$productId][$storeId]["NULL"] ." ";
- /*
- foreach($store_planogram_colors[$productId][$storeId] as $color => $quantity) {
- $percent_color=$FiledsData["color_percent"][$productId][$storeId][$color];
- $division_auto_color=round($percent_color * $FiledsData["division_auto"][$productId][$storeId]["NULL"]);
- $division_hand_color=(int)$FiledsData["division_hand"][$productId][$storeId][$color];
- $division_summ_color=$division_auto_color+$division_hand_color;
- $FiledsData["division_summ_all"][$productId][$storeId][$color]=$division_summ_color;
- $data_up[$productId][$storeId][$color]=$division_summ_color;
- }
- */
-
- $division_summ_all +=$FiledsData["division_auto"][$productId][$storeId]["NULL"]+$FiledsData["division_hand"][$productId][$storeId]["NULL"];
-
- }
-
- echo"<br><b>division_summ_all=$division_summ_all</b>";
-
- $FiledsData["division_summ_all"][$productId]["NULL"]["NULL"]=$division_summ_all;
- $data_up[$productId]["NULL"]["NULL"]=$division_summ_all;
-
-}
- insert_store_orders_fields($data_up,"division_summ_all");
-
-
- $data_up=[];
-foreach($products as $productId => $nameProduct) {
-
- $data_up[$productId]["NULL"]["NULL"]=$FiledsData["$rowFactName"][$productId]["NULL"]["NULL"] - $FiledsData["division_summ_all"][$productId]["NULL"]["NULL"];
- $FiledsData["storehouse_balance"][$productId]["NULL"]["NULL"] = $data_up[$productId]["NULL"]["NULL"];
-
-
- echo"<br>$nameProduct storehouse_balance =<b>".$data_up[$productId]["NULL"]["NULL"]."</b>
- = ".$FiledsData["quantity_warehouseman_fact"][$productId]["NULL"]["NULL"]." - ".$FiledsData["division_summ_all"][$productId]["NULL"]["NULL"]." ";
-
-}
- insert_store_orders_fields($data_up,"storehouse_balance");
-
-
-echo $html.$rp;
-
-
-$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]);
-
- if(!empty($_REQUEST["html_print"])) echo $html;
-
-// получаем массив с данными по полям из таблицы store_orders_fields_data
-
-$FiledsData=getDataFiledsData();
-
-return $FiledsData;
-
-}
-
-
-
-// получаем массив с данными по полям из таблицы store_orders_fields_data
-$FiledsData=getDataFiledsData();
-
-/*
-$FiledsData=[];
-// готовим массим со всеми данными по столбцам по каждому товару магазину и цвету Если NULL - то это сумма по магазинам и по цветам
-$dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
-foreach($dataF as $row) {
-//если тип поля текст то заменяем
-if($fieldsRows[$row["field_name"]]["tip"]=="string") $v=$row["value_text"]; else $v=$row["value"];
-
-$storeId=$row["store_id"];
-$color=$row["color"];
-if(empty($storeId)) $storeId="NULL";
-if(empty($color)) $color="NULL";
-
-
-//if($row["field_name"]=="division_summ_all" and $storeId!="NULL") $v=$FiledsData[$row["field_name"]][$row["product_id"]]["NULL"]["NULL"];
-$FiledsData[$row["field_name"]][$row["product_id"]][$storeId][$color]=$v;
-}
-
-*/
-
-
-
-// если не указан магазин или надо просуммировать для какого-то поля
-$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]);
-foreach($dataF as $row) $FiledsDataSummStats[$row["field_name"]][$row["product_id"]][$row["color"]]=$row["sum"];
-
-
-
-
-$whereProvidersId="";
-$k=0;
-foreach($providersIdInThisOrder as $pid) { if($k!=0) $whereProvidersId .=","; $whereProvidersId .="'$pid'"; $k++; }
-
-/* можно указать перменную до подключения файла
-$whereInProductsId = ' IN ('product_id')';
-$products=['product_id'=>"name"];
-
-*/
-// формируем массив с товарами и часть условия для запросов $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);
-$k=0;
- foreach($data2 as $row) {
- if($k!=0) $whereInProductsId .=","; $whereInProductsId .="'".$row["id"]."'";
- $products[$row["id"]]=$row["name"];
- $prov[$row["id"]]=$row["provider_id"];
- $ProductsOptions[$row["id"]]["price_zakup"]=$row["price_zakup"];
- $ProductsOptions[$row["id"]]["parent_id"]=$row["parent_id"];
- $k++;
- }
-$whereInProductsId .=")";
-}
-
-
-//глобальный массив с переменными - только по определнным товарам - лишнего не берем
-$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");
-$k=0;
-foreach($data2 as $row) {
-$providers_products[$row["provider_id"]][]=$row["id"];
-if(!empty($row["colors"])) $productsColorsArray[$row["id"]]=explode(";",$row["colors"]);
-}
-
-
-
-if(!empty($_REQUEST["update"])) {
-$FiledsData=updatefieldsRows();
-}
-
-
-if($date_update <= time()-260) {
-//echo"Обновляем данные в таблице так как от момента последнего обнволения прошло более 1 минуты ";
-//$FiledsData=updatefieldsRows();
-
-}
-
-
-if(!empty($_GET["update1113"])) {
-$html="";
- $fieldsArr=[];
-foreach($fieldsRows as $pole => $array) {
-
-if($array["field_type"]=="stats") $fieldsArr[]=$pole;
-if($array["field_type"]=="stats_summ") $fieldsStatsSum[]=$pole;
-//echo"<br> <b>$pole </b> ";
-
-}
-
-foreach($fieldsArr as $fieldName) {
-//echo"<br> $fieldName";
- $data_up=getArrayByFiledName($fieldName,$date1,$date2);
- insert_store_orders_fields($data_up,$fieldName);
- $FiledsData[$fieldName]=$data_up;
-
-}
-
-
-foreach($fieldsStatsSum as $fieldName) {
-//$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]);
-foreach($dataF as $row) {
- if(empty($row["color"])) $row["color"]="NULL";
- $data_up[$row["product_id"]]["NULL"][$row["color"]]=$row["sum"];
- $FiledsData[$pole][$row["product_id"]][$storeId][$row["color"]]=$array["sum"];
-}
- $html .= "<br><b>$fieldName</b> считаем массив! ";
-
-insert_store_orders_fields($data_up,$fieldName);
-
-}
-
-
-
-//////
-$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) {
- $html .= "<tr><td>".$row["position"]."</td><td> ".$row["field_name"]."
- </td><td> ".$row["field_type"]."</td><td>".$row["sql_table_values"]."
- </td> <td>";
- //$data_values[$row["field_name"]]=getArrayByFiledName($row["field_name"],$date1,$date2);
- if(is_array($FiledsData[$row["field_name"]])) {
-
- $html .="<font color=green>++</font>";
-
- }
-
-
-/*
-// готовим массим со всеми данными по столбцам по каждому товару магазину и цвету Если NULL - то это сумма по магазинам и по цветам
-$dataF=$db::getRows("SELECT * FROM store_orders_fields_data WHERE order_id=?",[$orderId]);
-foreach($dataF as $row0) {
-//если тип поля текст то заменяем
-if($fieldsRows[$row0["field_name"]]["tip"]=="string") $v=$row0["value_text"]; else $v=$row0["value"];
-
-$storeId=$row0["store_id"];
-$color=$row0["color"];
-if(empty($storeId)) $storeId="NULL";
-if(empty($color)) $color="NULL";
-
-$FiledsData[$row0["field_name"]][$row0["product_id"]][$storeId][$color]=$v;
-}
-*/
-
-// получаем массив с данными по полям из таблицы store_orders_fields_data
-$FiledsData=getDataFiledsData();
-
-
- // if(is_array($FiledsDataSumm[$row["field_name"]])) {
-
-
- if($row["field_type"]=="stats_formula") {
- // echo"<h2>".$row["field_name"]." формула</h2>";
-
- // $db::sql("DELETE FROM store_orders_fields_data WHERE field_name=? AND order_id=?",[$row["field_name"], $orderId]);
-
- foreach($products as $productId => $nameProduct) {
- $massivSQL=array();
- // считать или нет по каждому магазину
- $storesArr=["NULL"=>"NULL"];
-
- // если нужна статистика по магазинам для этого поля то добавляем к массиву все магазины
- if($fieldsRows[$row["field_name"]]["stores_stats"]==1 or $row["field_name"]=="division_auto_need" or $row["field_name"]=="division_summ")
- $storesArr = array_merge($storesArr, $storesArrayAll);
-
- $k=1;
- foreach($storesArr as $storeId => $nameStore) {
-
- // if($row["field_name"]=="division_auto_need") $html .="<br><h4>Магазин $k $nameStore</h4>";
-
- $k++; $color="";
- $array=getValueStatsFormula($row["field_name"],$productId,$storeId,$color);
-
- // добавляем в массив глобальные новые значение которые мы посчитали по формулам
- if(!empty($array["value"])) {
- $FiledsData[$row["field_name"]][$productId][$storeId]["NULL"]=$array["value"];
- $massivSQL[$productId][$storeId]["NULL"]=$array["value"];
-
- foreach($productsColorsArray[$productId] as $color) {
- $color=trim($color);
- $array2=getValueStatsFormula($row["field_name"],$productId,$storeId,$color);
- if(!empty($array2["value"])) {
- // if($row["field_name"]=="division_summ_all") echo "<br>+ ЦВЕТ $color = ".$array2["value"]." " ;
- $FiledsData[$row["field_name"]][$productId][$storeId][$color]=$array2["value"];
- $massivSQL[$productId][$storeId][$color]=$array2["value"];
- }
-
- }
- }
- }
- //if(!empty($array["value"]))
-
- insert_store_orders_fields($massivSQL,$row["field_name"]);
-
- }
-
- }
-
-
- // $FiledsData[$row["field_name"]]
- $html .="".$row["description"]." </td>
-
-
-
- </tr> ";
-}
-
- $html .="</table>";
-
-
-
-
- /////////
-
-
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='division_auto_need_all' AND order_id='$orderId'");
-
-// суммируем деление и заносим данные в таблицу хранения данных по полям
-foreach($products as $productId => $name) {
- $division_auto_need_all=0;
- foreach($storesArrayAll as $storeId => $nameStore) {
- // echo"<br> <b>$nameStore</b>division_auto_need= ".$FiledsData["division_auto_need"][$productId][$storeId]["NULL"]." ";
- // $summ=$FiledsData["division_auto_need"][$productId][$storeId]["NULL"] + $FiledsData["division_hand"][$productId][$storeId]["NULL"];
- $division_auto_need_all += $FiledsData["division_auto_need"][$productId][$storeId]["NULL"];
- }
-
-$field_name="division_auto_need_all";
-//echo" Итого деления потребность + $division_auto_need_all = ".$FiledsData[$field_name][$productId]["NULL"]["NULL"]." division_auto_need_all=$division_auto_need_all ";
-if(!empty($division_auto_need_all)) {
- $FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]=$division_auto_need_all;
- $data_uper=[];$data_uper[$productId]["NULL"]["NULL"]=$division_auto_need_all;insert_store_orders_fields($data_uper,"division_auto_need_all");}
-}
-
-//пробегаемся по всем продуктам
-foreach($products as $productId => $name) {
- $division_auto_need_all=$FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"];
-$quantity_warehouseman_fact=$FiledsData["quantity_warehouseman_fact"][$productId]["NULL"]["NULL"];
-
-
-$html .="<br><b>$name</b> division_auto_need_all=".$FiledsData["division_auto_need_all"][$productId]["NULL"]["NULL"]."
-Сумма потребности =".$division_auto_need_all."
-Сумма получаено по факту ".$quantity_warehouseman_fact."";
-
-$division_ratio=1;
-if($division_auto_need_all > $quantity_warehouseman_fact) {
-$division_ratio=round($quantity_warehouseman_fact/$division_auto_need_all,2);
-
-$html .="<font color=red>-меньше!</font>";
-$html .=" применяем коэффициент $division_ratio = ".$FiledsData["division_ratio"][$productId]["NULL"]["NULL"]." ";
-
-}
-
-$html .="<font color=red>коэффициент $division_ratio</font>";
-
-$data_uper=[];$data_uper[$productId]["NULL"]["NULL"]=$division_ratio;
-insert_store_orders_fields($data_uper,"division_ratio");
-
-
-}
-
-$db::sql("UPDATE store_orders SET date_update=NOW() WHERE id='$orderId'");
-
- if(!empty($_REQUEST["html_print"])) echo $html;
-
-// получаем массив с данными по полям из таблицы store_orders_fields_data
-
-$FiledsData=getDataFiledsData();
-
-
-}/// end update3
-
-
-/*
-
-if(!empty($_GET["update2"])) {
-
-echo"UPDATYE=2";
-foreach($fieldsRows as $fieldName =>$array) {
-if($array["field_type"]=="stats_summ") {
-
-
-// echo"DELETE FROM store_orders_fields_data WHERE field_name='$fieldName' AND order_id='$orderId'";
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='$fieldName' AND order_id='$orderId'");
-
-
-$pole=trim($array["func_content"]);
-$FiledsDataSummStatsFuntion=array();
-$dataF=$db::getRows("SELECT product_id,sum(value) as sum, color FROM store_orders_fields_data WHERE order_id=? AND
-store_id!='' AND field_name='$pole' group by product_id, color",[$orderId]);
-foreach($dataF as $row) {
- if(empty($row["color"])) $row["color"]="NULL";
- $FiledsDataSummStatsFuntion[$row["product_id"]]["NULL"][$row["color"]]=$row["sum"];
- $FiledsData[$fieldName][$row["product_id"]]["NULL"][$row["color"]]=$row["sum"];
- // echo"<br> $fieldName = ".$row["product_id"]." = ".$row["color"]." = ".$row["color"]." ".$row["sum"]." ";
-}
-
-
-echo"<br><b>$fieldName</b> считаем массив! value=".$FiledsData[$fieldName]["4e6203b5-3b59-11e5-835e-1c6f659fb563"]["NULL"]["NULL"]." ";// <br>".print_r($FiledsDataSummStatsFuntion).""; //
- $DataFieldStatsSumm[$fieldName]=$FiledsDataSummStatsFuntion;
-insert_store_orders_fields($FiledsDataSummStatsFuntion,$fieldName);
-}
-
-
-if($array["field_type"]=="stats_formula" and $array["name_eng"]=="division_summ_all") {
-echo"<h4>division_summ_all !!</h4>";
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='division_summ_all' AND order_id='$orderId'");
-
- $massivS=[];
-foreach($products as $productId => $value) {
-$array=getValueStatsFormula("division_summ_all",$productId,"","");
-
- $massivS[$productId]["NULL"]["NULL"]=$array["value"];
-
- //echo"<br>$value value=".$array["value"]." ";
-}
- insert_store_orders_fields($massivS,"division_summ_all");
-}
-
-
-if($array["name_eng"]=="auto_purchase_formula") {
-echo"<h4>auto_purchase_formula !!</h4>";
-
-//$db::sql("DELETE FROM store_orders_fields_data WHERE field_name='auto_purchase_formula' AND order_id='$orderId'");
-
- $massivS=[];
-foreach($products as $productId => $value) {
-
- $storesArr=["NULL"=>"NULL"];
-
-// если нужна статистика по магазинам для этого поля то добавляем к массиву все магазины
-if($fieldsRows[$array["name_eng"]]["stores_stats"]==1) $storesArr = array_merge($storesArr, $storesArrayAll);
-
-foreach($storesArr as $storeId => $nameStore) {
-
- $array=getValueStatsFormula("auto_purchase_formula",$productId,"","");
-
- $massivS[$productId]["NULL"]["NULL"]=$array["value"];
- echo"<br>$value value=".$array["value"]." ";
-foreach($productsColorsArray[$productId] as $color) {
-
- $array=getValueStatsFormula("auto_purchase_formula",$productId,$storeId,$color);
- $massivS[$productId][$storeId][$color]=$array["value"];
-
- echo"<br>++$color value=".$array["value"]." ";
-}
-}
-
-}
- insert_store_orders_fields($massivS,"auto_purchase_formula");
-
-
-}
-
-
-
-
-}
-
-
-//foreach($products as $productId => $value) { echo "<br> $value => value = ++ ". $FiledsData["division_summ_all"][$productId]["NULL"]["NULL"];}
-
-
-}
-
-*/
-
-
-
-
-
-
-
-
-
-
-//функция обновляет по массиву ID продуктов информацию в таблице data
-/*
-$products - массив ID product_id=>name_product
-
-*/
-function updateProductArrayDataField($fieldsNamesArr) {
- global $db,$products;
-
-print_r($products);
-
-
-$whereF=implode("','",$fieldsNamesArr);
-$whereF =" name_eng in('$whereF') ";
-
-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");
-echo"<table class=t>";
-foreach($data as $row) {
-
-
-echo"<br>== ".$row["field_name"]." ".$row["field_type"]." ";
-
-}
-
- echo"</table>";
-
-}
-
-//$whereInProductsId=" in('4e6203b5-3b59-11e5-835e-1c6f659fb563') ";
-//$products=["4e6203b5-3b59-11e5-835e-1c6f659fb563"=>"товар"];
-//updateProductArrayDataField(["price_zakup_summ","quantity_purchase","auto_purchase","purchase_price_zakup","quantity_zakup","goods_in_transit","quantity_fact"]);
-
-
-
-
-if($_SESSION["group_id"]==1) echo $rp;
-
-//показываем панель со статусом и магазинами в зависимости от доступа
-function showOrderStoresPanel(){
-global $db, $status_order_id, $status_edit_dostup, $store_orders_status_description, $storesArray, $store_id, $store_orders_statuses, $statuses_stores_show,$whereGuid,$act,$orderId,$group_id;
-
-
-echo'<form method=post action="/shipment/'.$act.'/?id='.$orderId.'">
-<table><td>Статус:</td><td><span class="tag">'. $store_orders_statuses[$status_order_id] .' </span> </td>';
-
-
-if(!empty($status_edit_dostup[$status_order_id][$group_id])) {
-echo'<td>можно изменять на</td><td> <select class="form-control" name=status_new>';
-foreach($status_edit_dostup[$status_order_id][$group_id] as $v) {
- echo '<option value="'.$v.'">'.$store_orders_statuses[$v].'</option> ';
-
-}
-echo'</select></td><td>
-<button class="btn btn-indigo" type=submit name=edit_status value=1>изменить статус</button></td>';
-}
-
-echo'</table>
-
-
-';
-
-
-
-
-
-echo'</form>';
-
-//показываем магазины если статус закупки подразумевает разбивку данных по магазинам
-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_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]);
-
-
-$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]);
-foreach($data2 as $row2) $store_order_status_value[$row2["store_id"]]=$row2["status"];
-
-
-
-
-echo"<span title=\"Статус у заказа можно поменять если все магазины внесут данные\">данные внесли <b>$vnesli</b> из $stores_cnt магазинов</span>";
-
-if($vnesli==$stores_cnt) echo"<a href=\"\" class=\"btn btn-success btn-lg m-3\">меняем статус на следующий!!!</a>";
-
-echo'<div class="row"><div class="col-12">';
-
-
-echo'<a href="/shipment/'.$act.'/?id='.$orderId.'" class="btn btn-'; if(empty($store_id)) echo'success'; else echo'danger'; echo' m-1">без магазина</a>';
-
-foreach($storesArray as $strid=>$namestore){
-echo"<a href=\"/shipment/$act/?store_id=$strid&id=$orderId\" class=\"btn btn-";
-
-if($store_order_status_value[$strid]) echo'outline-';
-if($store_id==$strid) { echo"success"; } else echo"info"; echo" btn-sm m-1\"> ";
-if($store_order_status_value[$strid]==1) echo"<i class=\"fe fe-check me-2\"></i>";
-echo"$namestore</a>";
-}
-echo'</div></div>';
-
-
-//////
-$status_store="";
-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"]]);
-}
-
-$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(!empty($store_order_status_value)) $status_store .="<a href=\"/shipment/$act/?id=$orderId&status=0&store_id=$store_id\" class=\"btn btn-success\">внесено</a>";
-else $status_store .="<a class=\"btn btn-danger\" href=\"/shipment/$act/?id=$orderId&status=1&store_id=$store_id\" >не внесено</a>";
-
-
-echo $status_store;
-
-
-
-
-
-
-}
-
-///////
-
-
-
-}
-
-}
-
-
-
-
-// получаем занчение перменнй по ее названию товару и магазину и цвету
-function getValueFieldGlobal($field_name,$productId){
- global $db,$FiledsData,$DataFieldStatsSumm,$DataFieldStats;
- // if($field_name=="min_order" or $field_name=="min_lot") $value=$globalValuesArray[$field_name][$productId];
- if(empty($value)) $value=$DataFieldStatsSumm[$productId][$field_name];
- if(empty($value)) $value=$FiledsData[$field_name][$productId]["NULL"]["NULL"];
-return $value;
-}
-
-
-// получаем занчение перменнй по ее названию товару и магазину и цвету
-function getValueFieldGlobalHand($field_name,$productId){
- global $db,$DataFieldStatsSumm,$FiledsData;
- $value=$DataFieldStatsSumm[$productId][$field_name];
- if(empty($value)) $value=$FiledsData[$field_name][$productId]["NULL"]["NULL"];
- return $value;
-}
-
-
-// получаем занчение перменнй по ее названию тип stats
-function getValueFieldStats($field_name, $productId, $storeId, $color){
-global $db,$FiledsData,$DataFieldStatsSumm,$DataFieldStats,$storesArrayAll;
- if(empty($storeId)) $storeId="NULL";
- if(empty($color)) $color="NULL";
- $value=$FiledsData[$field_name][$productId][$storeId][$color];
-
- if(empty($value)) $value=$DataFieldStats[$productId][$storeId][$field_name];
-
-
-
-
-
-
-
- return $value;
-}
-
-
-// получаем занчение перменнй по ее названию тип stats
-function getValueFieldStatsStoreHand($field_name, $productId, $storeId, $color){
-global $db,$FiledsData,$DataFieldStats;
- if(empty($storeId)) $storeId="NULL";
- if(empty($color)) $color="NULL";
- $value=$FiledsData[$field_name][$productId][$storeId][$color];
- // if(empty($value)) $value=$DataFieldStats[$productId][$storeId][$field_name];
- return $value;
-}
-
-
-
-
-
-
-
- // получаем занчение перменнй по ее названию тип stats
-function getValueFieldStatsSumm($field_name, $productId, $color){
-global $FiledsData,$db, $orderId, $DataFieldStats, $FiledsDataSumm;
- if(empty($color)) $color="NULL";
- $value=$FiledsData[$field_name][$productId]["NULL"][$color];
- if(empty($value)) $value=$FiledsDataSumm[$field_name][$productId];
- if(empty($value)) $value=$DataFieldStatsSumm[$field_name][$productId][$color];
-
- return $value;
-}
-
-
-
-//Суммируем данные в других закупках по дате от даты старта или от сегодняшней даты сколько было закуплено. Заказано закупщиком quantity_zakup
-if(0 and $date_start_sale!='000-00-00') {
- //echo"<b>Дата старта продаж $date_start_sale от нее вычитаем 7 дней и получаем Закупки для формирования суммарного заказа от предыдущих недель.</b>";
-$dataOrders=$db::getRows("SELECT id FROM store_orders WHERE date_start<='$date_start_sale 00:00:00' AND date_start>='$date_start_sale' -interval 7 day");
-$orders_where=implode("','",$dataOrders);
-if(!empty($orders_where)) $orders_where=" AND order_id in('$orders_where') AND order_id!='$orderId'";
- $data=$db::getRows("SELECT sum(value) as value,product_id, color FROM store_orders_fields_data WHERE field_name='quantity_zakup' AND store_id='' AND value>0 $orders_where group by product_id,color");
- foreach($data as $row) {
- if(empty($row["color"])) $color="NULL"; else $color=$row["color"];
- $FiledsData["quantity_zakup_fact_week_formula"][$row["product_id"]]["NULL"][$color]=$row["value"];
- $FiledsData["quantity_purchase_fact_week"][$row["product_id"]]["NULL"][$color]=$row["value"];
- }
-
-
-// quantity_purchase_last_week
- $data=$db::getRows("SELECT sum(value) as value,product_id, color, store_id FROM store_orders_fields_data WHERE field_name='quantity_purchase' AND value>0 $orders_where group by product_id,color,store_id");
- foreach($data as $row) {
- if(empty($row["color"])) $color="NULL"; else $color=$row["color"];
- if(empty($row["store_id"])) $store_id="NULL"; else $store_id=$row["store_id"];
- $FiledsData["quantity_purchase_last_week"][$row["product_id"]][$store_id][$color]=$row["value"];
- }
-
-
-
- // товар в пути date_start<='$date_start_sale 00:00:00' AND date_start>='$date_start_sale' -interval 7 day quantity_zakup_info
-$dataOrders=$db::getRows("SELECT id FROM store_orders WHERE date_add>='$order_date_add' - interval 7 day AND date_add<='$order_date_add'");
-$orders_where=implode("','",$dataOrders);
-
-echo"$orders_where = $orders_where";
-if(!empty($orders_where)) $orders_where=" AND order_id in('$orders_where') AND order_id!='$orderId'";
-
-
-//echo" товар в пути. ($orders_where) 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";
- $data=$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");
- foreach($data as $row) {
- if(empty($row["color"])) $color="NULL"; else $color=$row["color"];
- $FiledsData["goods_in_transit"][$row["product_id"]]["NULL"][$color]=$row["value"];
- }
-
-
-//quantity_rejection echo"Дата старта $date_start Считаем списания от даты $date_start_sale и делим на 2 = среднее арифметическое списание за 1 неделю";
-$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='Брак' or w.type='Брак с поставки') AND w.date<='$date_start_sale 00:00:00' AND w.date>='$date_start_sale'-interval 14 day group BY p.product_id,w.store_id");
-foreach($data2 as $row) {
-$a=ceil($row["cnt"]/2);
-if(!empty($a)) {
-$FiledsData["quantity_rejection"][$row["product_id"]][$row["store_id"]]["NULL"]=$a;
-$FiledsData["quantity_rejection"][$row["product_id"]]["NULL"]["NULL"] +=$a;
-}
-}
-$FiledsData["write_downs"]=$FiledsData["quantity_rejection"];
-}
-
-
-
-
-
-
-/*
- $data=$db::getRows("SELECT sum(value) as value,product_id, store_id, color FROM store_orders_fields_data WHERE (field_name='division_hand' or field_name='division_auto') AND store_id='' AND value>0 AND order_id='$orderId' group by product_id,store_id,color");
- foreach($data as $row) {
- if(empty($row["color"])) $row["color"]="NULL";
- $FiledsData["division_summ"][$row["product_id"]][$row["store_id"]][$row["color"]]=$row["value"];
- $FiledsData["division_summ_all"][$row["product_id"]]["NULL"][$row["color"]] +=$row["value"];
-
- }
-*/
-// quantity_rejection write_downs списания за 14 дней среднее - недельное списание от даты 1
-
-
-
-function function_auto_purchase_formula($param,$print=0) {
-global $db;
-$goods_in_transit=$param["goods_in_transit"];
-$sale_7day=$param["sale_7day"];
-$quantity_fact=$param["quantity_fact"];
-$quantity=$param["quantity"];
-$min_lot=$param["min_lot"];
-$min_order=$param["min_order"];
-if(empty($min_lot)) $min_lot=1;
-
-
-// считаем запас на 2 дня
-$sale_2day=ceil(2*($sale_7day/7));
-
-$fact=$quantity_fact + $goods_in_transit;
-$fact_sale=$sale_7day;// если факт продаж будет больше чем факт - перприсваеиваем
-
-if(($fact-$fact_sale)>0) {
-$saleweek1=$fact-$fact_sale ;
-$zakaz= $sale_7day + $sale_2day + $quantity - $saleweek1;
-}
-else {
-$zakaz= $sale_7day + $sale_2day + $quantity ;
-}
-// считаем по такой же формуле но за две недели средняя - и если расхождение более 30% подсвевиваем красным
-
-if($zakaz<0) $zakaz=0;
-//округлить до минимального лота деления
-
-$ceil=ceilCoefficient($zakaz,$min_lot);
-
-
-//if(!empty($min_order) and $ceil<$min_order) $ceil=$min_order;
-
-$ttl="".$param["color"]."
-Товар в пути goods_in_transit =$goods_in_transit
-Продажи sale_7day= $sale_7day
-Страховой запас sale_2day= $sale_2day
-Полнограмма $quantity
-факт $quantity_fact
-Заказ $zakaz
-Округляем -> $ceil
-";
-
-
-$arr["value"]=$ceil;
-$arr["title"]=$ttl;
-return $arr;
-
-}
-
-
-// округляет до определенного числа
-function roundCoefficientQuantity($number, $rate = 1)
-{
- $rest = $rate * floor($number / $rate);
-
- return $rest;
-}
-
-
-// функция для формулы автоделения
-function deivisionFormula($param,$print=0) {
-$goods_in_transit=$param["goods_in_transit"];
-$sale_7day=$param["sale_7day"];
-$quantity_fact=$param["quantity_fact"];
-$quantity=$param["quantity"];
-$min_lot=$param["min_lot"];
-$min_order=$param["min_order"];
-$quantity_purchase_summ=$param["quantity_purchase_summ"];
-$quantity_warehouseman_fact=$param["quantity_warehouseman_fact"];
-$quantity_purchase=$param["quantity_purchase"];
-if(empty($min_lot)) $min_lot=1;
-
-// считаем запас на 3 дня
-$sale_2day=ceil(2*($sale_7day/7));
-
-$fact=$quantity_fact ; //$goods_in_transit
-$fact_sale=$sale_7day;// если факт продаж будет больше чем факт - перприсваеиваем
-
-if(($fact-$fact_sale)>0) {
-$saleweek1=$fact-$fact_sale ;
-$zakaz= $sale_7day + $sale_2day + $quantity - $saleweek1;
-}
-else {
-$zakaz= $sale_7day + $sale_2day + $quantity ;
-}
-
-//echo"<br>$zakaz";
-
-$zakaz=roundCoefficientQuantity($zakaz, $min_lot);
-
-
-if(empty($zakaz)) $zakaz=$quantity;
-return $zakaz;
-
-
-}
-
-
-function ratioDivisionPercent($param){
-
-$zakazDivision=deivisionFormula($param);
-$percent=1;
-if($param["quantity_warehouseman_fact"]<$zakazDivision) {
-$percent=round($param["quantity_warehouseman_fact"]/$zakazDivision,2);
-
-}
- $array["value"]=$percent;
- $array["title"]="Автоделение = $zakazDivision Куплено ".$param["quantity_warehouseman_fact"]."";
-
- return $array;
-
-}
-
-// функция для формулы потребности при автоделении
-function function_division_auto_need_formula($param,$print=0) {
-$goods_in_transit=$param["goods_in_transit"];
-$sale_7day=(int)$param["sale_7day"];
-$sale_7day=(int)$param["sales_7day_division"];
-$quantity_fact=(int)$param["quantity_fact"];
-$quantity=(int)$param["quantity"];
-$min_lot=(int)$param["min_lot"];
-$min_order=(int)$param["min_order"];
-$quantity_purchase_summ=(int)$param["quantity_purchase_summ"];
-$quantity_warehouseman_fact=(int)$param["quantity_warehouseman_fact"];
-$quantity_purchase=(int)$param["quantity_purchase"];
-$sale_2day=ceil(2*($sale_7day/7));
-
-if(empty($min_lot)) $min_lot=1;
-$zakazDivision=deivisionFormula($param);
-$zakaz=$zakazDivision;
-/*
-if($quantity_warehouseman_fact>=$zakazDivision) {
-// считаем запас на 2 дня
-
-$zakaz=$zakazDivision;
-
-// считаем по такой же формуле но за две недели средняя - и если расхождение более 30% подсвевиваем красным
-} else {
-// если товара пришло меньше
-$percent=round($quantity_warehouseman_fact/$zakazDivision,2);
-$zakaz=round($zakazDivision*$percent);
-$txt="куплено меньше чем заказано * $percent % = $zakaz";
-
-
-}
-*/
-
-
-if($zakaz<0) $zakaz=0;
-//округлить до минимального лота деления
-
-//$ceil=roundCoefficientQuantity($zakaz,$min_lot);
-
-$ceil=$zakaz;
-
-if($ceil>=$zakazDivision) $zakaz=$zakazDivision;
-
-//if(!empty($min_order) and $ceil<$min_order) $ceil=$min_order;
-
-
-//Заказано кустовыми $quantity_purchase_summ шт.
-//Заказано на магазин $quantity_purchase шт.
-
-$ttl="$txt формула = продажи_7_дней + запас_на_3дня + полнограмма - продажи_7дней
-Мин. лот деления $min_lot!
-Куплено по факту $quantity_warehouseman_fact шт
-Продажи 7 дней=".$sale_7day."шт
-Страховой запас на 2 дня= ".$sale_2day."шт
-Полнограмма ".$quantity."шт
-факт ".$quantity_fact."шт
-Заказ ".$zakaz."шт
-Округляем -> $ceilшт";
-
-$array_r["value"]=$ceil;
-$array_r["title"]=$ttl;
-return $array_r;
-
-}
-
-// функция для формулы автоделения
-function function_division_auto_formula1($param,$print=0) {
-$goods_in_transit=$param["goods_in_transit"];
-$sale_7day=$param["sale_7day"];
-$quantity_fact=$param["quantity_fact"];
-$quantity=$param["quantity"];
-$min_lot=$param["min_lot"];
-$min_order=(int)$param["min_order"];
-$quantity_purchase_summ=$param["quantity_purchase_summ"];
-$quantity_warehouseman_fact=$param["quantity_warehouseman_fact"];
-$quantity_purchase=$param["quantity_purchase"];
-
-
-if(empty($min_lot)) $min_lot=1;
-$zakazDivision=deivisionFormula($param);
-$zakaz=$zakazDivision;
-/*
-if($quantity_warehouseman_fact>=$zakazDivision) {
-// считаем по такой же формуле но за две недели средняя - и если расхождение более 30% подсвевиваем красным
-} else {
-// если товара пришло меньше
-$percent=round($quantity_warehouseman_fact/$zakazDivision,2);
-$zakaz=round($zakazDivision*$percent);
-$txt="куплено меньше чем заказано * $percent % = $zakaz";
-}
-*/
-
-if($zakaz<0) $zakaz=0;
-//округлить до минимального лота деления
-
-//$ceil=roundCoefficientQuantity($zakaz,$min_lot);
-
-$ceil=$zakaz;
-
-if($ceil>=$zakazDivision) $zakaz=$zakazDivision;
-//if(!empty($min_order) and $ceil<$min_order) $ceil=$min_order;
-
-$ttl="$txt
-формула = продажи_7_дней + запас_на_2дня + полнограмма - продажи_7дней
-Минимальный лот деления $min_lot
-Заказано кустовыми ".$quantity_purchase_summ."шт.
-Заказано на магазин ".$quantity_purchas."шт.
-Куплено к-м факту ".$quantity_warehouseman_fact."шт.
-Продажи 7 дней= ".$sale_7day."шт.
-Страховой запас 2дня".$sale_2day."шт.
-Полнограмма $quantityшт.
-факт $quantity_factшт.
-Заказ $zakazшт.
-Округляем -> $ceilшт.
-";
-
-$array_r["value"]=$ceil;
-$array_r["title"]=$ttl;
-return $array_r;
-
-}
-
-
-
-function return_quantity_zakup_fact_week_formula($productId, $color){
-global $FiledsData;
-
-$value=$FiledsData["quantity_zakup_fact_week_formula"][$productId]["NULL"][$color];
-//$value=rand(1,999);
-return $value;
-}
-
-
-
-
-function returnFormula($field_name, $productId, $storeId, $color){
-global $db,$FiledsData,$DataFieldStats,$orderId,$fieldsRows,$products, $storesAll, $date_start_sale, $order_date_add, $date_start_division,$storesArrayAll;
-
- if(empty($storeId)) $storeId="NULL";
- if(empty($color)) $color="NULL";
-
-$type=$fieldsRows[$field_name]["type"];
-$formula=$fieldsRows[$field_name]["func_content"];
-$func_content_arr=explode(";",$formula);
-$avg_arr=explode(",",$func_content_arr[0]);
-
-$field[0]=$avg_arr[0];
-$field[1]=$avg_arr[1];
-
-
-$field_type1=$fieldsRows[$field[0]]["field_type"];
-$field_type2=$fieldsRows[$field[1]]["field_type"];
-
-$storeId1=$storeId;
-$store_save=$fieldsRows[$field[0]]["store_save"];
-if($store_save==0 or $field_type1=="global" or $field[0]=="division_ratio" or $field_type1=="global_hand" or $field_type2=="stats_summ") // если это поле глобальное и его нельзя суммировать и считать по магазину - то or $field[0]=="division_auto_need"
-{
-
-$storeId1="NULL";
-}
-$avg1=$FiledsData[$field[0]][$productId][$storeId1][$color];
-
-
-$storeId2=$storeId;
-$store_save=$fieldsRows[$field[1]]["store_save"];
-if($store_save==0 or $field[1]=="division_ratio" or $field_type2=="global" or $field_type2=="global_hand" or $field_type2=="stats_summ") // если это поле глобальное и его нельзя суммировать и считать по магазину - то or $field[1]=="division_auto_need"
-{
-
-$storeId2="NULL";
-}
-
-$avg2=$FiledsData[$field[1]][$productId][$storeId2][$color];
-
-
-
-if(!empty($formula)) {
-
-// среднее арифметичнкое func_content = a1,a2;
-if($type=="avg") {
- if(!empty($avg2)) $avg=round(($value/$avg2)*100); else $value=0;
-
- $data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-insert_store_orders_fields($data_uper,$field_name);
-}
-
-}
-
-// умножение func_content = a1,a2;
-elseif($type=="multiplication") {
-
-$value=$avg1*$avg2;
-if($field_name=="division_auto" or $field_name=="division_auto_need") $value=round($value,0);
-
-//if($field[1]=="division_ratio")
-
-
-//echo"<br> {$field[1]} store=$storeId2 $avg2 color=$color "; умножение ".$field[0]." $field_type1 $avg1 ".$field[1]." $avg2 $field_type2
-$value_title=" ( ".$field[0]."=$avg1) * (".$field[1]."=$avg2)";
-$data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-insert_store_orders_fields($data_uper,$field_name);
-}
-
-}
-
-// разница func_content = a1,a2;
-elseif($type=="difference") { $value=$avg1-$avg2;
-$value=round($value);
-$value_title="$avg1(".$field[0].") -$avg2(".$field[1].")";
-
-$data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-insert_store_orders_fields($data_uper,$field_name,"", false);
-}
-
-}
-
-
-// суммирование
-elseif($type=="addition") {
-$avg1=$FiledsData[$field[0]][$productId][$storeId][$color];
-$avg2=$FiledsData[$field[1]][$productId][$storeId][$color];
-
-$value=$avg1+$avg2;
-$value_title="$avg1(".$field[0].") + $avg2(".$field[1].") ";
-$value=round($value);
-//if($field_name=="division_summ" and $storeId!="NULL") echo"<br> ".$field[0]." $productId = $avg1 + ".$field[1]." =$avg2 stireId=$storeId color=$color summ=$value";
-
-//$FiledsData[$field_name][$productId][$storeId][$color]=$value;
-
-if($field_name=="division_summ") {
-
-//echo"<br>. Продукт ".$products[$productId]." ".$storesArrayAll[$storeId]." $avg1(".$field[0].") + $avg2(".$field[1].") = $value";
-
-
-}
-
-$data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-insert_store_orders_fields($data_uper,$field_name);
-}
-
-
-}
-
-
-
-}
-
-
-if($type=="division" || $type=="division_auto_need" || $type=="auto_purchase_formula" || $type=="division_ratio" ) {
- if($formula==true){ } else $value_arr=["value"=>0,"title"=>"не сичтаем.."];
-}
-
-
- if(empty($color)) $color="NULL";
- if($storeId=="NULL" and $color=="NULL") $formula=false;
- if($storeId=="NULL" and $color!="NULL") $formula=false;
- if($storeId!="NULL" and $color=="NULL") $formula=true;
- $value_arr=[];
- $param=array();
- $param["sale_7day"]=$FiledsData["sales_cnt"][$productId][$storeId][$color];
- $param["sales_7day_division"]=$FiledsData["sales_7day_division"][$productId][$storeId][$color];
- $param["quantity"]=$FiledsData["quantity"][$productId][$storeId][$color];
- $param["quantity_fact"]=$FiledsData["quantity_fact"][$productId][$storeId][$color];
- $param["goods_in_transit"]=$FiledsData["quantity_zakup_fact_week"][$productId][$storeId][$color];
-
-
- if(empty($param["goods_in_transit"])) $param["goods_in_transit"]=$FiledsData["goods_in_transit"][$productId][$storeId][$color];
-
- $param["min_lot"]=$FiledsData["min_lot"][$productId];
- if(empty($store_id)) $param["min_order"]=$FiledsData["min_order"][$productId];
-
- $param["quantity_purchase_summ"]=$FiledsData["quantity_purchase_summ"][$productId]["NULL"][$color];
- $param["quantity_warehouseman_fact"]=$FiledsData["quantity_warehouseman_fact"][$productId]["NULL"][$color];
- $param["quantity_purchase"]=$FiledsData["quantity_purchase"][$productId][$storeId][$color];
-
-
-// считаем авто деление
-if($type=="division") {
- $value="устарело";
-}
-
-
-// считаем авто деление
-if($type=="division_ratio") {
-$value_arr=$FiledsData["division_ratio"][$productId]["NULL"]["NULL"];
-$value_title="коэффицент";
-}
-
-/*
-// считаем авто деление
-if($type=="division_auto") {
-
-$value_arr=function_division_auto_formula($param);
-$value=$value_arr["value"];
-$value_title=$value_arr["title"];
-$data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-insert_store_orders_fields($data_uper,"division_auto");
-}
-
-}
-
-*/
-
-// считаем авто деление
-if($type=="division_auto_need") {
-$value_arr=function_division_auto_need_formula($param);
-$value=$value_arr["value"];
-$value_title=$value_arr["title"];
-
-$data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-insert_store_orders_fields($data_uper,"division_auto_need");
-//echo"<br>!!!+$value";
-
-}
-
-}
-
-
-// вторая формула автозаказа
- if($type=="auto_purchase_formula") {
-
-if(empty($storesAll)) $storesAll=$db::mapping("SELECT id, name FROM products_1c WHERE tip='city_store'");
-
-
-
-
- $value_arr=function_auto_purchase_formula($param);
- $value=$value_arr["value"];
- $value_title=$value_arr["title"];
-
- if($color=="NULL" and !empty($storesAll[$storeId])) {
-
-
- $param["goods_in_transit"]=$FiledsData["goods_in_transit"][$productId]["NULL"]["NULL"];
-
-
- $itog=$FiledsData["auto_purchase_formula_all"]["NULL"]["NULL"]-$param["goods_in_transit"];
-
- $FiledsData["auto_purchase_formula_all"]["NULL"]["NULL"] +=$value;
- echo"<br><font color=blue>".$products[$productId]." ".$storesAll[$storeId]." = $value all= ".$FiledsData["auto_purchase_formula_all"]["NULL"]["NULL"]." transit=".$param["goods_in_transit"]." itog=$itog</font>";
- }
-
-$data_uper=[];
-if(!empty($value)) {
-$data_uper[$productId][$storeId][$color]=$value;
-$data_ttl[$productId][$storeId][$color]=$value_title;
-insert_store_orders_fields($data_uper,"auto_purchase_formula",$data_ttl);
-}
-}
-
-
- // формула подсчета за неделю - товар в пути
- if($type=="quantity_zakup_fact_week") {
- $value=return_quantity_zakup_fact_week_formula($productId,$color);
-
- }
-
- if($type=="quantity_purchase_last_week") {
- $value=$FiledsData["quantity_purchase_last_week"][$productId][$storeId][$color];
-
- }
-
-
-
-
-
-/*
- if($type=="auto_purchase") {
- //Мин планограмма -остатки факт на витрине +продажи +(продажи:7*3)+(продажи *5%)
- $sale_zapas3=($data_values["sales_cnt"][$pid]/7)*3;
- $sale_week=$data_values["sales_cnt"][$pid];
- $percent5=$data_values["sales_cnt"][$pid]*0.05;
- $valuef = $data_values["quantity"][$pid] - $data_values["quantity_fact"][$pid] + $sale_week + $sale_zapas3 + $percent5;
- $valuef=ceil($valuef);
- $value="$valuef" ;
- }
-
-
-
- */
-
-
-$array=["value"=>$value,"title"=>$value_title];
-return $array;
-}
-
-
-
-
-
-function getValueStatsFormula($field_name, $productId, $storeId, $color){
-global $db,$FiledsData,$products,$DataFieldStats,$orderId,$fieldsRows,$date_start_sale, $order_date_add, $date_start_division,$storesArrayAll;
-
- $array = returnFormula($field_name, $productId, $storeId, $color);
- return $array;
-}
-
-
-
-
-// получаем занчение перменнй по ее названию товару и магазину и цвету
-function getValueField($field_name,$productId,$storeId="NULL",$color="NULL"){
-global $db,$FiledsData, $products, $DataFieldStatsSumm, $fieldsRows, $orderId, $FiledsDataSummStats,$date_start_sale,$order_date_add,$date_start_division,$storesArrayAll;
-
- if(empty($storeId)) $storeId="NULL";
- if(empty($color)) $color="NULL";
- $type_field=$fieldsRows[$field_name]["field_type"];
- if($type_field=="global") {
- $value=getValueFieldGlobal($field_name,$productId);
- // echo"<br> $field_name pid=$productsId = value= $value";
- }
-
- elseif($type_field=="global_hand") {
- $value=getValueFieldGlobalHand($field_name,$productId);
-
- if(empty($value)) $value=$DataFieldStatsSumm[$productId][$field_name];
- if(empty($value)) $value=$FiledsData[$field_name][$productId]["NULL"]["NULL"];
-
-
- } elseif($type_field=="stats") $value=getValueFieldStats($field_name,$productId,$storeId,$color);
- elseif($type_field=="static_hand" or $type_field=="stats_hand" ) {
- $value=getValueFieldStats($field_name,$productId,$storeId,$color);
- echo $type_field;
- }elseif($type_field=="stats_formula") {
- $array=getValueStatsFormula($field_name,$productId,$storeId,$color);
-
-
-
- } elseif($type_field=="stats_store_summ") $value=getValueFieldStatsSumm($field_name,$productId,$color);
- elseif($type_field=="stats_summ") $value=getValueFieldStatsSumm($field_name,$productId,$color);
- elseif($type_field=="stats_store_hand") {
-
- $value=getValueFieldStatsStoreHand($field_name,$productId,$storeId,$color);
- //echo $type_field." p=$productId $storeId $color ";
- }
- else {
- $value=$FiledsData[$field_name][$productId][$storeId][$color];
- }
-
-
-$tip=$fieldsRows[$field_name]["tip"];
-if($tip!="string" and $tip!="double" ) $value=round($value);
-$value=str_replace('.00','',$value);
-
-
-
-if(empty($array)) $array=["value"=>$value,"title"=>$value_title];
-
-return $array;
-}
-
-
-
-// получаем занчение перменнй по ее названию товару и магазину и цвету
-function getValueFieldTrue($field_name,$productId,$storeId="NULL",$color="NULL"){
-global $FiledsData, $products, $DataFieldStatsSumm, $fieldsRows, $orderId, $FiledsDataSummStats,$date_start_sale,$order_date_add,$date_start_division,$storesArrayAll;
-
- if(empty($storeId)) $storeId="NULL";
- if(empty($color)) $color="NULL";
-
- $colorFirst=$color;
-
- $type_field=$fieldsRows[$field_name]["field_type"];
-
-
- if($field_name=="division_ratio"
- or $field_name=="division_auto_need_all"
- or $field_name=="quantity_zakup_fact"
- or $field_name=="quantity_warehouseman_fact"
- or $field_name=="storehouse_balance"
- or $field_name=="min_lot"
- or $field_name=="purchase_fact_difference"
- or $field_name=="division_hand_summ"
- or $field_name=="division_auto_all"
- or $field_name=="division_summ_all"
- or $field_name=="delta_zakup"
- or $field_name=="quantity_zakup"
- or $field_name=="quantity_zakup_fact_summa"
-
- or $field_name=="comment_zakup"
- or $field_name=="quantity_zakup_info"
- or $field_name=="purchase_kust_summ"
- or $field_name=="quantity_zakup_fact_week"
- or $field_name=="quantity_purchase_summ"
- or $field_name=="delta_rejection"
- or $field_name=="quantity_warehouseman_defective"
- or $field_name=="write_offs_comments_all"
- or $field_name=="goods_in_transit"
- or $field_name=="auto_purchase_formula_all"
- or $field_name=="quantity_storage"
- ) {$storeId="NULL"; $color="NULL"; }
-
-
- if($field_name=="quantity_zakup_fact"
- or $field_name=="quantity_warehouseman_fact"
- or $field_name=="delta_zakup"
- or $field_name=="quantity_zakup"
- or $field_name=="quantity_zakup_info"
- ) {$storeId="NULL"; $color=$colorFirst; }
-
-
-
-
-
-
- $value=$FiledsData[$field_name][$productId][$storeId][$color];
- $tip=$fieldsRows[$field_name]["tip"];
-
- if($field_name=="min_lot") $value=$FiledsData[$field_name][$productId];
- if($field_name=="min_order") $value=$FiledsData[$field_name][$productId];
-
-
- if($field_name=="color_percent") {
- //$tip="string";
- $value="p=$productId store= $storeId v=".$FiledsData[$field_name][$productId][$storeId][$color];
- $value=round($FiledsData[$field_name][$productId][$storeId][$color],2);
-
- }
-
- if($field_name=="comment_zakup") {
-
-// $value="p=$productId store= $storeId v=".$FiledsData[$field_name][$productId][$storeId][$color];
-
- }
-
-$value_title=$FiledsData["title__".$field_name][$productId][$storeId][$color];
-if(empty($value_title)) $value_title=$FiledsData["title__".$field_name][$productId][$storeId]["NULL"];
-if(empty($value_title)) $value_title=$FiledsData["title__".$field_name][$productId]["NULL"]["NULL"];
-
-
-
-if($tip!="string" and $tip!="double" ) $value=round($value);
-$value=str_replace('.000','',$value);
-if($tip=="double") $value=round($value,2);
-
-
-if(empty($array)) $array=["value"=>$value,"title"=>$value_title];
-
-return $array;
-}
-
-
-
-function printFieldType($valueArray,$fieldName,$productId,$storeId,$color=""){
-global $fieldsRows,$FiledsData,$DataFieldStatsSumm,$DataFieldStats,$date_start_sale,$order_date_add,$date_start_division,$storesArrayAll ;
-
-
- $value=$valueArray["value"];
- $value_title=$valueArray["title"];
-
- $colorName=trim(str_replace(['\\','/'],['',''],$color));
- $md5Color=md5($color);
- $show=1;
- if(!empty($color) and $color!='NULL') {
- $nameInput='colors['.$fieldName.']['.$productId.']['.$colorName.']';
- $idInput=''.$fieldName.''.$productId.''.$md5Color.'';
- $onchange='ajaxEditFieldColorValue(\''.$fieldName.'\',\''.$productId.'\',\''.$colorName.'\',\''.$md5Color.'\')';
- if(!empty($storeId)) {
- if($fieldsRows[$fieldName]["store_save"]==1 and $fieldsRows[$fieldName]["colors_save"]==1) $show=1; else $show=0;
-
- if(in_array($fieldName,["quantity_warehouseman_fact","quantity_zakup","quantity_zakup_info","quantity_zakup_fact"])) $show=1;
-
-
- }
- }
- else {
- $nameInput=''.$fieldName.'['.$productId.']';
- $idInput=''.$fieldName.''.$productId.'';
- $onchange='ajaxEditFieldValue(\''.$fieldName.'\',\''.$productId.'\',\'NULL\')';
-
- }
-
- if(in_array($fieldsRows[$fieldName]["type"],["numeric","number","input","number"]) and $show==1) {
- echo'<input type=numeric onchange="'.$onchange.'" min="0" id="'.$idInput.'" name='.$nameInput.' class="form-control" value="'.$value.'"';
- if(!empty($fieldsRows[$fieldName]["pattern"])) echo ' pattern="'.$fieldsRows[$fieldName]["pattern"].'"';
- if(isset($fieldsRows[$fieldName]["step"])) echo ' step="'.$fieldsRows[$fieldName]["step"].'"';
- if(isset($fieldsRows[$fieldName]["placeholder"])) echo ' placeholder="'.$fieldsRows[$fieldName]["placeholder"].'"';
- echo'>';
- }
- elseif($fieldsRows[$fieldName]["type"]=="textarea") {
- echo'<textarea rows=1 style="min-width:200px;width:200px;" id="'.$idInput.'" onclick="$(this).attr(\'rows\',\'3\');" onchange="'.$onchange.'" name='.$nameInput.' class="form-control"';
- if(isset($fieldsRows[$fieldName]["placeholder"])) echo ' placeholder="'.$fieldsRows[$fieldName]["placeholder"].'"';
- echo'>'.$value.'</textarea>';
- }
- else {
- if(!empty($value_title)) echo"<span title=\"$value_title\">$value</span>";
- else echo $value;
- }
-
-}
-
-
-
-function printFieldTd($fieldName,$productId,$storeId,$color=""){
-global $dostup_fields,$products,$bg_fields,$fieldsRows, $rowArraySum, $FiledsData,$DataFieldStatsSumm,$DataFieldStats,$date_start_sale,$order_date_add,$date_start_division,$storesArrayAll;
-
- $fieldId=$fieldsRows[$fieldName]["id"];
-
-
- $dostup=$dostup_fields[$fieldId];
- $bg=$bg_fields[$fieldId];
- // $dostup="edit";
- if(empty($storeId)) $storeId="NULL";
-
-
-if($dostup=="edit" or $dostup=="show") {
-
- //можно ли это поле в принципе редактировать
- $edit=$fieldsRows[$fieldName]["field_edit"];
- //можно ли это поле редактировать если выбран магазин
- if($storeId!="NULL") {
- $edit=$fieldsRows[$fieldName]["field_store_edit"];
- $store_show=$fieldsRows[$fieldName]["store_show"]; //выводим ли значение поля в магазина
- } else {
- $store_show=$fieldsRows[$fieldName]["stores_show"]; //выводим ли значение поля без магазина
-
- }
-
- echo'<td data-bs-placement="top" data-bs-toggle="tooltip" data-bs-original-title="'.$fieldsRows[$fieldName]["name_full"].'" class="p-1 text-center ';
-
-
- $valueArray=getValueFieldTrue($fieldName,$productId,$storeId,$color);
-
-
- //$value=$FiledsData[$fieldName][$productId][$storeId][$color];
-
-//echo $FiledsData[$fieldName][$productId][$storeId][$color];
-//$tip=$fieldsRows[$fieldName]["tip"];
-//if($tip!="string" and $tip!="double" ) $value=round($value);
-//$value=str_replace('.00','',$value);
-//$value_title="";
-
-
-///$valueArray["value"]=$value;
-//$valueArray["title"]=$value_title;
-
- $value=$valueArray["value"];
- $value_title=$valueArray["title"];
-
-if(empty($color)) {
-if($fieldsRows[$fieldName]["row_type_sum"]=="sum") $rowArraySum[$fieldId] +=$value;
-if($fieldsRows[$fieldName]["row_type_sum"]=="avg") { $rowArraySum[$fieldId] +=$value; $rowArraySum["cnt__".$fieldId]++; }
-if($fieldsRows[$fieldName]["row_type_sum"]=="amount") { $rowArraySum[$fieldId] +=$value; }
-}
-
-
-
-$bgNew=returnRowCssClassByFieldValue($fieldName,$value);
-if(!empty($bgNew)) $bg=$bgNew;
-
-
- if(isset($bg)) echo' '.$bg; echo' td__'.$fieldName.'">';
-
- // показываем поле настройки поля позволяют.
- if($store_show==1) {
-
- if($dostup=="edit" and $edit==1) {
-
- // if($color!="NULL" and $fieldName=="quantity_warehouseman_fact") echo"11$dostup $edit field_edit=".$fieldsRows[$fieldName]["field_edit"]." ";
- printFieldType($valueArray,$fieldName,$productId,$storeId,$color);
-
- }
- else {
- if(!empty($value_title)) echo"<span data-bs-placement=\"bottom\" data-bs-toggle=\"tooltip\" data-bs-original-title=\"$value_title\" >$value</span>";
- else {
-
- // if($color!="NULL" and $fieldName=="quantity_warehouseman_fact") echo"11$dostup $edit";
- echo $value;
-
-
- }
-
-
-
- }
- }
- else { //если значение поля не нужно выводить то показвываем заглушку
-
- echo'XXX';
-
- }
-
-
-
-
- echo'</td>';
-}
-
-
-
-}
-
-
-
-
-
-
-
-//вставляем данные в таблицу дашборда
-
-function insert_store_orders_fields($massivSQL,$field_name,$massivTitle=[], $print=false) {
-global $db,$orderId,$storeIdToGuidArray,$fieldsRows,$FiledsDataArray,$FiledsData;
-
-$field_id=$fieldsRows[$field_name]["id"];
-$type=$fieldsRows[$field_name]["type"];
-foreach($massivSQL as $productId =>$array) {
- foreach($array as $storeId =>$valueArr) {
- foreach($valueArr as $color =>$value) {
- if(empty($color) or $storeId=="NULL") $color="";
- if($color=="NULL") $color="";
-
- if(is_numeric($storeId) and !empty($storeIdToGuidArray[$storeId]) and $storeId!='NULL') $storeId=$storeIdToGuidArray[$storeId];
- if(empty($storeId) or $storeId=="NULL") $storeId="";
-
- if($type=="string") {$value_text=$value; $value="";}
- else { $value_text=""; }
-
- try {
- // if($field_name=="division_auto_need") echo"<br>$field_name pid=$productId + storeId=$storeId + color=$color + =$value ".print_r($value)." ";
- if(!in_array($field_name,["division","quantity_ostatok_sklad","quantity_rejection_delta"])) {
-
-
- if(empty($storeId)) $storeIdData="NULL"; else $storeIdData=$storeId;
- if(empty($color)) $colorData="NULL"; else $colorData=$color;
- $oldvalue=$FiledsData[$field_name][$productId][$storeIdData][$colorData];
- $oldtitle=$FiledsData["title__".$field_name][$productId][$storeIdData][$colorData];
-
- if($print==true) echo"<br>!!!--------$field_name =$value oldtitle=$oldtitle $title";
-
-
-
- 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]);
-
- }
-
- if(($type!="string" and !empty($value) and $value!='0.000') or ($type=="string" and $value_text!="") ) {
- if(($oldvalue==$value or $oldvalue=="$value.000") and $value_text=="") {
-
- // echo"<br>По этому товару не обновляем так ка значение старое уже есть";
-
- }
-
- if(((empty($value) or $value=="0.000" or $oldvalue==$value or $oldvalue=="$value.000" or $oldtitle==$title ) and $type!="string") or ($type=="string" and $value_text=="")) {
-
- }
- else {
- // if($print==true) echo"<br>!!! $field_name =$value";
- // $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]);
- }
-
- // if(empty($storeId)) $storeIdData="NULL"; else $storeIdData=$storeId;
- //if(empty($color)) $colorData="NULL"; else $colorData=$color;
-
- // echo"<br>$field_name pid=$productId color=$color =$value valuetext=$value_text old=".$FiledsDataArray[$field_name][$productId][$storeIdData][$colorData]." ";
-
-
- }
- }
-
- } catch (Exception $e)
- {
- echo 'Ошибка вставки данных field_name='.$field_name.' '.print_r($param).' error='. $e->getMessage();
- }
-
-
- }
- }
- }
-}
-
-
-
-
-// работает на перенос данных из старого формата в новый обнуляя введенную информацию! аккуратно с применением. применяем 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;
-
-$products_class=[];
-$data=$db::getRows("SELECT * FROM products_class WHERE tip in ('potted','wrap')");
-foreach($data as $row) $products_class[$row["category_id"]]=$row["tip"];
-
-
-
-
-
-$periodDaysStats=14; //количество дней статистики по продажам и списанию
-
-// сколько на складе по 1с
-if($field_name=="quantity_storage") {
-$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");
-foreach($store_planogram as $row) {
-
-
- // echo"<br>$field_name {$row["product_id"]} = {$row["store_id"]} g ={$row["quantity"]}";
- $data_values[$row["product_id"]][$row["store_id"]][$row["color"]] +=$row["quantity"];
- $data_values[$row["product_id"]][0][$row["color"]] +=$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]);
-foreach($store_products_fact as $row) {
- // echo"<br>$field_name {$row["product_id"]} = {$row["store_id"]} quantity ={$row["quantity"]}";
-
- $data_values[$row["product_id"]][$row["store_id"]][$row["color"]] +=$row["quantity"];
- $data_values[$row["product_id"]][0][$row["color"]] +=$row["quantity"];
-}
-}
-
-
-
-
-//разбиваем продукты по группам - у каждой группы будет свой запрос
-$productGroupArray=[];
-foreach($products as $pid => $pName) {
-
-//узнаем категорибю товара
-$categoryId=$ProductsOptions[$pid]["parent_id"];
-// по категории узнаем тип товара горшечка или упаковка
-$tip=$products_class[$categoryId];
-// если это срезка у нее нет группы
-if(empty($tip)) {
- $daysCounterSales=7; $daysCounterWriteOffs=7; // дней продаж и дней на списание для этой категории
- $productGroupArray["flowers"][]=$pid;
-
-}elseif($tip=="potted") { $daysCounterSales=14; $daysCounterWriteOffs=14; $productGroupArray["potted"][]=$pid; }
-elseif($tip=="wrap") { $daysCounterSales=30; $daysCounterWriteOffs=30; $productGroupArray["wrap"][]=$pid; }
-//echo"<br> $pid => $pName $tip $categoryId";
-}
-
-// настройки для срезки
-$configGroupProducts["flowers"]["day_sales"]=7;
-$configGroupProducts["flowers"]["day_write_offs"]=7;
-//для горшечки
-$configGroupProducts["potted"]["day_sales"]=14;
-$configGroupProducts["potted"]["day_write_offs"]=14;
-//для упаковки
-$configGroupProducts["wrap"]["day_sales"]=30;
-$configGroupProducts["wrap"]["day_write_offs"]=30;
-
-
-
-//продажи количество штук привязанные к дате старта продаж
-if($field_name=="sales_cnt") {
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$day_sales=$configGroupProducts[$group]["day_sales"];
-echo"<br>+++ <h1>$group дней $day_sales</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-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 ");
- foreach($data2 as $row2) {
- $cnt=$row2["sale_cnt"]-$row2["vozvr_cnt"];
- $cnt=(int)$cnt;
- if(!empty($cnt)) {
- $data_values[$row2["product_id"]][$row2["store_id"]][0]=$cnt;
- $data_values[$row2["product_id"]][0][0] +=$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 ");
- foreach($data2 as $row2) {
- $cnt=$row2["sale_cnt"]-$row2["vozvr_cnt"];
- $cnt=(int)$cnt;
- if(!empty($cnt)) {
- $data_values[$row2["product_id"]][$row2["store_id"]][0]=$cnt;
- $data_values[$row2["product_id"]][0][0] +=$cnt;
- }
- }
-}
-
-
-
-//продажи количество штук привязанные к дате деления
-if($field_name=="sales_7day_division") {
-
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$day_sales=$configGroupProducts[$group]["day_sales"];
-echo"<br>+++ <h1>$group дней $day_sales</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-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_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;
- if(!empty($cnt)) {
- $data_values[$row2["product_id"]][$row2["store_id"]][0]=$cnt;
- $data_values[$row2["product_id"]][0][0] +=$cnt;
- }
- }
-}
-//echo"<br> Дата атуальных продаж для деления $date_start_division ";
-//print_r($data_values);
-
-}
-}
-
-
-//продажи сумма привязанные к дате деления
-if($field_name=="sales_7day_amount_division" ) {
-
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$day_sales=$configGroupProducts[$group]["day_sales"];
-echo"<br>+++ <h1>$group дней $day_sales</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-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");
-foreach($data2 as $row2) {
-$sale=$row2["sale"]-$row2["vozvr"];
-$sale=(int)$sale;
-if(!empty($sale)) {
-$data_values[$row2["product_id"]][$row2["store_id"]][0]=$sale;
-$data_values[$row2["product_id"]][0][0] +=$sale;
-}
-}
-}
-}
-}
-
-
-//продажи сумма
-if($field_name=="sales_amount" ) {
-
-
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$day_sales=$configGroupProducts[$group]["day_sales"];
-echo"<br>+++ <h1>$group дней $day_sales</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-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");
-foreach($data2 as $row2) {
-$sale=$row2["sale"]-$row2["vozvr"];
-$sale=(int)$sale;
-if(!empty($sale)) {
-$data_values[$row2["product_id"]][$row2["store_id"]][0]=$sale;
-$data_values[$row2["product_id"]][0][0] +=$sale;
-}
-
-}
-}
-}
-}
-
-
-
-//списания за 14 дней среднее - недельное списание от даты 1
-if($field_name=="write_downs" or $field_name=="quantity_rejection") {
-
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$periodDaysStats=$configGroupProducts[$group]["day_write_offs"];
-echo"<br>+++ <h1>Списание $group дней $periodDaysStats</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-foreach($pArray as $prodId) {if($j>0) $whereInProductsId_in .=","; $whereInProductsId_in .="'$prodId'"; $j++;}
-
-if(!empty($whereInProductsId_in)) {
-//$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 неделю";
-
-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");
-
-
-echo "<br>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";
-
-$valAll=0;
-foreach($data2 as $row2) {
-
-if($periodDaysStats==7) $a=ceil($row2["cnt"]/2);
-else $a=ceil($row2["cnt"]);
-
-if(!empty($a)) {
-$data_values[$row2["product_id"]][$row2["store_id"]][0]=$a;
-$data_values[$row2["product_id"]][0][0] +=$a;
-}
-}
-}
-}
-}
-
-//списания за 14 дней среднее - недельное списание от даты деления
-if($field_name=="write_offs_division") {
-
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$periodDaysStats=$configGroupProducts[$group]["day_write_offs"];
-echo"<br>+++ <h1>$group дней $periodDaysStats</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-foreach($pArray as $prodId) {if($j>0) $whereInProductsId_in .=","; $whereInProductsId_in .="'$prodId'"; $j++;}
-
-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");
-$valAll=0;
-foreach($data2 as $row2) {
-
-$a=ceil($row2["cnt"]);
-
-
-if(!empty($a)) {
-$data_values[$row2["product_id"]][$row2["store_id"]][0]=$a;
-$data_values[$row2["product_id"]][0][0] +=$a;
-}
-}
-}
-}
-}
-
-
-//комментарии к ксписанию по магазину
-if($field_name=="write_offs_comments") {
-//$time = strtotime($date1);
-//$time2 = strtotime($date2);
-//$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";
-
-// пробегаем по каждому типу товара и группируем запросы к БД
-foreach($productGroupArray as $group =>$pArray) {
-$periodDaysStats=$configGroupProducts[$group]["day_write_offs"];
-echo"<br>+++ <h1>Списание $group дней $periodDaysStats</h1> ";
-
-//собираем условие по выборке товаров
-$whereInProductsId_in="";
-$j=0;
-foreach($pArray as $prodId) {if($j>0) $whereInProductsId_in .=","; $whereInProductsId_in .="'$prodId'"; $j++;}
-
-if(!empty($whereInProductsId_in)) {
-
-if($periodDaysStats==7) $periodDaysStats_where=14;
-else $periodDaysStats_where=$periodDaysStats;
-
-$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");
-$valAll=0;
-foreach($data2 as $row2) {
-$a="".$row2["comment_id"]."=".$row2["cnt"]."шт. ";
-//echo"<br> $a";
-if(!empty($a)) {
-$data_values[$row2["product_id"]][$row2["store_id"]][0] .=$a;
-//$data_values[$row2["product_id"]][0][0] +=$a;
-}
-}
-}
-}
-}
-
-//комментарии к ксписанию по магазинам суммарно
-if($field_name=="write_offs_comments_all") {
-$time = strtotime($date1);
-$time2 = strtotime($date2);
-
-$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]);
-$valAll=0;
-foreach($data2 as $row2) {
-$a="".$row2["comment_id"]."=".$row2["cnt"]."шт. ";
-//echo"<br> $a";
-$data_values[$row2["product_id"]][0][0] .=$a;
-}
-}
-
-
-//quantity_purchase_last_week заказ за последние неделю который приедет
-if($field_name=="quantity_purchase_last_week") {
-if($date_start_sale!='000-00-00') {
-
-
-// старый формат и старая таблица данных - нужно заменить на данные из таблицы 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");
-
-$orders_where="";
-$i=0;
-echo"В этих закупках считаем закупленный товар";
-foreach($dataOrders as $row22) {
- echo"<span class=\"btn btn-default btn-sm m-1\">".$row22["name"]."</span>";
- if($i>0) $orders_where .=",";
- $orders_where .="'".$row22["id"]."'";
- $i++;
-}
-if(!empty($orders_where)) $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");
-foreach($data3 as $row2) {
-$data_values[$row2["product_id"]][$row2["store_id"]][0]=$row2["quantity_purchase"];
-$data_values[$row2["product_id"]][0][0] +=$row2["quantity_purchase"];
-}
-}
-
-}
-
-
-if($field_name=="goods_in_transit") {
-
- echo"<h1>goods_in_transit -ТОВАР В ПУТИ</h1>";
-if($order_date_add!='000-00-00') {
-
-
-// старый формат и старая таблица данных - нужно заменить на данные из таблицы store_orders_fields_data - сначала берем старые
-if(!empty($orders_where)) {
-//$orders_where=" AND order_id in($orders_where)";
-//$data3=$db::getRows("SELECT sum(quantity_zakup_fact) as quantity, product_id, store_id FROM store_orders_item WHERE quantity_zakup_fact>0 $orders_where group by product_id, store_id");
-foreach($data3 as $row2) {
-//$data_values[$row2["product_id"]][$row2["store_id"]][0]=$row2["quantity_zakup_fact"];
-//$data_values[$row2["product_id"]][0][0] +=$row2["quantity_zakup_fact"];
-}
-}
-
-
-$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");
-
-$idss="";
-$k=0;
-
-echo"<b>Товар в пути участвуют заказы:</b>";
-foreach($dataOrders2 as $row) {
- if($k>0) $idss.=" OR"; $idss.= " order_id='".$row["id"]."'"; $k++;
-
- echo"<br> id=".$row["id"]." дата старта:".$row["date_add"]." ".$row["name"]."";
-
-}
-
-if(!empty($idss)) $orders_where=" AND ( $idss) AND order_id!='$orderId'";
-
-
-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");
-
- // 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 ";
-
- foreach($data2 as $row2) {
- $data_values[$row2["product_id"]][0][$row2["color"]]=$row2["value"];
- // $data_values[$row2["product_id"]][0][$row2["color"]] +=$row2["value"];
-
- echo"<br> ".$products[$row2["product_id"]]." = ".$row2["value"]." ";
- }
-
-
-}
-
-
-
-
-
-
-
-}
-
-
-
-// если мы попадаем в поля сохраненные в таблице store_orders_prices типа global_hand
-
-$inFieldTable=["purchase_price","purchase_summ","purchase_price_zakup","price_zakup_summ","quantity_purchase_summ","quantity_zakup","quantity_zakup_fact","comment_zakup","comment_discrepancy_polnogramm","quantity_warehouseman_fact","quantity_rejection","quantity_zakup_info","cost_price","additional_quantity"];
-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]);
-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]);
-foreach($data as $row) {
- if(empty($row["store_id"])) $data_values[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["quantity"];
- }
-}
-}
-
-
-// если мы попадаем в поля сохраненные в таблице store_orders_item типа global_hand
-$inFieldTable=["quantity_purchase","goods_in_transit122","division_quantity","division_fact"];
-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]);
-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]);
-foreach($data as $row) {
- $data_values[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["quantity"];
- }
-}
-
-
-
-}
-return $data_values;
-}
-
-
-
-
-
-// функция заносит в массив данные по полям в заказеЗакупщика исходные данные 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");
-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"]."
- </td> <td>";
- //$date_start_sale
- $data_values[$row["field_name"]]=getArrayByFiledName($row["field_name"],$date1,$date2);
- echo"<b>".$row["field_name"]."</b> - собираем данные и сохраняем в таблицу ";
-
-
- // print_r($data_values[$row["field_name"]]);
-
- /*
-if($printArray==true) {
-
- foreach($fArray as $ProductId => $ArrayP) {
- echo"<br>ProductId =".$products[$ProductId]." $ProductId";
- foreach($ArrayP as $StoreId => $ArrayP2) {
- if(!empty($StoreId)) {}
- echo"<br>StoreId = ";
- if(!is_numeric($StoreId)) echo "".$export_revers[$StoreId];
- else echo $StoreId;
- //print_r($ArrayP2);
-
- }
- }
- }
-*/
-
-
-
- echo"</td><td>".$row["description"]."</td> </tr> ";
-
-}
-echo"</table>";
-return $data_values;
-
-}
-
-
-
-
-
-
-// пересчитываем данные - берем из страых таблиц и вписываем в новые.
-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'");
-foreach($data as $row) {
-$export[$row["entity_id"]]=$row["export_val"];
-$export_revers[$row["export_val"]]=$row["entity_id"];
-}
-
-$data_values_new=data_values_insert_sql($date1,$date2);
-
-$fieldsArrayFlip=array_flip($fieldsArray);
-foreach($data_values_new as $Field => $fArray) {
-
-if($Field=="quantity_purchase_last_week1")
-{
- echo"<h2>$Field</h2>";
-
-
- foreach($fArray as $ProductId => $ArrayP) {
- echo"<br>ProductId =".$products[$ProductId]." $ProductId";
- foreach($ArrayP as $StoreId => $ArrayP2) {
- if(!empty($StoreId)) {}
- echo"<br>StoreId = ";
-
-
- if(!is_numeric($StoreId)) echo "".$export_revers[$StoreId];
- else echo $StoreId;
- print_r($ArrayP2);
-
- }
- }
-}
- global $storeIdToGuidArray;
- $storeIdToGuidArray=$export;
- // $field_id=$fieldsArrayFlip[$Field];
- insert_store_orders_fields($fArray,$Field);
-
- }
-
-$db::sql("DELETE FROM store_orders_fields_data WHERE (value='0.000' or value='0.00') AND value_text=''",[$orderId]);
-
-}
-
-
-
-$_CONFIG["jscss"]='
-<style>
-
-table.table tbody tr:hover td{background:#cdcdcd}
-.zak tbody tr:hover td{background:#cdcdcd}
-.zak> thead> tr>th, .zak tr.zg th, .zak tr.zg td{font-size:0.7rem;min-width:30px;text-align:center; font-weight:normal; max-height:60px;overflow:hidden}
-.zak> thead> tr>th b{font-weight:normal;}
-.zak> :not(caption)>*>* {
- padding: 0.05rem;
- background-color: 1px;
- box-shadow: none;
-}
-.zak td.fs-5{text-align:left;padding:0.3rem 1rem;}
-.zak {
- border-collapse: collapse;
- border-spacing: 0;
- overflow: hidden;
-}
-.zak th, .zak td {
- border: 1px solid #e6e6e6;
- padding: 0.1rem;
- vertical-align: middle;
- position: relative;
-}
-
-
-.zak td:hover:before {
- background-color: #e3e3e3;
- content: \'\';
- height: 100%;
- left: -5000px;
- position: absolute;
- top: 0;
- width: 10000px;
- z-index: -2;
-}
-
-.zak td:hover:after {
- background-color: #cdcdcd;
- content: \'\';
- height: 10000px;
- left: 0;
- position: absolute;
- top: -5000px;
- width: 100%;
- z-index: -1;
-}
-
-
-
- .zak tbody td input.form-control{font-size:0.8rem;min-width:70px;max-width:100px;font-weight:bold;border:0;border-radius:0;color:#333;padding:0.2rem;margin:0;}
- .zak tbody td input.form-control:focus{border:2px #cd0202 solid;background:#ffccdb}
-.zak td.bg-danger,.zak td.bg-indigo,.zak td.bg-info, .zak tr th.bg-danger, .zak tr th.bg-info, .zak tr th.bg-indigo{color:#fff;}
-
-
-table.zak thead th:not(:first-child),
-table.zak tr.zg th th:not(:first-child) {
- vertical-align: bottom;
- line-height: normal;
-}
-table.zak thead b {
- writing-mode: vertical-rl;
- transform: scale(-1);
-
-}
-
-
-table.zak tr.zg th b,table.zak tr.zg td b {
- writing-mode: vertical-rl;
- transform: scale(-1);
- font-weight:normal; font-size:0.6rem;
-}
-
- .zak tr th .th_p_summ{text-align:center;font-weight:bold;}
- .app-content .side-app {
- padding: 25px 0.5rem 0 0.5rem;
-}
-
-.zak tbody tr td.td_product,.zak td.td_product {tex-align:left;}
-.zak td.td_product:hover {background:#fff;}
-
-</style>
-<script>
-
-function changef(id,typeint)
-{
-var uname=$(\'#\'+id+\'\').val();
-if(typeint==\'double\') uname = uname.replace(/[^0-9.\s]/gi, \'\');
-if(typeint==\'int\') uname = uname.replace(/[^0-9\s]/gi, \'\');
-$(\'#\'+id+\'\').val(\'\'+uname+\'\');
-}
-
-
-function ajaxEditFieldValue(name_eng,product_id,color)
-{
-$.ajax({
- url: \'/shipment/ajaxEditFieldValue/\',
- method: \'post\',
- dataType: \'html\',
- data: { id: '.$orderId.', name_eng: \'\'+name_eng+\'\', store_id:\'\'+$(\'#store_id_id\').val()+\'\', product_id:\'\'+product_id+\'\', color: \'\'+color+\'\', value:\'\'+$(\'#\'+name_eng+\'\'+product_id+\'\').val()+\'\' },
- success: function(data){
- $(\'#edit_div\').html(data);
- }});
-$(\'#\'+name_eng+\'\'+product_id+\'\').after(\'<span class="okk">ok\'+data+\'</span>\');
-setTimeout(function(){
- $(\'.okk\').remove();
-}, 3000);
-}
-
-
-
-
-function ajaxEditFieldColorValue(name_eng,product_id,color,colormd5)
-{
-$.ajax({
- url: \'/shipment/ajaxEditFieldValue/\',
- method: \'post\',
- dataType: \'html\',
- data: { id: '.$orderId.', name_eng: \'\'+name_eng+\'\', store_id:\'\'+$(\'#store_id_id\').val()+\'\', product_id:\'\'+product_id+\'\', color: \'\'+color+\'\', value:\'\'+$(\'#\'+name_eng+\'\'+product_id+\'\'+colormd5+\'\').val()+\'\' },
- success: function(data){
- $(\'#edit_div\').html(data);
- }});
-$(\'#\'+name_eng+\'\'+product_id+\'\'+colormd5+\'\').after(\'<span class="okk">ok\'+data+\'</span>\');
-setTimeout(function(){
- $(\'.okk\').remove();
-}, 3000);
-}
-
-</script>';
-
-
-
-
-
-
-
-
-// вытаскиваем зависимые перменные
-/*
-foreach($fieldsArrayDepended as $fId =>$DependedArray) {
- // echo"<br> $fId";
- if(!empty($DependedArray)) {
- foreach($DependedArray as $Field) {
- $Field=trim($Field);
- if(!empty($Field)) {
- // if(is_numeric($Field)) echo"id=$Field name=".$fieldsArray[$Field]."";
- // else echo" глобальная=$Field"; // не зависит от закупки - не привязана к товару global
- // static_hand статическая - заполняется 1 раз на всю закупку привязана к товару цена розничная - себестоимость, Куплено по факту, Дозакупка шт. - не привязана к магазину
- // stats суммарная по магазинам - на основе данных из других таблиц сумма продаж в шт, сумма спсиания
- // stats_store_hand суммарная по магазинам - на основе вводных данных
- // stats_store_summ суммарная по магазинам - на основе вводимых данных для каждого магазина - считаеся сумма по всем позициям
- }
- }
- }
-}
-
-// не актуально - данные из старых таблиц = > должно все браться из табицы store_orders_fields_data
-$dataF=$db::getRows("SELECT * FROM store_orders_prices WHERE order_id=? ",[$orderId]);
-foreach($dataF as $row) {
-$fieldsArrs=["quantity_zakup","purchase_price", "purchase_summ", "quantity_zakup_fact", "purchase_price_zakup", "price_zakup_summ", "comment_zakup" , "quantity_warehouseman_fact", "quantity_rejection", "quantity_zakup_info", "cost_price", "quantity_purchase_summ" , "comment_discrepancy_polnogramm"];
-foreach($fieldsArrs as $field) $DataFieldStatsSumm[$row["product_id"]][$field]=$row[$field];
-}
-
-// не актуально - данные из старых таблиц = > должно все браться из табицы store_orders_fields_data
-$dataF=$db::getRows("SELECT * FROM store_orders_item WHERE order_id=? ",[$orderId]);
-foreach($dataF as $row) {
-$fieldsArrs=["quantity_purchase","quantity_fact", "quantity"];
-foreach($fieldsArrs as $field) $DataFieldStats[$row["product_id"]][$row["store_id"]][$field]=$row[$field];
-}
-
-*/