Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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();
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }