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>
This commit is contained in:
1 parent
d900b62f33
commit
7e0a646853
19 files changed
+2830
-5
No files matched your search
@@ -0,0 +1,34 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
|
||||
from core.series import get_active_series, get_default_series
|
||||
|
||||
router = APIRouter(tags=["Series"])
|
||||
|
||||
|
||||
class SeriesOption(BaseModel):
|
||||
Series: int
|
||||
Name: str
|
||||
|
||||
|
||||
class SeriesListResponse(BaseModel):
|
||||
Default: Optional[int] = None
|
||||
Options: List[SeriesOption]
|
||||
|
||||
|
||||
@router.get("/api/series", response_model=SeriesListResponse)
|
||||
async def list_series(document: str):
|
||||
"""
|
||||
Series activas (no bloqueadas) y serie por defecto para un tipo de
|
||||
documento de SAP B1. `document` es el código BoObjectTypes del
|
||||
documento (ej. "1250000001" para Solicitud de Transferencia); lo define
|
||||
cada módulo que lo consuma, no este router.
|
||||
"""
|
||||
active_series = get_active_series(document)
|
||||
options = [
|
||||
{"Series": s["Series"], "Name": s.get("Name") or str(s["Series"])}
|
||||
for s in active_series
|
||||
]
|
||||
return {"Default": get_default_series(document), "Options": options}
|
||||
Reference in new issue
Block a user