from sqlalchemy.orm import Session from datetime import datetime from typing import Optional from fastapi import HTTPException from app.modules.invoices.models import Invoices from app.modules.invoices.schema import class InvoicesService: @staticmethod def create_invoices(db: Session, data: ): new_invoices = Invoices(**data.dict()) db.add(new_invoices) db.commit() db.refresh(new_invoices) return new_invoices @staticmethod def get_invoices(db: Session, invoices_id: int, current_user): invoices = db.query(Invoices).filter(Invoices.id == invoices_id).first() if not invoices: raise ValueError("invoices no encontrado") return invoices @staticmethod def update_invoices(db: Session, invoices_id: int, data: , current_user): invoices = db.query(Invoices).filter(Invoices.id == invoices_id).first() if not invoices: raise ValueError("invoices no encontrado") if current_user.role not in ["ROOT", "ADMIN"]: raise ValueError("No tienes permisos para actualizar este invoices") update_data = data.dict(exclude_unset=True) for key, value in update_data.items(): setattr(invoices, key, value) db.commit() db.refresh(invoices) return invoices @staticmethod def delete_invoices(db: Session, invoices_id: int, current_user): invoices = db.query(Invoices).filter(Invoices.id == invoices_id).first() if not invoices: raise ValueError("invoices no encontrado") if current_user.role not in ["ROOT", "ADMIN"]: raise ValueError("No tienes permisos para eliminar este invoices") try: invoices.is_active = False invoices.deleted_at = datetime.utcnow() invoices.deleted_by = current_user.id db.commit() db.refresh(invoices) except Exception as e: db.rollback() raise ValueError(f"Error al eliminar el invoices: {e}") return {"message": "invoices eliminado correctamente"}