@bolta-io/cli 0.0.17 → 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 +18 -0
- package/CLAUDE.md +32 -5
- package/README.md +45 -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 +69 -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/invoice/amend.d.ts.map +1 -1
- package/dist/src/commands/invoice/amend.js +4 -0
- package/dist/src/commands/invoice/amend.js.map +1 -1
- package/dist/src/commands/invoice/index.d.ts.map +1 -1
- package/dist/src/commands/invoice/index.js +3 -0
- package/dist/src/commands/invoice/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 +50 -0
- package/dist/src/types/api.d.ts.map +1 -1
- package/dist/src/types/api.js +4 -1
- package/dist/src/types/api.js.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 +222 -1
- package/dist/src/validators/schemas.d.ts.map +1 -1
- package/dist/src/validators/schemas.js +281 -6
- package/dist/src/validators/schemas.js.map +1 -1
- package/llms.txt +32 -10
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
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
|
+
|
|
15
|
+
## 0.0.18
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- cbf83c3: 세금계산서 발행과 가액변동 수정발행 입력에 `taxType` 필수값과 과세유형별 세액 검증을 추가합니다.
|
|
20
|
+
|
|
3
21
|
## 0.0.17
|
|
4
22
|
|
|
5
23
|
### 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
|
|
|
@@ -53,6 +53,7 @@ bolta certificate status SupplierKey_abc123
|
|
|
53
53
|
bolta invoice issue --data '{
|
|
54
54
|
"date": "2026-03-25",
|
|
55
55
|
"purpose": "CLAIM",
|
|
56
|
+
"taxType": "TAXABLE",
|
|
56
57
|
"supplier": {
|
|
57
58
|
"identificationNumber": "1234567890",
|
|
58
59
|
"organizationName": "공급자",
|
|
@@ -79,6 +80,28 @@ bolta invoice issue --data '{
|
|
|
79
80
|
bolta invoice get <issuanceKey>
|
|
80
81
|
```
|
|
81
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
|
+
|
|
82
105
|
## 커맨드 빠른 참조
|
|
83
106
|
|
|
84
107
|
| 커맨드 | 설명 | 데이터 필요 |
|
|
@@ -95,6 +118,9 @@ bolta invoice get <issuanceKey>
|
|
|
95
118
|
| `bolta invoice amend termination <key> --date <date>` | 수정: 계약해제 | - |
|
|
96
119
|
| `bolta invoice amend change-supply-cost <key>` | 수정: 가액변동 | --data |
|
|
97
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>` | 현금영수증 전액 취소 | - |
|
|
98
124
|
| `bolta config set <key> <value>` | 설정 | - |
|
|
99
125
|
| `bolta config show` | 설정 확인 | - |
|
|
100
126
|
| `bolta config test` | 연결 테스트 | - |
|
|
@@ -125,7 +151,7 @@ bolta invoice get <issuanceKey>
|
|
|
125
151
|
|-----------|------|------|
|
|
126
152
|
| `AUTH_ERROR` | API 키 없음/잘못됨 | `bolta config set api-key <key>` |
|
|
127
153
|
| `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema <command>`로 스키마 확인 |
|
|
128
|
-
| `INPUT_ERROR` |
|
|
154
|
+
| `INPUT_ERROR` | 명령어·옵션·입력 방식 오류 | `bolta --help` 또는 하위 명령의 `--help`로 사용법 확인 |
|
|
129
155
|
| `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
|
|
130
156
|
| `HTTP_400` | 잘못된 요청 | error.message 확인, 필수 필드 누락 체크 |
|
|
131
157
|
| `HTTP_404` | 리소스 없음 | issuanceKey/supplierKey 확인 |
|
|
@@ -143,12 +169,13 @@ npm test # 테스트 실행
|
|
|
143
169
|
## 주의사항
|
|
144
170
|
|
|
145
171
|
- `purpose`: CLAIM(청구용) 또는 RECEIPT(영수용)
|
|
172
|
+
- `taxType`: TAXABLE(과세), ZERO_RATE(영세율), TAX_FREE(면세) 중 하나
|
|
146
173
|
- `items`: 최소 1개, 최대 16개
|
|
147
174
|
- `items[].specification`: 최대 60자
|
|
148
175
|
- 상호명은 최대 70자, 대표자명과 담당자 이름은 최대 30자
|
|
149
176
|
- 업태, 종목, 담당자 이메일은 최대 40자
|
|
150
177
|
- 주소와 세금계산서 비고는 최대 150자
|
|
151
|
-
- `tax`를 null로
|
|
178
|
+
- `taxType`이 TAX_FREE이면 모든 품목의 `tax`를 null로 설정하고, ZERO_RATE이면 0으로 설정
|
|
152
179
|
- 사업자등록번호는 하이픈 있어도 되고 없어도 됨 (자동 변환)
|
|
153
180
|
- 계약 해제(`amend termination`)는 원본 세금계산서의 품목 공급가액이 음수인 경우 사용 불가
|
|
154
181
|
- `--dry-run` 옵션으로 실제 API 호출 없이 요청 데이터 확인 가능
|
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
|
|
|
@@ -87,6 +87,7 @@ bolta certificate deregister <supplierKey>
|
|
|
87
87
|
bolta invoice issue --data '{
|
|
88
88
|
"date": "2026-03-25",
|
|
89
89
|
"purpose": "CLAIM",
|
|
90
|
+
"taxType": "TAXABLE",
|
|
90
91
|
"supplier": {
|
|
91
92
|
"identificationNumber": "1234567890",
|
|
92
93
|
"organizationName": "공급자 주식회사",
|
|
@@ -131,6 +132,7 @@ bolta invoice amend termination <issuanceKey> --date 2026-03-25
|
|
|
131
132
|
# 수정발행: 공급가액 변동
|
|
132
133
|
bolta invoice amend change-supply-cost <issuanceKey> --data '{
|
|
133
134
|
"date": "2026-03-25",
|
|
135
|
+
"taxType": "TAXABLE",
|
|
134
136
|
"items": [{
|
|
135
137
|
"date": "2026-03-25",
|
|
136
138
|
"name": "가격 조정",
|
|
@@ -143,6 +145,43 @@ bolta invoice amend change-supply-cost <issuanceKey> --data '{
|
|
|
143
145
|
bolta invoice amend double-issuance <issuanceKey>
|
|
144
146
|
```
|
|
145
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
|
+
|
|
146
185
|
#### 설정
|
|
147
186
|
|
|
148
187
|
```bash
|
|
@@ -154,7 +193,7 @@ bolta config test # API 연결 테스트
|
|
|
154
193
|
#### 도움말
|
|
155
194
|
|
|
156
195
|
```bash
|
|
157
|
-
# 주요 개념 안내 (supplier-key, payment, workflow, glossary)
|
|
196
|
+
# 주요 개념 안내 (supplier-key, payment, workflow, cash-receipt, glossary)
|
|
158
197
|
bolta guide [topic]
|
|
159
198
|
|
|
160
199
|
# 바로 쓸 수 있는 샘플 JSON
|
|
@@ -165,6 +204,8 @@ bolta schema [command]
|
|
|
165
204
|
```
|
|
166
205
|
|
|
167
206
|
`invoice issue`, `invoice issue-request`, `amend change-supply-cost` 입력은 국세청 XML 전송 제한에 맞춰 로컬에서 먼저 검증됩니다. 필드별 길이 제한은 `bolta schema invoice-issue`로 확인할 수 있습니다.
|
|
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`를 사용하세요.
|
|
168
209
|
|
|
169
210
|
#### 업데이트
|
|
170
211
|
|
|
@@ -219,7 +260,7 @@ cat invoice.json | bolta invoice issue --stdin
|
|
|
219
260
|
|------|------|------|
|
|
220
261
|
| `AUTH_ERROR` | API 키 없음/잘못됨 | `bolta config set api-key <key>` |
|
|
221
262
|
| `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema <command>`로 스키마 확인 |
|
|
222
|
-
| `INPUT_ERROR` |
|
|
263
|
+
| `INPUT_ERROR` | 명령어·옵션·입력 방식 오류 | `bolta --help` 또는 하위 명령의 `--help`로 사용법 확인 |
|
|
223
264
|
| `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
|
|
224
265
|
| `HTTP_400` | 잘못된 요청 | error.message 확인 |
|
|
225
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"}
|