--- /dev/null
+<?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_once(dirname(__DIR__, 2) . "/inc/shipment.php");
+
+include_once(dirname(__DIR__, 2) . "/inc/functionsFiedlsData.php");
+
+global $products;
+
+error_reporting(E_ALL ^ E_NOTICE);
+
+$act='division-print-edit2';
+$modul='shipment';
+$storesAll=$db::mapping("SELECT name,id FROM products_1c WHERE tip='city_store' AND view='1' order by name ASC");
+if(!empty($_REQUEST["id"])) $id=(int)$_REQUEST["id"];
+
+$OrderId=$id;
+
+
+$row=$db::getRow("SELECT name,id,providers_arr, status, division_date, DATE_FORMAT(date_start, '%Y-%m-%d') as date_start, parent_id FROM store_orders WHERE id=?",[$id]);
+$in=explode(",",$row["providers_arr"]);
+$status_order_id=$row["status"];
+$division_date=$row["division_date"];
+
+$k=0;
+$printColor=1;
+if(isset($_REQUEST["printColor"])) $printColor=(int)$_REQUEST["printColor"];
+
+
+$printHand=0;
+if(isset($_REQUEST["printHand"])) $printHand=(int)$_REQUEST["printHand"];
+
+
+$printSumm=0;
+if(isset($_REQUEST["printSumm"])) $printSumm=(int)$_REQUEST["printSumm"];
+
+
+$printPercentMatrix=0;
+if(isset($_REQUEST["printPercentMatrix"])) $printPercentMatrix=(int)$_REQUEST["printPercentMatrix"];
+
+
+
+
+$kustArray=array();
+$data2=$db::getRows("SELECT parent_id, id FROM products_1c WHERE tip='city_store' AND parent_id!='' AND view='1' order by parent_id ASC, name ASC");
+foreach($data2 as $row2) {
+ $kustArray[$row2["parent_id"]][]=$row2["id"];
+ $kustArrayReverse[$row2["id"]]=$row2["parent_id"];
+}
+
+$kustBackground[1]="#AFEEEE";
+$kustBackground[2]="#87CEFA";
+$kustBackground[3]="#EEE8AA";
+
+
+
+
+
+//sort($kustArray);
+
+$sortStoreId="";
+$i=0;
+foreach($kustArray as $kustId =>$massiv) {
+ foreach($massiv as $storeGuid) {
+ if($i>0) $sortStoreId .=",";
+ $sortStoreId .=$storeGuid;
+ $sortStore[]=$storeGuid;
+ $i++;
+ }
+ echo'</p>';
+}
+
+
+
+
+
+echo'<h5 class="page-title mb-0 text-primary">Деление по магазинам '.$row["name"].' Дата деления '.$division_date.' id='.$row["id"].'</h5>';
+echo'<a href="/'.$modul.'/'.$act.'/?id='.$OrderId.'&printColor=1" class="btn btn-info btn-sm me-1 ">печать вместе с цветами</a>
+<a href="/'.$modul.'/'.$act.'/?id='.$OrderId.'&printColor=0" class="btn btn-info btn-sm me-1">без цветов</a>
+
+
+<a href="/'.$modul.'/'.$act.'/?id='.$OrderId.'&printHand=1" class="btn btn-info btn-sm me-1 ">показать ручные добавки</a>
+
+<a href="/'.$modul.'/'.$act.'/?id='.$OrderId.'&printSumm=1" class="btn btn-info btn-sm me-1 ">показать столбцы итого</a>
+<a href="/'.$modul.'/'.$act.'/?id='.$OrderId.'&printPercentMatrix=1" class="btn btn-info btn-sm me-1 ">показать % от матрицы в цвете</a>
+
+
+
+
+<p>Кладовщик печатает деление по магазинам на статусе наборка товара.</p>';
+
+
+
+$data=$db::getRows("SELECT * FROM store_planogram WHERE 1");
+foreach($data as $row) {
+ if(empty($row["color"])) $row["color"]="NULL";
+ $store_planogram[$row["product_id"]][$row["store_id"]][$row["color"]]["min"]=$row["quantity"];
+ $store_planogram[$row["product_id"]][$row["store_id"]][$row["color"]]["max"]=$row["quantity_max"];
+}
+
+
+
+
+$colorSort=[];
+$data=$db::getRows("SELECT product_id, store_id, color,posit FROM store_planogram_colors_sort WHERE 1 order by product_id ASC, posit ASC");
+foreach($data as $row) $colorSort[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["posit"];
+
+
+
+$da=$db::getRows("SELECT id,name,valuta FROM shipment_providers");
+foreach($da as $r) {
+ $providers[$r["id"]]=$r["name"];
+ $providers_valuta[$r["id"]]=$r["valuta"];
+}
+
+
+
+$k=0;$w="";
+$privedrs_htm="";
+foreach($in as $pid) {
+//$privedrs_htm .='<span class="tag m-1">'.$providers[$pid].'</span>';
+ if($k!=0) $w .=","; $w .="'$pid'"; $k++; }
+
+$w2="";
+
+$data2=$db::getRows("SELECT p.id, p.name, o.provider_id, o.colors, o.min_lot FROM products_1c_options as o, products_1c as p
+WHERE o.provider_id in($w) AND p.id=o.id order by o.provider_id ASC, p.name ASC");
+$k=0;
+foreach($data2 as $row) {
+//if($k!=0) $w2 .=" OR ";
+//$w2 .="i.id_1c='".$row["id"]."'";
+ $products[$row["id"]]=$row["name"];
+ $productsMinLot[$row["id"]]=$row["min_lot"];
+ $prov[$row["id"]]=$row["provider_id"];
+ $productsIdArray[$row["provider_id"]][$row["id"]]=$row["name"];
+ if(!empty($row["colors"])) $products_colors[$row["id"]]=explode(";",$row["colors"]);
+ $k++;
+}
+
+$division=array(); //division_summ =50
+$data=$db::getRows("SELECT product_id,store_id,color,value FROM store_orders_fields_data
+WHERE order_id=? AND store_id!='' and field_name='division_summ'",[$OrderId]);
+$ColorsCnt = [];
+$dataFiedlsValuesColorsCnt = [];
+foreach($data as $row) {
+ if(empty($row["color"])) $row["color"]="NULL";
+ if(empty($row["store_id"])) $row["store_id"]="NULL";
+ $dataFiedlsValues[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["value"];
+ if($row["store_id"]!="NULL") {
+ $ColorsCnt[$row["product_id"]] +=$row["value"];
+ $dataFiedlsValuesColorsCnt[$row["product_id"]][$row["color"]] +=$row["value"]; }
+}
+
+
+$division=array();
+$data=$db::getRows("SELECT product_id,store_id,color,value FROM store_orders_fields_data
+WHERE order_id=? AND store_id!='' and field_name='division_hand'",[$OrderId]);
+foreach($data as $row) {
+ if(empty($row["color"])) $row["color"]="NULL";
+ if(empty($row["store_id"])) $row["store_id"]="NULL";
+ $dataHand[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["value"];
+ if($row["store_id"]!="NULL") {
+ $dataHand[$row["product_id"]][$row["color"]] +=$row["value"]; }
+}
+
+
+
+
+
+$quantity_warehouseman_fact=array();
+$data=$db::getRows("SELECT product_id,store_id,color,value FROM store_orders_fields_data
+WHERE order_id=? AND store_id='' and field_name='quantity_warehouseman_fact'",[$OrderId]);
+foreach($data as $row) {
+ if(empty($row["color"])) $row["color"]="NULL";
+ if(empty($row["store_id"])) $row["store_id"]="NULL";
+ $quantity_warehouseman_fact[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["value"];
+
+ if($row["store_id"]=="NULL") {
+ $dataColor[$row["product_id"]][$row["color"]] +=$row["value"];
+ }
+}
+
+
+$colorPercent=array();
+$data=$db::getRows("SELECT product_id,store_id,color,value,field_name FROM store_orders_fields_data
+WHERE order_id=? AND store_id!='' and color!='' and field_name in('color_percent','division_hand')",[$OrderId]);
+foreach($data as $row) {
+ if($row["store_id"]!="NULL") {
+ if($row["field_name"]=="color_percent") $colorPercent[$row["product_id"]][$row["store_id"]][$row["color"]]=round($row["value"]);
+ if($row["field_name"]=="division_hand") $divisionHand[$row["product_id"]][$row["store_id"]][$row["color"]]=round($row["value"]);
+
+
+ }
+}
+
+
+
+echo'<div id="edit_div"></div><div class="table-responsive">
+<table class="table-hover zak"><thead><tr class="zg"><th class="td_product">наименование</th><th><b>мин-ый лот деления шт.</b></th>';
+
+$head="";
+foreach($sortStore as $storeId) {
+ echo'<th style="background:'.$kustBackground[$kustArrayReverse[$storeId]].'"><b>'.$storesAll[$storeId].'</b></th>';
+ $head .='<td style="background:'.$kustBackground[$kustArrayReverse[$storeId]].'"><b>'.$storesAll[$storeId].'</b></td>';
+}
+if($printSumm==1) echo'<th><b>итого</b></th><th><b>куплено</b></th><th><b>разница</b></th>';
+
+
+echo'</tr></thead><tbody>';
+
+
+$i=0;
+foreach($products as $productId =>$nameProduct) {
+//echo $nameProduct;
+ if(!empty($ColorsCnt[$productId]) and $quantity_warehouseman_fact[$productId]["NULL"]["NULL"]>0) {
+
+ if($i==20) { echo'<tr class="zg"><td class="td_product">наименование</td>
+<th><b>мин-ый лот деления шт.</b></th>'.$head.'';
+
+
+ if($printSumm==1) echo'<th><b>итого</b></th><th><b>куплено</b></th><th><b>разница</b></th>';
+
+ echo'</tr>'; $i=0; }
+
+
+ echo'<tr id="tr__'.$productId.'" class="trproduct"';
+ echo'><td class="td_product producted"><span class="fs-6"><a href="/shipment/divisionPrintEditProduct/?productId='.$productId.'&id='.$OrderId.'" target=new>'.$nameProduct.'</a></span> ';
+ if(!empty($products_colors[$productId]) and $ColorsCnt[$productId]>0 and empty($printColor)) echo' <span class="btn btn-warning btn-sm"
+ onclick="$(\'.tr__'.md5($productId).'\').toggle();">+ цвета</span>';
+ echo' </td><td>'.$productsMinLot[$productId].'</td>';
+
+ $divisionCnt=0;
+ foreach($sortStore as $storeId) {
+ $value=ceil($dataFiedlsValues[$productId][$storeId]["NULL"]);
+ $divisionCnt=$divisionCnt + $value;
+ if(empty($value)) $value="";
+ echo'<td class="kust'.$kustArrayReverse[$storeId].'">'.$value.'';
+
+ if(!empty($dataHand[$productId][$storeId]["NULL"]) and $printHand==1) echo'<sup style="color:green; font-size:0.5rem">'.intval($dataHand[$productId][$storeId]["NULL"]).'</sup>';
+ echo'</td>';
+ }
+
+ if($printSumm==1) {
+ echo'<td>'.intval($divisionCnt).'</td>';
+
+ echo'<td>'.intval($quantity_warehouseman_fact[$productId]["NULL"]["NULL"]).'</td>';
+ $r2=$quantity_warehouseman_fact[$productId]["NULL"]["NULL"]-$divisionCnt;
+
+ echo'<td '; if($r2!=0) echo' class="bg-danger"'; echo'>'.$r2.'</td>';
+ }
+ $colspan=count($sortStore)+1;
+ echo'</tr>';
+
+//$ostatok[$productId]=$quantity_warehouseman_fact[$productId]["NULL"]["NULL"];
+
+ if($printColor==1) {
+//<tr style="display:none" id="tr_'.md5($productId).'"><td colspan='.$colspan.' class="text-left lf">'.$autoTextArr.'</td></tr>
+ $kk=0;
+// цвета
+ foreach($products_colors[$productId] as $colorId => $colorName) {
+ $colorName=trim($colorName);
+ $colorName2=trim(str_replace(['\\','/'],['',''],$colorName));
+ if(1)//if($dataFiedlsValuesColorsCnt[$productId][$colorName2]>0)
+ {
+
+
+
+ /*
+ echo'<tr '; if($printColor!=1) echo'style="display:none;"';
+ echo' class="tr__'.md5($productId).' ';
+
+ // если не завезли такой цвет
+ if(empty($dataColor[$productId][$colorName])) { echo' bg-danger'; }echo'" ';
+
+
+ if(empty($dataColor[$productId][$colorName])) { echo' style="opacity:0.4"'; }
+ echo'>
+ <td class="tr">'.$colorName.' ('.$dataColor[$productId][$colorName].' шт.) в %';
+
+
+ echo'</td><td></td>';
+ $colorCounter=0;
+ foreach($sortStore as $storeId) {
+ $value=ceil($dataFiedlsValues[$productId][$storeId][$colorName2]);
+
+ $value=round(100*$colorPercent[$productId][$storeId][$colorName2]);
+
+ // if(!empty($value)) $value .="%";
+
+ if(empty($value)) $value="";
+
+
+ $value_real=ceil($dataFiedlsValues[$productId][$storeId]["NULL"]);
+ $newcolorcnt=$value_real*($value/100);
+
+ // $newcolorcnt=$dataColor[$productId][$colorName]*($value/100);
+
+ $colorcnt=ceilCoefficient($newcolorcnt,$productsMinLot[$productId]);
+ $colorData[$productId][$storeId][$colorName2]=$colorcnt;
+
+ $colorCounter +=$colorcnt;
+
+ echo'<td class="kust'.$kustArrayReverse[$storeId].'" title="'.$value_real.' -> '.$value.'%">'.$colorcnt.'';
+
+ if(!empty($value) and $printPercentMatrix==1) echo'<br>
+ <small style="color:green">'.$value.'%</small>';
+
+ echo'
+ </td>';
+ }
+
+
+ if($printSumm) {
+
+ $colorDifference=$colorCounter-$dataColor[$productId][$colorName];
+ $znak="";
+ if($colorCounter>$dataColor[$productId][$colorName]) $znak="+";
+
+ $difference[$productId][$colorName]=$colorDifference;
+
+
+ echo'<td>'.$colorCounter.'</td><td>'.$dataColor[$productId][$colorName].'</td>
+ <td '; if($colorDifference!=0) echo' class="bg-danger"'; echo'>'.$znak.''.$colorDifference.'</td>';
+
+ }
+
+
+ echo'</tr>';
+
+ */
+
+
+////////////// class="bg-secondary"
+
+
+ $colorAllcnt=0;
+ if(!empty($dataColor[$productId][$colorName])) {
+ echo'<tr><td class="tr">'.$colorName.' ('.$dataColor[$productId][$colorName].' шт.)</td><td></td>';
+ $ColorsCounter[$productId]++;
+ $foreachBegin=$difference[$productId][$colorName];
+ $minLot=$productsMinLot[$productId];
+ $newHand=[];
+ foreach($sortStore as $storeId) {
+ //$colorData[$productId][$storeId][$colorName2]
+ if($colorData[$productId][$storeId][$colorName]>0 and $colorData[$productId][$storeId][$colorName]>=$minLot) {
+ if($foreachBegin>0) {
+ $foreachBegin -=$minLot;
+ $newHand[$storeId] +=-$minLot;
+
+
+
+ } else break;
+ }
+
+
+ }
+
+
+
+ foreach($sortStore as $storeId) {
+ $newColorInt=$colorData[$productId][$storeId][$colorName]-abs($newHand[$storeId]);
+
+ if(isset($divisionHand[$productId][$storeId][$colorName])) $newColorInt=$divisionHand[$productId][$storeId][$colorName];
+
+ $ostatok[$productId][$storeId] +=$newColorInt; //'.$newHand[$storeId].'= $(\'#input_division_hand'.$storeId.''.$productId.''.md5($colorName).'\').toggle();
+ echo'<td><span onclick="ShowInput(\'division_hand\',\''.$storeId.'\',\''.$productId.'\',\''.$colorName.'\',\''.md5($colorName).'\',\''.$productsMinLot[$productId].'\',\''.$newColorInt.'\')"
+ id="division_hand'.$storeId.''.$productId.''.md5($colorName).'">'.$newColorInt.'</span>
+
+ </td>';
+
+ $colorAllcnt +=$newColorInt;
+
+ // <input style="display:none;" type=number value="'.$newColorInt.'" onchange="ajaxEditColor(\'division_hand\',\''.$productId.'\',\''.$storeId.'\',\''.$colorName.'\',\''.md5($colorName).'\');" class="" id="input_division_hand'.$storeId.''.$productId.''.md5($colorName).'">
+// <sup>'.$store_planogram[$productId][$storeId][$colorName]["min"].'-'.$store_planogram[$productId][$storeId][$colorName]["max"].'</sup>
+ }
+
+
+ if($printSumm) {
+
+//$colorDifference=$colorCounter-$dataColor[$productId][$colorName];
+ $znak="";
+
+
+ $difcolor=$dataColor[$productId][$colorName]-$colorAllcnt;
+
+//if($colorCounter>$dataColor[$productId][$colorName]) $znak="+"; '.$colorCounter.' '.$dataColor[$productId][$colorName].'
+ echo'<td>'.$colorAllcnt.'</td><td>'.$dataColor[$productId][$colorName].'</td>
+<td '; if($difcolor!=0) echo' class="bg-danger"'; echo'>'.$difcolor.'</td>';
+
+ }
+
+ echo'</tr>';
+ }
+/////////////////
+
+ }
+
+
+ }// end color
+
+
+//////////////
+
+
+ if(!empty($ColorsCounter[$productId])) {
+ echo'<tr class="bg-success"><td class="tr">остаток</td><td></td>';
+ foreach($sortStore as $storeId) {
+
+
+ $ost=$dataFiedlsValues[$productId][$storeId]["NULL"] - $ostatok[$productId][$storeId];
+ //'.$ostatok[$productId][$storeId].'
+ echo'<td class="';
+ if($ost==0) echo'bg-success';
+ elseif($ost>0) echo'bg-indigo';
+ elseif($ost<0) echo'bg-danger';
+ echo'">'.$ost.'</td>';
+ }
+
+
+ if($printSumm) {
+
+ echo'<td></td><td></td>
+<td '; if($colorDifferenc1) echo' class="bg-danger"'; echo'></td>';
+
+ }
+
+ echo'</tr>';
+ }
+/////////////////
+
+
+
+
+
+ } // end if color
+
+
+
+ }
+
+
+
+}
+
+
+echo'</tbody></table></div>';
+//var onch=\'onchange="ajaxEditColor( \'\'+name_eng+\'\' , \'\'+store_id+\'\', \'\'+product_id+\'\', \'\'+color+\'\', \'\'+colormd5+\'\');" class="" id="input_\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\'">\');"\';
+
+
+// $(\'#\'+name_id).after(\'<input type=number value="'.$newColorInt.'" onchange="ajaxEditColor(\'\'+name_eng+\'\',\'\'+product_id+\'\',\'\'+store_id+\'\',\'\'+color+\'\',\'\'+colormd5+\'\');" class="" id="input_\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\'">\');
+// class="" id="input_\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\'"
+$_CONFIG["jscss"] .='
+
+
+
+<script>
+
+function editz(name_eng)
+{
+
+alert(\' \'+name_eng+\'\');
+}
+
+
+function ajaxEditColor(name_eng,store_id,product_id,color,colormd5)
+{
+
+var v =$(\'#input_\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\'\').val();
+var name_id=\'input_\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\'\';
+
+
+
+
+$.ajax({
+ url: \'/shipment/ajaxEditFieldValue/\',
+ method: \'post\',
+ dataType: \'html\',
+ data: { id: '.$OrderId.',
+ name_eng: name_eng,
+ store_id: store_id,
+ product_id: product_id,
+ color: color,
+ value: v},
+ success: function(data){
+ $(\'#\'+name_id+\'\').after(\'<span class="okk">\'+data+\'</span>\');
+ $(\'#\'+name_id+\'\').addClass(\'greener\');
+ }
+
+});
+
+setTimeout(function(){$(\'.okk\').remove();$(\'#\'+name_id+\'\').removeClass(\'greener\');}, 3000);
+
+}
+
+
+function ShowInput(name_eng,store_id,product_id,color,colormd5,step,value) {
+var name_id=\'\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\'\';
+
+
+if($(\'#\'+name_id+\'\').html()==value) {
+$(\'#\'+name_id+\'\').html(\'<input type=number class="editColor" onchange=ajaxEditColor("\'+name_eng+\'","\'+store_id+\'","\'+product_id+\'","\'+color+\'","\'+colormd5+\'") id=input_\'+name_eng+\'\'+store_id+\'\'+product_id+\'\'+colormd5+\' name=colorHand[\'+store_id+\'][\'+product_id+\'][\'+color+\'] value="\'+value+\'" step="\'+step+\'">\');
+}
+
+}
+
+</script>
+
+<style>
+.zak tbody tr:hover:not(.no-hover) td{background:#cdcdcd}
+.zak> thead> tr>th, .zak tr.zg th{font-size:0.7rem;min-width:30px;max-width:40px;text-align:center; font-weight:normal;overflow:hidden}
+.zak> thead> tr>th b,.zak> thead> tr>td 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;}
+table.zak thead th,table.zak tr.zg th th,table.zak tr.zg td td { vertical-align: bottom; line-height: normal;}
+table.zak thead b, table.zak tbody 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;}
+.app-content .side-app { padding: 25px 0.5rem 0 0.5rem;}
+.zak tbody tr td.td_product,.zak td.td_product {text-align:right;}
+.zak td.td_product:hover {background:#fff;}
+.zak tr td.pr,.zak tr td.ost{text-align:center;}
+.zak tr td.pr{background:#ddd}
+.zak tr td.ost{background:#e6e6e6}
+.zak td{text-align:center; vertical-align: bottom;}
+.zak td.lf{text-align:left; background:#fff}
+.zak td.tr{text-align:right;}
+.zak td, .zak thead th{color:#000;}
+.zak tr.trproduct td{font-size:1rem;font-weight:bold;}
+
+
+input.greener{border:2px green solid;}
+input.editColor{width:auto;max-width:70px;}
+</style>';
+
+include_once dirname(__DIR__, 2) . '/templates/bottom_light.php';
+
+