void CheckCarLoadDocuments() { if (Entity.Id > 0 && RouteListRepository.GetCarLoadDocuments(UoW, Entity.Id).Any()) { IsEditable = false; } }
protected void OnButtonAcceptClicked(object sender, EventArgs e) { if (buttonAccept.Label == "Подтвердить" && Entity.HasOverweight()) { if (QSMain.User.Permissions["can_confirm_routelist_with_overweight"]) { if ( !MessageDialogHelper.RunQuestionDialog( String.Format( "Вы перегрузили '{0}' на {1} кг.\nВы уверены что хотите подтвердить маршрутный лист?", Entity.Car.Title, Entity.Overweight() ) ) ) { return; } } else { MessageDialogHelper.RunWarningDialog( String.Format( "Вы перегрузили '{0}' на {1} кг.\nПодтвердить маршрутный лист нельзя.", Entity.Car.Title, Entity.Overweight() ) ); return; } } if (UoWGeneric.Root.Status == RouteListStatus.New) { var valid = new QSValidator <RouteList>(UoWGeneric.Root, new Dictionary <object, object> { { "NewStatus", RouteListStatus.InLoading } }); if (valid.RunDlgIfNotValid((Window)this.Toplevel)) { return; } UoWGeneric.Root.ChangeStatus(RouteListStatus.InLoading); foreach (var address in UoWGeneric.Root.Addresses) { if (address.Order.OrderStatus < Domain.Orders.OrderStatus.OnLoading) { address.Order.ChangeStatus(Domain.Orders.OrderStatus.OnLoading); } } //Строим маршрут для МЛ. if (!Entity.Printed || MessageDialogHelper.RunQuestionWithTitleDialog("Перестроить маршрут?", "Этот маршрутный лист уже был когда-то напечатан. При новом построении маршрута порядок адресов может быть другой. При продолжении обязательно перепечатайте этот МЛ.\nПерестроить маршрут?")) { RouteOptimizer optimizer = new RouteOptimizer(); var newRoute = optimizer.RebuidOneRoute(Entity); if (newRoute != null) { createroutelistitemsview1.DisableColumnsUpdate = true; newRoute.UpdateAddressOrderInRealRoute(Entity); //Рассчитываем расстояние Entity.RecalculatePlanedDistance(new Tools.Logistic.RouteGeometryCalculator(Tools.Logistic.DistanceProvider.Osrm)); createroutelistitemsview1.DisableColumnsUpdate = false; var noPlan = Entity.Addresses.Count(x => !x.PlanTimeStart.HasValue); if (noPlan > 0) { MessageDialogHelper.RunWarningDialog($"Для маршрута незапланировано {noPlan} адресов."); } } else { MessageDialogHelper.RunWarningDialog($"Маршрут не был перестроен."); } } Save(); if (UoWGeneric.Root.Car.TypeOfUse == CarTypeOfUse.Truck) { if (MessageDialogHelper.RunQuestionDialog("Маршрутный лист для транспортировки на склад, перевести машрутный лист сразу в статус '{0}'?", RouteListStatus.OnClosing.GetEnumTitle())) { Entity.ChangeStatus(RouteListStatus.OnClosing); foreach (var item in UoWGeneric.Root.Addresses) { item.Order.OrderStatus = Domain.Orders.OrderStatus.OnTheWay; } Entity.CompleteRoute(); } } else { //Проверяем нужно ли маршрутный лист грузить на складе, если нет переводим в статус в пути. var forShipment = Repository.Store.WarehouseRepository.WarehouseForShipment(UoW, Entity.Id); if (forShipment.Count == 0) { if (MessageDialogHelper.RunQuestionDialog("Для маршрутного листа, нет необходимости грузится на складе. Перевести машрутный лист сразу в статус '{0}'?", RouteListStatus.EnRoute.GetEnumTitle())) { valid = new QSValidator <RouteList>( UoWGeneric.Root, new Dictionary <object, object> { { "NewStatus", RouteListStatus.EnRoute } } ); Entity.ChangeStatus(valid.RunDlgIfNotValid((Window)this.Toplevel) ? RouteListStatus.New : RouteListStatus.EnRoute); } else { Entity.ChangeStatus(RouteListStatus.New); } } } Save(); UpdateButtonStatus(); return; } if (UoWGeneric.Root.Status == RouteListStatus.InLoading) { if (RouteListRepository.GetCarLoadDocuments(UoW, Entity.Id).Any()) { MessageDialogHelper.RunErrorDialog("Для маршрутного листа были созданы документы погрузки. Сначала необходимо удалить их."); } else { UoWGeneric.Root.ChangeStatus(RouteListStatus.New); } UpdateButtonStatus(); return; } }