Esempio n. 1
0
        public ParcelReportEditForm(EditFormMode mode, ParcelReportItem parcelReportItem)
            : base(mode, parcelReportItem)
        {
            CheckHelper.ArgumentWithinCondition(mode == EditFormMode.View, "Form is readonly.");

            InitializeComponent();
        }
Esempio n. 2
0
        private static ParcelReportItem GetParcelReportItem1()
        {
            var parcelReportItem =
                new ParcelReportItem
            {
                Id = ParcelMockFactory.Parcel_1.Id,

                ParcelName      = DTO.Parcel.GetParcelName(ParcelMockFactory.Parcel_1.Id),
                SentDate        = ParcelMockFactory.Parcel_1.SentDate,
                ReceivedDate    = ParcelMockFactory.Parcel_1.ReceivedDate,
                DistributorName = UserMockFactory.Olesya.GetFullName(),
                PurchaserPaid   =
                    // Order 1
                    OrderItemMockFactory.OrderItem_2.PurchaserPaid +
                    OrderItemMockFactory.OrderItem_6.PurchaserPaid +
                    // Order 2
                    OrderItemMockFactory.OrderItem_3.PurchaserPaid +
                    OrderItemMockFactory.OrderItem_4.PurchaserPaid,
                PurchaserSpentOnDelivery   = ParcelMockFactory.Parcel_1.PurchaserSpentOnDelivery,
                DistributorSpentOnDelivery =
                    (OrderMockFactory.Order_1.DistributorSpentOnDelivery / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() +
                    (OrderMockFactory.Order_2.DistributorSpentOnDelivery / OrderMockFactory.Order_2.RublesPerDollar).ToMoney(),
                CustomersPrepaid =
                    (OrderMockFactory.Order_1.CustomerPrepaid / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() +
                    (OrderMockFactory.Order_2.CustomerPrepaid / OrderMockFactory.Order_2.RublesPerDollar).ToMoney(),
                CustomersPaid =
                    (OrderMockFactory.Order_1.CustomerPaid / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() +
                    (OrderMockFactory.Order_2.CustomerPaid / OrderMockFactory.Order_2.RublesPerDollar).ToMoney(),
                ExpectedTotalCustomerPaid =
                    // Order 1
                    (OrderItemMockFactory.OrderItem_2.TotalPrice / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() +
                    (OrderItemMockFactory.OrderItem_6.TotalPrice / OrderMockFactory.Order_1.RublesPerDollar).ToMoney() +
                    // Order 2
                    (OrderItemMockFactory.OrderItem_3.TotalPrice / OrderMockFactory.Order_2.RublesPerDollar).ToMoney() +
                    (OrderItemMockFactory.OrderItem_4.TotalPrice / OrderMockFactory.Order_2.RublesPerDollar).ToMoney()
            };

            parcelReportItem.TotalPaid =
                parcelReportItem.PurchaserPaid +
                parcelReportItem.PurchaserSpentOnDelivery +
                parcelReportItem.DistributorSpentOnDelivery;
            parcelReportItem.TotalCustomersPaid =
                parcelReportItem.CustomersPrepaid +
                parcelReportItem.CustomersPaid;
            parcelReportItem.TotalProfit =
                parcelReportItem.TotalCustomersPaid - parcelReportItem.TotalPaid;
            parcelReportItem.ExpectedTotalProfit =
                parcelReportItem.ExpectedTotalCustomerPaid - parcelReportItem.TotalPaid;

            return(parcelReportItem);
        }
Esempio n. 3
0
        private static ParcelReportItem GetParcelReportItem2()
        {
            var parcelReportItem =
                new ParcelReportItem
            {
                Id = ParcelMockFactory.Parcel_2.Id,

                ParcelName      = DTO.Parcel.GetParcelName(ParcelMockFactory.Parcel_2.Id),
                SentDate        = ParcelMockFactory.Parcel_2.SentDate,
                ReceivedDate    = ParcelMockFactory.Parcel_2.ReceivedDate,
                DistributorName = UserMockFactory.Diana.GetFullName(),
                PurchaserPaid   =
                    // Order 7
                    OrderItemMockFactory.OrderItem_10.PurchaserPaid +
                    // Order 8
                    OrderItemMockFactory.OrderItem_11.PurchaserPaid,
                PurchaserSpentOnDelivery   = ParcelMockFactory.Parcel_2.PurchaserSpentOnDelivery,
                DistributorSpentOnDelivery =
                    (OrderMockFactory.Order_7.DistributorSpentOnDelivery / OrderMockFactory.Order_7.RublesPerDollar).ToMoney() +
                    (OrderMockFactory.Order_8.DistributorSpentOnDelivery / OrderMockFactory.Order_8.RublesPerDollar).ToMoney(),
                CustomersPrepaid =
                    (OrderMockFactory.Order_7.CustomerPrepaid / OrderMockFactory.Order_7.RublesPerDollar).ToMoney() +
                    (OrderMockFactory.Order_8.CustomerPrepaid / OrderMockFactory.Order_8.RublesPerDollar).ToMoney(),
                CustomersPaid =
                    (OrderMockFactory.Order_7.CustomerPaid / OrderMockFactory.Order_7.RublesPerDollar).ToMoney() +
                    (OrderMockFactory.Order_8.CustomerPaid / OrderMockFactory.Order_8.RublesPerDollar).ToMoney(),
                ExpectedTotalCustomerPaid =
                    // Order 7
                    (OrderItemMockFactory.OrderItem_10.TotalPrice / OrderMockFactory.Order_7.RublesPerDollar).ToMoney() +
                    // Order 8
                    (OrderItemMockFactory.OrderItem_11.TotalPrice / OrderMockFactory.Order_8.RublesPerDollar).ToMoney()
            };

            parcelReportItem.TotalPaid =
                parcelReportItem.PurchaserPaid +
                parcelReportItem.PurchaserSpentOnDelivery +
                parcelReportItem.DistributorSpentOnDelivery;
            parcelReportItem.TotalCustomersPaid =
                parcelReportItem.CustomersPrepaid +
                parcelReportItem.CustomersPaid;
            parcelReportItem.TotalProfit =
                parcelReportItem.TotalCustomersPaid - parcelReportItem.TotalPaid;
            parcelReportItem.ExpectedTotalProfit =
                parcelReportItem.ExpectedTotalCustomerPaid - parcelReportItem.TotalPaid;

            return(parcelReportItem);
        }
Esempio n. 4
0
 protected override void SetDtoToControls(ParcelReportItem parcelReportItem)
 {
     _parcelNameTextBox.Text                        = parcelReportItem.ParcelName;
     _sentDatePicker.UtcValue                       = parcelReportItem.SentDate;
     _receivedDatePicker.UtcValue                   = parcelReportItem.ReceivedDate;
     _distributorTextBox.Text                       = parcelReportItem.DistributorName;
     _purchaserPaidNumericUpDown.Value              = parcelReportItem.PurchaserPaid;
     _purchaserSpentOnDeliveryNumericUpDown.Value   = parcelReportItem.PurchaserSpentOnDelivery;
     _distributorSpentOnDeliveryNumericUpDown.Value = parcelReportItem.DistributorSpentOnDelivery;
     _totalPaidNumericUpDown.Value                  = parcelReportItem.TotalPaid;
     _customersPrepaidNumericUpDown.Value           = parcelReportItem.CustomersPrepaid;
     _customersPaidNumericUpDown.Value              = parcelReportItem.CustomersPaid;
     _totalCustomersPaidNumericUpDown.Value         = parcelReportItem.TotalCustomersPaid;
     _expectedTotalCustomerPaidNumericUpDown.Value  = parcelReportItem.ExpectedTotalCustomerPaid;
     _totalProfitNumericUpDown.Value                = parcelReportItem.TotalProfit;
     _expectedTotalProfitNumericUpDown.Value        = parcelReportItem.ExpectedTotalProfit;
 }
Esempio n. 5
0
 protected override object[] GetDtoValues(ParcelReportItem parcelReportItem)
 {
     return
         (new object[]
     {
         parcelReportItem.ParcelName,
         parcelReportItem.SentDate.HasValue ? parcelReportItem.SentDate.Value.ToString("d") : string.Empty,
         parcelReportItem.ReceivedDate.HasValue ? parcelReportItem.ReceivedDate.Value.ToString("d") : string.Empty,
         parcelReportItem.DistributorName,
         parcelReportItem.PurchaserPaid,
         parcelReportItem.PurchaserSpentOnDelivery,
         parcelReportItem.DistributorSpentOnDelivery,
         parcelReportItem.TotalPaid,
         parcelReportItem.CustomersPrepaid,
         parcelReportItem.CustomersPaid,
         parcelReportItem.TotalCustomersPaid,
         parcelReportItem.ExpectedTotalCustomerPaid,
         parcelReportItem.TotalProfit,
         parcelReportItem.ExpectedTotalProfit
     });
 }
Esempio n. 6
0
        private static ParcelReportItem GetParcelReportItem3()
        {
            var parcelReportItem =
                new ParcelReportItem
            {
                Id = ParcelMockFactory.Parcel_3.Id,

                ParcelName      = DTO.Parcel.GetParcelName(ParcelMockFactory.Parcel_3.Id),
                SentDate        = ParcelMockFactory.Parcel_3.SentDate,
                ReceivedDate    = ParcelMockFactory.Parcel_3.ReceivedDate,
                DistributorName = string.Empty,
                PurchaserPaid   =
                    // Order 5
                    OrderItemMockFactory.OrderItem_8.PurchaserPaid,
                PurchaserSpentOnDelivery   = ParcelMockFactory.Parcel_2.PurchaserSpentOnDelivery,
                DistributorSpentOnDelivery =
                    (OrderMockFactory.Order_5.DistributorSpentOnDelivery / OrderMockFactory.Order_5.RublesPerDollar).ToMoney(),
                CustomersPrepaid =
                    (OrderMockFactory.Order_5.CustomerPrepaid / OrderMockFactory.Order_5.RublesPerDollar).ToMoney(),
                CustomersPaid =
                    (OrderMockFactory.Order_5.CustomerPaid / OrderMockFactory.Order_5.RublesPerDollar).ToMoney(),
                ExpectedTotalCustomerPaid =
                    // Order 5
                    (OrderItemMockFactory.OrderItem_8.TotalPrice / OrderMockFactory.Order_5.RublesPerDollar).ToMoney()
            };

            parcelReportItem.TotalPaid =
                parcelReportItem.PurchaserPaid +
                parcelReportItem.PurchaserSpentOnDelivery +
                parcelReportItem.DistributorSpentOnDelivery;
            parcelReportItem.TotalCustomersPaid =
                parcelReportItem.CustomersPrepaid +
                parcelReportItem.CustomersPaid;
            parcelReportItem.TotalProfit =
                parcelReportItem.TotalCustomersPaid - parcelReportItem.TotalPaid;
            parcelReportItem.ExpectedTotalProfit =
                parcelReportItem.ExpectedTotalCustomerPaid - parcelReportItem.TotalPaid;

            return(parcelReportItem);
        }
Esempio n. 7
0
 public ParcelReportListForm(ListFormMode mode, ParcelReportItem parcelReportItem)
     : base(mode, parcelReportItem)
 {
     InitializeComponent();
 }
Esempio n. 8
0
        public ParcelReportItem[] GenerateParcelsReport()
        {
            CheckHelper.WithinCondition(SecurityService.IsLoggedIn, "User is not logged in.");
            CheckHelper.WithinCondition(
                SecurityService.IsCurrentUserSeller ||
                SecurityService.IsCurrentUserPurchaser ||
                SecurityService.IsCurrentUserDistributor,
                "Only seller, purchaser and distributor can generate parcels report.");

            var persistenceService = Container.Get <IPersistentService>();

            var parcelQuery =
                persistenceService
                .GetEntitySet <DataAccess.Parcel>()
                .AsQueryable();

            parcelQuery = QueryHelper.FilterParcelsBySecurityPermissions(parcelQuery, Container);

            var parcelReportItemPrototypes =
                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,
                DistributorName =
                    oi.Order.Parcel.Distributor != null
                                    ? oi.Order.Parcel.Distributor.LastName + " " + oi.Order.Parcel.Distributor.FirstName
                                    : string.Empty,
                oi.Order.Parcel.SentDate,
                oi.Order.Parcel.ReceivedDate,
                oi.Order.Parcel.PurchaserSpentOnDelivery,
                oi.OrderId,
                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
                (parcelReportItemPrototypes
                 .GroupBy(pr => pr.ParcelId)
                 .OrderBy(gr => gr.Key)
                 .Select(grouping =>
            {
                var parcelReportItem =
                    new ParcelReportItem
                {
                    Id = grouping.Key,

                    ParcelName = DTO.Parcel.GetParcelName(grouping.Key),
                    DistributorName = grouping.Select(i => i.DistributorName).Distinct().Single(),

                    SentDate = grouping.Select(i => i.SentDate).Distinct().Single(),
                    ReceivedDate = grouping.Select(i => i.ReceivedDate).Distinct().Single(),

                    PurchaserPaid = grouping.Sum(i => i.PurchaserPaid.ToMoney()),
                    PurchaserSpentOnDelivery = grouping.Select(i => i.PurchaserSpentOnDelivery).Distinct().Single().ToMoney(),
                    DistributorSpentOnDelivery =
                        grouping
                        .GroupBy(i => i.OrderId)
                        .Select(gr => gr.Select(i => i.DistributorSpentOnDelivery).Distinct().Single())
                        .Sum(i => i.ToMoney()),
                    CustomersPrepaid =
                        grouping
                        .GroupBy(i => i.OrderId)
                        .Select(gr => gr.Select(i => i.CustomerPrepaid).Distinct().Single())
                        .Sum(i => i.ToMoney()),
                    CustomersPaid =
                        grouping
                        .GroupBy(i => i.OrderId)
                        .Select(gr => gr.Select(i => i.CustomerPaid).Distinct().Single())
                        .Sum(i => i.ToMoney()),
                    ExpectedTotalCustomerPaid = grouping.Sum(i => i.TotalPrice.ToMoney())
                };

                parcelReportItem.TotalPaid =
                    parcelReportItem.PurchaserPaid +
                    parcelReportItem.PurchaserSpentOnDelivery +
                    parcelReportItem.DistributorSpentOnDelivery;

                parcelReportItem.TotalCustomersPaid =
                    parcelReportItem.CustomersPrepaid +
                    parcelReportItem.CustomersPaid;

                parcelReportItem.TotalProfit =
                    parcelReportItem.TotalCustomersPaid - parcelReportItem.TotalPaid;

                parcelReportItem.ExpectedTotalProfit =
                    parcelReportItem.ExpectedTotalCustomerPaid - parcelReportItem.TotalPaid;

                return parcelReportItem;
            })
                 .ToArray());
        }