""" Service layer for PedimentoIncrementables CRUD operations """ from typing import Optional from sqlalchemy.orm import Session from ..dtos.pedimento_incrementables import ( PedimentoIncrementablesCreate, PedimentoIncrementablesUpdate, ) from ..models.pedimento_incrementables import PedimentoIncrementables class PedimentoIncrementablesService: """Service class for PedimentoIncrementables business logic""" @staticmethod def get_by_pedimento_id( db: Session, pedimento_id: int, tenant_id: int, company_id: int = None ) -> Optional[PedimentoIncrementables]: """Get incrementables by pedimento ID""" return ( db.query(PedimentoIncrementables) .filter( PedimentoIncrementables.pedimento_id == pedimento_id, PedimentoIncrementables.tenant_id == tenant_id, ) .first() ) @staticmethod def create( db: Session, data: PedimentoIncrementablesCreate ) -> PedimentoIncrementables: """Create new incrementables""" incrementables = PedimentoIncrementables(**data.model_dump()) db.add(incrementables) db.commit() db.refresh(incrementables) return incrementables @staticmethod def update( db: Session, pedimento_id: int, tenant_id: int, data: PedimentoIncrementablesUpdate, ) -> Optional[PedimentoIncrementables]: """Update incrementables""" incrementables = PedimentoIncrementablesService.get_by_pedimento_id( db, pedimento_id, tenant_id ) if not incrementables: return None update_data = data.model_dump(exclude_unset=True) for field, value in update_data.items(): setattr(incrementables, field, value) db.commit() db.refresh(incrementables) return incrementables @staticmethod def delete(db: Session, pedimento_id: int, tenant_id: int) -> bool: """Delete incrementables""" incrementables = PedimentoIncrementablesService.get_by_pedimento_id( db, pedimento_id, tenant_id ) if not incrementables: return False db.delete(incrementables) db.commit() return True