Browse Source

批量发货校验

wufeng 2 years ago
parent
commit
ab125624bc
2 changed files with 59 additions and 32 deletions
  1. 4 4
      app/admin/controller/Resign.php
  2. 55 28
      app/admin/controller/Sale.php

+ 4 - 4
app/admin/controller/Resign.php

@@ -179,8 +179,8 @@ class Resign extends Base
 		if($supplier_temp['code']!=0 || empty($supplier_temp['data']) ) return error_show(1002,"商品供应商不存在");
 		$holder_id=$supplier_temp['data']['personid']??0;
 		$holder_name=$supplier_temp['data']['person']??0;
-		$coma =$userCommon->handle("getCodeAndName",["code"=>$good['companyNo']]);
-		if($coma['code']!=0 || empty($coma['data']) ) return error_show(1002,"商品业务公司不存在");
+		$coma =$userCommon->handle("getCodeAndName",["code"=>[$good['companyNo'],$good['supplierNo']]]);
+//		if($coma['code']!=0 || empty($coma['data']) ) return error_show(1002,"商品业务公司不存在");
         //校验数量
         $goodnake = Db::name("good_nake")
             ->field('id,min_num')
@@ -206,9 +206,9 @@ class Resign extends Base
             "good_name"=>$good['good_name'],
             "good_num"=>$good_num,
             "wsm_code"=>'',
-            "companyName"=>$coma['data'][$good['companyNo']],
+            "companyName"=>$coma['data'][$good['companyNo']]??'',
             "companyNo"=>$good['companyNo'],
-            "supplierName"=>$coma['data'][$good['supplierNo']],
+            "supplierName"=>$coma['data'][$good['supplierNo']]??'',
             "supplierNo"=>$good['supplierNo'],
             "file_url"=>$file_url,
             "lasttime"=>$lastime,

+ 55 - 28
app/admin/controller/Sale.php

@@ -4847,23 +4847,22 @@ class Sale extends Base
                 ['a.outCode', 'in', array_column($param['list'], 'outCode')],
             ])->column('c.supplierNo', 'a.outCode');
 
-        //检查这些供应商编码是否开通了账号
-        $temp_res = checkHasAccountBySupplierNos(array_values($suppliers));
-
+        if ($this->level != 3) {
+            //检查这些供应商编码是否开通了账号
+            $temp_res = checkHasAccountBySupplierNos(array_values($suppliers));
 //            ->whereIn('supplierNo', array_values($suppliers))
 //            ->column('supplierNo');
 //        $temp = [];
 //        foreach ($suppliers as $k => $v) {
 //            if (in_array($v, $temp_res)) $temp[] = $k;
 //        }
-
-        if (!empty($temp_res)) return json_show(1003, '不允许处理已开通账号的供应商的单子', array_keys($temp_res));
-
+            if (!empty($temp_res)) return json_show(1003, '不允许处理已开通账号的供应商的单子', array_keys($temp_res));
+        }
 
 //        $user = GetUserInfo($param['token']);
         $createrid = $this->uid;//$user['data']['id']??0;//$this->uid;
         $creater = $this->uname;//$user['data']['nickname']??0;//$this->uname;
-        $own_roleid = Db::name('user_role')->where(['is_del'=>0,'uid'=>$createrid,'status'=>1])->value('roleid',0);
+//        $own_roleid = Db::name('user_role')->where(['is_del'=>0,'uid'=>$createrid,'status'=>1])->value('roleid',0);
 
         //所有发货单信息
         $order_out_infos = Db::name("order_out")
@@ -4872,6 +4871,26 @@ class Sale extends Base
             ->whereIn('outCode', array_column($param['list'], 'outCode'))
             ->column('id,status,send_num,orderCode,wsm_code,apply_id,apply_name', 'outCode');
 
+        //所有库管人员信息
+        $wsm_infos=Db::name('warehouse_info')
+            ->where(['is_del'=>0,'wsm_code'=>array_column($order_out_infos,'wsm_code')])
+            ->column('contactor','wsm_code');
+
+        //所有商品信息及供应商编码
+        $spuCodes=Db::name('sale')
+            ->where(['is_del'=>0,'orderCode'=>array_column($order_out_infos,'orderCode')])
+            ->column('good_code');
+        $supplierNo1 =  Db::name('good_zixun')
+            ->where(['spuCode' => $spuCodes, 'is_del' => 0])
+            ->column('supplierNo','spuCode');
+        $supplierNo2 =  Db::name('good')
+            ->where(['spuCode' => $spuCodes, 'is_del' => 0])
+            ->column('supplierNo','spuCode');
+        $supplierNos = array_unique(array_merge($supplierNo1,$supplierNo2));
+        $userCommon = new \app\admin\common\User();
+        $temp = $userCommon->handle('sGetList',['more_code'=>array_values($supplierNos)]);
+        $supplier_personid = array_column($temp,'person','code');
+
         //处理数据
         Db::startTrans();
         try {
@@ -4895,29 +4914,37 @@ class Sale extends Base
                     return app_show(1005, '下列发货申请单号重复', [$value]);
                 } else $temp_out_codes[$value['outCode']] = $value['outCode'];
 
-                if ($sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['is_stock'] == 1) {
-                    if (!in_array($own_roleid, config('app.wsm_cgder_role'))) {
-                        Db::rollback();
-                        return app_show(1003, $value['outCode'] . '发货单只能由库管操作');
-                    }
-                } else {
-                	if($sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['order_type']==3 ||$sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['order_type']==4 ){
-		                $personid = Db::name('good_zixun')->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")
-		                              ->where(['a.spuCode' => $sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['good_code'], 'a.is_del' => 0])
-		                              ->value('personid');
-	                }else{
-		                $personid = Db::name('good')->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")
-		                              ->where(['a.spuCode' =>
-			                              $sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['good_code'],'a.is_del' => 0])
-		                              ->value('personid');
-	                }
+                if($this->level==2) {
 
-	                if ($createrid != $personid) {
-		                Db::rollback();
-		                return app_show(1003, $value['outCode'] . '发货单只能由供应商负责人操作');
-	                }
-                }
+                    //level2账号的话,库存品只能由库管操作,非库存品只能由供应商负责人操作,level3账号不限制
+                    if ($sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['is_stock'] == 1) {
+
+                        if($wsm_infos[$order_out_infos[$value['outCode']]['wsm_code']]??0 != $createrid) throw new \think\Exception($value['outCode'] . '发货单只能由库管操作');
 
+//                        if (!in_array($own_roleid, config('app.wsm_cgder_role'))) {
+//                            Db::rollback();
+//                            return app_show(1003, $value['outCode'] . '发货单只能由库管操作');
+                        }
+                    } else {
+                        if ($sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['order_type'] == 3 || $sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['order_type'] == 4) {
+//                            $supplierNo = Db::name('good_zixun')
+////                                ->leftJoin("supplier b", "a.supplierNo=b.code")
+//                                ->where(['spuCode' => $sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['good_code'], 'is_del' => 0])
+//                                ->value('supplierNo');
+                        } else {
+//                            $supplierNo = Db::name('good')
+////                                ->alias("a")
+////                                ->leftJoin("supplier b", "a.supplierNo=b.code")
+//                                ->where(['spuCode' =>$sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['good_code'], 'is_del' => 0])
+//                                ->value('supplierNo');
+                        }
+
+                    if ($createrid != $supplier_personid[$supplierNos[$sale_infos[$order_out_infos[$value['outCode']]['orderCode']]['good_code']]]) throw new \think\Exception($value['outCode'] . '发货单只能由供应商负责人操作');
+//                            Db::rollback();
+//                            return app_show(1003, $value['outCode'] . '发货单只能由供应商负责人操作');
+
+                    }
+                }
                 //【发货单】
                 //查询已有发货单信息及状态