diff --git a/app/adminapi/controller/bill/AcceptanceBillController.php b/app/adminapi/controller/bill/AcceptanceBillController.php new file mode 100644 index 000000000..15c214384 --- /dev/null +++ b/app/adminapi/controller/bill/AcceptanceBillController.php @@ -0,0 +1,108 @@ +dataLists(new AcceptanceBillLists()); + } + + + /** + * @notes 添加 + * @return \think\response\Json + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function add() + { + $params = (new AcceptanceBillValidate())->post()->goCheck('add'); + $result = AcceptanceBillLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(AcceptanceBillLogic::getError()); + } + + + /** + * @notes 编辑 + * @return \think\response\Json + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function edit() + { + $params = (new AcceptanceBillValidate())->post()->goCheck('edit'); + $result = AcceptanceBillLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(AcceptanceBillLogic::getError()); + } + + + /** + * @notes 删除 + * @return \think\response\Json + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function delete() + { + $params = (new AcceptanceBillValidate())->post()->goCheck('delete'); + AcceptanceBillLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取详情 + * @return \think\response\Json + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function detail() + { + $params = (new AcceptanceBillValidate())->goCheck('detail'); + $result = AcceptanceBillLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/adminapi/lists/bill/AcceptanceBillLists.php b/app/adminapi/lists/bill/AcceptanceBillLists.php new file mode 100644 index 000000000..bb48e5daf --- /dev/null +++ b/app/adminapi/lists/bill/AcceptanceBillLists.php @@ -0,0 +1,98 @@ + ['ab.org_id', 'ab.dept_id', 'ab.customer_id', 'ab.project_id', 'ab.contract_id', 'ab.bill_sn', 'ab.bank_account_id', 'ab.bill_type'], + ]; + } + + + /** + * @notes 获取列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function lists(): array + { + return Db::name('AcceptanceBill')->alias('ab') + ->where($this->searchWhere) + ->whereNull('ab.delete_time') + ->leftJoin('orgs o','o.id = ab.org_id') + ->leftJoin('dept d','d.id = ab.dept_id') + ->leftJoin('project p','p.id = ab.project_id') + ->leftJoin('contract c','c.id = ab.contract_id') + ->leftJoin('custom ct','ct.id = ab.customer_id') + ->field('ap.*, d.name as dept_name, o.name as org_name, , p.name as project_name, c.contract_code, c.contract_name') + ->limit($this->limitOffset, $this->limitLength) + ->order(['ap.id' => 'desc']) + ->select()->each(function($item, $key){ + //关联数据后续添加 + $item['supplier_name'] = '供应商名称'; + $item['approve_no'] = '付款单号'; + $item['approve_step'] = '流程步骤'; + $item['approve_settle_status'] = 1; + return $item; + }) + ->toArray(); + } + + + /** + * @notes 获取数量 + * @return int + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function count(): int + { + return Db::name('AcceptanceBill')->alias('ab') + ->where($this->searchWhere) + ->whereNull('ab.delete_time') + ->leftJoin('orgs o','o.id = ab.org_id') + ->leftJoin('dept d','d.id = ab.dept_id') + ->leftJoin('project p','p.id = ab.project_id') + ->leftJoin('contract c','c.id = ab.contract_id') + ->leftJoin('custom ct','ct.id = ab.customer_id')->count(); + } + +} \ No newline at end of file diff --git a/app/adminapi/logic/administrative/AdministrativePaymentsLogic.php b/app/adminapi/logic/administrative/AdministrativePaymentsLogic.php index 4a65d33ca..2dac161c3 100644 --- a/app/adminapi/logic/administrative/AdministrativePaymentsLogic.php +++ b/app/adminapi/logic/administrative/AdministrativePaymentsLogic.php @@ -127,6 +127,8 @@ class AdministrativePaymentsLogic extends BaseLogic */ public static function detail($params): array { - return AdministrativePayments::findOrEmpty($params['id'])->toArray(); + $administrativePayments = AdministrativePayments::findOrEmpty($params['id']); + $administrativePayments->contract; + return $administrativePayments->toArray(); } } \ No newline at end of file diff --git a/app/adminapi/logic/bill/AcceptanceBillLogic.php b/app/adminapi/logic/bill/AcceptanceBillLogic.php new file mode 100644 index 000000000..52d11f5de --- /dev/null +++ b/app/adminapi/logic/bill/AcceptanceBillLogic.php @@ -0,0 +1,140 @@ + $params['org_id'] ?? 0, + 'dept_id' => $params['dept_id'] ?? 0, + 'customer_id' => $params['customer_id'] ?? 0, + 'project_id' => $params['project_id'] ?? 0, + 'contract_id' => $params['contract_id'] ?? 0, + 'receipt_date' => $params['receipt_date'] ?? '', + 'bill_sn' => $params['bill_sn'] ?? '', + 'bank_account_id' => $params['bank_account_id'] ?? 0, + 'bill_type' => $params['bill_type'] ?? 0, + 'draft_acceptance_bank' => $params['draft_acceptance_bank'] ?? '', + 'bill_due_date' => $params['bill_due_date'] ?? '', + 'receipt_amount' => $params['receipt_amount'] ?? 0, + 'receipt_amount_daxie' => $params['receipt_amount_daxie'] ?? '', + 'remark' => $params['remark'] ?? '', + 'annex' => $params['annex'] ?? '', + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑 + * @param array $params + * @return bool + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + AcceptanceBill::where('id', $params['id'])->update([ + 'org_id' => $params['org_id'] ?? 0, + 'dept_id' => $params['dept_id'] ?? 0, + 'customer_id' => $params['customer_id'] ?? 0, + 'project_id' => $params['project_id'] ?? 0, + 'contract_id' => $params['contract_id'] ?? 0, + 'receipt_date' => $params['receipt_date'] ?? '', + 'bill_sn' => $params['bill_sn'] ?? '', + 'bank_account_id' => $params['bank_account_id'] ?? 0, + 'bill_type' => $params['bill_type'] ?? 0, + 'draft_acceptance_bank' => $params['draft_acceptance_bank'] ?? '', + 'bill_due_date' => $params['bill_due_date'] ?? '', + 'receipt_amount' => $params['receipt_amount'] ?? 0, + 'receipt_amount_daxie' => $params['receipt_amount_daxie'] ?? '', + 'remark' => $params['remark'] ?? '', + 'annex' => $params['annex'] ?? '', + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除 + * @param array $params + * @return bool + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public static function delete(array $params): bool + { + return AcceptanceBill::destroy($params['id']); + } + + + /** + * @notes 获取详情 + * @param $params + * @return array + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public static function detail($params): array + { + $acceptanceBill = AcceptanceBill::findOrEmpty($params['id']); + $acceptanceBill->custom; + $acceptanceBill->project; + $acceptanceBill->org; + $acceptanceBill->dept; + $acceptanceBill->contract; + return $acceptanceBill->toArray(); + } +} \ No newline at end of file diff --git a/app/adminapi/validate/bill/AcceptanceBillValidate.php b/app/adminapi/validate/bill/AcceptanceBillValidate.php new file mode 100644 index 000000000..184a99a96 --- /dev/null +++ b/app/adminapi/validate/bill/AcceptanceBillValidate.php @@ -0,0 +1,116 @@ + 'require', + 'org_id' => 'require', + 'dept_id' => 'require', + 'customer_id' => 'require', + 'project_id' => 'require', + 'contract_id' => 'require', + 'receipt_date' => 'require', + 'bill_sn' => 'require', + 'bank_account_id' => 'require', + 'bill_type' => 'require', + 'draft_acceptance_bank' => 'require', + 'receipt_amount' => 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + 'org_id' => '组织id', + 'dept_id' => '部门id', + 'customer_id' => '客户id', + 'project_id' => '项目id', + 'contract_id' => '销售合同id', + 'receipt_date' => '收票日期', + 'bill_sn' => '票据编号', + 'bank_account_id' => '收票银行id', + 'bill_type' => '汇票类型', + 'draft_acceptance_bank' => '汇票承兑银行', + 'receipt_amount' => '收款金额', + ]; + + + /** + * @notes 添加场景 + * @return AcceptanceBillValidate + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function sceneAdd() + { + return $this->only(['org_id','dept_id','customer_id','project_id','contract_id','receipt_date','bill_sn','bank_account_id','bill_type','draft_acceptance_bank','receipt_amount']); + } + + + /** + * @notes 编辑场景 + * @return AcceptanceBillValidate + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function sceneEdit() + { + return $this->only(['id','org_id','dept_id','customer_id','project_id','contract_id','receipt_date','bill_sn','bank_account_id','bill_type','draft_acceptance_bank','receipt_amount']); + } + + + /** + * @notes 删除场景 + * @return AcceptanceBillValidate + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return AcceptanceBillValidate + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + +} \ No newline at end of file diff --git a/app/common/model/bill/AcceptanceBill.php b/app/common/model/bill/AcceptanceBill.php new file mode 100644 index 000000000..1af3c9f54 --- /dev/null +++ b/app/common/model/bill/AcceptanceBill.php @@ -0,0 +1,83 @@ +hasOne(\app\common\model\custom\Custom::class, 'id', 'customer_id'); + } + + /** + * @notes 关联project + * @return \think\model\relation\HasOne + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function project() + { + return $this->hasOne(\app\common\model\project\Project::class, 'id', 'project_id'); + } + + /** + * @notes 关联org + * @return \think\model\relation\HasOne + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function org() + { + return $this->hasOne(\app\common\model\dept\Orgs::class, 'id', 'org_id'); + } + + /** + * @notes 关联dept + * @return \think\model\relation\HasOne + * @author likeadmin + * @date 2023/12/19 15:18 + */ + public function dept() + { + return $this->hasOne(\app\common\model\dept\Dept::class, 'id', 'dept_id'); + } + + public function contract() + { + return $this->hasOne(\app\common\model\contract\Contract::class, 'id', 'contract_id'); + } + +} \ No newline at end of file