|
- <?php
-
- namespace App\Http\API\SMBC;
-
- use App\Util\DateUtil;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Collection;
- use Illuminate\Support\Str;
-
- class PollResultRecord
- {
- private const IDX_ACCEPT_NO = 11;
- private const IDX_APPLICATION_DATE = 12;
- private const IDX_APPLICATION_TIME = 13;
- private const IDX_CUSTOMER_NO = 22;
- private const IDX_ADDRESS5 = 33;
- private const IDX_STATUS = 40;
- private const IDX_BANK_CODE = 60;
- private const IDX_BANK_NAME = 61;
- private const IDX_BRANCH_CODE = 62;
- private const IDX_BRANCH_NAME = 63;
- private const IDX_ACCOUNT_TYPE = 64;
- private const IDX_ACCOUNT_NO = 66;
- private const IDX_ACCOUNT_NAME = 67;
-
- private const BANK_CODE_YUCHO = "9900";
-
- public string $acceptNo = ""; // 口座振替受付番号
- public Carbon $applicationDatetime; // 申込日時
- public string $customerNo = ""; // 顧客番号
- public SMBCStatus $status;
- public string $bankCode = ""; // 金融機関コード
- public string $bankName = "";
- public string $branchCode = ""; // 支店コード
- public string $branchName = "";
- public string $accountType = ""; // 預金種目
- public string $accountNo = ""; // 口座番号
- public string $accountName = ""; // 口座名義カナ
-
- public string $yuchoSign = ""; // ゆうちょ口座記号
- public string $yuchoAccountNo = ""; // ゆうちょ口座番号
-
- public string $bankBranchCode = ""; // 銀行支店コード
-
- public string $address5 = ""; // 住所5
-
- public string $all = "";
-
- /**
- *
- * @param Collection<int, string> $data
- */
- public function __construct(Collection $data)
- {
- $this->acceptNo = $data[self::IDX_ACCEPT_NO];
- $this->applicationDatetime = DateUtil::parse($data[self::IDX_APPLICATION_DATE] . $data[self::IDX_APPLICATION_TIME]);
- $this->customerNo = $data[self::IDX_CUSTOMER_NO];
- $this->address5 = $data[self::IDX_ADDRESS5];
- $this->status = SMBCStatus::from($data[self::IDX_STATUS]);
- $this->bankCode = $data[self::IDX_BANK_CODE];
- $this->bankName = $data[self::IDX_BANK_NAME];
- $this->branchCode = $data[self::IDX_BRANCH_CODE];
- $this->branchName = $data[self::IDX_BRANCH_NAME];
- $this->accountType = $data[self::IDX_ACCOUNT_TYPE];
- $this->accountNo = $data[self::IDX_ACCOUNT_NO];
- $this->accountName = $data[self::IDX_ACCOUNT_NAME];
-
- // ゆうちょの場合、
- // 支店コードに記号5桁のうちの3桁
- // 口座番号に記号8桁のうちの7桁が入っているので
- // 調整する
- if ($this->bankCode === self::BANK_CODE_YUCHO) {
-
- $branchCode = $this->branchCode;
- $accountNo = $this->accountNo;
- $this->branchCode = "";
- $this->accountNo = "";
-
- // 記号には前後に1,0を付与する
- $this->yuchoSign = sprintf("1%s0", $branchCode);
-
- // 口座番号には末尾に1を付与する
- $this->yuchoAccountNo = sprintf("%s1", $accountNo);
-
- // 支店コードは記号の前2桁に8を付与する
- $this->branchCode = sprintf("%s8", Str::of($branchCode)->substr(2));
- }
-
- $this->bankBranchCode = sprintf("%d%s", intval($this->bankCode), $this->branchCode);
-
- $this->all = $data->implode(",");
- }
-
- public function getCustomerCode(): int
- {
- return intval($this->customerNo);
- }
- }
|