@bolta-io/cli 0.0.18 → 0.1.1
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/CHANGELOG.md +12 -0
- package/CLAUDE.md +29 -4
- package/README.md +42 -4
- package/dist/bin/bolta.js +16 -2
- package/dist/bin/bolta.js.map +1 -1
- package/dist/src/client/bolta-client.d.ts +10 -1
- package/dist/src/client/bolta-client.d.ts.map +1 -1
- package/dist/src/client/bolta-client.js +26 -0
- package/dist/src/client/bolta-client.js.map +1 -1
- package/dist/src/commands/cash-receipt/cancel.d.ts +5 -0
- package/dist/src/commands/cash-receipt/cancel.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/cancel.js +27 -0
- package/dist/src/commands/cash-receipt/cancel.js.map +1 -0
- package/dist/src/commands/cash-receipt/index.d.ts +3 -0
- package/dist/src/commands/cash-receipt/index.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/index.js +63 -0
- package/dist/src/commands/cash-receipt/index.js.map +1 -0
- package/dist/src/commands/cash-receipt/issue.d.ts +8 -0
- package/dist/src/commands/cash-receipt/issue.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/issue.js +29 -0
- package/dist/src/commands/cash-receipt/issue.js.map +1 -0
- package/dist/src/commands/cash-receipt/status.d.ts +5 -0
- package/dist/src/commands/cash-receipt/status.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/status.js +22 -0
- package/dist/src/commands/cash-receipt/status.js.map +1 -0
- package/dist/src/commands/cash-receipt/validation.d.ts +3 -0
- package/dist/src/commands/cash-receipt/validation.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/validation.js +15 -0
- package/dist/src/commands/cash-receipt/validation.js.map +1 -0
- package/dist/src/commands/examples/index.d.ts.map +1 -1
- package/dist/src/commands/examples/index.js +65 -0
- package/dist/src/commands/examples/index.js.map +1 -1
- package/dist/src/commands/guide/index.d.ts.map +1 -1
- package/dist/src/commands/guide/index.js +49 -3
- package/dist/src/commands/guide/index.js.map +1 -1
- package/dist/src/commands/schema/index.d.ts.map +1 -1
- package/dist/src/commands/schema/index.js +1 -0
- package/dist/src/commands/schema/index.js.map +1 -1
- package/dist/src/types/api.d.ts +46 -0
- package/dist/src/types/api.d.ts.map +1 -1
- package/dist/src/utils/client.d.ts +9 -1
- package/dist/src/utils/client.d.ts.map +1 -1
- package/dist/src/utils/client.js +4 -6
- package/dist/src/utils/client.js.map +1 -1
- package/dist/src/utils/errors.d.ts +2 -2
- package/dist/src/utils/errors.d.ts.map +1 -1
- package/dist/src/utils/errors.js +4 -4
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/validators/schemas.d.ts +181 -0
- package/dist/src/validators/schemas.d.ts.map +1 -1
- package/dist/src/validators/schemas.js +213 -0
- package/dist/src/validators/schemas.js.map +1 -1
- package/llms.txt +28 -8
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @bolta-io/cli
|
|
2
2
|
|
|
3
|
+
## 0.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a5913fb: npm에서 제거된 0.1.0 버전과 충돌하지 않도록 0.1.1로 다시 배포하고, 릴리스 전에 전체 게시 이력을 확인합니다.
|
|
8
|
+
|
|
9
|
+
## 0.1.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 3f0976f: 현금영수증 발행, 상태 조회, 전액 취소 명령을 추가합니다. 발행 입력 스키마와 수취인 유형별 예제도 함께 제공합니다.
|
|
14
|
+
|
|
3
15
|
## 0.0.18
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/CLAUDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bolta CLI - AI 사용 가이드
|
|
2
2
|
|
|
3
|
-
이 프로젝트는 Bolta API의 공식 CLI 도구입니다.
|
|
3
|
+
이 프로젝트는 Bolta API의 공식 CLI 도구입니다. 전자세금계산서와 현금영수증 발행/조회/수정을 자동화합니다.
|
|
4
4
|
|
|
5
5
|
## 빠른 시작
|
|
6
6
|
|
|
@@ -16,13 +16,13 @@ bolta config set supplier-key SupplierKey_abc123
|
|
|
16
16
|
|
|
17
17
|
## 핵심 개념: Supplier Key (중요!)
|
|
18
18
|
|
|
19
|
-
supplierKey는
|
|
19
|
+
supplierKey는 세금계산서나 현금영수증을 발행하는 **공급자 본인**을 식별하는 키입니다.
|
|
20
20
|
|
|
21
21
|
- 획득: 공급자의 사업자 정보로 `bolta supplier create` 호출 → 응답의 supplierKey
|
|
22
22
|
- 설정: `bolta config set supplier-key <값>` 또는 `BOLTA_SUPPLIER_KEY` 환경변수
|
|
23
23
|
- API 키 단위로 독립 관리 (test_/live_ 키별로 별도 생성 필요, 상호 호환 안 됨)
|
|
24
24
|
|
|
25
|
-
**주의: Supplier-Key에
|
|
25
|
+
**주의: Supplier-Key에 받는 쪽의 키를 넣지 마세요.** 받는 쪽 정보는 세금계산서 JSON의 `supplied` 또는 현금영수증 JSON의 `recipient` 필드에 포함합니다.
|
|
26
26
|
|
|
27
27
|
> 구 명칭 `customer`(명령어·`--customer-key`·`BOLTA_CUSTOMER_KEY`·`config set customer-key`)는 deprecated이며 당분간 동작합니다(경고 출력).
|
|
28
28
|
|
|
@@ -80,6 +80,28 @@ bolta invoice issue --data '{
|
|
|
80
80
|
bolta invoice get <issuanceKey>
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
### 현금영수증 발행
|
|
84
|
+
|
|
85
|
+
현금영수증 발행·취소는 요청 접수 후 상태가 확정되는 비동기 작업입니다.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
bolta cash-receipt issue --reference-id cash-2026-001 --data '{
|
|
89
|
+
"itemName": "서비스 이용료",
|
|
90
|
+
"issuer": {
|
|
91
|
+
"businessRegistrationNumber": "5648102684",
|
|
92
|
+
"organizationName": "(주) 볼타코퍼레이션",
|
|
93
|
+
"representativeName": "이문혁",
|
|
94
|
+
"telephone": "02-1234-5678"
|
|
95
|
+
},
|
|
96
|
+
"recipient": { "type": "PHONE", "value": "010-1234-5678" },
|
|
97
|
+
"amount": { "supplyAmount": 100, "vatAmount": 10, "taxFreeAmount": 0 }
|
|
98
|
+
}'
|
|
99
|
+
|
|
100
|
+
bolta cash-receipt status --reference-id cash-2026-001
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`202 Accepted`만으로 발행 성공으로 판단하지 마세요. `status`가 `ISSUED`인지 확인하세요.
|
|
104
|
+
|
|
83
105
|
## 커맨드 빠른 참조
|
|
84
106
|
|
|
85
107
|
| 커맨드 | 설명 | 데이터 필요 |
|
|
@@ -96,6 +118,9 @@ bolta invoice get <issuanceKey>
|
|
|
96
118
|
| `bolta invoice amend termination <key> --date <date>` | 수정: 계약해제 | - |
|
|
97
119
|
| `bolta invoice amend change-supply-cost <key>` | 수정: 가액변동 | --data |
|
|
98
120
|
| `bolta invoice amend double-issuance <key>` | 수정: 착오 이중발급 | - |
|
|
121
|
+
| `bolta cash-receipt issue --reference-id <id>` | 현금영수증 발행 | --data |
|
|
122
|
+
| `bolta cash-receipt status --reference-id <id>` | 현금영수증 상태 조회 | - |
|
|
123
|
+
| `bolta cash-receipt cancel <key> --reference-id <id>` | 현금영수증 전액 취소 | - |
|
|
99
124
|
| `bolta config set <key> <value>` | 설정 | - |
|
|
100
125
|
| `bolta config show` | 설정 확인 | - |
|
|
101
126
|
| `bolta config test` | 연결 테스트 | - |
|
|
@@ -126,7 +151,7 @@ bolta invoice get <issuanceKey>
|
|
|
126
151
|
|-----------|------|------|
|
|
127
152
|
| `AUTH_ERROR` | API 키 없음/잘못됨 | `bolta config set api-key <key>` |
|
|
128
153
|
| `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema <command>`로 스키마 확인 |
|
|
129
|
-
| `INPUT_ERROR` |
|
|
154
|
+
| `INPUT_ERROR` | 명령어·옵션·입력 방식 오류 | `bolta --help` 또는 하위 명령의 `--help`로 사용법 확인 |
|
|
130
155
|
| `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
|
|
131
156
|
| `HTTP_400` | 잘못된 요청 | error.message 확인, 필수 필드 누락 체크 |
|
|
132
157
|
| `HTTP_404` | 리소스 없음 | issuanceKey/supplierKey 확인 |
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# bolta
|
|
2
2
|
|
|
3
|
-
Bolta API CLI - 한국
|
|
3
|
+
Bolta API CLI - 한국 전자세금계산서와 현금영수증 발행/조회/관리 도구
|
|
4
4
|
|
|
5
|
-
AI 에이전트(Claude Code 등)가
|
|
5
|
+
AI 에이전트(Claude Code 등)가 세금계산서와 현금영수증 업무를 자동화할 때 사용할 수 있도록 설계되었습니다.
|
|
6
6
|
|
|
7
7
|
## 설치
|
|
8
8
|
|
|
@@ -145,6 +145,43 @@ bolta invoice amend change-supply-cost <issuanceKey> --data '{
|
|
|
145
145
|
bolta invoice amend double-issuance <issuanceKey>
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
+
#### 현금영수증
|
|
149
|
+
|
|
150
|
+
현금영수증 발행과 취소는 비동기입니다. API가 요청을 접수하면 `issuanceKey`를 반환하며, 최종 결과는 `status` 명령으로 확인합니다.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# 휴대폰번호로 현금영수증 발행
|
|
154
|
+
bolta cash-receipt issue --reference-id cash-2026-001 --data '{
|
|
155
|
+
"itemName": "서비스 이용료",
|
|
156
|
+
"issuer": {
|
|
157
|
+
"businessRegistrationNumber": "5648102684",
|
|
158
|
+
"organizationName": "(주) 볼타코퍼레이션",
|
|
159
|
+
"representativeName": "이문혁",
|
|
160
|
+
"telephone": "02-1234-5678"
|
|
161
|
+
},
|
|
162
|
+
"recipient": {
|
|
163
|
+
"type": "PHONE",
|
|
164
|
+
"value": "010-1234-5678"
|
|
165
|
+
},
|
|
166
|
+
"amount": {
|
|
167
|
+
"supplyAmount": 100,
|
|
168
|
+
"vatAmount": 10,
|
|
169
|
+
"taxFreeAmount": 0
|
|
170
|
+
}
|
|
171
|
+
}'
|
|
172
|
+
|
|
173
|
+
# 발행 상태 확인
|
|
174
|
+
bolta cash-receipt status --reference-id cash-2026-001
|
|
175
|
+
|
|
176
|
+
# 발행 완료 건 전액 취소
|
|
177
|
+
bolta cash-receipt cancel <issuanceKey> --reference-id cash-2026-001-cancel
|
|
178
|
+
|
|
179
|
+
# 취소 상태 확인
|
|
180
|
+
bolta cash-receipt status --reference-id cash-2026-001-cancel
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
`PENDING`과 `REQUEST_SUCCESS`는 처리 중입니다. `ISSUED` 또는 `CANCELED` 상태를 확인한 뒤 성공으로 처리하세요. 부분 취소는 지원하지 않습니다.
|
|
184
|
+
|
|
148
185
|
#### 설정
|
|
149
186
|
|
|
150
187
|
```bash
|
|
@@ -156,7 +193,7 @@ bolta config test # API 연결 테스트
|
|
|
156
193
|
#### 도움말
|
|
157
194
|
|
|
158
195
|
```bash
|
|
159
|
-
# 주요 개념 안내 (supplier-key, payment, workflow, glossary)
|
|
196
|
+
# 주요 개념 안내 (supplier-key, payment, workflow, cash-receipt, glossary)
|
|
160
197
|
bolta guide [topic]
|
|
161
198
|
|
|
162
199
|
# 바로 쓸 수 있는 샘플 JSON
|
|
@@ -168,6 +205,7 @@ bolta schema [command]
|
|
|
168
205
|
|
|
169
206
|
`invoice issue`, `invoice issue-request`, `amend change-supply-cost` 입력은 국세청 XML 전송 제한에 맞춰 로컬에서 먼저 검증됩니다. 필드별 길이 제한은 `bolta schema invoice-issue`로 확인할 수 있습니다.
|
|
170
207
|
`taxType`은 `TAXABLE`(과세), `ZERO_RATE`(영세율), `TAX_FREE`(면세) 중 하나이며 필수입니다. `ZERO_RATE`은 모든 품목의 `tax`를 `0`으로, `TAX_FREE`는 모든 품목의 `tax`를 `null`로 전달합니다.
|
|
208
|
+
현금영수증 입력 규칙은 `bolta schema cash-receipt-issue`로 확인할 수 있습니다. 수취인 유형별 예제는 `bolta examples cash-receipt-issue`, `cash-receipt-issue-business`, `cash-receipt-issue-self`를 사용하세요.
|
|
171
209
|
|
|
172
210
|
#### 업데이트
|
|
173
211
|
|
|
@@ -222,7 +260,7 @@ cat invoice.json | bolta invoice issue --stdin
|
|
|
222
260
|
|------|------|------|
|
|
223
261
|
| `AUTH_ERROR` | API 키 없음/잘못됨 | `bolta config set api-key <key>` |
|
|
224
262
|
| `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema <command>`로 스키마 확인 |
|
|
225
|
-
| `INPUT_ERROR` |
|
|
263
|
+
| `INPUT_ERROR` | 명령어·옵션·입력 방식 오류 | `bolta --help` 또는 하위 명령의 `--help`로 사용법 확인 |
|
|
226
264
|
| `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
|
|
227
265
|
| `HTTP_400` | 잘못된 요청 | error.message 확인 |
|
|
228
266
|
| `HTTP_404` | 리소스 없음 | issuanceKey/supplierKey 확인 |
|
package/dist/bin/bolta.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from 'commander';
|
|
2
|
+
import { Command, CommanderError } from 'commander';
|
|
3
3
|
import { registerSupplierCommands } from '../src/commands/supplier/index.js';
|
|
4
4
|
import { registerCertificateCommands } from '../src/commands/certificate/index.js';
|
|
5
5
|
import { registerInvoiceCommands } from '../src/commands/invoice/index.js';
|
|
@@ -9,13 +9,20 @@ import { registerSchemaCommand } from '../src/commands/schema/index.js';
|
|
|
9
9
|
import { registerUpdateCommands } from '../src/commands/update/index.js';
|
|
10
10
|
import { maybeNudgeUpdate, refreshUpdateCache, UPDATE_CACHE_COMMAND, } from '../src/commands/update/nudge.js';
|
|
11
11
|
import { registerGuideCommand } from '../src/commands/guide/index.js';
|
|
12
|
+
import { registerCashReceiptCommands } from '../src/commands/cash-receipt/index.js';
|
|
12
13
|
import { outputError, deprecationWarning } from '../src/utils/output.js';
|
|
14
|
+
import { BoltaInputError } from '../src/utils/errors.js';
|
|
13
15
|
import { getCurrentVersion } from '../src/utils/version.js';
|
|
14
16
|
import { loadConfig, saveConfig } from '../src/config/config-manager.js';
|
|
15
17
|
const program = new Command();
|
|
18
|
+
program
|
|
19
|
+
.configureOutput({
|
|
20
|
+
outputError: () => { },
|
|
21
|
+
})
|
|
22
|
+
.exitOverride();
|
|
16
23
|
program
|
|
17
24
|
.name('bolta')
|
|
18
|
-
.description('Bolta API CLI -
|
|
25
|
+
.description('Bolta API CLI - 전자세금계산서·현금영수증 발행/조회/관리 도구 (AI 에이전트 최적화)')
|
|
19
26
|
.version(getCurrentVersion())
|
|
20
27
|
.option('--api-key <key>', 'Bolta API 키 (환경변수 BOLTA_API_KEY 대체)')
|
|
21
28
|
.option('--supplier-key <key>', 'Supplier Key (환경변수 BOLTA_SUPPLIER_KEY 대체)')
|
|
@@ -38,6 +45,7 @@ program
|
|
|
38
45
|
registerSupplierCommands(program);
|
|
39
46
|
registerCertificateCommands(program);
|
|
40
47
|
registerInvoiceCommands(program);
|
|
48
|
+
registerCashReceiptCommands(program);
|
|
41
49
|
registerConfigCommands(program);
|
|
42
50
|
registerExamplesCommand(program);
|
|
43
51
|
registerSchemaCommand(program);
|
|
@@ -95,6 +103,12 @@ program
|
|
|
95
103
|
await refreshUpdateCache();
|
|
96
104
|
});
|
|
97
105
|
program.parseAsync(process.argv).catch((err) => {
|
|
106
|
+
if (err instanceof CommanderError) {
|
|
107
|
+
if (err.exitCode === 0)
|
|
108
|
+
return;
|
|
109
|
+
const message = err.message.replace(/^error:\s*/, '');
|
|
110
|
+
outputError(new BoltaInputError(message, "명령어와 필수 옵션을 확인하세요. 'bolta --help' 또는 'bolta <command> --help'로 사용법을 확인할 수 있습니다."));
|
|
111
|
+
}
|
|
98
112
|
outputError(err);
|
|
99
113
|
});
|
|
100
114
|
//# sourceMappingURL=bolta.js.map
|
package/dist/bin/bolta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CreateTaxInvoiceRequest, IssuanceResponse, TaxInvoiceDetail, StatusResponse, AmendTerminationRequest, AmendChangeSupplyCostRequest, CreateSupplierRequest, SupplierResponse, CreateCustomerRequest, LegacyCustomerResponse, CertificateUrlResponse } from '../types/api.js';
|
|
1
|
+
import type { CreateTaxInvoiceRequest, IssuanceResponse, TaxInvoiceDetail, StatusResponse, AmendTerminationRequest, AmendChangeSupplyCostRequest, CreateSupplierRequest, SupplierResponse, CreateCustomerRequest, LegacyCustomerResponse, CertificateUrlResponse, CreateCashReceiptRequest, CashReceiptCancellationResponse, CashReceiptStatusResponse } from '../types/api.js';
|
|
2
2
|
interface ClientConfig {
|
|
3
3
|
apiKey: string;
|
|
4
4
|
baseUrl: string;
|
|
@@ -38,6 +38,15 @@ export declare class BoltaClient {
|
|
|
38
38
|
amendTermination(issuanceKey: string, data: AmendTerminationRequest, supplierKey?: string): Promise<IssuanceResponse>;
|
|
39
39
|
amendChangeSupplyCost(issuanceKey: string, data: AmendChangeSupplyCostRequest, supplierKey?: string): Promise<IssuanceResponse>;
|
|
40
40
|
amendDoubleIssuance(issuanceKey: string, supplierKey?: string): Promise<IssuanceResponse>;
|
|
41
|
+
issueCashReceipt(data: CreateCashReceiptRequest, options: {
|
|
42
|
+
supplierKey: string;
|
|
43
|
+
referenceId: string;
|
|
44
|
+
}): Promise<IssuanceResponse>;
|
|
45
|
+
getCashReceiptStatus(clientReferenceId: string): Promise<CashReceiptStatusResponse>;
|
|
46
|
+
cancelCashReceipt(issuanceKey: string, options: {
|
|
47
|
+
supplierKey: string;
|
|
48
|
+
referenceId: string;
|
|
49
|
+
}): Promise<CashReceiptCancellationResponse>;
|
|
41
50
|
private certificatePath;
|
|
42
51
|
private request;
|
|
43
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,6 +121,32 @@ export class BoltaClient {
|
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
// ========================
|
|
124
|
+
// Cash Receipt Methods
|
|
125
|
+
// ========================
|
|
126
|
+
async issueCashReceipt(data, options) {
|
|
127
|
+
return this.request({
|
|
128
|
+
method: 'POST',
|
|
129
|
+
path: '/cashReceipts',
|
|
130
|
+
body: data,
|
|
131
|
+
supplierKey: options.supplierKey,
|
|
132
|
+
referenceId: options.referenceId,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async getCashReceiptStatus(clientReferenceId) {
|
|
136
|
+
return this.request({
|
|
137
|
+
method: 'GET',
|
|
138
|
+
path: `/cashReceipts/status?clientReferenceId=${encodeURIComponent(clientReferenceId)}`,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async cancelCashReceipt(issuanceKey, options) {
|
|
142
|
+
return this.request({
|
|
143
|
+
method: 'POST',
|
|
144
|
+
path: `/cashReceipts/${encodeURIComponent(issuanceKey)}/cancellation`,
|
|
145
|
+
supplierKey: options.supplierKey,
|
|
146
|
+
referenceId: options.referenceId,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// ========================
|
|
124
150
|
// Internal Request Method
|
|
125
151
|
// ========================
|
|
126
152
|
certificatePath(key, suffix = '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/cancel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createClient } from '../../utils/client.js';
|
|
2
|
+
import { outputError, outputSuccess, verbose } from '../../utils/output.js';
|
|
3
|
+
import { clientReferenceIdSchema } from '../../validators/schemas.js';
|
|
4
|
+
import { parseOrThrow } from './validation.js';
|
|
5
|
+
export async function cancelCashReceiptAction(issuanceKey, options, command) {
|
|
6
|
+
try {
|
|
7
|
+
const globalOpts = command.optsWithGlobals();
|
|
8
|
+
const referenceId = parseOrThrow(clientReferenceIdSchema, options.referenceId);
|
|
9
|
+
const encodedIssuanceKey = encodeURIComponent(issuanceKey);
|
|
10
|
+
if (globalOpts.dryRun) {
|
|
11
|
+
outputSuccess({
|
|
12
|
+
dryRun: true,
|
|
13
|
+
requestBody: null,
|
|
14
|
+
endpoint: `POST /v1/cashReceipts/${encodedIssuanceKey}/cancellation`,
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
verbose('현금영수증 취소 요청', { issuanceKey, referenceId });
|
|
19
|
+
const { client, supplierKey } = createClient(globalOpts, { requireSupplierKey: true });
|
|
20
|
+
const result = await client.cancelCashReceipt(issuanceKey, { supplierKey, referenceId });
|
|
21
|
+
outputSuccess(result);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
outputError(err);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/cancel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,OAAgC,EAChC,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/E,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,aAAa,CAAC;gBACZ,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,yBAAyB,kBAAkB,eAAe;aACrE,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,OAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QACrD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QACzF,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6DlE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { cancelCashReceiptAction } from './cancel.js';
|
|
2
|
+
import { issueCashReceiptAction } from './issue.js';
|
|
3
|
+
import { cashReceiptStatusAction } from './status.js';
|
|
4
|
+
export function registerCashReceiptCommands(program) {
|
|
5
|
+
const cashReceipt = program
|
|
6
|
+
.command('cash-receipt')
|
|
7
|
+
.description('현금영수증 발행/상태 조회/취소');
|
|
8
|
+
cashReceipt
|
|
9
|
+
.command('issue')
|
|
10
|
+
.description('현금영수증 발행 요청 (POST /v1/cashReceipts)')
|
|
11
|
+
.option('--data <json>', '인라인 JSON 데이터')
|
|
12
|
+
.option('--file <path>', 'JSON 파일 경로')
|
|
13
|
+
.option('--stdin', '표준 입력에서 읽기')
|
|
14
|
+
.requiredOption('--reference-id <id>', '1~255자의 요청자 관리번호이자 멱등키')
|
|
15
|
+
.addHelpText('after', `
|
|
16
|
+
Notes:
|
|
17
|
+
- 202 Accepted는 요청 접수만 뜻합니다.
|
|
18
|
+
- 최종 결과는 cash-receipt status 명령으로 확인하세요.
|
|
19
|
+
- 현금영수증 발행 전에 공급자 인증서를 등록해야 합니다.
|
|
20
|
+
|
|
21
|
+
Example:
|
|
22
|
+
bolta cash-receipt issue --reference-id cash-2026-001 --data '{
|
|
23
|
+
"itemName": "서비스 이용료",
|
|
24
|
+
"issuer": {
|
|
25
|
+
"businessRegistrationNumber": "5648102684",
|
|
26
|
+
"organizationName": "(주) 볼타코퍼레이션",
|
|
27
|
+
"representativeName": "이문혁",
|
|
28
|
+
"telephone": "02-1234-5678"
|
|
29
|
+
},
|
|
30
|
+
"recipient": { "type": "PHONE", "value": "010-1234-5678" },
|
|
31
|
+
"amount": { "supplyAmount": 100, "vatAmount": 10, "taxFreeAmount": 0 }
|
|
32
|
+
}'`)
|
|
33
|
+
.action(issueCashReceiptAction);
|
|
34
|
+
cashReceipt
|
|
35
|
+
.command('status')
|
|
36
|
+
.description('현금영수증 처리 상태 조회 (GET /v1/cashReceipts/status)')
|
|
37
|
+
.requiredOption('--reference-id <id>', '발행 또는 취소 요청에 사용한 요청자 관리번호')
|
|
38
|
+
.addHelpText('after', `
|
|
39
|
+
Status:
|
|
40
|
+
PENDING, REQUEST_SUCCESS 처리 중
|
|
41
|
+
ISSUED, CANCELED 성공
|
|
42
|
+
EXTERNALLY_CANCELED 외부 취소 완료
|
|
43
|
+
REQUEST_FAILURE, ISSUE_FAILED, CANCEL_FAILED 실패
|
|
44
|
+
|
|
45
|
+
Example:
|
|
46
|
+
bolta cash-receipt status --reference-id cash-2026-001`)
|
|
47
|
+
.action(cashReceiptStatusAction);
|
|
48
|
+
cashReceipt
|
|
49
|
+
.command('cancel <issuanceKey>')
|
|
50
|
+
.description('발행된 현금영수증 전액 취소 (POST /v1/cashReceipts/{issuanceKey}/cancellation)')
|
|
51
|
+
.requiredOption('--reference-id <id>', '발행 요청과 다른 1~255자의 요청자 관리번호')
|
|
52
|
+
.addHelpText('after', `
|
|
53
|
+
Notes:
|
|
54
|
+
- 부분 취소는 지원하지 않습니다.
|
|
55
|
+
- 발행 요청과 다른 reference-id를 사용하세요.
|
|
56
|
+
- 202 Accepted는 요청 접수만 뜻합니다. 최종 결과는 status 명령으로 확인하세요.
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
bolta cash-receipt cancel MRK98JGC5KOAEIPGK8U6UO05I3EAQPLI8OE78A3I \\
|
|
60
|
+
--reference-id cash-2026-001-cancel`)
|
|
61
|
+
.action(cancelCashReceiptAction);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,MAAM,WAAW,GAAG,OAAO;SACxB,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEpC,WAAW;SACR,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;SACvC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC;SACrC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC;SAC/B,cAAc,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SAC/D,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;KAiBrB,CAAC;SACD,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAElC,WAAW;SACR,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,cAAc,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;SAClE,WAAW,CAAC,OAAO,EAAE;;;;;;;;yDAQ+B,CAAC;SACrD,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEnC,WAAW;SACR,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,oEAAoE,CAAC;SACjF,cAAc,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SACnE,WAAW,CAAC,OAAO,EAAE;;;;;;;;wCAQc,CAAC;SACpC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { DataInputOptions } from '../../types/api.js';
|
|
3
|
+
interface CashReceiptIssueOptions extends DataInputOptions {
|
|
4
|
+
referenceId: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function issueCashReceiptAction(options: CashReceiptIssueOptions, command: Command): Promise<void>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/issue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,UAAU,uBAAwB,SAAQ,gBAAgB;IACxD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createClient } from '../../utils/client.js';
|
|
2
|
+
import { resolveInput } from '../../utils/input.js';
|
|
3
|
+
import { outputError, outputSuccess, verbose } from '../../utils/output.js';
|
|
4
|
+
import { clientReferenceIdSchema, createCashReceiptSchema, } from '../../validators/schemas.js';
|
|
5
|
+
import { parseOrThrow } from './validation.js';
|
|
6
|
+
export async function issueCashReceiptAction(options, command) {
|
|
7
|
+
try {
|
|
8
|
+
const globalOpts = command.optsWithGlobals();
|
|
9
|
+
const referenceId = parseOrThrow(clientReferenceIdSchema, options.referenceId);
|
|
10
|
+
const raw = await resolveInput(options);
|
|
11
|
+
const validated = parseOrThrow(createCashReceiptSchema, raw);
|
|
12
|
+
if (globalOpts.dryRun) {
|
|
13
|
+
outputSuccess({
|
|
14
|
+
dryRun: true,
|
|
15
|
+
requestBody: validated,
|
|
16
|
+
endpoint: 'POST /v1/cashReceipts',
|
|
17
|
+
});
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
verbose('현금영수증 발행 요청', { referenceId });
|
|
21
|
+
const { client, supplierKey } = createClient(globalOpts, { requireSupplierKey: true });
|
|
22
|
+
const result = await client.issueCashReceipt(validated, { supplierKey, referenceId });
|
|
23
|
+
outputSuccess(result);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
outputError(err);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/issue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgC,EAChC,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/E,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,YAAY,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAE7D,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,aAAa,CAAC;gBACZ,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,uBAAuB;aAClC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,OAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QACtF,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EAChC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BoltaClient } from '../../client/bolta-client.js';
|
|
2
|
+
import { resolveApiKey, resolveBaseUrl } from '../../config/config-manager.js';
|
|
3
|
+
import { BoltaAuthError } from '../../utils/errors.js';
|
|
4
|
+
import { outputError, outputSuccess } from '../../utils/output.js';
|
|
5
|
+
import { clientReferenceIdSchema } from '../../validators/schemas.js';
|
|
6
|
+
import { parseOrThrow } from './validation.js';
|
|
7
|
+
export async function cashReceiptStatusAction(options, command) {
|
|
8
|
+
try {
|
|
9
|
+
const globalOpts = command.optsWithGlobals();
|
|
10
|
+
const referenceId = parseOrThrow(clientReferenceIdSchema, options.referenceId);
|
|
11
|
+
const apiKey = resolveApiKey(globalOpts.apiKey);
|
|
12
|
+
if (!apiKey)
|
|
13
|
+
throw new BoltaAuthError('API 키가 설정되지 않았습니다.');
|
|
14
|
+
const client = new BoltaClient({ apiKey, baseUrl: resolveBaseUrl() });
|
|
15
|
+
const result = await client.getCashReceiptStatus(referenceId);
|
|
16
|
+
outputSuccess(result);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
outputError(err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAgC,EAChC,OAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC9D,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAG7C,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAYrE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ZodError } from 'zod';
|
|
2
|
+
import { BoltaValidationError } from '../../utils/errors.js';
|
|
3
|
+
export function parseOrThrow(schema, input) {
|
|
4
|
+
try {
|
|
5
|
+
return schema.parse(input);
|
|
6
|
+
}
|
|
7
|
+
catch (err) {
|
|
8
|
+
if (err instanceof ZodError) {
|
|
9
|
+
const details = Object.fromEntries(err.errors.map((error) => [error.path.join('.') || 'input', error.message]));
|
|
10
|
+
throw new BoltaValidationError('입력 데이터가 유효하지 않습니다.', details);
|
|
11
|
+
}
|
|
12
|
+
throw err;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/commands/cash-receipt/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,KAAK,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,UAAU,YAAY,CAAI,MAAkB,EAAE,KAAc;IAChE,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAC5E,CAAC;YACF,MAAM,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+OpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwD9D"}
|