Przeglądaj źródła

Merge branch 'plm' of ssh://192.168.10.210:10022/wugg/stock into plm

wugg 3 lat temu
rodzic
commit
e516eba45f
1 zmienionych plików z 101 dodań i 39 usunięć
  1. 101 39
      app/admin/controller/Allot.php

+ 101 - 39
app/admin/controller/Allot.php

@@ -64,7 +64,6 @@ class Allot extends BaseController
             $value['rcode'] =isset($dc['code']) ? $dc['code']:"";
             $data []=$value;
         }
-
         return app_show(0,"获取成功",['count'=>$count,'list'=>$data]);
     }
     public function create(){
@@ -86,7 +85,6 @@ class Allot extends BaseController
 //        if($allot_code==""){
 //            return error_show(1002,"调拨编号不能为空");
 //        }
-
     $apply_id =GetUserInfo($token);
         if(empty($apply_id)||$apply_id['code']!=0){
             return error_show(1002,"申请人数据不存在");
@@ -137,6 +135,9 @@ class Allot extends BaseController
                         Db::rollback();
                         return error_show(1003, "商品不能为空");
                         }
+                    if($value['allot_num']>$st['usable_stock']){
+                        return error_show(2000,"库存数量不足");
+                    }
                         $temp = [];
                         $temp['good_name'] = $st['good_name'];
                         $temp['allot_code'] =$allot_code;
@@ -146,16 +147,18 @@ class Allot extends BaseController
                         $temp['error_num'] = 0;
                         $temp['error_remark'] = "";
                         $temp['stock_num'] = 0;
+                        $temp['error_code']="";
+                        $temp['good_num']=$st['usable_stock'];
                         $temp['addtime'] = date("Y-m-d H:i:s");
                         $temp['updatetime'] = date("Y-m-d H:i:s");
                         $dm[]=$temp;
-                        $io = Db::name('allot_info')->insertAll($dm);
-                       //var_dump(Db::name('allot_info')->getLastSql());
-                        if ($io) {
-                            DB::commit();
-                            return error_show(0, "调拨创建成功");
-                        }
                     }
+                $io = Db::name('allot_info')->insertAll($dm);
+                //var_dump(Db::name('allot_info')->getLastSql());
+                if ($io) {
+                    DB::commit();
+                    return error_show(0, "调拨创建成功");
+                }
             }
             Db::rollback();
             return error_show(1002,"调拨创建失败");
@@ -173,12 +176,29 @@ class Allot extends BaseController
         if(empty($str)){
             return error_show(1003,"未找到调拨数据");
         }
-        $stv = Db::name('warehouse_info')->where(['supplierNo'=>$str['wsm_out'],'is_del'=>0])->field('supplierNo,wsm_code')->find();
-        $vr = Db::name('supplier')->where(['code'=>$stv['supplierNo'],'is_del'=>0])->field('name,code')->find();
-        $st = Db::name('warehouse_info')->where(['supplierNo'=>$str['wsm_in'],'is_del'=>0])->field('supplierNo,wsm_code')->find();
+        $stv = Db::name('warehouse_info')->where(['wsm_code'=>$str['wsm_out'],'is_del'=>0])->field('supplierNo,wsm_code,name')->find();
+        if(empty($stv)){
+            return error_show(1002,"未找到仓库数据");
+        }
+        $vr = Db::name('supplier')->where(['code'=>$stv['supplierNo'],'is_del'=>0])->field('name,code as rcode')->find();
+        if(empty($vr)){
+            return error_show(1001,"未找到供应商数据");
+        }
+        $st = Db::name('warehouse_info')->where(['wsm_code'=>$str['wsm_in'],'is_del'=>0])->field('supplierNo,wsm_code,name')->find();
+        if(empty($st)){
+            return error_show(1003,"未找到仓库数据");
+        }
         $var = Db::name('supplier')->where(['code'=>$st['supplierNo'],'is_del'=>0])->field('name,code')->find();
+        if(empty($var)){
+            return error_show(1004,"未找到供应商数据");
+        }
+        // var_dump(Db::name('supplier')->getLastSql());
         $str ['wsm_out_name']=$vr['name'];
         $str ['wsm_in_name']=$var['name'];
+        $str ['ckc_name']=$stv['name'];
+        $str ['ckr_name']=$st['name'];
+        $str['out_code']=$vr['rcode'];
+        $str['in_code']=$var['code'];
 //        $str = Db::name('allot_stock')->alias('a')->join('warehouse_info b',"b.wsm_code=a.wsm_out","left")
 //            ->join('supplier c',"c.code=b.supplierNo","left")->field("c.name,c.code,")
 //            ->where(['a.id'=>$id,'a.is_del'=>0])->find();
@@ -203,9 +223,7 @@ class Allot extends BaseController
         }
         $allot_code = isset($this->post['allot_code']) && $this->post['allot_code'] !=="" ? trim($this->post['allot_code']) :"";
         $post_name = isset($this->post['post_name']) && $this->post['post_name'] !=="" ? trim($this->post['post_name']) :"";
-
         $post_code = isset($this->post['post_code']) && $this->post['post_code'] !=="" ? trim($this->post['post_code']) :"";
-
        $apply_id =GetUserInfo($token);
         if(empty($apply_id)||$apply_id['code']!=0){
             return error_show(1002,"申请人数据不存在");
@@ -254,6 +272,9 @@ class Allot extends BaseController
                         Db::rollback();
                         return error_show(1003, "商品不能为空");
                     }
+                    if($value['allot_num']>$st['usable_stock']){
+                        return error_show(2000,"库存数量不足");
+                    }
                     $temp = [];
                    isset($value['id']) ? $temp['id'] = $value['id']:'';
                     $temp['good_name'] = $st['good_name'];
@@ -264,6 +285,8 @@ class Allot extends BaseController
                     $temp['error_remark'] = "";
                     $temp['allot_code'] = $etid['allot_code'];
                     $temp['stock_num'] = 0;
+                    $temp['good_num']=$st['usable_stock'];
+                    $temp['error_code']="";
                     $stmp['is_del']=$value['is_del'];
                     isset($value['id']) ? '' :$temp['addtime'] = date("Y-m-d H:i:s");
                     $temp['updatetime'] = date("Y-m-d H:i:s");
@@ -279,7 +302,6 @@ class Allot extends BaseController
         }catch (\Exception $e){
             Db::rollback();
             return error_show(1005,$e->getMessage());
-
         }
     }
     public function del(){
@@ -325,7 +347,8 @@ class Allot extends BaseController
                         $stock = Db::name("good_stock")->where(["good_type_code"=>$value['good_type_code'],"wsm_code"=>$st['wsm_out'],"is_del"=>0])->find();
                         //var_dump($value['allot_num'],$stock['usable_stock']);
                         if($value['allot_num']>$stock['usable_stock']){
-                            return error_show(1003,"超出库存数量");
+                            Db::rollback();
+                            return error_show(2000,"超出库存数量");
                         }
                         $stock['usable_stock']-=$value['allot_num'];
                         $stock['wait_out_stock']+=$value['allot_num'];
@@ -389,7 +412,8 @@ class Allot extends BaseController
                     foreach ($vnp as $value){
                         $stock = Db::name("good_stock")->where(["good_type_code"=>$value['good_type_code'],"wsm_code"=>$al['wsm_out'],"is_del"=>0])->find();
                        if($stock['wait_out_stock']<$value['allot_num']){
-                           return error_show(1006,"超出库存数量");
+                           Db::rollback();
+                           return error_show(2000,"超出库存数量");
                        }
                         $stock['wait_out_stock']-=$value['allot_num'];
                         $stock['intra_stock']+=$value['allot_num'];
@@ -439,40 +463,65 @@ class Allot extends BaseController
                 $st = Db::name("good_type")->alias("b")->join("good a", "a.good_code = b.good_code", "left")
                     ->join("good_stock c", "c.good_type_code = b.type_code", "left")->where(['wsm_code' => $al['wsm_out'], 'good_type_code' => $value['good_code'], 'b.is_del' => 0, 'a.is_del' => 0])->where("c.is_del=0 or c.is_del is null")
                     ->field("b.type_code,a.good_name,c.wsm_code,c.usable_stock,c.good_type_code")->find();
-                 //var_dump(Db::name("good_type")->getLastSql());
                 if (empty($st)) {
                     Db::rollback();
-                    return error_show(1003, "商品不能为空");
+                    return error_show(1003, "未找到商品");
                 }
+//                if($value['allot_num']>$st['usable_stock']){
+//                    return error_show(2000,"库存数量不足");
+//                }
                 $temp = [];
+                $temp['error_code']="";
+                $temp['good_num']=$st['usable_stock'];
                 $temp['usable_num'] = $value['usable_num'];
                 $temp['error_num'] = $value['error_num'];
                 $temp['error_remark'] = $value['error_remark'];
+                $temp['stock_num']=$value['stock_num'];
                 $temp['updatetime'] = date("Y-m-d H:i:s");
                 $np = Db::name('allot_info')->where(['good_type_code'=>$value['good_code'],'allot_code'=> $al['allot_code']])->save($temp);
+                if($np==false){
+                    Db::rollback();
+                    return error_show(1001,"数据更新失败");
+                }
+                $n = Db::name('allot_info')->where(['good_type_code'=>$value['good_code'],'allot_code'=> $al['allot_code']])->find();
                 $stock = Db::name("good_stock")->where(["good_type_code"=>$value['good_code'],"wsm_code"=>$al['wsm_out'],"is_del"=>0])->find();
-              //var_dump(Db::name("good_stock")->getLastSql());
-                if($stock['intra_stock']<$np['allot_num']){
-                    return error_show(1002,"超出库存数量");
+                if($stock['intra_stock']<$n['allot_num']){
+                    Db::rollback();
+                    return error_show(2000,"超出库存数量");
                 }
                 $stock['updatetime']= date('Y-m-d H:i:s');
-                $stock['intra_stock']-=$np['allot_num'];
+                $stock['intra_stock']-=$n['allot_num'];
                 $dr = Db::name('good_stock')->update($stock);
+                if($dr==false){
+                    Db::rollback();
+                    return error_show(1002,"数据更新失败");
+                }
                 $instock = Db::name("good_stock")->where(["good_type_code"=>$value['good_code'],"wsm_code"=>$al['wsm_in'],"is_del"=>0])->find();
-                if($instock==""){
-
+                if($instock==false){
+                   $instock =[];
+                    $instock['good_type_code']=$value['good_code'];
+                    $instock['wsm_code']=$al['wsm_in'];
+                    $instock['wait_in_stock']=0;
+                    $instock['wait_out_stock']=0;
+                    $instock['usable_stock']=0;
+                    $instock['intra_stock']=0;
+                    $instock['total_stock']=0;
+                    $instock['status']=1;
+                    $instock['is_del']=0;
+                    $instock['warn_stock']=0;
+                    $instock['addtime']= date('Y-m-d H:i:s');
                 }
-                $instock['wait_in_stock']+=$np['allot_num'];
+                $instock['wait_in_stock']+=$n['allot_num'];
                 $instock['updatetime']= date('Y-m-d H:i:s');
-//                $stock['total_stock']=$stock['wait_out_stock']+$stock['usable_stock'];
-                $sk = Db::name('good_stock')->update($instock);
+                $sk = Db::name('good_stock')->save($instock);
+//               $stock['total_stock']=$stock['wait_out_stock']+$stock['usable_stock'];
                 if ($sk==false) {
                     Db::rollback();
                     return error_show(1003, "入库验货更新失败");
                 }
-                Db::commit();
-                return error_show(0, "入库验货更新成功");
             }
+            Db::commit();
+            return error_show(0, "入库验货更新成功");
         }
         Db::rollback();
         return error_show(1002, "入库验货更新失败");
@@ -507,32 +556,45 @@ public function vesio(){
         if($datainfo>0) {
             foreach ($dain as $value) {
                 $st = Db::name("good_type")->alias("b")->join("good a", "a.good_code = b.good_code", "left")
-                    ->join("good_stock c", "c.good_type_code = b.type_code", "left")->where(['wsm_code' => $al['wsm_out'], 'good_type_code' => $value['good_code'], 'b.is_del' => 0, 'a.is_del' => 0])->where("c.is_del=0 or c.is_del is null")
+                    ->join("good_stock c", "c.good_type_code = b.type_code", "left")->where(['wsm_code' => $al['wsm_in'], 'good_type_code' => $value['good_code'], 'b.is_del' => 0, 'a.is_del' => 0])->where("c.is_del=0 or c.is_del is null")
                     ->field("b.type_code,a.good_name,c.wsm_code,c.usable_stock")->find();
-                // var_dump(Db::name("good_type")->getLastSql());
                 if (empty($st)) {
                     Db::rollback();
                     return error_show(1003, "商品不能为空");
                 }
                 $temp = [];
+                $temp['error_code']="";
+                $temp['good_num']=$st['usable_stock'];
+                $temp['error_num'] = $value['error_num'];
                 $temp['stock_num'] = $value['stock_num'];
+                $temp['error_remark'] = $value['error_remark'];
                 $temp['updatetime'] = date("Y-m-d H:i:s");
                 $np = Db::name('allot_info')->where(['good_type_code'=>$value['good_code'],'allot_code'=> $al['allot_code']])->save($temp);
-                $stock = Db::name("good_stock")->where(["good_type_code"=>$value['good_code'],"wsm_code"=>$datainfo['wsm_in'],"is_del"=>0])->find();
-               if($stock['wait_in_stock'<$np['allot_num']]){
-                   return error_show(1002,"超出库存数量");
+                if($np==false){
+                    Db::rollback();
+                    return error_show(1001,"数据更新失败");
+                }
+                $p = Db::name('allot_info')->where(['good_type_code'=>$value['good_code'],'allot_code'=>$al['allot_code']])->find();
+                if($p==""){
+                    Db::rollback();
+                    return error_show(1002,"未找到数据");
+                }
+                $stock = Db::name("good_stock")->where(["good_type_code"=>$value['good_code'],"wsm_code"=>$al['wsm_in'],"is_del"=>0])->find();
+                if($stock['wait_in_stock']<$p['stock_num']){
+                    Db::rollback();
+                   return error_show(2000,"超出待入库存数量");
                }
-                $stock['wait_in_stock']-=$np['allot_num'];
-                $stock['usable_stock']+=$np['allot_num'];
+                $stock['wait_in_stock']-=$p['stock_num'];
+                $stock['usable_stock']+=$p['stock_num'];
                 $stock['updatetime']=date('Y-m-d H:i:s');
                 $stock['total_stock']=$stock['wait_out_stock']+$stock['usable_stock'];
                 $dr = Db::name('good_stock')->update($stock);
                 if ($dr==false) {
                     Db::rollback();
-                    return error_show(0, "验货更新失败");
+                    return error_show(1004, "验货更新失败");
                 }
                 Db::commit();
-                return error_show(1003, "验货更新成功");
+                return error_show(0, "验货更新成功");
             }
         }
         Db::rollback();
@@ -542,4 +604,4 @@ public function vesio(){
         return error_show(1005,$e->getMessage());
     }
 }
-}
+}