Ferromax ERP provides three distinct ways to change stock levels: direct goods receipt for quick single-item additions, the two-step remito workflow for multi-item supplier deliveries, and manual stock adjustments for corrections and write-offs. Every operation — regardless of which path is used — creates aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/DragonesMagicos/ferromax_v0.8/llms.txt
Use this file to discover all available pages before exploring further.
MovimientoStock audit record so that the full history of every SKU is always traceable.
Direct Goods Receipt
The simplest way to add stock is a direct receipt, available at/recepcion. An ADMIN or EMPLEADO can register the arrival of a single product immediately, with no approval step required.
Endpoint:
RecepcionRequest body:
| Field | Type | Required | Description |
|---|---|---|---|
productoId | Long | ✅ | Internal product ID |
cantidad | Integer | ✅ | Units to add to stock |
notas | String | — | Free-text note, max 500 chars (e.g. remito number) |
RecepcionResponse (201 Created) with the product name, SKU, units received, previous stock, and new stock. The RecepcionPage.jsx UI shows these values in a confirmation panel with a “Recibir otro producto” button.
The backend records the receiving employee’s ID from the JWT (empleadoId) so every receipt is attributed to its operator.
Remito Workflow
For multi-item supplier deliveries that require admin review before stock is updated, use the remito (delivery note) workflow, available at/remitos.
Employee creates a remito
Any ADMIN or EMPLEADO opens the Remitos page and creates a new remito. The frontend sends:
The remito header is saved with status
RecepcionRemitoRequest body:| Field | Type | Required | Description |
|---|---|---|---|
proveedorId | Long | ✅ | Internal supplier ID |
numeroRemito | String | ✅ | Delivery-note number from the supplier (max 100 chars) |
notas | String | — | Free-text note (max 500 chars) |
PENDIENTE. Individual product lines are linked to this remito later by including the returned id as recepcionRemitoId in each POST /api/recepcion call. The employee can view their own submitted remitos at GET /api/recepciones-remito/mis-recepciones.Admin reviews pending remitos
An admin fetches all unconfirmed remitos:Each row in
RemitosPage.jsx shows the supplier name, remito number, creation date, employee who submitted it, item count, and an expandable item list. A Revisar button opens a modal with full item detail and optional admin notes.Admin confirms or rejects
From the review modal the admin sends:Set
aprobar: false to reject. The admin’s ID is extracted from the JWT and stored on the record.Stock updates on confirmation
When
aprobar: true, the service iterates over every item in the remito and increases the product’s stockActual by the specified quantity. A MovimientoStock record is created for each product, and if the new stock no longer triggers a low-stock threshold the associated AlertaStock is cleared. The remito status is updated to CONFIRMADO.GET /api/recepciones-remito. Admins can also retrieve a single remito by ID at GET /api/recepciones-remito/{id}.
Manual Stock Adjustment
When stock needs to be corrected without a supplier receipt — inventory count discrepancies, breakage, theft, or returns — admins use the manual adjustment page at/ajuste-stock.
Endpoint:
AjusteStockRequest body:
AjusteStockPage.jsx UI presents a product search field, toggle buttons for Entrada (+) and Salida (−), a quantity input, and a motivo textarea. It previews the resulting stock level before submission and blocks the request if the result would go negative.
Adjustment history is paginated and available at:
Page<AjusteStockResponse> with fields including movimientoId, nombreProducto, sku, cantidad, stockAnterior, stockNuevo, motivo, fecha, and nombreAdmin.
Stock Alerts
Ferromax ERP automatically generates anAlertaStock record whenever a product’s stock falls at or below its configured stockMinimo threshold. This happens during:
- A completed sale (via the POS or Tienda checkout)
- A manual stock adjustment with a negative delta
AlertaStockPanel. The count of products below their minimum is also surfaced in the productosStockCritico KPI card (DashboardDTO).
A WebSocket event is broadcast to /topic/stock-update whenever a low-stock condition is triggered or resolved, so the dashboard panel updates in real time without a page refresh.
Movement Audit Trail
Every stock change in the system — regardless of origin — creates aMovimientoStock record with the following information:
| Field | Description |
|---|---|
timestamp | OffsetDateTime of the change (Argentina TZ) |
tipoMovimiento | TipoMovimientoEnum — e.g. VENTA, RECEPCION, AJUSTE |
cantidad | Signed integer delta (positive = increase, negative = decrease) |
stockAnterior | Stock level before the change |
stockNuevo | Stock level after the change |
usuarioId | ID of the user (cashier, employee, or admin) who triggered it |