wugg 2 years ago
parent
commit
7c5acc075d
1 changed files with 134 additions and 150 deletions
  1. 134 150
      app/admin/controller/Reorder.php

+ 134 - 150
app/admin/controller/Reorder.php

@@ -106,22 +106,9 @@ class Reorder extends Base
                 ActionLog::logAdd($this->post['token'],$stn,"XSTHD",$in['status'],$in);
                 $process=["order_code"=>$returnCode,"order_id"=>$create,"order_status"=>$in['status'],"order_type"=>'XSTHD',"before_status"=>0];
                 ProcessOrder::AddProcess($this->post['token'],$process);
-
                 //维护台账信息
                 Db::execute("UPDATE `wsm_standing_book` SET `returnGoodCode`=CONCAT(IFNULL(`returnGoodCode`,''),',{$returnCode}'),`updatetime`='" . date('Y-m-d H:i:s') . "' WHERE `orderCode`='{$ordeCode}'");
 
-//                $rs = Db::name('standing_book')->where('orderCode', $ordeCode)->order('returnGoodCode')->find();
-//                if (!empty($rs)) {
-//                    if ($rs['returnGoodCode'] == '') Db::name('standing_book')->where('id', $rs['id'])->update(["returnGoodCode" => $returnCode, "updatetime" => date("Y-m-d H:i:s")]);
-//                    else {
-//                        unset($rs['id']);
-//                        $rs['standBookNo'] = makeNo('IO');
-//                        $rs['addtime'] = $rs['updatetime'] = date("Y-m-d H:i:s");
-//                        $rs['returnGoodCode'] = $returnCode;
-//                        Db::name('standing_book')->insert($rs);
-//                    }
-//                }
-
                 if($returnadr!=""){
                     $inf=[];
                     foreach ($returnadr as $val){
@@ -244,89 +231,100 @@ class Reorder extends Base
                         "order_status" =>$order['status'],"before_status"=>$lor
                     ]);
 
-                    $ordernum = Db::name("order_num")->where(['orderCode' => $ordeCode])->find();
-                    if ($ordernum == false) {
-                        Db::rollback();
-                        return error_show(1005, '未找到关联采购单');
-                    }
-                    $ordernum['send_num'] -= $thnum;
-                    $orderup = Db::name("order_num")->save($ordernum);
-                    if ($orderup == 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, '未找到采购单数据');
-                    }
-                    $cgd['th_fee'] += round($cgd['good_price'] * $thnum, 2);
-                    $cgd['th_num'] += $thnum;
-                    $cgd['updatetime'] = date("Y-m-d H:i:s");
-                    $cgdup = Db::name("purchease_order")->save($cgd);
-                    if ($cgdup == false) {
-                        Db::rollback();
-                        return error_show(1005, '采购单数据更新失败');
-                    }
-                    if ($cgd['bkcode'] != "") {
-                        $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "order_source" =>0, "is_del" => 0])
-                            ->find();
-                        if ($bk == false) {
-                            Db::rollback();
-                            return error_show(1005, '未找到备库单数据');
-                        }
-                        $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
-                        if ($orderbk == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单未完全入库');
-                        }
-                        $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" =>
-                                1, "is_del" => 0])->where("order_source","<>",0)->field("sum(send_num)-sum(th_num) as num")
-                            ->find();
+//                    $ordernum = Db::name("order_num")->where(['orderCode' => $ordeCode])->find();
+//                    if ($ordernum == false) {
+//                        Db::rollback();
+//                        return error_show(1005, '未找到关联采购单');
+//                    }
+//                    $ordernum['send_num'] -= $thnum;
+//                    $orderup = Db::name("order_num")->save($ordernum);
+//                    if ($orderup == 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, '未找到采购单数据');
+//                    }
+//                    $cgd['th_fee'] += round($cgd['good_price'] * $thnum, 2);
+//                    $cgd['th_num'] += $thnum;
+//                    $cgd['updatetime'] = date("Y-m-d H:i:s");
+//                    $cgdup = Db::name("purchease_order")->save($cgd);
+//                    if ($cgdup == false) {
+//                        Db::rollback();
+//                        return error_show(1005, '采购单数据更新失败');
+//                    }
+//                    if ($cgd['bkcode'] != "") {
+//                        $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "order_source" =>0, "is_del" => 0])
+//                            ->find();
+//                        if ($bk == false) {
+//                            Db::rollback();
+//                            return error_show(1005, '未找到备库单数据');
+//                        }
+//                        $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
+//                        if ($orderbk == false) {
+//                            Db::rollback();
+//                            return error_show(1005, '备库单未完全入库');
+//                        }
+//                        $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" =>
+//                                1, "is_del" => 0])->where("order_source","<>",0)->field("sum(send_num)-sum(th_num) as num")
+//                            ->find();
+//
+//                        $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
+//                        $orderbk['merge_num'] = $merge_num['num'];
+//                        $orderbk['updatetime'] = date("Y-m-d H:i:s");
+//                        $orderbkup = Db::name("order_bk")->save($orderbk);
+//                        if ($orderbkup == false) {
+//                            Db::rollback();
+//                            return error_show(1005, '备库单库存数据释放失败');
+//                        }
+//                    }
 
-                        $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
-                        $orderbk['merge_num'] = $merge_num['num'];
-                        $orderbk['updatetime'] = date("Y-m-d H:i:s");
-                        $orderbkup = Db::name("order_bk")->save($orderbk);
-                        if ($orderbkup == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单库存数据释放失败');
-                        }
-                    }
-                    $stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'wsm_code' => $cgd['wsm_code']])
+					$saleinfo=Db::name("sale_info")->where([["orderCode","=",$ordeCode],["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 (empty($stock)) {
-                        $stock = [
-                            "spuCode" => $order['good_code'],
-                            "wsm_code" => $cgd['wsm_code'],
-                            "usable_stock" => 0,
-                            "wait_out_stock" => 0,
-                            "wait_in_stock" => 0,
-                            "total_stock" => 0,
-                            "addtime" => date("Y-m-d H:i:s"),
-                            "updatetime" => date("Y-m-d H:i:s"),
-                        ];
-                    }
-//                    if($stock['presale_stock']>0){
-//                            if($stock['presale_stock']>=$thnum){
-//                                $stock['presale_stock']-=$thnum;
-//                            }else{
-//                                $stock['presale_stock']=0;
-//                                $stock['usable_stock']+=$thnum;
-//                                $stock['wait_out_stock'] -= ($thnum -$stock['presale_stock']);
-//                            }
-//                    }else{
-                        $stock['usable_stock']+=$thnum;
-                        $stock['wait_out_stock'] -= $thnum;
-              //      }
+					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, '可售商品入库失败');
                     }
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
+					$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, '商品批次退货入库失败');
+                    }
+                    $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"=>$ordeCode,
                         "th_type"=>1,
@@ -872,6 +870,7 @@ class Reorder extends Base
                                 return error_show(1005, '可售商品入库失败');
                             }
 
+
                         } else {
                             $orderinfo['th_num'] += $info['num'];
                             if($orderinfo['th_num']==$orderinfo['send_num']&& $orderinfo['wsend_num']==0){
@@ -1182,14 +1181,17 @@ class Reorder extends Base
         }
         $remark =isset($this->post['remark']) &&$this->post['remark']!=''?trim($this->post['remark']) :"";
         $addr =Db::name("order_addr")->where([["orderCode","=",$orderCode],["is_del","=",0]])->select()->toArray();
-         $ordernum = Db::name("order_num")->where(['orderCode' => $orderCode])->find();
-        if ($ordernum == false) {
-        	return error_show(1005, '未找到关联采购单');
-        }
-         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
-        if ($cgd == false) {
-            return error_show(1005, '未找到采购单数据');
+        if($order['is_stock']==0){
+        	 $ordernum = Db::name("order_num")->where(['orderCode' => $orderCode])->find();
+	        if ($ordernum == false) {
+	            return error_show(1005, '未找到关联采购单');
+	        }
+	         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+	        if ($cgd == false) {
+	            return error_show(1005, '未找到采购单数据');
+	        }
         }
+
         if($order['is_stock']==0&&$cgd['send_status']!=1){
         	return error_show(1005, '采购单已发起入库');
         }
@@ -1320,67 +1322,49 @@ class Reorder extends Base
                         "order_status" =>$order['status'],"before_status"=>$lor
                     ]);
 
-                    $ordernum['send_num'] -= $thnum;
-                    $orderup = Db::name("order_num")->save($ordernum);
-                    if ($orderup == false) {
-                        Db::rollback();
-                        return error_show(1005, '关联数据更新失败');
-                    }
-					$cgd['th_fee'] += round($cgd['good_price'] * $thnum, 2);
-                    $cgd['th_num'] += $thnum;
-                    $cgd['updatetime'] = date("Y-m-d H:i:s");
-                    $cgdup = Db::name("purchease_order")->save($cgd);
-                    if ($cgdup == false) {
-                        Db::rollback();
-                        return error_show(1005, '采购单数据更新失败');
-                    }
-					 if ($cgd['bkcode'] != "") {
-                        $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "order_source" =>0, "is_del" => 0])
-                            ->find();
-                        if ($bk == false) {
-                            Db::rollback();
-                            return error_show(1005, '未找到备库单数据');
-                        }
-                        $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
-                        if ($orderbk == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单未完全入库');
-                        }
-                        $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" =>1, "is_del" => 0])->where("order_source","<>",0)->field("sum(send_num)-sum(th_num) as num")
-                            ->find();
-                        $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
-                        $orderbk['merge_num'] = $merge_num['num'];
-                        $orderbk['updatetime'] = date("Y-m-d H:i:s");
-                        $orderbkup = Db::name("order_bk")->save($orderbk);
-                        if ($orderbkup == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单库存数据释放失败');
-                        }
-                    }
-					  $stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'wsm_code' => $cgd['wsm_code']])
+                  	$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 (empty($stock)) {
-                        $stock = [
-                            "spuCode" => $order['good_code'],
-                            "wsm_code" => $cgd['wsm_code'],
-                            "usable_stock" => 0,
-                            "wait_out_stock" => 0,
-                            "wait_in_stock" => 0,
-                            "total_stock" => 0,
-                            "addtime" => date("Y-m-d H:i:s"),
-                            "updatetime" => date("Y-m-d H:i:s"),
-                        ];
-                    }
-                    $stock['usable_stock']+=$thnum;
-                    $stock['wait_out_stock'] -= $thnum;
+					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, '可售商品入库失败');
                     }
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
-                    GoodLog::LogAdd(["id"=>$this->uid,"nickname"=>$this->uname], $good_data, 'XSTHD');
+					$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, '商品批次退货入库失败');
+                    }
+                    $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,