Files
mini-erp/mini-backend/routers/inventory_transfer_requests.py
T
GeorgeandClaude Sonnet 5 7e0a646853 Agregar flujo de inmovilización/liberación de lotes (Inmovilizar, Liberar y Confirmar Liberación Lote)
- Inmovilizar Lotes: selección múltiple de almacén origen con cantidad editable, genera Solicitud de Transferencia hacia un almacén de inmovilizados.
- Liberar Lotes: inversa de la anterior, con almacenes/campos de usuario propios (U_SIS_MOVINV, U_EXX_TIPOOPER, U_SIS_TIPDESP, U_SIS_MOTALM).
- Confirmar Liberación Lote: lista las Solicitudes abiertas pendientes (U_SIS_MOTALM=108) y, por cada lote, resuelve contra el historial de transferencias en HANA a qué almacén(es) debe volver, repartiendo la cantidad entre orígenes; permite editar cantidad, almacén destino, y agregar/quitar líneas antes de actualizar la Solicitud en SAP.
- Backend: nuevo endpoint /api/batch/lot-source-warehouse (HANA) para resolver el origen histórico de un lote; endpoint genérico /api/Catalogs/UdfValidValues (Service Layer) para valores válidos de un UDF; PATCH genérico ahora reenvía cualquier header B1S-* que mande el frontend en vez de decidirlos en el backend.
- Registro de rutas, menú y permisos para las tres pantallas nuevas.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 13:08:58 -05:00

16 lines
726 B
Python

from core.crud_router import make_crud_router
from core.inventory_transfer_requests import INVENTORY_TRANSFER_REQUESTS_RESOURCE
# CRUD genérico de Solicitudes de Transferencia (list/get/create). El
# frontend arma acá el JSON completo que espera SAP (StockTransferLines,
# BatchNumbers, campos U_* de usuario, etc.) y lo manda directo a este
# endpoint; el backend no valida stock ni transforma nada, es SAP quien
# rechaza el documento si no hay stock suficiente (ver "Inmovilizar Lotes"
# en mini-frontend/src/views/inventario/InmovilizarLotesView.tsx).
router = make_crud_router(
INVENTORY_TRANSFER_REQUESTS_RESOURCE,
tags=["Solicitudes de Transferencia"],
key_field="DocEntry",
supports_orderby=True,
)