- 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>
16 lines
726 B
Python
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,
|
|
)
|