From 364c491a9811035bdb79a38423db40909a13b7fc Mon Sep 17 00:00:00 2001 From: weiz <736250432@qq.com> Date: Mon, 25 Mar 2024 15:48:19 +0800 Subject: [PATCH] update --- .../financial/FinancialInvoiceController.php | 113 +++++++++++++ .../financial/FinancialRefundController.php | 108 ++++++++++++ .../lists/financial/FinancialInvoiceLists.php | 93 +++++++++++ .../lists/financial/FinancialRefundLists.php | 89 ++++++++++ .../logic/financial/FinancialInvoiceLogic.php | 156 ++++++++++++++++++ .../logic/financial/FinancialRefundLogic.php | 134 +++++++++++++++ .../financial/FinancialInvoiceValidate.php | 140 ++++++++++++++++ .../financial/FinancialRefundValidate.php | 129 +++++++++++++++ .../model/financial/FinancialInvoice.php | 40 +++++ .../model/financial/FinancialRefund.php | 38 +++++ 10 files changed, 1040 insertions(+) create mode 100644 app/adminapi/controller/financial/FinancialInvoiceController.php create mode 100644 app/adminapi/controller/financial/FinancialRefundController.php create mode 100644 app/adminapi/lists/financial/FinancialInvoiceLists.php create mode 100644 app/adminapi/lists/financial/FinancialRefundLists.php create mode 100644 app/adminapi/logic/financial/FinancialInvoiceLogic.php create mode 100644 app/adminapi/logic/financial/FinancialRefundLogic.php create mode 100644 app/adminapi/validate/financial/FinancialInvoiceValidate.php create mode 100644 app/adminapi/validate/financial/FinancialRefundValidate.php create mode 100644 app/common/model/financial/FinancialInvoice.php create mode 100644 app/common/model/financial/FinancialRefund.php diff --git a/app/adminapi/controller/financial/FinancialInvoiceController.php b/app/adminapi/controller/financial/FinancialInvoiceController.php new file mode 100644 index 000000000..76a80226a --- /dev/null +++ b/app/adminapi/controller/financial/FinancialInvoiceController.php @@ -0,0 +1,113 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + + namespace app\adminapi\controller\financial; + + + use app\adminapi\controller\BaseAdminController; + use app\adminapi\lists\financial\FinancialInvoiceLists; + use app\adminapi\logic\financial\FinancialInvoiceLogic; + use app\adminapi\validate\financial\FinancialInvoiceValidate; + + + /** + * 财务管理--开票台账控制器 + * Class FinancialInvoiceController + * @package app\adminapi\controller\financial + */ + class FinancialInvoiceController extends BaseAdminController + { + + + /** + * @notes 获取财务管理--开票台账列表 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function lists() + { + return $this->dataLists(new FinancialInvoiceLists()); + } + + + /** + * @notes 添加财务管理--开票台账 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function add() + { + $params = (new FinancialInvoiceValidate())->post()->goCheck('add'); + $result = FinancialInvoiceLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(FinancialInvoiceLogic::getError()); + } + + + /** + * @notes 编辑财务管理--开票台账 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function edit() + { + $params = (new FinancialInvoiceValidate())->post()->goCheck('edit'); + $result = FinancialInvoiceLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(FinancialInvoiceLogic::getError()); + } + + + /** + * @notes 删除财务管理--开票台账 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function delete() + { + $params = (new FinancialInvoiceValidate())->post()->goCheck('delete'); + FinancialInvoiceLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取财务管理--开票台账详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function detail() + { + $params = (new FinancialInvoiceValidate())->goCheck('detail'); + $result = FinancialInvoiceLogic::detail($params); + return $this->data($result); + } + + public function datas() + { + return $this->data(FinancialInvoiceLogic::datas()); + } + + + } \ No newline at end of file diff --git a/app/adminapi/controller/financial/FinancialRefundController.php b/app/adminapi/controller/financial/FinancialRefundController.php new file mode 100644 index 000000000..e0d2a1208 --- /dev/null +++ b/app/adminapi/controller/financial/FinancialRefundController.php @@ -0,0 +1,108 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + +namespace app\adminapi\controller\financial; + + +use app\adminapi\controller\BaseAdminController; +use app\adminapi\lists\financial\FinancialRefundLists; +use app\adminapi\logic\financial\FinancialRefundLogic; +use app\adminapi\validate\financial\FinancialRefundValidate; + + +/** + * 财务管理--到账台账控制器 + * Class FinancialRefundController + * @package app\adminapi\controller\financial + */ +class FinancialRefundController extends BaseAdminController +{ + + + /** + * @notes 获取财务管理--到账台账列表 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function lists() + { + return $this->dataLists(new FinancialRefundLists()); + } + + + /** + * @notes 添加财务管理--到账台账 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function add() + { + $params = (new FinancialRefundValidate())->post()->goCheck('add'); + $result = FinancialRefundLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(FinancialRefundLogic::getError()); + } + + + /** + * @notes 编辑财务管理--到账台账 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function edit() + { + $params = (new FinancialRefundValidate())->post()->goCheck('edit'); + $result = FinancialRefundLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(FinancialRefundLogic::getError()); + } + + + /** + * @notes 删除财务管理--到账台账 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function delete() + { + $params = (new FinancialRefundValidate())->post()->goCheck('delete'); + FinancialRefundLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取财务管理--到账台账详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function detail() + { + $params = (new FinancialRefundValidate())->goCheck('detail'); + $result = FinancialRefundLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/lists/financial/FinancialInvoiceLists.php b/app/adminapi/lists/financial/FinancialInvoiceLists.php new file mode 100644 index 000000000..7ddb3d5c8 --- /dev/null +++ b/app/adminapi/lists/financial/FinancialInvoiceLists.php @@ -0,0 +1,93 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\adminapi\lists\financial; + + + use app\adminapi\lists\BaseAdminDataLists; + use app\common\lists\ListsSearchInterface; + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\financial\FinancialInvoice; + use app\common\model\financial\FinancialRefund; + + + /** + * 财务管理--开票台账列表 + * Class FinancialInvoiceLists + * @package app\adminapi\listsfinancial + */ + class FinancialInvoiceLists extends BaseAdminDataLists implements ListsSearchInterface + { + + + /** + * @notes 设置搜索条件 + * @return \string[][] + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function setSearch(): array + { + return [ + '=' => ['contract_id', 'invoice_type'], + '%like%' => ['invoice_code', 'apply_company'], + + ]; + } + + + /** + * @notes 获取财务管理--开票台账列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function lists(): array + { + return FinancialInvoice::where($this->searchWhere) + ->field(['id', 'contract_id', 'invoice_code', 'invoice_type', 'apply_amount', 'apply_company']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function ($data) { + $contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id', $data['contract_id'])->findOrEmpty(); + $data['contract_name'] = $contract['contract_name']; + $data['contract_type'] = $contract->contract_type_text; + $data['part_a'] = $contract['part_a']; + $data['part_b'] = $contract['part_b']; + $data['sign_money'] = $contract['money']; + $data['sign_time'] = $contract['create_time']; + $data['invoice_type_text'] = $data->invoice_type_text; + $refund = FinancialRefund::where('invoice_id', $data['id'])->findOrEmpty(); + $data['is_refund'] = !$refund->isEmpty() ? '已到账' : '未到账'; + $data['refund_amount'] = !$refund->isEmpty() ? FinancialRefund::where('invoice_id', $data['id'])->sum('amount') : 0.00; + }) + ->toArray(); + } + + + /** + * @notes 获取财务管理--开票台账数量 + * @return int + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function count(): int + { + return FinancialInvoice::where($this->searchWhere)->count(); + } + + } \ No newline at end of file diff --git a/app/adminapi/lists/financial/FinancialRefundLists.php b/app/adminapi/lists/financial/FinancialRefundLists.php new file mode 100644 index 000000000..81f580eac --- /dev/null +++ b/app/adminapi/lists/financial/FinancialRefundLists.php @@ -0,0 +1,89 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\adminapi\lists\financial; + + + use app\adminapi\lists\BaseAdminDataLists; + use app\common\lists\ListsSearchInterface; + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\financial\FinancialInvoice; + use app\common\model\financial\FinancialRefund; + + + /** + * 财务管理--到账台账列表 + * Class FinancialRefundLists + * @package app\adminapi\listsfinancial + */ + class FinancialRefundLists extends BaseAdminDataLists implements ListsSearchInterface + { + + + /** + * @notes 设置搜索条件 + * @return \string[][] + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function setSearch(): array + { + return [ + '=' => ['contract_id', 'invoice_id'], + + ]; + } + + + /** + * @notes 获取财务管理--到账台账列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function lists(): array + { + return FinancialRefund::where($this->searchWhere) + ->field(['id', 'contract_id', 'invoice_id', 'amount', 'date', 'remark', 'create_user', 'create_time']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function ($data) { + $contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b')->where('id', $data['contract_id'])->findOrEmpty(); + $invoice = FinancialInvoice::field('invoice_code,apply_amount')->where('id', $data['invoice_id'])->findOrEmpty(); + $data['contract_name'] = $contract['contract_name']; + $data['contract_type'] = $contract->contract_type_text; + $data['part_a'] = $contract['part_a']; + $data['part_b'] = $contract['part_b']; + $data['invoice_code'] = $invoice['invoice_code']; + $data['apply_amount'] = $invoice['apply_amount']; + }) + ->toArray(); + } + + + /** + * @notes 获取财务管理--到账台账数量 + * @return int + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function count(): int + { + return FinancialRefund::where($this->searchWhere)->count(); + } + + } \ No newline at end of file diff --git a/app/adminapi/logic/financial/FinancialInvoiceLogic.php b/app/adminapi/logic/financial/FinancialInvoiceLogic.php new file mode 100644 index 000000000..7f0bf0153 --- /dev/null +++ b/app/adminapi/logic/financial/FinancialInvoiceLogic.php @@ -0,0 +1,156 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\adminapi\logic\financial; + + + use app\common\logic\BaseLogic; + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\financial\FinancialInvoice; + use app\common\model\financial\FinancialRefund; + use think\facade\Db; + + + /** + * 财务管理--开票台账逻辑 + * Class FinancialInvoiceLogic + * @package app\adminapi\logic\financial + */ + class FinancialInvoiceLogic extends BaseLogic + { + + + /** + * @notes 添加财务管理--开票台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public static function add(array $params): bool + { + Db::startTrans(); + try { + FinancialInvoice::create([ + 'contract_id' => $params['contract_id'], + 'invoice_code' => data_unique_code('HTKP'), + 'invoice_type' => $params['invoice_type'], + 'apply_amount' => $params['apply_amount'], + 'apply_company' => $params['apply_company'], + 'apply_company_number' => $params['apply_company_number'], + 'apply_company_address' => $params['apply_company_address'] ?? '', + 'apply_company_telephone' => $params['apply_company_telephone'] ?? '', + 'apply_company_bank' => $params['apply_company_bank'] ?? '', + 'apply_company_account' => $params['apply_company_account'] ?? '', + 'apply_contact' => $params['apply_contact'] ?? '', + 'apply_email' => $params['apply_email'] ?? '', + 'pay_type' => $params['pay_type'] ?? '', + 'invoice_content' => $params['invoice_content'] ?? '', + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time() + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑财务管理--开票台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + FinancialInvoice::where('id', $params['id'])->update([ + 'contract_id' => $params['contract_id'], + 'invoice_type' => $params['invoice_type'], + 'apply_amount' => $params['apply_amount'], + 'apply_company' => $params['apply_company'], + 'apply_company_number' => $params['apply_company_number'], + 'apply_company_address' => $params['apply_company_address'] ?? '', + 'apply_company_telephone' => $params['apply_company_telephone'] ?? '', + 'apply_company_bank' => $params['apply_company_bank'] ?? '', + 'apply_company_account' => $params['apply_company_account'] ?? '', + 'apply_contact' => $params['apply_contact'] ?? '', + 'apply_email' => $params['apply_email'] ?? '', + 'pay_type' => $params['pay_type'] ?? '', + 'invoice_content' => $params['invoice_content'] ?? '', + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + 'update_time' => time() + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除财务管理--开票台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public static function delete(array $params): bool + { + return FinancialInvoice::destroy($params['id']); + } + + + /** + * @notes 获取财务管理--开票台账详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public static function detail($params): array + { + $data = FinancialInvoice::withoutField('update_time,delete_time')->findOrEmpty($params['id']); + $contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id', $data['contract_id'])->findOrEmpty(); + $data['invoice_type_text'] = $data->invoice_type_text; + $data['contract_name'] = $contract['contract_name']; + $data['contract_type'] = $contract->contract_type_text; + $data['part_a'] = $contract['part_a']; + $data['part_b'] = $contract['part_b']; + $data['sign_money'] = $contract['money']; + $data['sign_time'] = $contract['create_time']; + $data['total_invoice_amount'] = FinancialInvoice::where('project_id', $data['project_id'])->sum('apply_amount'); + $data['total_refund_amount'] = FinancialRefund::where('project_id', $data['project_id'])->sum('amount'); + return $data->toArray(); + } + + public static function datas() + { + return FinancialInvoice::field(['id', 'invoice_code'])->order(['id' => 'desc'])->select()->each(function ($data) { + $data['projectinfo'] = 'ID:' . $data['id'] . ' / 编号:' . $data['invoice_code']; + })->toArray(); + } + } \ No newline at end of file diff --git a/app/adminapi/logic/financial/FinancialRefundLogic.php b/app/adminapi/logic/financial/FinancialRefundLogic.php new file mode 100644 index 000000000..7818b5ae3 --- /dev/null +++ b/app/adminapi/logic/financial/FinancialRefundLogic.php @@ -0,0 +1,134 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\adminapi\logic\financial; + + + use app\common\logic\BaseLogic; + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\financial\FinancialInvoice; + use app\common\model\financial\FinancialRefund; + use think\facade\Db; + + + /** + * 财务管理--到账台账逻辑 + * Class FinancialRefundLogic + * @package app\adminapi\logic\financial + */ + class FinancialRefundLogic extends BaseLogic + { + + + /** + * @notes 添加财务管理--到账台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public static function add(array $params): bool + { + Db::startTrans(); + try { + FinancialRefund::create([ + 'contract_id' => $params['contract_id'], + 'invoice_id' => $params['invoice_id'], + 'amount' => $params['amount'], + 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, + 'remark' => $params['remark'] ?? '', + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑财务管理--到账台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + FinancialRefund::where('id', $params['id'])->update([ + 'contract_id' => $params['contract_id'], + 'invoice_id' => $params['invoice_id'], + 'amount' => $params['amount'], + 'date' => !empty($params['date']) ? strtotime($params['date']) : 0, + 'remark' => $params['remark'] ?? '', + 'create_user' => $params['create_user'], + 'create_time' => !empty($params['create_time']) ? strtotime($params['create_time']) : time(), + 'update_time' => time() + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除财务管理--到账台账 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public static function delete(array $params): bool + { + return FinancialRefund::destroy($params['id']); + } + + + /** + * @notes 获取财务管理--到账台账详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public static function detail($params): array + { + $data = FinancialRefund::withoutField('update_time,delete_time')->findOrEmpty($params['id']); + $contract = CostApprovedProject::field('contract_name,contract_type,part_a,part_b,money,create_time')->where('id', $data['contract_id'])->findOrEmpty(); + $invoice = FinancialInvoice::field('invoice_code,apply_amount')->where('id', $data['invoice_id'])->findOrEmpty(); + $data['contract_name'] = $contract['contract_name']; + $data['contract_type'] = $contract->contract_type_text; + $data['part_a'] = $contract['part_a']; + $data['part_b'] = $contract['part_b']; + $data['sign_money'] = $contract['money']; + $data['sign_time'] = $contract['create_time']; + $data['invoice_code'] = $invoice['invoice_code']; + $data['apply_amount'] = $invoice['apply_amount']; + $data['total_invoice_amount'] = FinancialInvoice::where('project_id', $data['project_id'])->sum('apply_amount');//累计开票金额 + $data['total_refund_amount'] = FinancialRefund::where('project_id', $data['project_id'])->sum('amount');//累计到账金额 + return $data->toArray(); + } + } \ No newline at end of file diff --git a/app/adminapi/validate/financial/FinancialInvoiceValidate.php b/app/adminapi/validate/financial/FinancialInvoiceValidate.php new file mode 100644 index 000000000..ab1176dc9 --- /dev/null +++ b/app/adminapi/validate/financial/FinancialInvoiceValidate.php @@ -0,0 +1,140 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\adminapi\validate\financial; + + + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\dict\DictData; + use app\common\model\financial\FinancialInvoice; + use app\common\validate\BaseValidate; + + + /** + * 财务管理--开票台账验证器 + * Class FinancialInvoiceValidate + * @package app\adminapi\validate\financial + */ + class FinancialInvoiceValidate extends BaseValidate + { + + /** + * 设置校验规则 + * @var string[] + */ + protected $rule = [ + 'id' => 'require|checkData', + 'contract_id' => 'require|checkContract', + 'invoice_type' => 'require|checkInvoiceType', + 'apply_amount' => 'require|float|gt:0', + 'apply_company' => 'require', + 'apply_company_number' => 'require', + 'apply_email' => 'email', + 'create_user' => 'require', + 'create_time' => 'require|dateFormat:Y-m-d H:i:s' + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'contract_id' => '合同id', + 'invoice_code' => '开票编号', + 'invoice_type' => '发票类型', + 'apply_amount' => '开票申请金额', + 'apply_company' => '开票单位名称', + 'apply_company_number' => '纳税人识别号', + 'apply_company_address' => '开票单位注册地址', + 'apply_company_telephone' => '开票单位电话', + 'apply_company_bank' => '开户银行', + 'apply_company_account' => '开户账号', + 'apply_contact' => '开票联系人', + 'pay_type' => '对应付款方式', + 'invoice_content' => '开票内容', + 'apply_email' => '发票接收邮箱', + 'create_user' => '开票申请人', + 'create_time' => '开票申请时间' + + ]; + + + /** + * @notes 添加场景 + * @return FinancialInvoiceValidate + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return FinancialInvoiceValidate + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function sceneEdit() + { + return $this->remove('id', 'checkData'); + } + + + /** + * @notes 删除场景 + * @return FinancialInvoiceValidate + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function sceneDelete() + { + return $this->only(['id'])->remove('id', 'checkData'); + } + + + /** + * @notes 详情场景 + * @return FinancialInvoiceValidate + * @author likeadmin + * @date 2024/03/25 14:09 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = FinancialInvoice::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + + public function checkContract($value): bool|string + { + $data = CostApprovedProject::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '合同信息不存在' : true; + } + + public function checkInvoiceType($value): bool|string + { + $dict = DictData::where('type_value', 'zjzx_invoice_type')->column('value'); + return !in_array($value, $dict) ? '发票类型数据值无效' : true; + } + + } \ No newline at end of file diff --git a/app/adminapi/validate/financial/FinancialRefundValidate.php b/app/adminapi/validate/financial/FinancialRefundValidate.php new file mode 100644 index 000000000..42f8b3610 --- /dev/null +++ b/app/adminapi/validate/financial/FinancialRefundValidate.php @@ -0,0 +1,129 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\adminapi\validate\financial; + + + use app\common\model\cost_project\CostApprovedProject; + use app\common\model\financial\FinancialInvoice; + use app\common\model\financial\FinancialRefund; + use app\common\validate\BaseValidate; + + + /** + * 财务管理--到账台账验证器 + * Class FinancialRefundValidate + * @package app\adminapi\validate\financial + */ + class FinancialRefundValidate extends BaseValidate + { + + /** + * 设置校验规则 + * @var string[] + */ + protected $rule = [ + 'id' => 'require|checkData', + 'contract_id' => 'require|checkContract', + 'invoice_id' => 'require|checkInvoice', + 'amount' => 'require|float|gt:0', + 'date' => 'require|dateFormat:Y-m-d', + 'create_user' => 'require', + 'create_time' => 'require|dateFormat:Y-m-d H:i:s', + + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'contract_id' => '合同id', + 'invoice_id' => '开票id', + 'amount' => '本次到账金额', + 'date' => '到账日期', + 'remark' => '说明', + 'create_user' => '登记人', + 'create_time' => '登记时间', + ]; + + + /** + * @notes 添加场景 + * @return FinancialRefundValidate + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return FinancialRefundValidate + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function sceneEdit() + { + return $this->only(['id', 'contract_id', 'invoice_id', 'amount', 'date', 'remark', 'create_user', 'create_time']); + } + + + /** + * @notes 删除场景 + * @return FinancialRefundValidate + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function sceneDelete() + { + return $this->only(['id'])->remove('id', 'checkData'); + } + + + /** + * @notes 详情场景 + * @return FinancialRefundValidate + * @author likeadmin + * @date 2024/03/25 14:46 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + + public function checkData($value): bool|string + { + $data = FinancialRefund::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '数据不存在' : true; + } + + public function checkProject($value): bool|string + { + $data = CostApprovedProject::where('id', $value)->findOrEmpty(); + return $data->isEmpty() ? '合同信息不存在' : true; + } + + public function checkInvoice($value, $rule, $params): bool|string + { + $data = FinancialInvoice::where('id', $value)->where('project_id', $params['project_id'])->findOrEmpty(); + return $data->isEmpty() ? '开票单据信息不存在' : true; + } + + } \ No newline at end of file diff --git a/app/common/model/financial/FinancialInvoice.php b/app/common/model/financial/FinancialInvoice.php new file mode 100644 index 000000000..bc025afc9 --- /dev/null +++ b/app/common/model/financial/FinancialInvoice.php @@ -0,0 +1,40 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\common\model\financial; + + + use app\common\model\BaseModel; + use app\common\model\dict\DictData; + use think\model\concern\SoftDelete; + + + /** + * 财务管理--开票台账模型 + * Class FinancialInvoice + * @package app\common\model\financial + */ + class FinancialInvoice extends BaseModel + { + use SoftDelete; + + protected $name = 'financial_invoice'; + protected $deleteTime = 'delete_time'; + + public function getInvoiceTypeTextAttr($value, $data) + { + $dict = DictData::where('type_value', 'zjzx_invoice_type')->column('name', 'value'); + return !empty($data['invoice_type']) ? $dict[$data['invoice_type']] : ''; + } + } \ No newline at end of file diff --git a/app/common/model/financial/FinancialRefund.php b/app/common/model/financial/FinancialRefund.php new file mode 100644 index 000000000..681ca5ef5 --- /dev/null +++ b/app/common/model/financial/FinancialRefund.php @@ -0,0 +1,38 @@ +<?php +// +---------------------------------------------------------------------- +// | likeadmin快速开发前后端分离管理后台(PHP版) +// +---------------------------------------------------------------------- +// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 +// | 开源版本可自由商用,可去除界面版权logo +// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin +// | github下载:https://github.com/likeshop-github/likeadmin +// | 访问官网:https://www.likeadmin.cn +// | likeadmin团队 版权所有 拥有最终解释权 +// +---------------------------------------------------------------------- +// | author: likeadminTeam +// +---------------------------------------------------------------------- + + namespace app\common\model\financial; + + + use app\common\model\BaseModel; + use think\model\concern\SoftDelete; + + + /** + * 财务管理--到账台账模型 + * Class FinancialRefund + * @package app\common\model\financial + */ + class FinancialRefund extends BaseModel + { + use SoftDelete; + + protected $name = 'financial_refund'; + protected $deleteTime = 'delete_time'; + + public function getDateAttr($value): string + { + return !empty($value) ? date('Y-m-d', $value) : ''; + } + } \ No newline at end of file