You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
4.7KB

  1. <?php
  2. namespace App\Kintone\Models;
  3. use App\Http\Controllers\Web\Receipt\ReceiptDownloadController;
  4. use App\Kintone\Models\PaymentPlan as ModelsPaymentPlan;
  5. use App\Kintone\Models\SubTable\Receipt\PaymentPlan;
  6. use App\Kintone\Models\SubTable\Receipt\ReceiptDetail;
  7. use App\Kintone\Models\SubTable\Receipt\TaxDetail;
  8. use App\Util\RouteHelper;
  9. use Illuminate\Support\Carbon;
  10. use Illuminate\Support\Collection;
  11. /**
  12. * アプリ名 領収証
  13. * @property string receiptNo
  14. * @property Carbon receiptDate
  15. * @property string invoiceNo
  16. * @property string receiptIssure
  17. * @property string receiptName
  18. * @property int customerCode
  19. * @property string customerName
  20. * @property string taxType
  21. * @property Collection<int, ReceiptDetail> receiptDetail
  22. * @property Collection<int, TaxDetail> taxDetail
  23. * @property string receiptCustomerName
  24. * @property int receiptTotalAmount
  25. * @property Collection<int, PaymentPlan> paymentPlans
  26. * @property ?Carbon receiptPdfFileDownloadDatetime
  27. */
  28. class Receipt extends KintoneModel
  29. {
  30. const CONFIG_KEY = "KINTONE_APP_RECEIPT";
  31. const FIELD_RECEIPT_NO = "領収証番号";
  32. const FIELD_RECEIPT_DATE = "発行日";
  33. const FIELD_INVOICE_NO = "インボイス登録番号";
  34. const FIELD_RECEIPT_ISSURE = "発行事業者名";
  35. const FIELD_RECEIPT_NAME = "領収証名称";
  36. const FIELD_CUSTOMER_CODE = "顧客コード";
  37. const FIELD_CUSTOMER_NAME = "顧客名";
  38. const FIELD_TAX_TYPE = "税区分";
  39. const FIELD_RECEIPT_DETAIL = "テーブル_明細";
  40. const FIELD_RECEIPT_DETAIL_NAME = "明細_名称";
  41. const FIELD_RECEIPT_DETAIL_PARKING_NAME = "明細_駐車場名";
  42. const FIELD_RECEIPT_DETAIL_TARGET_MONTH = "明細_対象月";
  43. const FIELD_RECEIPT_DETAIL_MEMO = "明細_備考";
  44. const FIELD_RECEIPT_DETAIL_UNIT_PRICE = "明細_単価";
  45. const FIELD_RECEIPT_DETAIL_QUANTITY = "明細_数量";
  46. const FIELD_RECEIPT_DETAIL_AMOUNT = "明細_金額";
  47. const FIELD_RECEIPT_DETAIL_TAX_RATE = "明細_税率";
  48. const FIELD_TAX_DETAIL = "テーブル_内税明細";
  49. const FIELD_TAX_DETAIL_TAX_RATE = "内税明細_税率";
  50. const FIELD_TAX_DETAIL_TOTAL_AMOUNT = "内税明細_税込金額合計";
  51. const FIELD_TAX_DETAIL_TAX_AMOUNT = "内税明細_消費税_内税";
  52. const FIELD_RECEIPT_CUSTOMER_NAME = "宛名";
  53. const FIELD_RECEIPT_TOTAL_AMOUNT = "合計";
  54. const FIELD_PAYMENT_PLANS = "テーブル_入金実績";
  55. const FIELD_PAYMENT_PLANS_RECORD_NO = "入金実績_入金予定レコード番号";
  56. const FIELD_PAYMENT_PLANS_PAYMENT_PURPOSE = "入金実績_支払種別";
  57. const FIELD_PAYMENT_PLANS_DATE = "入金実績_入金日";
  58. const FIELD_PAYMENT_PLANS_AMOUNT = "入金実績_入金額";
  59. const FIELD_PAYMENT_PLANS_TARGET_YEAR = "入金実績支払対象_利用_年";
  60. const FIELD_PAYMENT_PLANS_TARGET_MONTH = "入金実績支払対象_利用_月";
  61. const FIELD_RECEIPT_PDF_FILE = "領収証PDF";
  62. const FIELD_RECEIPT_PDF_FILE_DOWNLOAD_DATETIME = "初回領収証ダウンロード日時";
  63. protected const FIELDS = [
  64. ...parent::FIELDS,
  65. self::FIELD_RECEIPT_NO => FieldType::SINGLE_LINE_TEXT,
  66. self::FIELD_RECEIPT_DATE => FieldType::DATE,
  67. self::FIELD_INVOICE_NO => FieldType::SINGLE_LINE_TEXT,
  68. self::FIELD_RECEIPT_ISSURE => FieldType::MULTI_LINE_TEXT,
  69. self::FIELD_RECEIPT_NAME => FieldType::SINGLE_LINE_TEXT,
  70. self::FIELD_CUSTOMER_CODE => FieldType::NUMBER,
  71. self::FIELD_CUSTOMER_NAME => FieldType::SINGLE_LINE_TEXT,
  72. self::FIELD_TAX_TYPE => FieldType::DROP_DOWN,
  73. self::FIELD_RECEIPT_DETAIL => FieldType::SUBTABLE,
  74. self::FIELD_TAX_DETAIL => FieldType::SUBTABLE,
  75. self::FIELD_RECEIPT_CUSTOMER_NAME => FieldType::SINGLE_LINE_TEXT,
  76. self::FIELD_RECEIPT_TOTAL_AMOUNT => FieldType::NUMBER,
  77. self::FIELD_RECEIPT_PDF_FILE => FieldType::FILE,
  78. self::FIELD_RECEIPT_PDF_FILE_DOWNLOAD_DATETIME => FieldType::DATETIME,
  79. self::FIELD_PAYMENT_PLANS => FieldType::SUBTABLE,
  80. ];
  81. protected const FIELD_NAMES = [
  82. ...parent::FIELD_NAMES,
  83. self::FIELD_RECEIPT_DATE => 'receipt_date',
  84. self::FIELD_RECEIPT_NAME => 'receipt_name',
  85. self::FIELD_RECEIPT_TOTAL_AMOUNT => 'total_amount',
  86. ];
  87. protected const SUB_TABLES = [
  88. self::FIELD_RECEIPT_DETAIL => ReceiptDetail::class,
  89. self::FIELD_TAX_DETAIL => TaxDetail::class,
  90. self::FIELD_PAYMENT_PLANS => PaymentPlan::class,
  91. ];
  92. protected const RELATIONS = [
  93. Customer::class,
  94. ModelsPaymentPlan::class,
  95. ];
  96. protected function toArrayCustom(): array
  97. {
  98. return [
  99. 'pdf_url' => RouteHelper::getPath(ReceiptDownloadController::class, ['receipt_no' => $this->receiptNo, 'record_no' => $this->getRecordId()]),
  100. ];
  101. }
  102. }