Documentos de venta
Pedidos de venta
GET /api/sales # Listar pedidosGET /api/sales/:id # DetalleGET /api/sales/:id/pdf # Descargar PDFPOST /api/sales # Crear pedidoPOST /api/sales/:id/cancel # CancelarEstados: O (Abierto) → P (Parcial) → C (Cerrado) / X (Cancelado)
Albaranes de venta
GET /api/sales/delivery-notes # ListarGET /api/sales/delivery-notes/:id # DetalleGET /api/sales/delivery-notes/:id/pdf # PDFPOST /api/sales/delivery-notes # CrearPOST /api/sales/delivery-notes/:id/cancel # CancelarEstados: O (Abierto) → C (Facturado) / X (Cancelado)
Al crear un albaran se descuenta stock del almacen.
Facturas de venta
GET /api/sales/invoices # ListarGET /api/sales/invoices/:id # DetalleGET /api/sales/invoices/:id/pdf # PDFPOST /api/sales/invoices # CrearPOST /api/sales/invoices/:id/post # Asentar (borrador → asentada)POST /api/sales/invoices/:id/cancel # CancelarDELETE /api/sales/invoices/:id # Eliminar (solo borradores)Estados: D (Borrador) → O (Asentada) / X (Cancelada)
Crear un documento
{ "seriesId": "uuid-serie", "periodId": "uuid-periodo", "partnerId": "uuid-socio", "date": "2026-04-16", "warehouseId": "uuid-almacen", "lines": [ { "itemId": "uuid-articulo", "quantity": 10, "price": 25.50, "taxGroupId": "uuid-impuesto", "warehouseId": "uuid-almacen", "zoneId": "uuid-zona" } ]}Flujo de documentos
Pedido de venta (SO) → Albaran de venta (SDN) — descuenta stock → Factura de venta (SINV) — cierra el albaranLas lineas pueden referenciar el documento base con baseType y baseId:
{ "itemId": "uuid", "quantity": 10, "price": 25.50, "taxGroupId": "uuid", "baseType": "SDN", "baseId": "uuid-albaran"}Campos de las lineas
| Campo | Descripcion |
|---|---|
itemId | Articulo |
quantity | Cantidad |
price | Precio unitario |
taxGroupId | Grupo de impuestos |
warehouseId | Almacen |
zoneId | Zona del almacen |
uomId | Unidad de medida alternativa |
uomFactor | Factor de conversion |
baseType | Tipo de documento base (SO, SDN) |
baseId | ID del documento base |
pluginData | Datos de plugins (JSONB) |