public async Task <IActionResult> OnGetAsync(int?id) { if (id == null) { return(NotFound()); } BitrixUser = await _context.BitrixUsers.FirstOrDefaultAsync(m => m.Id == id); if (BitrixUser == null) { return(NotFound()); } return(Page()); }
public async Task <IActionResult> OnPostAsync(int?id) { if (id == null) { return(NotFound()); } BitrixUser = await _context.BitrixUsers.FindAsync(id); if (BitrixUser != null) { _context.BitrixUsers.Remove(BitrixUser); await _context.SaveChangesAsync(); } return(RedirectToPage("/Account/Manage/Bitrix", new { area = "Identity" })); }
public async Task GetUsersAsync() { var request = new RestRequest(BitrixKeys.Value.URL + BitrixKeys.Value.AuthKey + $"/user.get.json"); var response = Client.Execute(request); var data = JsonConvert.DeserializeObject <BitrixJsonData.Root>(response.Content); foreach (var item in data.result) { BitrixUser user = _db.BitrixUsers.FirstOrDefault(x => x.UserId == item.ID); if (user != null) { user.UserId = item.ID; user.Name = item.NAME; user.Surname = item.SECOND_NAME; user.Email = item.EMAIL; _db.BitrixUsers.Update(user); } else { var newUser = new BitrixUser { UserId = item.ID, Name = item.NAME, Surname = item.SECOND_NAME, Email = item.EMAIL, isSigned = false }; await _db.AddAsync(newUser); } } await _db.SaveChangesAsync(); logger.LogInformation("Список пользователей обновлен"); }
public ReportGeneratorResult ProcessLongRunningAction(string userIdentityName, string id, DateTime periodStart, DateTime periodEnd) { var htmlErrorReport = string.Empty; taskId = id; byte[] binData = null; try { SetStatus(0, "Старт формирования отчета..."); DataTable dataTable = new DataTable(); dataTable.Columns.Add("ID", typeof(string)).Caption = "ID"; dataTable.Columns["ID"].ExtendedProperties["Width"] = (double)6; dataTable.Columns.Add("URegNum", typeof(string)).Caption = "Ун. № заявки"; dataTable.Columns["URegNum"].ExtendedProperties["Width"] = (double)8; dataTable.Columns.Add("Url", typeof(string)).Caption = "Гиперссылка на карточку заявки"; dataTable.Columns["Url"].ExtendedProperties["Width"] = (double)63; dataTable.Columns.Add("Type", typeof(string)).Caption = "Вид заявки"; dataTable.Columns["Type"].ExtendedProperties["Width"] = (double)8; dataTable.Columns.Add("FinResponsibilityCenter_ShortName", typeof(string)).Caption = "Код ЦФО"; dataTable.Columns["FinResponsibilityCenter_ShortName"].ExtendedProperties["Width"] = (double)8; dataTable.Columns.Add("FinResponsibilityCenter_ShortTitle", typeof(string)).Caption = "ЦФО"; dataTable.Columns["FinResponsibilityCenter_ShortTitle"].ExtendedProperties["Width"] = (double)8; dataTable.Columns.Add("FinResponsibilityCenter_Title", typeof(string)).Caption = "Название ЦФО (полное)"; dataTable.Columns["FinResponsibilityCenter_Title"].ExtendedProperties["Width"] = (double)40; dataTable.Columns.Add("CostSubitem_ShortName", typeof(string)).Caption = "Код подстатьи затрат"; dataTable.Columns["CostSubitem_ShortName"].ExtendedProperties["Width"] = (double)10; dataTable.Columns.Add("CostSubitem_Title", typeof(string)).Caption = "Название подстатьи затрат"; dataTable.Columns["CostSubitem_Title"].ExtendedProperties["Width"] = (double)50; dataTable.Columns.Add("ProjectShortName", typeof(string)).Caption = "Код проекта"; dataTable.Columns["ProjectShortName"].ExtendedProperties["Width"] = (double)25; dataTable.Columns.Add("Subject", typeof(string)).Caption = "Предмет заявки"; dataTable.Columns["Subject"].ExtendedProperties["Width"] = (double)50; dataTable.Columns.Add("Created", typeof(DateTime)).Caption = "Дата создания"; dataTable.Columns["Created"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("DeliveryDate", typeof(DateTime)).Caption = "Дата поставки"; dataTable.Columns["DeliveryDate"].ExtendedProperties["Width"] = (double)11; dataTable.Columns.Add("PaymentForm", typeof(string)).Caption = "Способ оплаты"; dataTable.Columns["PaymentForm"].ExtendedProperties["Width"] = (double)8; dataTable.Columns.Add("Organisation", typeof(string)).Caption = "Юридическое лицо-плательщик"; dataTable.Columns["Organisation"].ExtendedProperties["Width"] = (double)18; dataTable.Columns.Add("Amount", typeof(double)).Caption = "Сумма заявки"; dataTable.Columns["Amount"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("AmountCurrency", typeof(string)).Caption = "Валюта"; dataTable.Columns["AmountCurrency"].ExtendedProperties["Width"] = (double)11; dataTable.Columns.Add("RateVAT", typeof(string)).Caption = "Ставка НДС"; dataTable.Columns["RateVAT"].ExtendedProperties["Width"] = (double)11; dataTable.Columns.Add("AmountWithoutVAT", typeof(double)).Caption = "Сумма заявки, без НДС"; dataTable.Columns["AmountWithoutVAT"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("AmountVAT", typeof(double)).Caption = "Сумма НДС"; dataTable.Columns["AmountVAT"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("Contragent", typeof(string)).Caption = "Получатель средств"; dataTable.Columns["Contragent"].ExtendedProperties["Width"] = (double)40; dataTable.Columns.Add("DocumentState", typeof(string)).Caption = "Статус"; dataTable.Columns["DocumentState"].ExtendedProperties["Width"] = (double)16; dataTable.Columns.Add("ApproveDate", typeof(DateTime)).Caption = "Дата финального согласования"; dataTable.Columns["ApproveDate"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("FinancialYear", typeof(string)).Caption = "Финансовый год"; dataTable.Columns["FinancialYear"].ExtendedProperties["Width"] = (double)13; dataTable.Columns.Add("ActualPaymentDate", typeof(DateTime)).Caption = "Дата факт. оплаты"; dataTable.Columns["ActualPaymentDate"].ExtendedProperties["Width"] = (double)11; dataTable.Columns.Add("ActualPaymentAmount", typeof(double)).Caption = "Сумма факт. оплаты"; dataTable.Columns["ActualPaymentAmount"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("ActualPaymentAmountWithoutVAT", typeof(double)).Caption = "Сумма факт. оплаты, без НДС"; dataTable.Columns["ActualPaymentAmountWithoutVAT"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("ActualPaymentVAT", typeof(double)).Caption = "Сумма факт. НДС"; dataTable.Columns["ActualPaymentVAT"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("ActualPaymentAmountCurrency", typeof(string)).Caption = "Валюта факт. оплаты"; dataTable.Columns["ActualPaymentAmountCurrency"].ExtendedProperties["Width"] = (double)11; dataTable.Columns.Add("PaymentCompletedDate", typeof(DateTime)).Caption = "Дата финальной оплаты"; dataTable.Columns["PaymentCompletedDate"].ExtendedProperties["Width"] = (double)17; dataTable.Columns.Add("Author", typeof(string)).Caption = "Инициатор"; dataTable.Columns["Author"].ExtendedProperties["Width"] = (double)33; BitrixHelper bitrixHelper = new BitrixHelper(_bitrixConfigOptions); List <BitrixApplicationForPayment> bitrixApplicationForPaymentList = new List <BitrixApplicationForPayment>(); string bitrixAFPListIDs = bitrixHelper.GetBitrixAFPListIDs(); string bitrixRFTListID = bitrixHelper.GetBitrixRFTListID(); Hashtable fieldDisplayValuesForListIDs = new Hashtable(); if (String.IsNullOrEmpty(bitrixAFPListIDs) == false) { string[] listIDs = bitrixAFPListIDs.Split(','); int k = 1; foreach (string listID in listIDs) { SetStatus(1, "Экспорт заявок - шаг " + k.ToString() + " из " + listIDs.Length); bitrixApplicationForPaymentList.AddRange(bitrixHelper.GetBitrixAFPList(listID)); k++; Dictionary <string, string> rateVAT_DisplayValues = bitrixHelper.GetBitrixListPropertyDisplayValuesForm(listID, "RateVAT"); if (rateVAT_DisplayValues != null) { fieldDisplayValuesForListIDs.Add(listID + "_RateVAT", rateVAT_DisplayValues); } Dictionary <string, string> documentState_DisplayValues = bitrixHelper.GetBitrixListPropertyDisplayValuesForm(listID, "DOCUMENT_STATE"); if (documentState_DisplayValues != null) { fieldDisplayValuesForListIDs.Add(listID + "_DOCUMENT_STATE", documentState_DisplayValues); } Dictionary <string, string> financialYear_DisplayValues = bitrixHelper.GetBitrixListPropertyDisplayValuesForm(listID, "FinancialYear"); if (financialYear_DisplayValues != null) { fieldDisplayValuesForListIDs.Add(listID + "_FinancialYear", financialYear_DisplayValues); } Dictionary <string, string> paymentForm_DisplayValues = bitrixHelper.GetBitrixListPropertyDisplayValuesForm(listID, "PaymentForm"); if (paymentForm_DisplayValues != null) { fieldDisplayValuesForListIDs.Add(listID + "_PaymentForm", paymentForm_DisplayValues); } } } SetStatus(1, "Получение списка пользователей Б24"); List <BitrixUser> bitrixUserList = bitrixHelper.GetBitrixUserList(); SetStatus(2, "Получение списка подстатей затрат"); List <BitrixCSI> bitrixCSIList = bitrixHelper.GetBitrixCSIList(); SetStatus(3, "Получение списка ЦФО"); List <BitrixFRC> bitrixFRCList = bitrixHelper.GetBitrixFRCList(); SetStatus(4, "Получение списка кодов проектов"); List <BitrixProject> bitrixProjectList = bitrixHelper.GetBitrixProjectList(); SetStatus(4, "Получение списка юридических лиц"); List <BitrixOrganisation> bitrixOrganisationList = bitrixHelper.GetBitrixOrganisationList(); SetStatus(4, "Получение списка компаний из CRM Б24"); List <BitrixCRMCompany> bitrixCRMCompanyList = bitrixHelper.GetBitrixCRMCompanyList(); if (String.IsNullOrEmpty(bitrixRFTListID) == false) { SetStatus(4, "Экспорт заявок на командировки"); List <BitrixRequestForTrip> bitrixRFTList = bitrixHelper.GetBitrixRequestForTrip().ToList(); Dictionary <string, string> documentState_DisplayValues = bitrixHelper.GetBitrixListPropertyDisplayValuesForm(bitrixRFTListID, "DOCUMENT_STATE"); if (documentState_DisplayValues != null) { fieldDisplayValuesForListIDs.Add(bitrixRFTListID + "_DOCUMENT_STATE", documentState_DisplayValues); } foreach (var bitrixRFTListItem in bitrixRFTList) { try { if (bitrixRFTListItem != null) { var request_status = bitrixRFTListItem.DISPLAY_STATUS?.FirstOrDefault().Value; /*if (request_status == null || !(request_status == "Командировка отменена" || request_status == "Командировка закрыта")) * continue;*/ bitrixApplicationForPaymentList.AddRange(ExtractApplicationsForPaymentFromBitrixRequestForTrip(bitrixRFTListItem, bitrixCSIList, bitrixFRCList, bitrixProjectList).ToList()); } } catch (Exception) { } } } SetStatus(5, "Фильтрация выборки заявок..."); periodStart = periodStart.Date; periodEnd = new DateTime(periodEnd.Year, periodEnd.Month, periodEnd.Day, 23, 59, 59); List <BitrixApplicationForPayment> bitrixApplicationForPaymentListSorted = bitrixApplicationForPaymentList.Where(e => e.Created >= periodStart && e.Created <= periodEnd).OrderBy(e => e.Created).ToList(); int j = 1; foreach (BitrixApplicationForPayment bitrixApplicationForPayment in bitrixApplicationForPaymentListSorted) { string uRegNum = (bitrixApplicationForPayment.URegNum != null) ? bitrixApplicationForPayment.URegNum.FirstOrDefault().Value : ""; string urlCellValue = bitrixHelper.GetBitrixListElementUrl(bitrixApplicationForPayment.ID, bitrixApplicationForPayment.IBLOCK_ID);// "=ГИПЕРССЫЛКА(\"" + bitrixHelper.GetListElementUrl(bitrixApplicationForPayment.ID, bitrixApplicationForPayment.IBLOCK_ID) + "\")"; string typeName = (uRegNum.Contains("-")) ? uRegNum.Split('-')[0] : ""; string paymentForm = ""; if (fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_PaymentForm"] != null) { paymentForm = BitrixHelper.ParseBitrixListPropertyDisplayValueByID((Dictionary <string, string>)fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_PaymentForm"], bitrixApplicationForPayment.PaymentForm?.FirstOrDefault().Value); } double amount = 0; string amountCurrency = ""; if (bitrixApplicationForPayment.AmountRuble != null && String.IsNullOrEmpty(bitrixApplicationForPayment.AmountRuble.FirstOrDefault().Value) == false) { if (bitrixApplicationForPayment.AmountRuble.FirstOrDefault().Value.Contains("|")) { amount = Convert.ToDouble(bitrixApplicationForPayment.AmountRuble.FirstOrDefault().Value.Split('|')[0].Replace(".", ",")); amountCurrency = bitrixApplicationForPayment.AmountRuble.FirstOrDefault().Value.Split('|')[1]; } else { amount = Convert.ToDouble(bitrixApplicationForPayment.AmountRuble.FirstOrDefault().Value.Replace("руб.", "").Replace(".", ",")); amountCurrency = "RUB"; } } else if (bitrixApplicationForPayment.Amount != null && String.IsNullOrEmpty(bitrixApplicationForPayment.Amount.FirstOrDefault().Value) == false) { if (bitrixApplicationForPayment.Amount.FirstOrDefault().Value.Contains("|")) { amount = Convert.ToDouble(bitrixApplicationForPayment.Amount.FirstOrDefault().Value.Split('|')[0].Replace(".", ",")); amountCurrency = bitrixApplicationForPayment.Amount.FirstOrDefault().Value.Split('|')[1]; } else { amount = Convert.ToDouble(bitrixApplicationForPayment.Amount.FirstOrDefault().Value.Replace("руб.", "").Replace(".", ",")); amountCurrency = "RUB"; } } string rateVAT = ""; if (fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_RateVAT"] != null) { rateVAT = BitrixHelper.ParseBitrixListPropertyDisplayValueByID((Dictionary <string, string>)fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_RateVAT"], bitrixApplicationForPayment.RateVAT?.FirstOrDefault().Value); } double amountWithoutVAT = 0; double amountVAT = 0; if (String.IsNullOrEmpty(paymentForm) == false && paymentForm.Equals("ОПЕР") == true) { rateVAT = "0%"; amountVAT = 0; amountWithoutVAT = amount; } else { if (bitrixApplicationForPayment.AmountVAT != null && String.IsNullOrEmpty(bitrixApplicationForPayment.AmountVAT.FirstOrDefault().Value) == false) { amountVAT = BitrixHelper.ParseBitrixListElementCurrencyOrNumberFieldValue(bitrixApplicationForPayment.AmountVAT?.FirstOrDefault().Value); amountWithoutVAT = amount - amountVAT; if (Math.Round(amountVAT, 2) == Math.Round(amount * 20 / 120, 2)) { rateVAT = "20%"; } else if (Math.Round(amountVAT, 2) == Math.Round(amount * 18 / 118, 2)) { rateVAT = "18%"; } else if (Math.Round(amountVAT, 2) == Math.Round(amount * 10 / 110, 2)) { rateVAT = "10%"; } else if (amountVAT == 0) { rateVAT = "0%"; } else { rateVAT = ""; } } else { amountWithoutVAT = ((bitrixApplicationForPayment.AmountWithoutVAT != null) ? BitrixHelper.ParseBitrixListElementCurrencyOrNumberFieldValue(bitrixApplicationForPayment.AmountWithoutVAT?.FirstOrDefault().Value) : 0); if (amountWithoutVAT != 0) { amountVAT = amount - amountWithoutVAT; } } } string documentState = ""; if (fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_DOCUMENT_STATE"] != null) { documentState = BitrixHelper.ParseBitrixListPropertyDisplayValueByID((Dictionary <string, string>)fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_DOCUMENT_STATE"], bitrixApplicationForPayment.DOCUMENT_STATE?.FirstOrDefault().Value); } string financialYear = ""; if (fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_FinancialYear"] != null) { financialYear = BitrixHelper.ParseBitrixListPropertyDisplayValueByID((Dictionary <string, string>)fieldDisplayValuesForListIDs[bitrixApplicationForPayment.IBLOCK_ID + "_FinancialYear"], bitrixApplicationForPayment.FinancialYear?.FirstOrDefault().Value); } string finResponsibilityCenter_ShortName = ""; string finResponsibilityCenter_ShortTitle = ""; string finResponsibilityCenter_Title = ""; if (bitrixApplicationForPayment.FinResponsibilityCenter != null && String.IsNullOrEmpty(bitrixApplicationForPayment.FinResponsibilityCenter.FirstOrDefault().Value) == false) { string finResponsibilityCenterName = bitrixFRCList.Where(x => x.ID == bitrixApplicationForPayment.FinResponsibilityCenter.FirstOrDefault().Value).FirstOrDefault().NAME; //bitrixHelper.GetBitrixFRCListElementNameByID(bitrixApplicationForPayment.FinResponsibilityCenter.FirstOrDefault().Value); if (finResponsibilityCenterName != null && finResponsibilityCenterName.Contains(".")) { string[] tokens = finResponsibilityCenterName.Split('.'); if (tokens.Length == 3) { finResponsibilityCenter_ShortName = tokens[0].Trim(); finResponsibilityCenter_ShortTitle = tokens[1].Trim(); finResponsibilityCenter_Title = tokens[2].Trim(); } } } string costSubitem_ShortName = ""; string costSubitem_Title = ""; if (bitrixApplicationForPayment.CostSubitem != null && String.IsNullOrEmpty(bitrixApplicationForPayment.CostSubitem.FirstOrDefault().Value) == false) { string costSubitemName = bitrixCSIList.Where(x => x.ID == bitrixApplicationForPayment.CostSubitem.FirstOrDefault().Value).FirstOrDefault().NAME; //bitrixHelper.GetBitrixCSIListElementNameByID(bitrixApplicationForPayment.CostSubitem.FirstOrDefault().Value); if (String.IsNullOrEmpty(costSubitemName) == false && costSubitemName.Length >= 9) { costSubitem_ShortName = costSubitemName.Substring(0, 7); costSubitem_Title = costSubitemName.Substring(9).Trim(); } } string projectShortName = ""; if (bitrixApplicationForPayment.Project != null && String.IsNullOrEmpty(bitrixApplicationForPayment.Project.FirstOrDefault().Value) == false) { projectShortName = bitrixProjectList.Where(x => x.ID == bitrixApplicationForPayment.Project.FirstOrDefault().Value).FirstOrDefault().NAME; //bitrixHelper.GetBitrixProjectListElementNameByID(bitrixApplicationForPayment.Project.FirstOrDefault().Value); } else if (bitrixApplicationForPayment.ProjectShortName != null && String.IsNullOrEmpty(bitrixApplicationForPayment.ProjectShortName.FirstOrDefault().Value) == false) { projectShortName = bitrixApplicationForPayment.ProjectShortName.FirstOrDefault().Value; } string organisationTitle = ""; if (bitrixApplicationForPayment.Organisation != null && String.IsNullOrEmpty(bitrixApplicationForPayment.Organisation.FirstOrDefault().Value) == false) { BitrixOrganisation bitrixOrganisation = bitrixOrganisationList.Where(x => x.ID == bitrixApplicationForPayment.Organisation.FirstOrDefault().Value).FirstOrDefault(); if (bitrixOrganisation != null) { organisationTitle = bitrixOrganisation.NAME; } } string contragentTitle = ""; if (bitrixApplicationForPayment.Contragent != null && String.IsNullOrEmpty(bitrixApplicationForPayment.Contragent.FirstOrDefault().Value) == false) { BitrixCRMCompany bitrixCRMCompany = bitrixCRMCompanyList.Where(x => x.ID == bitrixApplicationForPayment.Contragent.FirstOrDefault().Value).FirstOrDefault(); //bitrixHelper.GetBitrixCRMCompanyByID(bitrixApplicationForPayment.Contragent.FirstOrDefault().Value); if (bitrixCRMCompany != null) { contragentTitle = bitrixCRMCompany.TITLE; } } else if (bitrixApplicationForPayment.ContragentText != null && String.IsNullOrEmpty(bitrixApplicationForPayment.ContragentText.FirstOrDefault().Value) == false) { contragentTitle = bitrixApplicationForPayment.ContragentText.FirstOrDefault().Value; } double actualPaymentAmount = 0; double actualPaymentAmountWithoutVAT = 0; double actualPaymentVAT = 0; string actualPaymentAmountCurrency = ""; if (bitrixApplicationForPayment.OverallPaymentAmount != null && String.IsNullOrEmpty(bitrixApplicationForPayment.OverallPaymentAmount.FirstOrDefault().Value) == false) { if (bitrixApplicationForPayment.OverallPaymentAmount.FirstOrDefault().Value.Contains("|")) { actualPaymentAmount = Convert.ToDouble(bitrixApplicationForPayment.OverallPaymentAmount.FirstOrDefault().Value.Split('|')[0].Replace(".", ",")); actualPaymentAmountCurrency = bitrixApplicationForPayment.OverallPaymentAmount.FirstOrDefault().Value.Split('|')[1]; } else { actualPaymentAmount = Convert.ToDouble(bitrixApplicationForPayment.OverallPaymentAmount.FirstOrDefault().Value.Replace("руб.", "").Replace(".", ",")); actualPaymentAmountCurrency = "RUB"; } if (bitrixApplicationForPayment.OverallPaymentAmountWithoutVAT != null && String.IsNullOrEmpty(bitrixApplicationForPayment.OverallPaymentAmountWithoutVAT.FirstOrDefault().Value) == false) { if (bitrixApplicationForPayment.OverallPaymentAmountWithoutVAT.FirstOrDefault().Value.Contains("|")) { actualPaymentAmountWithoutVAT = Convert.ToDouble(bitrixApplicationForPayment.OverallPaymentAmountWithoutVAT.FirstOrDefault().Value.Split('|')[0].Replace(".", ",")); } else { actualPaymentAmountWithoutVAT = Convert.ToDouble(bitrixApplicationForPayment.OverallPaymentAmountWithoutVAT.FirstOrDefault().Value.Replace("руб.", "").Replace(".", ",")); } } if (actualPaymentAmountWithoutVAT != 0) { actualPaymentVAT = actualPaymentAmount - actualPaymentAmountWithoutVAT; } } else if (bitrixApplicationForPayment.ActualPaymentAmount != null && String.IsNullOrEmpty(bitrixApplicationForPayment.ActualPaymentAmount.FirstOrDefault().Value) == false) { if (bitrixApplicationForPayment.ActualPaymentAmount.FirstOrDefault().Value.Contains("|")) { actualPaymentAmount = Convert.ToDouble(bitrixApplicationForPayment.ActualPaymentAmount.FirstOrDefault().Value.Split('|')[0].Replace(".", ",")); actualPaymentAmountCurrency = bitrixApplicationForPayment.ActualPaymentAmount.FirstOrDefault().Value.Split('|')[1]; } else { actualPaymentAmount = Convert.ToDouble(bitrixApplicationForPayment.ActualPaymentAmount.FirstOrDefault().Value.Replace("руб.", "").Replace(".", ",")); actualPaymentAmountCurrency = "RUB"; } if (bitrixApplicationForPayment.ActualPaymentAmountWithoutVAT != null && String.IsNullOrEmpty(bitrixApplicationForPayment.ActualPaymentAmountWithoutVAT.FirstOrDefault().Value) == false) { if (bitrixApplicationForPayment.ActualPaymentAmountWithoutVAT.FirstOrDefault().Value.Contains("|")) { actualPaymentAmountWithoutVAT = Convert.ToDouble(bitrixApplicationForPayment.ActualPaymentAmountWithoutVAT.FirstOrDefault().Value.Split('|')[0].Replace(".", ",")); } else { actualPaymentAmountWithoutVAT = Convert.ToDouble(bitrixApplicationForPayment.ActualPaymentAmountWithoutVAT.FirstOrDefault().Value.Replace("руб.", "").Replace(".", ",")); } } if (actualPaymentAmountWithoutVAT != 0) { actualPaymentVAT = actualPaymentAmount - actualPaymentAmountWithoutVAT; } } string author = ""; if (String.IsNullOrEmpty(bitrixApplicationForPayment.CREATED_BY) == false) { BitrixUser bitrixUser = bitrixUserList.Where(x => x.ID == bitrixApplicationForPayment.CREATED_BY).FirstOrDefault(); //bitrixHelper.GetBitrixUserByID(bitrixApplicationForPayment.CREATED_BY); if (bitrixUser != null) { author = bitrixUser.LAST_NAME + " " + bitrixUser.NAME; } } dataTable.Rows.Add(bitrixApplicationForPayment.ID, uRegNum, urlCellValue, typeName, finResponsibilityCenter_ShortName, finResponsibilityCenter_ShortTitle, finResponsibilityCenter_Title, costSubitem_ShortName, costSubitem_Title, projectShortName, bitrixApplicationForPayment.NAME, (String.IsNullOrEmpty(bitrixApplicationForPayment.DATE_CREATE) == false) ? Convert.ToDateTime(bitrixApplicationForPayment.DATE_CREATE) as object : null, (bitrixApplicationForPayment.DeliveryDate != null) ? Convert.ToDateTime(bitrixApplicationForPayment.DeliveryDate.FirstOrDefault().Value) as object : null, paymentForm, organisationTitle, amount, amountCurrency, rateVAT, amountWithoutVAT, amountVAT, contragentTitle, documentState, (bitrixApplicationForPayment.APPROVE_DATE != null) ? Convert.ToDateTime(bitrixApplicationForPayment.APPROVE_DATE.FirstOrDefault().Value) as object : null, (String.IsNullOrEmpty(financialYear) == false) ? financialYear : ((String.IsNullOrEmpty(bitrixApplicationForPayment.DATE_CREATE) == false) ? Convert.ToDateTime(bitrixApplicationForPayment.DATE_CREATE).Year.ToString() : ""), (bitrixApplicationForPayment.ActualPaymentDate != null) ? Convert.ToDateTime(bitrixApplicationForPayment.ActualPaymentDate.FirstOrDefault().Value) as object : null, actualPaymentAmount, actualPaymentAmountWithoutVAT, actualPaymentVAT, actualPaymentAmountCurrency, (bitrixApplicationForPayment.PAYMENT_COMPLETED_DATE != null) ? Convert.ToDateTime(bitrixApplicationForPayment.PAYMENT_COMPLETED_DATE.FirstOrDefault().Value) as object : null, author); SetStatus(5 + 93 * j / bitrixApplicationForPaymentListSorted.Count, "Добавление заявки в выборку: " + ((String.IsNullOrEmpty(uRegNum) == false) ? uRegNum : "ID: " + bitrixApplicationForPayment.ID.ToString())); j++; } SetStatus(98, "Формирование файла MS Excel..."); string reportTitle = "Выгрузка данных о расходах из Б24 за период: " + periodStart.ToString("yyyy-MM-dd") + " - " + periodEnd.ToString("yyyy-MM-dd"); using (MemoryStream stream = new MemoryStream()) { using (SpreadsheetDocument doc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookPart = ExcelHelper.CreateWorkbookPart(doc, "Отчет"); WorksheetPart rId1 = ExcelHelper.CreateWorksheetPartAndImportDataTable(workbookPart, "rId1", 1, 1, (uint)dataTable.Columns.Count, reportTitle, dataTable, 3, 1); doc.WorkbookPart.Workbook.Save(); } stream.Position = 0; BinaryReader b = new BinaryReader(stream); binData = b.ReadBytes((int)stream.Length); } SetStatus(100, "Отчет сформирован"); } catch (Exception e) { SetStatus(-1, "Ошибка: " + e.Message.Replace("\r", "").Replace("\n", " ")); htmlErrorReport += "<br>" + e.Message + "<br>" + e.StackTrace + "<br>" + e.TargetSite.ToString(); } return(new ReportGeneratorResult() { fileId = id, fileBinData = binData, htmlErrorReport = htmlErrorReport }); }