@rubydogjp/openkk-client-domain 26.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/archive/fiscal-period-archive.d.ts +38 -0
  2. package/dist/archive/fiscal-period-archive.d.ts.map +1 -0
  3. package/dist/archive/fiscal-period-archive.js +276 -0
  4. package/dist/archive/fiscal-period-archive.js.map +1 -0
  5. package/dist/assist/fixed-asset-data.d.ts +32 -0
  6. package/dist/assist/fixed-asset-data.d.ts.map +1 -0
  7. package/dist/assist/fixed-asset-data.js +2 -0
  8. package/dist/assist/fixed-asset-data.js.map +1 -0
  9. package/dist/assist/fixed-asset-depreciation.d.ts +27 -0
  10. package/dist/assist/fixed-asset-depreciation.d.ts.map +1 -0
  11. package/dist/assist/fixed-asset-depreciation.js +66 -0
  12. package/dist/assist/fixed-asset-depreciation.js.map +1 -0
  13. package/dist/assist/opening-carryover.d.ts +21 -0
  14. package/dist/assist/opening-carryover.d.ts.map +1 -0
  15. package/dist/assist/opening-carryover.js +2 -0
  16. package/dist/assist/opening-carryover.js.map +1 -0
  17. package/dist/entries/default-master-data.d.ts +3 -0
  18. package/dist/entries/default-master-data.d.ts.map +1 -0
  19. package/dist/entries/default-master-data.js +17 -0
  20. package/dist/entries/default-master-data.js.map +1 -0
  21. package/dist/entries/entries-types.d.ts +30 -0
  22. package/dist/entries/entries-types.d.ts.map +1 -0
  23. package/dist/entries/entries-types.js +2 -0
  24. package/dist/entries/entries-types.js.map +1 -0
  25. package/dist/entries/entry-record.d.ts +53 -0
  26. package/dist/entries/entry-record.d.ts.map +1 -0
  27. package/dist/entries/entry-record.js +180 -0
  28. package/dist/entries/entry-record.js.map +1 -0
  29. package/dist/entries/example-entries.d.ts +7 -0
  30. package/dist/entries/example-entries.d.ts.map +1 -0
  31. package/dist/entries/example-entries.js +97 -0
  32. package/dist/entries/example-entries.js.map +1 -0
  33. package/dist/entries/generated-master-data.d.ts +26 -0
  34. package/dist/entries/generated-master-data.d.ts.map +1 -0
  35. package/dist/entries/generated-master-data.js +2211 -0
  36. package/dist/entries/generated-master-data.js.map +1 -0
  37. package/dist/entries/import-export.d.ts +13 -0
  38. package/dist/entries/import-export.d.ts.map +1 -0
  39. package/dist/entries/import-export.js +319 -0
  40. package/dist/entries/import-export.js.map +1 -0
  41. package/dist/entries/quick-guide-data.d.ts +32 -0
  42. package/dist/entries/quick-guide-data.d.ts.map +1 -0
  43. package/dist/entries/quick-guide-data.js +513 -0
  44. package/dist/entries/quick-guide-data.js.map +1 -0
  45. package/dist/entries/virtual-entries.d.ts +58 -0
  46. package/dist/entries/virtual-entries.d.ts.map +1 -0
  47. package/dist/entries/virtual-entries.js +414 -0
  48. package/dist/entries/virtual-entries.js.map +1 -0
  49. package/dist/index.d.ts +34 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +34 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/print/examples/financial-statements-example.d.ts +5 -0
  54. package/dist/print/examples/financial-statements-example.d.ts.map +1 -0
  55. package/dist/print/examples/financial-statements-example.js +246 -0
  56. package/dist/print/examples/financial-statements-example.js.map +1 -0
  57. package/dist/print/examples/general-ledger-example.d.ts +5 -0
  58. package/dist/print/examples/general-ledger-example.d.ts.map +1 -0
  59. package/dist/print/examples/general-ledger-example.js +10 -0
  60. package/dist/print/examples/general-ledger-example.js.map +1 -0
  61. package/dist/print/examples/journal-example.d.ts +4 -0
  62. package/dist/print/examples/journal-example.d.ts.map +1 -0
  63. package/dist/print/examples/journal-example.js +16 -0
  64. package/dist/print/examples/journal-example.js.map +1 -0
  65. package/dist/print/financial-statements-print.d.ts +10 -0
  66. package/dist/print/financial-statements-print.d.ts.map +1 -0
  67. package/dist/print/financial-statements-print.js +223 -0
  68. package/dist/print/financial-statements-print.js.map +1 -0
  69. package/dist/print/fs-data.d.ts +37 -0
  70. package/dist/print/fs-data.d.ts.map +1 -0
  71. package/dist/print/fs-data.js +348 -0
  72. package/dist/print/fs-data.js.map +1 -0
  73. package/dist/print/general-ledger-print.d.ts +10 -0
  74. package/dist/print/general-ledger-print.d.ts.map +1 -0
  75. package/dist/print/general-ledger-print.js +250 -0
  76. package/dist/print/general-ledger-print.js.map +1 -0
  77. package/dist/print/journal-print.d.ts +4 -0
  78. package/dist/print/journal-print.d.ts.map +1 -0
  79. package/dist/print/journal-print.js +126 -0
  80. package/dist/print/journal-print.js.map +1 -0
  81. package/dist/print/print-shell.d.ts +9 -0
  82. package/dist/print/print-shell.d.ts.map +1 -0
  83. package/dist/print/print-shell.js +28 -0
  84. package/dist/print/print-shell.js.map +1 -0
  85. package/dist/shared/app-error.d.ts +25 -0
  86. package/dist/shared/app-error.d.ts.map +1 -0
  87. package/dist/shared/app-error.js +115 -0
  88. package/dist/shared/app-error.js.map +1 -0
  89. package/dist/shared/bootstrap-data.d.ts +15 -0
  90. package/dist/shared/bootstrap-data.d.ts.map +1 -0
  91. package/dist/shared/bootstrap-data.js +150 -0
  92. package/dist/shared/bootstrap-data.js.map +1 -0
  93. package/dist/shared/brand-config.d.ts +6 -0
  94. package/dist/shared/brand-config.d.ts.map +1 -0
  95. package/dist/shared/brand-config.js +2 -0
  96. package/dist/shared/brand-config.js.map +1 -0
  97. package/dist/shared/demo-data.d.ts +15 -0
  98. package/dist/shared/demo-data.d.ts.map +1 -0
  99. package/dist/shared/demo-data.js +150 -0
  100. package/dist/shared/demo-data.js.map +1 -0
  101. package/dist/shared/models.d.ts +52 -0
  102. package/dist/shared/models.d.ts.map +1 -0
  103. package/dist/shared/models.js +2 -0
  104. package/dist/shared/models.js.map +1 -0
  105. package/dist/shared/openkk-config.d.ts +41 -0
  106. package/dist/shared/openkk-config.d.ts.map +1 -0
  107. package/dist/shared/openkk-config.js +15 -0
  108. package/dist/shared/openkk-config.js.map +1 -0
  109. package/dist/shared/parse-utils.d.ts +7 -0
  110. package/dist/shared/parse-utils.d.ts.map +1 -0
  111. package/dist/shared/parse-utils.js +43 -0
  112. package/dist/shared/parse-utils.js.map +1 -0
  113. package/dist/shared/period-lock.d.ts +9 -0
  114. package/dist/shared/period-lock.d.ts.map +1 -0
  115. package/dist/shared/period-lock.js +41 -0
  116. package/dist/shared/period-lock.js.map +1 -0
  117. package/dist/shared/sample-data.d.ts +15 -0
  118. package/dist/shared/sample-data.d.ts.map +1 -0
  119. package/dist/shared/sample-data.js +161 -0
  120. package/dist/shared/sample-data.js.map +1 -0
  121. package/dist/shared/user.d.ts +20 -0
  122. package/dist/shared/user.d.ts.map +1 -0
  123. package/dist/shared/user.js +13 -0
  124. package/dist/shared/user.js.map +1 -0
  125. package/dist/steps/next-fiscal-period.d.ts +32 -0
  126. package/dist/steps/next-fiscal-period.d.ts.map +1 -0
  127. package/dist/steps/next-fiscal-period.js +128 -0
  128. package/dist/steps/next-fiscal-period.js.map +1 -0
  129. package/dist/steps/period-check.d.ts +9 -0
  130. package/dist/steps/period-check.d.ts.map +1 -0
  131. package/dist/steps/period-check.js +23 -0
  132. package/dist/steps/period-check.js.map +1 -0
  133. package/dist/steps/step-derivation.d.ts +15 -0
  134. package/dist/steps/step-derivation.d.ts.map +1 -0
  135. package/dist/steps/step-derivation.js +38 -0
  136. package/dist/steps/step-derivation.js.map +1 -0
  137. package/dist/steps/step-trend.d.ts +17 -0
  138. package/dist/steps/step-trend.d.ts.map +1 -0
  139. package/dist/steps/step-trend.js +30 -0
  140. package/dist/steps/step-trend.js.map +1 -0
  141. package/dist/steps/summary.d.ts +24 -0
  142. package/dist/steps/summary.d.ts.map +1 -0
  143. package/dist/steps/summary.js +69 -0
  144. package/dist/steps/summary.js.map +1 -0
  145. package/dist/steps/year-month.d.ts +10 -0
  146. package/dist/steps/year-month.d.ts.map +1 -0
  147. package/dist/steps/year-month.js +26 -0
  148. package/dist/steps/year-month.js.map +1 -0
  149. package/package.json +38 -0
@@ -0,0 +1,348 @@
1
+ import { getEntryLines } from "../entries/entry-record";
2
+ import { parseAmount } from "../shared/parse-utils";
3
+ import { OPENING_EQUITY_LABELS } from "../steps/summary";
4
+ export function buildOpeningBalanceLinesFromClosingBsRows(bsRows) {
5
+ const amounts = new Map();
6
+ const fold = (accountId, amount) => {
7
+ amounts.set(accountId, (amounts.get(accountId) ?? 0) + amount);
8
+ };
9
+ const addLine = (prefix, label, amount) => {
10
+ if (label === "" || label === "合計" || amount == null)
11
+ return;
12
+ if (label === "事業主貸") {
13
+ fold("l:元入金", -amount);
14
+ return;
15
+ }
16
+ if (label === "事業主借" ||
17
+ label === "元入金" ||
18
+ label === "青色申告特別控除前の所得金額") {
19
+ fold("l:元入金", amount);
20
+ return;
21
+ }
22
+ if (amount <= 0)
23
+ return;
24
+ fold(`${prefix}:${label}`, amount);
25
+ };
26
+ for (const row of bsRows) {
27
+ addLine("a", row.assetLabel, row.assetClosing);
28
+ addLine("l", row.liabilityLabel, row.liabilityClosing);
29
+ }
30
+ return [...amounts.entries()]
31
+ .filter(([, amount]) => amount > 0)
32
+ .map(([accountId, amount]) => ({
33
+ accountId,
34
+ amount,
35
+ }));
36
+ }
37
+ function add(map, name, delta) {
38
+ if (!name)
39
+ return;
40
+ map.set(name, (map.get(name) ?? 0) + delta);
41
+ }
42
+ function sumValues(map) {
43
+ let total = 0;
44
+ for (const v of map.values())
45
+ total += v;
46
+ return total;
47
+ }
48
+ export function computeFsAggregate({ entries, openingBalanceLines, }) {
49
+ const revenueByName = new Map();
50
+ const expenseByName = new Map();
51
+ const costOfSalesByName = new Map();
52
+ const assetNetByName = new Map();
53
+ const liabilityNetByName = new Map();
54
+ const equityNetByName = new Map();
55
+ const accountType = new Map();
56
+ // 家事按分は materialize 済みの按分振替仕訳(buildBusinessRateTransferEntry)として
57
+ // entries に含まれる前提のため、ここでは生明細をそのまま集計する。
58
+ for (const e of entries) {
59
+ for (const line of getEntryLines(e)) {
60
+ const amount = parseAmount(line.amount);
61
+ accountType.set(line.accountName, line.accountType);
62
+ const sign = line.side === "debit" ? 1 : -1;
63
+ if (line.accountType === "revenue") {
64
+ add(revenueByName, line.accountName, -sign * amount);
65
+ }
66
+ if (line.accountType === "expense") {
67
+ add(expenseByName, line.accountName, sign * amount);
68
+ }
69
+ if (line.accountType === "cost_of_sales") {
70
+ add(costOfSalesByName, line.accountName, sign * amount);
71
+ }
72
+ if (line.accountType === "asset") {
73
+ add(assetNetByName, line.accountName, sign * amount);
74
+ }
75
+ if (line.accountType === "liability") {
76
+ add(liabilityNetByName, line.accountName, -sign * amount);
77
+ }
78
+ if (line.accountType === "equity") {
79
+ add(equityNetByName, line.accountName, -sign * amount);
80
+ }
81
+ }
82
+ }
83
+ const assetOpeningByName = new Map();
84
+ const liabilityOpeningByName = new Map();
85
+ const equityOpeningByName = new Map();
86
+ for (const line of openingBalanceLines) {
87
+ if (line.accountId.startsWith("a:")) {
88
+ assetOpeningByName.set(line.accountId.slice(2), line.amount);
89
+ }
90
+ else if (line.accountId.startsWith("l:")) {
91
+ const name = line.accountId.slice(2);
92
+ if (OPENING_EQUITY_LABELS.has(name))
93
+ equityOpeningByName.set(name, line.amount);
94
+ else
95
+ liabilityOpeningByName.set(name, line.amount);
96
+ }
97
+ }
98
+ function closingMap(opening, net) {
99
+ const result = new Map();
100
+ for (const [n, v] of opening)
101
+ result.set(n, v);
102
+ for (const [n, v] of net)
103
+ result.set(n, (result.get(n) ?? 0) + v);
104
+ return result;
105
+ }
106
+ const assetClosingByName = closingMap(assetOpeningByName, assetNetByName);
107
+ const liabilityClosingByName = closingMap(liabilityOpeningByName, liabilityNetByName);
108
+ const equityClosingByName = closingMap(equityOpeningByName, equityNetByName);
109
+ const revenueTotal = sumValues(revenueByName);
110
+ const costOfSalesTotal = sumValues(costOfSalesByName);
111
+ const expensesTotal = sumValues(expenseByName);
112
+ const grossProfit = revenueTotal - costOfSalesTotal;
113
+ const profit = grossProfit - expensesTotal;
114
+ const badDebtReversal = revenueByName.get("貸倒引当金戻入") ?? 0;
115
+ const badDebtProvision = expenseByName.get("貸倒引当金繰入") ?? 0;
116
+ const familyEmployeeSalary = expenseByName.get("専従者給与") ?? 0;
117
+ const salesForDisplay = revenueTotal - badDebtReversal;
118
+ const grossProfitForDisplay = salesForDisplay - costOfSalesTotal;
119
+ const operatingExpensesForDisplay = expensesTotal - badDebtProvision - familyEmployeeSalary;
120
+ const ordinaryIncomeForDisplay = grossProfitForDisplay - operatingExpensesForDisplay;
121
+ const reversalSubtotal = badDebtReversal;
122
+ const provisionSubtotal = familyEmployeeSalary + badDebtProvision;
123
+ const ALLOWANCE_FOR_DOUBTFUL = "貸倒引当金";
124
+ const allowanceOpening = liabilityOpeningByName.get(ALLOWANCE_FOR_DOUBTFUL) ?? 0;
125
+ const allowanceNet = -(assetNetByName.get(ALLOWANCE_FOR_DOUBTFUL) ?? 0);
126
+ const allowanceClosing = allowanceOpening + allowanceNet;
127
+ assetOpeningByName.delete(ALLOWANCE_FOR_DOUBTFUL);
128
+ assetClosingByName.delete(ALLOWANCE_FOR_DOUBTFUL);
129
+ liabilityOpeningByName.delete(ALLOWANCE_FOR_DOUBTFUL);
130
+ liabilityClosingByName.delete(ALLOWANCE_FOR_DOUBTFUL);
131
+ const expense = (label) => {
132
+ const v = expenseByName.get(label) ?? 0;
133
+ return v > 0 ? v : null;
134
+ };
135
+ const cost = (label, ...aliases) => {
136
+ let v = costOfSalesByName.get(label) ?? 0;
137
+ for (const a of aliases)
138
+ v += costOfSalesByName.get(a) ?? 0;
139
+ return v > 0 ? v : null;
140
+ };
141
+ const purchases = cost("仕入", "商品仕入高");
142
+ const NAMED_EXPENSE_ACCOUNTS = new Set([
143
+ "租税公課",
144
+ "荷造運賃",
145
+ "水道光熱費",
146
+ "旅費交通費",
147
+ "通信費",
148
+ "広告宣伝費",
149
+ "接待交際費",
150
+ "保険料",
151
+ "修繕費",
152
+ "消耗品費",
153
+ "減価償却費",
154
+ "福利厚生費",
155
+ "給与手当",
156
+ "外注費",
157
+ "支払利息",
158
+ "地代家賃",
159
+ "貸倒損失",
160
+ "会議費",
161
+ "雑費",
162
+ ]);
163
+ const RESERVE_AND_FAMILY_ACCOUNTS = new Set([
164
+ "専従者給与",
165
+ "貸倒引当金繰入",
166
+ ]);
167
+ const WRITE_IN_SLOT_COUNT = 4;
168
+ const writeInCandidates = [...expenseByName.entries()]
169
+ .filter(([name, value]) => value > 0 &&
170
+ !NAMED_EXPENSE_ACCOUNTS.has(name) &&
171
+ !RESERVE_AND_FAMILY_ACCOUNTS.has(name))
172
+ .sort((left, right) => right[1] - left[1]);
173
+ const expenseWriteIns = writeInCandidates
174
+ .slice(0, WRITE_IN_SLOT_COUNT)
175
+ .map(([label, amount]) => ({ label, amount }));
176
+ // スロットに収まらない任意経費は雑費へ集約し、経費合計(行32)と各行の和を一致させる。
177
+ const writeInOverflow = writeInCandidates
178
+ .slice(WRITE_IN_SLOT_COUNT)
179
+ .reduce((sum, [, value]) => sum + value, 0);
180
+ const miscTotal = (expenseByName.get("雑費") ?? 0) + writeInOverflow;
181
+ const writeInAmount = (slot) => expenseWriteIns[slot] ? expenseWriteIns[slot].amount : null;
182
+ const amounts = {
183
+ 1: salesForDisplay !== 0 ? salesForDisplay : null,
184
+ 2: null,
185
+ 3: purchases,
186
+ 4: purchases ?? 0,
187
+ 5: null,
188
+ 6: costOfSalesTotal,
189
+ 7: grossProfitForDisplay,
190
+ 8: expense("租税公課"),
191
+ 9: expense("荷造運賃"),
192
+ 10: expense("水道光熱費"),
193
+ 11: expense("旅費交通費"),
194
+ 12: expense("通信費"),
195
+ 13: expense("広告宣伝費"),
196
+ 14: expense("接待交際費"),
197
+ 15: expense("保険料"),
198
+ 16: expense("修繕費"),
199
+ 17: expense("消耗品費"),
200
+ 18: expense("減価償却費"),
201
+ 19: expense("福利厚生費"),
202
+ 20: expense("給与手当"),
203
+ 21: expense("外注費"),
204
+ 22: expense("支払利息"),
205
+ 23: expense("地代家賃"),
206
+ 24: expense("貸倒損失"),
207
+ 25: null,
208
+ 26: expense("会議費"),
209
+ 27: writeInAmount(0),
210
+ 28: writeInAmount(1),
211
+ 29: writeInAmount(2),
212
+ 30: writeInAmount(3),
213
+ 31: miscTotal > 0 ? miscTotal : null,
214
+ 32: operatingExpensesForDisplay,
215
+ 33: ordinaryIncomeForDisplay,
216
+ 34: badDebtReversal > 0 ? badDebtReversal : null,
217
+ 35: null,
218
+ 36: null,
219
+ 37: reversalSubtotal,
220
+ 38: familyEmployeeSalary > 0 ? familyEmployeeSalary : null,
221
+ 39: badDebtProvision > 0 ? badDebtProvision : null,
222
+ 40: null,
223
+ 41: null,
224
+ 42: provisionSubtotal,
225
+ 43: profit,
226
+ };
227
+ const av = (label, ...aliases) => {
228
+ let v = assetClosingByName.get(label) ?? 0;
229
+ for (const a of aliases)
230
+ v += assetClosingByName.get(a) ?? 0;
231
+ return v;
232
+ };
233
+ const oav = (label, ...aliases) => {
234
+ let v = assetOpeningByName.get(label) ?? 0;
235
+ for (const a of aliases)
236
+ v += assetOpeningByName.get(a) ?? 0;
237
+ return v;
238
+ };
239
+ const lvBoth = (closing, label, aliases) => {
240
+ let v = closing.get(label) ?? 0;
241
+ for (const a of aliases)
242
+ v += closing.get(a) ?? 0;
243
+ return v;
244
+ };
245
+ const lv = (label, ...aliases) => lvBoth(liabilityClosingByName, label, aliases) +
246
+ lvBoth(equityClosingByName, label, aliases);
247
+ const olv = (label, ...aliases) => lvBoth(liabilityOpeningByName, label, aliases) +
248
+ lvBoth(equityOpeningByName, label, aliases);
249
+ const fmtBs = (v) => (v <= 0 ? null : v);
250
+ const fmtVal = (v) => (v === 0 ? null : v);
251
+ const handledAssets = new Set([
252
+ "現金",
253
+ "当座預金",
254
+ "普通預金",
255
+ "定期預金",
256
+ "その他の預金",
257
+ "受取手形",
258
+ "売掛金",
259
+ "有価証券",
260
+ "棚卸資産",
261
+ "商品",
262
+ "前払金",
263
+ "前払費用",
264
+ "貸付金",
265
+ "建物",
266
+ "建物附属設備",
267
+ "機械装置",
268
+ "車両運搬具",
269
+ "工具器具備品",
270
+ "土地",
271
+ "事業主貸",
272
+ ]);
273
+ const extras = [...assetClosingByName.entries()].filter(([k, v]) => !handledAssets.has(k) && v !== 0);
274
+ const EXTRA_SLOT_COUNT = 6;
275
+ const EXTRA_OVERFLOW_LABEL = "その他";
276
+ const displayExtras = extras.length <= EXTRA_SLOT_COUNT
277
+ ? extras.map(([name, closing]) => ({ name, opening: oav(name), closing }))
278
+ : [
279
+ ...extras
280
+ .slice(0, EXTRA_SLOT_COUNT - 1)
281
+ .map(([name, closing]) => ({ name, opening: oav(name), closing })),
282
+ {
283
+ name: EXTRA_OVERFLOW_LABEL,
284
+ opening: extras
285
+ .slice(EXTRA_SLOT_COUNT - 1)
286
+ .reduce((sum, [name]) => sum + oav(name), 0),
287
+ closing: extras
288
+ .slice(EXTRA_SLOT_COUNT - 1)
289
+ .reduce((sum, [, value]) => sum + value, 0),
290
+ },
291
+ ];
292
+ const extraName = (i) => displayExtras[i]?.name ?? "";
293
+ const extraOpening = (i) => displayExtras[i] ? fmtBs(displayExtras[i].opening) : null;
294
+ const extraClosing = (i) => displayExtras[i] ? fmtBs(displayExtras[i].closing) : null;
295
+ const openingAssetsTotal = sumValues(assetOpeningByName);
296
+ const openingLiabsTotal = sumValues(liabilityOpeningByName) +
297
+ sumValues(equityOpeningByName) +
298
+ allowanceOpening;
299
+ const assetsTotal = sumValues(assetClosingByName);
300
+ const liabsAndEquityTotalDisplay = sumValues(liabilityClosingByName) +
301
+ sumValues(equityClosingByName) +
302
+ profit +
303
+ allowanceClosing;
304
+ const r = (al, ao, ac, ll, lo, lc) => ({
305
+ assetLabel: al,
306
+ assetOpening: ao,
307
+ assetClosing: ac,
308
+ liabilityLabel: ll,
309
+ liabilityOpening: lo,
310
+ liabilityClosing: lc,
311
+ });
312
+ const bsRows = [
313
+ r("現金", fmtBs(oav("現金")), fmtBs(av("現金")), "支払手形", fmtBs(olv("支払手形")), fmtBs(lv("支払手形"))),
314
+ r("当座預金", fmtBs(oav("当座預金")), fmtBs(av("当座預金")), "買掛金", fmtBs(olv("買掛金")), fmtBs(lv("買掛金"))),
315
+ r("定期預金", fmtBs(oav("定期預金")), fmtBs(av("定期預金")), "借入金", fmtBs(olv("借入金", "長期借入金")), fmtBs(lv("借入金", "長期借入金"))),
316
+ r("その他の預金", fmtBs(oav("その他の預金", "普通預金")), fmtBs(av("その他の預金", "普通預金")), "未払金", fmtBs(olv("未払金")), fmtBs(lv("未払金"))),
317
+ r("受取手形", fmtBs(oav("受取手形")), fmtBs(av("受取手形")), "前受金", fmtBs(olv("前受金")), fmtBs(lv("前受金"))),
318
+ r("売掛金", fmtBs(oav("売掛金")), fmtBs(av("売掛金")), "預り金", fmtBs(olv("預り金")), fmtBs(lv("預り金"))),
319
+ r("有価証券", fmtBs(oav("有価証券")), fmtBs(av("有価証券")), "", null, null),
320
+ r("棚卸資産", fmtBs(oav("棚卸資産", "商品")), fmtBs(av("棚卸資産", "商品")), "", null, null),
321
+ r("前払金", fmtBs(oav("前払金", "前払費用")), fmtBs(av("前払金", "前払費用")), "", null, null),
322
+ r("貸付金", fmtBs(oav("貸付金")), fmtBs(av("貸付金")), "", null, null),
323
+ r("建物", fmtBs(oav("建物")), fmtBs(av("建物")), "", null, null),
324
+ r("建物附属設備", fmtBs(oav("建物附属設備")), fmtBs(av("建物附属設備")), "", null, null),
325
+ r("機械装置", fmtBs(oav("機械装置")), fmtBs(av("機械装置")), "", null, null),
326
+ r("車両運搬具", fmtBs(oav("車両運搬具")), fmtBs(av("車両運搬具")), "貸倒引当金", fmtBs(allowanceOpening), fmtBs(allowanceClosing)),
327
+ r("工具器具備品", fmtBs(oav("工具器具備品")), fmtBs(av("工具器具備品")), "", null, null),
328
+ r("土地", fmtBs(oav("土地")), fmtBs(av("土地")), "", null, null),
329
+ r(extraName(0), extraOpening(0), extraClosing(0), "", null, null),
330
+ r(extraName(1), extraOpening(1), extraClosing(1), "", null, null),
331
+ r(extraName(2), extraOpening(2), extraClosing(2), "", null, null),
332
+ r(extraName(3), extraOpening(3), extraClosing(3), "", null, null),
333
+ r(extraName(4), extraOpening(4), extraClosing(4), "事業主借", fmtBs(olv("事業主借")), fmtBs(lv("事業主借"))),
334
+ r(extraName(5), extraOpening(5), extraClosing(5), "元入金", fmtBs(olv("元入金")), fmtBs(lv("元入金"))),
335
+ r("事業主貸", fmtBs(oav("事業主貸")), fmtBs(av("事業主貸")), "青色申告特別控除前の所得金額", null, fmtVal(profit)),
336
+ r("合計", fmtVal(openingAssetsTotal), fmtVal(assetsTotal), "合計", fmtVal(openingLiabsTotal), fmtVal(liabsAndEquityTotalDisplay)),
337
+ ];
338
+ const summary = {
339
+ revenue: revenueTotal,
340
+ expenses: costOfSalesTotal + expensesTotal,
341
+ profit,
342
+ assets: assetsTotal,
343
+ liabilities: sumValues(liabilityClosingByName) + allowanceClosing,
344
+ equity: sumValues(equityClosingByName) + profit,
345
+ };
346
+ return { amounts, bsRows, expenseWriteIns, summary };
347
+ }
348
+ //# sourceMappingURL=fs-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-data.js","sourceRoot":"","sources":["../../src/print/fs-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AA+BzD,MAAM,UAAU,yCAAyC,CACvD,MAA8B;IAE9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,MAAiB,EAAE,KAAa,EAAE,MAAqB,EAAE,EAAE;QAC1E,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO;QAC7D,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IACE,KAAK,KAAK,MAAM;YAChB,KAAK,KAAK,KAAK;YACf,KAAK,KAAK,gBAAgB,EAC1B,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,SAAS;QACT,MAAM;KACP,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,GAAG,CAAC,GAAwB,EAAE,IAAY,EAAE,KAAa;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,SAAS,CAAC,GAAwB;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,IAAI,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EACP,mBAAmB,GAIpB;IACC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,iEAAiE;IACjE,uCAAuC;IACvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,EAAE,CAAC;gBACzC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBACjC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAClC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAErC,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;gBACjC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;;gBACxC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CACjB,OAA4B,EAC5B,GAAwB;QAExB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,sBAAsB,GAAG,UAAU,CACvC,sBAAsB,EACtB,kBAAkB,CACnB,CAAC;IACF,MAAM,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;IAE7E,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAAC;IACpD,MAAM,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;IAC3C,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,YAAY,GAAG,eAAe,CAAC;IACvD,MAAM,qBAAqB,GAAG,eAAe,GAAG,gBAAgB,CAAC;IACjE,MAAM,2BAA2B,GAC/B,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;IAC1D,MAAM,wBAAwB,GAC5B,qBAAqB,GAAG,2BAA2B,CAAC;IACtD,MAAM,gBAAgB,GAAG,eAAe,CAAC;IACzC,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAElE,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACvC,MAAM,gBAAgB,GACpB,sBAAsB,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,YAAY,CAAC;IACzD,kBAAkB,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClD,kBAAkB,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClD,sBAAsB,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACtD,sBAAsB,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAiB,EAAE;QAC/C,MAAM,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,GAAG,OAAiB,EAAiB,EAAE;QAClE,IAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAS;QAC7C,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO;QACP,KAAK;QACL,OAAO;QACP,OAAO;QACP,KAAK;QACL,KAAK;QACL,MAAM;QACN,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,KAAK;QACL,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAS;QAClD,OAAO;QACP,SAAS;KACV,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,CAAC,CAAC;IAC9B,MAAM,iBAAiB,GAAG,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;SACnD,MAAM,CACL,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAChB,KAAK,GAAG,CAAC;QACT,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,CACzC;SACA,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,iBAAiB;SACtC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,8CAA8C;IAC9C,MAAM,eAAe,GAAG,iBAAiB;SACtC,KAAK,CAAC,mBAAmB,CAAC;SAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC;IACnE,MAAM,aAAa,GAAG,CAAC,IAAY,EAAiB,EAAE,CACpD,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/D,MAAM,OAAO,GAAkC;QAC7C,CAAC,EAAE,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;QACjD,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,SAAS,IAAI,CAAC;QACjB,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,gBAAgB;QACnB,CAAC,EAAE,qBAAqB;QACxB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;QAClB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;QAClB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;QACpB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;QACpB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAClB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;QACpB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;QACpB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAClB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAClB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;QACpB,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;QACpB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAClB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAClB,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACpB,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACpB,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACpB,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACpB,EAAE,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QACpC,EAAE,EAAE,2BAA2B;QAC/B,EAAE,EAAE,wBAAwB;QAC5B,EAAE,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;QAChD,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,gBAAgB;QACpB,EAAE,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI;QAC1D,EAAE,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;QAClD,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,iBAAiB;QACrB,EAAE,EAAE,MAAM;KACX,CAAC;IAEF,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,GAAG,OAAiB,EAAU,EAAE;QACzD,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,GAAG,OAAiB,EAAU,EAAE;QAC1D,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CACb,OAA4B,EAC5B,KAAa,EACb,OAAiB,EACT,EAAE;QACV,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,GAAG,OAAiB,EAAU,EAAE,CACzD,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,CAAC;QAC9C,MAAM,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,GAAG,OAAiB,EAAU,EAAE,CAC1D,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,CAAC;QAC9C,MAAM,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9C,MAAM,KAAK,GAAG,CAAC,CAAS,EAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,CAAC,CAAS,EAAiB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;QAC5B,IAAI;QACJ,MAAM;QACN,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,KAAK;QACL,MAAM;QACN,MAAM;QACN,IAAI;QACJ,KAAK;QACL,MAAM;QACN,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,OAAO;QACP,QAAQ;QACR,IAAI;QACJ,MAAM;KACP,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7C,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAC3B,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACnC,MAAM,aAAa,GAKjB,MAAM,CAAC,MAAM,IAAI,gBAAgB;QAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC;YACE,GAAG,MAAM;iBACN,KAAK,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACpE;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,MAAM;qBACZ,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;qBAC3B,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9C,OAAO,EAAE,MAAM;qBACZ,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;qBAC3B,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;aAC9C;SACF,CAAC;IACR,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAC9D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAiB,EAAE,CAChD,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAiB,EAAE,CAChD,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7D,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,iBAAiB,GACrB,SAAS,CAAC,sBAAsB,CAAC;QACjC,SAAS,CAAC,mBAAmB,CAAC;QAC9B,gBAAgB,CAAC;IACnB,MAAM,WAAW,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAElD,MAAM,0BAA0B,GAC9B,SAAS,CAAC,sBAAsB,CAAC;QACjC,SAAS,CAAC,mBAAmB,CAAC;QAC9B,MAAM;QACN,gBAAgB,CAAC;IAEnB,MAAM,CAAC,GAAG,CACR,EAAU,EACV,EAAiB,EACjB,EAAiB,EACjB,EAAU,EACV,EAAiB,EACjB,EAAiB,EACR,EAAE,CAAC,CAAC;QACb,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,EAAE;QACpB,gBAAgB,EAAE,EAAE;KACrB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAc;QACxB,CAAC,CACC,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAChB,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EACf,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAClB;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACjB,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACjB;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACjB,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAC1B;QACD,CAAC,CACC,QAAQ,EACR,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAC5B,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAC3B,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACjB;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACjB,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACjB;QACD,CAAC,CACC,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAChB,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACjB;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACjB,EAAE,EACF,IAAI,EACJ,IAAI,CACL;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EACvB,EAAE,EACF,IAAI,EACJ,IAAI,CACL;QACD,CAAC,CACC,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EACzB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EACxB,EAAE,EACF,IAAI,EACJ,IAAI,CACL;QACD,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QAC7D,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QAC1D,CAAC,CACC,QAAQ,EACR,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EACpB,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EACnB,EAAE,EACF,IAAI,EACJ,IAAI,CACL;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACjB,EAAE,EACF,IAAI,EACJ,IAAI,CACL;QACD,CAAC,CACC,OAAO,EACP,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EACnB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAClB,OAAO,EACP,KAAK,CAAC,gBAAgB,CAAC,EACvB,KAAK,CAAC,gBAAgB,CAAC,CACxB;QACD,CAAC,CACC,QAAQ,EACR,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EACpB,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EACnB,EAAE,EACF,IAAI,EACJ,IAAI,CACL;QACD,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;QACjE,CAAC,CACC,SAAS,CAAC,CAAC,CAAC,EACZ,YAAY,CAAC,CAAC,CAAC,EACf,YAAY,CAAC,CAAC,CAAC,EACf,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAClB;QACD,CAAC,CACC,SAAS,CAAC,CAAC,CAAC,EACZ,YAAY,CAAC,CAAC,CAAC,EACf,YAAY,CAAC,CAAC,CAAC,EACf,KAAK,EACL,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACjB;QACD,CAAC,CACC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAClB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACjB,gBAAgB,EAChB,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,CACf;QACD,CAAC,CACC,IAAI,EACJ,MAAM,CAAC,kBAAkB,CAAC,EAC1B,MAAM,CAAC,WAAW,CAAC,EACnB,IAAI,EACJ,MAAM,CAAC,iBAAiB,CAAC,EACzB,MAAM,CAAC,0BAA0B,CAAC,CACnC;KACF,CAAC;IAEF,MAAM,OAAO,GAAc;QACzB,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,gBAAgB,GAAG,aAAa;QAC1C,MAAM;QACN,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,SAAS,CAAC,sBAAsB,CAAC,GAAG,gBAAgB;QACjE,MAAM,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM;KAChD,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type EntryRecord } from "../entries/entry-record";
2
+ export declare function buildGeneralLedgerBody(_fpName: string, entries: EntryRecord[], openingBalanceLines: Array<{
3
+ accountId: string;
4
+ amount: number;
5
+ }>): string;
6
+ export declare function buildGeneralLedgerDocument(fpName: string, entries: EntryRecord[], openingBalanceLines: Array<{
7
+ accountId: string;
8
+ amount: number;
9
+ }>): string;
10
+ //# sourceMappingURL=general-ledger-print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general-ledger-print.d.ts","sourceRoot":"","sources":["../../src/print/general-ledger-print.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAuJjC,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EAAE,EACtB,mBAAmB,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAChE,MAAM,CAyIR;AAYD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EAAE,EACtB,mBAAmB,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAChE,MAAM,CAMR"}
@@ -0,0 +1,250 @@
1
+ import { getEntryLines, } from "../entries/entry-record";
2
+ import { parseAmount } from "../shared/parse-utils";
3
+ import { buildPrintDocument, escapeHtml as esc } from "./print-shell";
4
+ function parseNum(str) {
5
+ return parseAmount(str);
6
+ }
7
+ function fmt(n) {
8
+ return n === 0 ? "" : new Intl.NumberFormat("ja-JP").format(n);
9
+ }
10
+ function fmtBalance(n) {
11
+ return new Intl.NumberFormat("ja-JP").format(Math.abs(n));
12
+ }
13
+ function fmtDate(iso) {
14
+ return iso.replace(/-/g, "/");
15
+ }
16
+ function fmtMonthLabel(monthKey) {
17
+ const month = Number(monthKey.slice(5, 7));
18
+ return Number.isInteger(month) && month >= 1 && month <= 12
19
+ ? `${month}月分`
20
+ : "日付未設定";
21
+ }
22
+ function isDebitNormal(type) {
23
+ return type === "asset" || type === "expense" || type === "cost_of_sales";
24
+ }
25
+ const PREFERRED_LEDGER_ORDER = [
26
+ "売上",
27
+ "減価償却費",
28
+ "地代家賃",
29
+ "水道光熱費",
30
+ "旅費交通費",
31
+ "通信費",
32
+ "広告宣伝費",
33
+ "接待交際費",
34
+ "消耗品費",
35
+ "研修費",
36
+ "会議費",
37
+ "工具器具備品",
38
+ "事業主貸",
39
+ "事業主借",
40
+ "元入金",
41
+ ];
42
+ const PAGE_W = 794;
43
+ const PAGE_H = 1123;
44
+ const SIDE_PAD = 27;
45
+ const TOP_PAD = 11;
46
+ const BOTTOM_PAD = 19;
47
+ const TITLE_FS = 16;
48
+ const TITLE_GAP = 19;
49
+ const BODY_TOP = TOP_PAD + TITLE_FS + TITLE_GAP;
50
+ function buildLedger(accountName, allEntries, openingBalance) {
51
+ const relevant = allEntries
52
+ .flatMap((entry) => getEntryLines(entry)
53
+ .filter((line) => line.accountName === accountName)
54
+ .map((line) => ({ entry, line })))
55
+ .sort((a, b) => a.entry.date.localeCompare(b.entry.date));
56
+ const firstLine = relevant[0]?.line;
57
+ const accountType = firstLine
58
+ ? firstLine.accountType
59
+ : "asset";
60
+ const debitNormal = isDebitNormal(accountType);
61
+ let balance = openingBalance;
62
+ const lines = [];
63
+ const monthSubtotals = new Map();
64
+ for (const { entry: e, line } of relevant) {
65
+ const monthKey = e.date.slice(0, 7);
66
+ if (!monthSubtotals.has(monthKey))
67
+ monthSubtotals.set(monthKey, { debit: 0, credit: 0 });
68
+ const sub = monthSubtotals.get(monthKey);
69
+ const amt = parseNum(line.amount);
70
+ if (line.side === "debit") {
71
+ balance = debitNormal ? balance + amt : balance - amt;
72
+ sub.debit += amt;
73
+ lines.push({
74
+ date: e.date,
75
+ counterAccount: counterAccountsForLine(e, line),
76
+ memo: e.description,
77
+ partner: e.partner,
78
+ debitAmt: amt,
79
+ creditAmt: 0,
80
+ balance,
81
+ });
82
+ }
83
+ else {
84
+ balance = debitNormal ? balance - amt : balance + amt;
85
+ sub.credit += amt;
86
+ lines.push({
87
+ date: e.date,
88
+ counterAccount: counterAccountsForLine(e, line),
89
+ memo: e.description,
90
+ partner: e.partner,
91
+ debitAmt: 0,
92
+ creditAmt: amt,
93
+ balance,
94
+ });
95
+ }
96
+ }
97
+ return { accountName, openingBalance, debitNormal, lines, monthSubtotals };
98
+ }
99
+ const TH = "border:1px solid #1D4ED8;background:#EEF5FF;color:#1D4ED8;font-weight:700;padding:5px 4px;text-align:center;";
100
+ const TD = "border:1px solid #1D4ED8;color:#111827;background:#FFFFFF;padding:4px 4px;vertical-align:top;line-height:1.25;";
101
+ const BAND = "border:1px solid #1D4ED8;color:#111827;background:#EEF5FF;padding:4px 4px;font-weight:700;vertical-align:top;line-height:1.25;";
102
+ export function buildGeneralLedgerBody(_fpName, entries, openingBalanceLines) {
103
+ const encounterOrder = [];
104
+ const seen = new Set();
105
+ for (const e of [...entries].sort((a, b) => a.date.localeCompare(b.date))) {
106
+ for (const line of getEntryLines(e)) {
107
+ if (!seen.has(line.accountName)) {
108
+ seen.add(line.accountName);
109
+ encounterOrder.push(line.accountName);
110
+ }
111
+ }
112
+ }
113
+ const preferredIndex = new Map(PREFERRED_LEDGER_ORDER.map((n, i) => [n, i]));
114
+ const accountOrder = [...encounterOrder].sort((a, b) => {
115
+ const ia = preferredIndex.get(a);
116
+ const ib = preferredIndex.get(b);
117
+ if (ia != null && ib != null)
118
+ return ia - ib;
119
+ if (ia != null)
120
+ return -1;
121
+ if (ib != null)
122
+ return 1;
123
+ return encounterOrder.indexOf(a) - encounterOrder.indexOf(b);
124
+ });
125
+ const ledgers = accountOrder.map((name) => {
126
+ const firstLine = entries
127
+ .flatMap((entry) => getEntryLines(entry))
128
+ .find((line) => line.accountName === name);
129
+ const type = firstLine
130
+ ? firstLine.accountType
131
+ : "asset";
132
+ const prefix = isDebitNormal(type) ? "a:" : "l:";
133
+ const openingLine = openingBalanceLines.find((l) => l.accountId === `${prefix}${name}`);
134
+ return buildLedger(name, entries, openingLine?.amount ?? 0);
135
+ });
136
+ if (ledgers.length === 0) {
137
+ return wrapPage("", `<div style="text-align:center;padding:48px;color:#475569;font-size:14px;">仕訳データがありません</div>`, 1);
138
+ }
139
+ return ledgers
140
+ .map((ledger, pageIdx) => {
141
+ let rowsHtml = "";
142
+ const processedMonths = new Set();
143
+ if (ledger.openingBalance !== 0) {
144
+ rowsHtml += `<tr>
145
+ <td style="${BAND};text-align:center">前期繰越</td>
146
+ <td colspan="2" style="${BAND}"></td>
147
+ <td style="${BAND};text-align:right">${ledger.debitNormal ? fmt(ledger.openingBalance) : ""}</td>
148
+ <td style="${BAND};text-align:right">${ledger.debitNormal ? "" : fmt(ledger.openingBalance)}</td>
149
+ <td style="${BAND};text-align:right">${fmtBalance(ledger.openingBalance)}</td>
150
+ </tr>
151
+ `;
152
+ }
153
+ for (let i = 0; i < ledger.lines.length; i++) {
154
+ const line = ledger.lines[i];
155
+ const monthKey = line.date.slice(0, 7);
156
+ const isLastInMonth = i === ledger.lines.length - 1 ||
157
+ ledger.lines[i + 1].date.slice(0, 7) !== monthKey;
158
+ rowsHtml += `<tr>
159
+ <td rowspan="2" style="${TD};vertical-align:middle;text-align:center">${esc(fmtDate(line.date))}</td>
160
+ <td style="${TD}">${esc(line.counterAccount)}</td>
161
+ <td style="${TD}">${esc(line.memo)}</td>
162
+ <td colspan="3" style="${TD}">${esc(line.partner)}</td>
163
+ </tr>
164
+ <tr>
165
+ <td style="${TD}"></td>
166
+ <td style="${TD}"></td>
167
+ <td style="${TD};text-align:right">${fmt(line.debitAmt)}</td>
168
+ <td style="${TD};text-align:right">${fmt(line.creditAmt)}</td>
169
+ <td style="${TD};text-align:right">${fmtBalance(line.balance)}</td>
170
+ </tr>
171
+ `;
172
+ if (isLastInMonth && !processedMonths.has(monthKey)) {
173
+ processedMonths.add(monthKey);
174
+ const sub = ledger.monthSubtotals.get(monthKey);
175
+ if (sub) {
176
+ rowsHtml += `<tr>
177
+ <td colspan="3" style="${BAND}">${fmtMonthLabel(monthKey)} 合計</td>
178
+ <td style="${BAND};text-align:right">${fmt(sub.debit)}</td>
179
+ <td style="${BAND};text-align:right">${fmt(sub.credit)}</td>
180
+ <td style="${BAND}"></td>
181
+ </tr>
182
+ `;
183
+ }
184
+ }
185
+ }
186
+ let grandDebit = ledger.debitNormal ? ledger.openingBalance : 0;
187
+ let grandCredit = ledger.debitNormal ? 0 : ledger.openingBalance;
188
+ for (const sub of ledger.monthSubtotals.values()) {
189
+ grandDebit += sub.debit;
190
+ grandCredit += sub.credit;
191
+ }
192
+ rowsHtml += `<tr>
193
+ <td colspan="3" style="${BAND}">合計</td>
194
+ <td style="${BAND};text-align:right">${fmt(grandDebit)}</td>
195
+ <td style="${BAND};text-align:right">${fmt(grandCredit)}</td>
196
+ <td style="${BAND}"></td>
197
+ </tr>
198
+ `;
199
+ const tableHtml = `<table style="width:100%;border-collapse:collapse;table-layout:fixed;font-size:10px">
200
+ <colgroup>
201
+ <col style="width:75px"><col style="width:120px"><col><col style="width:68px"><col style="width:68px"><col style="width:81px">
202
+ </colgroup>
203
+ <thead>
204
+ <tr>
205
+ <th rowspan="2" style="${TH}">取引日</th>
206
+ <th style="${TH}">相手勘定科目</th>
207
+ <th style="${TH}">摘要</th>
208
+ <th colspan="3" style="${TH}">取引先</th>
209
+ </tr>
210
+ <tr>
211
+ <th style="${TH}">相手補助科目</th>
212
+ <th style="${TH}">補助科目</th>
213
+ <th style="${TH}">借方金額</th>
214
+ <th style="${TH}">貸方金額</th>
215
+ <th style="${TH}">残高</th>
216
+ </tr>
217
+ </thead>
218
+ <tbody>
219
+ ${rowsHtml}
220
+ </tbody>
221
+ </table>`;
222
+ return wrapPage(ledger.accountName, tableHtml, pageIdx + 1);
223
+ })
224
+ .join("");
225
+ }
226
+ function wrapPage(title, bodyHtml, pageNumber) {
227
+ return `<div class="bk-page" style="position:relative;width:${PAGE_W}px;height:${PAGE_H}px;overflow:hidden;">
228
+ <div style="position:absolute;top:${TOP_PAD}px;left:${SIDE_PAD}px;right:${SIDE_PAD}px;text-align:center;color:#1D4ED8;font-weight:700;font-size:${TITLE_FS}px;line-height:1;">${esc(title)}</div>
229
+ <div style="position:absolute;top:${BODY_TOP}px;left:${SIDE_PAD}px;right:${SIDE_PAD}px;">
230
+ ${bodyHtml}
231
+ </div>
232
+ <div style="position:absolute;bottom:${BOTTOM_PAD}px;left:${SIDE_PAD}px;right:${SIDE_PAD}px;text-align:center;color:#1D4ED8;font-size:12px;line-height:1;">− ${pageNumber} −</div>
233
+ </div>`;
234
+ }
235
+ export function buildGeneralLedgerDocument(fpName, entries, openingBalanceLines) {
236
+ return buildPrintDocument({
237
+ title: "総勘定元帳",
238
+ orientation: "portrait",
239
+ body: buildGeneralLedgerBody(fpName, entries, openingBalanceLines),
240
+ });
241
+ }
242
+ function counterAccountsForLine(entry, target) {
243
+ const oppositeSide = target.side === "debit" ? "credit" : "debit";
244
+ return getEntryLines(entry)
245
+ .filter((line) => line.side === oppositeSide)
246
+ .map((line) => line.accountName)
247
+ .filter((name) => name.length > 0)
248
+ .join(" / ");
249
+ }
250
+ //# sourceMappingURL=general-ledger-print.js.map