wugg 1 year ago
parent
commit
8e1bcafa34

+ 17 - 7
app/admin/controller/Sale.php

@@ -9,7 +9,7 @@ use app\admin\model\GoodLog;
 use app\admin\model\GoodStockInfo;
 use app\admin\model\OrderOutChild;use app\admin\model\ProcessOrder;
 use app\admin\model\SaleInfo;
-use Exception;
+use app\bbc\model\BbcFill;use Exception;
 use think\App;
 use think\facade\Cache;
 use think\facade\Config;
@@ -5202,7 +5202,7 @@ class Sale extends Base
             ->alias('a')
             ->field('a.id sale_id,a.good_code,a.platform_order,a.good_name,a.wsend_num,a.total_price,a.order_type,
             a.status sale_status,a.orderCode,a.cat_id,a.good_createrid,c.id cgd_id,c.status cgd_status,c.cgdNo,c.cgder_id,
-            a.addtime,c.wsm_code')
+            a.addtime,c.wsm_code,a.order_source,a.other_orderNo')
             ->leftJoin('order_num b', 'b.orderCode=a.orderCode')
             ->leftJoin('purchease_order c', 'c.cgdNo=b.cgdNo')
             ->where(['a.is_del' => 0, 'a.orderCode' => $orderCode])
@@ -5293,7 +5293,7 @@ class Sale extends Base
                 }else{
                 	$good = Db::name('good_stock')->where(['spuCode' => $sale['good_code'],'wsm_code'=>$sale['wsm_code']])
                 		->findOrEmpty();
-	                    if (empty($good)) throw new Exception('未找到商品信息');
+	                if (empty($good)) throw new Exception('未找到商品信息');
                 	if($sale['cgd_status']==1){
 	                    $stock = Db::name('good_stock')->where($good)
 	                    ->inc('wait_in_stock',$sale['wsend_num'])
@@ -5340,10 +5340,20 @@ class Sale extends Base
                                             'wait_name'=>0,
                                         ]);
                 }
-				 $fininfo =GetFin("admin/orderischeck",["token"=>$this->post['token'],"orderCode"=>$sale['orderCode'], "isCgd"=>1]);
-				if(!isset($fininfo['code'])||$fininfo['code']!=0 ){
-					throw new Exception($fininfo['message']??"结算校验失败");
-				}
+                
+                 if($sale['order_source'] == 11){
+                    $fill =(new BbcFill())->where(['fillCode'=>$sale['other_orderNo']])->findOrEmpty();
+                    if($fill->isEmpty()) throw new Exception($sale['orderCode'] . '未找到对应得业务报备单');
+                    if($fill->transfer_num <$sale['wsend_num'])throw new Exception($sale['orderCode'] . '对应得业务报备单已转单数量不足');
+		            $fill->transfer_num -=$sale['wsend_num'];
+		            $fill->status=$fill->transfer_num >0?2:1;
+		            $upd=$fill->save();
+		            if($upd==false)throw new \Exception('业务报备单更新失败');
+                }
+//				 $fininfo =GetFin("admin/orderischeck",["token"=>$this->post['token'],"orderCode"=>$sale['orderCode'], "isCgd"=>1]);
+//				if(!isset($fininfo['code'])||$fininfo['code']!=0 ){
+//					throw new Exception($fininfo['message']??"结算校验失败");
+//				}
 				$thtemp=[
 					"orderCode"=>$sale["orderCode"],
 					"th_type"=>4,//取消订单

+ 2 - 2
app/admin/controller/SaleReport.php

@@ -3249,7 +3249,7 @@ class SaleReport extends Base
 		foreach ($list as $value){
 			$value['stock_num'] = Db::name("good_stock")->where("spuCode",$value['good_code'])->sum("usable_stock");
 			if($value['is_stock']==1){
-				$value['good_price'] = Db::name("purchease_order")->where(["spuCode"=>$value['good_code'],"order_source"=>0])->value("good_price",0);
+				$value['good_price'] = Db::name("purchease_order")->where(["spuCode"=>$value['good_code'],"order_source"=>0])->order('id desc')->value("good_price",0);
 				$value['total_fee'] = bcmul($value['good_price'],$value['good_num'],2);
 			}
 			$data[]= $value;
@@ -3287,7 +3287,7 @@ class SaleReport extends Base
 		foreach ($list as $value){
 			$value['当日剩余可用库存'] = Db::name("good_stock")->where("spuCode",$value['商品编号'])->sum("usable_stock");
 			if($value['is_stock']==1){
-				$value['库存采购单价'] = Db::name("purchease_order")->where(["spuCode"=>$value['商品编号'],"order_source"=>0])->value("good_price",0);
+				$value['库存采购单价'] = Db::name("purchease_order")->where(["spuCode"=>$value['商品编号'],"order_source"=>0])->order('id desc')->value("good_price",0);
 				$value['当日库存消耗金额'] = bcmul($value['库存采购单价'],$value['当日库存销售'],2);
 			}
 			unset($value['is_stock']);

+ 16 - 16
app/admin/listener/Cgdmake.php

@@ -49,7 +49,7 @@ class Cgdmake
                 'updaterid' => $orderinfo->apply_id,
                 'updater' => $orderinfo->apply_name,
             ];
-           WarehouseInfo::create($inwsm);
+            WarehouseInfo::create($inwsm);
 	         }else {
 	            $wsm_code = $wsm['wsm_code'];
 	        }
@@ -58,13 +58,13 @@ class Cgdmake
          $info = (new BbcFill())->where(["fillCode"=>$orderinfo->other_orderNo])->findOrEmpty();
          if($info->isEmpty())return;
 		 if($info->fill_type==2){
-        	 $origin =(new GoodNake())->where([['spuCode', '=', $orderinfo->spuCode], ['min_num', '<=',
+        	 $origin =(new GoodNake())->where([['spuCode', '=', $orderinfo->good_code], ['min_num', '<=',
         	 $info->good_num], ['is_del', '=', 0]])->order('min_num desc')->findOrEmpty();
         	 $good = (new Good())->where(['spuCode', '=', $orderinfo->spuCode])->findOrEmpty();
         	 $origin =array_merge($good->toArray(),$origin->toArray());
         }
         if($info->fill_type==3){
-        	 $origin =(new \app\admin\model\ConsultBids())->where([['spuCode', '=', $orderinfo->spuCode] ,['is_del', '=',
+        	 $origin =(new \app\admin\model\ConsultBids())->where([['spuCode', '=', $orderinfo->good_code] ,['is_del', '=',
         	 0]])->findOrEmpty()->toArray();
         }
         $cg = [
@@ -79,15 +79,15 @@ class Cgdmake
             'good_num' => $orderinfo->good_num,
             'good_price' => $orderinfo->origin_price,
             'total_fee' => round(bcmul($orderinfo->origin_price , $orderinfo->good_num,4),2),
-            'pakge_fee' => $origin['pakge_fee']?:"0",
-            'cert_fee' => $origin['cert_fee']?:'0',
-            'open_fee' => $origin['open_fee']?:'0',
-            'teach_fee' => $origin['cost_fee']?:'0',
-            'mark_fee' => $origin['mark_fee']?:'0',
-            'demo_fee' => $origin['demo_fee']?:'0',
-            'nake_fee' => $origin['nake_fee']?:'0',
+            'pakge_fee' => $origin['pakge_fee']??"0",
+            'cert_fee' => $origin['cert_fee']??'0',
+            'open_fee' => $origin['open_fee']??'0',
+            'teach_fee' => $origin['cost_fee']??'0',
+            'mark_fee' => $origin['mark_fee']??'0',
+            'demo_fee' => $origin['demo_fee']??'0',
+            'nake_fee' => $origin['nake_fee']??'0',
             'weight' => $origin['weight'],
-            'delivery_fee' => $origin['delivery_fee']?:0,
+            'delivery_fee' => $origin['delivery_fee']??0,
             'gold_price' =>0,
             'diff_weight' => '0',
             'diff_fee' => '0',
@@ -112,7 +112,7 @@ class Cgdmake
             'from_tag' => $from_tag==false ? 2 : 1,//来源标签:1采销(默认),2供应商端
         ];
         $cgd=PurcheaseOrder::create($cg);
-       $event=[ 'order_type' => 'CGD',
+                $events=['order_type' => 'CGD',
                         'order_code' =>$cgdCode,//咨询单详情编号
                         'order_id' =>  $cgd->id,
                         'order_status' => 2,
@@ -121,14 +121,14 @@ class Cgdmake
                         'action_uid' => $orderinfo->apply_id,
                         'action_name' => $orderinfo->apply_name,
              ];
-        event('ProcessOrder',$event);
+        event('ProcessOrder',$events);
         $orderOut= (new OrderOut())->where(["orderCode"=>$orderinfo->orderCode])
-        ->field("outCode,{$cgdCode} cgdNo,send_num")->select();
+        ->field("outCode,'{$cgdCode}' cgdNo,send_num")->select();
         if($orderOut->isEmpty()==false) (new OrderSend())->saveAll($orderOut->toArray());
          $rela = [
                 'orderCode' => $event,
                 'cgdNo' => $cgdCode,
-                'spuCode' => $orderinfo->spuCode,
+                'spuCode' => $orderinfo->good_code,
                 'good_num' => $orderinfo->good_num,
                 'wsend_num' =>$orderinfo->good_num,
                 'send_num' => 0,
@@ -138,7 +138,7 @@ class Cgdmake
             ];
          OrderNum::create($rela);
          $goodstock =new GoodStock();
-         $stockinfo = $goodstock->where(['spuCode' =>$orderinfo->spuCode, 'wsm_code' => $wsm_code, 'is_del' => 0])->findOrEmpty();
+         $stockinfo = $goodstock->where(['spuCode' =>$orderinfo->good_code, 'wsm_code' => $wsm_code, 'is_del' => 0])->findOrEmpty();
          if($stockinfo->isEmpty()){
              $stokc = [
                         'spuCode' => $orderinfo->spuCode,

+ 2 - 2
app/admin/model/ConsultInfo.php

@@ -13,7 +13,7 @@ class ConsultInfo extends Model
  
 	public function consultOrder(){
 		return $this->belongsTo(ConsultOrder::class,"zxNo","zxNo")
-		->bind(["creater,createrid,is_project,projectNo,khNo,khName,companyNo,companyName,endtime,area",
-		"platform_id"=>"platfrom_code","saleid","salesman"]);
+		->bind(["creater","createrid","is_project","projectNo","khNo","khName","companyNo","companyName","endtime","area",
+		"platform_id"=>"platform_code","saleid","salesman"]);
 	}
 }

+ 50 - 42
app/bbc/controller/Fill.php

@@ -37,19 +37,20 @@ class Fill extends Base
         $param=$this->request->param(["cat_id"=>"","start"=>"",'end'=>'',"fillCode"=>"","status"=>"","good_name"=>"",
         "spuCode"=>"","companyNo"=>"","customerCode"=>"","is_compliance"=>"","page"=>1,"size"=>15],"post","trim");
         $where=[];
-        $param['companyNo']==""??$where[]=["companyNo","like","%{$param['companyNo']}%"];
-        $param['customerCode']==""??$where[]=["customerCode","like","%{$param['customerCode']}%"];
-        $param['fillCode']==""??$where[]=["fillCode","like","%{$param['fillCode']}%"];
-        $param['good_name']==""??$where[]=["good_name","like","%{$param['good_name']}%"];
-        $param['spuCode']==""??$where[]=["spuCode","like","%{$param['spuCode']}%"];
-        $param['is_compliance']===""??$where[]=["is_compliance","=",$param['is_compliance']];
-        $param['cat_id']===""??$where[]=["cat_id","=",$param['cat_id']];
-        $param['status']===""??$where[]=["status","=",$param['status']];
-        $list=$this->model->with(["unit","cat","brand"])
+        $param['companyNo']==""?:$where[]=["companyNo","like","%{$param['companyNo']}%"];
+        $param['customerCode']==""?:$where[]=["customerCode","like","%{$param['customerCode']}%"];
+        $param['fillCode']==""?:$where[]=["fillCode","like","%{$param['fillCode']}%"];
+        $param['good_name']==""?:$where[]=["good_name","like","%{$param['good_name']}%"];
+        $param['spuCode']==""?:$where[]=["spuCode","like","%{$param['spuCode']}%"];
+        $param['is_compliance']===""?:$where[]=["is_compliance","=",$param['is_compliance']];
+        $param['cat_id']===""?:$where[]=["cat_id","=",$param['cat_id']];
+        $param['status']===""?:$where[]=["status","=",$param['status']];
+        
+        $list=$this->model->with(["unitT","cat","brand"])
         ->where($where)
         ->order("id desc")
         ->paginate(["list_rows"=>$param['size'],"page"=>$param['page']]);
-        $this->success("获取成功",["list"=>$list->items(),"count"=>$list->items()]);
+        $this->success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
    
     }
 
@@ -108,9 +109,9 @@ class Fill extends Base
         	"origin_price"=>$origin_price,
         	"apply_id"=>$this->uid,
         	"apply_name"=>$this->uname,
-        	"status"=>2,
-        	"companyName"=>$company[$param['companyNo']]??"",
-        	"customerName"=>$company[$param['customerCode']]??"",
+        	"status"=>1,
+        	"companyName"=>$company[$param['companyNo']]?:"",
+        	"customerName"=>$company[$param['customerCode']]?:"",
         ];
         $create= array_merge($data,$param,$goodinfo->toArray());
         BbcFill::create($create);
@@ -176,8 +177,8 @@ class Fill extends Base
         $head=new Headquarters();
         $company = $head->where(['code'=>$param['customerCode']])->findOrEmpty();
         if($company->isEmpty())$this->error('未找到相关客户名称信息');
-        if($info->fill_type!=3) $good =(new \app\admin\model\Good())->where(["spuCode",$info->spuCode])->findOrEmpty();
-        else $good=(new GoodZixun())->where(['spuCode',$info->spuCode])->findOrEmpty();
+        if($info->fill_type!=3) $good =(new \app\admin\model\Good())->where(["spuCode"=>$info->spuCode])->findOrEmpty();
+        else $good=(new ConsultBids())->where(['spuCode'=>$info->spuCode])->findOrEmpty();
         if($good->isEmpty())$this->error('未找到商品信息');
         $supplier = (new Supplier())->where(["code"=>$info->supplierNo])->findOrEmpty();
         if($supplier->isEmpty())$this->error('未找到供应商信息');
@@ -241,7 +242,7 @@ class Fill extends Base
                 'status' => 0,
                 'is_del' => 0,
                 'proof_id' => 0,
-                'other_orderNo' => $info->filingCode,
+                'other_orderNo' => $info->fillCode,
                 'workNo' => '',
                 'poNo' => '',
                 'use_order' => 0,
@@ -262,6 +263,8 @@ class Fill extends Base
                 ];
         $this->model->startTrans();
         try{
+        	$ist =$this->model->lock(true)->findOrEmpty($param['id']);
+        	if($ist->wtrans_num< $transNum)throw new \Exception('报备单可转单数量不足!');
         	$order=Sale::create($orderInfo);
         	if($order->id==false) throw new \Exception("订单创建失败");
         	 $Addr=(new OrderAddr())->saveAll($orderArr);
@@ -277,25 +280,25 @@ class Fill extends Base
         		 foreach ($Addr as $item){
         		 	$outCode= make("DF");
         		 	$out=[
-        		 	            'orderCode' => $orderCode,
-                                'outCode' => $outCode,
-                                'apply_id' => $this->uid,
-                                'apply_name' => $this->uname,
-                                'addrid' => $item->id,
-                                'post_name' => '',
-                                'post_code' => '',
-                                'post_fee' => 0,
-                                'sendtime' => date('Y-m-d H:i:s'),
-                                'send_num' => $item->receipt_quantity,
-                                'check_num' => 0,
-                                'error_num' => 0,
-                                'wsm_code' => '',
-                                'order_type' =>1,
-                                'send_status' => 1,
-                                'status' => 1,
-                                'addtime' => date('Y-m-d H:i:s'),
-                                'updatetime' => date('Y-m-d H:i:s')
-                                ];
+        		 	       'orderCode' => $orderCode,
+                           'outCode' => $outCode,
+                           'apply_id' => $this->uid,
+                           'apply_name' => $this->uname,
+                           'addrid' => $item->id,
+                           'post_name' => '',
+                           'post_code' => '',
+                           'post_fee' => 0,
+                           'sendtime' => date('Y-m-d H:i:s'),
+                           'send_num' => $item->receipt_quantity,
+                           'check_num' => 0,
+                           'error_num' => 0,
+                           'wsm_code' => '',
+                           'order_type' =>1,
+                           'send_status' => 1,
+                           'status' => 1,
+                           'addtime' => date('Y-m-d H:i:s'),
+                           'updatetime' => date('Y-m-d H:i:s')
+                          ];
         		 	    $outinfo=OrderOut::create($out);
         		 	    if($outinfo->isEmpty())throw new \Exception('发货单创建失败');
         		 	    OrderOutChild::makeChild($outCode);
@@ -311,8 +314,12 @@ class Fill extends Base
         		 	    event('ProcessOrder',$event);
         		 }
         	}
-            $this->model->commit();
-        	//非库存数据需要生成采购单 异步监听事件处理 需要注意采购单生成失败无法回滚
+        	$ist->transfer_num +=$transNum;
+        	$ist->status=$ist->transfer_num >= $ist->good_num?3:2;
+        	$upd=$ist->save();
+        	if($upd==false)throw new \Exception('报备单更新失败');
+             $this->model->commit();
+		   	//非库存数据需要生成采购单 异步监听事件处理 需要注意采购单生成失败无法回滚
             if($info->fill_type!==1){
             	event("CgdCreate",$orderCode);
             }
@@ -339,7 +346,7 @@ class Fill extends Base
     public function ZixunCreate()
     {
       $param=$this->request->param(["bidNo"=>"","sale_price"=>"","manager"=>"","managerid"=>"","good_num"=>"",
-      "proof_type"=>"",'proof_url'=>'',],"post","trim");
+      "proof_type"=>"",'proof_url'=>'',"remark"=>""],"post","trim");
       $valid = Validate::rule([
       	"bidNo|咨询竞价单号"=>"require",
       	"sale_price|商品单价"=>"require|float|gt:0",
@@ -375,7 +382,7 @@ class Fill extends Base
 	            'origin_price'=>$info->total_fee,
 	            'apply_id'=>$this->uid,
 	            'apply_name'=>$this->uname,
-	            'status'=>2,
+	            'status'=>1,
 	            'companyNo'=>$zxinfo->companyNo,
 	            'companyName'=>$zxinfo->companyName,
 	            'customerCode'=>$zxinfo->khNo,
@@ -384,11 +391,12 @@ class Fill extends Base
 	            'supplierName'=>$info->supplierName,
 	            'is_compliance'=>0,
 	            'plat_code'=>'',
+	            'fill_remark'=>$param['remark'],
 	            'manager'=>$param['manager'],
 	            'managerid'=>$param['managerid'],
 	        ];
-	        $info=BbcFill::create($data);
-            if($info->id==false) throw new \Exception('报备单创建失败');
+	        $bbcCre=BbcFill::create($data);
+            if($bbcCre->id==false) throw new \Exception('报备单创建失败');
             BargainOrder::update(["status"=>4],['bidsNo' =>$param['bidNo'],'is_del'=>0,'status'=>0]);
             $info->status=6;
             $up =$info->save();
@@ -446,7 +454,7 @@ class Fill extends Base
             $this->model->commit();
         }catch (\Exception $exception){
             $this->model->rollback();
-            $this->error($exception->getMessage());
+            $this->error($exception->getMessage().$exception->getLine());
         }
         $this->success("报备单生成成功",["fillCode"=>$data['fillCode']]);
     }

+ 4 - 3
app/bbc/model/BbcFill.php

@@ -4,7 +4,8 @@ declare (strict_types = 1);
 namespace app\bbc\model;
 
 use app\admin\model\Brand;
-use app\admin\model\Cat;use app\admin\model\Unit;
+use app\admin\model\Cat;
+use app\admin\model\Unit;
 use think\Model;
 use think\model\concern\SoftDelete;
 
@@ -18,9 +19,9 @@ class BbcFill extends Model
    protected $updateTime="updatetime";
    protected $deleteTime = 'delete_time';
    protected $hidden = ['delete_time'];
-   static $status_cn=['待提交','待审核是否合规','待转单','部分转单','转单成功','取消转单'];
+   static $status_cn=['待提交','待转单','部分转单','转单成功','取消转单'];
    protected $append=["status_cn","wtrans_num"];
-   public function unit(){
+   public function unitT(){
    	return $this->belongsTo(Unit::class,"unit_id","id")->bind(["unit"]);
    }
    

+ 1 - 1
app/command/SplitSale.php

@@ -130,7 +130,7 @@ class SplitSale extends Command
 							$orderCode = substr($orderCode, 0, -2) . str_pad($this->i, 2, '0', STR_PAD_LEFT);
 							$supplier = ['No' => $sale['supplierNo'], 'name' => $sale['supplierName'],"pay_name"=>$pay_rate['pay_name']];
 							if(!isset($cgd['cgdNo']) && $sale['is_stock']==1 ){
-								$sale['origin_price'] = Db::name("purchease_order")->where(["spuCode"=>$sale['good_code'],"is_del"=>0,"status"=>[2,3]])->value("good_price",0);
+								$sale['origin_price'] = Db::name("purchease_order")->where(["spuCode"=>$sale['good_code'],"is_del"=>0,"status"=>[2,3]])->order("id desc")->value("good_price",0);
 							}else{
 								$sale['origin_price'] = $cgd['good_price'];
 							}

+ 1 - 1
app/model/AccountCompany.php

@@ -14,6 +14,6 @@ class AccountCompany extends Base
       return    self::alias("a")->leftJoin("account b" ,"b.id=a.account_id")
          ->where([ ['a.is_del', '=', 0],
             ['a.status', '=', 1],
-            ['b.level', '=', 3]])->where(["companyNo"=>$supplierNo])->findOrEmpty()->isEmpty();
+            ['b.level', '=', 3]])->where(["companyCode"=>$supplierNo])->findOrEmpty()->isEmpty();
     }
 }