@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.
- package/dist/archive/fiscal-period-archive.d.ts +38 -0
- package/dist/archive/fiscal-period-archive.d.ts.map +1 -0
- package/dist/archive/fiscal-period-archive.js +276 -0
- package/dist/archive/fiscal-period-archive.js.map +1 -0
- package/dist/assist/fixed-asset-data.d.ts +32 -0
- package/dist/assist/fixed-asset-data.d.ts.map +1 -0
- package/dist/assist/fixed-asset-data.js +2 -0
- package/dist/assist/fixed-asset-data.js.map +1 -0
- package/dist/assist/fixed-asset-depreciation.d.ts +27 -0
- package/dist/assist/fixed-asset-depreciation.d.ts.map +1 -0
- package/dist/assist/fixed-asset-depreciation.js +66 -0
- package/dist/assist/fixed-asset-depreciation.js.map +1 -0
- package/dist/assist/opening-carryover.d.ts +21 -0
- package/dist/assist/opening-carryover.d.ts.map +1 -0
- package/dist/assist/opening-carryover.js +2 -0
- package/dist/assist/opening-carryover.js.map +1 -0
- package/dist/entries/default-master-data.d.ts +3 -0
- package/dist/entries/default-master-data.d.ts.map +1 -0
- package/dist/entries/default-master-data.js +17 -0
- package/dist/entries/default-master-data.js.map +1 -0
- package/dist/entries/entries-types.d.ts +30 -0
- package/dist/entries/entries-types.d.ts.map +1 -0
- package/dist/entries/entries-types.js +2 -0
- package/dist/entries/entries-types.js.map +1 -0
- package/dist/entries/entry-record.d.ts +53 -0
- package/dist/entries/entry-record.d.ts.map +1 -0
- package/dist/entries/entry-record.js +180 -0
- package/dist/entries/entry-record.js.map +1 -0
- package/dist/entries/example-entries.d.ts +7 -0
- package/dist/entries/example-entries.d.ts.map +1 -0
- package/dist/entries/example-entries.js +97 -0
- package/dist/entries/example-entries.js.map +1 -0
- package/dist/entries/generated-master-data.d.ts +26 -0
- package/dist/entries/generated-master-data.d.ts.map +1 -0
- package/dist/entries/generated-master-data.js +2211 -0
- package/dist/entries/generated-master-data.js.map +1 -0
- package/dist/entries/import-export.d.ts +13 -0
- package/dist/entries/import-export.d.ts.map +1 -0
- package/dist/entries/import-export.js +319 -0
- package/dist/entries/import-export.js.map +1 -0
- package/dist/entries/quick-guide-data.d.ts +32 -0
- package/dist/entries/quick-guide-data.d.ts.map +1 -0
- package/dist/entries/quick-guide-data.js +513 -0
- package/dist/entries/quick-guide-data.js.map +1 -0
- package/dist/entries/virtual-entries.d.ts +58 -0
- package/dist/entries/virtual-entries.d.ts.map +1 -0
- package/dist/entries/virtual-entries.js +414 -0
- package/dist/entries/virtual-entries.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/print/examples/financial-statements-example.d.ts +5 -0
- package/dist/print/examples/financial-statements-example.d.ts.map +1 -0
- package/dist/print/examples/financial-statements-example.js +246 -0
- package/dist/print/examples/financial-statements-example.js.map +1 -0
- package/dist/print/examples/general-ledger-example.d.ts +5 -0
- package/dist/print/examples/general-ledger-example.d.ts.map +1 -0
- package/dist/print/examples/general-ledger-example.js +10 -0
- package/dist/print/examples/general-ledger-example.js.map +1 -0
- package/dist/print/examples/journal-example.d.ts +4 -0
- package/dist/print/examples/journal-example.d.ts.map +1 -0
- package/dist/print/examples/journal-example.js +16 -0
- package/dist/print/examples/journal-example.js.map +1 -0
- package/dist/print/financial-statements-print.d.ts +10 -0
- package/dist/print/financial-statements-print.d.ts.map +1 -0
- package/dist/print/financial-statements-print.js +223 -0
- package/dist/print/financial-statements-print.js.map +1 -0
- package/dist/print/fs-data.d.ts +37 -0
- package/dist/print/fs-data.d.ts.map +1 -0
- package/dist/print/fs-data.js +348 -0
- package/dist/print/fs-data.js.map +1 -0
- package/dist/print/general-ledger-print.d.ts +10 -0
- package/dist/print/general-ledger-print.d.ts.map +1 -0
- package/dist/print/general-ledger-print.js +250 -0
- package/dist/print/general-ledger-print.js.map +1 -0
- package/dist/print/journal-print.d.ts +4 -0
- package/dist/print/journal-print.d.ts.map +1 -0
- package/dist/print/journal-print.js +126 -0
- package/dist/print/journal-print.js.map +1 -0
- package/dist/print/print-shell.d.ts +9 -0
- package/dist/print/print-shell.d.ts.map +1 -0
- package/dist/print/print-shell.js +28 -0
- package/dist/print/print-shell.js.map +1 -0
- package/dist/shared/app-error.d.ts +25 -0
- package/dist/shared/app-error.d.ts.map +1 -0
- package/dist/shared/app-error.js +115 -0
- package/dist/shared/app-error.js.map +1 -0
- package/dist/shared/bootstrap-data.d.ts +15 -0
- package/dist/shared/bootstrap-data.d.ts.map +1 -0
- package/dist/shared/bootstrap-data.js +150 -0
- package/dist/shared/bootstrap-data.js.map +1 -0
- package/dist/shared/brand-config.d.ts +6 -0
- package/dist/shared/brand-config.d.ts.map +1 -0
- package/dist/shared/brand-config.js +2 -0
- package/dist/shared/brand-config.js.map +1 -0
- package/dist/shared/demo-data.d.ts +15 -0
- package/dist/shared/demo-data.d.ts.map +1 -0
- package/dist/shared/demo-data.js +150 -0
- package/dist/shared/demo-data.js.map +1 -0
- package/dist/shared/models.d.ts +52 -0
- package/dist/shared/models.d.ts.map +1 -0
- package/dist/shared/models.js +2 -0
- package/dist/shared/models.js.map +1 -0
- package/dist/shared/openkk-config.d.ts +41 -0
- package/dist/shared/openkk-config.d.ts.map +1 -0
- package/dist/shared/openkk-config.js +15 -0
- package/dist/shared/openkk-config.js.map +1 -0
- package/dist/shared/parse-utils.d.ts +7 -0
- package/dist/shared/parse-utils.d.ts.map +1 -0
- package/dist/shared/parse-utils.js +43 -0
- package/dist/shared/parse-utils.js.map +1 -0
- package/dist/shared/period-lock.d.ts +9 -0
- package/dist/shared/period-lock.d.ts.map +1 -0
- package/dist/shared/period-lock.js +41 -0
- package/dist/shared/period-lock.js.map +1 -0
- package/dist/shared/sample-data.d.ts +15 -0
- package/dist/shared/sample-data.d.ts.map +1 -0
- package/dist/shared/sample-data.js +161 -0
- package/dist/shared/sample-data.js.map +1 -0
- package/dist/shared/user.d.ts +20 -0
- package/dist/shared/user.d.ts.map +1 -0
- package/dist/shared/user.js +13 -0
- package/dist/shared/user.js.map +1 -0
- package/dist/steps/next-fiscal-period.d.ts +32 -0
- package/dist/steps/next-fiscal-period.d.ts.map +1 -0
- package/dist/steps/next-fiscal-period.js +128 -0
- package/dist/steps/next-fiscal-period.js.map +1 -0
- package/dist/steps/period-check.d.ts +9 -0
- package/dist/steps/period-check.d.ts.map +1 -0
- package/dist/steps/period-check.js +23 -0
- package/dist/steps/period-check.js.map +1 -0
- package/dist/steps/step-derivation.d.ts +15 -0
- package/dist/steps/step-derivation.d.ts.map +1 -0
- package/dist/steps/step-derivation.js +38 -0
- package/dist/steps/step-derivation.js.map +1 -0
- package/dist/steps/step-trend.d.ts +17 -0
- package/dist/steps/step-trend.d.ts.map +1 -0
- package/dist/steps/step-trend.js +30 -0
- package/dist/steps/step-trend.js.map +1 -0
- package/dist/steps/summary.d.ts +24 -0
- package/dist/steps/summary.d.ts.map +1 -0
- package/dist/steps/summary.js +69 -0
- package/dist/steps/summary.js.map +1 -0
- package/dist/steps/year-month.d.ts +10 -0
- package/dist/steps/year-month.d.ts.map +1 -0
- package/dist/steps/year-month.js +26 -0
- package/dist/steps/year-month.js.map +1 -0
- 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
|