From a974b2bfd81f69555abdf308007b75889afc6851 Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Fri, 8 Sep 2023 17:20:39 +0900 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=89=95=E7=8A=B6=E6=B3=81=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PaymentPlansController.php | 48 ++++++++++++++ .../PaymentPlansParam.php | 18 ++++++ app/Kintone/Models/KintoneModel.php | 7 ++- app/Kintone/Models/PaymentPlan.php | 62 +++++++++++++++++++ config/kintone.php | 1 + routes/api.php | 1 + 6 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansController.php create mode 100644 app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansParam.php create mode 100644 app/Kintone/Models/PaymentPlan.php diff --git a/app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansController.php b/app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansController.php new file mode 100644 index 0000000..e0b38af --- /dev/null +++ b/app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansController.php @@ -0,0 +1,48 @@ +middleware('auth:sanctum'); + } + + protected function run(Request $request): JsonResponse + { + $user = Auth::user(); + + $query = PaymentPlan::getQuery() + ->where(PaymentPlan::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO, $this->param->seasonTicketContractRecordNo) + ->orderByDesc(PaymentPlan::FIELD_PAYMENT_PLAN_DATE); + + $list = PaymentPlan::getAccess()->some($query); + + $result = []; + foreach ($list as $ele) { + $result[] = $ele->toArray(); + } + + return $this->successResponse($result); + } +} diff --git a/app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansParam.php b/app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansParam.php new file mode 100644 index 0000000..1912a88 --- /dev/null +++ b/app/Http/Controllers/Web/SeasonTicketContract/PaymentPlansParam.php @@ -0,0 +1,18 @@ + $this->str(), + ]; + } +} diff --git a/app/Kintone/Models/KintoneModel.php b/app/Kintone/Models/KintoneModel.php index 0e8c836..e21d8e9 100644 --- a/app/Kintone/Models/KintoneModel.php +++ b/app/Kintone/Models/KintoneModel.php @@ -332,11 +332,16 @@ abstract class KintoneModel $ret[$columnName] = $value; } - + $ret = array_merge($ret, $this->toArrayCustom()); return $ret; } + protected function toArrayCustom(): array + { + return []; + } + /** * オーバーライドを期待 diff --git a/app/Kintone/Models/PaymentPlan.php b/app/Kintone/Models/PaymentPlan.php new file mode 100644 index 0000000..82ebb87 --- /dev/null +++ b/app/Kintone/Models/PaymentPlan.php @@ -0,0 +1,62 @@ + FieldType::SINGLE_LINE_TEXT, + self::FIELD_PAYMENT_TYPE => FieldType::DROP_DOWN, + self::FIELD_PAYMENT_METHOD => FieldType::DROP_DOWN, + self::FIELD_TARGET_YEAR => FieldType::SINGLE_LINE_TEXT, + self::FIELD_TARGET_MONTH => FieldType::SINGLE_LINE_TEXT, + self::FIELD_TARGET_TERM_MONTH => FieldType::SINGLE_LINE_TEXT, + self::FIELD_PAYMENT_PLAN_DATE => FieldType::DATE, + self::FIELD_PAYMENT_PLAN_AMOUNT => FieldType::SINGLE_LINE_TEXT, + self::FIELD_APPROPRIATION_DATE => FieldType::DATE, + self::FIELD_APPROPRIATION_AMOUNT => FieldType::SINGLE_LINE_TEXT, + self::FIELD_REMAINING_AMOUNT => FieldType::SINGLE_LINE_TEXT, + ]; + + protected const FIELD_NAMES = [ + ...parent::FIELD_NAMES, + + self::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO => 'season_ticekt_contract_record_no', + self::FIELD_PAYMENT_TYPE => 'payment_type', + self::FIELD_PAYMENT_METHOD => 'payment_method', + self::FIELD_PAYMENT_PLAN_DATE => 'payment_plan_date', + ]; + + protected function toArrayCustom(): array + { + + $paymentDate = $this->getDate(self::FIELD_APPROPRIATION_DATE); + $remainingAmount = $this->getNumber(self::FIELD_REMAINING_AMOUNT); + + $paymentStatus = "未払い"; + if (!!$paymentDate && $remainingAmount === 0) { + $paymentStatus = "支払済み"; + } + return [ + 'payment_status' => $paymentStatus, + ]; + } +} diff --git a/config/kintone.php b/config/kintone.php index 318a81e..4b2d612 100644 --- a/config/kintone.php +++ b/config/kintone.php @@ -29,6 +29,7 @@ return [ ...App\Kintone\Models\Customer::setConfig(), ...App\Kintone\Models\ParkingRoom::setConfig(), ...App\Kintone\Models\SeasonTicketContract::setConfig(), + ...App\Kintone\Models\PaymentPlan::setConfig(), ], ]; diff --git a/routes/api.php b/routes/api.php index e0e4090..b4a4bb5 100644 --- a/routes/api.php +++ b/routes/api.php @@ -19,3 +19,4 @@ RouteHelper::get('/logout', App\Http\Controllers\Web\Auth\LogoutController::clas RouteHelper::get('/me', App\Http\Controllers\Web\Auth\MeController::class); RouteHelper::get('/season-ticket-contracts', App\Http\Controllers\Web\SeasonTicketContract\SeasonTicketContractsController::class); +RouteHelper::get('/season-ticket-contract/payment-plans', App\Http\Controllers\Web\SeasonTicketContract\PaymentPlansController::class);