Esempio n. 1
0
        protected override void AddCommand_Execute()
        {
            //создаем новый юнит и привязываем его к объекту
            var salesUnit = new SalesUnitWrapper(new SalesUnit());

            if (_projectWrapper != null)
            {
                salesUnit.Project = new ProjectWrapper(_projectWrapper.Model);
            }
            ;

            //создаем модель для диалога
            var viewModel = new SalesUnitsViewModel(salesUnit, Container, UnitOfWork);

            //заполняем юнит начальными данными
            FillingSalesUnit(viewModel.ViewModel.Item);

            //диалог с пользователем
            var result = Container.Resolve <IDialogService>().ShowDialog(viewModel);

            if (!result.HasValue || !result.Value)
            {
                return;
            }

            //клонируем юниты
            var units = CloneSalesUnits(viewModel.ViewModel.Item.Model, viewModel.Amount);

            var group = new ProjectUnitsGroup(units.ToList());

            Groups.Add(group);
            RefreshPrice(group);
            Groups.SelectedGroup = group;
        }
Esempio n. 2
0
        public void PaymentToStartProductionTest()
        {
            SalesUnit        salesUnit = new SalesUnit();
            SalesUnitWrapper suw       = new SalesUnitWrapper(salesUnit);

            Assert.AreEqual(suw.SumToStartProduction, 0.0);

            //вносим условие - оплатить до запуска производства
            double           part1             = 25;
            PaymentCondition paymentCondition1 = new PaymentCondition
            {
                Part = part1, DaysToPoint = -7, PaymentConditionPoint = PaymentConditionPoint.ProductionStart
            };

            suw.PaymentsConditions.Add(new PaymentConditionWrapper(paymentCondition1));
            Assert.AreEqual(suw.SumToStartProduction, part1 * salesUnit.Cost);

            //вносим условие - оплатить после запуска производства
            PaymentCondition paymentCondition2 = new PaymentCondition
            {
                Part = part1, DaysToPoint = 10, PaymentConditionPoint = PaymentConditionPoint.ProductionStart
            };

            suw.PaymentsConditions.Add(new PaymentConditionWrapper(paymentCondition2));
            Assert.AreEqual(suw.SumToStartProduction, part1 * salesUnit.Cost);

            //вносим условие - оплатить до окончания производства
            PaymentCondition paymentCondition3 = new PaymentCondition
            {
                Part = part1, DaysToPoint = -5, PaymentConditionPoint = PaymentConditionPoint.ProductionEnd
            };

            suw.PaymentsConditions.Add(new PaymentConditionWrapper(paymentCondition3));
            Assert.AreEqual(suw.SumToStartProduction, part1 * salesUnit.Cost);

            //вносим условие - оплатить до запуска производства
            double           part2             = 20;
            PaymentCondition paymentCondition4 = new PaymentCondition
            {
                Part = part2, DaysToPoint = 0, PaymentConditionPoint = PaymentConditionPoint.ProductionStart
            };

            suw.PaymentsConditions.Add(new PaymentConditionWrapper(paymentCondition4));
            Assert.AreEqual(suw.SumToStartProduction, (part1 + part2) * salesUnit.Cost);
        }
Esempio n. 3
0
        public void InitialMethod()
        {
            Product product = new Product {
                Part = new Part()
            };

            product.Part.Prices.Add(new CostOnDate {
                Date = DateTime.Today, Cost = 50
            });
            var salesUnit = new SalesUnit
            {
                ProductionUnit = new ProductionUnit {
                    Product = product
                },
                OfferUnit    = new OfferUnit(),
                Cost         = 100,
                ShipmentUnit = new ShipmentUnit {
                    ExpectedDeliveryPeriod = 5
                },
                Specification = new Specification {
                    Date = DateTime.Today, Vat = 0.2
                }
            };

            salesUnit.PaymentsConditions.Add(new PaymentCondition {
                Part = 0.30, DaysToPoint = -2, PaymentConditionPoint = PaymentConditionPoint.ProductionStart
            });
            salesUnit.PaymentsConditions.Add(new PaymentCondition {
                Part = 0.10, DaysToPoint = 10, PaymentConditionPoint = PaymentConditionPoint.ProductionStart
            });
            salesUnit.PaymentsConditions.Add(new PaymentCondition {
                Part = 0.20, DaysToPoint = 20, PaymentConditionPoint = PaymentConditionPoint.ProductionEnd
            });
            salesUnit.PaymentsConditions.Add(new PaymentCondition {
                Part = 0.15, DaysToPoint = -3, PaymentConditionPoint = PaymentConditionPoint.Shipment
            });
            salesUnit.PaymentsConditions.Add(new PaymentCondition {
                Part = 0.25, DaysToPoint = 25, PaymentConditionPoint = PaymentConditionPoint.Delivery
            });


            _salesUnit = new SalesUnitWrapper(salesUnit);
            _salesUnit.ProductionUnit.SalesUnit = _salesUnit;
            _salesUnit.ShipmentUnit.SalesUnit   = _salesUnit;
        }
Esempio n. 4
0
        /// <summary>
        /// Заполнение юнита по выбранной группе
        /// </summary>
        /// <param name="salesUnitWrapper"></param>
        private void FillingSalesUnit(SalesUnitWrapper salesUnitWrapper)
        {
            if (Groups.SelectedGroup == null)
            {
                var paymentConditionSet = UnitOfWork.Repository <PaymentConditionSet>()
                                          .Find(conditionSet => conditionSet.Id == GlobalAppProperties.Actual.PaymentConditionSet.Id)
                                          .First();
                salesUnitWrapper.PaymentConditionSet = new PaymentConditionSetWrapper(paymentConditionSet);
                salesUnitWrapper.ProductionTerm      = GlobalAppProperties.Actual.StandartTermFromStartToEndProduction;

                return;
            }

            salesUnitWrapper.Cost                 = Groups.SelectedGroup.Cost;
            salesUnitWrapper.Facility             = new FacilityWrapper(Groups.SelectedGroup.Facility.Model);
            salesUnitWrapper.PaymentConditionSet  = new PaymentConditionSetWrapper(Groups.SelectedGroup.PaymentConditionSet.Model);
            salesUnitWrapper.ProductionTerm       = Groups.SelectedGroup.ProductionTerm;
            salesUnitWrapper.Product              = new ProductWrapper(Groups.SelectedGroup.Product.Model);
            salesUnitWrapper.DeliveryDateExpected = Groups.SelectedGroup.DeliveryDateExpected;
            if (Groups.SelectedGroup.CostDelivery.HasValue)
            {
                if (Groups.SelectedGroup.Groups != null &&
                    Groups.SelectedGroup.Groups.Any() &&
                    !Groups.SelectedGroup.Groups.First().CostDelivery.HasValue)
                {
                    salesUnitWrapper.CostDelivery = null;
                }
                else
                {
                    salesUnitWrapper.CostDelivery = Groups.SelectedGroup.CostDelivery / Groups.SelectedGroup.Amount;
                }
            }

            //создаем зависимое оборудование
            foreach (var prodIncl in Groups.SelectedGroup.ProductsIncluded)
            {
                var pi = new ProductIncluded {
                    Product = prodIncl.Model.Product, Amount = prodIncl.Model.Amount
                };
                salesUnitWrapper.ProductsIncluded.Add(new ProductIncludedWrapper(pi));
            }
        }