Example #1
0
        // Calculate totals for RmaRequest
        private void CalculateTotals(RmaRequest item)
        {
            decimal itemTax = 0m;

            foreach (var returnItem in item.RmaReturnItems)
            {
                var lineItem  = returnItem.RmaLineItems[0].LineItem;
                var amountTmp = lineItem.ExtendedPrice * returnItem.RmaLineItems[0].ReturnQuantity / lineItem.Quantity;
                returnItem.ReturnAmount = Math.Floor(amountTmp * 100) * 0.01m;
                amountTmp = lineItem.TaxTotal * returnItem.RmaLineItems[0].ReturnQuantity / lineItem.Quantity;
                itemTax  += Math.Floor(amountTmp * 100) * 0.01m;
            }
            item.ItemSubtotal = item.RmaReturnItems.Sum(x => x.ReturnAmount);

            decimal ShippingCost = 0;
            decimal ShippingTax  = 0;

            /// TODO: ShippingCost
            // ShippingCost = ??? // take LineItems, addresses, shipping methods and... calculate it.
            // ShippingTax =

            item.ItemTax = itemTax;
            // exclude taxes and subtract shipping costs
            item.TotalBeforeTax    = item.ItemSubtotal - item.ItemTax - ShippingCost;
            item.LessReStockingFee = ShippingCost + ShippingTax;
            item.ReturnTotal       = item.ItemSubtotal - item.LessReStockingFee;
            item.RefundAmount      = 0m;
        }
Example #2
0
        public static bool IsAllowCreateExchangeOrder(this RmaRequest item)
        {
            var retVal = ((RmaRequestStatus)item.GetCurrentStatus() & (RmaRequestStatus.AwaitingStockReturn | RmaRequestStatus.AwaitingCompletion)) == (RmaRequestStatus)item.GetCurrentStatus();

            if (retVal)
            {
                retVal = string.IsNullOrEmpty(item.ExchangeOrderId);
            }
            return(retVal);
        }
        public TestOrderBuilder WithReturns()
        {
            var returnLineItems = _order.OrderForms[0].LineItems.Take(2).ToArray();

            var returnItem1 = new RmaReturnItem
            {
                ItemState    = RmaLineItemState.AwaitingReturn.ToString(),
                ReturnAmount = 21.32m,
                ReturnReason = "Corrupt"
            };

            var rmaLineItem = new RmaLineItem
            {
                RmaReturnItemId = returnItem1.RmaReturnItemId,
                LineItemId      = returnLineItems[0].LineItemId,
                LineItem        = returnLineItems[0],
                ReturnQuantity  = 1,
                Quantity        = 0
            };

            returnItem1.RmaLineItems.Add(rmaLineItem);

            var returnItem2 = new RmaReturnItem
            {
                ItemState    = RmaLineItemState.AwaitingReturn.ToString(),
                ReturnAmount = 210.67m,
                ReturnReason = "Other"
            };

            rmaLineItem = new RmaLineItem
            {
                RmaReturnItemId = returnItem2.RmaReturnItemId,
                LineItemId      = returnLineItems[1].LineItemId,
                LineItem        = returnLineItems[1],
                ReturnQuantity  = 2,
                Quantity        = 0
            };
            returnItem2.RmaLineItems.Add(rmaLineItem);

            var rmaRequest = new RmaRequest
            {
                Status       = RmaRequestStatus.AwaitingStockReturn.ToString(),
                ReturnTotal  = 323.21m,
                RefundAmount = 301.89m,
                OrderId      = _order.OrderGroupId
            };

            foreach (var rmaItem in new[] { returnItem1, returnItem2 })
            {
                rmaRequest.RmaReturnItems.Add(rmaItem);
            }
            ((Order)_order).RmaRequests.Add(rmaRequest);
            return(this);
        }
Example #4
0
        public static int GetCurrentStatus(this RmaRequest item)
        {
            var retVal = RmaRequestStatus.AwaitingStockReturn;
            RmaRequestStatus parsedVal;

            if (Enum.TryParse(item.Status, out parsedVal))
            {
                retVal = parsedVal;
            }
            return((int)retVal);
        }
Example #5
0
        public static void SetCurrentStatus(this RmaRequest item, int value, OrderClient client)
        {
            var newStatus = (RmaRequestStatus)value;

            if (client.CanChangeStatus(item, newStatus.ToString()))
            {
                item.Status = newStatus.ToString();
            }
            else
            {
                throw new OperationCanceledException("[RmaRequest] Unable to transition: " + item.Status + " -> " + newStatus.ToString());
            }
        }
Example #6
0
 // main public constructor. calls CreateWizardSteps()
 public CreateExchangeViewModel(Foundation.Orders.Model.Order innerOrder,
                                RmaRequest rmaRequest, IRepositoryFactory <IShippingRepository> shippingRepositoryFactory,
                                IViewModelsFactory <IRmaRequestReturnItemsStepViewModel> returnItemsVmFactory,
                                IViewModelsFactory <IRmaRequestRefundStepViewModel> refundVmFactory,
                                IOrderEntityFactory entityFactory, ReturnBuilder returnBuilder,
                                IViewModelsFactory <ILineItemAddViewModel> lineItemAddVmFactory,
                                IViewModelsFactory <IExchangeOrderStepViewModel> exchangeVmFactory,
                                IViewModelsFactory <IOrderAddressViewModel> addressVmFactory)
     : base(innerOrder, rmaRequest, entityFactory, returnBuilder, returnItemsVmFactory, refundVmFactory, lineItemAddVmFactory, exchangeVmFactory)
 {
     _entityFactory             = entityFactory;
     _addressVmFactory          = addressVmFactory;
     _shippingRepositoryFactory = shippingRepositoryFactory;
     _exchangeVmFactory         = exchangeVmFactory;
 }
        public CreateRmaRequestViewModel(Foundation.Orders.Model.Order innerOrder,
                                         RmaRequest rmaRequest, IOrderEntityFactory orderEntityFactory, ReturnBuilder returnBuilder,
                                         IViewModelsFactory <IRmaRequestReturnItemsStepViewModel> returnItemsVmFactory,
                                         IViewModelsFactory <IRmaRequestRefundStepViewModel> refundVmFactory,
                                         IViewModelsFactory <ILineItemAddViewModel> lineItemAddVmFactory, IViewModelsFactory <IExchangeOrderStepViewModel> exchangeVmFactory)
        {
            _exchangeVmFactory           = exchangeVmFactory;
            _lineItemAddVmFactory        = lineItemAddVmFactory;
            _isCreatingExchangeOrderOnly = innerOrder.RmaRequests.Any(x => x.RmaRequestId == rmaRequest.RmaRequestId);

            var item = innerOrder.DeepClone(orderEntityFactory as IKnownSerializationTypes);

            ReturnBuilder = returnBuilder;
            ReturnBuilder.WithOrderOrRmaRequest(item, rmaRequest);

            CreateWizardSteps(returnItemsVmFactory, refundVmFactory);
        }
        public RmaRequestViewModel(
            IViewModelsFactory <ICreateRefundViewModel> wizardVmFactory,
            IViewModelsFactory <IOrderViewModel> orderVmFactory,
            IAuthenticationContext authContext,
            RmaRequest rmaRequestItem,
            OrderViewModel parentViewModel, OrderClient client)
        {
            _wizardVmFactory  = wizardVmFactory;
            _orderVmFactory   = orderVmFactory;
            CurrentRmaRequest = rmaRequestItem;
            _authContext      = authContext;
            _parentViewModel  = parentViewModel;
            _orderClient      = client;

            RmaRequestWizardDialogInteractionRequest = new InteractionRequest <Confirmation>();

            RmaRequestCancelCommand    = new DelegateCommand(RaiseRmaRequestCancelInteractionRequest, () => CurrentRmaRequest.IsCancellable(client));
            RmaRequestCompleteCommand  = new DelegateCommand(RaiseRmaRequestCompleteInteractionRequest, () => CurrentRmaRequest.IsCompletable(client));
            ExchangeOrderCreateCommand = new DelegateCommand(RaiseExchangeOrderCreateInteractionRequest, () => CurrentRmaRequest.IsAllowCreateExchangeOrder());
            ExchangeOrderViewCommand   = new DelegateCommand(RaiseExchangeOrderViewInteractionRequest, () => CurrentRmaRequest.ExchangeOrder != null);
        }
Example #9
0
        private void PopulateTestOrder()
        {
            if (MockOrderList == null)
            {
                MockOrderList          = new List <OrderModel.Order>();
                MockPaymentList        = new List <Payment>();
                MockShippingOptionList = new List <ShippingOption>();
                MockPaymentGatewayList = new List <PaymentGateway>();
                MockPaymentMethodList  = new List <PaymentMethod>();
                MockCountryList        = new List <Country>();

                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "1", TrackingNumber = "PO32313", Status = "OnHold", Total = 123.43m, CustomerId = "1"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "2", TrackingNumber = "PO62316", Status = "Completed", Total = 444.12m, CustomerId = "2"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "3", TrackingNumber = "PO75423", Status = "OnHold", Total = 765.32m, CustomerId = "3"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "4", TrackingNumber = "PO98743", Status = "Completed", Total = 775.22m, CustomerId = "4"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "5", TrackingNumber = "PO36572", Status = "InProgress", Total = 66.43m, CustomerId = "5"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "6", TrackingNumber = "PO65432", Status = "InProgress", Total = 632.12m, CustomerId = "6"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "7", TrackingNumber = "PO97898", Status = "OnHold", Total = 642.21m, CustomerId = "7"
                });

                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "10", TrackingNumber = "POS2313", Total = 123.43m, CustomerId = "11"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "20", TrackingNumber = "POS2316", Status = "Completed", Total = 444.12m, CustomerId = "12"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "30", TrackingNumber = "POS5423", Total = 765.32m, CustomerId = "13"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "40", TrackingNumber = "POS8743", Status = "Completed", Total = 775.22m, CustomerId = "14"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "50", TrackingNumber = "POS6572", Status = "InProgress", Total = 66.43m, CustomerId = "15"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "60", TrackingNumber = "POS5432", Status = "InProgress", Total = 632.12m, CustomerId = "16"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "70", TrackingNumber = "POS7898", Total = 642.21m, CustomerId = "17"
                });

                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "11", TrackingNumber = "PO62313", Total = 123.43m, CustomerId = "11"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "12", TrackingNumber = "PO92316", Status = "Completed", Total = 444.12m, CustomerId = "12"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "13", TrackingNumber = "PO25423", Total = 765.32m, CustomerId = "13"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "14", TrackingNumber = "PO98743", Status = "Completed", Total = 775.22m, CustomerId = "14"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "15", TrackingNumber = "PO66572", Total = 66.43m, CustomerId = "15"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "16", TrackingNumber = "PO35432", Total = 632.12m, CustomerId = "16"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "US Store", OrderGroupId = "17", TrackingNumber = "PO07898", Total = 642.21m, CustomerId = "17"
                });

                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "11", TrackingNumber = "PSS2313", Total = 123.43m, CustomerId = "11"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "21", TrackingNumber = "PSS2316", Status = "Completed", Total = 444.12m, CustomerId = "12"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "31", TrackingNumber = "PSS5423", Total = 765.32m, CustomerId = "13"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "41", TrackingNumber = "PSS8743", Status = "Completed", Total = 775.22m, CustomerId = "14"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "51", TrackingNumber = "PSS6572", Total = 66.43m, CustomerId = "15"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "61", TrackingNumber = "PSS5432", Total = 632.12m, CustomerId = "16"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "71", TrackingNumber = "PSS7898", Total = 642.21m, CustomerId = "17"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "21", TrackingNumber = "PS62313", Total = 123.43m, CustomerId = "11"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "22", TrackingNumber = "PS92316", Status = "Completed", Total = 444.12m, CustomerId = "12"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "23", TrackingNumber = "PS25423", Total = 765.32m, CustomerId = "13"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "24", TrackingNumber = "PS98743", Status = "Completed", Total = 775.22m, CustomerId = "14"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "25", TrackingNumber = "PS66572", Total = 66.43m, CustomerId = "15"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "26", TrackingNumber = "PS35432", Status = "Completed", Total = 632.12m, CustomerId = "16"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "27", TrackingNumber = "PS07898", Total = 642.21m, CustomerId = "17"
                });

                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "12", TrackingNumber = "PSO2313", Total = 123.43m, CustomerId = "11"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "22", TrackingNumber = "PSO2316", Status = "Completed", Total = 444.12m, CustomerId = "12"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "32", TrackingNumber = "PSO5423", Total = 765.32m, CustomerId = "13"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "42", TrackingNumber = "PSO8743", Status = "Completed", Total = 775.22m, CustomerId = "14"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "52", TrackingNumber = "PSO6572", Total = 66.43m, CustomerId = "15"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "62", TrackingNumber = "PSO5432", Status = "AwaitingExchange", Total = 632.12m, CustomerId = "16"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "72", TrackingNumber = "PSO7898", Total = 642.21m, CustomerId = "17"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "32", TrackingNumber = "PSO2313", Total = 123.43m, CustomerId = "11"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "32", TrackingNumber = "PSO2316", Status = "Completed", Total = 444.12m, CustomerId = "12"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "33", TrackingNumber = "PSO5423", Total = 765.32m, CustomerId = "13"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "34", TrackingNumber = "PSO8743", Status = "Completed", Total = 775.22m, CustomerId = "14"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "35", TrackingNumber = "PSO6572", Total = 66.43m, CustomerId = "15"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "36", TrackingNumber = "PSO5432", Status = "AwaitingExchange", Total = 632.12m, CustomerId = "16"
                });
                MockOrderList.Add(new OrderModel.Order {
                    BillingCurrency = "USD", StoreId = "UK Store", OrderGroupId = "37", TrackingNumber = "PSO7898", Total = 642.21m, CustomerId = "17"
                });

                foreach (var order in MockOrderList)
                {
                    var payments = new Payment[] {
                        new CreditCardPayment()
                        {
                            PaymentType = PaymentType.CreditCard.GetHashCode(), PaymentMethodName = "MasterCard", ValidationCode = "RE21321-21", Amount = 32.53m, Status = "Processing", TransactionType = TransactionType.Credit.ToString()
                        },
                        new CashCardPayment()
                        {
                            PaymentType = PaymentType.CashCard.GetHashCode(), PaymentMethodName = "Visa", ValidationCode = "RE6211-44", Amount = 55.73m, Status = "Processing", TransactionType = TransactionType.Credit.ToString()
                        },
                        new InvoicePayment()
                        {
                            PaymentType = PaymentType.Invoice.GetHashCode(), PaymentMethodName = "Bank transaction", ValidationCode = "BE3-21", Amount = 774.53m, Status = "Confirmed", TransactionType = TransactionType.Authorization.ToString()
                        }
                    };
                    var orderAddresses = new OrderAddress[] {
                        new OrderAddress()
                        {
                            OrderAddressId = "1", City = "New Yourk", CountryCode = "us", CountryName = "USA", DaytimePhoneNumber = "+7 (906) 2121-321", Email = "*****@*****.**", Line1 = "str. 113", Line2 = "bld. 21", PostalCode = "323232", StateProvince = "WC"
                        },
                        new OrderAddress()
                        {
                            OrderAddressId = "2", City = "Los Angeles", CountryCode = "us", CountryName = "USA", DaytimePhoneNumber = "+7 (906) 4444-444", Email = "*****@*****.**", Line1 = "av. 32", Line2 = "bld. 1", PostalCode = "432142", StateProvince = "LA"
                        },
                        new OrderAddress()
                        {
                            OrderAddressId = "3", City = "Yourk", CountryCode = "us", CountryName = "USA", DaytimePhoneNumber = "+7 (906) 2121-321", Email = "*****@*****.**", Line1 = "str. 113", Line2 = "Pas Juozapa", PostalCode = "12100"
                        },
                        new OrderAddress()
                        {
                            OrderAddressId = "4", City = "Vilnius", CountryCode = "lt", CountryName = "Lithuania", DaytimePhoneNumber = "+370 5 2744-444", Line1 = "Laisves pr. 125", PostalCode = "12100"
                        },
                        new OrderAddress()
                        {
                            OrderAddressId = "5", City = "Yourk", CountryCode = "us", CountryName = "USA", DaytimePhoneNumber = "+7 (906) 2121-321", Email = "*****@*****.**", Line1 = "str. 113", Line2 = "Pas Juozapa", PostalCode = "12100"
                        },
                        new OrderAddress()
                        {
                            OrderAddressId = "6", City = "Vilnius", CountryCode = "lt", CountryName = "Lithuania", DaytimePhoneNumber = "+370 5 2744-444", Line1 = "Laisves pr. 125", PostalCode = "54821"
                        }
                    };

                    var lineItems = new LineItem[] {
                        new LineItem()
                        {
                            LineItemId = "1", DisplayName = "Chair black", Description = "some chair description", Quantity = 3, ListPrice = 32.43m, CatalogItemCode = "x-200"
                        },
                        new LineItem()
                        {
                            LineItemId = "2", DisplayName = "Coca-Cola", Description = "some coca description", Quantity = 4, ListPrice = 3.99m, CatalogItemCode = "x-201"
                        },
                        new LineItem()
                        {
                            LineItemId = "3", DisplayName = "Fujifilm 121MN", Description = "some fuji description", Quantity = 6, ListPrice = 89.37m, CatalogItemCode = "x-202"
                        },
                        new LineItem()
                        {
                            LineItemId = "4", DisplayName = "Canon M32-Z", Description = "some Canon description", Quantity = 9, ListPrice = 902.94m, CatalogItemCode = "x-203"
                        },
                        new LineItem()
                        {
                            LineItemId = "5", DisplayName = "Sony Qybershot", Description = "some Sony description", Quantity = 1, ListPrice = 320.49m, CatalogItemCode = "x-204"
                        },
                        new LineItem()
                        {
                            LineItemId = "6", DisplayName = "Minolta 121-43s", Description = "some Minolta description", Quantity = 2, ListPrice = 324.43m, CatalogItemCode = "x-205"
                        },
                        new LineItem()
                        {
                            LineItemId = "7", DisplayName = "Sony-Erricson", Description = "some sony description", Quantity = 3, ListPrice = 62.13m, CatalogItemCode = "x-206"
                        },
                        new LineItem()
                        {
                            LineItemId = "8", DisplayName = "Booty-Sony", Description = "some boty description", Quantity = 1, ListPrice = 8.03m, CatalogItemCode = "x-207"
                        }
                    };
                    var orderForm = new OrderForm()
                    {
                        OrderFormId = "21", Status = "Processing"
                    };
                    foreach (var lineItem in lineItems)
                    {
                        lineItem.ExtendedPrice = lineItem.Quantity * lineItem.ListPrice;
                        lineItem.PlacedPrice   = lineItem.ListPrice;
                        orderForm.LineItems.Add(lineItem);
                    }

                    // Status = "OnHold",
                    // Status = "InventoryAssigned",
                    // Status = "Packing"
                    var shipment1 = new Shipment()
                    {
                        ShipmentId = "13341-23", ShippingMethodId = "Ground Shipping", ShippingMethodName = "Ground Shipping", ShippingAddressId = "1", ShipmentTotal = 213.12m, Subtotal = 119, ShippingDiscountAmount = 5.99m
                    };
                    shipment1.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "1", Quantity = 3
                    });
                    shipment1.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "2", Quantity = 4
                    });
                    shipment1.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "3", Quantity = 6
                    });
                    shipment1.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "4", Quantity = 9
                    });
                    shipment1.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "5", Quantity = 1
                    });

                    foreach (var shipmentItem in shipment1.ShipmentItems)
                    {
                        shipmentItem.Shipment = shipment1;
                    }

                    // Status = "AwaitingInventory"
                    // Status = "InventoryAssigned"
                    // Status = "Packing"
                    var shipment2 = new Shipment()
                    {
                        ShipmentId = "1499-67", ShippingMethodId = "USPS", ShippingMethodName = "USPS", ShippingAddressId = "2", ShipmentTotal = 913.82m, Subtotal = 900.99m, ShippingDiscountAmount = 55.9m
                    };
                    shipment2.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "6", Quantity = 2
                    });
                    shipment2.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "7", Quantity = 3
                    });
                    shipment2.ShipmentItems.Add(new ShipmentItem()
                    {
                        LineItemId = "8", Quantity = 1
                    });

                    foreach (var shipmentItem in shipment2.ShipmentItems)
                    {
                        shipmentItem.Shipment = shipment2;
                    }

                    orderForm.Shipments.Add(shipment1);
                    shipment1.OrderForm = orderForm;

                    orderForm.Shipments.Add(shipment2);
                    shipment2.OrderForm = orderForm;

                    order.OrderForms.Add(orderForm);
                    orderForm.OrderGroup = order;


                    foreach (var payment in payments)
                    {
                        orderForm.Payments.Add(payment);
                    }
                    MockPaymentList.AddRange(payments);

                    foreach (var orderAddress in orderAddresses)
                    {
                        order.OrderAddresses.Add(orderAddress);
                    }

                    var rmaItems = new RmaReturnItem[] {
                        new RmaReturnItem {
                            ItemState = "AwaitingReturn", ReturnAmount = 21.32m, ReturnReason = "Corrupt"
                        },
                        new RmaReturnItem {
                            ItemState = "Received", ReturnAmount = 210.67m, ReturnReason = "Other"
                        }
                    };
                    rmaItems[0].RmaLineItems.Add(new RmaLineItem()
                    {
                        LineItemId = "8", Quantity = 1
                    });
                    rmaItems[1].RmaLineItems.Add(new RmaLineItem()
                    {
                        LineItemId = "1", Quantity = 2
                    });

                    var rmaRequest = new RmaRequest()
                    {
                        RmaRequestId = "RMA-13", Status = "AwaitingCompletion", ReturnTotal = 323.21m, RefundAmount = 301.89m, ReturnAddressId = "1", Order = order
                    };
                    foreach (var rmaItem in rmaItems)
                    {
                        rmaRequest.RmaReturnItems.Add(rmaItem);
                    }
                    order.RmaRequests.Add(rmaRequest);
                }

                // ------------
                MockShippingOptionList.AddRange(GetAllShippingOptions());
                MockPaymentMethodList.AddRange(GetAllPaymentMethods());
                MockCountryList.AddRange(GetAllCountries());
            }
        }
Example #10
0
 public static void Complete(this RmaRequest item, OrderClient client)
 {
     item.SetCurrentStatus((int)RmaRequestStatus.Complete, client);
 }
Example #11
0
 public static void Cancel(this RmaRequest item, OrderClient client)
 {
     item.SetCurrentStatus((int)RmaRequestStatus.Canceled, client);
 }
Example #12
0
 public static bool IsCompletable(this RmaRequest item, OrderClient client)
 {
     return(client.CanChangeStatus(item, RmaRequestStatus.Complete.ToString()));
 }
 public bool CanChangeStatus(RmaRequest request, string newStatus)
 {
     return(CanChangeStatus(request.Status, newStatus, _stateController.RmaStateMachine));
 }
Example #14
0
 public ReturnBuilder WithOrderOrRmaRequest(Foundation.Orders.Model.Order order, RmaRequest rmaRequest)
 {
     CurrentOrder = new OrderModel(order, _client, _orderService);
     RmaRequest   = rmaRequest;
     return(this);
 }
Example #15
0
        public static ReturnBuilder GetReturnBuilder(IOrderEntityFactory entityFactory, IPricelistRepository priceListRepository, Foundation.Orders.Model.Order order, RmaRequest rmaRequest, OrderClient client, IOrderService service)
        {
            if (entityFactory == null)
            {
                throw new ArgumentNullException("entityFactory");
            }
            if (order == null)
            {
                throw new ArgumentNullException("order");
            }

            var retVal = new ReturnBuilder(entityFactory, priceListRepository, client, service);

            retVal.WithOrderOrRmaRequest(order, rmaRequest);

            return(retVal);
        }
Example #16
0
        internal void RaiseCreateExchangeInteractionRequest(RmaRequest item)
        {
            RmaRequest rmaRequest;

            if (item == null)
            {
                rmaRequest = CreateEntity <RmaRequest>();
            }
            else
            {
                rmaRequest = item.DeepClone(EntityFactory as IKnownSerializationTypes);
            }

            var itemVM = _wizardExchangeVmFactory.GetViewModelInstance(
                new KeyValuePair <string, object>("innerOrder", InnerItem),
                new KeyValuePair <string, object>("rmaRequest", rmaRequest));

            var confirmation = new Confirmation {
                Title = "Create an exchange Order".Localize(), Content = itemVM
            };

            CommonOrderWizardDialogInteractionRequest.Raise(confirmation, (x) =>
            {
                if (x.Confirmed)
                {
                    rmaRequest        = itemVM.GetRmaRequest();
                    var exchangeOrder = rmaRequest.ExchangeOrder;
                    if (InnerItem.RmaRequests.All(x1 => x1.RmaRequestId != rmaRequest.RmaRequestId))
                    {
                        // workaround:begin1
                        // preparing for save
                        Repository.Add(exchangeOrder);
                        rmaRequest.ExchangeOrder = null;
                        // clear LineItem values otherwise the next _repository.Add(rmaRequest); will crash
                        foreach (var rmaItem in rmaRequest.RmaReturnItems)
                        {
                            rmaItem.RmaLineItems[0].LineItem = null;
                        }
                        Repository.Add(rmaRequest);
                        // workaround:end1

                        InnerItem.RmaRequests.Add(rmaRequest);
                    }
                    else
                    {
                        item.ExchangeOrder = exchangeOrder;
                        OnUIThread(() => item.InjectFrom <CloneInjection>(rmaRequest));
                        Repository.Add(exchangeOrder);
                    }

                    DoSaveChanges1();

                    // workaround:begin2
                    // set right values after save
                    foreach (var rmaItem in rmaRequest.RmaReturnItems)
                    {
                        var newLineItem = InnerItem.OrderForms[0].LineItems.First(x1 => x1.LineItemId == rmaItem.RmaLineItems[0].LineItemId);
                        rmaItem.RmaLineItems[0].LineItem = newLineItem;
                    }
                    rmaRequest.ExchangeOrder = exchangeOrder;
                    // workaround:end2

                    var rmaRequestViewModel = _rmaRequestVmFactory.GetViewModelInstance(
                        new KeyValuePair <string, object>("rmaRequestItem", rmaRequest)
                        , new KeyValuePair <string, object>("parentViewModel", this));
                    RmaRequestViewModels.Add(rmaRequestViewModel);

                    // reinitialize changes
                    CloseAllSubscription();
                    SetAllSubscription();

                    // show created RmaRequest item
                    SelectedTabIndex = ReturnsTabIndex;

                    // open newly created ExchangeOrder
                    rmaRequestViewModel.ExchangeOrderViewCommand.Execute();
                }
            });
        }