engineering/app/adminapi/controller/finance/FinanceRefundInvoiceDifferenceController.php
2024-01-15 14:59:41 +08:00

60 lines
2.7 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
{
$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'] = ($item['has_invoice_amount'] - $item['has_refund_amount']) <= 0 ? 0 : $item['has_invoice_amount'] - $item['has_refund_amount'];
//回款未开票
$item['has_refund_not_invoice_amount'] = ($item['has_refund_amount'] - $item['has_invoice_amount']) <= 0 ? 0 : $item['has_refund_amount'] - $item['has_invoice_amount'];
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);
}
}