]> gitweb.erp-flowers.ru Git - yii-erp24/.git/commitdiff
фикс модуля polnogramm edit
authorpavlikov_maxim <truobleblyat@yandex.ru>
Wed, 24 Apr 2024 11:22:04 +0000 (14:22 +0300)
committerpavlikov_maxim <truobleblyat@yandex.ru>
Wed, 24 Apr 2024 11:22:04 +0000 (14:22 +0300)
erp24/controllers/ShipmentController.php
erp24/modul/shipment/PolnogrammaEdit.php
erp24/views/shipment/polnogramm-edit.php [new file with mode: 0644]

index 7f6d254364f1dd24a5ba8c9661936ad8c8151214..4635daa6cb8750f41c732524a67781768d7da917 100755 (executable)
@@ -16,6 +16,7 @@ class ShipmentController extends Controller
     {
         return $this->render('info');
     }
+    public function actionPolnogrammEdit() { return $this->render('polnogramm-edit'); }
     public function actionIndex() { return $this->render('index'); }
     //public function actionAdd() { return $this->render('add'); }
     public function actionStoreOrders() { return $this->render('store-orders'); }
index 56642ccad8d08d8716ddc36a27d2df77f8eb6567..a530be6997d76458baab76b455862ad2246e58b2 100644 (file)
@@ -1,10 +1,10 @@
-<?
+<?php
 include_once("startup.php");
 include_once("inc/db.php");
 include_once("inc/base_new.php");
 include_once("inc/design_new.php");
 
-include"templates/top.php";
+global $in, $store_id;
 
 if(!empty($_REQUEST["store_id"])) $store_id=htmlentities($_REQUEST["store_id"]);
 //$date_id=date("Ymd");
@@ -14,12 +14,11 @@ $typeDay="monday";
  $_SESSION["show_planogram_0"]=1;  
 
 
-
-if($_REQUEST["typeDay"]) $typeDay=htmlentities($_REQUEST["typeDay"]); //"wednesday";
+if ($_REQUEST["typeDay"] ?? false) $typeDay = htmlentities($_REQUEST["typeDay"]); //"wednesday";
 
 //$date_n_id=$db::getValue("SELECT date_id FROM `store_products_fact` WHERE date_id!=? order by date_id desc LIMIT 1",[date("Ymd")]);
 //f(empty($date_n_id))
-$date_n_id=$db::getValue("SELECT date_id FROM `store_products_fact` WHERE 1 order by date_id desc LIMIT 1"); 
+$date_n_id = $db::getValue("SELECT date_id FROM store_products_fact WHERE 1=1 order by date_id desc LIMIT 1");
 
 
 $massivert[$date_n_id]=date('d.m.Y', strtotime($date_n_id));  
@@ -72,12 +71,13 @@ error_mess("Выберите дату  $date_div");
 exit();    
 } 
 
-$data=$db::getRows("SELECT id,name, providers_arr FROM `store_orders` WHERE date_start>NOW() - interval 25 day");
-foreach($data as $row) {
-$pr=explode(",",$row["providers_arr"]);  
- foreach($pr as $prid) { if(!empty($prid)) $prov[$prid]=$prid;}
+$data = $db::getRows("SELECT id, name, providers_arr FROM store_orders WHERE date_start > NOW() - interval '25 day'");
+foreach ($data as $row) {
+    $pr = explode(",", $row["providers_arr"]);
+    foreach ($pr as $prid) {
+        if (!empty($prid)) $prov[$prid] = $prid;
+    }
 }
-//echo print_r($prov);;
 
 
 $k=0;
@@ -142,7 +142,8 @@ $dataRows=[];
 
 
 // сколько заполнено по магазинам
-$storesFact=array(); $storesFactNo=array();
+$storesFact = array();
+$storesFactNo = array();
 // полнограммы по всем магазинам
 $data3=$db::getRows("SELECT store_id,product_id,quantity FROM store_planogram WHERE color='' AND store_id!='' AND quantity>0 AND store_id in($where)");
 foreach($data3 as $row2) $store_planogramAllStores[$row2["store_id"]][$row2["product_id"]]=$row2["quantity"]; 
@@ -154,17 +155,18 @@ foreach($data3 as $row2) $factAll[$row2["store_id"]][$row2["product_id"]]=$row2[
 
 foreach($stores as $stId =>$nameStore) {
 //echo"<br>магазин ".$nameStore."   ";
-$cnt=0; $all=0;
-$arrays=$store_planogramAllStores[$stId];
-if(!empty($stores[$stId])){
-  foreach($arrays as $productId =>$quantity) {
-   if($factAll[$stId][$productId]>0 and $quantity>0)  { 
-    //echo"+ $productId  = $quantity";
-    $cnt++; 
-     }
-   $all++; 
-  }  
-  $percent=round(100*($cnt/$all));
+    $cnt = 0;
+    $all = 0;
+    $arrays = $store_planogramAllStores[$stId] ?? [];
+    if (!empty($stores[$stId])) {
+        foreach ($arrays as $productId => $quantity) {
+            if (($factAll[$stId][$productId] ?? 0) > 0 and $quantity > 0) {
+                //echo"+ $productId  = $quantity";
+                $cnt++;
+            }
+            $all++;
+        }
+        $percent = ($all != 0) ? (round(100 * ($cnt / $all))) : 0;
 //echo" $cnt из $all =$percent %";
 $storesFact[$stId]=$percent;
 //не заполнившие магазины
@@ -175,14 +177,10 @@ if($percent<15) $storesFactNo[]=$stId;
 // сколько заполнено по магазинам
 
 
-
-
-
-
-
-foreach($stores as $strid=>$namestore){
-echo"<a href=\"/shipment/PolnogrammaEdit/?store_id=$strid&date_id=$date_id\" class=\"btn btn-sm btn-";
-if($store_id==$strid) echo"warning btn"; else echo"info";  echo" m-1\">";
+foreach ($stores as $strid => $namestore) {
+    echo "<a href=\"/shipment/polnogramm-edit/?store_id=$strid&date_id=$date_id\" class=\"btn btn-sm btn-";
+    if ($store_id == $strid) echo "warning btn"; else echo "info";
+    echo " m-1\">";
 
 if($storesFact[$strid]>20) echo"<span class=\"btn btn-sm bg-success me-1\" title=\"Полнограмма заполнена на ".$storesFact[$strid]."%\">+".$storesFact[$strid]."%</span>";
 
@@ -205,10 +203,16 @@ if(!empty($storesFactNo)) {
 }
 
 
-$w="";
-$providers=$db::mapping("SELECT id,name FROM shipment_providers ");
-$k=0;
-foreach($in as $pid) { echo'<span class="tag m-1">'.$providers[$pid].'</span>'; if($k!=0) $w .=" OR";  $w .=" o.provider_id='$pid'"; $k++; }
+$w = "";
+$providers = $db::mapping("SELECT id,name FROM shipment_providers ");
+$k = 0;
+
+//foreach ($in as $pid) {
+//    echo '<span class="tag m-1">' . $providers[$pid] . '</span>';
+//    if ($k != 0) $w .= " OR";
+//    $w .= " o.provider_id='$pid'";
+//    $k++;
+//}
 
 if(!empty($_POST["quantity"])) {
   
@@ -248,10 +252,12 @@ $db::sql($sql);
     
 mess("Факт для магазина сохранена");    
 }
-if(!empty($store_id)) {
-echo'<div class="table-responsive mt-3"><form action="" method=post>
+$store_planogram = [];
+if (!empty($store_id)) {
+    echo '<div class="table-responsive mt-3"><form action="" method=post>
+<input type="hidden" name="_csrf" value="' . Yii::$app->request->getCsrfToken() . '" />
 <table class="table w-100" cellspasing=0 cellpadding=0 border=0>';
-echo'<tbody>';
+    echo '<tbody>';
 
 
 $data3=$db::getRows("SELECT * FROM store_planogram WHERE store_id=? AND color=''",[$store_id]);
@@ -283,13 +289,14 @@ $where .=")";
 
 $data=$db::getRows("SELECT p.id, p.name, o.provider_id, o.colors FROM products_1c_options as o, products_1c as p  WHERE o.provider_id>0 AND p.view='1' AND p.id=o.id $where order by o.provider_id ASC, p.name ASC");
 
-$p=0;
-foreach($data as $row) { 
- if(!in_array($row["provider_id"],$providersIn)) {
-    echo'<tr style="cursor:pointer;" onclick="$(\'.pr__'.$row["provider_id"].'\').toggle();">
- <td colspan=12 class="p-2"><span class="bg-green fs-4 p-2 w-100 d-block">+ '.$providers[$row["provider_id"]].'</span></td></tr>';
-echo'<tr style="';
+    $p = 0;
+    $providersIn = [];
+    foreach ($data as $row) {
+        if (!in_array($row["provider_id"], $providersIn)) {
+            echo '<tr style="cursor:pointer;" onclick="$(\'.pr__' . $row["provider_id"] . '\').toggle();">
+ <td colspan=12 class="p-2"><span class="bg-green fs-4 p-2 w-100 d-block">+ ' . $providers[$row["provider_id"]] . '</span></td></tr>';
+
+            echo '<tr style="';
 
  if($p>=1) echo"display:none;"; 
 
@@ -307,35 +314,37 @@ echo'<td class="text-center"><small>пол-ма</small></td><td class="text-cent
  $p++;
 }    
 
-if($store_planogram[$row["id"]]>0 or $_SESSION["show_planogram_0"]==1) {
-$difference=$store_planogram[$row["id"]]-$values_in[$row["id"]]["quantity"];
-if(!empty($store_planogram[$row["id"]])) $difference_percent=100-round(100*$difference/$store_planogram[$row["id"]]);
-else $difference_percent="";
- echo"<tr style=\""; if($p>1) echo"display:none;"; 
-if($store_planogram[$row["id"]]==0) echo"opacity:0.9;"; 
-if($difference_percent==0 and $store_planogram[$row["id"]]!=0) echo"background:#ffe391;"; 
-if($difference_percent>=100) echo"background:#9effd2;"; 
-echo"\" class=\"trhover pr__".$row["provider_id"]."";
-if($store_planogram[$row["id"]]==0) echo" bg-danger2"; 
- echo"\"><td class=\"text-right fs-6 pr-2\">".$row["name"]."</td>";
-echo'<td class="tdcntr bg-default">'.$store_planogram[$row["id"]].'</td>
+        if (($store_planogram[$row["id"]] ?? 0) > 0 or $_SESSION["show_planogram_0"] == 1) {
+            $difference = ($store_planogram[$row["id"]] ?? 0) - ($values_in[$row["id"]]["quantity"] ?? 0);
+            if (!empty($store_planogram[$row["id"]])) $difference_percent = 100 - round(100 * $difference / $store_planogram[$row["id"]]);
+            else $difference_percent = "";
+            echo "<tr style=\"";
+            if ($p > 1) echo "display:none;";
+
+            if (($store_planogram[$row["id"]] ?? -1) == 0) echo "opacity:0.9;";
+            if ($difference_percent == 0 && ($store_planogram[$row["id"]] ?? 0) != 0) echo "background:#ffe391;";
+            if ($difference_percent >= 100) echo "background:#9effd2;";
+            echo "\" class=\"trhover pr__" . $row["provider_id"] . "";
+            if (($store_planogram[$row["id"]] ?? -1) == 0) echo " bg-danger2";
+            echo "\"><td class=\"text-right fs-6 pr-2\">" . $row["name"] . "</td>";
+            echo '<td class="tdcntr bg-default">' . ($store_planogram[$row["id"]] ?? '') . '</td>
 <td class="tdcntr bg-';
-if($difference>0) echo'danger2';elseif($difference<0) echo'success';else echo'default';
-
-if($difference<0) $difference="+".abs($difference);
-if($difference_percent<0) $difference_percent=">".abs($difference_percent);
-
-if(!empty($store_planogram[$row["id"]]) and !empty($difference_percent)) $difference_percent .="%";
-else $difference_percent ="";
-echo'">'.$difference.'</td>
-<td class="tdcntr bg-default">'.$difference_percent.'</td>';
-echo'<td title="продажи 7 дней">'.$dataRows[$row["id"]]['sales'].'</td>
-<td title="списание 14 дней/2 (только причины перетарка)">'.$dataRows[$row["id"]]['write_offs'].'</td>
-<td title="рекомендация +-% на основе продаж">'.$dataRows[$row["id"]]['sales_reccommend'].'</td>
-<td title="рекомендация +-% на основе списания">'.$dataRows[$row["id"]]['sales_write_offs'].'</td>
-<td title="рекоммендация суммарно +-%">'.$dataRows[$row["id"]]['reccommend'].'</td>
-<td title="новая полнограмма  шт."><input type=number name=polnogramm_new['.$row["id"].'] class="form-control"></td>';
+            if ($difference > 0) echo 'danger2'; elseif ($difference < 0) echo 'success';
+            else echo 'default';
+
+            if ($difference < 0) $difference = "+" . abs($difference);
+            if ($difference_percent < 0) $difference_percent = ">" . abs($difference_percent);
+
+            if (!empty($store_planogram[$row["id"]]) and !empty($difference_percent)) $difference_percent .= "%";
+            else $difference_percent = "";
+            echo '">' . $difference . '</td>
+<td class="tdcntr bg-default">' . $difference_percent . '</td>';
+            echo '<td title="продажи 7 дней">' . ($dataRows[$row["id"]]['sales'] ?? '') . '</td>
+<td title="списание 14 дней/2 (только причины перетарка)">' . ($dataRows[$row["id"]]['write_offs'] ?? '') . '</td>
+<td title="рекомендация +-% на основе продаж">' . ($dataRows[$row["id"]]['sales_reccommend'] ?? '') . '</td>
+<td title="рекомендация +-% на основе списания">' . ($dataRows[$row["id"]]['sales_write_offs'] ?? '') . '</td>
+<td title="рекоммендация суммарно +-%">' . ($dataRows[$row["id"]]['reccommend'] ?? '') . '</td>
+<td title="новая полнограмма  шт."><input type=number name=polnogramm_new[' . $row["id"] . '] class="form-control"></td>';
 
 echo"</tr>";
 $colors=explode(";",$row["colors"]); 
@@ -373,21 +382,21 @@ $j=0;
    foreach($colors as $color_w) {
      $color_w=trim($color_w);  
 
-   
-if(!empty($store_planogram_colors[$row["id"]][$color_w])) {   
-   
-    echo"<tr>";
-    
-  if($j==0)  echo"<td class=zg rowspan=".count($colors)."><b>".$row["name"]."</b></td>";
-    
-  $j++;  
-    echo"<td><input  type=number class=input-sm name=color[quantity][".$row["id"]."][$color_w] value=\"";
-    if(isset($values_in_color[$row["id"]]["quantity"][$color_w] )) echo $values_in_color[$row["id"]]["quantity"][$color_w];
-     echo"\"></td><td>$color_w</td>";
-     
$difference=$store_planogram_colors[$row["id"]][$color_w]-$values_in_color[$row["id"]]["quantity"][$color_w];
- if($store_planogram_colors[$row["id"]][$color_w]) 
$difference_percent=100-round(100*$difference/$store_planogram_colors[$row["id"]][$color_w]);
+
+                        if (!empty($store_planogram_colors[$row["id"]][$color_w])) {
+
+                            echo "<tr>";
+
+                            if ($j == 0) echo "<td class=zg rowspan=" . count($colors) . "><b>" . $row["name"] . "</b></td>";
+
+                            $j++;
+                            echo "<td><input  type=number class=input-sm name=color[quantity][" . $row["id"] . "][$color_w] value=\"";
+                            if (isset($values_in_color[$row["id"]]["quantity"][$color_w])) echo $values_in_color[$row["id"]]["quantity"][$color_w];
+                            echo "\"></td><td>$color_w</td>";
+
                           $difference = ($store_planogram_colors[$row["id"]][$color_w] ?? 0) - ($values_in_color[$row["id"]]["quantity"][$color_w] ?? 0);
+                            if ($store_planogram_colors[$row["id"]][$color_w] ?? 0)
                               $difference_percent = 100 - round(100 * $difference / $store_planogram_colors[$row["id"]][$color_w]);
 
 
  if(!empty($difference_percent)) $difference_percent="$difference_percent%";
@@ -400,8 +409,9 @@ if(!empty($store_planogram_colors[$row["id"]][$color_w])  and !empty($difference
 
 echo'</td>
 <td class="tdcntr bg-';
-if($difference>0) echo'danger2';elseif($difference<0) echo'success';else echo'default';
-echo'">';
+                            if ($difference > 0) echo 'danger2'; elseif ($difference < 0) echo 'success';
+                            else echo 'default';
+                            echo '">';
 
 if(!empty($difference)) echo $difference;
 
@@ -436,8 +446,7 @@ echo'</tbody></table>
 </form></div>';
 
 
-
-$_CONFIG["jscss"] .='<style>.t tbody tr td{padding:0;}
+    $_CONFIG["jscss"] = '<style>.t tbody tr td{padding:0;}
 .t tbody tr td input.form-control{padding:0;margin:0 2px;text-align:center;font-weight:bold;}
 
 .table tbody tr td{padding:0;text-align:center}
@@ -462,12 +471,10 @@ textarea.comment{width:220px; border:0px; background:#e6e6e6;}
 .bg-danger2{background:#ffd1d1;}
 
 table tbody td small{color:#787878; text-align:center; font-size:0.7rem; margin:0 0.4rem;}
-</style>
-';
-
+</style>';
+    include "templates/bottom_light.php";
 }
-       
-include"templates/bottom.php"; 
-       
+
+
 
 
diff --git a/erp24/views/shipment/polnogramm-edit.php b/erp24/views/shipment/polnogramm-edit.php
new file mode 100644 (file)
index 0000000..59d6e59
--- /dev/null
@@ -0,0 +1,4 @@
+<?php
+chdir(__DIR__ . '/../../');
+
+include 'modul/shipment/PolnogrammaEdit.php';
\ No newline at end of file