private async Task <object> DohRecord(s_lev lev, dynamic objIP, dynamic obj, ImportParam importParam) { bool ok = false; DateTime?date = null; decimal summa = 0.0M; if (obj.TYPE_KBK == "20") { if (obj.Marker == "IPSTBK_E") { lev = await _dohodDbContext.IdentLevelOnNameBudget((string)obj.NAME_BUD); } if (lev != null) { var oktmopp = lev?.Oktmo ?? ""; var oktmo = GetOktmo(oktmopp.Substr(0, 8), importParam); // Для IP пока не фильтруем по m.o.idOkato = 0 //if (oktmo != null) //{ ok = true; date = objIP.DATE_OTCH; summa = (decimal)obj.SUM_POST_DATE; //} } } return(ok, date, summa); }
private async Task <object> DohRecord(s_lev lev, dynamic objSE, dynamic obj, ImportParam importParam) { bool ok = false; DateTime?date = null; decimal summa = 0.0M; if (obj.TYPE_KBK == "20" && lev != null) { var oktmopp = lev?.Oktmo ?? ""; var oktmo = GetOktmo(oktmopp.Substr(0, 8), importParam); // Для SE не фильтруем по m.o.idOkato = 0 он уже из lev //if (oktmo != null) //{ ok = true; date = objSE.DATE_SP; if (obj.Marker == "SPOST") { summa = (decimal)obj.SUM_POST; } else if (obj.Marker == "SVIP") { summa = (decimal)obj.SUM_VIP; } //} } return(ok, date, summa); }
public async Task <object> PreviewFormat(object doc, ImportParam importParam) { dynamic objIP = null; decimal summa = 0.0M; s_lev lev = null; var reccount = 0; var writecount = 0; DateTime datemin = default(DateTime); DateTime datemax = default(DateTime); foreach (dynamic obj in (List <ExpandoObject>)doc) { if (obj.Marker == "IP") { objIP = obj; lev = await _dohodDbContext.IdentLevelOnSchet((string)objIP.BS); } else if (obj.Marker == "IPSTBK_E_KBK" && objIP != null) { reccount++; if (!OkSchet()) { continue; } (bool ok, DateTime? date, decimal summa)rec = await DohRecord(lev, objIP, obj, importParam); if (!rec.ok) { continue; } writecount++; (datemin, datemax) = rec.date.GetMinMax(datemin, datemax); summa += rec.summa; } else if (obj.Marker == "IPSTBK_E" && objIP != null) { reccount++; if (OkSchet()) { continue; } (bool ok, DateTime? date, decimal summa)rec = await DohRecord(lev, objIP, obj, importParam); if (!rec.ok) { continue; } writecount++; (datemin, datemax) = rec.date.GetMinMax(datemin, datemax); summa += rec.summa; } } return(InfoPreviewData(doc, (bool)(objIP == null), reccount, writecount, summa, datemin, datemax, importParam)); bool OkSchet() => lev != null && !string.IsNullOrWhiteSpace(lev.Inn) && !string.IsNullOrWhiteSpace(lev.Kpp); }
public async Task <object> ParserFormat(object doc, ImportParam importParam) { await DeleteTheFileData(importParam); var dohods = new List <t_dohod>(); dynamic objSE = null; s_lev lev = null; foreach (dynamic obj in (List <ExpandoObject>)doc) { switch (obj.Marker) { case "SE": objSE = obj; lev = await _dohodDbContext.IdentLevelOnSchet((string)objSE.BS_UFK); break; case "SPOST": case "SVIP": if (objSE == null) { continue; } if (!OkSchet()) { continue; } var dohod = await DohRecord(lev, objSE, obj, importParam); dohod = await ChechRecord(dohod, importParam); if (dohod == null) { continue; } dohods.Add(dohod); break; } } return(dohods); bool OkSchet() => lev != null && !string.IsNullOrWhiteSpace(lev.Inn) && !string.IsNullOrWhiteSpace(lev.Kpp); }
private async Task <object> DohRecord(s_lev lev, dynamic objCE, dynamic objCED, ImportParam importParam) { bool ok = false; DateTime?date = null; decimal summa = 0.0M; if (objCED.TYPE_KBK == "20" && lev != null) { var oktmopp = lev?.Oktmo ?? ""; var oktmo = GetOktmo(oktmopp.Substr(0, 8), importParam); // Для CE не фильтруем по m.o.idOkato = 0 он уже из lev //if (oktmo != null) //{ ok = true; date = objCE.DATE_OTCH; var sumPost = (decimal)objCED.SUM_POST; var sumVib = (decimal)objCED.SUM_VIP; summa = sumPost - sumVib; //} } return(ok, date, summa); }
public async Task WriteLev(List <ExpandoObject> lst) { _dohodDbContext.TruncateDbTable(typeof(s_lev).Name); foreach (dynamic obj in lst) { var lev = new s_lev(); lev.Sysid = (int)obj.SYSID; lev.NomLevel = (int)obj.LEV_NOM; lev.FldSumName = obj.FLDSUMNAME; lev.Inn = obj.INN; lev.Kpp = obj.KPP; lev.Name = obj.NAME; lev.Schet = obj.SCHET; lev.Oktmo = obj.OKTMO; lev.NameBudg = obj.NAMEBUDG; FillAppEditFields(obj, lev); await _dohodDbContext.s_lev.AddAsync(lev); } await _dohodDbContext.SaveChangesAsync(); }
private async Task <t_dohod> DohRecord(s_lev lev, dynamic objSE, dynamic obj, ImportParam importParam) { t_dohod dohod = new t_dohod(); t_dohorig dohorig = new t_dohorig(); if (obj.TYPE_KBK != "20") { return(null); } if (lev == null) { return(null); } // вспомогательные var oktmopp = lev?.Oktmo ?? ""; // Для IP пока не фильтруем по m.o.idOkato = 0 var oktmo = GetOktmo(oktmopp.Substr(0, 8), importParam); // dohorig dohorig.Oktmo = oktmo?.Oktmo; dohorig.OktmoPp = oktmopp; // (поле 105)* dohorig.Kbk = obj.KBK; dohorig.KbkPp = obj.KBK; // (поле 104)* dohorig.CodeCeli = obj.ADD_KLASS; dohorig.Inn = ""; dohorig.Kpp = ""; dohorig.PlatName = ""; dohorig.Rs = lev?.Schet ?? ""; dohorig.Bic = ""; dohorig.BankName = ""; // dohod dohod.DateOper = objSE.DATE_SP; dohod.Date = dohod.DateOper; // _dohodDbContext.GetSkipedWorkDay(dohod.DateOper ?? default(DateTime), importParam.DaysToSkip); dohod.NumPp = ""; dohod.DatePp = dohod.DateOper; dohod.NumZf = null; dohod.DateZf = null; dohod.OktmoId = oktmo?.Sysid; dohod.KbkId = (await _dohodDbContext.IdentKbk(dohorig.Kbk)).Sysid; dohod.CodeCeliId = (await _dohodDbContext.IdentKceli(dohorig.CodeCeli))?.Sysid; dohod.PlatId = null; dohod.IsRaschet = false; // ДЛЯ IP dohod.IsSumRazb = true; // true - Нестандартная разбивка по бюджетам - Разбивку не производим - только зануляем суммы по бюджетам if (obj.Marker == "SPOST") { dohod.SumItg = (decimal)obj.SUM_POST; } else if (obj.Marker == "SVIP") { dohod.SumItg = (decimal)obj.SUM_VIP; } dohod.ImnsInn = lev == null ? "" : lev.Inn; dohod.ImnsKpp = lev == null ? "" : lev.Kpp; dohod.LsAdb = ""; dohod.OsnPlat = ""; // (поле 106)* dohod.CodeVidOper = ""; dohod.VidOper = ""; dohod.NaznPlat = ""; // Назначение платежа dohod.ImportFile = importParam.FileName; dohod.IsNp = dohorig.Kbk.IsNpCode(); dohod.IsVoz = false; dohod.IsItg = false; dohod.LinkNp = null; dohod.LinkVoz = null; dohod.LinkItg = null; dohod.Guid = ""; dohod.VidDoc = VidDoc.SE; // dohod.Orig = dohorig; await _dohodDbContext.RazbivkaItogSum(dohod); return(dohod); }
public async Task <object> ParserFormat(object doc, ImportParam importParam) { await DeleteTheFileData(importParam); var dohods = new List <t_dohod>(); dynamic objIP = null; s_lev lev = null; foreach (dynamic obj in (List <ExpandoObject>)doc) { switch (obj.Marker) { case "IP": objIP = obj; lev = await _dohodDbContext.IdentLevelOnSchet((string)objIP.BS); break; case "IPSTBK_E_KBK": if (objIP == null) { continue; } if (!OkSchet()) { continue; } // Все разбито и используем "IPSTBK_E_KBK" var dohod1 = await DohRecord(lev, objIP, obj, importParam); dohod1 = await ChechRecord(dohod1, importParam); if (dohod1 == null) { continue; } dohods.Add(dohod1); break; case "IPSTBK_E": if (objIP == null) { continue; } if (OkSchet()) { continue; } // НЕ разбито по поселениям - будем использовать "IPSTBK_E" var dohod2 = await DohRecord(lev, objIP, obj, importParam); dohod2 = await ChechRecord(dohod2, importParam); if (dohod2 == null) { continue; } dohods.Add(dohod2); break; default: break; } } return(dohods); bool OkSchet() => lev != null && !string.IsNullOrWhiteSpace(lev.Inn) && !string.IsNullOrWhiteSpace(lev.Kpp); }