Przeglądaj źródła

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

wugg 3 lat temu
rodzic
commit
59c2bc00a6

+ 4 - 1
app/admin/controller/Activity.php

@@ -451,7 +451,10 @@ class Activity extends Base
             foreach ($good as $value){
                 $temp=[];
                 $stock =Db::name("good_stock")->where(["spuCode"=>$value['spuCode'],"is_del"=>0])->sum('usable_stock');
-                $temp['stock_num'] = intval($stock);
+
+                //如果是非库存商品,库存数改为最大(即将库存设为无限)
+                $temp['stock_num'] = $value['is_stock'] == 1 ? intval($stock) : 9999;
+
                 $temp['skuCode']=$value['skuCode'];
                 $temp['spuCode']=$value['spuCode'];
                 $temp['is_stock']=$value['is_stock'];

+ 45 - 11
app/admin/controller/Check.php

@@ -104,20 +104,54 @@ public function flist(){
         ->join("good_stock c","c.spuCode=b.spuCode","left")
         ->where($condtion)->count();
     $page>=ceil($count/$size) ? $page=ceil($count/$size) :"";
-    $list = Db::name("good")->alias("b")
+    $list = Db::name("good")
+        ->alias("b")
         ->join("good_stock c","c.spuCode=b.spuCode","left")
-        ->where($condtion)->page($page,$size)->select();
+        ->where($condtion)
+        ->page($page,$size)
+        ->select()
+        ->toArray();
+
     $data=[];
-    foreach ($list as $key=>$value){
-        $supplier = Db::name("supplier")->where(["code"=>$value['supplierNo']])->find();
-        $value['supplier_name'] =isset($supplier['name']) ?$supplier['name'] :"";
-        $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")->where(["a.wsm_code"=>$value['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
-        $value['wsm_name'] =isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name']:"";
-        $value['wsm_supplier'] =isset($wsmcode['name']) ? $wsmcode['name']:"";
-        $value['wsm_supplierNo'] =isset($wsmcode['code']) ? $wsmcode['code']:"";
-        $value['can']= isset($value['cat_id']) && $value['cat_id'] !=0 ? made($value['cat_id']):[];
-        $data[]=$value;
+    if($list) {
+
+        //品牌信息
+        $brands = Db::name('brand')->whereIn('id', array_column($list, 'brand_id'))->where('is_del', 0)->column('brand_name', 'id');
+
+        foreach ($list as $key=>$value){
+            $supplier = Db::name("supplier")->where(["code"=>$value['supplierNo']])->find();
+            $value['supplier_name'] =isset($supplier['name']) ?$supplier['name'] :"";
+            $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")->where(["a.wsm_code"=>$value['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
+            $value['wsm_name'] =isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name']:"";
+            $value['wsm_supplier'] =isset($wsmcode['name']) ? $wsmcode['name']:"";
+            $value['wsm_supplierNo'] =isset($wsmcode['code']) ? $wsmcode['code']:"";
+            $value['can']= isset($value['cat_id']) && $value['cat_id'] !=0 ? made($value['cat_id']):[];
+
+            $value['brand_name'] = $brands[$value['brand_id']]??'';
+
+            //规格信息
+            $spec = Db::name("good_spec")->where(["spuCode" => $value['spuCode'], "is_del" => 0])->select()->toArray();
+
+            $speclist = [];
+            if (!empty($spec)) {
+                foreach ($spec as $val) {
+                    $temp = [];
+                    $temp['spec_id'] = $val['spec_id'];
+                    $temp['spec_value_id'] = $val['spec_value_id'];
+                    $sp = Db::name("specs")->where(["id" => $val['spec_id']])->find();
+                    $temp['spec_name'] = isset($sp["spec_name"]) ? $sp["spec_name"] : "";
+                    $spv = Db::name("spec_value")->where(["id" => $val['spec_value_id']])->find();
+                    $temp['spec_value'] = isset($spv["spec_value"]) ? $spv["spec_value"] : "";
+                    $speclist[] = $temp;
+                }
+            }
+            $value['specinfo'] = $speclist;
+
+            $data[]=$value;
+        }
+
     }
+
     return app_show(0,"获取成功",["list"=>$data,"count"=>$count]);
 }
 public function list()

+ 79 - 0
app/admin/controller/Purchin.php

@@ -295,6 +295,46 @@ class Purchin extends BaseController
                     if($upd){
                         GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
                         ActionLog::logAdd($this->post['token'],$order,"RKD", 1,$good  );
+                        if($cgdinfo['send_status']==3){
+                            $send=Db::name("order_send")->where(["cgdNo"=>$cgdNo,"status"=>1])->column("outCode");
+                            if(!empty($send)){
+                                $out =Db::name("order_out")->where(["outCode"=>$send,"status"=>0])->select()
+                                    ->toArray();
+                                if(!empty($out)){
+                                    $up =Db::name("order_out")->where(["outCode"=>$send,"status"=>0])->update
+                                    (["status"=>1,"updatetime"=>date('Y-m-d H:i:s')]);
+                                    if($up==false){
+                                        Db::rollback();
+                                        return error_show(1004,"出库单出库失败");
+                                    }
+                                    $good1 = Db::name("good_stock")->where(["wsm_code"=>$cgdinfo['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
+                                    if($good1==false){
+                                        Db::rollback();
+                                        return error_show(1004,"未找到对应商品库存");
+                                    }
+                                    $out_num = intval(array_sum(array_column($out,"send_num")));
+                                    if($out_num>$good1['usable_stock']){
+                                        Db::rollback();
+                                        return error_show(1004,"库存数量不足发货");
+                                    }
+                                    $good1['usable_stock']-=$out_num;
+                                    $good1['wait_out_stock']+=$out_num;
+                                    $good1['total_stock']=$good1['usable_stock']+$good1['wait_out_stock'];
+                                    $good1['updatetime'] = date("Y-m-d H:i:s");
+                                    $upd=  Db::name("good_stock")->save($good1);
+                                    if($upd==false){
+                                        Db::rollback();
+                                        return error_show(1004,"库存数量更新失败");
+                                    }
+                                    $sendp=Db::name("order_send")->where(["cgdNo"=>$cgdNo,"outCode"=>$send,
+                                        "status"=>1])->save (["status"=>2]);
+                                    if($sendp==false){
+                                        Db::rollback();
+                                        return error_show(1004,"库存发货失败");
+                                    }
+                                }
+                            }
+                        }
                         Db::commit();
                         return app_show(0,'商品入库成功',["wsm_in_code"=>$wsm_in_code]);
                     }else{
@@ -554,6 +594,45 @@ class Purchin extends BaseController
                     if($upd){
                         GoodLog::LogAdd($this->post['token'],$good_data,'RKD');
                         ActionLog::logAdd($this->post['token'],$order,"RKD", 1,$good  );
+//                        if($cgdinfo['send_status']==3){
+//                            $send=Db::name("order_send")->where(["cgdNo"=>$info['cgdNo'],"status"=>1])->column("outCode");
+//                            if(!empty($send)){
+//                                $out =Db::name("order_out")->where(["outCode"=>$send,"status"=>0,"is_del"=>0])->select()
+//                                    ->toArray();
+//                                if(!empty($out)){
+//                                    $up =Db::name("order_out")->where(["outCode"=>$send,"status"=>0,"is_del"=>0])->update
+//                                    (["status"=>1,"updatetime"=>date('Y-m-d H:i:s')]);
+//                                    if($up==false){
+//                                        Db::rollback();
+//                                        return error_show(1004,"出库单出库失败");
+//                                    }
+//                                    $good1 = Db::name("good_stock")->where(["wsm_code"=>$cgdinfo['wsm_code'], "spuCode"=>$cgdinfo['spuCode'],"is_del"=>0])->find();
+//                                    if($good1==false){
+//                                        Db::rollback();
+//                                        return error_show(1004,"未找到对应商品库存");
+//                                    }
+//                                    $out_num = intval(array_sum(array_column($out,"send_num")));
+//                                    if($out_num>$good1['usable_stock']){
+//                                        Db::rollback();
+//                                        return error_show(1004,"库存数量不足发货");
+//                                    }
+//                                    $good1['usable_stock']-=$out_num;
+//                                    $good1['wait_out_stock']+=$out_num;
+//                                    $good1['total_stock']=$good1['usable_stock']+$good1['wait_out_stock'];
+//                                    $good1['updatetime'] = date("Y-m-d H:i:s");
+//                                    $upd=  Db::name("good_stock")->save($good1);
+//                                    if($upd==false){
+//                                        Db::rollback();
+//                                        return error_show(1004,"库存数量更新失败");
+//                                    }
+//                                    $sendp=Db::name("order_send")->where(["cgdNo"=>$info['cgdNo'],"outCode"=>$out,"status"=>1])->save (["status"=>2]);
+//                                    if($sendp==false){
+//                                        Db::rollback();
+//                                        return error_show(1004,"库存发货失败");
+//                                    }
+//                                }
+//                            }
+//                        }
                         Db::commit();
                         return app_show(0,'商品入库成功');
                     }else{

+ 33 - 1
app/admin/controller/Sale.php

@@ -568,6 +568,36 @@ class Sale extends Base
                             Db::rollback();
                             return error_show(1002,"发货地址添加创建失败");
                         }
+
+                        //维护商品所在仓库的库存 --- start
+                        $temp = Db::name('wsm_good_stock')
+                            ->field('id,usable_stock,wait_out_stock')
+                            ->where(['spuCode' => $val['spuCode'], 'wsm_code' => $cgdinfo['wsm_code']])
+                            ->find();
+                        if ($temp == false) {
+                            Db::rollback();
+                            return error_show(1004, '库存不足');
+                        }
+
+                        if (($temp['usable_stock'] - $ornum) < 0) {
+                            Db::rollback();
+                            return error_show(1004, '库存不足');
+                        }
+
+                        $up =Db::name('wsm_good_stock')
+                            ->where('id', $temp['id'])
+                            ->update([
+                                'usable_stock' => $temp['usable_stock'] - $ornum,
+                                'wait_out_stock' => $temp['wait_out_stock'] + $ornum,
+                                'updatetime' => date('Y-m-d H:i:s'),
+                            ]);
+                        if($up==false){
+                            Db::rollback();
+                            return error_show(1004, '库存更新失败');
+                        }
+                        //维护商品所在仓库的库存 --- end
+
+
                         if($num==0){
                             break;
                         }
@@ -2793,6 +2823,8 @@ class Sale extends Base
         $outinfo['sendtime'] = date("Y-m-d H:i:s");
         $outinfo['status'] = 2;
         $outinfo['updatetime'] = date("Y-m-d H:i:s");
+
+        Db::startTrans();
         try{
             $up =Db::name("order_out")->save($outinfo);
             if($up){
@@ -2982,7 +3014,7 @@ class Sale extends Base
             return error_show(1002, "未找到商品数据");
         }
 
-        $stock = 9999;//默认库存数为9999,无实际意义,表示库存不限,只有库存商品才需要去数据库里查验可用库存
+        $stock = 0;
         if ($ct['is_stock'] == 1) {
             $good_stock = Db::name("good_stock")->where(["spuCode" => $ct['spuCode'], "is_del" => 0])->find();
             $stock = isset($good_stock['usable_stock']) ? $good_stock['usable_stock'] : "0";