Files
arrr-erp/app/modules/clients/association_admin_service.py
2026-06-20 15:01:44 +05:30

42 lines
1.0 KiB
Python

from __future__ import annotations
from sqlalchemy import select
from sqlalchemy.orm import Session
from app.modules.clients.association_models import ClientAssociation
def get_active_association(db: Session, client_id: int):
stmt = (
select(ClientAssociation)
.where(ClientAssociation.client_id == client_id)
.limit(1)
)
return db.execute(stmt).scalar_one_or_none()
def ensure_active_association(db: Session, client_id: int):
row = get_active_association(db, client_id)
if row:
return row
row = ClientAssociation(
client_id=client_id,
association_type="firm",
created_source="system_admin",
)
db.add(row)
db.commit()
db.refresh(row)
return row
def update_association_fields(db: Session, client_id: int, **fields):
row = ensure_active_association(db, client_id)
for key, value in fields.items():
if hasattr(row, key):
setattr(row, key, value)
db.add(row)
db.commit()
db.refresh(row)
return row