特定の日の口座残高を照会したいと思います。
おそらく CustomDetailReportQuery を使用してこれを行うことができるように見えますが、やり過ぎのようです。
特定の日の口座残高を照会したいと思います。
おそらく CustomDetailReportQuery を使用してこれを行うことができるように見えますが、やり過ぎのようです。
私が知っている唯一の方法は、CustomDetailReportQuery を使用して適切な日付を設定し、合計行を探すことです。
public bool GetBalance(string sAccount, DateTime dt, out decimal balance)
{
balance = 0.0M;
IMsgSetRequest msr = sm.CreateMsgSetRequest("US", 7, 0);
msr.Attributes.OnError = ENRqOnError.roeStop;
ICustomDetailReportQuery q = msr.AppendCustomDetailReportQueryRq();
q.ReportOpenBalanceAsOf.SetValue(ENReportOpenBalanceAsOf.robaoReportEndDate);
q.DisplayReport.SetValue(false);
q.IncludeColumnList.Add(ENIncludeColumn.icDate);
q.IncludeColumnList.Add(ENIncludeColumn.icName);
q.IncludeColumnList.Add(ENIncludeColumn.icMemo);
q.IncludeColumnList.Add(ENIncludeColumn.icDebit);
q.IncludeColumnList.Add(ENIncludeColumn.icCredit);
q.IncludeColumnList.Add(ENIncludeColumn.icRunningBalance);
q.ORReportPeriod.ReportPeriod.ToReportDate.SetValue(dt);
q.ReportAccountFilter.ORReportAccountFilter.FullNameList.Add(sAccount);
q.CustomDetailReportType.SetValue(ENCustomDetailReportType.cdrtCustomTxnDetail);
q.SummarizeRowsBy.SetValue(ENSummarizeRowsBy.srbTotalOnly);
IMsgSetResponse msrgrsp = sm.DoRequests(msr);
try
{
if (msrgrsp.ResponseList.Count == 1)
{
IResponse resp = msrgrsp.ResponseList.GetAt(0);
if (resp.StatusCode == 0)
{
IReportRet rp = (IReportRet)resp.Detail;
IORReportData data = rp.ReportData.ORReportDataList.GetAt(rp.NumRows.GetValue() - 1);
if (data.TotalRow != null)
{
balance = decimal.Parse(data.TotalRow.ColDataList.GetAt(data.TotalRow.ColDataList.Count - 1).value.GetValue());
return true;
}
}
}
}
catch (Exception e)
{
Log("Error finding balance of " + sAccount + ":");
Log(e.Message);
}
return false;
}