Esempio n. 1
0
        public OrderConfirmationViewModel Build(PageModel pageModel)
        {
            var model       = pageModel.MapTo <OrderConfirmationViewModel>();
            var cartContext = _cartContextAccessor.CartContext;

            if (cartContext != null)
            {
                var order = _orderOverviewService.Get(cartContext.Cart.Order.SystemId);
                if (order != null)
                {
                    model.Order = _orderViewModelBuilder.Build(order);
                }
            }
            return(model);
        }
        public override ValidationResult Validate(Sales.Shipment entity)
        {
            var result        = new ValidationResult();
            var orderOverview = _orderOverviewService.Get(entity.OrderSystemId);

            if (orderOverview == null)
            {
                throw new Exception($"The order for shipment ({entity.SystemId}) cannot be found.");
            }

            var capturedShipmentRows = orderOverview.PaymentOverviews
                                       .SelectMany(payment => payment.Transactions
                                                   .Where(transaction => transaction.TransactionType == TransactionType.Capture &&
                                                          transaction.TransactionResult == TransactionResult.Success)
                                                   .SelectMany(capture => capture.Rows.Select(x => x.ShipmentRowSystemId)))
                                       .ToList();

            //Make sure that all captures are completed successfully before moving the shipment to ReadyToShip.
            if (entity.Rows.Any(x => !capturedShipmentRows.Contains(x.SystemId)))
            {
                result.AddError("Shipment", "All captures are not completed.");
            }

            return(result);
        }
        public override ValidationResult Validate(SalesOrder entity)
        {
            var result = new ValidationResult();
            var order  = _orderOverviewService.Get(entity.SystemId);

            //order can only be completed if shipments shipped.
            var hasAllShipmentShipped = HasAllShipmentsShipped(order);

            if (!hasAllShipmentShipped)
            {
                result.AddError("Shipment", "All shipments are not shipped.");
            }

            return(result);
        }
Esempio n. 4
0
        public override ValidationResult Validate(SalesOrder entity)
        {
            var result = new ValidationResult();
            //Administrator is not allowed to Confirm orders, they are automatically confirmed when payment is done.
            // At least one payment is guaranteed. In paymentInfo, there is at least one transaction that has TransactionType = Authorize
            // and TransactionResult = success.
            var isPaymentGuaranteed = _orderOverviewService.Get(entity.SystemId)
                                      .PaymentOverviews.Any(x => x.Transactions.Any(t => t.TransactionType == TransactionType.Authorize &&
                                                                                    t.TransactionResult == TransactionResult.Success));

            if (!isPaymentGuaranteed)
            {
                result.AddError("Payment", "Payment was not guaranteed.");
            }

            return(result);
        }
Esempio n. 5
0
        private List <OrderDetailsViewModel> GetOrders(OrderHistoryViewModel model, int pageIndex, int pageSize, out int totalOrderCount)
        {
            var orders = new List <OrderDetailsViewModel>();

            totalOrderCount = 0;
            var personId = _securityContextService.GetIdentityUserSystemId();

            if (!personId.HasValue)
            {
                return(orders);
            }
            using (var query = _dataserivce.CreateQuery <SalesOrder>())
            {
                var queryResult = query.Filter(filter =>
                {
                    if (model.IsBusinessCustomer)
                    {
                        filter.OrganizationSystemId(_personStorage.CurrentSelectedOrganization.SystemId);
                        if (model.ShowOnlyMyOrders || !model.HasApproverRole)
                        {
                            filter.PersonSystemId(personId.Value);
                        }
                    }
                    else
                    {
                        filter.PersonSystemId(personId.Value);
                    }
                })
                                  .Sort(descriptor => descriptor.OrderNumber(Data.Queryable.SortDirection.Descending));

                totalOrderCount = queryResult.Count();
                var orderSystemIds = queryResult
                                     .Skip((pageIndex - 1) * pageSize)
                                     .Take(pageSize)
                                     .ToSystemIdList();
                orders = _orderOverviewService.Get(orderSystemIds).Select(x => _orderViewModelBuilder.Build(x)).ToList();
            }
            return(orders);
        }
        public OrderViewModel Build(PageModel pageModel, Guid id, bool print)
        {
            var model = pageModel.MapTo <OrderViewModel>();

            var order = _orderOverviewService.Get(id);

            if (order != null)
            {
                model.Order = Build(order);
            }

            model.IsPrintPage        = print;
            model.OrderHistoryUrl    = GetOrderHistoryUrl(pageModel.Page.ParentPageSystemId);
            model.IsBusinessCustomer = _personStorage.CurrentSelectedOrganization != null;

            if (model.IsBusinessCustomer)
            {
                model.HasApproverRole = _personStorage.HasApproverRole;
            }

            return(model);
        }