Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

77 lines
2.8KB

  1. <?php
  2. namespace App\Http\Controllers\Web\HTICWeb;
  3. use App\Http\Controllers\Web\WebController;
  4. use App\Kintone\Models\DropDown\PaymentPlan\PaymentMethod;
  5. use App\Kintone\Models\DropDown\PaymentPlan\PaymentType;
  6. use App\Kintone\Models\PaymentPlan;
  7. use App\Kintone\Models\SeasonTicketContract;
  8. use Illuminate\Http\JsonResponse;
  9. use Illuminate\Http\Request;
  10. class AdjustDataController extends WebController
  11. {
  12. public function name(): string
  13. {
  14. return "[IC定期連携]精算データ連携";
  15. }
  16. public function description(): string
  17. {
  18. return "[IC定期連携]精算データ連携";
  19. }
  20. public function __construct(protected AdjustDataParam $param)
  21. {
  22. parent::__construct();
  23. }
  24. protected function run(Request $request): JsonResponse
  25. {
  26. $param = $this->param;
  27. // 契約の特定
  28. $query = SeasonTicketContract::getQuery()
  29. ->where(SeasonTicketContract::FIELD_IC_SEASON_TICEKT_PARKING_MANAGEMENT_CODE, $param->parkingManagementCode)
  30. ->where(SeasonTicketContract::FIELD_IC_SEASON_TICEKT_SEASON_TICKET_SEQ_NO, $param->seasonTicketSeqNo);
  31. $list = SeasonTicketContract::getAccess()->all($query);
  32. if ($list->count() !== 1) {
  33. // 対象不正のためスキップ
  34. info("対象不正のためスキップ");
  35. return $this->successResponse();
  36. }
  37. $seasonTicketContract = $list[0];
  38. // 重複チェック
  39. $query = PaymentPlan::getQuery()
  40. ->where(PaymentPlan::FIELD_IC_SEASON_TICKET_CONTRACT_ID, $seasonTicketContract->icSeasonTicektContractId)
  41. ->where(PaymentPlan::FIELD_CUSTOMER_CODE, $seasonTicketContract->customerCode)
  42. ->whereDate(PaymentPlan::FIELD_APPROPRIATION_DATE, $param->adjustDatetime)
  43. ->where(PaymentPlan::FIELD_APPROPRIATION_AMOUNT, $param->parkingCharge);
  44. if (PaymentPlan::getAccess()->all($query)->isNotEmpty()) {
  45. // 登録済みのためスキップ
  46. info("登録済みのためスキップ");
  47. return $this->successResponse();
  48. }
  49. // データ保存
  50. $plan = new PaymentPlan();
  51. $plan->seasonTicketContractRecordNo = $seasonTicketContract->getRecordId();
  52. $plan->icSeasonTicketContractId = $seasonTicketContract->icSeasonTicektContractId;
  53. $plan->paymentType = PaymentType::SEASON_TICKET;
  54. $plan->paymentMethod = PaymentMethod::定期更新機;
  55. $plan->paymentPlanDate = $param->adjustDatetime;
  56. $plan->paymentPlanAmount = $param->parkingCharge;
  57. $plan->appropriationDate = $param->adjustDatetime;
  58. $plan->appropriationAmount = $param->parkingCharge;
  59. $plan->remainingAmount = 0;
  60. $plan->save();
  61. return $this->successResponse();
  62. }
  63. }