@pimia/sdk 0.15.0 → 0.16.0
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/dist/api.d.ts +65 -0
- package/dist/client.d.ts +88 -0
- package/dist/client.js +49 -0
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -8202,6 +8202,15 @@ export interface components {
|
|
|
8202
8202
|
is_active: boolean;
|
|
8203
8203
|
is_time_trackable: boolean;
|
|
8204
8204
|
opening_stock: number;
|
|
8205
|
+
/**
|
|
8206
|
+
* @description Lo COMPROMETIDO por documentos que aún no han movido el almacén
|
|
8207
|
+
* (N2 · pieza 3, cifra derivada — nadie la escribe). ⚠️ `null` NO
|
|
8208
|
+
* es cero: es «no se está calculando» (módulo `stock` sin
|
|
8209
|
+
* instalar, o el ciclo de inventario apagado). Pintar un 0 ahí
|
|
8210
|
+
* afirmaría «nada comprometido», que es lo que no se sabe.
|
|
8211
|
+
* El porqué entero, en {@see \App\Support\StockCommitments}.
|
|
8212
|
+
*/
|
|
8213
|
+
committed_quantity: number | null;
|
|
8205
8214
|
stock_alert_qty: number | null;
|
|
8206
8215
|
allow_sale_without_stock: boolean;
|
|
8207
8216
|
purchase_tax_type_id: number | null;
|
|
@@ -8245,6 +8254,13 @@ export interface components {
|
|
|
8245
8254
|
is_active: boolean;
|
|
8246
8255
|
is_time_trackable: boolean;
|
|
8247
8256
|
opening_stock: number;
|
|
8257
|
+
/**
|
|
8258
|
+
* @description Igual que en el recurso completo: `null` es «no se está
|
|
8259
|
+
* calculando», no cero (N2 · pieza 3). La celda de stock del
|
|
8260
|
+
* listado del panel lo lee de aquí — el índice del catálogo va
|
|
8261
|
+
* por `?view=summary`.
|
|
8262
|
+
*/
|
|
8263
|
+
committed_quantity: number | null;
|
|
8248
8264
|
stock_alert_qty: number | null;
|
|
8249
8265
|
allow_sale_without_stock: boolean;
|
|
8250
8266
|
/** Format: date-time */
|
|
@@ -8270,6 +8286,15 @@ export interface components {
|
|
|
8270
8286
|
item_name: string;
|
|
8271
8287
|
warehouse_id: number;
|
|
8272
8288
|
quantity: number;
|
|
8289
|
+
/**
|
|
8290
|
+
* @description Lo que el ARTÍCULO tiene comprometido — global, no de este
|
|
8291
|
+
* almacén (N2 · pieza 3). El nombre lleva el `item_` delante por
|
|
8292
|
+
* eso: en una fila que habla de una nave, «comprometido» a secas
|
|
8293
|
+
* se leería como «comprometido aquí», y de los dos documentos que
|
|
8294
|
+
* comprometen solo el albarán declara almacén. `null` = no se
|
|
8295
|
+
* está calculando; nunca es cero.
|
|
8296
|
+
*/
|
|
8297
|
+
item_committed_quantity: number | null;
|
|
8273
8298
|
};
|
|
8274
8299
|
/** ItemsRequest */
|
|
8275
8300
|
ItemsRequest: {
|
|
@@ -20028,6 +20053,46 @@ export interface operations {
|
|
|
20028
20053
|
warehouse_name: string;
|
|
20029
20054
|
quantity: number;
|
|
20030
20055
|
}[];
|
|
20056
|
+
/**
|
|
20057
|
+
* @description Lo COMPROMETIDO y lo DISPONIBLE (N2 · pieza 3). Cifra
|
|
20058
|
+
* derivada: nadie la escribe, se calcula al preguntarla.
|
|
20059
|
+
* `null` ENTERO = no se está calculando (módulo `stock` sin
|
|
20060
|
+
* instalar o ciclo de inventario apagado); un cero ahí
|
|
20061
|
+
* afirmaría «nada comprometido», que es lo que no se sabe. El desglose viaja entero y sin paginar, como
|
|
20062
|
+
* `warehouse_stock`: es cabecera de pestaña, y son los
|
|
20063
|
+
* borradores vivos de UN artículo, que en una pyme se cuentan
|
|
20064
|
+
* con los dedos. Va aquí y no en un endpoint aparte porque la
|
|
20065
|
+
* pregunta es la misma que abre el libro — «¿por qué tengo
|
|
20066
|
+
* 47?» y «¿por qué solo puedo vender 35?» se responden en la
|
|
20067
|
+
* misma pantalla.
|
|
20068
|
+
*/
|
|
20069
|
+
committed: {
|
|
20070
|
+
quantity: number;
|
|
20071
|
+
/**
|
|
20072
|
+
* @description ⚠️ `null` cuando el artículo NUNCA ha llevado stock
|
|
20073
|
+
* (`opening_stock` NULL, la distinción que la migración se
|
|
20074
|
+
* esforzó en preservar): de ese no hay disponible que
|
|
20075
|
+
* calcular, y un «−4» ahí sería una alarma inventada.
|
|
20076
|
+
*/
|
|
20077
|
+
available: number | null;
|
|
20078
|
+
documents: ({
|
|
20079
|
+
/** @constant */
|
|
20080
|
+
document_type: "delivery_note";
|
|
20081
|
+
document_id: number;
|
|
20082
|
+
document_number: string;
|
|
20083
|
+
customer_name: string;
|
|
20084
|
+
date: string;
|
|
20085
|
+
quantity: number;
|
|
20086
|
+
} | {
|
|
20087
|
+
/** @constant */
|
|
20088
|
+
document_type: "invoice";
|
|
20089
|
+
document_id: number;
|
|
20090
|
+
document_number: string;
|
|
20091
|
+
customer_name: string;
|
|
20092
|
+
date: string;
|
|
20093
|
+
quantity: number;
|
|
20094
|
+
})[];
|
|
20095
|
+
} | null;
|
|
20031
20096
|
};
|
|
20032
20097
|
};
|
|
20033
20098
|
};
|
package/dist/client.d.ts
CHANGED
|
@@ -960,6 +960,94 @@ export declare class PimiaClient {
|
|
|
960
960
|
success: string;
|
|
961
961
|
}>;
|
|
962
962
|
};
|
|
963
|
+
/**
|
|
964
|
+
* El libro del almacén: por qué un artículo tiene el saldo que tiene. Exige
|
|
965
|
+
* `items:read` — leer el libro es leer el catálogo que explica— y, a
|
|
966
|
+
* diferencia de almacenes y recuentos, **NO va tras el módulo `stock`**: el
|
|
967
|
+
* libro es N1 y N1 es de todos.
|
|
968
|
+
*
|
|
969
|
+
* ## El COMPROMETIDO, en la cabecera de `forItem`
|
|
970
|
+
*
|
|
971
|
+
* `meta.committed` responde la otra mitad de la pregunta: no «cuánto tengo»
|
|
972
|
+
* sino **«cuánto de lo que tengo puedo vender»**. Trae la cantidad, el
|
|
973
|
+
* disponible (saldo − comprometido) y el DESGLOSE de los documentos que lo
|
|
974
|
+
* comprometen.
|
|
975
|
+
*
|
|
976
|
+
* ⛔ **Tres cosas que hay que tener delante:**
|
|
977
|
+
*
|
|
978
|
+
* 1. **Es una cifra DERIVADA**: no hay columna que escribir, no existe un
|
|
979
|
+
* `PUT` para reservar. Comprometen el albarán y la factura **en
|
|
980
|
+
* borrador**, y dejan de hacerlo solos cuando mueven el almacén (al
|
|
981
|
+
* entregar y al publicar). El presupuesto aceptado NO compromete: nada en
|
|
982
|
+
* el núcleo dice cuándo se cumplió.
|
|
983
|
+
* 2. ⚠️ **`committed` a `null` NO es cero.** Es «no se está calculando» — la
|
|
984
|
+
* empresa no tiene el módulo `stock`, o tiene el ciclo de inventario
|
|
985
|
+
* apagado. Pintar un 0 ahí afirma «nada comprometido», que es justo lo
|
|
986
|
+
* que no se sabe. Igual con `committed_quantity` en el artículo.
|
|
987
|
+
* 3. **Es GLOBAL por artículo, sin dimensión de almacén**: de los documentos
|
|
988
|
+
* que comprometen solo el albarán declara almacén.
|
|
989
|
+
*/
|
|
990
|
+
get stockMovements(): {
|
|
991
|
+
/**
|
|
992
|
+
* El libro entero de la empresa, filtrable por artículo, almacén, motivo
|
|
993
|
+
* y fechas. Su `meta` trae además el valor informativo del almacén
|
|
994
|
+
* (`stock_value_cents`), que NO es valoración contable.
|
|
995
|
+
*/
|
|
996
|
+
list: (query?: RequestOptions["query"], options?: ReadOptions) => Promise<{
|
|
997
|
+
data: components["schemas"]["StockMovementResource"][];
|
|
998
|
+
meta: {
|
|
999
|
+
stock_movement_total_count: number;
|
|
1000
|
+
stock_value_cents: number;
|
|
1001
|
+
};
|
|
1002
|
+
}>;
|
|
1003
|
+
/**
|
|
1004
|
+
* El libro de UN artículo, con la cabecera que lo explica: saldo
|
|
1005
|
+
* (`meta.opening_stock`), reparto por almacén (`meta.warehouse_stock`) y
|
|
1006
|
+
* comprometido (`meta.committed`).
|
|
1007
|
+
*/
|
|
1008
|
+
forItem: (itemId: number | string, query?: RequestOptions["query"], options?: ReadOptions) => Promise<{
|
|
1009
|
+
data: components["schemas"]["StockMovementResource"][];
|
|
1010
|
+
meta: {
|
|
1011
|
+
opening_stock: number | null;
|
|
1012
|
+
warehouse_stock: {
|
|
1013
|
+
warehouse_id: number;
|
|
1014
|
+
warehouse_name: string;
|
|
1015
|
+
quantity: number;
|
|
1016
|
+
}[];
|
|
1017
|
+
committed: {
|
|
1018
|
+
quantity: number;
|
|
1019
|
+
available: number | null;
|
|
1020
|
+
documents: ({
|
|
1021
|
+
document_type: "delivery_note";
|
|
1022
|
+
document_id: number;
|
|
1023
|
+
document_number: string;
|
|
1024
|
+
customer_name: string;
|
|
1025
|
+
date: string;
|
|
1026
|
+
quantity: number;
|
|
1027
|
+
} | {
|
|
1028
|
+
document_type: "invoice";
|
|
1029
|
+
document_id: number;
|
|
1030
|
+
document_number: string;
|
|
1031
|
+
customer_name: string;
|
|
1032
|
+
date: string;
|
|
1033
|
+
quantity: number;
|
|
1034
|
+
})[];
|
|
1035
|
+
} | null;
|
|
1036
|
+
};
|
|
1037
|
+
}>;
|
|
1038
|
+
/**
|
|
1039
|
+
* El ajuste manual con motivo: la corrección que deja rastro, frente al
|
|
1040
|
+
* `PUT /items/{item}` que pisa el contador sin decir por qué. Cantidad
|
|
1041
|
+
* FIRMADA (± decimal) y `note` obligatoria; `warehouse_id` opcional.
|
|
1042
|
+
*/
|
|
1043
|
+
adjust: (itemId: number | string, body: {
|
|
1044
|
+
quantity: number;
|
|
1045
|
+
note: string;
|
|
1046
|
+
warehouse_id?: number;
|
|
1047
|
+
}, options?: WriteOptions) => Promise<{
|
|
1048
|
+
data: components["schemas"]["StockMovementResource"];
|
|
1049
|
+
}>;
|
|
1050
|
+
};
|
|
963
1051
|
get<T = unknown>(path: string, query?: RequestOptions['query'], options?: ReadOptions): Promise<T>;
|
|
964
1052
|
post<T = unknown>(path: string, body?: unknown, options?: WriteOptions): Promise<T>;
|
|
965
1053
|
put<T = unknown>(path: string, body?: unknown, options?: WriteOptions): Promise<T>;
|
package/dist/client.js
CHANGED
|
@@ -245,6 +245,55 @@ export class PimiaClient {
|
|
|
245
245
|
delete: (id, options) => this.delete(`/stock-counts/${id}`, options),
|
|
246
246
|
};
|
|
247
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* El libro del almacén: por qué un artículo tiene el saldo que tiene. Exige
|
|
250
|
+
* `items:read` — leer el libro es leer el catálogo que explica— y, a
|
|
251
|
+
* diferencia de almacenes y recuentos, **NO va tras el módulo `stock`**: el
|
|
252
|
+
* libro es N1 y N1 es de todos.
|
|
253
|
+
*
|
|
254
|
+
* ## El COMPROMETIDO, en la cabecera de `forItem`
|
|
255
|
+
*
|
|
256
|
+
* `meta.committed` responde la otra mitad de la pregunta: no «cuánto tengo»
|
|
257
|
+
* sino **«cuánto de lo que tengo puedo vender»**. Trae la cantidad, el
|
|
258
|
+
* disponible (saldo − comprometido) y el DESGLOSE de los documentos que lo
|
|
259
|
+
* comprometen.
|
|
260
|
+
*
|
|
261
|
+
* ⛔ **Tres cosas que hay que tener delante:**
|
|
262
|
+
*
|
|
263
|
+
* 1. **Es una cifra DERIVADA**: no hay columna que escribir, no existe un
|
|
264
|
+
* `PUT` para reservar. Comprometen el albarán y la factura **en
|
|
265
|
+
* borrador**, y dejan de hacerlo solos cuando mueven el almacén (al
|
|
266
|
+
* entregar y al publicar). El presupuesto aceptado NO compromete: nada en
|
|
267
|
+
* el núcleo dice cuándo se cumplió.
|
|
268
|
+
* 2. ⚠️ **`committed` a `null` NO es cero.** Es «no se está calculando» — la
|
|
269
|
+
* empresa no tiene el módulo `stock`, o tiene el ciclo de inventario
|
|
270
|
+
* apagado. Pintar un 0 ahí afirma «nada comprometido», que es justo lo
|
|
271
|
+
* que no se sabe. Igual con `committed_quantity` en el artículo.
|
|
272
|
+
* 3. **Es GLOBAL por artículo, sin dimensión de almacén**: de los documentos
|
|
273
|
+
* que comprometen solo el albarán declara almacén.
|
|
274
|
+
*/
|
|
275
|
+
get stockMovements() {
|
|
276
|
+
return {
|
|
277
|
+
/**
|
|
278
|
+
* El libro entero de la empresa, filtrable por artículo, almacén, motivo
|
|
279
|
+
* y fechas. Su `meta` trae además el valor informativo del almacén
|
|
280
|
+
* (`stock_value_cents`), que NO es valoración contable.
|
|
281
|
+
*/
|
|
282
|
+
list: (query, options) => this.get('/stock-movements', query, options),
|
|
283
|
+
/**
|
|
284
|
+
* El libro de UN artículo, con la cabecera que lo explica: saldo
|
|
285
|
+
* (`meta.opening_stock`), reparto por almacén (`meta.warehouse_stock`) y
|
|
286
|
+
* comprometido (`meta.committed`).
|
|
287
|
+
*/
|
|
288
|
+
forItem: (itemId, query, options) => this.get(`/items/${itemId}/stock-movements`, query, options),
|
|
289
|
+
/**
|
|
290
|
+
* El ajuste manual con motivo: la corrección que deja rastro, frente al
|
|
291
|
+
* `PUT /items/{item}` que pisa el contador sin decir por qué. Cantidad
|
|
292
|
+
* FIRMADA (± decimal) y `note` obligatoria; `warehouse_id` opcional.
|
|
293
|
+
*/
|
|
294
|
+
adjust: (itemId, body, options) => this.post(`/items/${itemId}/stock-adjustments`, body, options),
|
|
295
|
+
};
|
|
296
|
+
}
|
|
248
297
|
get(path, query, options) {
|
|
249
298
|
return this.request(path, { ...options, method: 'GET', query });
|
|
250
299
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pimia/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Cliente TypeScript de la API de Pimia para apps de partner: OAuth con PKCE, rotación de refresh persistida, reintentos de rate limit y tipos generados del OpenAPI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Pimia (https://pimia.es)",
|