Я могу запросить объект 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 для этой конкретной строки?
Вот скриншот, показывающий транзакцию, отмеченную как очищенную, которую я выполнил через пользовательский интерфейс, щелкнув поле в столбце "Очистить".