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); }
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); }
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); }