@inowu/cashdro 0.2.0 → 0.3.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/LICENSE +13 -0
- package/README.md +215 -196
- package/dist/cashdro.d.ts +6 -0
- package/dist/cashdro.d.ts.map +1 -1
- package/dist/cashdro.js +17 -1
- package/dist/cashdro.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright (c) 2026 Inowu
|
|
2
|
+
|
|
3
|
+
All rights reserved.
|
|
4
|
+
|
|
5
|
+
This software and associated documentation files (the "Software") are the
|
|
6
|
+
proprietary property of Inowu. No part of the Software may be used,
|
|
7
|
+
copied, modified, merged, published, distributed, sublicensed, or sold
|
|
8
|
+
without the prior written permission of Inowu.
|
|
9
|
+
|
|
10
|
+
Distribution of compiled or packaged forms of the Software (e.g. via a
|
|
11
|
+
package registry) does not grant any license or rights to use, modify, or
|
|
12
|
+
redistribute the Software beyond what is expressly agreed in writing with
|
|
13
|
+
Inowu.
|
package/README.md
CHANGED
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
# CashDro TypeScript SDK
|
|
2
2
|
|
|
3
|
-
`@inowu/cashdro`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
- [
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
|
|
18
|
-
- [
|
|
19
|
-
- [
|
|
20
|
-
- [
|
|
21
|
-
- [
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
|
|
27
|
-
|
|
3
|
+
`@inowu/cashdro` proporciona acceso conveniente y tipado a los recicladores
|
|
4
|
+
de efectivo automatizados **CashDro** desde TypeScript y JavaScript — ejecutando
|
|
5
|
+
ventas, pagos, depósitos, retiros y operaciones de gestión de efectivo, además
|
|
6
|
+
de consultas de niveles de efectivo y reportes.
|
|
7
|
+
|
|
8
|
+
## Tabla de contenidos
|
|
9
|
+
|
|
10
|
+
- [Instalación](#instalación)
|
|
11
|
+
- [Inicio rápido](#inicio-rápido)
|
|
12
|
+
- [Autenticación](#autenticación)
|
|
13
|
+
- [Configuración](#configuración)
|
|
14
|
+
- [Cómo funcionan las transacciones](#cómo-funcionan-las-transacciones)
|
|
15
|
+
- [Uso no bloqueante](#uso-no-bloqueante)
|
|
16
|
+
- [Modo debug](#modo-debug)
|
|
17
|
+
- [Referencia del cliente](#referencia-del-cliente)
|
|
18
|
+
- [Conectividad y salud](#conectividad-y-salud)
|
|
19
|
+
- [Transacciones — ciclo de vida](#transacciones--ciclo-de-vida)
|
|
20
|
+
- [Transacciones — métodos de conveniencia](#transacciones--métodos-de-conveniencia)
|
|
21
|
+
- [Helpers de orquestación](#helpers-de-orquestación)
|
|
22
|
+
- [Consultas y reportes](#consultas-y-reportes)
|
|
23
|
+
- [Tipos de transacción](#tipos-de-transacción)
|
|
24
|
+
- [Respuestas](#respuestas)
|
|
25
|
+
- [Manejo de errores](#manejo-de-errores)
|
|
26
|
+
- [Avanzado](#avanzado)
|
|
27
|
+
|
|
28
|
+
## Instalación
|
|
28
29
|
|
|
29
30
|
```sh
|
|
30
31
|
npm i @inowu/cashdro
|
|
31
32
|
```
|
|
32
33
|
|
|
33
|
-
**
|
|
34
|
+
**Requisitos:** Node.js 18+ (o cualquier runtime con `fetch` global).
|
|
34
35
|
|
|
35
|
-
##
|
|
36
|
+
## Inicio rápido
|
|
36
37
|
|
|
37
38
|
```ts
|
|
38
39
|
import { CashDroClient } from "@inowu/cashdro";
|
|
@@ -43,48 +44,49 @@ const cashdro = new CashDroClient({
|
|
|
43
44
|
password: "••••",
|
|
44
45
|
});
|
|
45
46
|
|
|
46
|
-
// 1.
|
|
47
|
+
// 1. Verificar conectividad + credenciales
|
|
47
48
|
const ping = await cashdro.doTest();
|
|
48
49
|
if (ping.code !== 1) throw new Error("CashDro unreachable or bad credentials");
|
|
49
50
|
|
|
50
|
-
// 2.
|
|
51
|
+
// 2. Realizar una venta de 12.50 (los montos están en unidades menores — valor × 100)
|
|
51
52
|
const { operationId } = await cashdro.sale(1250, { posuser: "Ana" });
|
|
52
53
|
|
|
53
|
-
// 3.
|
|
54
|
+
// 3. Esperar a que el cliente termine de pagar
|
|
54
55
|
const final = await cashdro.pollUntilFinished(operationId);
|
|
55
56
|
const op = final.response?.operation?.operation;
|
|
56
|
-
console.log(`paid=${op?.totalin} change=${op?.totalout}`); //
|
|
57
|
+
console.log(`paid=${op?.totalin} change=${op?.totalout}`); // el cambio es negativo
|
|
57
58
|
|
|
58
|
-
// 4.
|
|
59
|
+
// 4. Confirmar que registraste la transacción
|
|
59
60
|
await cashdro.setOperationImported(operationId);
|
|
60
61
|
```
|
|
61
62
|
|
|
62
|
-
##
|
|
63
|
+
## Autenticación
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
Cada llamada se autentica como un **usuario de CashDro** mediante HTTP Basic.
|
|
66
|
+
El usuario debe existir en la máquina y tener permiso para la operación.
|
|
66
67
|
|
|
67
68
|
```ts
|
|
68
69
|
const cashdro = new CashDroClient({ baseUrl, username: "manager", password: "••••" });
|
|
69
70
|
```
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
**
|
|
73
|
-
*
|
|
72
|
+
Los campos opcionales `posuser`, `posid` y `aliasid` aceptados por las
|
|
73
|
+
transacciones **no** son credenciales — solo etiquetan *quién* (cajero),
|
|
74
|
+
*qué terminal* y un *id de referencia del lado del host* inició una operación
|
|
75
|
+
(≤ 50 caracteres cada uno).
|
|
74
76
|
|
|
75
|
-
##
|
|
77
|
+
## Configuración
|
|
76
78
|
|
|
77
|
-
`CashDroClient`
|
|
79
|
+
`CashDroClient` acepta las siguientes opciones:
|
|
78
80
|
|
|
79
|
-
|
|
|
81
|
+
| Opción | Descripción |
|
|
80
82
|
|--------|-------------|
|
|
81
|
-
| `baseUrl` | URL
|
|
82
|
-
| `username`, `password` |
|
|
83
|
-
| `timeoutInSeconds` |
|
|
84
|
-
| `maxRetries` |
|
|
85
|
-
| `headers` |
|
|
86
|
-
| `fetch` |
|
|
87
|
-
| `debug` |
|
|
83
|
+
| `baseUrl` | URL de la unidad CashDro. Apunta esto a tu dispositivo / unidad de producción. |
|
|
84
|
+
| `username`, `password` | Credenciales de usuario de CashDro (HTTP Basic). |
|
|
85
|
+
| `timeoutInSeconds` | Timeout por solicitud (por defecto 60). |
|
|
86
|
+
| `maxRetries` | Reintentos automáticos con backoff exponencial (por defecto 2). |
|
|
87
|
+
| `headers` | Encabezados adicionales para enviar en cada solicitud. |
|
|
88
|
+
| `fetch` | Implementación personalizada de `fetch` (ver [Avanzado](#custom-fetch--self-signed-tls)). |
|
|
89
|
+
| `debug` | Traza los helpers de multi-operación — `true` para loguear, o una función handler (ver [Modo debug](#modo-debug)). |
|
|
88
90
|
|
|
89
91
|
```ts
|
|
90
92
|
const cashdro = new CashDroClient({
|
|
@@ -96,79 +98,87 @@ const cashdro = new CashDroClient({
|
|
|
96
98
|
});
|
|
97
99
|
```
|
|
98
100
|
|
|
99
|
-
##
|
|
101
|
+
## Cómo funcionan las transacciones
|
|
100
102
|
|
|
101
|
-
|
|
102
|
-
**
|
|
103
|
+
Una transacción de movimiento de efectivo (venta, pago, depósito, retiro, …)
|
|
104
|
+
corre **de forma asíncrona en el hardware**, por lo que se conduce mediante
|
|
105
|
+
un ciclo de vida corto:
|
|
103
106
|
|
|
104
107
|
```
|
|
105
108
|
start ─▶ acknowledge ─▶ (poll status) ─▶ finish? ─▶ import
|
|
106
|
-
id launch I → Q → E → F finalize
|
|
109
|
+
id launch I → Q → E → F finalize registrarla
|
|
107
110
|
```
|
|
108
111
|
|
|
109
|
-
- **`start`**
|
|
110
|
-
|
|
111
|
-
- **`acknowledge`**
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- **`
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
`
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
112
|
+
- **`start`** abre la transacción y devuelve un **`operationId`** (el handle
|
|
113
|
+
para todo lo demás). La unidad aún no hace nada.
|
|
114
|
+
- **`acknowledge`** lanza la ejecución (los aceptadores se abren / comienza
|
|
115
|
+
la dispensación).
|
|
116
|
+
- **poll status** hasta que `state === "F"`. Estados: `I` pendiente, `Q` en cola,
|
|
117
|
+
`E` ejecutando, `F` finalizado.
|
|
118
|
+
- **`finish`** finaliza o cancela (solo algunas transacciones necesitan un
|
|
119
|
+
finish explícito).
|
|
120
|
+
- **`import`** le indica a la unidad que el host ya registró el resultado.
|
|
121
|
+
|
|
122
|
+
Los métodos de conveniencia (`sale`, `payment`, …) y los helpers
|
|
123
|
+
(`runOperation`, `pollUntilFinished`) colapsan este boilerplate por ti
|
|
124
|
+
mientras siguen devolviendo el `operationId` y cada respuesta cruda.
|
|
125
|
+
|
|
126
|
+
**Dinero:** todos los montos son enteros en **unidades menores** (valor × 100 —
|
|
127
|
+
`1250` = 12.50). Los montos dispensados (`totalout`) son **negativos**. La
|
|
128
|
+
moneda es la que tenga configurada la unidad.
|
|
129
|
+
|
|
130
|
+
**Una a la vez:** un CashDro ejecuta una sola operación a la vez; iniciar otra
|
|
131
|
+
mientras una está activa falla con `code -2`. Usa `askOperationExecuting()`
|
|
132
|
+
para detectar y recuperar una operación atascada.
|
|
133
|
+
|
|
134
|
+
## Uso no bloqueante
|
|
135
|
+
|
|
136
|
+
Una venta puede tardar — la unidad espera a que el cliente inserte efectivo.
|
|
137
|
+
No hagas `await` de toda la cadena `start → wait → import` dentro de un
|
|
138
|
+
request handler; en su lugar déjala correr en segundo plano y reacciona
|
|
139
|
+
mediante callbacks. El callback `onStart` te entrega el `operationId` en el
|
|
140
|
+
instante en que se conoce (antes de cualquier espera), para que la UI pueda
|
|
141
|
+
mostrar una pantalla de pago y ofrecer un botón de Cancelar de inmediato.
|
|
136
142
|
|
|
137
143
|
```ts
|
|
138
144
|
import { CashDroClient, CashDroTimeoutError } from "@inowu/cashdro";
|
|
139
145
|
|
|
140
|
-
// Fire-and-forget:
|
|
146
|
+
// Fire-and-forget: ejecuta start → acknowledge → poll → import en segundo plano.
|
|
141
147
|
void cashdro
|
|
142
148
|
.sale(1250, {
|
|
143
|
-
waitForFinish: true, //
|
|
144
|
-
autoImport: true, //
|
|
145
|
-
onStart: (operationId) => showPayScreen(operationId), //
|
|
149
|
+
waitForFinish: true, // sondear hasta que el cliente termine de pagar
|
|
150
|
+
autoImport: true, // registrarlo en la unidad cuando termine
|
|
151
|
+
onStart: (operationId) => showPayScreen(operationId), // se devuelve de inmediato
|
|
146
152
|
poll: { onPoll: (status) => updateUi(status), timeoutMs: 120_000 },
|
|
147
153
|
})
|
|
148
154
|
.then((r) => onPaid(r.final?.response?.operation?.operation)) // totalin / totalout
|
|
149
155
|
.catch((err) => {
|
|
150
|
-
if (err instanceof CashDroTimeoutError) return; //
|
|
156
|
+
if (err instanceof CashDroTimeoutError) return; // nadie pagó a tiempo
|
|
151
157
|
onError(err);
|
|
152
158
|
});
|
|
153
159
|
```
|
|
154
160
|
|
|
155
|
-
|
|
156
|
-
|
|
161
|
+
Para permitir que un botón de **Cancelar** detenga una venta en curso,
|
|
162
|
+
cancélala en la unidad — el poll en segundo plano se resuelve entonces en
|
|
163
|
+
el estado `F` en su siguiente tick:
|
|
157
164
|
|
|
158
165
|
```ts
|
|
159
166
|
cancelButton.onclick = () => cashdro.finishOperation(operationId, 2);
|
|
160
167
|
```
|
|
161
168
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
De forma equivalente puedes conducir los pasos tú mismo: `await cashdro.sale(...)`
|
|
170
|
+
retorna después de start+acknowledge (rápido), luego llama a
|
|
171
|
+
`cashdro.pollUntilFinished(id)` desde una tarea en segundo plano. Pasa un
|
|
172
|
+
`AbortSignal` en las opciones de `poll`/`pollUntilFinished` si necesitas
|
|
173
|
+
detener el sondeo sin cancelar la transacción, o `cancelOnTimeout: true`
|
|
174
|
+
para auto-cancelar la venta si nadie paga a tiempo.
|
|
166
175
|
|
|
167
|
-
##
|
|
176
|
+
## Modo debug
|
|
168
177
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
Los helpers de multi-operación (`sale`, `runOperation`, `pollUntilFinished`, …)
|
|
179
|
+
pueden trazar exactamente lo que hacen — cada llamada subyacente, su
|
|
180
|
+
resultado, y cada sondeo de estado. Pasa `debug: true` para loguear a la
|
|
181
|
+
consola:
|
|
172
182
|
|
|
173
183
|
```ts
|
|
174
184
|
const cashdro = new CashDroClient({ baseUrl, username, password, debug: true });
|
|
@@ -187,8 +197,8 @@ await cashdro.sale(100, { waitForFinish: true, autoImport: true });
|
|
|
187
197
|
[cashdro] sale: done (operationId=128)
|
|
188
198
|
```
|
|
189
199
|
|
|
190
|
-
|
|
191
|
-
|
|
200
|
+
Para logging estructurado, pasa un handler en su lugar y enruta los
|
|
201
|
+
`CashDroDebugEvent` a tu propio logger:
|
|
192
202
|
|
|
193
203
|
```ts
|
|
194
204
|
const cashdro = new CashDroClient({
|
|
@@ -199,85 +209,91 @@ const cashdro = new CashDroClient({
|
|
|
199
209
|
});
|
|
200
210
|
```
|
|
201
211
|
|
|
202
|
-
|
|
203
|
-
`"call"`, `"result"`, `"poll"`,
|
|
204
|
-
|
|
212
|
+
Cada evento es `{ seq, at, helper, op, phase, detail, message }` — `phase`
|
|
213
|
+
es `"call"`, `"result"`, `"poll"`, o `"info"`. Esto traza la orquestación
|
|
214
|
+
del helper y es independiente de la capa de transporte.
|
|
205
215
|
|
|
206
|
-
##
|
|
216
|
+
## Referencia del cliente
|
|
207
217
|
|
|
208
|
-
|
|
209
|
-
|
|
218
|
+
Los métodos que mapean 1:1 a una operación del dispositivo devuelven la
|
|
219
|
+
respuesta cruda; los helpers de conveniencia y orquestación combinan varias
|
|
220
|
+
llamadas pero nunca ocultan los datos subyacentes.
|
|
210
221
|
|
|
211
|
-
###
|
|
222
|
+
### Conectividad y salud
|
|
212
223
|
|
|
213
|
-
|
|
|
224
|
+
| Método | Qué hace / cuándo usarlo |
|
|
214
225
|
|--------|----------------------------|
|
|
215
|
-
| `doTest()` |
|
|
216
|
-
| `getDiagnosis()` |
|
|
217
|
-
| `getAlerts()` |
|
|
218
|
-
| `askOperationExecuting()` |
|
|
226
|
+
| `doTest()` | Ping autenticado. Verifica accesibilidad + credenciales antes de transaccionar. |
|
|
227
|
+
| `getDiagnosis()` | Estado de error del dispositivo (`WithError`) + lista de dispositivos. Usa esto como gate antes de transaccionar para evitar hardware atascado. |
|
|
228
|
+
| `getAlerts()` | Denominaciones en niveles críticos / de inhibición / por debajo del mínimo / por encima del máximo. Para avisos de reabastecimiento/vaciado. |
|
|
229
|
+
| `askOperationExecuting()` | La operación que se está ejecutando actualmente (o `OperationId: -1` cuando está inactiva). Recupera una operación huérfana al iniciar. |
|
|
219
230
|
|
|
220
|
-
###
|
|
231
|
+
### Transacciones — ciclo de vida
|
|
221
232
|
|
|
222
|
-
|
|
233
|
+
Bloques de construcción de bajo nivel (normalmente usarás los métodos de
|
|
234
|
+
conveniencia de abajo):
|
|
223
235
|
|
|
224
|
-
|
|
|
236
|
+
| Método | Qué hace / cuándo usarlo |
|
|
225
237
|
|--------|----------------------------|
|
|
226
|
-
| `startOperation({ type, amount?, parameters?, … })` |
|
|
227
|
-
| `acknowledgeOperationId(id)` |
|
|
228
|
-
| `askOperation(id)` |
|
|
229
|
-
| `finishOperation(id, type)` | `type 1`
|
|
230
|
-
| `setOperationImported(id)` |
|
|
238
|
+
| `startOperation({ type, amount?, parameters?, … })` | Abre una transacción de un [tipo](#tipos-de-transacción) dado; devuelve `operationId`. |
|
|
239
|
+
| `acknowledgeOperationId(id)` | Lanza una operación iniciada. |
|
|
240
|
+
| `askOperation(id)` | Sondea el estado completo (estado, `total`, `totalin`, `totalout`, niveles por denominación, mensajes). |
|
|
241
|
+
| `finishOperation(id, type)` | `type 1` finaliza/acepta, `2` cancela, `4` finaliza con una lista explícita de piezas. |
|
|
242
|
+
| `setOperationImported(id)` | Marca la operación como registrada por el host (la elimina de la lista pendiente). |
|
|
231
243
|
|
|
232
|
-
###
|
|
244
|
+
### Transacciones — métodos de conveniencia
|
|
233
245
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
246
|
+
Cada uno abre + confirma una transacción y devuelve `{ operationId, started, … }`.
|
|
247
|
+
Las opciones aceptan `posid` / `posuser` / `aliasid` y las [opciones de
|
|
248
|
+
orquestación](#helpers-de-orquestación).
|
|
237
249
|
|
|
238
|
-
|
|
|
250
|
+
| Método | Transacción |
|
|
239
251
|
|--------|-------------|
|
|
240
|
-
| `sale(amount, opts?)` |
|
|
241
|
-
| `payment(amount, opts?)` |
|
|
242
|
-
| `paymentByDenomination(pieces, opts?)` |
|
|
243
|
-
| `depositByAmount(amount, opts?)` |
|
|
244
|
-
| `deposit(opts?)` |
|
|
245
|
-
| `change(opts?)` |
|
|
246
|
-
| `load(opts?)` |
|
|
247
|
-
| `withdraw(opts?)` |
|
|
248
|
-
| `transferToCassette(opts?)` |
|
|
249
|
-
| `emptyNoteCassette(opts?)` / `emptyCoinCassette(opts?)` |
|
|
250
|
-
| `finishWithPieces(id, { recycler?, cassette? })` |
|
|
252
|
+
| `sale(amount, opts?)` | Venta — el cliente paga, se devuelve el cambio. |
|
|
253
|
+
| `payment(amount, opts?)` | Pago / desembolso de un monto. |
|
|
254
|
+
| `paymentByDenomination(pieces, opts?)` | Pagar piezas específicas (ver abajo). |
|
|
255
|
+
| `depositByAmount(amount, opts?)` | Depositar hasta un monto objetivo. |
|
|
256
|
+
| `deposit(opts?)` | Depósito abierto; finaliza con `finishOperation(id, 1)`. |
|
|
257
|
+
| `change(opts?)` | Cambio / romper un billete. |
|
|
258
|
+
| `load(opts?)` | Cargar efectivo en los recicladores. |
|
|
259
|
+
| `withdraw(opts?)` | Retirar efectivo (el operador selecciona en la unidad). |
|
|
260
|
+
| `transferToCassette(opts?)` | Mover efectivo de los recicladores al cassette. |
|
|
261
|
+
| `emptyNoteCassette(opts?)` / `emptyCoinCassette(opts?)` | Registrar un cassette como vaciado. |
|
|
262
|
+
| `finishWithPieces(id, { recycler?, cassette? })` | Finalizar un retiro/transferencia con una lista explícita de piezas. |
|
|
251
263
|
|
|
252
264
|
```ts
|
|
253
|
-
//
|
|
265
|
+
// Pagar exactamente 3×1.00 monedas y 1×20.00 billete
|
|
254
266
|
await cashdro.paymentByDenomination([
|
|
255
267
|
{ value: 100, level: 3, isBill: false },
|
|
256
268
|
{ value: 2000, level: 1, isBill: true },
|
|
257
269
|
]);
|
|
258
270
|
|
|
259
|
-
//
|
|
271
|
+
// Retirar 1×500 billete directamente de los recicladores (sin selección en el dispositivo)
|
|
260
272
|
const { operationId } = await cashdro.withdraw();
|
|
261
273
|
await cashdro.finishWithPieces(operationId, { recycler: [{ value: 500, level: 1, isBill: true }] });
|
|
262
274
|
await cashdro.setOperationImported(operationId);
|
|
263
275
|
```
|
|
264
276
|
|
|
265
|
-
###
|
|
277
|
+
### Helpers de orquestación
|
|
266
278
|
|
|
267
|
-
|
|
|
279
|
+
| Método | Qué hace |
|
|
268
280
|
|--------|--------------|
|
|
269
|
-
| `runOperation(params, opts?)` |
|
|
270
|
-
| `pollUntilFinished(id, opts?)` |
|
|
271
|
-
|
|
272
|
-
`runOperation
|
|
273
|
-
`false` —
|
|
274
|
-
|
|
275
|
-
`pollUntilFinished`
|
|
276
|
-
`
|
|
281
|
+
| `runOperation(params, opts?)` | El motor detrás de los métodos de conveniencia: `start → (acknowledge) → poll opcional → import opcional`. Devuelve `{ operationId, started, final?, imported? }`. |
|
|
282
|
+
| `pollUntilFinished(id, opts?)` | Sondea `askOperation` hasta que `state === "F"`; devuelve la respuesta final completa. Lanza `CashDroTimeoutError` en caso de timeout. |
|
|
283
|
+
|
|
284
|
+
Opciones de `runOperation`: `acknowledge` (por defecto `true`), `waitForFinish`
|
|
285
|
+
(por defecto `false` — una venta bloquea en espera del efectivo del cliente),
|
|
286
|
+
`autoImport`, un callback `onStart(id, started)`, y `poll` (reenviado a
|
|
287
|
+
`pollUntilFinished`).
|
|
288
|
+
Opciones de `pollUntilFinished`: `intervalMs`, `timeoutMs`, `signal`
|
|
289
|
+
(`AbortSignal`), `onPoll(status)`, y **`cancelOnTimeout`** — cuando es `true`,
|
|
290
|
+
un timeout cancela e importa la operación antes de lanzar el error, para que
|
|
291
|
+
no quede abierta bloqueando la siguiente transacción con `code -2` (un
|
|
292
|
+
error común de testing al probar ventas sin efectivo).
|
|
277
293
|
|
|
278
294
|
```ts
|
|
279
295
|
const { operationId } = await cashdro.sale(500, {
|
|
280
|
-
onStart: (id) => showOnScreen(id), // operationId
|
|
296
|
+
onStart: (id) => showOnScreen(id), // operationId en el instante en que se conoce
|
|
281
297
|
});
|
|
282
298
|
const final = await cashdro.pollUntilFinished(operationId, {
|
|
283
299
|
timeoutMs: 120_000,
|
|
@@ -285,13 +301,13 @@ const final = await cashdro.pollUntilFinished(operationId, {
|
|
|
285
301
|
});
|
|
286
302
|
```
|
|
287
303
|
|
|
288
|
-
###
|
|
304
|
+
### Consultas y reportes
|
|
289
305
|
|
|
290
|
-
|
|
|
306
|
+
| Método | Qué hace / cuándo usarlo |
|
|
291
307
|
|--------|----------------------------|
|
|
292
|
-
| `getPiecesCurrency({ currencyId, includeLevels?, includeImages? })` |
|
|
293
|
-
| `askPendingOperations({ terminal?, importManualOperations? })` |
|
|
294
|
-
| `askMovements({ fromDate, toDate, group?, operationType? })` |
|
|
308
|
+
| `getPiecesCurrency({ currencyId, includeLevels?, includeImages? })` | Niveles de efectivo por denominación. Para UI de inventario y para pre-verificar un retiro. |
|
|
309
|
+
| `askPendingOperations({ terminal?, importManualOperations? })` | Operaciones aún no importadas por el host. Reconciliar antes de un cierre de caja. |
|
|
310
|
+
| `askMovements({ fromDate, toDate, group?, operationType? })` | Operaciones entre dos fechas, detalladas o agregadas. Para reportes. |
|
|
295
311
|
|
|
296
312
|
```ts
|
|
297
313
|
const levels = await cashdro.getPiecesCurrency({ currencyId: "EUR", includeLevels: 1 });
|
|
@@ -299,49 +315,49 @@ const report = await cashdro.askMovements({
|
|
|
299
315
|
fromDate: "2026-06-01_00:00:00",
|
|
300
316
|
toDate: "2026-06-30_23:59:59",
|
|
301
317
|
group: true,
|
|
302
|
-
operationType: JSON.stringify([{ Id: 4 }]), //
|
|
318
|
+
operationType: JSON.stringify([{ Id: 4 }]), // solo ventas
|
|
303
319
|
});
|
|
304
320
|
```
|
|
305
321
|
|
|
306
|
-
##
|
|
322
|
+
## Tipos de transacción
|
|
307
323
|
|
|
308
|
-
`startOperation` (
|
|
324
|
+
`startOperation` (y los métodos de conveniencia) aceptan un `type` numérico:
|
|
309
325
|
|
|
310
|
-
| `type` |
|
|
326
|
+
| `type` | Transacción | Monto/piezas |
|
|
311
327
|
|-------:|-------------|---------------|
|
|
312
|
-
| 1 |
|
|
313
|
-
| 2 |
|
|
314
|
-
| 3 |
|
|
315
|
-
| 4 |
|
|
316
|
-
| 8 |
|
|
317
|
-
| 10 |
|
|
318
|
-
| 11 |
|
|
319
|
-
| 16 |
|
|
320
|
-
| 17 |
|
|
321
|
-
| 18 |
|
|
328
|
+
| 1 | carga | — |
|
|
329
|
+
| 2 | retiro | en el dispositivo, o `finishWithPieces` |
|
|
330
|
+
| 3 | pago | `amount`, o `paymentByDenomination` |
|
|
331
|
+
| 4 | venta | `amount` |
|
|
332
|
+
| 8 | transferencia al cassette | en el dispositivo, o `finishWithPieces` |
|
|
333
|
+
| 10 | vaciar cassette de billetes | — |
|
|
334
|
+
| 11 | vaciar cassette de monedas | — |
|
|
335
|
+
| 16 | depósito | finaliza con `finishOperation(id, 1)` |
|
|
336
|
+
| 17 | depósito por monto | `amount` |
|
|
337
|
+
| 18 | cambio | — |
|
|
322
338
|
|
|
323
|
-
|
|
324
|
-
`{ value: number, level: number, isBill: boolean }` — `value`
|
|
325
|
-
`level`
|
|
339
|
+
Una "pieza" (para `paymentByDenomination` / `finishWithPieces`) es
|
|
340
|
+
`{ value: number, level: number, isBill: boolean }` — `value` en unidades
|
|
341
|
+
menores, `level` la cantidad, `isBill` `true` para billetes.
|
|
326
342
|
|
|
327
|
-
##
|
|
343
|
+
## Respuestas
|
|
328
344
|
|
|
329
|
-
|
|
345
|
+
Cada llamada resuelve a un envelope tipado:
|
|
330
346
|
|
|
331
347
|
```ts
|
|
332
|
-
{ code: number; response: { errorMessage: string; /*
|
|
348
|
+
{ code: number; response: { errorMessage: string; /* datos de la operación */ } }
|
|
333
349
|
```
|
|
334
350
|
|
|
335
|
-
`code >= 1`
|
|
336
|
-
|
|
337
|
-
|
|
351
|
+
`code >= 1` significa éxito; un `code` negativo es un error (los métodos de
|
|
352
|
+
conveniencia/helper lanzan una excepción en su lugar — ver abajo). Los tipos
|
|
353
|
+
de solicitud y respuesta están disponibles bajo el namespace `CashDroApi`:
|
|
338
354
|
|
|
339
355
|
```ts
|
|
340
356
|
import { CashDroApi } from "@inowu/cashdro";
|
|
341
357
|
const res: CashDroApi.AskOperationResponse = await cashdro.askOperation(id);
|
|
342
358
|
```
|
|
343
359
|
|
|
344
|
-
##
|
|
360
|
+
## Manejo de errores
|
|
345
361
|
|
|
346
362
|
```ts
|
|
347
363
|
import { CashDroError, CashDroTimeoutError } from "@inowu/cashdro";
|
|
@@ -352,48 +368,51 @@ try {
|
|
|
352
368
|
await cashdro.setOperationImported(operationId);
|
|
353
369
|
} catch (err) {
|
|
354
370
|
if (err instanceof CashDroTimeoutError) {
|
|
355
|
-
// no
|
|
371
|
+
// no se insertó efectivo a tiempo — la operación sigue abierta; cancélala
|
|
356
372
|
await cashdro.finishOperation(err.operationId, 2);
|
|
357
373
|
} else if (err instanceof CashDroError) {
|
|
358
374
|
console.error("CashDro rejected the request:", err.response);
|
|
359
375
|
} else {
|
|
360
|
-
throw err; //
|
|
376
|
+
throw err; // error de transporte/HTTP
|
|
361
377
|
}
|
|
362
378
|
}
|
|
363
379
|
```
|
|
364
380
|
|
|
365
|
-
- **`CashDroError`** —
|
|
366
|
-
- **`CashDroTimeoutError`** — `pollUntilFinished`
|
|
381
|
+
- **`CashDroError`** — una llamada devolvió un `code` de no-éxito (contiene la `response` cruda).
|
|
382
|
+
- **`CashDroTimeoutError`** — `pollUntilFinished` alcanzó el timeout (contiene `operationId` y el último poll).
|
|
367
383
|
|
|
368
|
-
|
|
369
|
-
|
|
384
|
+
Códigos de dispositivo comunes: `-1` credenciales incorrectas, `-2` ocupado /
|
|
385
|
+
no encontrado, `-3` monto incorrecto, `-4` sin permiso, `-998`/`-999`
|
|
386
|
+
dispositivo no disponible (revisar diagnóstico).
|
|
370
387
|
|
|
371
|
-
##
|
|
388
|
+
## Avanzado
|
|
372
389
|
|
|
373
|
-
###
|
|
390
|
+
### Acceso a la respuesta cruda
|
|
374
391
|
|
|
375
|
-
|
|
376
|
-
|
|
392
|
+
Los métodos que mapean 1:1 a una operación del dispositivo devuelven un
|
|
393
|
+
awaitable que también expone la respuesta HTTP cruda:
|
|
377
394
|
|
|
378
395
|
```ts
|
|
379
396
|
const { data, rawResponse } = await cashdro.askOperation(id).withRawResponse();
|
|
380
397
|
console.log(rawResponse.headers);
|
|
381
398
|
```
|
|
382
399
|
|
|
383
|
-
###
|
|
400
|
+
### Fetch personalizado / TLS autofirmado
|
|
384
401
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
402
|
+
Proporciona tu propio `fetch` para plataformas sin uno incorporado, o para
|
|
403
|
+
alcanzar una unidad que sirve un **certificado autofirmado**. Prefiere
|
|
404
|
+
instalar la CA de la unidad en tu almacén de confianza; solo relaja la
|
|
405
|
+
verificación en entornos confiables y que no sean de producción.
|
|
388
406
|
|
|
389
407
|
```ts
|
|
390
408
|
import { Agent, setGlobalDispatcher } from "undici";
|
|
391
|
-
setGlobalDispatcher(new Agent({ connect: { rejectUnauthorized: false } })); //
|
|
409
|
+
setGlobalDispatcher(new Agent({ connect: { rejectUnauthorized: false } })); // solo no-prod
|
|
392
410
|
```
|
|
393
411
|
|
|
394
|
-
###
|
|
412
|
+
### Opciones por solicitud
|
|
395
413
|
|
|
396
|
-
|
|
414
|
+
Cada método 1:1 acepta un segundo argumento opcional para overrides por
|
|
415
|
+
llamada:
|
|
397
416
|
|
|
398
417
|
```ts
|
|
399
418
|
const controller = new AbortController();
|
|
@@ -405,11 +424,11 @@ await cashdro.askOperation(id, {
|
|
|
405
424
|
});
|
|
406
425
|
```
|
|
407
426
|
|
|
408
|
-
###
|
|
427
|
+
### Cliente de bajo nivel
|
|
409
428
|
|
|
410
|
-
|
|
411
|
-
|
|
429
|
+
Para endpoints aún no envueltos, `cashdro.api` expone el cliente subyacente
|
|
430
|
+
usado para hacer las solicitudes.
|
|
412
431
|
|
|
413
|
-
###
|
|
432
|
+
### Compatibilidad de runtime
|
|
414
433
|
|
|
415
|
-
|
|
434
|
+
Funciona en Node.js 18+, Deno, Bun, Cloudflare Workers, Vercel y React Native.
|
package/dist/cashdro.d.ts
CHANGED
|
@@ -57,6 +57,12 @@ export interface PollOptions {
|
|
|
57
57
|
signal?: AbortSignal;
|
|
58
58
|
/** Called with every poll's full response (state, totals, devices, messages...). */
|
|
59
59
|
onPoll?: (status: CashDroApi.AskOperationResponse) => void;
|
|
60
|
+
/**
|
|
61
|
+
* On timeout, cancel the operation (`finishOperation` type 2) and import it,
|
|
62
|
+
* so it doesn't stay open and block the next transaction with `code -2`.
|
|
63
|
+
* `CashDroTimeoutError` is still thrown afterwards. Default `false`.
|
|
64
|
+
*/
|
|
65
|
+
cancelOnTimeout?: boolean;
|
|
60
66
|
}
|
|
61
67
|
export interface RunOperationOptions {
|
|
62
68
|
/** Send acknowledgeOperationId after starting. Default true. */
|
package/dist/cashdro.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashdro.d.ts","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI1D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,EAAE,EAAE,MAAM,CAAC;IACX,iGAAiG;IACjG,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAC3C,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,kGAAkG;AAClG,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAOrE,yFAAyF;AACzF,qBAAa,YAAa,SAAQ,KAAK;IAG/B,QAAQ,CAAC,QAAQ,EAAE,OAAO;gBAD1B,OAAO,EAAE,MAAM,EACN,QAAQ,EAAE,OAAO;CAKjC;AAED,sGAAsG;AACtG,qBAAa,mBAAoB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,oBAAoB;gBADrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,CAAC,oBAAoB;CAKrD;AAED,MAAM,WAAW,WAAW;IACxB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oFAAoF;IACpF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,oBAAoB,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"cashdro.d.ts","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"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"}
|
package/dist/cashdro.js
CHANGED
|
@@ -135,7 +135,7 @@ export class CashDroClient {
|
|
|
135
135
|
* so cancel it with `finishOperation(id, 2)` if you want to abort.
|
|
136
136
|
*/
|
|
137
137
|
async pollUntilFinished(operationId, opts = {}) {
|
|
138
|
-
const { intervalMs = 1000, timeoutMs = 120_000, signal, onPoll } = opts;
|
|
138
|
+
const { intervalMs = 1000, timeoutMs = 120_000, signal, onPoll, cancelOnTimeout = false } = opts;
|
|
139
139
|
const deadline = Date.now() + timeoutMs;
|
|
140
140
|
this.emit({
|
|
141
141
|
op: "pollUntilFinished",
|
|
@@ -180,6 +180,22 @@ export class CashDroClient {
|
|
|
180
180
|
detail: { operationId, attempt, timedOut: true },
|
|
181
181
|
message: `pollUntilFinished(${operationId}): timed out after ${attempt} poll(s)`,
|
|
182
182
|
});
|
|
183
|
+
if (cancelOnTimeout) {
|
|
184
|
+
this.emit({
|
|
185
|
+
helper: "pollUntilFinished",
|
|
186
|
+
op: "finishOperation",
|
|
187
|
+
phase: "call",
|
|
188
|
+
detail: { operationId, type: 2, reason: "cancelOnTimeout" },
|
|
189
|
+
message: `pollUntilFinished(${operationId}): cancelOnTimeout → cancel + import`,
|
|
190
|
+
});
|
|
191
|
+
try {
|
|
192
|
+
await this.finishOperation(operationId, 2);
|
|
193
|
+
await this.setOperationImported(operationId);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// best-effort cleanup; the timeout is surfaced regardless
|
|
197
|
+
}
|
|
198
|
+
}
|
|
183
199
|
throw new CashDroTimeoutError(operationId, status);
|
|
184
200
|
}
|
|
185
201
|
await sleep(intervalMs);
|
package/dist/cashdro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashdro.js","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cashdro.js","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"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"}
|