У меня есть пользовательский процесс, который должен произойти во время выставления счета. Поскольку этот процесс обращается к веб-службе, мне нужно обернуть этот код в PXLongOperation в соответствии с рекомендациями Acumatica. если я обертываю PXLongOperation в блоке try / finally, все работает нормально относительно пользовательского интерфейса, но если я запускаю интеграционный тест, который выполнил элемент действия, вызывающий PXLongOperation, я теперь получаю «Предыдущая операция еще не завершена». ошибка. где они прошли нормально перед добавлением длинной операции.
Спасибо за вашу помощь
[PXOverride]
public IEnumerable Release(PXAdapter adapter, ReleaseDelegate baseMethod)
{
//IEnumerable returnValue = null;
try
{
ARInvoice invoice = Base.Document.Current;
CtpARInvoiceExt invoiceExt = PXCache<ARInvoice>.GetExtension<CtpARInvoiceExt>(invoice);
if (invoice.DocType == "CRM")
{
PXLongOperation.StartOperation(Base, () => { ProcessClickToPayCreditMemoInvoice(invoice, invoiceExt); });
}
return baseMethod(new PXAdapter(Base.CurrentDocument));
}
//todo: I did find that this is raising an error behind the scenes but if this is commented out
// everything works as expected.
// I have found that even if this gets commented out the the integration tests that are using
// The Contract Bases Soap API are failing indicating that the process has not completed.
//catch (Exception e)
//{
// //todo: this is throwing an exception with message: The previous operation has not been completed yet.
// throw new PXException(e,CtpMessages.ClickToPayReleaseOverrideFailed, e.Message);
//}
finally
{
//... exit logic
}
}
Сбой вызова API-интерфейса Contract Soap
InvokeResult invokeResult = SoapClient.Invoke(invoice, new ReleaseInvoice());