Agregar Cotización Web (UDO) para cliente Aberio

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
GeorgeandClaude Sonnet 5.5 committed 2026-10-01 11:44:29 -05:00
1 parent f58f4292c3
commit cdd4ffaff8
20 files changed
+1277 -17

No files matched your search

+43
View File
@@ -101,6 +101,49 @@ async def get_udf_valid_values(table_name: str, field_name: str):
}
@router.get("/api/PriceLists")
async def get_price_lists():
"""
Listas de precio de SAP, normalizadas a {Code, Name} (PriceListNo /
PriceListName) para poder reusar el hook useSapCatalog del frontend
igual que con las tablas de usuario y los UDF.
"""
sap_params = {
"$select": "PriceListNo,PriceListName",
"$top": 200,
}
response = forward_to_sapb1(
method="GET",
endpoint_path="PriceLists",
params=sap_params,
).json()
return {
"value": [
{"Code": pl["PriceListNo"], "Name": pl["PriceListName"]}
for pl in response.get("value", [])
]
}
@router.get("/api/CompanyService/DefaultWarehouse")
async def get_default_warehouse():
"""
Almacén por defecto de la compañía (CompanyService_GetAdminInfo es un
FunctionImport de Service Layer que, pese al nombre "Get", solo se
invoca por POST). Se normaliza a un único campo para que el frontend no
tenga que conocer el resto de AdminInfo.
"""
response = forward_to_sapb1(
method="POST",
endpoint_path="CompanyService_GetAdminInfo",
json_data={},
).json()
return {"DefaultWarehouse": response.get("DefaultWarehouse")}
@router.get("/api/ItemGroups")
async def get_item_groups():
+14
View File
@@ -0,0 +1,14 @@
from core.crud_router import make_crud_router
# CRUD genérico del objeto de usuario (UDO) "CotizacionWEB": documento propio
# (cabecera @OQUT + detalle @UQT1) con la misma forma que cualquier
# documento estándar de SAP expuesto por Service Layer (StockTransferLines,
# DocumentLines, etc. son el mismo patrón): un array anidado, acá llamado
# "QUT1Collection". El backend no transforma nada, el frontend arma el JSON
# completo (campos U_* de la cabecera + QUT1Collection) y lo manda tal cual.
router = make_crud_router(
"CotizacionWEB",
tags=["Cotización Web"],
key_field="DocEntry",
supports_orderby=True,
)