N+1 si el N nunca existió, y una serie trabada no se destraba reintentando.
La versión corta: Emissa se encarga de todo esto. Lo único que tenés que
hacer bien es mandar una
Idempotency-Key que identifique qué estás
facturando, no cada intento. Eso está al final.Una serie por punto de venta y por tipo
Cada combinación de punto de venta y tipo de comprobante lleva su propio contador independiente. Está desarrollado en qué es un punto de venta.Por qué un hueco no es un detalle
Una serie fiscal es una sucesión, y ARCA la valida como tal. Si tu sistema pide el número 7 cuando ARCA registró hasta el 5, el organismo rechaza — y el rechazo no arregla nada: al siguiente intento el desfasaje sigue igual, o peor.Quién decide el número
ARCA, no Emissa. Antes de cada emisión se le pregunta cuál es el último número que tiene autorizado en esa serie, y se sigue desde ahí. Es deliberado y tiene una consecuencia útil: si alguien emitió desde otro sistema con el mismo punto de venta, ARCA está adelante, y seguir por la cuenta local produciría un rechazo. Preguntándole al organismo, la serie converge sola. Adentro se toma el mayor entre el número de ARCA y el último local, así que ninguna de las dos fuentes puede hacerte retroceder.Dos pedidos al mismo tiempo
Ésta es la parte que un integrador necesita saber para no escribir un lock propio: no hace falta. Emissa serializa la asignación del número.La medición: tres emisiones en paralelo
La medición: tres emisiones en paralelo
Tres emisiones lanzadas a la vez contra el mismo contribuyente y la misma
serie, con tres claves de idempotencia distintas:Tres números consecutivos, tres CAE distintos, ninguna colisión. Y contando
en la base después:Los tiempos cuentan la historia: el primero entró y salió en 0,22 s, los otros
dos esperaron su turno. Eso es el lock funcionando.
Lo que se serializa es más chico de lo que parece
Sólo resolver el número y escribir la fila ocurre dentro del lock. Lo que tarda —hablar con ARCA— queda afuera:Sólo el tramo del medio es exclusivo
El estado decide si el número se libera
Acá hay una asimetría que conviene entender, porque explica qué pasa después de un fallo:
Un rechazado no cuenta y su fila se borra para liberar el número. Si contara,
sería exactamente el caso del 4 al 521 de más arriba.
Cómo listar los que quedaron sin resolver
Cómo listar los que quedaron sin resolver
La clave de idempotencia es obligatoria
Es el único requisito que la numeración te impone. Sin ella, el pedido no entra. Con la clave, repetir el mismo pedido devuelve el mismo comprobante: mismo id, mismo CAE, mismo número, y no se emite un segundo.Cómo elegir la clave
La clave tiene que identificar la intención de facturar, no el intento. Derivala de algo que ya sea único en tu dominio y que no cambie al reintentar.Un reintento con una clave distinta es una emisión nueva, y es correcto
que lo sea: la API no puede saber que quisiste decir lo mismo.
Qué contesta la API sin la clave, y qué contesta al repetir
Qué contesta la API sin la clave, y qué contesta al repetir
Sin el header:Repitiendo el mismo pedido con la misma clave:Verificado contando en la base: siguió habiendo un solo comprobante con ese
CAE.
Qué sigue
Cuando el CAE viene rechazado
Los comprobantes sin resolver, y qué se reintenta.
Cómo se arma una integración
El recorrido completo, en orden.