SalesReceipt オブジェクトを照会できます。
public bool GetSalesReceipt(string sRefNum, string sAccount, out ISalesReceiptRet ret)
{
ret = null;
IMsgSetRequest msr = sm.CreateMsgSetRequest("US", 4, 0);
msr.Attributes.OnError = ENRqOnError.roeStop;
ISalesReceiptQuery q = msr.AppendSalesReceiptQueryRq();
q.metaData.SetValue(ENmetaData.mdMetaDataAndResponseData);
q.ORTxnQuery.TxnFilter.ORRefNumberFilter.RefNumberFilter.RefNumber.SetValue(sRefNum);
q.ORTxnQuery.TxnFilter.ORRefNumberFilter.RefNumberFilter.MatchCriterion.SetValue(ENMatchCriterion.mcContains);
q.ORTxnQuery.TxnFilter.AccountFilter.ORAccountFilter.FullNameList.Add(sAccount);
q.IncludeLineItems.SetValue(true);
IMsgSetResponse resp = sm.DoRequests(msr);
if (resp.ResponseList.Count == 0)
return false;
IResponseList rl = resp.ResponseList;
if (rl.Count == 1)
{
IResponse r = rl.GetAt(0);
if (r.Detail == null)
return false;
if (r.StatusCode != 0)
return false;
if (r.Type.GetValue() == (short)ENResponseType.rtSalesReceiptQueryRs)
{
ISalesReceiptRetList crl = (ISalesReceiptRetList)r.Detail;
if (crl.Count == 1)
ret = crl.GetAt(0);
}
}
if (ret == null)
return false;
return true;
}
SalesReceipt には、ORSalesReceiptLineRetList に SalesReceipt Lines のリストがありますが、それらのどの行も支払明細ではありません。支払いラインの SalesReceipt オブジェクトから TxnLineID を取得する方法はありません (私が見つけることができます)。
私がやろうとしているのは、SalesReceipt から特定の TxnLineID を見つけて、それをクリア済みとしてマークできるようにすることです。検索を行うと、取引行があることがわかります (クレジット カード バッチ:Visa/MC アカウントの下の行)。その特定の行の TxnLineID を見つけるにはどうすればよいですか?
これは、UI で [Cleared] 列のボックスをクリックして実行した、クリア済みとしてマークされたトランザクションを示すスクリーンショットです。