|
@@ -75,56 +75,88 @@ class InvoiceOrder extends Base{
|
|
|
$id= $model->id;
|
|
|
$info = InvoiceOrder::where(['id'=>$id])->findOrEmpty();
|
|
|
if(!$info->isEmpty())return ;
|
|
|
- if(in_array($info->status,[1,2])){
|
|
|
- $cgdinfo = CgdInfo::where(['sequenceNo'=>$info->code])->findOrEmpty();
|
|
|
- if(!$cgdinfo->isEmpty()){
|
|
|
- $cgdinfo->winv_fee = bcsub($cgdinfo->winv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
+ if(in_array($info->status,[1,2])) self::orderIn($info->code,bcsub($info->total_amount,$info->balance_amount,2));
|
|
|
+
|
|
|
+ if($info->status==3) self::orderOut($info->code,bcsub($info->total_amount,$info->balance_amount,2));
|
|
|
+ if($info->status==4) self::orderCancel($info->code,bcsub($info->total_amount,$info->balance_amount,2));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function onBeforeDelete($model){
|
|
|
+ $id=$model->id;
|
|
|
+ $info = InvoiceOrder::where(['id'=>$id])->findOrEmpty();
|
|
|
+ if(!$info->isEmpty())return ;
|
|
|
+ if(in_array($info->status,[1,2])) self::orderOut($info->code,bcsub($info->total_amount,$info->balance_amount,2));
|
|
|
+ }
|
|
|
+ //订单关联初始化金额
|
|
|
+ public static function orderIn($code,$fee){
|
|
|
+ $cgdinfo = CgdInfo::where(['sequenceNo'=>$code])->findOrEmpty();
|
|
|
+ if(!$cgdinfo->isEmpty() && $cgdinfo->winv_fee>=strval($fee)){
|
|
|
+ $cgdinfo->winv_fee = bcsub($cgdinfo->winv_fee,strval($fee),2);
|
|
|
$cgdinfo->save();
|
|
|
}
|
|
|
- $payinfo = PayInfo::where(["cgdNo"=>$info->code,"status"=>1,"is_del"=>0])->findOrEmpty();
|
|
|
+ $payinfo = PayInfo::where(['cgdNo'=>$code,'status'=>1,'is_del'=>0])->findOrEmpty();
|
|
|
if(!$payinfo->isEmpty()){
|
|
|
- $pay= Pay::where(['payNo'=>$payinfo->payNo,"status"=>2])->findOrEmpty();
|
|
|
- if(!$pay->isEmpty()){
|
|
|
- $pay->winv_fee=bcsub($pay->winv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $pay->inv_fee = bcadd($pay->inv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
+ $pay= Pay::where(['payNo'=>$payinfo->payNo,'status'=>2])->findOrEmpty();
|
|
|
+ if(!$pay->isEmpty() && $pay->winv_fee>=strval($fee)){
|
|
|
+ $pay->winv_fee=bcsub($pay->winv_fee,strval($fee),2);
|
|
|
+ $pay->inv_fee = bcadd($pay->inv_fee,strval($fee),2);
|
|
|
$pay->save();
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- if($info->status==3){
|
|
|
- $cgdinfo = CgdInfo::where(['sequenceNo'=>$info->code])->findOrEmpty();
|
|
|
- if(!$cgdinfo->isEmpty()){
|
|
|
- $cgdinfo->winv_fee = bcadd($cgdinfo->winv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $cgdinfo->save();
|
|
|
- }
|
|
|
- $payinfo = PayInfo::where(['cgdNo'=>$info->code,'status'=>1,'is_del'=>0])->findOrEmpty();
|
|
|
- if(!$payinfo->isEmpty()){
|
|
|
- $pay= Pay::where(['payNo'=>$payinfo->payNo,'status'=>2])->findOrEmpty();
|
|
|
- if(!$pay->isEmpty()){
|
|
|
- $pay->winv_fee=bcadd($pay->winv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $pay->inv_fee = bcsub($pay->inv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $pay->save();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if($info->status==4){
|
|
|
- $cgdinfo = CgdInfo::where(['sequenceNo'=>$info->code])->findOrEmpty();
|
|
|
+ }
|
|
|
+ //流程未结束驳回中断
|
|
|
+ public static function orderOut($code,$fee){
|
|
|
+ $cgdinfo = CgdInfo::where(['sequenceNo'=>$code])->findOrEmpty();
|
|
|
+ if(!$cgdinfo->isEmpty()){
|
|
|
+ $cgdinfo->winv_fee = bcadd($cgdinfo->winv_fee,strval($fee),2);
|
|
|
+ $cgdinfo->save();
|
|
|
+ }
|
|
|
+ $payinfo = PayInfo::where(['cgdNo'=>$code,'status'=>1,'is_del'=>0])->findOrEmpty();
|
|
|
+ if(!$payinfo->isEmpty()){
|
|
|
+ $pay= Pay::where(['payNo'=>$payinfo->payNo,'status'=>2])->findOrEmpty();
|
|
|
+ if(!$pay->isEmpty() && $pay->inv_fee>=strval($fee)){
|
|
|
+ $pay->winv_fee=bcadd($pay->winv_fee,strval($fee),2);
|
|
|
+ $pay->inv_fee = bcsub($pay->inv_fee,strval($fee),2);
|
|
|
+ $pay->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function orderFinish($code,$fee){
|
|
|
+ $cgdinfo = CgdInfo::where(['sequenceNo'=>$code])->findOrEmpty();
|
|
|
+ if(!$cgdinfo->isEmpty()){
|
|
|
+ $cgdinfo->ainv_fee = bcadd($cgdinfo->ainv_fee,strval($fee),2);
|
|
|
+ $cgdinfo->inv_status = $cgdinfo->ainv_fee==$cgdinfo->totalPrice&& $cgdinfo->winv_fee==0 ?3:2;
|
|
|
+ $cgdinfo->save();
|
|
|
+ }
|
|
|
+ $payinfo = PayInfo::where(['cgdNo'=>$code,'status'=>1,'is_del'=>0])->findOrEmpty();
|
|
|
+ if(!$payinfo->isEmpty()){
|
|
|
+ $pay= Pay::where(['payNo'=>$payinfo->payNo,'status'=>2])->findOrEmpty();
|
|
|
+ if(!$pay->isEmpty() && $pay->inv_fee>=strval($fee)){
|
|
|
+ $pay->ainv_fee=bcadd($pay->ainv_fee,strval($fee),2);
|
|
|
+ $pay->inv_fee = bcsub($pay->inv_fee,strval($fee),2);
|
|
|
+ $pay->inv_status = $pay->winv_fee==0 && $pay->inv_fee==0?3:2;
|
|
|
+ $pay->save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public static function orderCancel($code,$fee){
|
|
|
+ $cgdinfo = CgdInfo::where(['sequenceNo'=>$code])->findOrEmpty();
|
|
|
if(!$cgdinfo->isEmpty()){
|
|
|
- $cgdinfo->winv_fee = bcadd($cgdinfo->winv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $cgdinfo->ainv_fee = bcsub($cgdinfo->ainv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $cgdinfo->inv_status = $cgdinfo->ainv_fee==0?1:2;
|
|
|
+ $cgdinfo->winv_fee = bcadd($cgdinfo->winv_fee,strval($fee),2);
|
|
|
+ $cgdinfo->ainv_fee = bcsub($cgdinfo->ainv_fee,strval($fee),2);
|
|
|
+ $cgdinfo->inv_status = $cgdinfo->ainv_fee==0 && $cgdinfo->winv_fee==$cgdinfo->totalPrice?1:2;
|
|
|
$cgdinfo->save();
|
|
|
}
|
|
|
- $payinfo = PayInfo::where(['cgdNo'=>$info->code,'status'=>1,'is_del'=>0])->findOrEmpty();
|
|
|
+ $payinfo = PayInfo::where(['cgdNo'=>$code,'status'=>1,'is_del'=>0])->findOrEmpty();
|
|
|
if(!$payinfo->isEmpty()){
|
|
|
$pay= Pay::where(['payNo'=>$payinfo->payNo,'status'=>2])->findOrEmpty();
|
|
|
if(!$pay->isEmpty()){
|
|
|
- $pay->winv_fee=bcadd($pay->winv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
- $pay->ainv_fee = bcsub($pay->ainv_fee,bcsub($info->total_amount,$info->balance_amount,2),2);
|
|
|
+ $pay->winv_fee=bcadd($pay->winv_fee,strval($fee),2);
|
|
|
+ $pay->ainv_fee = bcsub($pay->ainv_fee,strval($fee),2);
|
|
|
$pay->inv_status = $pay->ainv_fee==0?1:2;
|
|
|
$pay->save();
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
}
|
|
|
}
|