示例#1
0
        //для печати документов заказов из МЛ, если есть при печати требуется их печать
        void PrintOrderDocumentsFromTheRouteList(RouteList routeList, IList <OrderDocumentType> orderDocumentTypes)
        {
            var orders = routeList.Addresses
                         .Where(a => a.Status != RouteListItemStatus.Transfered)
                         .Select(a => a.Order)
            ;

            foreach (var o in orders)
            {
                var orderPrinter = new EntitiyDocumentsPrinter(
                    o,
                    true,
                    //При массовой печати документов заказов из МЛ, в случае наличия у клиента признака UseSpecialDocFields, не будут печататься обычные счета и УПД
                    orderDocumentTypes.Where(t => !o.Client.UseSpecialDocFields || t != OrderDocumentType.UPD && t != OrderDocumentType.Bill).ToList()
                    );
                orderPrinter.PrintingCanceled += (sender, e) => {
                    cancelPrinting = true;
                    PrintingCanceled?.Invoke(sender, e);
                };
                ODTTemplateNotFoundMessages = string.Concat(orderPrinter.ODTTemplateNotFoundMessages);
                orderPrinter.Print();
                if (cancelPrinting)
                {
                    return;
                }
            }
        }
示例#2
0
        public IList <GoodsInRouteListResult> GetEquipmentsInRL(IUnitOfWork uow, RouteList routeList)
        {
            GoodsInRouteListResult resultAlias = null;

            Vodovoz.Domain.Orders.Order orderAlias         = null;
            OrderEquipment orderEquipmentAlias             = null;
            Nomenclature   OrderEquipmentNomenclatureAlias = null;

            //Выбирается список Id заказов находящихся в МЛ
            var ordersQuery            = QueryOver.Of <Vodovoz.Domain.Orders.Order>(() => orderAlias);
            var routeListItemsSubQuery = QueryOver.Of <RouteListItem>()
                                         .Where(r => r.RouteList.Id == routeList.Id)
                                         .Where(r => !r.WasTransfered || (r.WasTransfered && r.NeedToReload))
                                         .Select(r => r.Order.Id);

            ordersQuery.WithSubquery.WhereProperty(o => o.Id).In(routeListItemsSubQuery).Select(o => o.Id);

            var orderEquipmentsQuery = uow.Session.QueryOver <OrderEquipment>(() => orderEquipmentAlias)
                                       .WithSubquery.WhereProperty(i => i.Order.Id).In(ordersQuery)
                                       .Where(() => orderEquipmentAlias.Direction == Direction.Deliver)
                                       .JoinAlias(() => orderEquipmentAlias.Nomenclature, () => OrderEquipmentNomenclatureAlias);

            return(orderEquipmentsQuery
                   .SelectList(list => list
                               .SelectGroup(() => OrderEquipmentNomenclatureAlias.Id).WithAlias(() => resultAlias.NomenclatureId)
                               .Select(Projections.Sum(
                                           Projections.Cast(NHibernateUtil.Decimal, Projections.Property(() => orderEquipmentAlias.Count)))).WithAlias(() => resultAlias.Amount)
                               )
                   .TransformUsing(Transformers.AliasToBean <GoodsInRouteListResult>())
                   .List <GoodsInRouteListResult>());
        }
示例#3
0
 public bool RouteListWasChanged(RouteList routeList)
 {
     using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
         var actualRouteList = uow.GetById <RouteList>(routeList.Id);
         return(actualRouteList.Version != routeList.Version);
     }
 }
示例#4
0
        public static GMapRoute DrawRoute(GMapOverlay overlay, RouteList routeList, RouteGeometryCalculator geometryCalc = null)
        {
            List <PointLatLng> points;

            if (geometryCalc != null)
            {
                var address = routeList.GenerateHashPiontsOfRoute();
                MainClass.progressBarWin.ProgressStart(address.Length);
                points = geometryCalc.GetGeometryOfRoute(address, (val, max) => MainClass.progressBarWin.ProgressUpdate(val));
                MainClass.progressBarWin.ProgressClose();
            }
            else
            {
                points = new List <PointLatLng>();
                points.Add(DistanceCalculator.BasePoint);
                points.AddRange(routeList.Addresses.Select(x => x.Order.DeliveryPoint.GmapPoint));
                points.Add(DistanceCalculator.BasePoint);
            }

            var route = new GMapRoute(points, routeList.Id.ToString());

            route.Stroke           = new System.Drawing.Pen(System.Drawing.Color.Blue);
            route.Stroke.Width     = 2;
            route.Stroke.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;

            overlay.Routes.Add(route);
            return(route);
        }
示例#5
0
 public void OpenRoutedList(Order order)
 {
     if (order.OrderStatus == OrderStatus.NewOrder ||
         order.OrderStatus == OrderStatus.Accepted ||
         order.OrderStatus == OrderStatus.OnLoading
         )
     {
         tdiNavigation.OpenTdiTab <RouteListCreateDlg>(null);
     }
     else if (order.OrderStatus == OrderStatus.OnTheWay ||
              order.OrderStatus == OrderStatus.InTravelList ||
              order.OrderStatus == OrderStatus.Closed
              )
     {
         RouteList routeList = routedListRepository.GetRouteListByOrder(UoW, order);
         if (routeList != null)
         {
             tdiNavigation.OpenTdiTab <RouteListKeepingDlg, RouteList>(null, routeList);
         }
     }
     else if (order.OrderStatus == OrderStatus.Shipped)
     {
         RouteList routeList = routedListRepository.GetRouteListByOrder(UoW, order);
         if (routeList != null)
         {
             tdiNavigation.OpenTdiTab <RouteListClosingDlg, RouteList>(null, routeList);
         }
     }
 }
示例#6
0
        /// <summary>
        /// Добавление в спсиок печати документов маршрутного листа <paramref name="routeList"/> с выделением типов,
        /// указанных в массиве <paramref name="routeListPrintableDocumentTypes"/>, а также добавление в этот спсиок
        /// документов всех заказов из маршрутного листа <paramref name="routeList"/> с выделением типов, указанных в
        /// массиве <paramref name="orderDocumentTypes"/>. Если <paramref name="orderDocumentTypes"/> не указывать, то
        /// печать документов заказов произведена не будет.
        /// </summary>
        /// <param name="uow">Unit Of Work</param>
        /// <param name="routeList">Маршрутный лист</param>
        /// <param name="routeListPrintableDocumentTypes">Типы документов МЛ, которые необходимо отметить</param>
        /// <param name="orderDocumentTypes">Типы документов заказа, которые необходимо отметить</param>
        public EntitiyDocumentsPrinter(IUnitOfWork uow, RouteList routeList, RouteListPrintableDocuments[] routeListPrintableDocumentTypes, IList <OrderDocumentType> orderDocumentTypes = null)
        {
            this.uow         = uow;
            currentRouteList = routeList;
            DocPrinterInit();

            //Эти документы не будут добавлены в список печати вообще
            RouteListPrintableDocuments[] documentsToSkip =
            {
                RouteListPrintableDocuments.All,
                RouteListPrintableDocuments.LoadSofiyskaya,
                RouteListPrintableDocuments.TimeList,
                RouteListPrintableDocuments.OrderOfAddresses
            };

            foreach (RouteListPrintableDocuments rlDocType in Enum.GetValues(typeof(RouteListPrintableDocuments)))
            {
                if (!documentsToSkip.Contains(rlDocType))
                {
                    var  rlDoc                  = new RouteListPrintableDocs(uow, routeList, rlDocType);
                    bool isSelected             = routeListPrintableDocumentTypes.Contains(RouteListPrintableDocuments.All) || routeListPrintableDocumentTypes.Contains(rlDocType);
                    SelectablePrintDocument doc = new SelectablePrintDocument(rlDoc)
                    {
                        Selected = isSelected
                    };
                    DocumentsToPrint.Add(doc);
                }
            }
            if (orderDocumentTypes != null)
            {
                PrintOrderDocumentsFromTheRouteList(routeList, orderDocumentTypes);
            }
        }
示例#7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            paramsContainer   = new ParamsContainer(HttpContext.Current);
            initialJson.Value = PublicMethods.toJSON(RouteList.get_data_server_side(paramsContainer, RouteName.error));

            Page.Title = RaaiVanSettings.SystemTitle(paramsContainer.ApplicationID);
        }
示例#8
0
        public async Task <RouteList> FindRoutesByGraphID(int graphID, string town1, string town2, int maxStops)
        {
            RouteList routeCities = new RouteList();

            if (!town1.Equals(town2))
            {
                Graph graph = await _graphRepository.LoadGraph(graphID);

                if (graph.Data.Count > 0)
                {
                    Dictionary <string, List <GraphData> > neighborhoodDictionary = CreateNeighborhoodDictionary(graph);
                    Dictionary <string, bool> visitControlDictionary = CreateVisitControlDictionary(graph);
                    List <GraphData>          temporaryPaths         = CreateTemporaryPathsList(town1);
                    FindAllPaths(town1, town2, neighborhoodDictionary, temporaryPaths, maxStops, visitControlDictionary, routeCities);
                }
                else
                {
                    routeCities.Routes.Add(new RouteBetweenCities($"{town1}{town2}", 0, 0));
                }
            }
            else
            {
                routeCities.Routes.Add(new RouteBetweenCities(town1, 0, 0));
            }
            return(routeCities);
        }
示例#9
0
        public static GMapRoute DrawRoute(GMapOverlay overlay, RouteList routeList, RouteGeometryCalculator geometryCalc = null)
        {
            List <PointLatLng> points;
            var baseLat = (double)routeList.GeographicGroups.FirstOrDefault().BaseLatitude.Value;
            var baseLon = (double)routeList.GeographicGroups.FirstOrDefault().BaseLongitude.Value;

            if (geometryCalc != null)
            {
                var address = routeList.GenerateHashPointsOfRoute();
                StartProgress(address.Length);
                points = geometryCalc.GetGeometryOfRoute(address, UpdateProgress);
                CloseProgress();
            }
            else
            {
                points = new List <PointLatLng>();
                points.Add(new PointLatLng(baseLat, baseLon));
                points.AddRange(routeList.Addresses.Select(x => x.Order.DeliveryPoint.GmapPoint));
                points.Add(new PointLatLng(baseLat, baseLon));
            }

            var route = new GMapRoute(points, routeList.Id.ToString())
            {
                Stroke = new System.Drawing.Pen(System.Drawing.Color.Blue)
                {
                    Width     = 2,
                    DashStyle = System.Drawing.Drawing2D.DashStyle.Solid
                }
            };

            overlay.Routes.Add(route);
            return(route);
        }
示例#10
0
        private void LoadDocument(RouteListPrintableDocuments docType)
        {
            int rlNumber = GetRouteListNumber();

            if (rlNumber == 0)
            {
                return;
            }
            ReportInfo document = null;

            using (IUnitOfWork uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                RouteList rl = uow.GetById <RouteList>(rlNumber);
                if (rl == null)
                {
                    MessageDialogHelper.RunErrorDialog($"Маршрутный лист с номером {rlNumber} не найден");
                    return;
                }
                document = PrintRouteListHelper.GetRDL(rl, docType, uow);
            }

            if (document == null)
            {
                MessageDialogHelper.RunErrorDialog("Не возможно получить печатную форму документа");
                return;
            }

            if (document.Source != null)
            {
                reportViewer.LoadReport(document.Source, document.GetParametersString(), document.ConnectionString, true, document.RestrictedOutputPresentationTypes);
            }
            else
            {
                reportViewer.LoadReport(document.GetReportUri(), document.GetParametersString(), document.ConnectionString, true, document.RestrictedOutputPresentationTypes);
            }
        }
        public void TryRemoveAddress_IfAddressIsNotTransfered_ThenTheAddressWillBeDeletedAndMessageWillNotBeGenerated()
        {
            //arrange
            RouteList routeListSourceMock = Substitute.For <RouteList>();

            routeListSourceMock.Id.Returns(999);

            RouteListItem routeListItemRemovingMock = Substitute.For <RouteListItem>();

            routeListItemRemovingMock.WasTransfered.Returns(false);
            routeListItemRemovingMock.Order = Substitute.For <Order>();

            IUnitOfWork uow = Substitute.For <IUnitOfWork>();
            IRouteListItemRepository routeListItemRepository = Substitute.For <IRouteListItemRepository>();

            RouteList routeListUnderTest = new RouteList {
                UoW = uow
            };

            routeListUnderTest.Addresses.Add(routeListItemRemovingMock);

            // act
            routeListUnderTest.TryRemoveAddress(routeListItemRemovingMock, out string msg, routeListItemRepository);

            // assert
            Assert.That(routeListUnderTest.Addresses.Count, Is.EqualTo(0));
            Assert.That(string.IsNullOrEmpty(msg), Is.True);
        }
示例#12
0
        public override void UpdateNodes()
        {
            DriverRouteListAddressVMNode resultAlias = null;
            Employee      driverAlias        = null;
            RouteList     routeListAlias     = null;
            RouteListItem routeListItemAlias = null;
            Order         orderAlias         = null;

            var query = UoW.Session.QueryOver <RouteListItem>(() => routeListItemAlias);

            var result = query
                         .JoinAlias(rli => rli.RouteList, () => routeListAlias)
                         .JoinAlias(rli => rli.RouteList.Driver, () => driverAlias)
                         .JoinAlias(rli => rli.Order, () => orderAlias)

                         .Where(() => routeListAlias.Status == RouteListStatus.EnRoute)
                         .Where(() => routeListAlias.Driver.Id == driverId)
                         .SelectList(list => list
                                     .Select(() => routeListItemAlias.Id).WithAlias(() => resultAlias.Id)
                                     .Select(() => orderAlias.Id).WithAlias(() => resultAlias.OrderId)
                                     .Select(() => routeListAlias.Id).WithAlias(() => resultAlias.RouteListNumber)
                                     .Select(() => routeListItemAlias.Status).WithAlias(() => resultAlias.Status)
                                     .Select(() => orderAlias.DeliverySchedule).WithAlias(() => resultAlias.Time)
                                     .Select(() => orderAlias.DeliveryPoint).WithAlias(() => resultAlias.Address)

                                     )
                         .TransformUsing(Transformers.AliasToBean <DriverRouteListAddressVMNode>())
                         .List <DriverRouteListAddressVMNode>();

            SetItemsSource(result);
        }
        public bool NeedMileageCheck_Test(Car car)
        {
            RouteList routeList = new RouteList();

            routeList.Car = car;
            return(routeList.NeedMileageCheck);
        }
示例#14
0
        /// <summary>
        /// Метод берет последовательность доставки из предложенного маршрута и переносит его в маршрутный лист.
        /// Переносится только последовательность адресов. Никакие адреса не добавляются и не удаляются.
        /// Метод нужен для перестройки с учетов времени уже имеющегося МЛ.
        /// </summary>
        public void UpdateAddressOrderInRealRoute(RouteList updatedRoute)
        {
            if (updatedRoute.Status > RouteListStatus.InLoading)
            {
                throw new InvalidOperationException($"Была выполнена попытка перестроить маршрут {updatedRoute.Id} после того, как он отгружен.");
            }

            for (int i = 0; i < updatedRoute.ObservableAddresses.Count; i++)
            {
                var address = updatedRoute.ObservableAddresses[i];
                if (i < Orders.Count)
                {
                    if (Orders[i].Order.Id != updatedRoute.ObservableAddresses[i].Order.Id)
                    {
                        address = updatedRoute.ObservableAddresses.First(x => x.Order.Id == Orders[i].Order.Id);
                        updatedRoute.ObservableAddresses.Remove(address);
                        updatedRoute.ObservableAddresses.Insert(i, address);
                    }
                    address.PlanTimeStart = Orders[i].ProposedTimeStart;
                    address.PlanTimeEnd   = Orders[i].ProposedTimeEnd;
                }
                else
                {
                    address.PlanTimeStart = null;
                    address.PlanTimeEnd   = null;
                }
            }
        }
示例#15
0
        /// <summary>
        /// Filter routes by options, does not check "BlockEnabled" option.
        /// See FilterByBlockEnabled()
        /// </summary>
        /// <param name="routeList"></param>
        /// <param name="sideToLeave"></param>
        /// <param name="locData"></param>
        /// <returns></returns>
        public RouteList FilterByAllowedOptions(
            RouteList routeList,
            SideMarker sideToLeave,
            Locomotives.Data locData)
        {
            var res = new RouteList();

            foreach (var it in routeList)
            {
                var targetBlock           = it.Blocks[1];
                var targetBlockIdentifier = targetBlock.identifier;
                if (string.IsNullOrEmpty(targetBlockIdentifier))
                {
                    continue;
                }

                var targetFbData = GetFeedbackDataOf(targetBlockIdentifier, sideToLeave);
                if (targetFbData == null)
                {
                    continue;
                }

                //
                // the most interesting part of this method
                //
                if (IsLocAllowedForTargetBlock(locData, targetFbData))
                {
                    res.Add(it);
                }
            }
            return(res);
        }
示例#16
0
 public void DeleteRoute()
 {
     RouteDataAccess.DeleteRoute(SelectedRoute.Id);
     RouteList.Remove(SelectedRoute);
     RouteId = 0;
     NotifyOfPropertyChange(() => RouteList);
 }
示例#17
0
 public static void DrawAddressesOfRoute(GMapOverlay overlay, RouteList routeList)
 {
     foreach (var orderItem in routeList.Addresses)
     {
         var point = orderItem.Order.DeliveryPoint;
         if (point == null)
         {
             continue;
         }
         if (point.Latitude.HasValue && point.Longitude.HasValue)
         {
             GMapMarker addressMarker = new NumericPointMarker(
                 new PointLatLng(
                     (double)point.Latitude,
                     (double)point.Longitude
                     ),
                 NumericPointMarkerType.white_large,
                 orderItem.IndexInRoute + 1
                 );
             var text = point.ShortAddress;
             addressMarker.ToolTipText = text;
             overlay.Markers.Add(addressMarker);
         }
     }
 }
示例#18
0
        public bool IsUniqueDocumentAtDay(IUnitOfWork UoW, RouteList routeList, Warehouse warehouse, int documentId)
        {
            if (documentId != 0)
            {
                return(true);
            }

            var start = DateTime.Now.Date;
            var end   = DateTime.Now.Date.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59).AddTicks(59);

            CarUnloadDocument carUnloadDocument = null;
            var getSimilarCarUnloadDoc          = QueryOver.Of <CarUnloadDocument>(() => carUnloadDocument)
                                                  .Where(() => carUnloadDocument.RouteList.Id == routeList.Id)
                                                  .And(() => carUnloadDocument.Warehouse.Id == warehouse.Id)
                                                  .And(() => start <= carUnloadDocument.TimeStamp)
                                                  .And(() => carUnloadDocument.TimeStamp <= end);
            IList <CarUnloadDocument> documents = getSimilarCarUnloadDoc.GetExecutableQueryOver(UoW.Session)
                                                  .List();

            if (documents.Count > 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
示例#19
0
 public RouteListPrintableDocs(IUnitOfWork uow, RouteList routeList, RouteListPrintableDocuments type)
 {
     _uow           = uow;
     this.routeList = routeList;
     _type          = type;
     CopiesToPrint  = DefaultCopies;
 }
示例#20
0
        //Routes->Schedule
        public async static Task <List <Routine> > getRoutes()
        {
            if (Database.routesLoaded)
            {
                return(Database.routeList);
            }
            string url      = globalURL + "/routes?sort=color&filter[date]=" + getLocalTime();
            string response = await DataFetcher.fetchData(url);

            RouteList      raw_data  = JsonConvert.DeserializeObject <RouteList>(response);
            List <string>  idList    = new List <string>();
            List <Routine> routeList = new List <Routine>();

            for (int i = 0; i < raw_data.data.Length; i++)
            {
                Routine routine = raw_data.data[i];
                if (routine.attributes.long_name.Length == 0)
                {
                    routine.attributes.long_name = routine.attributes.short_name;
                }
                routeList.Add(routine);
                if (!idList.Contains(routine.id))
                {
                    idList.Add(routine.id);
                    Database.routeID_NameMap.Add(routine.id, routine.attributes.long_name);
                    Database.routeID_typeMap.Add(routine.id, routine.attributes.type);
                }
            }
            Database.routesLoaded = true;
            return(routeList);
        }
示例#21
0
        public IList <DocumentPrintHistory> GetPrintsHistory(IUnitOfWork uow, RouteList routeList)
        {
            var types = new[] { PrintedDocumentType.RouteList, PrintedDocumentType.ClosedRouteList };

            return(uow.Session.Query <DocumentPrintHistory>()
                   .Where(dph => types.Contains(dph.DocumentType) && dph.RouteList.Id == routeList.Id).ToList());
        }
示例#22
0
        /// <summary>
        /// Метод берет последовательность доставки из предложенного маршрута и переносит его в маршрутный лист.
        /// Переносится только последовательность адресов. Никакие адреса не добавляются и не удаляются.
        /// Метод нужен для перестройки с учетов времени уже имеющегося МЛ.
        /// </summary>
        public void UpdateAddressOrderInRealRoute(RouteList updatedRoute)
        {
            if (updatedRoute.Status > RouteListStatus.InLoading)
            {
                _interactiveService.ShowMessage(ImportanceLevel.Error,
                                                $"Была выполнена попытка перестроить маршрут {updatedRoute.Id} после того, как он отгружен. Проверьте фильтр \"Показать уехавшие\".");

                return;
            }

            for (int i = 0; i < updatedRoute.ObservableAddresses.Count; i++)
            {
                var address = updatedRoute.ObservableAddresses[i];
                if (i < Orders.Count)
                {
                    if (Orders[i].Order.Id != updatedRoute.ObservableAddresses[i].Order.Id)
                    {
                        address = updatedRoute.ObservableAddresses.First(x => x.Order.Id == Orders[i].Order.Id);
                        updatedRoute.ObservableAddresses.Remove(address);
                        updatedRoute.ObservableAddresses.Insert(i, address);
                    }
                    address.PlanTimeStart = Orders[i].ProposedTimeStart;
                    address.PlanTimeEnd   = Orders[i].ProposedTimeEnd;
                }
                else
                {
                    address.PlanTimeStart = null;
                    address.PlanTimeEnd   = null;
                }
            }
        }
示例#23
0
        public decimal TerminalTransferedCountToRouteList(IUnitOfWork unitOfWork, RouteList routeList)
        {
            if (unitOfWork == null)
            {
                throw new ArgumentNullException(nameof(unitOfWork));
            }

            if (routeList == null)
            {
                throw new ArgumentNullException(nameof(routeList));
            }

            var termanalTransferDocumentItems = unitOfWork.Session.Query <DriverTerminalTransferDocument>()
                                                .Where(dttd => dttd.RouteListTo.Id == routeList.Id ||
                                                       dttd.RouteListFrom.Id == routeList.Id)
                                                .ToList();

            if (termanalTransferDocumentItems.Any())
            {
                return(termanalTransferDocumentItems.Sum(dttd =>
                                                         dttd.RouteListTo.Id == routeList.Id ? 1 :
                                                         dttd.RouteListFrom.Id == routeList.Id ? -1 : 0));
            }

            return(0);
        }
示例#24
0
        public void ListRequestObject()
        {
            moq::Mock <Routes.RoutesClient> mockGrpcClient = new moq::Mock <Routes.RoutesClient>(moq::MockBehavior.Strict);
            ListRoutesRequest request = new ListRoutesRequest
            {
                PageToken            = "page_tokenf09e5538",
                MaxResults           = 2806814450U,
                Filter               = "filtere47ac9b2",
                OrderBy              = "order_byb4d33ada",
                Project              = "projectaa6ff846",
                ReturnPartialSuccess = false,
            };
            RouteList expectedResponse = new RouteList
            {
                Id            = "id74b70bb8",
                Kind          = "kindf7aa39d9",
                Warning       = new Warning(),
                NextPageToken = "next_page_tokendbee0940",
                Items         = { new Route(), },
                SelfLink      = "self_link7e87f12d",
            };

            mockGrpcClient.Setup(x => x.List(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse);
            RoutesClient client   = new RoutesClientImpl(mockGrpcClient.Object, null);
            RouteList    response = client.List(request);

            xunit::Assert.Same(expectedResponse, response);
            mockGrpcClient.VerifyAll();
        }
示例#25
0
        public async stt::Task ListAsync()
        {
            moq::Mock <Routes.RoutesClient> mockGrpcClient = new moq::Mock <Routes.RoutesClient>(moq::MockBehavior.Strict);
            ListRoutesRequest request = new ListRoutesRequest
            {
                Project = "projectaa6ff846",
            };
            RouteList expectedResponse = new RouteList
            {
                Id            = "id74b70bb8",
                Kind          = "kindf7aa39d9",
                Warning       = new Warning(),
                NextPageToken = "next_page_tokendbee0940",
                Items         = { new Route(), },
                SelfLink      = "self_link7e87f12d",
            };

            mockGrpcClient.Setup(x => x.ListAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <RouteList>(stt::Task.FromResult(expectedResponse), null, null, null, null));
            RoutesClient client = new RoutesClientImpl(mockGrpcClient.Object, null);
            RouteList    responseCallSettings = await client.ListAsync(request.Project, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None));

            xunit::Assert.Same(expectedResponse, responseCallSettings);
            RouteList responseCancellationToken = await client.ListAsync(request.Project, st::CancellationToken.None);

            xunit::Assert.Same(expectedResponse, responseCancellationToken);
            mockGrpcClient.VerifyAll();
        }
示例#26
0
        public static ReportInfo GetRDL(RouteList routeList, RouteListPrintableDocuments type, IUnitOfWork uow = null, bool batchPrint = false)
        {
            switch (type)
            {
            case RouteListPrintableDocuments.LoadDocument:
                return(GetRDLLoadDocument(routeList.Id));

            case RouteListPrintableDocuments.LoadSofiyskaya:
                return(GetRDLLoadSofiyskaya(routeList.Id));

            case RouteListPrintableDocuments.RouteList:
                return(GetRDLRouteList(uow, routeList));

            case RouteListPrintableDocuments.RouteMap:
                return(GetRDLRouteMap(uow, routeList, batchPrint));

            case RouteListPrintableDocuments.TimeList:
                return(GetRDLTimeList(routeList.Id));

            case RouteListPrintableDocuments.DailyList:
                return(GetRDLDailyList(routeList.Id));

            case RouteListPrintableDocuments.OrderOfAddresses:
                return(routeList.OrderOfAddressesRep(routeList.Id));

            default:
                throw new NotImplementedException("Неизвестный тип документа");
            }
        }
示例#27
0
        protected void Page_Load(object sender, EventArgs e)
        {
            paramsContainer   = new ParamsContainer(HttpContext.Current);
            initialJson.Value = PublicMethods.toJSON(RouteList.get_data_server_side(paramsContainer, RouteName.node));

            try
            {
                Guid?nodeId = PublicMethods.parse_guid(Request.Params["ID"], alternatvieValue:
                                                       PublicMethods.parse_guid(Request.Params["NodeID"]));

                if (Request.Url.ToString().ToLower().Contains("_escaped_fragment_=") && nodeId.HasValue)
                {
                    ParamsContainer paramsContainer = new ParamsContainer(HttpContext.Current);

                    Modules.CoreNetwork.Node _nd = CNController.get_node(paramsContainer.Tenant.Id, nodeId.Value, true);

                    string htmlContent = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" +
                                         "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>" + _nd.Name + " - " + RaaiVanSettings.SystemTitle(paramsContainer.Tenant.Id) + "</title></head><body>" +
                                         "<div>" + _nd.Name + "</div>" +
                                         "<div>" + ProviderUtil.list_to_string <string>(_nd.Tags, ' ') + "</div>" +
                                         "<div>" + PublicMethods.shuffle_text(PublicMethods.markup2plaintext(paramsContainer.Tenant.Id,
                                                                                                             _nd.Description, true)) + "</div>" +
                                         "<div>" + PublicMethods.markup2plaintext(paramsContainer.Tenant.Id,
                                                                                  Modules.Wiki.WikiController.get_wiki_content(paramsContainer.Tenant.Id, nodeId.Value), true) + "</div>" +
                                         "</body></html>";

                    paramsContainer.return_response(htmlContent);

                    return;
                }
            }
            catch { }
        }
示例#28
0
        public void UpdateIncomeCash(IUnitOfWork uow, RouteList routeList, Income income, decimal amount)
        {
            var distributedIncomeAmount = routeListItemCashDistributionDocumentRepository
                                          .GetDistributedIncomeAmount(uow, income.Id);

            if (distributedIncomeAmount > amount)
            {
                var docs =
                    routeListItemCashDistributionDocumentRepository.GetRouteListItemCashDistributionDocuments(uow, income.Id);

                foreach (var doc in docs)
                {
                    DeleteOperation(uow, doc);
                    DeleteDocument(uow, doc);
                    uow.Commit();
                }

                DistributeIncomeCash(uow, routeList, income, amount);
            }

            if (distributedIncomeAmount < amount)
            {
                DistributeIncomeCash(uow, routeList, income, amount - distributedIncomeAmount);
            }
        }
示例#29
0
 public PremiumRaskatGAZelleWageModel(IEmployeeRepository employeeRepository, IWageParametersProvider wageParametersProvider,
                                      IPremiumRaskatGAZelleParametersProvider premiumRaskatGaZelleParametersProvider, RouteList routeList)
 {
     this.employeeRepository     = employeeRepository ?? throw new ArgumentNullException(nameof(employeeRepository));
     this.wageParametersProvider = wageParametersProvider ?? throw new ArgumentNullException(nameof(wageParametersProvider));
     this.premiumRaskatGAZelleParametersProvider = premiumRaskatGaZelleParametersProvider ?? throw new ArgumentNullException(nameof(premiumRaskatGaZelleParametersProvider));
     this.routeList = routeList ?? throw new ArgumentNullException(nameof(routeList));
 }
示例#30
0
        public static void RegisterRoutes(this PluginContainer pluginContainer, RouteCollection routes)
        {
            RouteList pluginRoutes = new RouteList();

            pluginContainer.ExecuteMethod("RegisterRoutes", pluginRoutes);

            pluginRoutes.ForEach(r => routes.Add(pluginContainer.GetRouteName(r.MethodName), new PluginRoute(((Plugin)pluginContainer.Tag).ID, r.MethodName, r.Url, r.MergeWithDefaults(new { controller = "Plugin", action = "CallMethod" }), r.MergeWithConstraints(null))));
        }
示例#31
0
 //Конструктор создания новой строки
 public RouteListItem(RouteList routeList, Order order)
 {
     this.routeList = routeList;
     if(order.OrderStatus == OrderStatus.Accepted)
     {
         this.order = order;
         order.OrderStatus = OrderStatus.InTravelList;
     }
     if (routeList.Status == RouteListStatus.EnRoute)
     {
         this.Order = order;
     }
 }
        public static IList<GoodsLoadedListResult> AllGoodsLoaded(IUnitOfWork UoW, RouteList routeList, CarLoadDocument excludeDoc = null)
        {
            CarLoadDocument docAlias = null;
            CarLoadDocumentItem docItemsAlias = null;

            GoodsLoadedListResult inCarLoads = null;
            var loadedQuery = UoW.Session.QueryOver<CarLoadDocument>(() => docAlias)
                .Where(d => d.RouteList.Id == routeList.Id);
            if (excludeDoc != null)
                loadedQuery.Where(d => d.Id != excludeDoc.Id);

            var loadedlist = loadedQuery
                .JoinAlias(d => d.Items, () => docItemsAlias)
                .SelectList (list => list
                    .SelectGroup (() => docItemsAlias.Nomenclature.Id).WithAlias (() => inCarLoads.NomenclatureId)
                    .SelectGroup (() => docItemsAlias.Equipment.Id).WithAlias (() => inCarLoads.EquipmentId)
                    .SelectSum (() => docItemsAlias.Amount).WithAlias (() => inCarLoads.Amount)
                ).TransformUsing (Transformers.AliasToBean <GoodsLoadedListResult> ())
                .List<GoodsLoadedListResult> ();
            return loadedlist;
        }
        public static IList<GoodsInRouteListResult> GetEquipmentsInRL(IUnitOfWork uow, RouteList routeList, Warehouse warehouse = null)
        {
            GoodsInRouteListResult resultAlias = null;
            Vodovoz.Domain.Orders.Order orderAlias = null;
            OrderItem orderItemsAlias = null;
            OrderEquipment orderEquipmentAlias = null;
            Nomenclature OrderItemNomenclatureAlias = null, OrderEquipmentNomenclatureAlias = null;
            Equipment equipmentAlias = null;

            var ordersQuery = QueryOver.Of<Vodovoz.Domain.Orders.Order> (() => orderAlias);

            var routeListItemsSubQuery = QueryOver.Of<RouteListItem> ()
                .Where (r => r.RouteList.Id == routeList.Id)
                .Select (r => r.Order.Id);
            ordersQuery.WithSubquery.WhereProperty (o => o.Id).In (routeListItemsSubQuery).Select (o => o.Id);

            var orderitemsQuery = uow.Session.QueryOver<OrderItem>(() => orderItemsAlias)
                .WithSubquery.WhereProperty(i => i.Order.Id).In(ordersQuery)
                .JoinAlias(() => orderItemsAlias.Nomenclature, () => OrderItemNomenclatureAlias)
                .Where(() => !OrderItemNomenclatureAlias.Serial);
            if (warehouse != null)
                orderitemsQuery.Where(() => OrderItemNomenclatureAlias.Warehouse == warehouse);

            var orderEquipmentsQuery = uow.Session.QueryOver<OrderEquipment>(() => orderEquipmentAlias)
                .WithSubquery.WhereProperty(i => i.Order.Id).In(ordersQuery)
                .JoinAlias(() => orderEquipmentAlias.Equipment, () => equipmentAlias)
                .Where(() => orderEquipmentAlias.Direction == Direction.Deliver)
                .JoinAlias(() => equipmentAlias.Nomenclature, () => OrderEquipmentNomenclatureAlias);
            if (warehouse != null)
                orderEquipmentsQuery.Where(() => OrderEquipmentNomenclatureAlias.Warehouse == warehouse);

            return orderEquipmentsQuery
                .SelectList (list => list
                    .SelectGroup (() => OrderEquipmentNomenclatureAlias.Id).WithAlias (() => resultAlias.NomenclatureId)
                    .SelectGroup (() => equipmentAlias.Id).WithAlias (() => resultAlias.EquipmentId)
                    .SelectSum (() => 1).WithAlias (() => resultAlias.Amount)
                )
                .TransformUsing (Transformers.AliasToBean <GoodsInRouteListResult> ())
                .List<GoodsInRouteListResult> ();
        }
        public static void Print(IUnitOfWork uow, RouteList routeList, ITdiTab myTab)
        {
            List<RouteListPrintableDocs> docsList = new List<RouteListPrintableDocs>
                {
                    new RouteListPrintableDocs(uow, routeList, RouteListPrintableDocuments.LoadDocument),
                    new RouteListPrintableDocs(uow, routeList, RouteListPrintableDocuments.TimeList),
                    new RouteListPrintableDocs(uow, routeList, RouteListPrintableDocuments.RouteList)
                };

            DocumentPrinter.PrintAll(docsList);

            //			List<ReportInfo> docs = new List<ReportInfo>
            //			{
            //				GetRDLLoadDocument(routeListId),
            //				GetRDLRouteList(uow, routeListId),
            //				GetRDLTimeList(routeListId)
            //			};
            //
            //			foreach (var doc in docs)
            //			{
            //				myTab.TabParent.OpenTab(
            //					TdiTabBase.GenerateHashName<ReportViewDlg>(),
            //					() => new ReportViewDlg(doc, true));
            //			}
        }
 public static IList<Equipment> GetEquipmentUnloadedTo(IUnitOfWork uow, RouteList routeList)
 {
     CarUnloadDocumentItem unloadItemAlias = null;
     WarehouseMovementOperation operationAlias = null;
     Equipment equipmentAlias = null;
     var unloadedEquipmentIdsQuery = QueryOver.Of<CarUnloadDocument>().Where(doc => doc.RouteList.Id == routeList.Id)
         .JoinAlias(doc => doc.Items, () => unloadItemAlias)
         .JoinAlias(() => unloadItemAlias.MovementOperation, () => operationAlias)
         .JoinAlias(() => operationAlias.Equipment, () => equipmentAlias)
         .Select(op => equipmentAlias.Id);
     return uow.Session.QueryOver<Equipment>(()=>equipmentAlias).WithSubquery.WhereProperty(() => equipmentAlias.Id).In(unloadedEquipmentIdsQuery).List();
 }
        public static ReportInfo GetRDLRouteList(IUnitOfWork uow, RouteList routeList)
        {
            var RouteColumns = RouteColumnRepository.ActiveColumns (uow);

            if (RouteColumns.Count < 1)
                MessageDialogWorks.RunErrorDialog ("В справочниках не заполнены колонки маршрутного листа. Заполните данные и повторите попытку.");

            string documentName = "RouteList";

            switch (routeList.Status)
            {
                case RouteListStatus.MileageCheck:
                case RouteListStatus.Closed:
                    documentName = "ClosedRouteList";
                    break;
            }

            string RdlText = String.Empty;
            using (var rdr = new StreamReader (System.IO.Path.Combine (Environment.CurrentDirectory, "Reports/" + documentName + ".rdl"))) {
                RdlText = rdr.ReadToEnd ();
            }
            //Для уникальности номеров Textbox.
            int TextBoxNumber = 100;

            //Шаблон стандартной ячейки
            const string numericCellTemplate = "<TableCell><ReportItems>" +
                "<Textbox Name=\"Textbox{0}\">" +
                "<Value>{1}</Value>" +
                "<Style xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition\">" +
                "<BorderStyle><Default>Solid</Default></BorderStyle><BorderColor /><BorderWidth />" +
                "<TextAlign>Center</TextAlign><Format>0</Format></Style></Textbox></ReportItems></TableCell>";

            //Расширяем требуемые колонки на нужную ширину
            RdlText = RdlText.Replace ("<!--colspan-->", String.Format ("<ColSpan>{0}</ColSpan>", RouteColumns.Count));

            //Расширяем таблицу
            string columnsXml = "<TableColumn><Width>20pt</Width></TableColumn>";
            string columns = String.Empty;
            for (int i = 0; i < RouteColumns.Count; i++) {
                columns += columnsXml;
            }
            RdlText = RdlText.Replace ("<!--table_column-->", columns);

            //Создаем колонки, дополняем запрос и тд.
            string CellColumnHeader = String.Empty;
            string CellColumnValue = String.Empty;
            string CellColumnStock = String.Empty;
            string CellColumnTotal = String.Empty;
            string SqlSelect = String.Empty;
            string SqlSelectSubquery = String.Empty;
            string Fields = String.Empty;
            string TotalSum = "= 0";
            foreach (var column in RouteColumns) {
                //Заголовки колонок
                CellColumnHeader += String.Format (
                    "<TableCell><ReportItems>" +
                    "<Textbox Name=\"Textbox{0}\">" +
                    "<Value>{1}</Value>" +
                    "<Style xmlns=\"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition\">" +
                    "<BorderStyle><Default>Solid</Default><Top>Solid</Top><Bottom>Solid</Bottom></BorderStyle>" +
                    "<BorderColor /><BorderWidth /><FontSize>8pt</FontSize><TextAlign>Center</TextAlign></Style>" +
                    "<CanGrow>true</CanGrow></Textbox></ReportItems></TableCell>",
                    TextBoxNumber++, column.Name);
                //Формула для колонки с водой для информации из запроса
                CellColumnValue += String.Format (numericCellTemplate,
                    TextBoxNumber++, String.Format("=Iif({{Water{0}}} = 0, \"\", {{Water{0}}})", column.Id ));
                //Ячейка с запасом. Пока там пусто
                CellColumnStock += String.Format (numericCellTemplate,
                    TextBoxNumber++, "");
                //Ячейка с суммой по бутылям + запасы.
                CellColumnTotal += String.Format (numericCellTemplate,
                    TextBoxNumber++, String.Format("=Iif(Sum({{Water{0}}}) = 0, \"\", Sum({{Water{0}}}))", column.Id ));
                //Запрос..
                SqlSelect += String.Format (", IFNULL(wt_qry.Water{0}, 0) AS Water{0}", column.Id.ToString ());
                SqlSelectSubquery += String.Format (", SUM(IF(nomenclature_route_column.id = {0}, order_items.count, 0)) AS {1}",
                    column.Id, "Water" + column.Id.ToString ());
                //Линкуем запрос на переменные RDL
                Fields += String.Format ("" +
                    "<Field Name=\"{0}\">" +
                    "<DataField>{0}</DataField>" +
                    "<TypeName>System.Int32</TypeName>" +
                    "</Field>", "Water" + column.Id.ToString ());
                //Формула итоговой суммы по всем бутялым.
                if(RouteColumnRepository.NomenclaturesForColumn(uow, column).Any(x => x.Category == Vodovoz.Domain.Goods.NomenclatureCategory.water))
                    TotalSum += "+ Sum({Water" + column.Id.ToString () + "})";
            }
            RdlText = RdlText.Replace ("<!--table_cell_name-->", CellColumnHeader);
            RdlText = RdlText.Replace ("<!--table_cell_value-->", CellColumnValue);
            RdlText = RdlText.Replace ("<!--table_cell_stock-->", CellColumnStock);
            RdlText = RdlText.Replace ("<!--table_cell_total-->", CellColumnTotal);
            RdlText = RdlText.Replace ("<!--sql_select-->", SqlSelect);
            RdlText = RdlText.Replace ("<!--sql_select_subquery-->", SqlSelectSubquery);
            RdlText = RdlText.Replace ("<!--fields-->", Fields);
            RdlText = RdlText.Replace ("<!--table_cell_total_without_stock-->", TotalSum);

            var TempFile = System.IO.Path.GetTempFileName ();
            using (StreamWriter sw = new StreamWriter (TempFile)) {
                sw.Write (RdlText);
            }
            #if DEBUG
            Console.WriteLine(RdlText);
            #endif

            return new ReportInfo {
                Title = String.Format ("Маршрутный лист № {0}", routeList.Id),
                Path = TempFile,
                Parameters = new Dictionary<string, object> {
                    { "RouteListId", routeList.Id }
                }
            };
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!(Session[ByteCore.FerryBooking.Web.SessionVariable.Step1UserInput] is Step1UserInput))
            {
                Response.Redirect("Default.aspx");
            }
            Step1UserInput step1 = (Step1UserInput)Session[SessionVariable.Step1UserInput];
            if (!Page.IsPostBack)
            {
                RouteList routelist = new RouteList();
                Route r1 = new Route().GetById(step1.Route1Id,false);
                routelist.Add(r1);

                Hashtable htSchedulePreLoad = new Hashtable();
                htSchedulePreLoad.Add(r1.ID.ToString(),InitRouteSchedule(step1.Route1Id));

                if (step1.Route2Id>0)
                {
                    Route r2 = new Route().GetById(step1.Route2Id, false);
                    routelist.Add(r2);
                    htSchedulePreLoad.Add(r2.ID.ToString(), InitRouteSchedule(step1.Route2Id));
                }

                if (step1.Route3Id>0)
                {
                    Route r3 = new Route().GetById(step1.Route3Id, false);
                    routelist.Add(r3);
                    htSchedulePreLoad.Add(r3.ID.ToString(), InitRouteSchedule(step1.Route3Id));
                }

                if (step1.Route4Id > 0)
                {
                    Route r4 = new Route().GetById(step1.Route4Id, false);
                    routelist.Add(r4);
                    htSchedulePreLoad.Add(r4.ID.ToString(), InitRouteSchedule(step1.Route4Id));
                }

                Session[SessionVariable.RouteSchedules] = htSchedulePreLoad;

                this.lvSchedule.DataSource = routelist;
                lvSchedule.DataBind();
                RouteOrderPassengerDetailList passengerList = new RouteOrderPassengerDetailList();
                for (int i = 0; i < step1.PassengersCount; i++)
                {
                    passengerList.Add(new RouteOrderPassengerDetail());
                }

                lvPassenger.DataSource = passengerList;
                lvPassenger.DataBind();

                lvTravelMethod.DataSource = routelist;
                lvTravelMethod.DataBind();
            }
        }
 public RouteListPrintableDocs(IUnitOfWork uow, RouteList routeList, RouteListPrintableDocuments type)
 {
     this.UoW 		 = uow;
     this.routeList 	 = routeList;
     this.type 		 = type;
 }