| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using System.ComponentModel.DataAnnotations;
- namespace Domain.Entities.Stocks;
- /// <summary>
- /// SEIBro 대금지급일정 정보 (getCostPaySchedul) — 배당금/단주대금 지급일정 (Wave 3).
- /// 날짜 스윕(대금지급일 TH1_PAY_TERM_BEGIN_DT × 지급구분 PAY_COST_TPCD{1배당금,3단주대금}) → 지급일 window delete+insert.
- /// ⚠️ 응답엔 TH1_PAY_TERM_BEGIN_DT·PAY_COST_TPCD 가 없어(요청 파라미터) 수집 배치가 스탬핑한다.
- /// 단주대금(PayCostTpcd=3) 지급건은 OddLotPayment(getOddLotInfo) 수집 트리거가 된다.
- /// </summary>
- public class PaymentSchedule
- {
- [Key]
- public int ID { get; private set; }
- /// <summary>발행회사 고객번호 (ISSUCO_CUSTNO)</summary>
- public int IssucoCustno { get; private set; }
- /// <summary>종목번호 (ISIN)</summary>
- public string Isin { get; private set; } = default!;
- /// <summary>한글종목명 (KOR_SECN_NM)</summary>
- public string? KorSecnNm { get; private set; }
- /// <summary>종목종류코드 (SECN_KACD) — 101보통주 201우선주</summary>
- public string? SecnKacd { get; private set; }
- /// <summary>권리기준일자 (RGT_STD_DT)</summary>
- public DateOnly? RgtStdDt { get; private set; }
- /// <summary>권리사유명 (RGT_RACD_NM) — 예 국내CB행사·국내BW행사 (실샘플 확인, 가이드 xlsx 누락분)</summary>
- public string? RgtRacdNm { get; private set; }
- /// <summary>권리사유세부유형코드 (RGT_RSN_DTAIL_SORT_CD)</summary>
- public string? RgtRsnDetailSortCd { get; private set; }
- /// <summary>지급대금구분코드 (PAY_COST_TPCD, 요청 스탬핑) — 1배당금 3단주대금</summary>
- public string PayCostTpcd { get; private set; } = default!;
- /// <summary>대금지급일 (TH1_PAY_TERM_BEGIN_DT, 요청 스탬핑) — 1차지급기간시작일</summary>
- public DateOnly Th1PayTermBeginDt { get; private set; }
- public DateTime UpdatedAt { get; private set; } = DateTime.UtcNow;
- private PaymentSchedule() { }
- public static PaymentSchedule Create(
- int issucoCustno,
- string isin,
- string? korSecnNm,
- string? secnKacd,
- DateOnly? rgtStdDt,
- string? rgtRacdNm,
- string? rgtRsnDetailSortCd,
- string payCostTpcd,
- DateOnly th1PayTermBeginDt)
- {
- if (string.IsNullOrWhiteSpace(isin))
- {
- throw new ArgumentException("isin required", nameof(isin));
- }
- if (string.IsNullOrWhiteSpace(payCostTpcd))
- {
- throw new ArgumentException("payCostTpcd required", nameof(payCostTpcd));
- }
- return new PaymentSchedule
- {
- IssucoCustno = issucoCustno,
- Isin = isin.Trim(),
- KorSecnNm = Trimmed(korSecnNm),
- SecnKacd = Trimmed(secnKacd),
- RgtStdDt = rgtStdDt,
- RgtRacdNm = Trimmed(rgtRacdNm),
- RgtRsnDetailSortCd = Trimmed(rgtRsnDetailSortCd),
- PayCostTpcd = payCostTpcd.Trim(),
- Th1PayTermBeginDt = th1PayTermBeginDt
- };
- }
- private static string? Trimmed(string? value)
- {
- return string.IsNullOrWhiteSpace(value) ? null : value.Trim();
- }
- }
|