/// <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); } }
/// <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="entityDocumentsPrinterFactory">Фабрика принтеров</param> /// <param name="routeListPrintableDocumentTypes">Типы документов МЛ, которые необходимо отметить</param> /// <param name="orderDocumentTypes">Типы документов заказа, которые необходимо отметить</param> public EntityDocumentsPrinter( IUnitOfWork uow, RouteList routeList, IEntityDocumentsPrinterFactory entityDocumentsPrinterFactory, RouteListPrintableDocuments[] routeListPrintableDocumentTypes, IList <OrderDocumentType> orderDocumentTypes = null) { if (entityDocumentsPrinterFactory == null) { throw new ArgumentNullException(nameof(entityDocumentsPrinterFactory)); } 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); var isSelected = routeListPrintableDocumentTypes.Contains(RouteListPrintableDocuments.All) || routeListPrintableDocumentTypes.Contains(rlDocType); var doc = new SelectablePrintDocument(rlDoc) { Selected = isSelected }; DocumentsToPrint.Add(doc); } } if (orderDocumentTypes != null) { PrintOrderDocumentsFromTheRouteList(routeList, entityDocumentsPrinterFactory, orderDocumentTypes); } }
private void FindODTTemplates(Order currentOrder, IList <OrderDocumentType> orderDocumentTypesToSelect = null) { List <string> msgs = null; bool? successfulUpdate = null; foreach (var item in currentOrder.OrderDocuments.OfType <PrintableOrderDocument>()) { if (item is IPrintableOdtDocument document) { switch (item.Type) { case OrderDocumentType.Contract: if (document.GetTemplate() == null) { successfulUpdate = (document as OrderContract)?.Contract.UpdateContractTemplate(currentOrder.UoW, _docTemplateRepository); } (document as OrderContract)?.PrepareTemplate(currentOrder.UoW, _docTemplateRepository); break; case OrderDocumentType.M2Proxy: if (document.GetTemplate() == null) { successfulUpdate = (document as OrderM2Proxy)?.M2Proxy.UpdateM2ProxyDocumentTemplate(currentOrder.UoW, _docTemplateRepository); } (document as OrderM2Proxy)?.PrepareTemplate(currentOrder.UoW, _docTemplateRepository); break; case OrderDocumentType.AdditionalAgreement: break; default: throw new NotSupportedException("Документ не поддерживается"); } if (successfulUpdate == false) { if (msgs == null) { msgs = new List <string>(); } msgs.Add(string.Format("Документ '{0}' в комплект печати добавлен не был, т.к. для него не установлен шаблон документа и не удалось найти подходящий.", item.Name)); continue; } } if (_hideSignaturesAndStamps.HasValue && item is ISignableDocument doc) { doc.HideSignature = _hideSignaturesAndStamps.Value; } DocumentsToPrint.Add( new SelectablePrintDocument(item) { Selected = orderDocumentTypesToSelect == null || orderDocumentTypesToSelect.Contains(item.Type) } ); } if (msgs != null) { ODTTemplateNotFoundMessages = string.Join("\n", msgs); } }