Browse Source

Merge branch 'version1.5' into dev_wf

wufeng 2 years ago
parent
commit
6bd4a3ab3e

+ 7 - 7
app/admin/controller/After.php

@@ -1252,13 +1252,13 @@ class After extends Base
 		                                }
 
 		                                if( $info['except_code']==1){
-		                                	if($sale['is_stock']==1){
-		                                		$bnin=GoodStockInfo::AddBn($ve['stockid'],$ve['bnCode'],$tempnum);
-				                                if($bnin==false){
-				                                     Db::rollback();
-				                                    return error_show(1005, '可售商品Bn库存数入库失败');
-				                                }
-		                                	}
+//		                                	if($sale['is_stock']==1){
+//		                                		$bnin=GoodStockInfo::AddBn($ve['stockid'],$ve['bnCode'],$tempnum);
+//				                                if($bnin==false){
+//				                                     Db::rollback();
+//				                                    return error_show(1005, '可售商品Bn库存数入库失败');
+//				                                }
+//		                                	}
 				                                $up=Db::name("sale_info")->save($ve);
 				                                if($up==false){
 				                                     Db::rollback();

+ 1 - 0
app/admin/controller/Base.php

@@ -191,6 +191,7 @@ class Base extends \app\BaseController
                     'nake_price' => '',
                     'is_step' => '',
                     'is_online' => '0',
+                    'is_stock' => '1',
                     'status' =>7,//咨询商品待编辑
                     'createrid' =>$good['createrid'],
                     'creater' => $good['creater'],

+ 1 - 1
app/admin/controller/Good.php

@@ -231,7 +231,7 @@ class Good extends Base
         if ($param['exam_status'] !== '') $where[] = ['b.exam_status', "=", $param['exam_status']];
         if ($param['brand_id'] !== "") $where[] = ['a.brand_id', "=", $param['brand_id']];
         $role = $this->checkRole();
-        if (!empty($role['write'])) $where[] = ["a.createrid", "in", $role['write']];
+        if (!empty($role['write'])) $where[] = ["b.createrid", "in", $role['write']];
         if ($param['company_name'] !== '') $where[] = ["a.createrid", 'in', get_company_item_user_by_name($param['company_name'])];
 
         $count = Db::name('platform_youzan')

+ 42 - 4
app/admin/controller/Orderback.php

@@ -442,7 +442,7 @@ class Orderback extends Base
                 return error_show(1004,"未找到销售单数据");
             }
             $spuCode= $info['good_code'];
-            if($sale['order_type']!==1){
+            if($sale['order_type']!=1){
               if($sale['order_type']==3){
 		          $goon = Db::name("good_zixun")->where(["spuCode"=>$sale['good_code'],"is_del"=>0])->find();
 		          $isZx=1;
@@ -464,9 +464,9 @@ class Orderback extends Base
             }
 			$sabebn =Db::name("sale_info")->where([["orderCode",'=',$info['orderCode']],["num",">",0]])->select()->toArray();
             if($param['can_sell_num']!=0&& $param['can_sell_wsm']!=''){
-                    if($sale['is_stock']==1){ //库存品退回原仓库 备库单释放数量 采购单
-                        $param['can_sell_wsm'] = $out['wsm_code'];
-                    }
+//                    if($sale['is_stock']==1){ //库存品退回原仓库 备库单释放数量 采购单
+//                        $param['can_sell_wsm'] = $out['wsm_code'];
+//                    }
                     $stock = Db::name("good_stock")->where(["spuCode"=>$spuCode,'wsm_code'=>$param['can_sell_wsm']])
                     ->find();
                     if(empty($stock)) {
@@ -519,6 +519,25 @@ class Orderback extends Base
                                     return error_show(1005, '可售商品Bn库存数入库失败');
                         		}
                         	}
+                        }else{
+                        	if($sale['order_type']==1){
+                        	 $ordernum = Db::name("order_num")->where(['orderCode' =>$info['orderCode']])->find();
+					        if ($ordernum == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到关联采购单');
+					        }
+					         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+					        if ($cgd == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到采购单数据');
+					        }
+					        $bn =makeNo("BN");
+					        $yp=GoodStockInfo::AddBn($stockid,$bn,$param['can_sell_num'],$cgd['good_price']);
+					        if($yp==false){
+					        	Db::rollback();
+								return error_show(1005, '商品批次退货入库失败');
+					        }
+                        	}
                         }
                 $good_data=['good_log_code'=>$param['thNo'],"stock_id"=> $stockid,"type"=>1,'stock'=>$param['can_sell_num'],"stock_name"=>"usable_stock"];
                 GoodLog::LogAdd($this->post['token'],$good_data,'RKTHD');
@@ -580,6 +599,25 @@ class Orderback extends Base
                                     return error_show(1005, '可售商品Bn库存数入库失败');
                         		}
                         	}
+                        }else{
+	                        if($sale['order_type']==1){
+	                             $ordernum = Db::name("order_num")->where(['orderCode' =>$info['orderCode']])->find();
+						        if ($ordernum == false) {
+						            Db::rollback();
+						            return error_show(1005, '未找到关联采购单');
+						        }
+						         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+						        if ($cgd == false) {
+						            Db::rollback();
+						            return error_show(1005, '未找到采购单数据');
+						        }
+						        $bn =makeNo("BN");
+						        $yp=GoodStockInfo::AddBn($stockid,$bn,$param['defective_num'],$cgd['good_price']);
+						        if($yp==false){
+						            Db::rollback();
+									return error_show(1005, '商品批次退货入库失败');
+						        }
+	                            }
                         }
                 $good_data=['good_log_code'=>$param['thNo'],"stock_id"=>isset($defective['id'])? $defective['id']:Db::name("good_stock")->getLastInsID(),"type"=>1,'stock'=>$param['defective_num'],"stock_name"=>"usable_stock"];
                 GoodLog::LogAdd($this->post['token'],$good_data,'RKTHD');

+ 197 - 63
app/admin/controller/Reorder.php

@@ -285,9 +285,35 @@ class Reorder extends Base
 					$saleinfo=Db::name("sale_info")->where([["orderCode","=",$ordeCode],["num",">",0]])->select()
 					->toArray();
 					if(empty($saleinfo)) {
-						Db::rollback();
-						return error_show(1005, '商品批次数据未找到');
-					}
+						$ordernum = Db::name("order_num")->where(['orderCode' => $ordeCode])->find();
+					        if ($ordernum == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到关联采购单');
+					        }
+					         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+					        if ($cgd == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到采购单数据');
+					        }
+					        $bn =makeNo("BN");
+					        $stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'wsm_code'=>$cgd['wsm_code'],"is_del"=>0,"status"=>1])->find();
+					        if($stock==false){
+					        	Db::rollback();
+								return error_show(1005, '商品库存数据未找到');
+					        }
+					           $stock['usable_stock']+=$thnum;
+		                    $stock['wait_out_stock'] -=$thnum;
+		                    $stock['updatetime'] = date("Y-m-d H:i:s");
+		                    $st_up = Db::name("good_stock")->save($stock);
+		                    if ($st_up == false) {
+		                        return error_show(1005, '可售商品入库失败');
+		                    }
+					        $yp=GoodStockInfo::AddBn($stock['id'],$bn,$thnum,$cgd['good_price']);
+					        if($yp==false){
+					        	Db::rollback();
+								return error_show(1005, '商品批次退货入库失败');
+					        }
+					}else{
 					$tempnum =$thnum;
 					foreach ( $saleinfo as $va){
 					if($tempnum ==0) break;
@@ -330,6 +356,8 @@ class Reorder extends Base
                     $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
                     GoodLog::LogAdd($this->post['token'], $good_data, 'XSTHD');
 					}
+					}
+
 
                     $data=[
                         "orderCode"=>$ordeCode,
@@ -937,15 +965,9 @@ class Reorder extends Base
                     }
 
                     if($orderinfo['is_stock'] == 1 || $info['is_th'] == 0){
-                        $wsmcode = $orderinfo['is_stock'] == 1 ? $cgd['wsm_code'] : $info['return_wsm'];
-                        if ($wsmcode == "") {
-                            Db::rollback();
-                            return error_show(1005, '未找到退货仓库');
-                        }
-                        //::todo 非库存品订单退货 采购单退货 虚拟仓如何减库存
-						$spuCode= $info['good_code'];
-				            if($orderinfo['order_type']!==1){
-				              if($orderinfo['order_type']==3){
+
+                    	if ($orderinfo['order_type']!=1){
+                            if($orderinfo['order_type']==3){
 						          $goon = Db::name("good_zixun")->where(["spuCode"=>$orderinfo['good_code'],"is_del"=>0])->find();
 						          $isZx=1;
 						      }else {
@@ -953,8 +975,12 @@ class Reorder extends Base
 						          $isZx=2;
 						      }
 				              $spuCode = $this->CheckGood($goon,$isZx,$code);
-				            }
-                        $stock = Db::name("good_stock")->where(["spuCode" => $spuCode, 'wsm_code' => $wsmcode])->find();
+                                $wsmcode = $info['return_wsm'];
+		                        if ($wsmcode == "") {
+		                            Db::rollback();
+		                            return error_show(1005, '未找到退货仓库');
+		                        }
+						$stock = Db::name("good_stock")->where(["spuCode" => $spuCode, 'wsm_code' => $wsmcode])->find();
                         if (empty($stock)) {
                             $stock = [
                                 "spuCode" => $spuCode,
@@ -1008,18 +1034,97 @@ class Reorder extends Base
                         		}
                         	}
                         }else{
-								if($orderinfo['order_type']!=1){
-									$bn=makeNo("BN");
-									$bnin=GoodStockInfo::AddBn($stockid,$bn,$info['num'],$cgd['good_price']??0);
-	                                if($bnin==false){
-	                                     Db::rollback();
-	                                    return error_show(1005, '可售商品Bn库存数入库失败');
-	                                }
-								}
+								$bn=makeNo("BN");
+								$bnin=GoodStockInfo::AddBn($stockid,$bn,$info['num'],$cgd['good_price']??0);
+			                    if($bnin==false){
+			                     Db::rollback();
+			                     return error_show(1005, '可售商品Bn库存数入库失败');
+			                    }
                         }
                         $good_data = ['good_log_code' => $info['returnCode'], "stock_id" => $stockid, "type" => 1, 'stock'=> $info['num'], "stock_name" => "usable_stock"];
                         GoodLog::LogAdd($this->post['token'], $good_data, 'XSTHD');
+                    }else{
+						$sabebn =Db::name("sale_info")->where(["orderCode"=>$orderinfo["orderCode"]])->select()->toArray();
+						if(!empty($sabebn)){
+                        	$total_num =$info['num'];
+                        	foreach ($sabebn as $ve){
+                        		$stock = Db::name("good_stock")->where(["spuCode" => $orderinfo['good_code'], 'id' => $ve['stockid']])->find();
+								if($stock==false) {
+									Db::rollback();
+									return error_show(1005, '商品库存数据未找到');
+								}
+                        		$tempnum=0;
+                        		if ($total_num==0) break;
+                        		if($total_num>=$ve['num']){
+                        			$tempnum = $ve['num'];
+                        			$total_num-=$ve['num'];
+                        			$ve['num']=0;
+                        		}else{
+                        		    $tempnum = $total_num;
+                        			$total_num=0;
+                        			$ve['num']-=$total_num;
+                        		}
+							    $stock['usable_stock']+=$tempnum;
+			                    $stock['wait_out_stock'] -=$tempnum;
+			                    $stock['updatetime'] = date("Y-m-d H:i:s");
+			                    $st_up = Db::name("good_stock")->save($stock);
+			                    if ($st_up == false) {
+			                        return error_show(1005, '可售商品入库失败');
+			                    }
+
+                        		$bnin=GoodStockInfo::AddBn($ve['stock_id'],$ve['bnCode'],$tempnum,$ve['origin_price']);
+                        		if($bnin==false){
+                        			 Db::rollback();
+                                    return error_show(1005, '可售商品Bn库存数入库失败');
+                        		}
+                        		$ve['updatetime']=date("Y-m-d H:i:s");
+								$up=Db::name("sale_info")->save($ve);
+                        		if($up==false){
+                        			 Db::rollback();
+                                    return error_show(1005, '可售商品Bn库存数入库失败');
+                        		}
+								$bnin=GoodStockInfo::ReturnBn($info['returnCode'],$ve['id'],$tempnum);
+                        		if($bnin==false){
+                        			 Db::rollback();
+                                    return error_show(1005, '可售商品Bn库存数入库失败');
+                        		}
+                        	}
+                        }else{
+
+								$ordernum = Db::name("order_num")->where(['orderCode' =>$orderinfo["orderCode"]])->find();
+					        if ($ordernum == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到关联采购单');
+					        }
+					         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+					        if ($cgd == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到采购单数据');
+					        }
+					        $bn =makeNo("BN");
+					        $stock = Db::name("good_stock")->where(["spuCode" => $orderinfo['good_code'], 'wsm_code'=>$cgd['wsm_code'],"is_del"=>0,"status"=>1])->find();
+					        if($stock==false){
+					        	Db::rollback();
+								return error_show(1005, '商品库存数据未找到');
+					        }
+					        $stock['usable_stock']+=$info['num'];
+		                    $stock['wait_out_stock'] -=$info['num'];
+		                    $stock['updatetime'] = date("Y-m-d H:i:s");
+		                    $st_up = Db::name("good_stock")->save($stock);
+		                    if ($st_up == false) {
+		                        return error_show(1005, '可售商品入库失败');
+		                    }
+					        $yp=GoodStockInfo::AddBn($stock['id'],$bn,$info['num'],$cgd['good_price']);
+					        if($yp==false){
+					        	Db::rollback();
+								return error_show(1005, '商品批次退货入库失败');
+					        }
+
+                        }
                     }
+                }
+
+
                     $data=[
                         "orderCode"=>$info['orderCode'],
                         "th_type"=>1,
@@ -1349,50 +1454,79 @@ class Reorder extends Base
 
                   	$saleinfo=Db::name("sale_info")->where([["orderCode","=",$orderCode],["num",">",0]])->select()->toArray();
 					if(empty($saleinfo)) {
-						Db::rollback();
-						return error_show(1005, '商品批次数据未找到');
-					}
-					$tempnum =$thnum;
-					foreach ( $saleinfo as $va){
-					if($tempnum ==0) break;
-					$stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'id' => $va['stockid']])->find();
-					if($stock==false) {
-						Db::rollback();
-						return error_show(1005, '商品库存数据未找到');
-					}
-					if($va['num']>=$tempnum) {
-						$tnm = $tempnum;
-						$va['num']-= $tempnum;
-						$tempnum=0;
+							$ordernum = Db::name("order_num")->where(['orderCode' => $orderCode])->find();
+					        if ($ordernum == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到关联采购单');
+					        }
+					         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+					        if ($cgd == false) {
+					        	Db::rollback();
+					            return error_show(1005, '未找到采购单数据');
+					        }
+					        $bn =makeNo("BN");
+					        $stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'wsm_code'=>$cgd['wsm_code'],"is_del"=>0,"status"=>1])->find();
+					        if($stock==false){
+					        	Db::rollback();
+								return error_show(1005, '商品库存数据未找到');
+					        }
+					        $stock['usable_stock']+=$thnum;
+		                    $stock['wait_out_stock'] -=$thnum;
+		                    $stock['updatetime'] = date("Y-m-d H:i:s");
+		                    $st_up = Db::name("good_stock")->save($stock);
+		                    if ($st_up == false) {
+		                        return error_show(1005, '可售商品入库失败');
+		                    }
+					        $yp=GoodStockInfo::AddBn($stock['id'],$bn,$thnum,$cgd['good_price']);
+					        if($yp==false){
+					        	Db::rollback();
+								return error_show(1005, '商品批次退货入库失败');
+					        }
+
 					}else{
-						$tnm = $va['num'];
-						$tempnum -=$va['num'];
-						$va['num'] =0;
+						$tempnum =$thnum;
+					foreach ($saleinfo as $va){
+						if($tempnum ==0) break;
+						$stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'id' => $va['stockid']])->find();
+						if($stock==false) {
+							Db::rollback();
+							return error_show(1005, '商品库存数据未找到');
+						}
+						if($va['num']>=$tempnum) {
+							$tnm = $tempnum;
+							$va['num']-= $tempnum;
+							$tempnum=0;
+						}else{
+							$tnm = $va['num'];
+							$tempnum -=$va['num'];
+							$va['num'] =0;
+						}
+	                    $stock['usable_stock']+=$tnm;
+	                    $stock['wait_out_stock'] -=$tnm;
+	                    $stock['updatetime'] = date("Y-m-d H:i:s");
+	                    $st_up = Db::name("good_stock")->save($stock);
+	                    if ($st_up == false) {
+	                        return error_show(1005, '可售商品入库失败');
+	                    }
+						$ps = GoodStockInfo::AddBn($va['stockid'],$va['bnCode'],$tnm);
+	                     if ($ps == false) {
+	                        return error_show(1005, '商品批次退货入库失败');
+	                    }
+	                     $ret = GoodStockInfo::ReturnBn($returnCode,$va['id'],$tnm);
+	                     if ($ret == false) {
+	                        return error_show(1005, '商品批次退货入库失败');
+	                    }
+	                      $va['updatetime']=date("Y-m-d H:i:s");
+	                     $sal= Db::name("sale_info")->save($va);
+						  if ($sal == false) {
+	                        return error_show(1005, '商品批次退货入库失败');
+	                    }
+						  $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 1, 'stock' => $tnm, "stock_name" => "usable_stock"];
+						  $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 2, 'stock' => $tnm, "stock_name" => "wait_out_stock"];
+	                       GoodLog::LogAdd($this->post['token'], $good_data, 'XSTHD');
 					}
-                    $stock['usable_stock']+=$tnm;
-                    $stock['wait_out_stock'] -=$tnm;
-                    $stock['updatetime'] = date("Y-m-d H:i:s");
-                    $st_up = Db::name("good_stock")->save($stock);
-                    if ($st_up == false) {
-                        return error_show(1005, '可售商品入库失败');
-                    }
-					$ps = GoodStockInfo::AddBn($va['stockid'],$va['bnCode'],$tnm);
-                     if ($ps == false) {
-                        return error_show(1005, '商品批次退货入库失败');
-                    }
-                     $ret = GoodStockInfo::ReturnBn($returnCode,$va['id'],$tnm);
-                     if ($ret == false) {
-                        return error_show(1005, '商品批次退货入库失败');
-                    }
-                      $va['updatetime']=date("Y-m-d H:i:s");
-                     $sal= Db::name("sale_info")->save($va);
-					  if ($sal == false) {
-                        return error_show(1005, '商品批次退货入库失败');
-                    }
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
-                    GoodLog::LogAdd($this->post['token'], $good_data, 'XSTHD');
 					}
+
                     $data=[
                         "orderCode"=>$orderCode,
                         "th_type"=>1,

+ 8 - 2
app/admin/controller/Sale.php

@@ -3865,7 +3865,13 @@ class Sale extends Base
 	                      Db::rollback();
 	                      return error_show(1004,"库存bn库存数更新失败");
 	                 }
-
+					$outsend['bnCode']=$bn_code;
+					$outsend['updatetime']=date("Y-m-d H:i:s");
+					$ps=Db::name("order_send")->save($outsend);
+					if($ps==false){
+						Db::rollback();
+	                    return error_show(1004,"库存bn库存数更新失败");
+					}
 	                 $good_data[] = ['good_log_code' => $outCode, "stock_id" => $stokc['id'], "type" => 2, 'stock' => $outinfo['send_num'], "stock_name" => "wait_out_stock"];
 	                 GoodLog::LogAdd(['id' => $uid, 'nickname' => $uname], $good_data, "CKD");
                 }else{
@@ -4479,7 +4485,7 @@ class Sale extends Base
                 $sale_infos = Db::name("sale")
                     ->where('orderCode', $order_out_infos[$value['outCode']]['orderCode'])
                     ->where('is_del', 0)
-                    ->column('id,send_num,wsend_num,status,good_code,order_source,order_type', 'orderCode');
+                    ->column('id,send_num,wsend_num,status,good_code,order_source,order_type,apply_id,apply_name', 'orderCode');
 
 
                 if (!isset($sale_infos[$order_out_infos[$value['outCode']]['orderCode']])) throw new Exception($value['outCode'] . '该发货单对应的销售单未找到');

+ 1 - 1
app/admin/model/GoodStockInfo.php

@@ -60,7 +60,7 @@ class GoodStockInfo extends Model
 		if(empty($arr)) throw new Exception("库存批次数量不足","1006");
 		$list=[];
 		foreach ($arr as $item) {
-			$stock = self::name("good_stock")->where(["id"=>$item['stockid']])->field("id,usable_stock,wait_out_stock")->find();
+			$stock = self::name("good_stock")->where(["id"=>$item['stockid']])->field("id,usable_stock,wait_out_stock")->find()->toArray();
 			if($num<=0) break;
 			$update=[];
 		    if($item['balance_num']<=$num){