Merge branch 'development' of https://git.aduanasoft.com/ADUANASOFT/anexo76 into feature/partePais_BOM

This commit is contained in:
2026-03-13 10:59:03 -05:00
125 changed files with 18840 additions and 4414 deletions

View File

@@ -139,6 +139,7 @@ class TenantCRUDRoutes(
async def list_resources(
request: Request,
company_id: int = Query(..., description="Company ID"),
all_companies: bool = Query(False, description="Whether to search in all companies of the tenant"),
page: int = Query(1, ge=1, description="Page number"),
page_size: int = Query(
self.default_page_size,
@@ -149,19 +150,32 @@ class TenantCRUDRoutes(
db: Session = Depends(self.db_dependency),
current_user: Dict[str, Any] = Depends(self.auth_dependency),
):
tenant_id = validate_access_to_resource(
db,
company_id,
current_user,
self.list_permissions,
self.require_all,
)
from core.security import get_tenant_from_token
if all_companies:
tenant_id = get_tenant_from_token(current_user)
if not tenant_id:
tenant_id = current_user.get("tenant_id")
if not tenant_id:
raise HTTPException(status_code=400, detail="Tenant ID not found in token")
# In all_companies mode, we don't filter by company_id,
# but we still need the tenant_id from the session/token.
target_company_id = None
else:
tenant_id = validate_access_to_resource(
db,
company_id,
current_user,
self.list_permissions,
self.require_all,
)
target_company_id = company_id
skip = (page - 1) * page_size
# Extraer todos los parámetros de búsqueda dinámicamente
# Excluimos los parámetros estándar de paginación y control
standard_params = {"company_id", "page", "page_size"}
standard_params = {"company_id", "all_companies", "page", "page_size"}
filters = {
k: v
for k, v in request.query_params.items()
@@ -169,7 +183,7 @@ class TenantCRUDRoutes(
}
items, total = self.service.get_all(
db, tenant_id, company_id, skip, page_size, filters
db, tenant_id, target_company_id, skip, page_size, filters
)
@@ -192,6 +206,7 @@ class TenantCRUDRoutes(
)
async def list_resources(
company_id: int = Query(..., description="Company ID"),
all_companies: bool = Query(False, description="Whether to search in all companies of the tenant"),
page: int = Query(1, ge=1, description="Page number"),
page_size: int = Query(
self.default_page_size,
@@ -202,18 +217,29 @@ class TenantCRUDRoutes(
db: Session = Depends(self.db_dependency),
current_user: Dict[str, Any] = Depends(self.auth_dependency),
):
tenant_id = validate_access_to_resource(
db,
company_id,
current_user,
self.list_permissions,
self.require_all,
)
from core.security import get_tenant_from_token
if all_companies:
tenant_id = get_tenant_from_token(current_user)
if not tenant_id:
tenant_id = current_user.get("tenant_id")
if not tenant_id:
raise HTTPException(status_code=400, detail="Tenant ID not found in token")
target_company_id = None
else:
tenant_id = validate_access_to_resource(
db,
company_id,
current_user,
self.list_permissions,
self.require_all,
)
target_company_id = company_id
skip = (page - 1) * page_size
items, total = self.service.get_all(
db, tenant_id, company_id, skip, page_size, None
db, tenant_id, target_company_id, skip, page_size, None
)
return {