namespace Infrastructure.StockData;
///
/// SEIBro getNationFrsecSetlInfo(국가별 외화증권 결제현황) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력 (외화증권.md §2).
/// 실샘플 래퍼 = <result> 소문자. 응답 필드는 INTL_BIZ_CACD·SECN_TPCD·SETL_COUNT·FRSEC_SETL_AMT 4종 —
/// SETL_DT·NATION_CD 는 요청 파라미터라 배치가 스탬핑한다. INTL_BIZ_CACD 또는 SECN_TPCD 없는 행은 스킵(둘 다 자연키 일부).
///
public static class SeibroNationFrsecSetlParser
{
public sealed record Row(
string IntlBizCacd,
string SecnTpcd,
long? SetlCount,
decimal? FrsecSetlAmt
);
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();
var secnTpcd = SeibroXml.GetOrNull(fields, "SECN_TPCD")?.Trim();
if (string.IsNullOrEmpty(intlBizCacd) || string.IsNullOrEmpty(secnTpcd))
{
continue;
}
rows.Add(new Row(
intlBizCacd,
secnTpcd,
SeibroFieldParse.Long(SeibroXml.GetOrNull(fields, "SETL_COUNT")),
SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FRSEC_SETL_AMT"))
));
}
return rows;
}
}