예제 #1
0
            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());
            }
예제 #2
0
            private static NullResponse MarkItemsReturned(MarkReturnedItemsRealtimeRequest request)
            {
                ThrowIf.Null(request, "serviceRequest");

                return(new NullResponse());
            }