@rubydogjp/openkk-client-usecases 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 (53) hide show
  1. package/dist/assist/assist-state.d.ts +29 -0
  2. package/dist/assist/assist-state.d.ts.map +1 -0
  3. package/dist/assist/assist-state.js +461 -0
  4. package/dist/assist/assist-state.js.map +1 -0
  5. package/dist/entries/entries-state.d.ts +53 -0
  6. package/dist/entries/entries-state.d.ts.map +1 -0
  7. package/dist/entries/entries-state.js +359 -0
  8. package/dist/entries/entries-state.js.map +1 -0
  9. package/dist/entries/import-mapping.d.ts +32 -0
  10. package/dist/entries/import-mapping.d.ts.map +1 -0
  11. package/dist/entries/import-mapping.js +87 -0
  12. package/dist/entries/import-mapping.js.map +1 -0
  13. package/dist/index.d.ts +12 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +12 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/print/print-state.d.ts +2 -0
  18. package/dist/print/print-state.d.ts.map +1 -0
  19. package/dist/print/print-state.js +8 -0
  20. package/dist/print/print-state.js.map +1 -0
  21. package/dist/shared/backend-api-context.d.ts +8 -0
  22. package/dist/shared/backend-api-context.d.ts.map +1 -0
  23. package/dist/shared/backend-api-context.js +21 -0
  24. package/dist/shared/backend-api-context.js.map +1 -0
  25. package/dist/shared/brand-config-context.d.ts +8 -0
  26. package/dist/shared/brand-config-context.d.ts.map +1 -0
  27. package/dist/shared/brand-config-context.js +11 -0
  28. package/dist/shared/brand-config-context.js.map +1 -0
  29. package/dist/shared/callouts-context.d.ts +9 -0
  30. package/dist/shared/callouts-context.d.ts.map +1 -0
  31. package/dist/shared/callouts-context.js +12 -0
  32. package/dist/shared/callouts-context.js.map +1 -0
  33. package/dist/shared/closing-state.d.ts +7 -0
  34. package/dist/shared/closing-state.d.ts.map +1 -0
  35. package/dist/shared/closing-state.js +20 -0
  36. package/dist/shared/closing-state.js.map +1 -0
  37. package/dist/shared/maintenance-state.d.ts +11 -0
  38. package/dist/shared/maintenance-state.d.ts.map +1 -0
  39. package/dist/shared/maintenance-state.js +76 -0
  40. package/dist/shared/maintenance-state.js.map +1 -0
  41. package/dist/shared/openkk-app-state.d.ts +63 -0
  42. package/dist/shared/openkk-app-state.d.ts.map +1 -0
  43. package/dist/shared/openkk-app-state.js +314 -0
  44. package/dist/shared/openkk-app-state.js.map +1 -0
  45. package/dist/shared/openkk-config-context.d.ts +8 -0
  46. package/dist/shared/openkk-config-context.d.ts.map +1 -0
  47. package/dist/shared/openkk-config-context.js +21 -0
  48. package/dist/shared/openkk-config-context.js.map +1 -0
  49. package/dist/shared/print-adapter-context.d.ts +8 -0
  50. package/dist/shared/print-adapter-context.d.ts.map +1 -0
  51. package/dist/shared/print-adapter-context.js +21 -0
  52. package/dist/shared/print-adapter-context.js.map +1 -0
  53. package/package.json +46 -0
@@ -0,0 +1,359 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useEffect, useMemo, useState, } from "react";
4
+ import { AppError } from "@rubydogjp/openkk-client-domain";
5
+ import { useOpenkkAppState } from "../shared/openkk-app-state";
6
+ import { useBackendApi } from "../shared/backend-api-context";
7
+ import { entryRecordToImportPayload, resolveBookAccountId, resolveBusinessCategoryId, resolveTaxCategoryId, safeRate, } from "./import-mapping";
8
+ export { entryRecordToImportPayload } from "./import-mapping";
9
+ import { parseAmount, recordToPreviewRows, weekdayJa, } from "@rubydogjp/openkk-client-domain";
10
+ const EntriesContext = createContext(null);
11
+ export function OpenkkEntriesProvider(props) {
12
+ const backendApi = useBackendApi();
13
+ const appState = useOpenkkAppState();
14
+ const [records, setRecords] = useState([]);
15
+ const [bookAccounts, setBookAccounts] = useState([]);
16
+ const [taxCategories, setTaxCategories] = useState([]);
17
+ const [businessCategories, setBusinessCategories] = useState([]);
18
+ const [loadError, setLoadError] = useState(null);
19
+ const [reloadNonce, setReloadNonce] = useState(0);
20
+ useEffect(() => {
21
+ let cancelled = false;
22
+ void (async () => {
23
+ try {
24
+ const [accounts, taxes, businesses] = await Promise.all([
25
+ backendApi.masterData.getBookAccounts(),
26
+ backendApi.masterData.getTaxCategories(),
27
+ backendApi.masterData.getBusinessCategories(),
28
+ ]);
29
+ if (cancelled)
30
+ return;
31
+ setBookAccounts(accounts);
32
+ setTaxCategories(taxes);
33
+ setBusinessCategories(businesses);
34
+ setLoadError(null);
35
+ }
36
+ catch (error) {
37
+ if (cancelled)
38
+ return;
39
+ console.error("[openkk] master data load failed:", error);
40
+ setLoadError(error);
41
+ }
42
+ })();
43
+ return () => {
44
+ cancelled = true;
45
+ };
46
+ }, [reloadNonce]);
47
+ useEffect(() => {
48
+ const fiscalPeriodId = appState.currentFiscalPeriodId;
49
+ if (fiscalPeriodId == null || fiscalPeriodId.length === 0) {
50
+ setRecords([]);
51
+ return;
52
+ }
53
+ let cancelled = false;
54
+ void (async () => {
55
+ try {
56
+ const remoteEntries = await backendApi.entries.getAll(fiscalPeriodId);
57
+ if (cancelled)
58
+ return;
59
+ setRecords((current) => replaceFiscalPeriodEntryRecords(current, fiscalPeriodId, remoteEntries.map((entry) => mapRemoteEntryToRecord({
60
+ entry,
61
+ fiscalPeriodId,
62
+ accounts: bookAccounts,
63
+ taxes: taxCategories,
64
+ businesses: businessCategories,
65
+ }))));
66
+ setLoadError(null);
67
+ }
68
+ catch (error) {
69
+ if (cancelled)
70
+ return;
71
+ console.error("[openkk] entries load failed:", error);
72
+ setLoadError(error);
73
+ }
74
+ })();
75
+ return () => {
76
+ cancelled = true;
77
+ };
78
+ }, [
79
+ appState.currentFiscalPeriodId,
80
+ bookAccounts,
81
+ businessCategories,
82
+ taxCategories,
83
+ reloadNonce,
84
+ ]);
85
+ const value = useMemo(() => {
86
+ const accountOptions = bookAccounts.map((account) => ({
87
+ id: account.id,
88
+ name: account.name,
89
+ accountType: (account.accountType ?? "asset"),
90
+ }));
91
+ const taxCategoryOptions = taxCategories.map((category) => ({ id: category.id, name: category.name }));
92
+ const businessCategoryOptions = businessCategories.map((category) => ({
93
+ id: category.id,
94
+ name: category.name,
95
+ }));
96
+ return {
97
+ listFiscalPeriodEntries(fiscalPeriodId) {
98
+ return records
99
+ .filter((record) => record.fiscalPeriodId === fiscalPeriodId)
100
+ .sort((left, right) => left.date.localeCompare(right.date));
101
+ },
102
+ listMonthEntries(fiscalPeriodId, yearMonth) {
103
+ return records
104
+ .filter((record) => record.fiscalPeriodId === fiscalPeriodId &&
105
+ record.date.startsWith(yearMonth))
106
+ .sort((left, right) => left.date.localeCompare(right.date));
107
+ },
108
+ listMonthRows(fiscalPeriodId, yearMonth) {
109
+ return records
110
+ .filter((record) => record.fiscalPeriodId === fiscalPeriodId &&
111
+ record.date.startsWith(yearMonth))
112
+ .sort((left, right) => left.date.localeCompare(right.date))
113
+ .flatMap(recordToPreviewRows);
114
+ },
115
+ getEntry(entryId) {
116
+ return records.find((record) => record.id === entryId) ?? null;
117
+ },
118
+ async createEntryFromDraft(fiscalPeriodId, draft) {
119
+ const lines = buildEntryApiLinesFromDraft(draft, {
120
+ accounts: bookAccounts,
121
+ taxes: taxCategories,
122
+ businesses: businessCategories,
123
+ }, {
124
+ messageForDeveloper: "entries.createEntryFromDraft: bookAccountId resolution failed",
125
+ messageForUser: "勘定科目の解決に失敗したため作成できませんでした",
126
+ });
127
+ const created = await backendApi.entries.create(fiscalPeriodId, {
128
+ date: draft.date,
129
+ description: draft.description,
130
+ businessRate: safeRate(draft.businessRate),
131
+ lines,
132
+ });
133
+ const mapped = mapRemoteEntryToRecord({
134
+ entry: created,
135
+ fiscalPeriodId,
136
+ accounts: bookAccounts,
137
+ taxes: taxCategories,
138
+ businesses: businessCategories,
139
+ });
140
+ setRecords((current) => [...current, mapped]);
141
+ return mapped.id;
142
+ },
143
+ async saveEntry(entryId, draft) {
144
+ const currentRecord = records.find((record) => record.id === entryId);
145
+ if (currentRecord == null) {
146
+ return false;
147
+ }
148
+ const lines = buildEntryApiLinesFromDraft(draft, {
149
+ accounts: bookAccounts,
150
+ taxes: taxCategories,
151
+ businesses: businessCategories,
152
+ }, {
153
+ messageForDeveloper: "entries.saveEntry: bookAccountId resolution failed",
154
+ messageForUser: "勘定科目の解決に失敗したため保存できませんでした",
155
+ });
156
+ const patched = await backendApi.entries.patch(currentRecord.fiscalPeriodId, entryId, {
157
+ date: draft.date,
158
+ description: draft.description,
159
+ localId: currentRecord.localId,
160
+ businessRate: safeRate(draft.businessRate),
161
+ lines,
162
+ });
163
+ setRecords((current) => current.map((record) => record.id === entryId
164
+ ? mapRemoteEntryToRecord({
165
+ entry: patched,
166
+ fiscalPeriodId: currentRecord.fiscalPeriodId,
167
+ accounts: bookAccounts,
168
+ taxes: taxCategories,
169
+ businesses: businessCategories,
170
+ })
171
+ : record));
172
+ return true;
173
+ },
174
+ async deleteEntry(entryId) {
175
+ const currentRecord = records.find((record) => record.id === entryId);
176
+ if (currentRecord == null) {
177
+ return false;
178
+ }
179
+ await backendApi.entries.remove(currentRecord.fiscalPeriodId, entryId);
180
+ setRecords((current) => removeEntryRecord(current, entryId));
181
+ return true;
182
+ },
183
+ async mergeFiscalPeriodEntries(fiscalPeriodId, importedEntries) {
184
+ const payload = importedEntries.map((entry) => entryRecordToImportPayload(entry, {
185
+ accounts: bookAccounts,
186
+ taxes: taxCategories,
187
+ businesses: businessCategories,
188
+ }));
189
+ const response = await backendApi.entries.importMany(fiscalPeriodId, payload);
190
+ const appended = response.entries.map((entry) => mapRemoteEntryToRecord({
191
+ entry,
192
+ fiscalPeriodId,
193
+ accounts: bookAccounts,
194
+ taxes: taxCategories,
195
+ businesses: businessCategories,
196
+ }));
197
+ setRecords((current) => [...current, ...appended]);
198
+ return {
199
+ imported: response.importedCount,
200
+ skipped: Math.max(0, importedEntries.length - response.importedCount),
201
+ };
202
+ },
203
+ accountOptions,
204
+ taxCategoryOptions,
205
+ businessCategoryOptions,
206
+ listSuggestions(fiscalPeriodId) {
207
+ const partner = new Set();
208
+ const tax = new Set();
209
+ const biz = new Set();
210
+ for (const record of records) {
211
+ if (record.fiscalPeriodId !== fiscalPeriodId)
212
+ continue;
213
+ if (record.partner.trim().length > 0)
214
+ partner.add(record.partner.trim());
215
+ if (record.taxCategory.trim().length > 0)
216
+ tax.add(record.taxCategory.trim());
217
+ if (record.businessCategory.trim().length > 0)
218
+ biz.add(record.businessCategory.trim());
219
+ }
220
+ return {
221
+ partner: Array.from(partner).sort(),
222
+ taxCategory: Array.from(tax).sort(),
223
+ businessCategory: Array.from(biz).sort(),
224
+ };
225
+ },
226
+ loadError,
227
+ reload() {
228
+ setReloadNonce((nonce) => nonce + 1);
229
+ },
230
+ };
231
+ }, [bookAccounts, businessCategories, records, taxCategories, loadError]);
232
+ return (_jsx(EntriesContext.Provider, { value: value, children: props.children }));
233
+ }
234
+ export function replaceFiscalPeriodEntryRecords(current, fiscalPeriodId, nextRecords) {
235
+ if (fiscalPeriodId == null || fiscalPeriodId.length === 0)
236
+ return [];
237
+ return [
238
+ ...current.filter((record) => record.fiscalPeriodId !== fiscalPeriodId),
239
+ ...nextRecords,
240
+ ];
241
+ }
242
+ export function removeEntryRecord(current, entryId) {
243
+ return current.filter((record) => record.id !== entryId);
244
+ }
245
+ function mapRemoteEntryToRecord(input) {
246
+ const lines = input.entry.lines.map((line) => ({
247
+ side: line.side,
248
+ accountName: mapBookAccountName(line.bookAccountId, input.accounts),
249
+ accountType: mapAccountType(line.bookAccountId, input.accounts, "asset"),
250
+ amount: formatAmount(line.amount),
251
+ bookAccountId: line.bookAccountId,
252
+ }));
253
+ const debitLine = lines.find((line) => line.side === "debit") ?? null;
254
+ const creditLine = lines.find((line) => line.side === "credit") ?? null;
255
+ const headerPartner = input.entry.lines[0]?.partnerName ??
256
+ input.entry.lines[1]?.partnerName ??
257
+ "";
258
+ const headerTax = mapTaxName(input.entry.lines[0]?.taxCategoryId ??
259
+ input.entry.lines[1]?.taxCategoryId ??
260
+ "", input.taxes);
261
+ const headerBiz = mapBusinessName(input.entry.lines[0]?.businessCategoryId ??
262
+ input.entry.lines[1]?.businessCategoryId ??
263
+ "", input.businesses);
264
+ const date = input.entry.date;
265
+ return {
266
+ id: input.entry.id,
267
+ fiscalPeriodId: input.fiscalPeriodId,
268
+ date,
269
+ weekday: weekdayJa(date),
270
+ lines,
271
+ debit: debitLine?.accountName ?? "",
272
+ debitType: debitLine?.accountType ?? "asset",
273
+ debitAmount: debitLine?.amount ?? "0",
274
+ credit: creditLine?.accountName ?? "",
275
+ creditType: creditLine?.accountType ?? "liability",
276
+ creditAmount: creditLine?.amount ?? "0",
277
+ description: input.entry.description,
278
+ partner: headerPartner,
279
+ businessRate: String(Math.round((input.entry.businessRate ?? 1) * 100)),
280
+ taxCategory: headerTax,
281
+ businessCategory: headerBiz,
282
+ localId: input.entry.localId,
283
+ debitBookAccountId: debitLine?.bookAccountId,
284
+ creditBookAccountId: creditLine?.bookAccountId,
285
+ debitTaxCategoryId: input.entry.lines.find((l) => l.side === "debit")
286
+ ?.taxCategoryId,
287
+ creditTaxCategoryId: input.entry.lines.find((l) => l.side === "credit")
288
+ ?.taxCategoryId,
289
+ debitBusinessCategoryId: input.entry.lines.find((l) => l.side === "debit")
290
+ ?.businessCategoryId,
291
+ creditBusinessCategoryId: input.entry.lines.find((l) => l.side === "credit")
292
+ ?.businessCategoryId,
293
+ };
294
+ }
295
+ function mapBookAccountName(id, accounts) {
296
+ if (id == null || id.length === 0)
297
+ return "";
298
+ return accounts.find((account) => account.id === id)?.name ?? id;
299
+ }
300
+ function mapTaxName(idOrName, categories) {
301
+ if (idOrName.length === 0)
302
+ return "対象外";
303
+ return (categories.find((category) => category.id === idOrName)?.name ??
304
+ categories.find((category) => category.name === idOrName)?.name ??
305
+ idOrName);
306
+ }
307
+ function mapBusinessName(idOrName, categories) {
308
+ if (idOrName.length === 0)
309
+ return "対象外";
310
+ return (categories.find((category) => category.id === idOrName)?.name ??
311
+ categories.find((category) => category.name === idOrName)?.name ??
312
+ idOrName);
313
+ }
314
+ function mapAccountType(id, accounts, fallback) {
315
+ if (id == null)
316
+ return fallback;
317
+ return (accounts.find((account) => account.id === id)?.accountType ??
318
+ fallback);
319
+ }
320
+ function formatAmount(value) {
321
+ return new Intl.NumberFormat("ja-JP").format(Math.abs(value));
322
+ }
323
+ function buildEntryApiLinesFromDraft(draft, master, errorContext) {
324
+ const lines = draft.lines.map((line) => ({
325
+ side: line.side,
326
+ bookAccountId: resolveBookAccountId({
327
+ explicitId: line.bookAccountId,
328
+ accountName: line.accountName,
329
+ accountType: line.accountType,
330
+ accounts: master.accounts,
331
+ }) ?? "",
332
+ amount: parseAmount(line.amount),
333
+ partnerName: draft.partner,
334
+ taxCategoryId: resolveTaxCategoryId(null, draft.taxCategory, master.taxes),
335
+ businessCategoryId: resolveBusinessCategoryId(null, draft.businessCategory, master.businesses),
336
+ }));
337
+ if (lines.some((line) => line.bookAccountId === "")) {
338
+ throw new AppError({
339
+ messageForDeveloper: errorContext.messageForDeveloper,
340
+ messageForUser: errorContext.messageForUser,
341
+ originalMessage: null,
342
+ statusCode: null,
343
+ });
344
+ }
345
+ return lines;
346
+ }
347
+ export function useOpenkkEntries() {
348
+ const value = useContext(EntriesContext);
349
+ if (value == null) {
350
+ throw new AppError({
351
+ messageForDeveloper: "useOpenkkEntries must be used within OpenkkEntriesProvider",
352
+ messageForUser: "仕訳データを読み込めませんでした",
353
+ originalMessage: null,
354
+ statusCode: null,
355
+ });
356
+ }
357
+ return value;
358
+ }
359
+ //# sourceMappingURL=entries-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entries-state.js","sourceRoot":"","sources":["../../src/entries/entries-state.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type EntryAccountVisualType, type EntryRecord } from "@rubydogjp/openkk-client-domain";
2
+ import type { EntryApiLineInput, MasterBookAccount, MasterBusinessCategory, MasterTaxCategory } from "@rubydogjp/openkk-client-ports";
3
+ export type ImportMaster = {
4
+ accounts: Pick<MasterBookAccount, "id" | "name" | "accountType">[];
5
+ taxes: Pick<MasterTaxCategory, "id" | "name">[];
6
+ businesses: Pick<MasterBusinessCategory, "id" | "name">[];
7
+ };
8
+ export declare function safeRate(value: string): number;
9
+ /**
10
+ * 勘定科目を ID で解決する。明示 ID → 名称+型 → 名称 の順でフォールバックし、
11
+ * 見つからなければ null を返す。
12
+ */
13
+ export declare function resolveBookAccountId(input: {
14
+ explicitId?: string | null;
15
+ accountName: string;
16
+ accountType?: EntryAccountVisualType;
17
+ accounts: Pick<MasterBookAccount, "id" | "name" | "accountType">[];
18
+ }): string | null;
19
+ export declare function resolveTaxCategoryId(explicitId: string | null, name: string, categories: Pick<MasterTaxCategory, "id" | "name">[]): string;
20
+ export declare function resolveBusinessCategoryId(explicitId: string | null, name: string, categories: Pick<MasterBusinessCategory, "id" | "name">[]): string;
21
+ /**
22
+ * 仕訳レコードを取込み用ペイロードへ変換する。
23
+ * 取込み(CSV/JSON/デモseed)とサーバ送信で同じ解決規約を使うための単一実装。
24
+ */
25
+ export declare function entryRecordToImportPayload(entry: EntryRecord, master: ImportMaster): {
26
+ date: string;
27
+ description: string;
28
+ localId?: string;
29
+ businessRate: number;
30
+ lines: EntryApiLineInput[];
31
+ };
32
+ //# sourceMappingURL=import-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-mapping.d.ts","sourceRoot":"","sources":["../../src/entries/import-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;IACnE,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;IAChD,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;CAC3D,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;CACpE,GAAG,MAAM,GAAG,IAAI,CAiBhB;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,GACnD,MAAM,CAWR;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,GACxD,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,GACnB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CA+CA"}
@@ -0,0 +1,87 @@
1
+ import { AppError, getEntryLines, parseAmount, parseBusinessRate, } from "@rubydogjp/openkk-client-domain";
2
+ export function safeRate(value) {
3
+ return parseBusinessRate(value);
4
+ }
5
+ /**
6
+ * 勘定科目を ID で解決する。明示 ID → 名称+型 → 名称 の順でフォールバックし、
7
+ * 見つからなければ null を返す。
8
+ */
9
+ export function resolveBookAccountId(input) {
10
+ if (input.explicitId != null && input.explicitId.length > 0) {
11
+ const byId = input.accounts.find((account) => account.id === input.explicitId);
12
+ if (byId != null)
13
+ return byId.id;
14
+ }
15
+ const byNameAndType = input.accounts.find((account) => account.name === input.accountName &&
16
+ (input.accountType == null || account.accountType === input.accountType));
17
+ if (byNameAndType != null)
18
+ return byNameAndType.id;
19
+ const found = input.accounts.find((account) => account.name === input.accountName);
20
+ return found?.id ?? null;
21
+ }
22
+ export function resolveTaxCategoryId(explicitId, name, categories) {
23
+ if (explicitId != null && explicitId.length > 0) {
24
+ const byId = categories.find((category) => category.id === explicitId);
25
+ if (byId != null)
26
+ return byId.id;
27
+ const byName = categories.find((category) => category.name === explicitId);
28
+ if (byName != null)
29
+ return byName.id;
30
+ }
31
+ return (categories.find((category) => category.name === name)?.id ??
32
+ (name.trim() === "" ? "tax_exempt" : name));
33
+ }
34
+ export function resolveBusinessCategoryId(explicitId, name, categories) {
35
+ if (explicitId != null && explicitId.length > 0) {
36
+ const byId = categories.find((category) => category.id === explicitId);
37
+ if (byId != null)
38
+ return byId.id;
39
+ const byName = categories.find((category) => category.name === explicitId);
40
+ if (byName != null)
41
+ return byName.id;
42
+ }
43
+ return (categories.find((category) => category.name === name)?.id ??
44
+ (name.trim() === "" ? "biz_none" : name));
45
+ }
46
+ /**
47
+ * 仕訳レコードを取込み用ペイロードへ変換する。
48
+ * 取込み(CSV/JSON/デモseed)とサーバ送信で同じ解決規約を使うための単一実装。
49
+ */
50
+ export function entryRecordToImportPayload(entry, master) {
51
+ const lines = getEntryLines(entry).map((line) => ({
52
+ side: line.side,
53
+ bookAccountId: resolveBookAccountId({
54
+ explicitId: line.bookAccountId,
55
+ accountName: line.accountName,
56
+ accountType: line.accountType,
57
+ accounts: master.accounts,
58
+ }) ?? "",
59
+ amount: parseAmount(line.amount),
60
+ partnerName: entry.partner,
61
+ taxCategoryId: "",
62
+ businessCategoryId: "",
63
+ }));
64
+ if (lines.some((line) => line.bookAccountId === "")) {
65
+ throw new AppError({
66
+ messageForDeveloper: "entries.import: unresolved bookAccountId",
67
+ messageForUser: "勘定科目の解決に失敗したため取込みできませんでした",
68
+ originalMessage: null,
69
+ statusCode: null,
70
+ });
71
+ }
72
+ const taxCategoryId = resolveTaxCategoryId(entry.debitTaxCategoryId ?? entry.creditTaxCategoryId ?? null, entry.taxCategory, master.taxes);
73
+ const businessCategoryId = resolveBusinessCategoryId(entry.debitBusinessCategoryId ?? entry.creditBusinessCategoryId ?? null, entry.businessCategory, master.businesses);
74
+ const linesWithCategories = lines.map((line) => ({
75
+ ...line,
76
+ taxCategoryId: taxCategoryId,
77
+ businessCategoryId: businessCategoryId,
78
+ }));
79
+ return {
80
+ date: entry.date,
81
+ description: entry.description,
82
+ localId: entry.localId,
83
+ businessRate: safeRate(entry.businessRate),
84
+ lines: linesWithCategories,
85
+ };
86
+ }
87
+ //# sourceMappingURL=import-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-mapping.js","sourceRoot":"","sources":["../../src/entries/import-mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export * from "./shared/backend-api-context";
2
+ export * from "./shared/maintenance-state";
3
+ export * from "./shared/print-adapter-context";
4
+ export * from "./shared/openkk-config-context";
5
+ export * from "./shared/brand-config-context";
6
+ export * from "./shared/callouts-context";
7
+ export * from "./shared/openkk-app-state";
8
+ export * from "./shared/closing-state";
9
+ export * from "./entries/entries-state";
10
+ export * from "./assist/assist-state";
11
+ export * from "./print/print-state";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAE1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export * from "./shared/backend-api-context";
2
+ export * from "./shared/maintenance-state";
3
+ export * from "./shared/print-adapter-context";
4
+ export * from "./shared/openkk-config-context";
5
+ export * from "./shared/brand-config-context";
6
+ export * from "./shared/callouts-context";
7
+ export * from "./shared/openkk-app-state";
8
+ export * from "./shared/closing-state";
9
+ export * from "./entries/entries-state";
10
+ export * from "./assist/assist-state";
11
+ export * from "./print/print-state";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAE1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AAEvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function usePrintDocument(): (html: string) => void;
2
+ //# sourceMappingURL=print-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-state.d.ts","sourceRoot":"","sources":["../../src/print/print-state.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAGzD"}
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import { useCallback } from "react";
3
+ import { usePrintAdapter } from "../shared/print-adapter-context";
4
+ export function usePrintDocument() {
5
+ const adapter = usePrintAdapter();
6
+ return useCallback((html) => adapter.openPrint(html), [adapter]);
7
+ }
8
+ //# sourceMappingURL=print-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-state.js","sourceRoot":"","sources":["../../src/print/print-state.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,OAAO,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from "react";
2
+ import type { OpenkkBackendPort } from "@rubydogjp/openkk-client-ports";
3
+ export declare function BackendApiProvider(props: {
4
+ api: OpenkkBackendPort;
5
+ children: ReactNode;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export declare function useBackendApi(): OpenkkBackendPort;
8
+ //# sourceMappingURL=backend-api-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-api-context.d.ts","sourceRoot":"","sources":["../../src/shared/backend-api-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,GAAG,EAAE,iBAAiB,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAMA;AAED,wBAAgB,aAAa,IAAI,iBAAiB,CAYjD"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext } from "react";
4
+ import { AppError } from "@rubydogjp/openkk-client-domain";
5
+ const BackendApiContext = createContext(null);
6
+ export function BackendApiProvider(props) {
7
+ return (_jsx(BackendApiContext.Provider, { value: props.api, children: props.children }));
8
+ }
9
+ export function useBackendApi() {
10
+ const value = useContext(BackendApiContext);
11
+ if (value == null) {
12
+ throw new AppError({
13
+ messageForDeveloper: "useBackendApi: BackendApiProvider が祖先にありません。app boot 時に inject してください。",
14
+ messageForUser: "アプリの初期化に失敗しました",
15
+ originalMessage: null,
16
+ statusCode: null,
17
+ });
18
+ }
19
+ return value;
20
+ }
21
+ //# sourceMappingURL=backend-api-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-api-context.js","sourceRoot":"","sources":["../../src/shared/backend-api-context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,MAAM,iBAAiB,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAExE,MAAM,UAAU,kBAAkB,CAAC,KAGlC;IACC,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,YACzC,KAAK,CAAC,QAAQ,GACY,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC5C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAAC;YACjB,mBAAmB,EACjB,wEAAwE;YAC1E,cAAc,EAAE,gBAAgB;YAChC,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from "react";
2
+ import type { BrandConfig } from "@rubydogjp/openkk-client-domain";
3
+ export declare function BrandConfigProvider(props: {
4
+ config: BrandConfig;
5
+ children: ReactNode;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export declare function useBrandConfig(): BrandConfig;
8
+ //# sourceMappingURL=brand-config-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-config-context.d.ts","sourceRoot":"","sources":["../../src/shared/brand-config-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAInE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAMA;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext } from "react";
4
+ const BrandConfigContext = createContext({});
5
+ export function BrandConfigProvider(props) {
6
+ return (_jsx(BrandConfigContext.Provider, { value: props.config, children: props.children }));
7
+ }
8
+ export function useBrandConfig() {
9
+ return useContext(BrandConfigContext);
10
+ }
11
+ //# sourceMappingURL=brand-config-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-config-context.js","sourceRoot":"","sources":["../../src/shared/brand-config-context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAGlE,MAAM,kBAAkB,GAAG,aAAa,CAAc,EAAE,CAAC,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,KAGnC;IACC,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,YAC7C,KAAK,CAAC,QAAQ,GACa,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACxC,CAAC"}