Я могу запросить объект 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 содержит список строк SalesReceipt в ORSalesReceiptLineRetList, но ни одна из этих строк не является строкой платежа. Невозможно получить TxnLineID из объекта SalesReceipt для строки платежа (который я могу найти).
Что я пытаюсь сделать, так это найти конкретный TxnLineID из SalesReceipt, чтобы я мог пометить его как очищенный. Когда я выполняю поиск, я вижу, что есть строка транзакции (та, что ниже, в разделе «Пакеты кредитных карт: учетная запись Visa / MC»). Как я могу найти TxnLineID для этой конкретной линии?
Вот снимок экрана, показывающий транзакцию, помеченную как очищенную, которую я выполнил через пользовательский интерфейс, щелкнув поле в столбце «Очищено».