Files
plantillas-proyectos/backend/api/v1/modules/a76/transportation/drivers/services.py
AlexeerCT 3210e53608 feat: Enhance driver and transportation data handling in invoice editing
- Added methods to list drivers and filter by company and tenant in DriverService.
- Updated API routes to include transporters, vehicles, drivers, trailers, customs sections, and code pedimento regimens.
- Modified frontend components to handle new transportation data, including select inputs for transporters, vehicles, drivers, and trailers.
- Improved data fetching in server-side routes to include additional transportation-related data.
- Enhanced UI components to display and select transportation-related information in the invoice editing form.
2025-12-30 15:57:27 -06:00

58 lines
1.7 KiB
Python

from typing import List, Optional
from sqlalchemy.orm import Session
from . import dto, models
class DriverService:
@staticmethod
def list_drivers(
db: Session, company_id: str, tenant_id: Optional[str] = None
) -> List[models.Driver]:
query = db.query(models.Driver).filter(models.Driver.company_id == company_id)
if tenant_id:
query = query.filter(models.Driver.tenant_id == tenant_id)
return query.all()
@staticmethod
def get_driver_by_key_and_line(
db: Session,
transporter_key: str,
line: int,
company_id: str,
tenant_id: Optional[str] = None,
) -> Optional[models.Driver]:
query = db.query(models.Driver).filter(
models.Driver.transporter_key == transporter_key,
models.Driver.line == line,
models.Driver.company_id == company_id,
)
if tenant_id:
query = query.filter(models.Driver.tenant_id == tenant_id)
return query.first()
@staticmethod
def create_driver(db: Session, driver_data: dto.DriverCreateDTO):
new_driver = models.Driver(**driver_data.dict())
db.add(new_driver)
db.commit()
db.refresh(new_driver)
return new_driver
@staticmethod
def delete_driver(
db: Session,
transporter_key: str,
line: int,
company_id: str,
tenant_id: Optional[str] = None,
) -> Optional[models.Driver]:
driver = DriverService.get_driver_by_key_and_line(
db, transporter_key, line, company_id, tenant_id
)
if driver:
db.delete(driver)
db.commit()
return driver