61 lines
2.6 KiB
PHP
61 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace app\adminapi\controller\finance;
|
|
|
|
use app\adminapi\controller\BaseAdminController;
|
|
use app\common\model\contract\Contract;
|
|
use app\common\model\contract\ContractNegotiation;
|
|
use app\common\model\custom\Custom;
|
|
use app\common\model\finance\FinanceInvoiceApply;
|
|
use app\common\model\finance\FinanceReturnedRecord;
|
|
use app\common\model\project\Project;
|
|
|
|
class FinanceRefundInvoiceDifferenceController extends BaseAdminController
|
|
{
|
|
public function lists(): \think\response\Json
|
|
{
|
|
bcscale(2);
|
|
$params = $this->request->get(['page_no', 'page_size', 'contract_code', 'project_id']);
|
|
$pageNo = empty($params['page_no']) ? 1 : $params['page_no'];
|
|
$pageSize = empty($params['page_size']) ? 15 : $params['page_size'];
|
|
$where = [];
|
|
if (isset($params['project_id']) && $params['project_id']) {
|
|
$where[] = ['project_id', '=', $params['project_id']];
|
|
}
|
|
if (isset($params['contract_code']) && $params['contract_code']) {
|
|
$where[] = ['contract_code', 'like', '%' . $params['contract_code'] . '%'];
|
|
}
|
|
$data = Contract::field('id,project_id,contract_code,contract_name,contract_date,amount')->where($where)
|
|
->page($pageNo, $pageSize)
|
|
->order(['id' => 'desc'])
|
|
->select()->each(function ($item) {
|
|
$project = Project::field('custom_id,name,project_code')->where('id', $item['project_id'])->findOrEmpty();
|
|
$custom = Custom::field('name')->where('id', $project['custom_id'])->findOrEmpty();
|
|
$item['project_name'] = $project['name'];
|
|
$item['project_code'] = $project['project_code'];
|
|
$item['custom_name'] = $custom['name'];
|
|
//合同洽商金额
|
|
$negotiate_amount = ContractNegotiation::where('contract_id', $item['id'])->sum('negotiation_amount');
|
|
//合同实际金额
|
|
$item['contract_amount'] = $item['amount'] + $negotiate_amount;
|
|
//已回款金额
|
|
$item['has_refund_amount'] = FinanceReturnedRecord::where('contract_id', $item['id'])->sum('amount');
|
|
//已开票金额
|
|
$item['has_invoice_amount'] = FinanceInvoiceApply::where('contract_id', $item['id'])->sum('invoicing_amount');
|
|
//开票未回款
|
|
$item['has_invoice_not_refund_amount'] = max(bcsub($item['has_invoice_amount'], $item['has_refund_amount']), 0);
|
|
//回款未开票
|
|
$item['has_refund_not_invoice_amount'] = max(bcsub($item['has_refund_amount'], $item['has_invoice_amount']), 0);
|
|
unset($item['amount']);
|
|
return $item;
|
|
})->toArray();
|
|
$count = Contract::field('id')->where($where)->count();
|
|
$result = [
|
|
'count' => $count,
|
|
'page_no' => $pageNo,
|
|
'page_size' => $pageSize,
|
|
'lists' => $data
|
|
];
|
|
return $this->success('请求成功', $result);
|
|
}
|
|
} |