wugg vor 5 Monaten
Ursprung
Commit
37c24dc98c

+ 124 - 0
app/admin/controller/DataChange.php

@@ -0,0 +1,124 @@
+<?php
+
+
+namespace app\admin\controller;
+
+
+use app\admin\model\GoodZixun;use app\cxinv\model\CaixiaoData;use think\App;use think\facade\Validate;class DataChange extends Base{
+    public function __construct(App $app) {
+        parent::__construct($app);
+        $this->model=new \app\admin\model\DataChange();
+    }
+
+    public function create(){
+        $param =$this->request->only(["code"=>'',"source"=>"","remark"=>"","type"=>"",'oaCode'=>'',"change"=>"","apply_id"=>""],
+            "post","trim");
+        $valid =Validate::rule([
+            "code|订单编号"=>"require",
+            "source|修正类型"=>"require|number|in:1,2,3", # 1 数据修正 2 二次议价咨询单 3 数据同步结算
+            "type|订单类型"=>"require|number|in:1,2,3",# 1 采购单 2 销售单 3 咨询商品
+            "apply_id|申请人"=>"require|number",
+            "change|修改字段内容"=>"require|array"
+            ]);
+
+        if($valid->check($param)==false) return error($valid->getError());
+        $array_diff=[];
+        if($param['type']==1){
+            $purchOrder = \app\admin\model\PurcheaseOrder::where("cgdNo",$param['code'])->findOrEmpty();
+            if($purchOrder->isEmpty()) return error("采购单不存在");
+            $orderIsCheck = CaixiaoData::order_is_check($param['code'],1);
+            if(!empty($orderIsCheck)){
+                return  error("采购单存在已对账数据",10005,$orderIsCheck);
+            }
+            if($purchOrder['order_source']!=2) return error("供应商非咨询单订单不可修改");
+            $array_diff=array_diff($param['change'],$purchOrder);
+            if(array_key_exists("supplierNo",$array_diff)){
+                $persion = \app\user\model\Supplier::where("code",$array_diff['supplierNo'])->findOrEmpty();
+                $array_diff['cgder'] =$persion->person?:'';
+                $array_diff['cgder_id'] =$persion->personid?:'';
+            }
+            $before= array_diff($purchOrder,$param['change']);
+        }
+        if($param['type']==2){
+            $saleOrder = \app\admin\model\Sale::where("orderCode",$param['code'])->findOrEmpty();
+            if($saleOrder->isEmpty()) return error("销售单不存在");
+            $orderIsCheck = CaixiaoData::order_is_check($param['code']);
+            if(!empty($orderIsCheck)){
+                return  error("销售单存在已对账数据",10005,$orderIsCheck);
+            }
+            $array_diff=array_diff($param['change'],$saleOrder);
+            $before= array_diff($saleOrder,$param['change']);
+        }
+        if($param['type']==3){
+            $good = GoodZixun::where("spuCode",$param['code'])->findOrEmpty();
+            if($good->isEmpty()) return error("咨询商品不存在");
+            $array_diff=array_diff($param['change'],$good);
+            $before= array_diff($good,$param['change']);
+        }
+        $isT= $this->model->where(["code"=>$param['code'],"status"=>1])->findOrEmpty();
+        if($isT->isEmpty()==false)return error("订单修改存在未完成得流程");
+        $data=[
+            'code'=>$param['code'],
+            'type'=>$param['type'],
+            'source'=>$param['source'],
+            'before'=>$before,
+            'after'=>$array_diff,
+            'oaCode'=>$param['oaCode'],
+            'apply_id'=>$param['apply_id'],
+            'apply_name'=>\app\user\model\User::where("account_id",$param['apply_id'])->value("nickname",""),
+            'creater_id'=>$this->uid,
+            'creater'=>$this->uname,
+            'remark'=>$param['remark'],
+            'status'=>$param['source']==3?2:1,
+  		];
+  	   $this->model->create($data);
+  	   return success("新建成功");
+    }
+
+    public function list(){
+        $param = $this->request->only(['code'=>'','oaCode'=>'','type'=>'','source'=>'','apply_name'=>'','status'=>'','page'=>1,
+        'size'=>15],'post','trim');
+        $param['source']==''?: $where[]=['source','=',$param['source']];
+        $param['code']==''?: $where[]=['code','like',"%{$param['code']}%"];
+        $param['apply_name']==''?: $where[]=['apply_name','like',"%{$param['apply_name']}%"];
+        $param['oaCode']==''?: $where[]=['oaCode','like',"%{$param['oaCode']}%"];
+        $param['type']==''?: $where[]=['type','=',$param['type']];
+        $param['status']==''?: $where[]=['status','=',$param['status']];
+        $list = $this->model->where($where)->order('id','desc')->paginate(['page'=>$param['page'],
+        'list_rows'=>$param['size']]);
+  	return success('获取成功',['list'=>$list->items(),'count'=>$list->total()]);
+  }
+
+  public function info(){
+     $param = $this->request->only(['id'],'post','trim');
+     $info = $this->model->findOrEmpty($param['id']);
+     return success('获取成功',$info);
+  }
+  public function status(){
+        $param = $this->request->only(['id'=>"",'status'=>"",'remark'=>""],'post','trim');
+        $Valid =Validate::rule(["id|申请id"=>"require","status|状态"=>"require|number|in:2,3"]);
+        if($Valid->check($param)==false) return error($Valid->getError());
+        $info = $this->model->findOrEmpty($param['id']);
+        if($info->isEmpty())return error('未找到申请单数据');
+        if($info->status!=1) return error("申请单数据已审核");
+        $info->status=$param['status'];
+        $info->remark=$param['remark'];
+        if($param['status']==2){
+           if($param['type']==1){
+                $orderIsCheck = CaixiaoData::order_is_check($param['code'],1);
+                if(!empty($orderIsCheck)){
+                    return  error('采购单存在已对账数据',10005,$orderIsCheck);
+                }
+            }
+            if($param['type']==2){
+                $orderIsCheck = CaixiaoData::order_is_check($param['code']);
+                if(!empty($orderIsCheck)){
+                    return  error('销售单存在已对账数据',10005,$orderIsCheck);
+                }
+            }
+        }
+        $info->save();
+        return success("操作成功");
+  }
+
+}

+ 0 - 15
app/admin/controller/PurcheaseOrder.php

@@ -12,19 +12,4 @@ class PurcheaseOrder extends Base{
         $this->model = new \app\admin\model\PurcheaseOrder();
     }
     //再次同步采购单数据到结算
-    public function update(){
-        $cgdNo = $this->request->post("cgdNo","","trim");
-        if($cgdNo=="") return error("请传入正确参数");
-        $data = $this->model->where("cgdNo",$cgdNo)->findOrEmpty();
-        if($data->isEmpty()) return error("采购单不存在");
-        $data->updatetime = date("Y-m-d H:i:s");
-        $data->save();
-        if($data->order_type!=1){
-            $order= OrderNum::where('cgdNo',$cgdNo)->findOrEmpty();
-            if(!$order->isEmpty()){
-                \app\admin\model\Sale::where('orderCode',$order->orderCode)->update(['updatetime'=>date('Y-m-d H:i:s')]);
-            };
-        }
-        return success("更新成功");
-    }
 }

+ 13 - 0
app/admin/controller/Sale.php

@@ -0,0 +1,13 @@
+<?php
+
+
+namespace app\admin\controller;
+
+
+use app\admin\model\OrderNum;use think\App;
+class Sale extends Base{
+    public function __construct(App $app) {
+        parent::__construct($app);
+        $this->model = new \app\admin\model\Sale();
+    }
+}

+ 183 - 2
app/admin/model/DataChange.php

@@ -1,14 +1,16 @@
 <?php
 namespace app\admin\model;
 
+use think\Model;use think\model\concern\SoftDelete;
 class DataChange extends Base
 {
 //设置字段信息
+    use SoftDelete;
     protected $schema = [
         'id'       =>'bigint',//
         'code'       =>'varchar',//数据编号
         'oaCode'       =>'varchar',//
-        'source'       =>'tinyint',//1数据修正 2 二次议价咨询单
+        'source'       =>'tinyint',//1数据修正 2 二次议价咨询单 3 数据同步
         'type'       =>'tinyint',//数据类型 1 订单 2 采购单
         'before'       =>'varchar',//更新字段数据
         'after'       =>'varchar',//更新后数据字段
@@ -21,6 +23,185 @@ class DataChange extends Base
         'updatetime'       =>'datetime',//
         'delete_time'       =>'datetime',//
         'remark'       =>'varchar',//
-
     ];
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $deleteTime = 'delete_time';
+
+    public function getBeforeAttr($value){
+        return json_decode($value,true);
+    }
+    public function getAfterAttr($value){
+        return json_decode($value,true);
+    }
+    public function setBeforeAttr($value){
+        return json_encode($value,JSON_UNESCAPED_UNICODE);
+    }
+    public function setAfterAttr($value){
+        return json_encode($value,JSON_UNESCAPED_UNICODE);
+    }
+
+    public static function onAfterWrite(Model $model) : void{
+       if($model->source==3 && $model->status==2){
+             self::upOrder($model);
+       }
+       $change = $model->getChangedData();
+       if(array_key_exists("status",$change) && $change['status']==2 && in_array($model->source,[1,2])){
+            self::updateOrder($model);
+       }
+    }
+    //数据同步
+    public static function upOrder($data){
+       if($data['type']==1){
+        PurcheaseOrder::where(['cgdNo'=>$data['code']])->update($data['after']);
+       }
+       if($data['type']==2){
+           Sale::where(['orderCode'=>$data['code']])->update($data['after']);
+       }
+    }
+     //数据修正
+     public static function updateOrder($data) {
+		   if($data['type']==1){
+		    self::cgdUpdate($data);
+		   }
+		   if($data['type']==2){
+		     self::qrdUpdate($data);
+		   }
+		   if($data['type']==3){
+		     self::goodUpdate($data);
+		   }
+	}
+    /**
+	* @param $row
+	* @throws \Exception
+    */
+	public static function cgdUpdate($row){
+        $purchease =PurcheaseOrder::where(['cgdNo'=>$row['code']])->findOrEmpty();
+        if($purchease->isEmpty()) throw new \Exception('未找到采购单');
+        foreach ($row['after'] as $key=>$item){
+        	$purchease->$key=$item;
+        }
+        $wsm=WarehouseInfo::where(['supplierNo' => $purchease['supplierNo'], 'companyNo' =>
+        $purchease['companyNo'], 'wsm_type' => 2, 'is_del' => 0])->findOrEmpty();
+        if($wsm->isEmpty()){
+        	$wsm_code = makeNo('WSM');
+            $inwsm = [
+                'wsm_code' => $wsm_code,
+                'name' =>$purchease['supplier_name'],
+                'wsm_type' => 2,
+                'supplierNo' =>$purchease['supplierNo'],
+                'supplierName' => $purchease['supplier_name'],
+                'addr' => '',
+                'addrs_code' => '',
+                'contactor' => $purchease['good_createrid'],
+                'contactor_name' =>$purchease['good_creater'],
+                'mobile' => '',
+                'position' => '',
+                'companyNo' => $purchease['companyNo'],
+                'companyName' => $purchease['companyName'],
+                'status' => 1,
+                'is_del' => 0,
+                'addtime' => date('Y-m-d H:i:s'),
+                'updatetime' => date('Y-m-d H:i:s'),
+                'createrid' => $row['apply_id'],
+                'creater' => $row['apply_name'],
+                'updaterid' =>  $row['apply_id'],
+                'updater' => $row['apply_name'],
+            ];
+          $sin=WarehouseInfo::create($inwsm);
+          if($sin==false) throw new \Exception('采购单对应得仓库创建失败');
+        }else $wsm_code = $wsm['wsm_code'];
+        if($purchease['wsm_code']!=$wsm_code){
+        	 $good_stock= GoodStock::where(['spuCode'=>$purchease['spuCode'],
+        	 'wsm_code'=>$purchease['wsm_code']])->findOrEmpty();
+        	 if($good_stock->isEmpty()) throw new \Exception('商品库存数据未找到');
+        	 $good_stock->wsm_code = $wsm_code;
+        	 $goodup =$good_stock->save();
+        	 if($goodup==false) throw new \Exception('商品库存数据更新失败');
+        	 $purchease->wsm_code= $wsm_code;
+        }
+        $up=$purchease->save();
+        if($up==false) throw new \Exception('采购单数据更新失败');
+        self::upQrd($purchease);
+        $good=GoodZixun::where(['spuCode'=>$purchease['spuCode']])->findOrEmpty();
+        if($good->isEmpty())throw new \Exception('商品数据未找到');
+        $good->supplierNo=$purchease['supplierNo'];
+        $good->supplierName=$purchease['supplier_name'];
+        $good->createrid=$purchease['good_createrid'];
+        $good->creater=$purchease['good_creater'];
+        $goodup = $good->save();
+        if($goodup ==false) throw new \Exception('商品数据更新失败');
+	}
+
+	/**
+	* @param $row
+	* @throws \Exception
+	*/
+	public static function qrdUpdate($row){
+        $sale =Sale::where('orderCode',$row->code)->findOrEmpty();
+        if($sale->isEmpty()) throw new \Exception('销售单数据未找到');
+        foreach ($row->after as $key=>$item){
+        	$sale->$key=$item;
+        }
+		$saleup=$sale->save();
+		if($saleup==false) throw new \Exception('销售单数据更新失败');
+         $outchild=OrderOutChild::where(['orderCode'=>$sale['orderCode'],'is_del'=>0])->findOrEmpty();
+        if(!$outchild->isEmpty()){
+            $outchild->customer_code=$sale['customer_code'];
+            $outchild->customer_name=$sale['customerName'];
+            $save=$outchild->save();
+            if($save==false) throw new \Exception('销售单子表数据更新失败');
+        }
+	}
+	/**
+	* @param $cgd
+	* @throws \think\Exception
+	* @throws \think\db\exception\DbException
+	 */
+	public static function upQrd($cgd){
+	    $orderCode = OrderNum::where('cgdNo',$cgd['cgdNo'])->value("orderCode","");
+	    if( $orderCode=="") throw new \Exception('未找到对应得销售单号');
+
+        $qrd = Sale::where('orderCode',$orderCode)->findOrEmpty();
+        if(empty($qrd)) throw new \Exception('未找到对应得销售单');
+        $qrd->supNo=$cgd['supplierNo'];
+        $qrd->supName=$cgd['supplier_name'];
+        $qrd->good_createrid=$cgd['good_createrid'];
+        $qrd->good_creater=$cgd['good_creater'];
+        $up=$qrd->save();
+        if($up==false) throw new \Exception('销售单数据更新失败');
+        $out =OrderOut::where(['orderCode'=>$orderCode,'is_del'=>0])->findOrEmpty();
+        if(!$out->isEmpty()){
+            $outUp=OrderOut::where(['orderCode'=>$orderCode,'is_del'=>0])->update
+        	(['wsm_code'=>$cgd['wsm_code'],'updatetime'=>date('Y-m-d H:i:s')]);
+            if($outUp==false) throw new \Exception('发货单数据更新失败');
+        }
+
+        $outchild =OrderOutChild::where(['orderCode'=>$orderCode,'is_del'=>0])->findOrEmpty();
+
+        if(!$outchild->isEmpty()){
+        	$outChidup=OrderOutChild::where(['orderCode'=>$orderCode,'is_del'=>0])->update
+        	(['wsm_code'=>$cgd['wsm_code'],
+        	'supplierNo'=>$cgd['supplierNo'],
+        	'supplierName'=>$cgd['supplier_name'],
+        	'updatetime'=>date('Y-m-d H:i:s')]);
+        	if($outChidup==false) throw new \Exception('发货工单数据更新失败');
+        }
+	}
+	/**
+	* @param $row
+	 */
+	public static function goodUpdate($row){
+        $good = GoodZixun::where('spuCode',$row->code)->findOrEmpty();
+        if(empty($good))throw new \Exception('未找到对应得商品数据');
+         foreach ($row->after as $key=>$item){
+        	$good->$key=$item;
+        }
+         $goodup=$good->save();
+         if($goodup==false) throw new \Exception('商品数据更新失败');
+         $saleup =Sale::where('good_code',$row->code)->update(['updatetime'=>date('Y-m-d H:i:s')]);
+         if($saleup==false) throw new \Exception('商品数据销售单更新失败');
+         $cgdup =PurcheaseOrder::where('spuCode',$row->code)->update(['updatetime'=>date('Y-m-d H:i:s')]);
+          if($cgdup==false) throw new \Exception('商品数据采购单更新失败');
+	}
 }

+ 2 - 1
app/admin/model/GoodStock.php

@@ -19,6 +19,7 @@ class GoodStock extends Base
         'warn_stock'       =>'int',//预警库存
         'addtime'       =>'datetime',//
         'updatetime'       =>'datetime',//
-
     ];
+    protected $createTime = 'addtime';
+    protected $updateTime = 'updatetime';
 }

+ 1 - 1
app/common.php

@@ -155,4 +155,4 @@ if(!function_exists('validate_invoice_info')){
             }
 		}
     }
-}
+}

+ 20 - 3
app/cxinv/model/Assoc.php

@@ -25,9 +25,9 @@ class Assoc extends Base
        ];
     protected $createTime = 'addtime';
     protected $updateTime = 'updatetime';
-
+    # 关联查询
     public static function CheckTrad($logNo,$status){
-        $Ascc = self::where(["viceCode"=>$logNo,"status"=>1,"is_del"=>0])->select();
+        $Ascc = self::where(["viceCode"=>$logNo,"is_del"=>0])->select();
         if($Ascc->isEmpty()) throw new \Exception("资金{$logNo}关联订单不存在");
         $Ascc->each(function($item) use($status){
             if($status==2) self::CheckFinsh($item);
@@ -35,7 +35,7 @@ class Assoc extends Base
             if($status==4||$status==5) self::CheckRefund($item);
         });
     }
-
+    # 核销金额 付款完成
     public static function CheckFinsh($data){
         $qrd = QrdInfo::where(["sequenceNo"=>$data->orderCode,"is_del"=>0])->findOrEmpty();
         if($qrd->isEmpty()) throw new \Exception("关联订单{$data->orderCode}不存在");
@@ -54,6 +54,7 @@ class Assoc extends Base
         $assup=$data->save();
         if(!$assup) throw new \Exception("关联信息{$data->AssocNo}更新失败");
     }
+    # 付款流程解除
     public static function CheckBack($data){
         $qrd = QrdInfo::where(["sequenceNo"=>$data->orderCode,"is_del"=>0])->findOrEmpty();
         if($qrd->isEmpty()) throw new \Exception("关联订单{$data->orderCode}不存在");
@@ -71,6 +72,7 @@ class Assoc extends Base
         $assup=$data->save();
         if(!$assup) throw new \Exception("关联信息{$data->AssocNo}更新失败");
     }
+    # 已付款数据退款
     public static function CheckRefund($data){
         $qrd = QrdInfo::where(["sequenceNo"=>$data->orderCode,"is_del"=>0])->findOrEmpty();
         if($qrd->isEmpty()) throw new \Exception("关联订单{$data->orderCode}不存在");
@@ -88,4 +90,19 @@ class Assoc extends Base
         $assup=$data->save();
         if(!$assup) throw new \Exception("关联信息{$data->AssocNo}更新失败");
     }
+    public static function CheckQrd($orderCode,&$data)
+    {
+        $asscoinfo =self::where(['orderCode'=>$orderCode,'status'=>[1,2],'is_del'=>0])->column
+        	                    ('viceCode','type');
+         if(isset($asscoinfo[1])){
+            $pool = InvoicePool::where('invNo',$asscoinfo[1])->findOrEmpty();
+            $temp=['type'=>'结算销售单开票申请','username'=> $pool->apply_name,'orderCode'=>$asscoinfo[1],'companyName'=>$pool->inv_company];
+            $data[]=$temp;
+        }
+         if(isset($asscoinfo[2])){
+            $pool = TradePool::with(['company'])->where('logNo',$asscoinfo[2])->findOrEmpty();
+            $temp=['type'=>'结算销售单资金认领','username'=> $pool->apply_name,'orderCode'=>$asscoinfo[2],'companyName'=>$pool->companyName];
+             $data[]=$temp;
+          }
+    }
 }

+ 14 - 0
app/cxinv/model/CaixiaoData.php

@@ -12,4 +12,18 @@ class CaixiaoData extends Base
         'status'  =>'tinyint',//使用状态 1 未入表0 已入表
         'addtime'  =>'datetime',//
        ];
+    protected $createTime = 'addtime';
+
+   public static function order_is_check($orderCode,$isCgdBack=0,$is_cgd_refund = 0):array{
+             $data=[];
+             if($isCgdBack==0) {
+                  QrdInfo::CheckQrd($orderCode,$data);
+        	      CgdInfo::CheckCgd(['cxCode'=>$orderCode],$data);
+    	         if($is_cgd_refund==1)CgdInfo::CheckCgd(['qrdCode'=>$orderCode],$data);
+             }else{
+                 CgdInfo::CheckCgd(['sequenceNo'=>$orderCode],$data);
+                 CgdInfo::CheckCgd(['is_comon'=>2,'mainCode'=>$orderCode],$data);
+             }
+             return $data;
+     }
 }

+ 27 - 0
app/cxinv/model/CgdInfo.php

@@ -93,4 +93,31 @@ class CgdInfo extends Base
        ];
     protected $updateTime = 'updatetime';
     protected $createTime = 'addtime';
+
+    public static function CheckCgd($where,&$data){
+        $cgdinfo= self::where($where)->where(['status'=>1,'is_del'=>0])->findOrEmpty();
+        if(!$cgdinfo->isEmpty()){
+            if($cgdinfo['inv_tag']==1){
+                $uname= TagLog::alias('a')
+	          	        ->join('order_tag b','a.tag_id=b.id','left')
+	          	        ->where(['code'=>$cgdinfo['sequenceNo'],'b.type'=>6])
+	          	        ->order('a.id desc')
+	          	        ->value('creater','');
+               $data[]=['type'=>'结算采购单回票标签','username'=> $uname,'orderCode'=>$cgdinfo['sequenceNo'],
+               'companyName'=>$cgdinfo['companyName']];
+           }
+
+           if($cgdinfo['pay_tag']==1){
+                           $uname= TagLog::alias('a')
+	          	        ->join('order_tag b','a.tag_id=b.id','left')
+	          	        ->where(['code'=>$cgdinfo['sequenceNo'],'b.type'=>5])
+	          	        ->order('a.id desc')
+	          	        ->value('creater','');
+               $data[]=['type'=>'结算采购单付款标签','username'=>  $uname,'orderCode'=>$cgdinfo['sequenceNo'],'companyName'=>$cgdinfo['companyName']];
+           }
+           PayInfo::CheckCgd($cgdinfo['sequenceNo'],$data);
+           InvoiceOrder::CheckOrder($cgdinfo['sequenceNo'],$data);
+        }
+
+    }
 }

+ 14 - 0
app/cxinv/model/InvoiceOrder.php

@@ -163,4 +163,18 @@ class InvoiceOrder extends Base{
            }
          }
     }
+
+    public static function CheckOrder($code,&$data){
+        $InvoiceOrder = InvoiceOrder::with(['ItemInfo'])->where(['code'=>$code,'status'=>[1,2]])->select();
+       if(!$InvoiceOrder->isEmpty()){
+           $hpinfo=[];
+           foreach ($InvoiceOrder as $item){
+                    if(isset($hpinfo[$item->ItemInfo->invoiceCode]))continue;
+                     $hpinfo[$item->ItemInfo->invoiceCode] = $item->ItemInfo->invoiceCode;
+                    $hp = PayInvoice::with(['invoice'])->where(['hpNo'=>$item->ItemInfo->invoiceCode])->findOrEmpty();
+                    $data[]=['type'=>'发票池关联采购单','username'=> $hp['apply_name'],'orderCode'=>$hp['hpNo'],'companyName'=>$hp['companyName']];
+               }
+
+       }
+    }
 }

+ 41 - 0
app/cxinv/model/Pay.php

@@ -37,4 +37,45 @@ class Pay extends Base
 
     protected $createTime = 'addtime';
     protected $updateTime = 'updatetime';
+    public static $status=['待提交','待买方审核','审核通过','审核驳回','对账单无效'];
+    # 添加发票发票进行中
+    public static function addInv($payNo,$payfee){
+        $pay = self::where(['payNo'=>$payNo,'status'=>2,'is_del'=>0])->findOrEmpty();
+        if($pay->isEmpty())throw new \Exception("对账单{$payNo}不存在");
+        if($pay->winv_fee<$payfee)throw new \Exception("对账单{$payNo}未开票金额不足");
+        $pay->winv_fee=$pay->winv_fee-$payfee;
+        $pay->inv_fee=$pay->inv_fee+$payfee;
+        $pay->inv_status= 2;
+        $pay->save();
+    }
+    # 添加发票已开票
+    public static function addAinv($payNo,$payfee){
+        $pay = self::where(['payNo'=>$payNo,'status'=>2,'is_del'=>0])->findOrEmpty();
+        if($pay->isEmpty())throw new \Exception("对账单{$payNo}不存在");
+        if($pay->inv_fee<$payfee)throw new \Exception("对账单{$payNo}开票中金额不足");
+        $pay->inv_fee=$pay->inv_fee-$payfee;
+        $pay->ainv_fee=$pay->ainv_fee+$payfee;
+        $pay->inv_status= $pay->winv_fee==0 && $pay->inv_fee==0 ? 3 : 2;
+        $pay->save();
+    }
+    # 删除发票已开票
+    public static function subAinv($payNo,$payfee){
+        $pay = self::where(['payNo'=>$payNo,'status'=>2,'is_del'=>0])->findOrEmpty();
+        if($pay->isEmpty())throw new \Exception("对账单{$payNo}不存在");
+        if($pay->ainv_fee<$payfee)throw new \Exception("对账单{$payNo}开票金额不足");
+        $pay->ainv_fee=$pay->ainv_fee-$payfee;
+        $pay->winv_fee=$pay->winv_fee+$payfee;
+        $pay->inv_status= $pay->ainv_fee==0 && $pay->inv_fee==0 ? 1 : 2;
+        $pay->save();
+    }
+    # 删除发票未开票
+    public static function subInv($payNo,$payfee){
+        $pay = self::where(['payNo'=>$payNo,'status'=>2,'is_del'=>0])->findOrEmpty();
+        if($pay->isEmpty())throw new \Exception("对账单{$payNo}不存在");
+        if($pay->inv_fee<$payfee)throw new \Exception("对账单{$payNo}开票中金额不足");
+        $pay->inv_fee=$pay->inv_fee-$payfee;
+        $pay->winv_fee=$pay->winv_fee+$payfee;
+        $pay->inv_status= $pay->ainv_fee==0 && $pay->inv_fee==0 ? 1 : 2;
+        $pay->save();
+    }
 }

+ 24 - 0
app/cxinv/model/PayInfo.php

@@ -18,4 +18,28 @@ class PayInfo extends Base
         'addtime'  =>'datetime',//
         'updatetime'  =>'datetime',//
        ];
+    protected $createTime = 'addtime';
+    protected $updateTime = 'updatetime';
+
+    public static function CheckCgd($cgdNo,&$data){
+        $payinfo=self::where(['cgdNo'=>$cgdNo,'status'=>1,'is_del'=>0])->findOrEmpty();
+        if(!$payinfo->isEmpty()){
+           $pay = Pay::where('payNo', $payinfo->payNo)->findOrEmpty();
+           $data[]=['type'=>'采购对账单','username'=>$pay->apply_name,'orderCode'=>$pay->payNo,'companyName'=>$pay->companyName];
+            $hp = PayInvoice::where(['payNo'=>$pay->payNo,'is_del'=>0,'status'=>[1,2,3,4]])
+            ->column('hpNo,apply_name');
+            if(!empty($hp)){
+                foreach ($hp as $item){
+                    $data[]=['type'=>'采购对账单回票','username'=> $item['apply_name'],'orderCode'=>$item['hpNo'],'companyName'=>$pay->companyName];
+                }
+            }
+            $paydz = PayPayment::where(['payNo'=>$pay->payNo,'is_del'=>0,'status'=>[1,2,3,4]])
+            ->column('dzNo,apply_name');
+             if(!empty($paydz)){
+                foreach ($paydz as $item){
+                    $data[]=['type'=>'采购对账单付款','username'=> $item['apply_name'],'orderCode'=>$item['dzNo'],'companyName'=>$pay->companyName];
+                }
+            }
+        }
+    }
 }

+ 27 - 0
app/cxinv/model/QrdInfo.php

@@ -88,4 +88,31 @@ class QrdInfo extends Base
        ];
     protected $createTime = 'addtime';
     protected $updateTime = 'updatetime';
+    public static function CheckQrd($orderCode,&$data)
+    {
+         $qrdinf =self::where(['sequenceNo|cxCode'=>$orderCode,'is_del'=>0])
+    	  	  ->field('sequenceNo,ownerName,companyName,inv_tag,pay_tag')->select()->toArray();
+            if(!empty($qrdinf)){
+	          	foreach ($qrdinf as $item){
+	          	    if($item['inv_tag']==1){
+	          	        $uname= TagLog::alias('a')
+	          	        ->join('order_tag b','a.tag_id=b.id','left')
+	          	        ->where(['code'=>$item['sequenceNo'],'b.type'=>2])
+	          	        ->order('a.id desc')
+	          	        ->value('creater','');
+	          	    	$data[]=['type'=>'结算销售单开票标签','username'=>$uname,'orderCode'=>$item['sequenceNo'],'companyName'=>$item['companyName']];
+	          	    }
+
+	          	    if($item['pay_tag']==1){
+	          	         $uname= TagLog::alias('a')
+	          	        ->join('order_tag b','a.tag_id=b.id','left')
+	          	        ->where(['code'=>$item['sequenceNo'],'b.type'=>1])
+	          	        ->order('a.id desc')
+	          	        ->value('creater','');
+	          	    	$data[]=['type'=>'结算销售单付款标签','username'=>  $uname,'orderCode'=>$item['sequenceNo'],'companyName'=>$item['companyName']];
+	          	    }
+	          	    Assoc::CheckQrd($item['sequenceNo'],$data);
+	          	}
+	          }
+    }
 }