private NullResponse MarkItemsReturned(MarkReturnedItemsRealtimeRequest request) { ThrowIf.Null(request, "request"); // Try convert sales line to returned items // Consider active lines only. Ignore voided lines. List <ItemReturn> itemReturns = new List <ItemReturn>(); foreach (var salesLine in request.SalesTransaction.ActiveSalesLines) { if (salesLine.IsReturnByReceipt) { // Might be empty after customer order return if (string.IsNullOrWhiteSpace(salesLine.ReturnStore)) { salesLine.ReturnStore = request.SalesTransaction.StoreId; } // Might be empty after customer order return if (string.IsNullOrWhiteSpace(salesLine.ReturnTerminalId)) { salesLine.ReturnTerminalId = request.SalesTransaction.TerminalId; } // we don't store the return channel identifier for the lines, just for the transaction if (salesLine.ReturnChannelId == 0) { salesLine.ReturnChannelId = request.SalesTransaction.ChannelId; } var itemReturn = new ItemReturn(); itemReturn.ChannelId = salesLine.ReturnChannelId; itemReturn.StoreId = salesLine.ReturnStore; itemReturn.TerminalId = salesLine.ReturnTerminalId; itemReturn.TransactionId = salesLine.ReturnTransactionId; itemReturn.LineNumber = salesLine.ReturnLineNumber; itemReturn.Quantity = salesLine.Quantity; itemReturns.Add(itemReturn); } } // Mark return quantities if needed if (itemReturns.Any()) { // Call the transaction service to update return quantities var transactionService = new TransactionServiceClient(request.RequestContext); transactionService.MarkItemsReturned(itemReturns.ToArray()); } return(new NullResponse()); }
private static NullResponse MarkItemsReturned(MarkReturnedItemsRealtimeRequest request) { ThrowIf.Null(request, "serviceRequest"); return(new NullResponse()); }