namespace Infrastructure.StockData; /// /// 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) 일부). /// public static class SeibroSecnFrsecSetlParser { public sealed record Row( string IntlBizCacd, string? NationCd, string? SecnTpcd, decimal? SetlAskQty, decimal? SetlAmt ); public static IReadOnlyList Parse(SeibroXml.Envelope envelope) { var rows = new List(); 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; } }