Esempio n. 1
0
        private void SummarizeMeisaiTable()
        {
            query.KamokuKubunSummary tougetsuSummary = new KamokuKubunSummary(db);
            {
                DateTime startDate = StartDate;
                DateTime endDate   = EndDate;
                tougetsuSummary.Calc(startDate, endDate, KaikeiKubun, addKurikoshi: false, addPairedShikinDenpyou: false);
            }

            query.KamokuKubunSummary zengetsuZandaka = new KamokuKubunSummary(db);
            {
                DateTime startDate = new DateTime(StartDate.Year, 4, 1);
                DateTime endDate   = StartDate.AddDays(-1);
                if (startDate.Month < 4)
                {
                    startDate = startDate.AddYears(-1);
                }

                // 前月残高の計算では、資金と事業の伝票を合計するので、支払資金の伝票は無視する
                zengetsuZandaka.Calc(startDate, endDate, KaikeiKubun, addKurikoshi: true, addPairedShikinDenpyou: false);
            }

            foreach (MeisaiRow meisaiRow in meisaiList)
            {
                long zouka;
                long gensyou;
                meisaiRow.KisyuZandaka = zengetsuZandaka.SummaryItem(meisaiRow.KamokuKubunId).GetTaisyaku(db);

                models.db.Row kanjouKamokuRow = db.MTKanjouKamoku.GetRowFromKamokuKubun(meisaiRow.KamokuKubunId);

                int taisyakuKubunId = (int)kanjouKamokuRow.GetLong("taisyaku_kubun_id", -1);

                if (taisyakuKubunId == (int)models.constants.MTTaisyakuKubun.KariPlus || taisyakuKubunId == (int)models.constants.MTTaisyakuKubun.KariMinus)
                {
                    zouka   = tougetsuSummary.SummaryItem(meisaiRow.KamokuKubunId).KarikataAmount;
                    gensyou = tougetsuSummary.SummaryItem(meisaiRow.KamokuKubunId).KashikataAmount;
                }
                else
                {
                    zouka   = tougetsuSummary.SummaryItem(meisaiRow.KamokuKubunId).KashikataAmount;
                    gensyou = tougetsuSummary.SummaryItem(meisaiRow.KamokuKubunId).KarikataAmount;
                }
                meisaiRow.ToukiZouka1    = zouka;
                meisaiRow.ToukiZouka2    = 0;
                meisaiRow.MokutekiShiyou = gensyou;
                meisaiRow.Sonota1        = 0;
                meisaiRow.Sonota2        = 0;

                SumRow.AddMeisai(meisaiRow);
            }
        }
Esempio n. 2
0
        public void Calc(int year, int hoseiKaisuu, int kaikeiKubun)
        {
            Year        = year;
            HoseiKaisuu = hoseiKaisuu;
            KaikeiKubun = kaikeiKubun;

            summaryRows        = new List <YosanJissekiRow>();
            yosanTable         = new YosanTable(db, year, year - 1, 0, hoseiKaisuu);
            kamokuKubunSummary = new KamokuKubunSummary(db);

            yosanTable.Calc(withSyoukubun: true, withHojokamoku: true);
            kamokuKubunSummary.Calc(helper.Helper.GetNenndoKisanbi(year), helper.Helper.GetNenndoKimatsubi(year), kaikeiKubun, addKurikoshi: false, addPairedShikinDenpyou: true);

            CalcSummaryRows();
        }
Esempio n. 3
0
        public void Calc(models.db.KaikeiDatabase db, int currentYear, int lastYear, int hoseiKaisuu, int kaikeiKubun, bool withJisseki, bool withSyoukubun, bool withHojoKamoku)
        {
            YosanTable = new models.query.YosanTable(db, currentYear, lastYear, 0, hoseiKaisuu);
            YosanTable.Calc(withSyoukubun: withSyoukubun, withHojokamoku: withHojoKamoku);

            if (kaikeiKubun == -1)
            {
                kaikeiKubun = db.MTKaikeiKubun.RootNodeId;
            }

            KaikeiKubunList = new List <int>();
            KaikeiKubunList.Add(kaikeiKubun);

            ChildKaikeiKubunNameList = new List <string>();

            foreach (var row in db.MTKaikeiKubun.Select("where parent_id = " + kaikeiKubun + " order by kubun_code"))
            {
                int childKaikeiKubun = (int)row.GetLong("id", -1);
                KaikeiKubunList.Add(childKaikeiKubun);
                ChildKaikeiKubunNameList.Add(row.GetStr("name"));
            }

            YosanUchiwakeRowList = new List <YosanUchiwakeRow>();
            for (int colCt = 0; colCt < KaikeiKubunList.Count; colCt++)
            {
                var yosanList = YosanTable.GetYosanList(KaikeiKubunList[colCt]);
                KamokuKubunSummary kamokuKubunSummary = null;

                if (withJisseki)
                {
                    kamokuKubunSummary = new KamokuKubunSummary(db);
                    kamokuKubunSummary.Calc(helper.Helper.GetNenndoKisanbi(currentYear), helper.Helper.GetNenndoKimatsubi(currentYear), kaikeiKubun, addKurikoshi: false, addPairedShikinDenpyou: true);
                }

                for (int rowCt = 0; rowCt < yosanList.Count; rowCt++)
                {
                    if (YosanUchiwakeRowList.Count <= rowCt)
                    {
                        YosanUchiwakeRowList.Add(new YosanUchiwakeRow());
                    }
                    var row = YosanUchiwakeRowList[rowCt];
                    row.DaikubunId = yosanList[rowCt].DaikubunId;
                    row.KubunId    = yosanList[rowCt].KubunId;
                    row.DetailName = yosanList[rowCt].DetailName;// db.MTKamokuKubun.GetRowFromCache((int)yosanList[rowCt].DetailKubunId).GetStr("name");

                    int kamokuKubunId = (int)yosanList[rowCt].DetailKubunId;

                    long jisseki        = 0;
                    long jissekiDisplay = 0;

                    if (withJisseki)
                    {
                        jissekiDisplay = kamokuKubunSummary.SummaryItem(kamokuKubunId).GetTaisyaku(db);
                        if (yosanList[rowCt].DisplayOnly == false)
                        {
                            jisseki = jissekiDisplay;
                        }
                    }

                    switch (colCt)
                    {
                    case 0:
                        row.YosanSummaryDisplay   = yosanList[rowCt].YosanHonnenDisplay;
                        row.YosanSummary          = yosanList[rowCt].YosanHonnen;
                        row.JissekiSummaryDisplay = jissekiDisplay;
                        row.JissekiSummary        = jisseki;
                        row.SagakuSummaryDisplay  = row.YosanSummaryDisplay - row.JissekiSummaryDisplay;
                        row.SagakuSummary         = row.YosanSummary - row.JissekiSummary;
                        break;

                    case 1:
                        row.Yosan0Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan0          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki0Display = jissekiDisplay;
                        row.Jisseki0        = jisseki;
                        row.Sagaku0Display  = row.Yosan0Display - row.Jisseki0Display;
                        row.Sagaku0         = row.Yosan0 - row.Jisseki0;
                        break;

                    case 2:
                        row.Yosan1Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan1          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki1Display = jissekiDisplay;
                        row.Jisseki1        = jisseki;
                        row.Sagaku1Display  = row.Yosan1Display - row.Jisseki1Display;
                        row.Sagaku1         = row.Yosan1 - row.Jisseki1;
                        break;

                    case 3:
                        row.Yosan2Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan2          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki2Display = jissekiDisplay;
                        row.Jisseki2        = jisseki;
                        row.Sagaku2Display  = row.Yosan2Display - row.Jisseki2Display;
                        row.Sagaku2         = row.Yosan2 - row.Jisseki2;
                        break;

                    case 4:
                        row.Yosan3Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan3          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki3Display = jissekiDisplay;
                        row.Jisseki3        = jisseki;
                        row.Sagaku3Display  = row.Yosan3Display - row.Jisseki3Display;
                        row.Sagaku3         = row.Yosan3 - row.Jisseki3;
                        break;

                    case 5:
                        row.Yosan4Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan4          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki4Display = jissekiDisplay;
                        row.Jisseki4        = jisseki;
                        row.Sagaku4Display  = row.Yosan4Display - row.Jisseki4Display;
                        row.Sagaku4         = row.Yosan4 - row.Jisseki4;
                        break;

                    case 6:
                        row.Yosan5Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan5          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki5Display = jissekiDisplay;
                        row.Jisseki5        = jisseki;
                        row.Sagaku5Display  = row.Yosan5Display - row.Jisseki5Display;
                        row.Sagaku5         = row.Yosan5 - row.Jisseki5;
                        break;

                    case 7:
                        row.Yosan6Display   = yosanList[rowCt].YosanHonnenDisplay;
                        row.Yosan6          = yosanList[rowCt].YosanHonnen;
                        row.Jisseki6Display = jissekiDisplay;
                        row.Jisseki6        = jisseki;
                        row.Sagaku6Display  = row.Yosan6Display - row.Jisseki6Display;
                        row.Sagaku6         = row.Yosan6 - row.Jisseki6;
                        break;
                    }
                }
            }
        }
        public void Calc(int kaikeiKubun, DateTime targetMonth, bool chukubunOnly_)
        {
            chukubunOnly = chukubunOnly_;
            InitRowList();

            query.KamokuKubunSummary tougetsuSummary = new KamokuKubunSummary(db);
            {
                DateTime startDate = new DateTime(targetMonth.Year, targetMonth.Month, 1);
                DateTime endDate   = new DateTime(targetMonth.Year, targetMonth.Month, 1).AddMonths(1).AddDays(-1);

                // 当月の計算では、資金と事業の伝票を別々に合計するので、支払資金の伝票も合計する
                tougetsuSummary.Calc(startDate, endDate, kaikeiKubun, addKurikoshi: false, addPairedShikinDenpyou: true);
            }

            query.KamokuKubunSummary zengetsuZandaka = new KamokuKubunSummary(db);
            {
                DateTime startDate = new DateTime(targetMonth.Year, 4, 1);
                DateTime endDate   = new DateTime(targetMonth.Year, targetMonth.Month, 1).AddDays(-1);
                if (targetMonth.Month < 4)
                {
                    startDate = startDate.AddYears(-1);
                }

                // 前月残高の計算では、資金と事業の伝票を合計するので、支払資金の伝票は無視する
                zengetsuZandaka.Calc(startDate, endDate, kaikeiKubun, addKurikoshi: true, addPairedShikinDenpyou: false);
            }

            ShisanRow shisanRowSum         = new ShisanRow();
            ShisanRow husaiJunshisanRowSum = new ShisanRow();

            for (int i = 0; i < RowList.Count; i++)
            {
                ShisanRow     shisanRow        = RowList[i];
                models.db.Row kanjouKamokuRow  = db.MTKanjouKamoku.GetFirstRow("where id = " + shisanRow.KanjouKamokuId);
                int           jigyouKamokuId   = (int)kanjouKamokuRow.GetLong("jigyou_kamoku_kubun_id", -1);
                int           shikinKamokuId   = (int)kanjouKamokuRow.GetLong("shikin_kamoku_kubun_id", -1);
                int           taisyakuKamokuId = (int)kanjouKamokuRow.GetLong("taisyaku_kamoku_kubun_id", -1);

                KamokuKubunSummary.SummaryRow zengetsuJigyouRow   = zengetsuZandaka.SummaryItem(jigyouKamokuId);
                KamokuKubunSummary.SummaryRow tougetsuJigyouRow   = tougetsuSummary.SummaryItem(jigyouKamokuId);
                KamokuKubunSummary.SummaryRow zengetsuShikinRow   = zengetsuZandaka.SummaryItem(shikinKamokuId);
                KamokuKubunSummary.SummaryRow tougetsuShikinRow   = tougetsuSummary.SummaryItem(shikinKamokuId);
                KamokuKubunSummary.SummaryRow zengetsuTaisyakuRow = zengetsuZandaka.SummaryItem(taisyakuKamokuId);
                KamokuKubunSummary.SummaryRow tougetsuTaisyakuRow = tougetsuSummary.SummaryItem(taisyakuKamokuId);

                KamokuKubunSummary.SummaryRow zengetsuSumRow = new KamokuKubunSummary.SummaryRow(0, 0, 0);
                zengetsuSumRow.AddAmount(zengetsuJigyouRow);
                zengetsuSumRow.AddAmount(zengetsuShikinRow);
                zengetsuSumRow.AddAmount(zengetsuTaisyakuRow);

                KamokuKubunSummary.SummaryRow tougetsuShikinAndTaisyakuRow = new KamokuKubunSummary.SummaryRow(0, 0, 0);
                tougetsuShikinAndTaisyakuRow.AddAmount(tougetsuShikinRow);
                tougetsuShikinAndTaisyakuRow.AddAmount(tougetsuTaisyakuRow);

                KamokuKubunSummary.SummaryRow tougetsuJigyouAndTaisyakuRow = new KamokuKubunSummary.SummaryRow(0, 0, 0);
                tougetsuJigyouAndTaisyakuRow.AddAmount(tougetsuJigyouRow);
                tougetsuJigyouAndTaisyakuRow.AddAmount(tougetsuTaisyakuRow);

                if (shisanRow.KanjouKamokuId == (int)models.constants.MTKanjouKamoku.JikiKurikoshikatsudouZougenSagaku)
                {
                    continue;
                }

                if (shisanRow.TaisyakuKubun == (int)models.constants.MTTaisyakuKubun.KariPlus ||
                    shisanRow.TaisyakuKubun == (int)models.constants.MTTaisyakuKubun.KariMinus)
                {
                    shisanRow.ZengetsuKarikata = zengetsuSumRow.KarikataAmount - zengetsuSumRow.KashikataAmount;
                    if (shisanRow.IsShikinKamoku)
                    {
                        shisanRow.ShikinZandakaKarikata = tougetsuShikinAndTaisyakuRow.KarikataAmount
                                                          - tougetsuShikinAndTaisyakuRow.KashikataAmount
                                                          + shisanRow.ZengetsuKarikata;
                    }
                    if (shisanRow.IsJigyouKamoku)
                    {
                        shisanRow.JigyouZandakaKarikata = tougetsuJigyouAndTaisyakuRow.KarikataAmount
                                                          - tougetsuJigyouAndTaisyakuRow.KashikataAmount
                                                          + shisanRow.ZengetsuKarikata;
                    }
                }
                else
                {
                    shisanRow.ZengetsuKashikata = zengetsuSumRow.KashikataAmount - zengetsuSumRow.KarikataAmount;
                    if (shisanRow.IsShikinKamoku)
                    {
                        shisanRow.ShikinZandakaKashikata = tougetsuShikinAndTaisyakuRow.KashikataAmount
                                                           - tougetsuShikinAndTaisyakuRow.KarikataAmount
                                                           + shisanRow.ZengetsuKashikata;
                    }
                    if (shisanRow.IsJigyouKamoku)
                    {
                        shisanRow.JigyouZandakaKashikata = tougetsuJigyouAndTaisyakuRow.KashikataAmount
                                                           - tougetsuJigyouAndTaisyakuRow.KarikataAmount
                                                           + shisanRow.ZengetsuKashikata;
                    }
                }
                if (shisanRow.IsShikinKamoku)
                {
                    shisanRow.ShikinTougetsuKashikata = tougetsuShikinAndTaisyakuRow.KashikataAmount;
                    shisanRow.ShikinTougetsuKarikata  = tougetsuShikinAndTaisyakuRow.KarikataAmount;
                }
                if (shisanRow.IsJigyouKamoku)
                {
                    shisanRow.JigyouTougetsuKashikata = tougetsuJigyouAndTaisyakuRow.KashikataAmount;
                    shisanRow.JigyouTougetsuKarikata  = tougetsuJigyouAndTaisyakuRow.KarikataAmount;
                }

                shisanRow.SetDisplayData(isDisplayOnly: shisanRow.KanjouKamokuHierarchy != (int)models.constants.MTKanjouKamokuHierarchy.ChuuKubun);

                // 次期繰越活動収支差額の計算のために合計を計算する
                if (shisanRow.GroupId == GroupIdShisan)
                {
                    shisanRowSum.Add(shisanRow);
                }
                else if (shisanRow.GroupId == GroupIdHusaiJunsisan)
                {
                    husaiJunshisanRowSum.Add(shisanRow);
                }
            }

            { // 次期繰越活動収支差額
                ShisanRow kurikoshi = RowList[jikiKurikoshiIndex];

                kurikoshi.ZengetsuKashikata       = shisanRowSum.ZengetsuKarikata - husaiJunshisanRowSum.ZengetsuKashikata;
                kurikoshi.ShikinTougetsuKashikata = (shisanRowSum.ShikinTougetsuKarikata - shisanRowSum.ShikinTougetsuKashikata)
                                                    - (husaiJunshisanRowSum.ShikinTougetsuKashikata - husaiJunshisanRowSum.ShikinTougetsuKarikata);
                kurikoshi.ShikinZandakaKashikata = shisanRowSum.ShikinZandakaKarikata - husaiJunshisanRowSum.ShikinZandakaKashikata;

                kurikoshi.JigyouTougetsuKashikata = (shisanRowSum.JigyouTougetsuKarikata - shisanRowSum.JigyouTougetsuKashikata)
                                                    - (husaiJunshisanRowSum.JigyouTougetsuKashikata - husaiJunshisanRowSum.JigyouTougetsuKarikata);
                kurikoshi.JigyouZandakaKashikata = shisanRowSum.JigyouZandakaKarikata - husaiJunshisanRowSum.JigyouZandakaKashikata;
            }
        }