Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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();
        }