feat: add fixed asset classes management page and embed functionality

- Implemented a new page for managing fixed asset classes with full CRUD functionality.
- Added filtering options for searching classes by code, description, type, and fraction.
- Integrated dialogs for inserting, editing, and deleting classes with validation.
- Enhanced error handling and user feedback with toast notifications.
- Created an embedded iframe for the fixed asset classes page in the merchandise section.
This commit is contained in:
Galindo97
2026-01-08 16:33:43 -06:00
parent 7c9c295c5c
commit ea0e570678
18 changed files with 3014 additions and 48 deletions

View File

@@ -13,8 +13,10 @@ from core.middleware import (
RequestLoggingMiddleware,
TenantMiddleware,
)
from fastapi import FastAPI
from fastapi import FastAPI, Request, status, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from fastapi.exceptions import RequestValidationError
from fastapi.responses import JSONResponse
from api.v1.modules.a76.items.models import Item # Importar rutas para registrar con el router
from api.v1.modules.a76.items.series.models import Serie # Importar modelos para registrar con SQLAlchemy
@@ -38,6 +40,27 @@ app = FastAPI(
)
# Add validation error handler
@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request: Request, exc: RequestValidationError):
logger.error(f"Validation error for {request.method} {request.url.path}: {exc.errors()}")
logger.error(f"Request body: {await request.body()}")
return JSONResponse(
status_code=status.HTTP_400_BAD_REQUEST,
content={"detail": exc.errors(), "body": exc.body},
)
# Add HTTP exception handler
@app.exception_handler(HTTPException)
async def http_exception_handler(request: Request, exc: HTTPException):
logger.error(f"HTTP {exc.status_code} for {request.method} {request.url.path}: {exc.detail}")
return JSONResponse(
status_code=exc.status_code,
content={"detail": exc.detail},
)
# Inicializar la base de datos
@app.on_event("startup")
async def on_startup():