]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
shipment polnogram
authorAlexander Smirnov <fredeom@mail.ru>
Tue, 23 Apr 2024 09:15:42 +0000 (12:15 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Tue, 23 Apr 2024 09:15:42 +0000 (12:15 +0300)
erp24/controllers/ShipmentController.php
erp24/modul/shipment/polnogramm.php
erp24/views/shipment/polnogramm.php [new file with mode: 0644]

index d1b2cd31f3474ab1420ce8da52ccf6232a6a228e..9969ac1916e6d2de1a787d738a9825a2a3261a25 100755 (executable)
@@ -23,4 +23,5 @@ class ShipmentController extends Controller
     public function actionStoreProductsFact() { return $this->render('store-products-fact'); }
     public function actionStoreProductsFactEdit() { return $this->renderPartial('store-products-fact-edit'); }
     public function actionAjaxField() { return $this->renderPartial('ajax-field'); }
+    public function actionPolnogramm() { return $this->render('polnogramm'); }
 }
\ No newline at end of file
index eca2b8439a3fd4b42057f28a41304e4ff59a3ac4..9616f9d8f068d062dfa0917156738f6cd6f8857c 100644 (file)
@@ -1,10 +1,10 @@
-<?
-include_once("startup.php");
-include_once("inc/db.php");
-include_once("inc/base_new.php");
-include_once("inc/design_new.php");
+<?php
+include_once(dirname(__DIR__, 2) . "/startup.php");
+include_once(dirname(__DIR__, 2) . "/inc/db.php");
+include_once(dirname(__DIR__, 2) . "/inc/base_new.php");
+include_once(dirname(__DIR__, 2) . "/inc/design_new.php");
 
-include"templates/top.php";
+global $store_id;
 
 if(!empty($_REQUEST["store_id"])) $store_id=htmlentities($_REQUEST["store_id"]);
 
@@ -72,7 +72,7 @@ if(!empty($_POST["save"])) {
     
     
 foreach($massiver as $m0 => $m1) {
-$name_eng=$m1["name_eng_sql"];    
+$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;
@@ -82,10 +82,10 @@ $sql_param[$m][$name_eng]=$val;
 
 
 
+$log = [];
 
 
 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");    
 
@@ -102,60 +102,69 @@ $log[$row["color"]]["quantity_max"]=$row["quantity_max"];
 }
 
 
-
-if($log["NULL"]["quantity"]!=$massi["quantity"]) 
+if(($log["NULL"]["quantity"] ?? '')!=$massi["quantity"])
 {
-    
+
 $comment_id=(int)$_POST["comment_id"][$prod_id];    
- // echo" <br>".$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";  
+ // echo" <br>".$log["NULL"]["quantity"]." new_valiue= ".$massi["quantity"]." comment_id=$comment_id ";
+$upFieldsConflict = "store_id, product_id, color";
+$upFields = $upFieldsConflict;
+$upValues = "'$store_id', '$prod_id', ''";
+$upUpdate = '';
+foreach($massi as $pole =>$value) {
+    $upFields .=", $pole";
+    $upValues .=", '$value'";
+    $upUpdate .= (!empty($upUpdate) ? ', ' : '') . "$pole='$value'";
+}
+$sql="INSERT INTO store_planogram ($upFields) VALUES ($upValues) ON CONFLICT ($upFieldsConflict) DO UPDATE SET $upUpdate";
  $db::sql($sql);
  // echo"<br>$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";  
+$upFields .= ", date_id, comment_id";
+$upValues .= ", '".date("Ymd")."', '$comment_id'";
+$upUpdate .= ", date_id='".date("Ymd")."', comment_id='$comment_id'";
+$upFieldsConflict .= ", date_id";
+$sql="INSERT INTO store_planogram_logi ($upFields) VALUES ($upValues) ON CONFLICT ($upFieldsConflict) DO UPDATE SET $upUpdate";
 $db::sql($sql);
 
- foreach($_POST["quantity__color"][$prod_id] as $color => $quan) {
-  $color=trim($color);   
+ 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);
-      
-      
-
- }
+      $upFieldsConflict = "store_id, product_id, color";
+      $upFields = $upFieldsConflict;
+      $upFields .= ', quantity, quantity_max';
+      $upValues = "'$store_id', '$prod_id', '$color', '$quan', '0'";
+      $upUpdate = "quantity='$quan'";
+      $sql = "INSERT INTO store_planogram ($upFields) VALUES ($upValues) ON CONFLICT ($upFieldsConflict) DO UPDATE SET $upUpdate";
+      $db::sql($sql);
+
+      $upFields .= ", date_id, comment_id";
+      $upValues .= ", '".date("Ymd")."', '$comment_id'";
+      $upUpdate .= ", date_id='".date("Ymd")."', comment_id='$comment_id'";
+      $upFieldsConflict .= ", date_id";
+
+      $sql="INSERT INTO store_planogram_logi ($upFields) VALUES ($upValues) ON CONFLICT ($upFieldsConflict) DO UPDATE SET $upUpdate";
+      $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"<br> $sql";
- }
- } 
-
-} 
+    foreach($_POST["quantity_max__color_max"][$prod_id] ?? [] as $color => $quan) {
+        $color=trim($color);
+        $quan=(int)$quan;
+        if(!empty($color)) {
+            $upFieldsConflict = "store_id, product_id, color";
+            $upFields = $upFieldsConflict;
+            $upFields .= ',quantity , quantity_max';
+            $upValues = "'$store_id', '$prod_id', '0', '$color', '$quan'";
+            $upUpdate = "quantity_max='$quan'";
+
+            $sql = "INSERT INTO store_planogram ($upFields) VALUES ($upValues) ON CONFLICT ($upFieldsConflict) DO UPDATE SET $upUpdate";
+            $db::sql($sql);
+            //echo"<br> $sql";
+        }
+    }
+}
  
  
 }
@@ -165,7 +174,7 @@ mess("Полнограмма для магазина сохранена");
 
 echo'<div class="table-responsive mt-3">';
 
-if($save==1) echo'<form method=post>';
+if($save==1) echo'<form method=post>' . '<input type="hidden" name="_csrf" value="' . Yii::$app->request->getCsrfToken() . '" />';
 
 echo'
 <table  class="table table-sm table-hover border-top text-nowrap"><thead>';
@@ -222,15 +231,17 @@ p.id=o.id AND o.provider_id>0 order by o.provider_id ASC, p.view DESC, p.name AS
 
 $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
+$sql = "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");
+WHERE cl.tip='related' group by p.id, o.provider_id, o.colors order by o.provider_id, p.parent_id, p.name ASC";
+$data2=$db::getRows($sql);
 $data = array_merge($data, $data2);
 
-
-foreach($data as $row) { 
+$providersIn = [];
+$category_idIn = [];
+foreach($data as $row) {
     
  
 
@@ -250,11 +261,11 @@ echo'<tr><td colspan=6 class="p-2"><span class="bg-warning fs-1 p-2 w-100 d-bloc
 }
 
 
-if(!in_array($row["category_id"],$category_idIn) and !empty($products_group[$row["category_id"]])) {
+if(!in_array($row["category_id"] ?? '',$category_idIn) and !empty($products_group[$row["category_id"] ?? ''])) {
    echo'<tr style="cursor:pointer;" onclick="$(\'.category__'.$row["category_id"].'\').toggle();">
  <td colspan=6 class="p-2"><span class="bg-grey fs-4 p-2 w-100 d-block">+ '.$products_group[$row["category_id"]].'</span></td></tr>';
  $category_idIn[]=$row["category_id"];  
- $p++;
+// $p++;
 }
     
  echo"<tr style=\"display:none\" class=\"pr__".$row["provider_id"]." ";
@@ -284,7 +295,7 @@ if(!in_array($row["category_id"],$category_idIn) and !empty($products_group[$row
  $sel=[0=>"-выбрать причину-",1=>"перетарка",2=>"недотарка"];
  foreach($sel as $sid => $sname){
     echo'<option value='.$sid.''; 
-    if($sid==$sthis) echo' selected';
+    if($sid==($sthis ?? -1)) echo' selected';
     
     echo'>'.$sname.'</option>'; 
      
@@ -296,7 +307,7 @@ if(!in_array($row["category_id"],$category_idIn) and !empty($products_group[$row
  
  echo"</td>";
  
-if($editView==1) {  echo"<td><input type=checkbox name=view[".$row["id"]."] ";  if($row["view"]==1) echo" checked";  echo"></td>";}
+if($editView==1) {  echo"<td><input type=checkbox name=view[".$row["id"]."] ";  if(($row["view"] ?? 0)==1) echo" checked";  echo"></td>";}
  echo"</tr>";
  
  if(!empty($row["colors"])) {
@@ -310,14 +321,14 @@ echo'<tr style="display:none" class="pr__'.$row["provider_id"].'"><td colspan=2
     $color=trim($color); 
 $percentTxt=""; $cssClass="";   
 if(!empty($values_in[$row["id"]]["quantity"]) and !empty($colors_in[$row["id"]][$color]))   {  
-$percent=round(100*($colors_in[$row["id"]][$color]/$values_in[$row["id"]]["quantity"]),2);
+$percent= $values_in[$row["id"]]["quantity"] > 0 ? round(100*($colors_in[$row["id"]][$color]/$values_in[$row["id"]]["quantity"]),2) : 0;
 $percentTxt =" ($percent%)";    
 $cssClass=" cssLime";    
 }
     
     
     echo'<div class="dinlineblock'.$cssClass.'">
-   <table cellpadding=0 cellspasing=0><td><input type=numeric name=quantity__color['.$row["id"].']['.$color.'] class="input-sm" value="'.$colors_in[$row["id"]][$color].'"></td>
+   <table cellpadding=0 cellspasing=0><td><input type=numeric name=quantity__color['.$row["id"].']['.$color.'] class="input-sm" value="'.($colors_in[$row["id"]][$color]??'').'"></td>
   <td>'.$color.''.$percentTxt.'</td></table></div>';
    //<span class="btn btn-sm btn-warning">цвет '.$row["name"].'</span>    
        
@@ -347,7 +358,7 @@ echo'<tr style="display:none" class="pr__'.$row["provider_id"].' bg-danger2"><td
 foreach($colors_new as $color) {
  $color=trim($color); 
 echo'<div class="dinlineblock">
-   <table cellpadding=0 cellspasing=0><td><input type=numeric name='.$mass["name_eng"].'__color_max['.$row["id"].']['.$color.'] class="input-sm" value="'.$colors_in_max[$row["id"]][$color].'"></td>
+   <table cellpadding=0 cellspasing=0><td><input type=numeric name='.$mass["name_eng"].'__color_max['.$row["id"].']['.$color.'] class="input-sm" value="'.($colors_in_max[$row["id"]][$color]??'').'"></td>
   <td>'.$color.'</td></table></div>';
  }
 echo'</div></td></tr>'; 
@@ -460,8 +471,8 @@ $.ajax({
                        </div>
                </div>*/
 
-       
-include"templates/bottom.php"; 
+
+include_once dirname(__DIR__, 2) . '/templates/bottom_light.php';
        
 
 
diff --git a/erp24/views/shipment/polnogramm.php b/erp24/views/shipment/polnogramm.php
new file mode 100644 (file)
index 0000000..b691f6b
--- /dev/null
@@ -0,0 +1,5 @@
+<?php
+
+chdir(__DIR__ . '/../../');
+
+include 'modul/shipment/polnogramm.php';
\ No newline at end of file