| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- namespace Infrastructure.StockData;
- /// <summary>
- /// SEIBro getSecnFrsecSetlInfo(종목별 외화증권 결제현황) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력 (외화증권.md §4).
- /// 실샘플 래퍼 = <result> 소문자. 응답 필드는 NATION_CD·SECN_TPCD·INTL_BIZ_CACD·SETL_ASK_QTY·SETL_AMT 5종 —
- /// PROC_DT·ISIN 은 요청 파라미터라 배치가 스탬핑한다. INTL_BIZ_CACD 없는 행은 스킵(자연키 (ProcDt,Isin,IntlBizCacd) 일부).
- /// </summary>
- public static class SeibroSecnFrsecSetlParser
- {
- public sealed record Row(
- string IntlBizCacd,
- string? NationCd,
- string? SecnTpcd,
- decimal? SetlAskQty,
- decimal? SetlAmt
- );
- public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
- {
- var rows = new List<Row>();
- foreach (var fields in envelope.Rows)
- {
- var intlBizCacd = SeibroXml.GetOrNull(fields, "INTL_BIZ_CACD")?.Trim();
- if (string.IsNullOrEmpty(intlBizCacd))
- {
- continue;
- }
- rows.Add(new Row(
- intlBizCacd,
- SeibroXml.GetOrNull(fields, "NATION_CD")?.Trim(),
- SeibroXml.GetOrNull(fields, "SECN_TPCD")?.Trim(),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "SETL_ASK_QTY")),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "SETL_AMT"))
- ));
- }
- return rows;
- }
- }
|