protected void OnButtonRevertClicked(object sender, EventArgs e) { var toRevert = ytreeviewRLTo .GetSelectedObjects <RouteListItemNode>() .Where(x => x.WasTransfered) .Select(x => x.RouteListItem) .ToList(); foreach (var address in toRevert) { if (address.Status == RouteListItemStatus.Transfered) { MessageDialogHelper.RunWarningDialog(string.Format("Адрес {0} сам перенесен в МЛ №{1}. Отмена этого переноса не возможна. Сначала нужно отменить перенос в {1} МЛ.", address?.Order?.DeliveryPoint.ShortAddress, address.TransferedTo?.RouteList.Id)); continue; } RouteListItem pastPlace = (yentryreferenceRLFrom.Subject as RouteList) ?.Addresses ?.FirstOrDefault(x => x.TransferedTo != null && x.TransferedTo.Id == address.Id) ?? _routeListItemRepository.GetTransferedFrom(UoW, address); var previousRouteList = pastPlace?.RouteList; if (pastPlace != null) { previousRouteList.RevertTransferAddress(_wageParameterService, pastPlace, address); pastPlace.NeedToReload = address.NeedToReload; pastPlace.WasTransfered = true; UpdateTranferDocuments(pastPlace.RouteList, address.RouteList); pastPlace.RecalculateTotalCash(); UoW.Save(pastPlace); address.RouteList.TransferAddressTo(address, pastPlace); address.WasTransfered = false; } address.RouteList.CalculateWages(_wageParameterService); address.RecalculateTotalCash(); UoW.Save(address.RouteList); } UoW.Commit(); UpdateNodes(); }
protected void OnButtonTransferClicked(object sender, EventArgs e) { //Дополнительные проверки RouteList routeListTo = yentryreferenceRLTo.Subject as RouteList; RouteList routeListFrom = yentryreferenceRLFrom.Subject as RouteList; var messages = new List <string>(); if (routeListTo == null || routeListFrom == null || routeListTo.Id == routeListFrom.Id) { return; } List <RouteListItemNode> needReloadNotSet = new List <RouteListItemNode>(); List <RouteListItemNode> needReloadSetAndRlEnRoute = new List <RouteListItemNode>(); foreach (var row in ytreeviewRLFrom.GetSelectedObjects <RouteListItemNode>()) { RouteListItem item = row?.RouteListItem; logger.Debug("Проверка адреса с номером {0}", item?.Id.ToString() ?? "Неправильный адрес"); if (item == null || item.Status == RouteListItemStatus.Transfered) { continue; } if (!row.LeftNeedToReload && !row.LeftNotNeedToReload) { needReloadNotSet.Add(row); continue; } if (row.LeftNeedToReload && routeListTo.Status >= RouteListStatus.EnRoute) { needReloadSetAndRlEnRoute.Add(row); continue; } RouteListItem newItem = new RouteListItem(routeListTo, item.Order, item.Status) { WasTransfered = true, NeedToReload = row.LeftNeedToReload, WithForwarder = routeListTo.Forwarder != null }; routeListTo.ObservableAddresses.Add(newItem); item.TransferedTo = newItem; //Пересчёт зарплаты после изменения МЛ routeListFrom.CalculateWages(wageParameterService); routeListTo.CalculateWages(wageParameterService); item.RecalculateTotalCash(); newItem.RecalculateTotalCash(); if (routeListTo.ClosingFilled) { newItem.FirstFillClosing(UoW, wageParameterService); } UoW.Save(item); UoW.Save(newItem); } UpdateTranferDocuments(routeListFrom, routeListTo); if (routeListFrom.Status == RouteListStatus.Closed) { messages.AddRange(routeListFrom.UpdateMovementOperations()); } if (routeListTo.Status == RouteListStatus.Closed) { messages.AddRange(routeListTo.UpdateMovementOperations()); } UoW.Save(routeListTo); UoW.Save(routeListFrom); UoW.Commit(); if (needReloadNotSet.Count > 0) { MessageDialogHelper.RunWarningDialog("Для следующих адресов не была указана необходимость загрузки, поэтому они не были перенесены:\n * " + String.Join("\n * ", needReloadNotSet.Select(x => x.Address)) ); } if (needReloadSetAndRlEnRoute.Count > 0) { MessageDialogHelper.RunWarningDialog("Для следующих адресов была указана необходимость загрузки при переносе в МЛ со статусом \"В пути\" и выше , поэтому они не были перенесены:\n * " + String.Join("\n * ", needReloadSetAndRlEnRoute.Select(x => x.Address)) ); } if (messages.Count > 0) { MessageDialogHelper.RunInfoDialog(String.Format("Были выполнены следующие действия:\n*{0}", String.Join("\n*", messages))); } UpdateNodes(); CheckSensitivities(); }
protected void OnButtonTransferClicked(object sender, EventArgs e) { //Дополнительные проверки var routeListTo = yentryreferenceRLTo.Subject as RouteList; var routeListFrom = yentryreferenceRLFrom.Subject as RouteList; var messages = new List <string>(); if (routeListTo == null || routeListFrom == null || routeListTo.Id == routeListFrom.Id) { return; } List <RouteListItemNode> needReloadNotSet = new List <RouteListItemNode>(); List <RouteListItemNode> needReloadSetAndRlEnRoute = new List <RouteListItemNode>(); List <RouteListItemNode> fastDeliveryNotEnoughQuantity = new List <RouteListItemNode>(); foreach (var row in ytreeviewRLFrom.GetSelectedObjects <RouteListItemNode>()) { RouteListItem item = row?.RouteListItem; _logger.Debug("Проверка адреса с номером {0}", item?.Id.ToString() ?? "Неправильный адрес"); if (item == null || item.Status == RouteListItemStatus.Transfered) { continue; } if (!row.IsFastDelivery && !row.LeftNeedToReload && !row.LeftNotNeedToReload) { needReloadNotSet.Add(row); continue; } if (row.LeftNeedToReload && routeListTo.Status >= RouteListStatus.EnRoute) { needReloadSetAndRlEnRoute.Add(row); continue; } if (row.IsFastDelivery) { var hasEnoughQuantityForFastDelivery = _routeListItemRepository .HasEnoughQuantityForFastDelivery(UoW, row.RouteListItem, routeListTo); if (!hasEnoughQuantityForFastDelivery) { fastDeliveryNotEnoughQuantity.Add(row); continue; } } var transferredAddressFromRouteListTo = _routeListItemRepository.GetTransferredRouteListItemFromRouteListForOrder(UoW, routeListTo.Id, item.Order.Id); RouteListItem newItem = null; if (transferredAddressFromRouteListTo != null) { newItem = transferredAddressFromRouteListTo; item.WasTransfered = false; routeListTo.RevertTransferAddress(_wageParameterService, newItem, item); routeListFrom.TransferAddressTo(item, newItem); newItem.WasTransfered = true; } else { newItem = new RouteListItem(routeListTo, item.Order, item.Status) { WasTransfered = true, NeedToReload = row.LeftNeedToReload, WithForwarder = routeListTo.Forwarder != null }; routeListTo.ObservableAddresses.Add(newItem); routeListFrom.TransferAddressTo(item, newItem); } //Пересчёт зарплаты после изменения МЛ routeListFrom.CalculateWages(_wageParameterService); routeListTo.CalculateWages(_wageParameterService); item.RecalculateTotalCash(); newItem.RecalculateTotalCash(); if (routeListTo.ClosingFilled) { newItem.FirstFillClosing(_wageParameterService); } UoW.Save(item); UoW.Save(newItem); } UpdateTranferDocuments(routeListFrom, routeListTo); if (routeListFrom.Status == RouteListStatus.Closed) { messages.AddRange(routeListFrom.UpdateMovementOperations(_categoryRepository)); } if (routeListTo.Status == RouteListStatus.Closed) { messages.AddRange(routeListTo.UpdateMovementOperations(_categoryRepository)); } UoW.Save(routeListTo); UoW.Save(routeListFrom); UoW.Commit(); if (needReloadNotSet.Count > 0) { MessageDialogHelper.RunWarningDialog("Для следующих адресов не была указана необходимость загрузки, поэтому они не были перенесены:\n * " + string.Join("\n * ", needReloadNotSet.Select(x => x.Address)) ); } if (needReloadSetAndRlEnRoute.Count > 0) { MessageDialogHelper.RunWarningDialog("Для следующих адресов была указана необходимость загрузки при переносе в МЛ со статусом \"В пути\" и выше , поэтому они не были перенесены:\n * " + string.Join("\n * ", needReloadSetAndRlEnRoute.Select(x => x.Address))); } if (fastDeliveryNotEnoughQuantity.Count > 0) { MessageDialogHelper.RunWarningDialog("Для следующих адресов c доставкой за час у водителя не хватает остатков, поэтому они не были перенесены:\n * " + string.Join("\n * ", fastDeliveryNotEnoughQuantity.Select(x => x.Address))); } if (messages.Count > 0) { MessageDialogHelper.RunInfoDialog(string.Format("Были выполнены следующие действия:\n*{0}", string.Join("\n*", messages))); } UpdateNodes(); CheckSensitivities(); }