public DistributorReportEditForm(EditFormMode mode, DistributorReportItem distributorReportItem) : base(mode, distributorReportItem) { CheckHelper.ArgumentWithinCondition(mode == EditFormMode.View, "Form is readonly."); InitializeComponent(); }
protected override void SetDtoToControls(DistributorReportItem distributorReportItem) { _distributorNameTextBox.Text = distributorReportItem.DistributorName; _distributorSpentNumericUpDown.Value = distributorReportItem.DistributorSpent; _distributorReceivedNumericUpDown.Value = distributorReportItem.DistributorReceived; _distributorBalanceNumericUpDown.Value = distributorReportItem.DistributorBalance; _purchaserSpentNumericUpDown.Value = distributorReportItem.PurchaserSpent; _purchaserReceivedNumericUpDown.Value = distributorReportItem.PurchaserReceived; _purchaserBalanceNumericUpDown.Value = distributorReportItem.PurchaserBalance; _totalBalanceNumericUpDown.Value = distributorReportItem.TotalBalance; }
protected override object[] GetDtoValues(DistributorReportItem distributorReportItem) { return (new object[] { distributorReportItem.DistributorName, distributorReportItem.DistributorSpent, distributorReportItem.DistributorReceived, distributorReportItem.DistributorBalance, distributorReportItem.PurchaserSpent, distributorReportItem.PurchaserReceived, distributorReportItem.PurchaserBalance, distributorReportItem.TotalBalance }); }
private static DistributorReportItem GetOlesyaReportItem() { var distributorReportItem = new DistributorReportItem { Id = UserMockFactory.Olesya.Id, DistributorName = UserMockFactory.Olesya.GetFullName(), DistributorSpent = (DistributorTransferMockFactory.Olesya_Transfer_1.Amount / DistributorTransferMockFactory.Olesya_Transfer_1.RublesPerDollar).ToMoney() + (DistributorTransferMockFactory.Olesya_Transfer_2.Amount / DistributorTransferMockFactory.Olesya_Transfer_2.RublesPerDollar).ToMoney() + (OrderMockFactory.Order_1.DistributorSpentOnDelivery / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() + (OrderMockFactory.Order_2.DistributorSpentOnDelivery / OrderMockFactory.Order_2.RublesPerDollar).ToMoney(), DistributorReceived = (OrderMockFactory.Order_1.CustomerPrepaid / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() + (OrderMockFactory.Order_2.CustomerPrepaid / OrderMockFactory.Order_2.RublesPerDollar).ToMoney() + (OrderMockFactory.Order_1.CustomerPaid / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() + (OrderMockFactory.Order_2.CustomerPaid / OrderMockFactory.Order_2.RublesPerDollar).ToMoney(), PurchaserSpent = // Order 1 OrderItemMockFactory.OrderItem_2.PurchaserPaid + OrderItemMockFactory.OrderItem_6.PurchaserPaid + // Order 2 OrderItemMockFactory.OrderItem_3.PurchaserPaid + OrderItemMockFactory.OrderItem_4.PurchaserPaid + ParcelMockFactory.Parcel_1.PurchaserSpentOnDelivery, PurchaserReceived = (DistributorTransferMockFactory.Olesya_Transfer_1.Amount / DistributorTransferMockFactory.Olesya_Transfer_1.RublesPerDollar).ToMoney() + (DistributorTransferMockFactory.Olesya_Transfer_2.Amount / DistributorTransferMockFactory.Olesya_Transfer_2.RublesPerDollar).ToMoney() }; distributorReportItem.DistributorBalance = distributorReportItem.DistributorSpent - distributorReportItem.DistributorReceived; distributorReportItem.PurchaserBalance = distributorReportItem.PurchaserSpent - distributorReportItem.PurchaserReceived; distributorReportItem.TotalBalance = ((distributorReportItem.PurchaserBalance - distributorReportItem.DistributorBalance) / 2).ToMoney(); return(distributorReportItem); }
public DistributorReportListForm(ListFormMode mode, DistributorReportItem distributorReportItem) : base(mode, distributorReportItem) { InitializeComponent(); }
public DistributorReportItem[] GenerateDistributorsReport() { CheckHelper.WithinCondition(SecurityService.IsLoggedIn, "User is not logged in."); CheckHelper.WithinCondition( SecurityService.IsCurrentUserPurchaser || SecurityService.IsCurrentUserDistributor, "Only purchaser and distributor can generate distributors report."); var persistenceService = Container.Get <IPersistentService>(); var parcelQuery = persistenceService .GetEntitySet <DataAccess.Parcel>() .Where(p => p.Distributor != null); var distributorTransferQuery = persistenceService .GetEntitySet <DataAccess.DistributorTransfer>() .Where(dt => dt.Active); var currentUserId = SecurityService.CurrentUser.Id; if (!SecurityService.IsCurrentUserPurchaser) { CheckHelper.WithinCondition( SecurityService.IsCurrentUserDistributor, "Only purchaser and distributor can generate distributors report."); parcelQuery = parcelQuery .Where(p => p.DistributorId == currentUserId); distributorTransferQuery = distributorTransferQuery .Where(dt => dt.CreateUserId == currentUserId); } var distributorTransfers = distributorTransferQuery .Select(dt => new { DistributorId = dt.CreateUserId, TransferAmount = dt.Amount / dt.RublesPerDollar }) .ToArray(); var distributorReportItemPrototypes = parcelQuery .SelectMany(p => p.Orders) .SelectMany(o => o.OrderItems) .Where(oi => oi.Active && oi.Order.Active && oi.Order.Parcel != null) .Select(oi => new { ParcelId = oi.Order.ParcelId.Value, oi.OrderId, DistributorId = oi.Order.Parcel.DistributorId.Value, DistributorName = oi.Order.Parcel.Distributor.LastName + " " + oi.Order.Parcel.Distributor.FirstName, oi.Order.Parcel.PurchaserSpentOnDelivery, DistributorSpentOnDelivery = oi.Order.DistributorSpentOnDelivery / oi.Order.RublesPerDollar, CustomerPrepaid = oi.Order.CustomerPrepaid / oi.Order.RublesPerDollar, CustomerPaid = oi.Order.CustomerPaid / oi.Order.RublesPerDollar, oi.PurchaserPaid, TotalPrice = oi.TotalPrice / oi.Order.RublesPerDollar }) .ToArray(); return (distributorReportItemPrototypes .GroupBy(pr => pr.DistributorId) .OrderBy(gr => gr.Key) .Select(grouping => { var distributorTransfersAmount = distributorTransfers .Where(dt => dt.DistributorId == grouping.Key) .Sum(dt => dt.TransferAmount.ToMoney()); var userReportItem = new DistributorReportItem { Id = grouping.Key, DistributorName = grouping.Select(i => i.DistributorName).Distinct().Single(), DistributorSpent = distributorTransfersAmount + grouping .GroupBy(i => i.OrderId) .Select(gr => gr.Select(i => i.DistributorSpentOnDelivery).Distinct().Single()) .Sum(i => i.ToMoney()), DistributorReceived = grouping .GroupBy(i => i.OrderId) .Select(gr => gr.Select(i => i.CustomerPrepaid).Distinct().Single()) .Sum(i => i.ToMoney()) + grouping .GroupBy(i => i.OrderId) .Select(gr => gr.Select(i => i.CustomerPaid).Distinct().Single()) .Sum(i => i.ToMoney()), PurchaserSpent = grouping.Sum(i => i.PurchaserPaid.ToMoney()) + grouping .GroupBy(i => i.ParcelId) .Select(gr => gr.Select(i => i.PurchaserSpentOnDelivery).Distinct().Single()) .Sum(i => i.ToMoney()), PurchaserReceived = distributorTransfersAmount }; userReportItem.DistributorBalance = userReportItem.DistributorSpent - userReportItem.DistributorReceived; userReportItem.PurchaserBalance = userReportItem.PurchaserSpent - userReportItem.PurchaserReceived; userReportItem.TotalBalance = ((userReportItem.PurchaserBalance - userReportItem.DistributorBalance) / 2).ToMoney(); return userReportItem; }) .ToArray()); }