feature/mensajes-claros-en-eliminar-clases
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user