dataLists(new CostApprovedProjectLists()); } public function ledger(): \think\response\Json { $params = $this->request->get(); $where = []; $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; if (!empty($params['contract_name'])) { $contract_ids1 = MarketingContract::where('contract_name', 'like', '%' . $params['contract_name'] . '%')->column('id'); $where[] = ['contract_id', 'in', $contract_ids1]; } if (!empty($params['contract_num'])) { $contract_ids2 = MarketingContract::where('contract_code', 'like', '%' . $params['contract_num'] . '%')->column('id'); $where[] = ['contract_id', 'in', $contract_ids2]; } if (!empty($params['part_b'])) { $contract_ids3 = MarketingContract::where('part_b', 'like', '%' . $params['part_b'] . '%')->column('id'); $where[] = ['contract_id', 'in', $contract_ids3]; } if (!empty($params['contract_type'])) { $where[] = ['contract_type', '=', $params['contract_type']]; } $lists = MarketingContract::field('id,contract_code,contract_name,contract_type,business_nature,part_a,signed_amount,signed_dept,create_time') ->where($where)->where('status', 1) ->page($page_no, $page_size) ->order('id desc') ->select() ->each(function ($data) { $custom = MarketingCustom::field('name')->where('id', $data['part_a'])->findOrEmpty(); $dept = Dept::field('name')->where('id', $data['signed_dept'])->findOrEmpty(); $data['part_a_name'] = $custom['name']; $data['signed_dept_name'] = $dept['name']; $data['contract_type_text'] = $data->contract_type_text; $data['business_nature_text'] = $data->business_nature_text; $invoice_ids = FinancialInvoice::where('contract_id', $data['id'])->column('id'); //开票金额 $data['total_invoice_amount'] = FinancialInvoice::where('contract_id', $data['id'])->sum('apply_amount'); //未开票金额 $data['not_total_invoice_amount'] = bcsub($data['signed_amount'], $data['total_invoice_amount'], 2); //到账金额 $data['total_refund_amount'] = FinancialRefund::where('contract_id', $data['id'])->sum('amount'); //未到账金额 $data['not_total_refund_amount'] = bcsub($data['signed_amount'], $data['total_refund_amount'], 2); //开票已回款金额 $data['invoice_has_refund_amount'] = FinancialRefund::where('contract_id', $data['id'])->where('invoice_id', 'in', $invoice_ids)->sum('amount'); //开票未回款金额 $data['invoice_not_refund_amount'] = bcsub($data['total_invoice_amount'], $data['invoice_has_refund_amount'], 2); //回款未开票金额 $data['refund_not_invoice_amount'] = bcsub($data['total_refund_amount'], $data['invoice_has_refund_amount'], 2); //结算金额 $data['total_settlement_amount'] = FinancialSettlement::where('contract_id', $data['id'])->sum('amount'); //到账日期 $last_refund = FinancialRefund::where('contract_id', $data['id'])->order('id desc')->findOrEmpty(); $data['refund_date'] = $last_refund['create_time'] ?? ''; $financial_settlement = FinancialSettlement::where('contract_id', $data['id'])->order('id desc')->findOrEmpty(); if ($financial_settlement->isEmpty()) { $data['is_settlement'] = 0; //未结算 $data['settlement_date'] = ''; } else { if ($data['total_settlement_amount'] >= $data['signed_amount']) { $data['is_settlement'] = 2; //已结算 } else { $data['is_settlement'] = 1; //部分结算 } $data['settlement_date'] = $financial_settlement['date']; } $project = match ($data['business_nature']) { //工程监理 1 => SupervisionProject::field('id')->where('contract', $data['id'])->findOrEmpty(), //项目管理 2 => ManageProject::field('id')->where('contract', $data['id'])->findOrEmpty(), //项目咨询 3 => ConsultProject::field('id')->where('contract', $data['id'])->findOrEmpty(), //造价咨询 4 => CostProject::field('id')->where('contract_id', $data['id'])->findOrEmpty(), default => 0, }; $data['project_id'] = $project['id']; $rate = bcdiv($data['total_refund_amount'], $data['signed_amount'], 2); $data['refund_rate'] = ($rate * 100).'%'; }) ->toArray(); $count = MarketingContract::where($where)->where('status', 1)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } /** * @notes 添加待立项造价项目 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 * * public function add() * { * $params = (new CostApprovedProjectValidate())->post()->goCheck('add'); * $result = CostApprovedProjectLogic::add($params); * if (true === $result) { * return $this->success('添加成功', [], 1, 1); * } * return $this->fail(CostApprovedProjectLogic::getError()); * } */ /** * @notes 编辑待立项造价项目 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 * * public function edit() * { * $params = (new CostApprovedProjectValidate())->post()->goCheck('edit'); * $result = CostApprovedProjectLogic::edit($params); * if (true === $result) { * return $this->success('编辑成功', [], 1, 1); * } * return $this->fail(CostApprovedProjectLogic::getError()); * } */ /** * @notes 删除待立项造价项目 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 * * public function delete() * { * $params = (new CostApprovedProjectValidate())->post()->goCheck('delete'); * $result = CostApprovedProjectLogic::delete($params); * if (true === $result) { * return $this->success('删除成功', [], 1, 1); * } * return $this->fail(CostApprovedProjectLogic::getError()); * } */ /** * @notes 获取待立项造价项目详情 * @return \think\response\Json * @author likeadmin * @date 2024/02/20 14:16 */ public function detail() { $params = (new CostApprovedProjectValidate())->goCheck('detail'); $result = CostApprovedProjectLogic::detail($params); return $this->data($result); } public function datas() { return $this->data(CostApprovedProjectLogic::datas()); } }