# Recibir caja de GRN

**PUT** /v1/inventory/grn/boxes/:box_id/receive

Registra la cantidad real recibida. La operación:

1. Crea o incrementa un lote en la ubicación de la GRN si la caja tiene lot_number o expiry_date.
2. Añade una entrada inmutable al registro (movement_type receive).
3. Define status matched si received_qty es igual a expected_qty; si no, discrepancy.
4. Recalcula el estado de la GRN y la cierra cuando se procesan todas las cajas.

Parámetro box_id (integer): ID de la caja.

Campos: received_qty (integer, obligatorio), cantidad real contada; note (string, opcional), sustituye la nota de la caja.

Respuesta box: objeto actualizado con estado final y received_qty.

Estados: pending (aún no recibida), matched (cantidad exacta), discrepancy (cantidad distinta).
