feature/mensajes-claros-en-eliminar-clases

This commit is contained in:
2026-05-29 11:52:32 -06:00
parent c81d5487e5
commit ff14bd3645
2 changed files with 51 additions and 11 deletions

View File

@@ -370,11 +370,46 @@ class ClassService:
def delete(db: Session, class_id: int, tenant_id: int, company_id: int) -> bool:
"""Delete a class (and its FA extension if exists)"""
from api.v1.modules.a24.fa.fa_classes.models import QClasses
from api.v1.modules.a76.items.models import LineItem
from api.v1.modules.a76.parts.models import Part
class_obj = ClassService.get_by_id(db, class_id, tenant_id, company_id)
if not class_obj:
return False
used_in_parts = (
db.query(Part.id)
.filter(
Part.part_class == class_obj.class_code,
Part.tenant_id == tenant_id,
Part.company_id == company_id,
)
.first()
is not None
)
used_in_invoices = (
db.query(LineItem.id)
.filter(
LineItem.class_id == class_id,
LineItem.tenant_id == tenant_id,
LineItem.company_id == company_id,
)
.first()
is not None
)
if used_in_parts or used_in_invoices:
reasons: list[str] = []
if used_in_parts:
reasons.append("partes")
if used_in_invoices:
reasons.append("facturas")
usage = " y ".join(reasons)
raise HTTPException(
status_code=409,
detail=f"No se puede eliminar la clase porque ya fue utilizada en {usage}.",
)
# Delete FA extension first (if exists) to avoid FK constraint violation
fa_extension = db.query(QClasses).filter(
QClasses.class_id == class_id,