Esempio n. 1
0
        private void CalcSummaryRows()
        {
            int rootId = (int)models.constants.MTKamokuKubun.ShikinRoot;
            Dictionary <int, int> kubunId2summaryRowsIndex = new Dictionary <int, int>();

            foreach (var kubunRow in db.MTKamokuKubun.SelectChildren(rootId, order:"order by display_order"))
            {
                int kubunId = kubunRow.GetId();
                summaryRows.Add(new YosanJissekiRow(kubunId, null, 0, 0, db));
                kubunId2summaryRowsIndex[kubunId] = summaryRows.Count - 1;
            }

            SyuunyuuGoukeiRow = new YosanJissekiRow(SummaryKubunIdSyuunyuuGoukei, "収入合計", 0, 0, db);
            summaryRows.Add(SyuunyuuGoukeiRow);

            ShisyutsuGoukeiRow = new YosanJissekiRow(SummaryKubunIdShisyutsuGoukei, "支出合計", 0, 0, db);
            summaryRows.Add(ShisyutsuGoukeiRow);

            SyuushiGoukeiRow = new YosanJissekiRow(SummaryKubunIdSyuushiGoukei, "収支合計", 0, 0, db);
            summaryRows.Add(SyuushiGoukeiRow);

            foreach (var yosanRow in yosanTable.GetYosanList(KaikeiKubun))
            {
                int  kubunId  = (int)yosanRow.KubunId;
                int  kamokuId = (int)yosanRow.DetailKubunId;
                int  index    = kubunId2summaryRowsIndex[kubunId];
                long yosan    = yosanRow.YosanHonnenDisplay;
                long jisseki  = kamokuKubunSummary.SummaryItem(kamokuId).GetTaisyaku(db);;

                if (yosanRow.DisplayOnly)
                {
                    continue;
                }

                if (db.MTKamokuKubun.IsSyuunyuuKamoku(kubunId))
                {
                    SyuunyuuGoukeiRow.AddYosan(yosan);
                    SyuunyuuGoukeiRow.AddJisseki(jisseki);
                    SyuushiGoukeiRow.AddYosan(yosan);
                    SyuushiGoukeiRow.AddJisseki(jisseki);
                }
                else
                {
                    ShisyutsuGoukeiRow.AddYosan(yosan);
                    ShisyutsuGoukeiRow.AddJisseki(jisseki);
                    SyuushiGoukeiRow.AddYosan(-yosan);
                    SyuushiGoukeiRow.AddJisseki(-jisseki);
                }

                summaryRows[index].AddYosan(yosan);
                summaryRows[index].AddJisseki(jisseki);
            }
        }