/// <summary> /// Проверка наличия журнала сделаных /// </summary> /// <param name="reportMigration">Путь к отчету с ошибками о миграции</param> /// <param name="report">Модель отчета о миграциии</param> public static void CreateReportMigration(string reportMigration, MigrationParse report) { if (File.Exists(reportMigration)) { XmlReadOrWrite read = new XmlReadOrWrite(); read.AddReportMigrationElemrnt(reportMigration, report); } else { var convert = new Converts.ConvettToXml.XmlConvert(); convert.SerializerClassToXml(reportMigration, report, typeof(MigrationParse)); } }
/// <summary> /// Шаблон писем по миграции НП /// </summary> /// <param name="connectionstringtemplate">Строка соединения</param> /// <param name="path">Путь к папке сохранения</param> /// <param name="model">Модель миграции</param> public void MigrationDoc(string connectionstringtemplate, string path, MigrationParse model) { SqlLibaryIfns.SqlModelReport.SqlTemplate.ModelTemplate template = new SqlLibaryIfns.SqlModelReport.SqlTemplate.ModelTemplate(); var setting = new FullSetting { UseTemplate = new UseTemplate() { IdTemplate = 3 } }; var documenttemplate = template.Template(connectionstringtemplate, setting); model.N280 = template.Inspection(connectionstringtemplate, "7746").Inspection.N280; var ul46 = model.ReportMigration.Where(code => (code.Kpp ?? string.Empty) != "" && code.Problem.Contains("Запись о налогоплательщике в ЦУН не содержит ОКТМО")).ToArray(); var fullpath = path + "7746" + "_ЮЛ_" + Constant.WordConstant.Formatword; GenerateDoc(fullpath, documenttemplate, ul46, model, 1, "7746"); setting.UseTemplate.IdTemplate = 2; documenttemplate = template.Template(connectionstringtemplate, setting); model.ReportMigration.GroupBy(x => x.CodeIfns).ToList().ForEach(key => { model.N280 = template.Inspection(connectionstringtemplate, key.Key).Inspection.N280; List <ReportMigration[]> report = new List <ReportMigration[]>(); var fl = model.ReportMigration.Where(code => code.CodeIfns == key.Key && string.IsNullOrWhiteSpace(code.Kpp)).ToArray(); var ul = model.ReportMigration.Where(code => code.CodeIfns == key.Key && (code.Kpp ?? string.Empty) != "" && !code.Problem.Contains("Запись о налогоплательщике в ЦУН не содержит ОКТМО")).ToArray(); if (fl.Length >= 1) { report.Add(fl); } if (ul.Length >= 1) { report.Add(ul); } foreach (var param in report) { int isshablon; if (!string.IsNullOrWhiteSpace(param[0].Kpp)) { isshablon = 1; fullpath = path + key.Key + "_ЮЛ_" + Constant.WordConstant.Formatword; } else { isshablon = 2; fullpath = path + key.Key + "_ФЛ_ИП_" + Constant.WordConstant.Formatword; } GenerateDoc(fullpath, documenttemplate, param, model, isshablon, key.Key); } report.Clear(); }); }
/// <summary> /// Отчет ошибок по миграции НП /// </summary> /// <param name="path">Путь к xml отчету</param> /// <param name="report">Модель добавления в отчет</param> public void AddReportMigrationElemrnt(string path, MigrationParse report) { var doc = LogicaXml.LogicaXml.Document(path); XmlElement xRoot = doc.DocumentElement; XmlElement reportMigration = doc.CreateElement("ReportMigration"); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "NameOrg", report.ReportMigration[0].NameOrg)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Inn", report.ReportMigration[0].Inn)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Kpp", report.ReportMigration[0].Kpp)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "CodeIfns", report.ReportMigration[0].CodeIfns)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Fid", report.ReportMigration[0].Fid)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Date", report.ReportMigration[0].Date)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Stage", report.ReportMigration[0].Stage)); reportMigration.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Problem", report.ReportMigration[0].Problem)); xRoot.AppendChild(reportMigration); doc.Save(path); }
/// <summary> /// Сервис подготовки документов ошибок о миграции /// </summary> /// <param name="json">Json отчет</param> /// <returns></returns> public async Task <ModelPathReport> MigrationReports(MigrationParse json) { var report = new ModelPathReport(); try { return(await Task.Factory.StartNew(() => { var docmigration = new DocumentMigration(); docmigration.MigrationDoc(_parametrService.ConectWork, _parametrService.ReportMassTemplate, json); report.Note = "Документы для печати запущены и сохраняются в папку "; report.Url = _parametrService.ReportMassTemplate; return report; })); } catch (Exception e) { Loggers.Log4NetLogger.Error(e); report.Note = e.Message; return(report); } }
/// <summary> /// Шаблон писем по миграции НП /// </summary> /// <param name="connectionStringTemplate">Строка соединения</param> /// <param name="path">Путь к папке сохранения</param> /// <param name="model">Модель миграции</param>\ /// <param name="postAddress">Модель адреса</param> public void MigrationDocument(string connectionStringTemplate, string path, MigrationParse model, string postAddress = null) { ServiceRestLotus lotus = new ServiceRestLotus(); SqlLibaryIfns.SqlModelReport.SqlTemplate.ModelTemplate template = new SqlLibaryIfns.SqlModelReport.SqlTemplate.ModelTemplate(); var setting = new FullSetting { UseTemplate = new UseTemplate() { IdTemplate = 3 } }; var documentTemplate = template.Template(connectionStringTemplate, setting); model.N280 = template.Inspection(connectionStringTemplate, "7746").Inspection.N280; var ul46 = model.ReportMigration.Where(code => (code.Kpp ?? string.Empty) != "" && code.Problem.Contains("Запись о налогоплательщике в ЦУН не содержит ОКТМО")).ToArray(); var fullPath = path + "7746" + "_ЮЛ_" + Constant.WordConstant.FormatWord; GenerateDoc(fullPath, documentTemplate, ul46, model, 1, "7746"); setting.UseTemplate.IdTemplate = 2; documentTemplate = template.Template(connectionStringTemplate, setting); model.ReportMigration.GroupBy(x => x.CodeIfns).ToList().ForEach(key => { model.N280 = template.Inspection(connectionStringTemplate, key.Key).Inspection.N280; List <ReportMigration[]> report = new List <ReportMigration[]>(); var fl = model.ReportMigration.Where(code => code.CodeIfns == key.Key && string.IsNullOrWhiteSpace(code.Kpp)).ToArray(); var ul = model.ReportMigration.Where(code => code.CodeIfns == key.Key && (code.Kpp ?? string.Empty) != "" && !code.Problem.Contains("Запись о налогоплательщике в ЦУН не содержит ОКТМО")).ToArray(); if (fl.Length >= 1) { report.Add(fl); } if (ul.Length >= 1) { report.Add(ul); } foreach (var param in report) { int isTemplate; string fileName; if (!string.IsNullOrWhiteSpace(param[0].Kpp)) { isTemplate = 1; fileName = key.Key + "_ЮЛ_" + Constant.WordConstant.FormatWord; fullPath = path + fileName; } else { isTemplate = 2; fileName = key.Key + "_ФЛ_ИП_" + Constant.WordConstant.FormatWord; fullPath = path + fileName; } GenerateDoc(fullPath, documentTemplate, param, model, isTemplate, key.Key); //Отправка на сервис в Lotus if (postAddress != null) { Letter modeLetter = new Letter() { Attachments = new Attachment[1], DestinationCodes = new string[1] }; modeLetter.Attachments[0] = new Attachment { FileName = fileName, Extension = Constant.WordConstant.FormatWord, Data = File.ReadAllBytes(fullPath) }; modeLetter.Id = Guid.NewGuid().ToString(); modeLetter.Subscriber = documentTemplate.Templates.Stone.Stone3; modeLetter.DestinationCodes[0] = key.Key; modeLetter.File = "07-10"; modeLetter.Author = null; lotus.ServicePostLotus(postAddress, modeLetter); } } report.Clear(); }); }
/// <summary> /// Создание документов по Миграции /// </summary> /// <param name="fullPath">Полный путь к сохранению файла с именем</param> /// <param name="documentTemplate">Шаблон документа из БД</param> /// <param name="migration">Журнал миграции</param> /// <param name="model">Модель с параметрами</param> /// <param name="isTemplate">Шаблон ЮЛ или ФЛ</param> /// <param name="ifns">ИФНС номер инспекции</param> private void GenerateDoc(string fullPath, LibaryXMLAutoReports.FullTemplateSheme.Document documentTemplate, ReportMigration[] migration, MigrationParse model, int isTemplate, string ifns) { using (WordprocessingDocument package = WordprocessingDocument.Create(fullPath, WordprocessingDocumentType.Document)) { MainDocumentPart mainDocumentPart = package.AddMainDocumentPart(); DocumentFormat.OpenXml.Wordprocessing.Document doc = new DocumentFormat.OpenXml.Wordprocessing.Document(); Fotters.FottersAddDocument(mainDocumentPart, documentTemplate.Templates.Stone.Stone4, documentTemplate.Templates.Stone.Stone5); doc.Append(SettingPage.AddSetting(mainDocumentPart)); doc.Append(Headers.HeaderDocumentIfns(documentTemplate, mainDocumentPart, ifns, model.N280, model.Otdel)); doc.Append(Body.TextDocumentFormatMigration(documentTemplate)); doc.Append(Body.GenerateMigrationTable(migration, isTemplate)); doc.Append(Single.AddSingle(documentTemplate)); mainDocumentPart.Document = doc; package.MainDocumentPart.Document.Save(); package.Close(); } }