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

test

上级 8b7c7f60
...@@ -35,14 +35,18 @@ class Payment ...@@ -35,14 +35,18 @@ class Payment
{ {
$paymentFk = (new EmPaymentFk())->get(['oafk_numb' => $numb]); $paymentFk = (new EmPaymentFk())->get(['oafk_numb' => $numb]);
$payment = (new PaymentModel())->get(['payment_id' => $paymentFk->payment_id]); $payment = (new PaymentModel())->get(['payment_id' => $paymentFk->payment_id]);
$res = $this->writeOffFromPayment($payment->account_id, $payment->payment_id);
$payment->status = $status;
$payment->pay_date = time();
$account = EmAccount::get(['account_id'=>$payment->account_id]); $account = EmAccount::get(['account_id'=>$payment->account_id]);
$account->amount += $payment->amount ; $account->amount += $payment->amount ;
$account->save(); $account->save();
$payment->status = $status;
$payment->pay_date = time();
$payment->save();
$res = $this->writeOffFromPayment($payment->account_id, $payment->payment_id);
return json([ return json([
'code' => 200, 'code' => 200,
'message' => $mes ?: '已成功付款', 'message' => $mes ?: '已成功付款',
...@@ -95,43 +99,43 @@ class Payment ...@@ -95,43 +99,43 @@ class Payment
} }
//从缴费单消账单 //从缴费单消账单
public function writeOffFromPayment($account_id, $payment_id) public function writeOffFromPayment($account_id,$payment_id){
{
//获取缴费单对象 //获取缴费单对象
$payment = EmPayment::where('payment_id', '=', $payment_id)->find(); $payment = EmPayment::where('payment_id','=',$payment_id)->find();
//获取关联的账单对象 //获取关联的账单对象
$invs = (new EmInvoice())->alias('ei')->field('ei.invoice_id') $invs = (new EmInvoice())->alias('ei')->field('ei.invoice_id')
->leftJoin(['em_payment_invoice' => 'epi'], 'epi.invoice_id = ei.invoice_id') ->leftJoin(['em_payment_invoice'=>'epi'],'epi.invoice_id = ei.invoice_id')
->where('epi.payment_id', '=', $payment_id) ->where('epi.payment_id','=',$payment_id)
->where('ei.payment_balance', 'neq', 0) ->where('ei.payment_balance','neq',0)
->order('ei.invoice_id asc') ->order('ei.invoice_id asc')
->select(); ->select();
$invsArr = []; $invsArr = [];
//更新缴费单状态 //更新缴费单状态
if ($invs->isEmpty()) { if($invs->isEmpty()){
$payment->status = 4; $payment->status = 4;
$payment->pay_date = time();
$payment->save(); $payment->save();
return '审核成功'; return '审核成功';
} else { } else {
foreach ($invs as $inv) { foreach ($invs as $inv){
$invsArr[] = $inv->invoice_id; $invsArr[] = $inv->invoice_id;
} }
} }
//查询可消的额度 //查询可消的额度
$payments_balance = (new EmInvoice)->where('invoice_id', 'in', $invsArr)->sum('payment_balance'); $payments_balance = (new EmInvoice)->where('invoice_id','in',$invsArr)->sum('payment_balance');
//如果可以完全销账 则继续销账 //如果可以完全销账 则继续销账
if ($payment->balance > $payments_balance) { if($payment->balance > $payments_balance){
$invs = (new EmInvoice())->field('invoice_id') $invs = (new EmInvoice())->field('invoice_id')
->where('account_id', '=', $account_id) ->where('account_id','=',$account_id)
->where('payment_balance', 'neq', 0) ->where('payment_balance','neq',0)
->order('invoice_id asc') ->order('invoice_id asc')
->select(); ->select();
if (!$invs->isEmpty()) { if(!$invs->isEmpty()) {
foreach ($invs as $inv) { foreach ($invs as $inv){
$invsArr[] = $inv->invoice_id; $invsArr[] = $inv->invoice_id;
} }
} }
...@@ -140,7 +144,7 @@ class Payment ...@@ -140,7 +144,7 @@ class Payment
$paymentIds[] = $payment->payment_id; $paymentIds[] = $payment->payment_id;
//处理账户金额 //处理账户金额
return $this->writeOff($paymentIds, $invsArr); return $this->writeOff($paymentIds,$invsArr);
} }
/** /**
...@@ -149,58 +153,48 @@ class Payment ...@@ -149,58 +153,48 @@ class Payment
* @param $paymentIds * @param $paymentIds
* @return mixed * @return mixed
*/ */
private function writeOff($paymentIds, $invoiceIds) private function writeOff($paymentIds,$invoiceIds){
{
//获取可销账缴费单 //获取可销账缴费单
$payments = EmPayment::where('payment_id', 'in', $paymentIds)->select(); $payments = EmPayment::where('payment_id','in',$paymentIds)->select();
//获取可销账账单 //获取可销账账单
$invs = EmInvoice::where('invoice_id', 'in', $invoiceIds)->select(); $invs = EmInvoice::where('invoice_id','in',$invoiceIds)->select();
$result = 0; $result = 0;
foreach ($payments as $key => $payment) { foreach ($payments as $key => $payment){
if ($payment->balance == 0) if($payment->balance == 0) continue;
continue;
foreach ($invs as $index => $inv) { foreach ($invs as $index => $inv) {
$balanceMode = new EmPaymentInvoiceBalance(); $balanceMode = new EmPaymentInvoiceBalance();
$balanceMode->payment_id = $payment->payment_id; $balanceMode->payment_id = $payment->payment_id;
if ($inv->payment_balance == 0) if ($inv->payment_balance == 0) continue;
continue;
$balanceMode->invoice_id = $inv->invoice_id; $balanceMode->invoice_id = $inv->invoice_id;
//如果该缴费单可以完全消除当前账单额度 //如果该缴费单可以完全消除当前账单额度
if ($payment->balance >= $inv->payment_balance) { if ($payment->balance >= $inv->payment_balance) {
//单笔销账多少 //单笔销账多少
$balanceMode->balance = $inv->payment_balance; $balanceMode->balance = $inv->payment_balance;
//缴费额度变化
if (($payment->balance - $inv->payment_balance) == 0) {
$payment->status = 4;
} else {
$payment->status = 4; //缴费部分销账
}
$payment->balance = $payment->balance - $inv->payment_balance; $payment->balance = $payment->balance - $inv->payment_balance;
//账单额度变化 //账单额度变化
$inv->payment_balance = 0; $inv->payment_balance = 0;
//更新账户status 首字母 = 2 //更新账户status 首字母 = 2
$inv->status = $this->setInvoiceStatus($inv->status, 2); $inv->status = setInvoiceStatus($inv->status, 2);
} else { } else {
//单笔销账多少 //单笔销账多少
$balanceMode->balance = $payment->balance; $balanceMode->balance = $payment->balance;
//账单额度变化 //账单额度变化
$inv->status = $this->setInvoiceStatus($inv->status, 1); $inv->status = setInvoiceStatus($inv->status, 1);
$inv->payment_balance = $inv->payment_balance - $payment->balance; $inv->payment_balance = $inv->payment_balance - $payment->balance;
//缴费额度变化 //缴费额度变化
$payment->balance = 0; $payment->balance = 0;
$payment->status = 4; //缴费已经完全销账
} }
$model = new EmPaymentInvoice();
if (!$model->where(['payment_id' => $payment->payment_id, 'invoice_id' => $inv->invoice_id])->find()) { //查找是否已经存在相关联的账单关系
$model = (new EmPaymentInvoice())->where(['payment_id'=>$payment->payment_id,'invoice_id'=>$inv->invoice_id])->find();
if(!$model){
$model->payment_id = $payment->payment_id; $model->payment_id = $payment->payment_id;
$model->invoice_id = $inv->invoice_id; $model->invoice_id = $inv->invoice_id;
$model->save(); $model->save();
...@@ -209,31 +203,19 @@ class Payment ...@@ -209,31 +203,19 @@ class Payment
//更新账单状态 //更新账单状态
$inv->save(); $inv->save();
//todo::history; 保存历史记录
$invData = $inv->toArray();
$invData['id'] = null;
$invData['create_time'] = strtotime($invData['create_time']);
$invData['update_time'] = strtotime($invData['update_time']);
//EmInvoiceHistory::create($invData);
//unset($invs[$index]); //从结果集中去掉无效的数据
//更新状态 //更新缴费状态
$payment->save(); $payment->save();
//todo::history;保存历史记录
$payData = $payment->toArray();
$payData['id'] = null;
$payData['create_time'] = strtotime($payData['create_time']);
$payData['update_time'] = strtotime($payData['update_time']);
$payData['pay_date'] = strtotime($payData['pay_date']);
//EmPaymentHistory::create($payData);
unset($payments[$key]); unset($payments[$key]);
$balanceMode->isUpdate(false)->save(); $balanceMode->isUpdate(false)->save();
//更新账户余额
$account = EmAccount::get(['account_id'=>$inv->account_id]);
$account->amount -= $balanceMode->balance;
$account->save();
} }
} }
$msg = $result == 0 ? '已审核,没有可销账的账单.' : '已审核,成功销账 ' . $result . ' 笔账单.'; $msg = $result == 0 ? '已审核,没有可销账的账单.' : '已审核,成功销账 '.$result.' 笔账单.';
return $msg; return $msg;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论