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); } }