--- /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';
+$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>';
+
+
+
+$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]);
+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 FROM store_orders_fields_data
+WHERE order_id=? AND store_id!='' and color!='' and field_name='color_percent'",[$OrderId]);
+foreach($data as $row) {
+ if($row["store_id"]!="NULL") {
+ $colorPercent[$row["product_id"]][$row["store_id"]][$row["color"]]=$row["value"];
+ }
+}
+
+
+
+echo'<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; !empty($ColorsCnt[$productId]) and
+ if($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">'.$nameProduct.'</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>';
+
+
+
+ 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($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]);
+
+ $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="+";
+
+
+ echo'<td>'.$colorCounter.'</td><td>'.$dataColor[$productId][$colorName].'</td>
+<td '; if($colorDifference!=0) echo' class="bg-danger"'; echo'>'.$znak.''.$colorDifference.'</td>';
+
+ }
+
+
+ echo'</tr>';
+
+ }
+
+
+ }// end color
+ } // end if color
+
+
+
+ }
+
+
+
+}
+
+
+echo'</tbody></table></div>';
+
+
+
+$_CONFIG["jscss"] .='
+<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;}
+</style>';
+
+include_once dirname(__DIR__, 2) . '/templates/bottom_light.php';
+