| @@ -0,0 +1,48 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\SeasonTicketContract; | |||||
| use App\Http\Controllers\Web\WebController; | |||||
| use App\Kintone\Models\PaymentPlan; | |||||
| use Illuminate\Http\JsonResponse; | |||||
| use Illuminate\Http\Request; | |||||
| use Illuminate\Support\Facades\Auth; | |||||
| class PaymentPlansController extends WebController | |||||
| { | |||||
| public function name(): string | |||||
| { | |||||
| return "入金予定結果一覧取得"; | |||||
| } | |||||
| public function description(): string | |||||
| { | |||||
| return "入金予定結果の一覧を取得する"; | |||||
| } | |||||
| public function __construct(protected PaymentPlansParam $param) | |||||
| { | |||||
| parent::__construct(); | |||||
| $this->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); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,18 @@ | |||||
| <?php | |||||
| namespace App\Http\Controllers\Web\SeasonTicketContract; | |||||
| use App\Http\Controllers\Web\BaseParam; | |||||
| /** | |||||
| * @property string $seasonTicketContractRecordNo | |||||
| */ | |||||
| class PaymentPlansParam extends BaseParam | |||||
| { | |||||
| public function rules(): array | |||||
| { | |||||
| return [ | |||||
| 'season_ticket_contract_record_no' => $this->str(), | |||||
| ]; | |||||
| } | |||||
| } | |||||
| @@ -332,11 +332,16 @@ abstract class KintoneModel | |||||
| $ret[$columnName] = $value; | $ret[$columnName] = $value; | ||||
| } | } | ||||
| $ret = array_merge($ret, $this->toArrayCustom()); | |||||
| return $ret; | return $ret; | ||||
| } | } | ||||
| protected function toArrayCustom(): array | |||||
| { | |||||
| return []; | |||||
| } | |||||
| /** | /** | ||||
| * オーバーライドを期待 | * オーバーライドを期待 | ||||
| @@ -0,0 +1,62 @@ | |||||
| <?php | |||||
| namespace App\Kintone\Models; | |||||
| /** | |||||
| * アプリ名 入金予定・結果 | |||||
| */ | |||||
| class PaymentPlan extends KintoneModel | |||||
| { | |||||
| const CONFIG_KEY = "KINTONE_APP_PAYMENT_PLAN"; | |||||
| const FIELD_SEASON_TICKET_CONTRACT_RECORD_NO = "contract_record_number"; | |||||
| const FIELD_PAYMENT_TYPE = "payment_type"; | |||||
| const FIELD_PAYMENT_METHOD = "payment_method"; | |||||
| const FIELD_TARGET_YEAR = "target_year"; | |||||
| const FIELD_TARGET_MONTH = "target_month"; | |||||
| const FIELD_TARGET_TERM_MONTH = "target_term_month"; | |||||
| const FIELD_PAYMENT_PLAN_DATE = "payment_plan_date"; | |||||
| const FIELD_PAYMENT_PLAN_AMOUNT = "payment_plan_amount"; | |||||
| const FIELD_APPROPRIATION_DATE = "appropriation_date"; | |||||
| const FIELD_APPROPRIATION_AMOUNT = "appropriation_amount"; | |||||
| const FIELD_REMAINING_AMOUNT = "remaining_amount"; | |||||
| protected const FIELDS = [ | |||||
| ...parent::FIELDS, | |||||
| self::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO => 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, | |||||
| ]; | |||||
| } | |||||
| } | |||||
| @@ -29,6 +29,7 @@ return [ | |||||
| ...App\Kintone\Models\Customer::setConfig(), | ...App\Kintone\Models\Customer::setConfig(), | ||||
| ...App\Kintone\Models\ParkingRoom::setConfig(), | ...App\Kintone\Models\ParkingRoom::setConfig(), | ||||
| ...App\Kintone\Models\SeasonTicketContract::setConfig(), | ...App\Kintone\Models\SeasonTicketContract::setConfig(), | ||||
| ...App\Kintone\Models\PaymentPlan::setConfig(), | |||||
| ], | ], | ||||
| ]; | ]; | ||||
| @@ -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('/me', App\Http\Controllers\Web\Auth\MeController::class); | ||||
| RouteHelper::get('/season-ticket-contracts', App\Http\Controllers\Web\SeasonTicketContract\SeasonTicketContractsController::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); | |||||