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