No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

97 líneas
3.4KB

  1. <?php
  2. namespace App\Kintone\Models;
  3. use App\Kintone\Models\DropDown\PaymentPlan\PaymentType;
  4. use Illuminate\Support\Carbon;
  5. /**
  6. * アプリ名 入金予定・結果
  7. * @property int SEASON_TICKET_CONTRACT_RECORD_NO
  8. * @property string parkingName
  9. * @property int parkingName
  10. * @property int customerCode
  11. * @property string paymentType
  12. * @property string paymentMethod
  13. * @property int targetYear
  14. * @property int targetMonth
  15. * @property int targetTermMonth
  16. * @property Carbon paymentPlanDate
  17. * @property int paymentPlanAmount
  18. * @property Carbon appropriationDate
  19. * @property int appropriationAmount
  20. * @property int remainingAmount
  21. */
  22. class PaymentPlan extends KintoneModel
  23. {
  24. const CONFIG_KEY = "KINTONE_APP_PAYMENT_PLAN";
  25. const FIELD_SEASON_TICKET_CONTRACT_RECORD_NO = "contract_record_number";
  26. const FIELD_PARKING_NAME = "parking_name";
  27. const FIELD_CUSTOMER_CODE = "customer_code";
  28. const FIELD_PAYMENT_TYPE = "payment_type";
  29. const FIELD_PAYMENT_METHOD = "payment_method";
  30. const FIELD_TARGET_YEAR = "target_year";
  31. const FIELD_TARGET_MONTH = "target_month";
  32. const FIELD_TARGET_TERM_MONTH = "target_term_month";
  33. const FIELD_PAYMENT_PLAN_DATE = "payment_plan_date";
  34. const FIELD_PAYMENT_PLAN_AMOUNT = "payment_plan_amount";
  35. const FIELD_APPROPRIATION_DATE = "appropriation_date";
  36. const FIELD_APPROPRIATION_AMOUNT = "appropriation_amount";
  37. const FIELD_REMAINING_AMOUNT = "remaining_amount";
  38. protected const FIELDS = [
  39. ...parent::FIELDS,
  40. self::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO => FieldType::NUMBER,
  41. self::FIELD_PARKING_NAME => FieldType::SINGLE_LINE_TEXT,
  42. self::FIELD_CUSTOMER_CODE => FieldType::NUMBER,
  43. self::FIELD_PAYMENT_TYPE => FieldType::DROP_DOWN,
  44. self::FIELD_PAYMENT_METHOD => FieldType::DROP_DOWN,
  45. self::FIELD_TARGET_YEAR => FieldType::NUMBER,
  46. self::FIELD_TARGET_MONTH => FieldType::NUMBER,
  47. self::FIELD_TARGET_TERM_MONTH => FieldType::NUMBER,
  48. self::FIELD_PAYMENT_PLAN_DATE => FieldType::DATE,
  49. self::FIELD_PAYMENT_PLAN_AMOUNT => FieldType::NUMBER,
  50. self::FIELD_APPROPRIATION_DATE => FieldType::DATE,
  51. self::FIELD_APPROPRIATION_AMOUNT => FieldType::NUMBER,
  52. self::FIELD_REMAINING_AMOUNT => FieldType::NUMBER,
  53. ];
  54. protected const FIELD_NAMES = [
  55. ...parent::FIELD_NAMES,
  56. self::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO => 'season_ticekt_contract_record_no',
  57. self::FIELD_PAYMENT_TYPE => 'payment_type',
  58. self::FIELD_PAYMENT_METHOD => 'payment_method',
  59. self::FIELD_PAYMENT_PLAN_DATE => 'payment_plan_date',
  60. self::FIELD_TARGET_YEAR => 'target_year',
  61. self::FIELD_TARGET_MONTH => 'target_month',
  62. ];
  63. protected function toArrayCustom(): array
  64. {
  65. return [
  66. 'payment_status' => $this->donePayment() ? "支払済み" : "未払い",
  67. 'payment_name' => $this->getViewName(),
  68. ];
  69. }
  70. public function donePayment(): bool
  71. {
  72. $paymentDate = $this->getDate(self::FIELD_APPROPRIATION_DATE);
  73. $remainingAmount = $this->getNumber(self::FIELD_REMAINING_AMOUNT);
  74. return !!$paymentDate && $remainingAmount === 0;
  75. }
  76. private function getViewName(): string
  77. {
  78. if ($this->paymentType === PaymentType::SEASON_TICKET) {
  79. return sprintf("%d年%d月分 定期料金", $this->targetYear, $this->targetMonth);
  80. }
  81. return $this->paymentType;
  82. }
  83. }