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.

99 líneas
3.5KB

  1. <?php
  2. namespace App\Http\API\SMBC;
  3. use App\Util\DateUtil;
  4. use Illuminate\Support\Carbon;
  5. use Illuminate\Support\Collection;
  6. use Illuminate\Support\Str;
  7. class PollResultRecord
  8. {
  9. private const IDX_ACCEPT_NO = 11;
  10. private const IDX_APPLICATION_DATE = 12;
  11. private const IDX_APPLICATION_TIME = 13;
  12. private const IDX_CUSTOMER_NO = 22;
  13. private const IDX_ADDRESS5 = 33;
  14. private const IDX_STATUS = 40;
  15. private const IDX_BANK_CODE = 60;
  16. private const IDX_BANK_NAME = 61;
  17. private const IDX_BRANCH_CODE = 62;
  18. private const IDX_BRANCH_NAME = 63;
  19. private const IDX_ACCOUNT_TYPE = 64;
  20. private const IDX_ACCOUNT_NO = 66;
  21. private const IDX_ACCOUNT_NAME = 67;
  22. private const BANK_CODE_YUCHO = "9900";
  23. public string $acceptNo = ""; // 口座振替受付番号
  24. public Carbon $applicationDatetime; // 申込日時
  25. public string $customerNo = ""; // 顧客番号
  26. public SMBCStatus $status;
  27. public string $bankCode = ""; // 金融機関コード
  28. public string $bankName = "";
  29. public string $branchCode = ""; // 支店コード
  30. public string $branchName = "";
  31. public string $accountType = ""; // 預金種目
  32. public string $accountNo = ""; // 口座番号
  33. public string $accountName = ""; // 口座名義カナ
  34. public string $yuchoSign = ""; // ゆうちょ口座記号
  35. public string $yuchoAccountNo = ""; // ゆうちょ口座番号
  36. public string $bankBranchCode = ""; // 銀行支店コード
  37. public string $address5 = ""; // 住所5
  38. public string $all = "";
  39. /**
  40. *
  41. * @param Collection<int, string> $data
  42. */
  43. public function __construct(Collection $data)
  44. {
  45. $this->acceptNo = $data[self::IDX_ACCEPT_NO];
  46. $this->applicationDatetime = DateUtil::parse($data[self::IDX_APPLICATION_DATE] . $data[self::IDX_APPLICATION_TIME]);
  47. $this->customerNo = $data[self::IDX_CUSTOMER_NO];
  48. $this->address5 = $data[self::IDX_ADDRESS5];
  49. $this->status = SMBCStatus::from($data[self::IDX_STATUS]);
  50. $this->bankCode = $data[self::IDX_BANK_CODE];
  51. $this->bankName = $data[self::IDX_BANK_NAME];
  52. $this->branchCode = $data[self::IDX_BRANCH_CODE];
  53. $this->branchName = $data[self::IDX_BRANCH_NAME];
  54. $this->accountType = $data[self::IDX_ACCOUNT_TYPE];
  55. $this->accountNo = $data[self::IDX_ACCOUNT_NO];
  56. $this->accountName = $data[self::IDX_ACCOUNT_NAME];
  57. // ゆうちょの場合、
  58. // 支店コードに記号5桁のうちの3桁
  59. // 口座番号に記号8桁のうちの7桁が入っているので
  60. // 調整する
  61. if ($this->bankCode === self::BANK_CODE_YUCHO) {
  62. $branchCode = $this->branchCode;
  63. $accountNo = $this->accountNo;
  64. $this->branchCode = "";
  65. $this->accountNo = "";
  66. // 記号には前後に1,0を付与する
  67. $this->yuchoSign = sprintf("1%s0", $branchCode);
  68. // 口座番号には末尾に1を付与する
  69. $this->yuchoAccountNo = sprintf("%s1", $accountNo);
  70. // 支店コードは記号の前2桁に8を付与する
  71. $this->branchCode = sprintf("%s8", Str::of($branchCode)->substr(2));
  72. }
  73. $this->bankBranchCode = sprintf("%d%s", intval($this->bankCode), $this->branchCode);
  74. $this->all = $data->implode(",");
  75. }
  76. public function getCustomerCode(): int
  77. {
  78. return intval($this->customerNo);
  79. }
  80. }