Selaa lähdekoodia

Merge branch 'wugg-dev' of wugg/phpstock into version1.5

wugg 2 vuotta sitten
vanhempi
commit
46d1dbef88

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

@@ -1248,13 +1248,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'],

+ 38 - 0
app/admin/controller/Orderback.php

@@ -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($stock['id'],$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($defective['id'],$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,
@@ -905,15 +933,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 {
@@ -921,8 +943,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,
@@ -976,18 +1002,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,
@@ -1317,50 +1422,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,