提交 ab8a92de authored 作者: chengye's avatar chengye

test

上级 a14a7958
......@@ -8,6 +8,7 @@
namespace app\api\controller\v2\common;
use app\em\controller\Invoice;
use app\em\controller\WriteOff;
use app\em\model\EmAccount;
use app\em\model\EmPayment;
use app\em\model\EmPaymentFk;
......@@ -117,7 +118,7 @@ class Payment
$payment_id = 'JF2020071634700';
$res = 'cc';
$res = (new Invoice())->writeOffFromPayment($account_id, $payment_id);
$res = (new WriteOff())->writeOffFromPayment($account_id, $payment_id);
return $res;
}
......
......@@ -327,7 +327,6 @@ class Invoice extends Base
//从缴费单消账单
public function writeOffFromPayment($account_id,$payment_id){
return 'aaaaaaa';
Log::info('触发销账:'.$account_id.' | '.$payment_id);
//获取缴费单对象
$payment = EmPayment::where('payment_id','=',$payment_id)->find();
......
<?php
namespace app\em\controller;
use app\em\model\EmAccount;
use app\em\model\EmInvoice;
use app\em\model\EmPayment;
use app\em\model\EmPaymentInvoice;
use app\em\model\EmPaymentInvoiceBalance;
use think\Controller;
use think\facade\Log;
class WriteOff extends Controller
{
public function writeOffFromPayment($account_id,$payment_id){
return $account_id;
Log::info('触发销账:'.$account_id.' | '.$payment_id);
//获取缴费单对象
$payment = EmPayment::where('payment_id','=',$payment_id)->find();
//获取关联的账单对象
$invs = (new EmInvoice())->alias('ei')->field('ei.invoice_id')
->leftJoin(['em_payment_invoice'=>'epi'],'epi.invoice_id = ei.invoice_id')
->where('epi.payment_id','=',$payment_id)
->where('ei.payment_balance','neq',0)
->order('ei.invoice_id asc')
->select();
$invsArr = [];
//更新缴费单状态
if($invs->isEmpty()){
$payment->status = 4;
$payment->save();
return '审核成功';
} else {
foreach ($invs as $inv){
$invsArr[] = $inv->invoice_id;
}
}
//查询可消的额度
$payments_balance = (new EmInvoice)->where('invoice_id','in',$invsArr)->sum('payment_balance');
//如果可以完全销账 则继续销账
if($payment->balance > $payments_balance){
$invs = (new EmInvoice())->field('invoice_id')
->where('account_id','=',$account_id)
->where('payment_balance','neq',0)
->order('invoice_id asc')
->select();
if(!$invs->isEmpty()) {
foreach ($invs as $inv){
$invsArr[] = $inv->invoice_id;
}
}
}
$paymentIds[] = $payment->payment_id;
//处理账户金额
return $this->writeOff($paymentIds,$invsArr);
}
/**
* @param $account_id
* @param $invoiceIds
* @param $paymentIds
* @return mixed
*/
private function writeOff($paymentIds,$invoiceIds){
//获取可销账缴费单
$payments = EmPayment::where('payment_id','in',$paymentIds)->select();
//获取可销账账单
$invs = EmInvoice::where('invoice_id','in',$invoiceIds)->select();
$result = 0;
foreach ($payments as $key => $payment){
if($payment->balance == 0) continue;
foreach ($invs as $index => $inv) {
$balanceMode = new EmPaymentInvoiceBalance();
$balanceMode->payment_id = $payment->payment_id;
if ($inv->payment_balance == 0) continue;
$balanceMode->invoice_id = $inv->invoice_id;
//如果该缴费单可以完全消除当前账单额度
if ($payment->balance >= $inv->payment_balance) {
//单笔销账多少
$balanceMode->balance = $inv->payment_balance;
$payment->balance = $payment->balance - $inv->payment_balance;
//账单额度变化
$inv->payment_balance = 0;
//更新账户status 首字母 = 2
$inv->status = setInvoiceStatus($inv->status, 2);
} else {
//单笔销账多少
$balanceMode->balance = $payment->balance;
//账单额度变化
$inv->status = setInvoiceStatus($inv->status, 1);
$inv->payment_balance = $inv->payment_balance - $payment->balance;
//缴费额度变化
$payment->balance = 0;
}
//查找是否已经存在相关联的账单关系
$model = (new EmPaymentInvoice())->where(['payment_id'=>$payment->payment_id,'invoice_id'=>$inv->invoice_id])->find();
if(!$model){
$model->payment_id = $payment->payment_id;
$model->invoice_id = $inv->invoice_id;
$model->save();
}
$result++;
//更新账单状态
$inv->save();
//更新缴费状态
$payment->save();
unset($payments[$key]);
$balanceMode->isUpdate(false)->save();
//更新账户余额
$account = EmAccount::get(['account_id'=>$inv->account_id]);
$account->amount -= $balanceMode->balance;
$account->save();
}
}
$msg = $result == 0 ? '已审核,没有可销账的账单.' : '已审核,成功销账 '.$result.' 笔账单.';
return $msg;
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论