From 1441d5885ff8cd6362f1dfe21ca0cc13dc845c08 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Tue, 5 Dec 2023 17:43:04 +0300 Subject: [PATCH] add polnogram --- .../shipment/AjaxEditFieldValueAction.php | 12 + erp24/actions/shipment/PolnogrammAction.php | 12 + .../shipment/StorePlanogramLogiAction.php | 12 + erp24/controllers/ShipmentController.php | 3 + .../views/shipment/ajax-edit-field-value.php | 141 ++++++ erp24/views/shipment/polnogramm.php | 470 ++++++++++++++++++ erp24/views/shipment/store-planogram-logi.php | 62 +++ 7 files changed, 712 insertions(+) create mode 100644 erp24/actions/shipment/AjaxEditFieldValueAction.php create mode 100644 erp24/actions/shipment/PolnogrammAction.php create mode 100644 erp24/actions/shipment/StorePlanogramLogiAction.php create mode 100644 erp24/views/shipment/ajax-edit-field-value.php create mode 100644 erp24/views/shipment/polnogramm.php create mode 100644 erp24/views/shipment/store-planogram-logi.php diff --git a/erp24/actions/shipment/AjaxEditFieldValueAction.php b/erp24/actions/shipment/AjaxEditFieldValueAction.php new file mode 100644 index 00000000..74329355 --- /dev/null +++ b/erp24/actions/shipment/AjaxEditFieldValueAction.php @@ -0,0 +1,12 @@ +controller->render('ajax-edit-field-value'); + } +} \ No newline at end of file diff --git a/erp24/actions/shipment/PolnogrammAction.php b/erp24/actions/shipment/PolnogrammAction.php new file mode 100644 index 00000000..090d477f --- /dev/null +++ b/erp24/actions/shipment/PolnogrammAction.php @@ -0,0 +1,12 @@ +controller->render('polnogramm'); + } +} \ No newline at end of file diff --git a/erp24/actions/shipment/StorePlanogramLogiAction.php b/erp24/actions/shipment/StorePlanogramLogiAction.php new file mode 100644 index 00000000..b9a9bb6e --- /dev/null +++ b/erp24/actions/shipment/StorePlanogramLogiAction.php @@ -0,0 +1,12 @@ +controller->render('store-planogram-logi'); + } +} \ No newline at end of file diff --git a/erp24/controllers/ShipmentController.php b/erp24/controllers/ShipmentController.php index c666b1e1..5ddfd04e 100755 --- a/erp24/controllers/ShipmentController.php +++ b/erp24/controllers/ShipmentController.php @@ -15,6 +15,9 @@ class ShipmentController extends \yii\web\Controller 'division-print-edit' => \yii_app\actions\shipment\DivisionPrintEditAction::class, 'set-division-priority' => \yii_app\actions\shipment\SetDivisionPriorityAction::class, 'store-products-fact' => \yii_app\actions\shipment\StoreProductsFactAction::class, + 'polnogramm' => \yii_app\actions\shipment\PolnogrammAction::class, + 'store-planogram-logi' => \yii_app\actions\shipment\StorePlanogramLogiAction::class, + 'ajaxEditFieldValue' => \yii_app\actions\shipment\AjaxEditFieldValueAction::class, ]; } diff --git a/erp24/views/shipment/ajax-edit-field-value.php b/erp24/views/shipment/ajax-edit-field-value.php new file mode 100644 index 00000000..c5e0043f --- /dev/null +++ b/erp24/views/shipment/ajax-edit-field-value.php @@ -0,0 +1,141 @@ +I W H"; +die; + +$id=(int)$_REQUEST["id"]; +$product_id=htmlentities($_REQUEST["product_id"]); +$store_id=htmlentities($_REQUEST["store_id"]); +$name_eng=htmlentities($_REQUEST["name_eng"]); +$value=htmlentities($_REQUEST["value"]); +$provider_id=intval($_REQUEST["provider_id"]); +$color=htmlentities($_REQUEST["color"]); + + + +if(!empty($_REQUEST["id"]) and !empty($_REQUEST["product_id"])) { + + $id=(int)$_REQUEST["id"]; + $product_id=htmlentities($_REQUEST["product_id"]); + $store_id=htmlentities($_REQUEST["store_id"]); + $name_eng=htmlentities($_REQUEST["name_eng"]); + $value=htmlentities($_REQUEST["value"]); + $provider_id=intval($_REQUEST["provider_id"]); + $color=htmlentities($_REQUEST["color"]); + + + + $whereInProductsId=" in('$product_id') "; + $products=[$product_id=>"товар"]; + + +//echo"$name_eng=$value $product_id $store_id"; + if(!empty($store_id)) { + global $dependent_fields; + $data=$db::getRows("SELECT id, dependent_fields, name_eng FROM store_orders_fields WHERE 1"); + foreach($data as $row) { + $dependent_fields[$row["id"]]=explode(",",$row["dependent_fields"]); + $fieldRows[$row["id"]]=$row["name_eng"]; + } + + global $arrayp; + + function recurs_depended($fieldId) { + global $dependent_fields,$arrayp; + $arrayp .=",".implode(",",$dependent_fields[$fieldId]); + foreach($dependent_fields[$fieldId] as $fieldId2) recurs_depended($fieldId2); + return $arrayp; + } + + + + + $row=$db::getRow("SELECT id, tip FROM store_orders_fields WHERE name_eng=?",[$name_eng]); + if(is_array($row)) { + $tip=$row["tip"]; + $fieldId=$row["id"]; + + + + if(0) { + $arrayp=recurs_depended($fieldId); + + + $arrayp = array_unique(explode(",",$arrayp)); + $arrayp = array_diff($arrayp, array('')); +//echo "++++".print_r($arrayp)." "; + + + $updateFieldsArray=[]; + echo"Пересчитываем зависимые поля и обновляем информацию в таблице store_orders_fields_data по товару $product_id универсальной функцией "; + foreach($arrayp as $k) { + + if(is_numeric($k)) { echo"
---+++$k ".$fieldRows[$k].""; + + $updateFieldsArray[]=$fieldRows[$k]; + + } + + } + + + + + + + if(!empty($updateFieldsArray)) + { +//include_once("inc/functionsFiedlsData.php"); + +//updateProductArrayDataField($updateFieldsArray); + } + + + } +//print_r($updateFieldsArray); + + + + + if($tip=="string") $pole="value_text"; else $pole="value"; + + if(empty($color) or $color=='undefined' or $color=='NULL') $color=''; + if(empty($store_id) or $store_id=='undefined' or $store_id=='NULL') $store_id=''; + + + $up= "product_id='$product_id', order_id='$id', store_id='$store_id', field_name='$name_eng', field_id='$fieldId', color='$color', date_update=NOW(), hand=1"; + + if(isset($value)) { + + + //$db::sql("DELETE FROM store_orders_fields_data WHERE product_id=? AND order_id=? AND store_id=? AND field_name=? AND field_id=? AND color=?",[$product_id,$id,$store_id,$name_eng,$fieldId,$color]); + //echo"удаление пустой записи"; + + + + $value_old=$db::getValue("SELECT $pole FROM store_orders_fields_data WHERE product_id=? AND order_id=? AND store_id=? AND field_name=? AND field_id=? AND color=? LIMIT 1",[$product_id,$id,$store_id,$name_eng,$fieldId,$color]); + $value_old=str_replace('.000','',$value_old); + $sql="INSERT IGNORE INTO store_orders_fields_data SET "; + $up2 =" $pole='$value'"; + $up .= ",".$up2; + $sql .="$up ON DUPLICATE KEY UPDATE $up2"; + $db::sql($sql); +//echo'сохранили '.$name_eng.' store_id='.$store_id.' '.$name_eng.' color='.$color.' value='.$value.' '; + + + + $db::sql("INSERT INTO store_orders_fields_data_logi +(product_id,field_id,order_id,store_id,color,value,value_old,date_add,admin_id) +VALUES(?,?,?,?,?, ?, ?, NOW(), ?)", [$product_id,$fieldId,$id,$store_id,$color,$value,$value_old,$_SESSION["admin_id"]]); + + } + + + } else echo'Поля '.$name_eng.' нет в таблице '; + + } + +} \ No newline at end of file diff --git a/erp24/views/shipment/polnogramm.php b/erp24/views/shipment/polnogramm.php new file mode 100644 index 00000000..b5f05dc1 --- /dev/null +++ b/erp24/views/shipment/polnogramm.php @@ -0,0 +1,470 @@ +"П-ма мин.","title"=>"Полнограмма минимальная","name_eng"=>"quantity", "name_eng_sql"=>"quantity", "step"=>"1", "placeholder"=>"0"]; +$massiver[]=["name"=>"П-ма Макс.","title"=>"Полнограмма Максимальная","name_eng"=>"quantity_max", "name_eng_sql"=>"quantity_max", "background"=>"bg-danger2", "step"=>"1", "placeholder"=>"0"]; + + + +echo'

полнограмма

'; + +$stores=$db::mapping("SELECT name,id FROM products_1c WHERE tip='city_store' AND view='1' $where order by name ASC"); + + + +foreach($stores as $strid=>$namestore){ + echo"$namestore"; +} + + +//$w=""; +$providers=$db::mapping("SELECT id,name FROM shipment_providers "); +//$k=0; +//foreach($in as $pid) { echo''.$providers[$pid].''; if($k!=0) $w .=","; $w .=" '$pid'"; $k++; } + + +if(!empty($_POST["save_view"]) and $editView==1) { + $db::sql("UPDATE products_1c SET view=0 WHERE tip='products'"); + foreach($_POST["view"] as $productId => $on) { + $productId=htmlentities($productId); + if($on=="on") $db::sql("UPDATE products_1c SET view=1 WHERE tip='products' AND id=?",[$productId]); + //if(empty($on)) mess("
$productId = $on "); + } +} + + + +if(!empty($_POST["save"])) { + + + mess("save"); + + + foreach($massiver as $m0 => $m1) { + $name_eng=$m1["name_eng_sql"]; + foreach($_POST[$name_eng] as $m => $val) { + $val= mb_eregi_replace('[^0-9.]', '', $val); + $sql_param[$m][$name_eng]=$val; + + } + } + + + + + + foreach($sql_param as $prod_id => $massi) { + + $dataRow=$db::getRows("SELECT date_id, color, quantity, quantity_max FROM store_planogram_logi WHERE +store_id='$store_id' AND product_id='$prod_id' order by date_id DESC LIMIT 12"); + + $date_id=""; + foreach($dataRow as $row){ + if(empty($date_id)) $date_id=$row["date_id"]; + if(empty($row["color"])) $row["color"]="NULL"; + + if($date_id==$row["date_id"]) { + $log[$row["color"]]["quantity"]=$row["quantity"]; + $log[$row["color"]]["quantity_max"]=$row["quantity_max"]; + } + + } + + + + if($log["NULL"]["quantity"]!=$massi["quantity"]) + { + + $comment_id=(int)$_POST["comment_id"][$prod_id]; + // echo"
".$log["NULL"]["quantity"]." new_valiue= ".$massi["quantity"]." comment_id=$comment_id "; + $sql="INSERT IGNORE INTO store_planogram SET "; + $up= "store_id='$store_id', product_id='$prod_id', color=''"; foreach($massi as $pole =>$value) $up .=", $pole='$value' "; + $sql .="$up ON DUPLICATE KEY UPDATE $up"; + $db::sql($sql); + // echo"
$sql "; + + $up .=", date_id='".date("Ymd")."', comment_id='$comment_id'"; + $sql="INSERT IGNORE INTO store_planogram_logi SET "; + $sql .="$up ON DUPLICATE KEY UPDATE $up"; + $db::sql($sql); + + + + + foreach($_POST["quantity__color"][$prod_id] as $color => $quan) { + $color=trim($color); + $quan=(int)$quan; + if(!empty($color)) { + $sql="INSERT IGNORE INTO store_planogram SET "; + $up= " store_id='$store_id', product_id='$prod_id', color='$color', quantity='$quan' "; + $sql .="$up ON DUPLICATE KEY UPDATE $up"; + $db::sql($sql); + + + $up .=", date_id='".date("Ymd")."', comment_id='$comment_id'"; + $sql="INSERT IGNORE INTO store_planogram_logi SET "; + $sql .="$up ON DUPLICATE KEY UPDATE $up"; + $db::sql($sql); + + + + } + } + + + foreach($_POST["quantity_max__color_max"][$prod_id] as $color => $quan) { + $color=trim($color); + $quan=(int)$quan; + if(!empty($color)) { + $sql="INSERT IGNORE INTO store_planogram SET "; + $up= " store_id='$store_id', product_id='$prod_id', color='$color', quantity_max='$quan' "; + $sql .="$up ON DUPLICATE KEY UPDATE $up"; + $db::sql($sql); + //echo"
$sql"; + } + } + + } + + + } + + mess("Полнограмма для магазина сохранена"); +} + +echo'
'; + +if($save==1) echo'
'; + +echo' +'; + +foreach($massiver as $f =>$mass) { + echo''; +} +echo''; + +if($editView==1) echo''; +echo''; + + +if (isset($store_id)) { + $data3 = $db::getRows("SELECT * FROM store_planogram WHERE store_id=? AND color=''", [$store_id]); + foreach ($data3 as $row2) { + $values_in[$row2["product_id"]]["quantity"] = $row2["quantity"]; + $values_in[$row2["product_id"]]["quantity_max"] = $row2["quantity_max"]; + + } + + $data3 = $db::getRows("SELECT * FROM store_planogram WHERE store_id=? AND color!=''", [$store_id]); + foreach ($data3 as $row2) { + $colors_in[$row2["product_id"]][$row2["color"]] = $row2["quantity"]; + $colors_in_max[$row2["product_id"]][$row2["color"]] = $row2["quantity_max"]; + } +} + + + + +$colorSort=[]; +if (isset($store_id)) { + $data = $db::getRows("SELECT product_id,color,posit FROM store_planogram_colors_sort WHERE store_id=? order by product_id ASC, posit ASC", [$store_id]); + foreach ($data as $row) $colorSort[$row["product_id"]][] = $row["color"]; +} + +/* + +echo 'Максимальный размер данных: ' . ini_get('post_max_size') . '
'; +echo 'Максимальный размер файлов: ' . ini_get('upload_max_filesize') . '
'; +echo 'Максимальное количество переменных: ' . ini_get('max_input_vars') . '
'; +echo 'Максимальное время выполнения скрипта: ' . ini_get('max_execution_time') . '
'; +echo 'Максимальное время обработки данных: ' . ini_get('max_input_time') . '
'; +echo 'Память для скрипта: ' . ini_get('memory_limit') . '
'; +*/ + +$providers[0]="-без поставщика-"; + + +$data=$db::getRows("SELECT p.id, p.name, o.provider_id, o.colors,p.view FROM products_1c_options as o, products_1c as p WHERE +p.id=o.id AND o.provider_id>0 order by o.provider_id ASC, p.view DESC, p.name ASC"); + + +$products_group=$db::mapping("SELECT id, name FROM products_1c WHERE tip='products_group'"); + +$data2=$db::getRows("SELECT p.id, p.name, p.parent_id, o.provider_id, o.colors, p.parent_id as category_id FROM + products_class as cl + LEFT JOIN products_1c as p ON (p.view='1' AND p.parent_id=cl.category_id ) + LEFT JOIN products_1c_options as o ON (p.id=o.id) +WHERE cl.tip='related' group by p.id order by o.provider_id, p.parent_id, p.name ASC"); +$data = array_merge($data, $data2); + + +$providersIn = []; +$category_idIn = []; +$p = 0; +foreach($data as $row) { + if(!in_array($row["provider_id"],$providersIn)) { + + if(empty($providers[$row["provider_id"]])) { + echo''; + } elseif(!empty($providers[$row["provider_id"]])) + { + echo''; + } + + $providersIn[]=$row["provider_id"]; + + } + + + if(isset($row["category_id"]) && !in_array($row["category_id"],$category_idIn) and !empty($products_group[$row["category_id"]])) { + echo' + '; + $category_idIn[]=$row["category_id"]; + $p++; + } + + echo""; + foreach($massiver as $f =>$mass) { + echo''; + + } + + echo""; + + if($editView==1) { echo"";} + echo""; + + if(!empty($row["colors"])) { + $colors=explode(";",$row["colors"]); + + + +////////// color + echo''; +////////// end color + + +////////// color max + + if(!empty($colorSort[$row["id"]])) { + $colors_new=[]; + foreach($colorSort[$row["id"]] as $color1 => $color) $colors_new[]=$color; + + + foreach($colors as $color1 => $color) { + // if(!in_array($color,$colors_new)) $colors_new[]=$color; + } + + + } else $colors_new=$colors; + + + + + echo''; +////////// end color max + + + + + + } + + +} +echo'
'.$mass["name"].'наименованиевидимый
Сопутка
+ + '.$providers[$row["provider_id"]].'
+ '.$products_group[$row["category_id"]].'
".$row["name"]." "; + //if($providers[$row["provider_id"]]) echo"".$providers[$row["provider_id"]].""; + + if (isset($store_id)) { + echo 'logi'; + } + echo''; + + + echo"
'; + + + +if($save==1) { + + + echo''; + + +// даем доступ к сохранению только изранным группам + if($editView==1) { + echo''; + } +} + + +if($save==1) echo'
'; + +/* + +echo"

Сопутка

"; +$data=$db::getRows("SELECT p.id, p.name FROM products_class as cl, products_1c as p WHERE +p.parent_id=cl.category_id AND cl.tip='related' order by p.name ASC"); + +foreach($data as $row) { + +echo"
".$row["provider_id"]." ".$row["name"]." "; +} + + +*/ + + +echo'
'; + + + + +$_CONFIG["jscss"]=' + + + + + + */ + + +//include"templates/bottom.php"; + + + diff --git a/erp24/views/shipment/store-planogram-logi.php b/erp24/views/shipment/store-planogram-logi.php new file mode 100644 index 00000000..230e9e67 --- /dev/null +++ b/erp24/views/shipment/store-planogram-logi.php @@ -0,0 +1,62 @@ +"-выбрать причину-",1=>"перетарка",2=>"недотарка"]; + +echo'

Логи матрицы товара на магазине

+ + + +

'; + + +$storesAll=$db::mapping("SELECT name,id FROM products_1c WHERE tip='city_store' order by name ASC"); + + + +if(!empty($store_id)) { + echo'
+ + +история +'; + echo''; + + + $dataRow=$db::getRow("SELECT * FROM store_planogram WHERE store_id=? AND product_id=? AND color=''",[$store_id,$product_id]); + + + echo''; + + + $data=$db::getRows("SELECT * FROM store_planogram_logi WHERE store_id=? AND product_id=? order by date_id DESC, color ASC",[$store_id,$product_id]); + + + foreach($data as $row) { + + if($row["color"]=="") + echo' + +'; + + } + + + echo'
сейчас'.$dataRow["quantity"].''.$dataRow["quantity_max"].''.$dataRow["color"].'
'.$row["date_id"].''.$row["quantity"].''.$row["quantity_max"].''.$row["color"].''.$sel[$row["comment_id"]].'
+ +
'; + +} + +//include"templates/bottom.php"; -- 2.39.5