50 lines
2.2 KiB
Python
Executable File
50 lines
2.2 KiB
Python
Executable File
import enum
|
|
from sqlalchemy import Column, Integer, String, ForeignKey, Enum, DateTime, Boolean, Date, JSON
|
|
from sqlalchemy.sql import func
|
|
from app.db.base import Base
|
|
|
|
# Költség Kategóriák
|
|
class ExpenseCategory(str, enum.Enum):
|
|
PURCHASE_PRICE = "PURCHASE_PRICE" # Vételár
|
|
TRANSFER_TAX = "TRANSFER_TAX" # Vagyonszerzési illeték
|
|
ADMIN_FEE = "ADMIN_FEE" # Eredetiség, forgalmi, törzskönyv
|
|
VEHICLE_TAX = "VEHICLE_TAX" # Gépjárműadó
|
|
INSURANCE = "INSURANCE" # Biztosítás
|
|
REFUELING = "REFUELING" # Tankolás
|
|
SERVICE = "SERVICE" # Szerviz / Javítás
|
|
PARKING = "PARKING" # Parkolás
|
|
TOLL = "TOLL" # Autópálya matrica
|
|
FINE = "FINE" # Bírság
|
|
TUNING_ACCESSORIES = "TUNING_ACCESSORIES" # Extrák
|
|
OTHER = "OTHER" # Egyéb
|
|
|
|
class VehicleEvent(Base):
|
|
__tablename__ = "vehicle_events"
|
|
__table_args__ = {"schema": "data"}
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
vehicle_id = Column(Integer, ForeignKey("data.user_vehicles.id"), nullable=False)
|
|
|
|
# Esemény típusa
|
|
event_type = Column(Enum(ExpenseCategory, schema="data", name="expense_category_enum"), nullable=False)
|
|
|
|
date = Column(Date, nullable=False)
|
|
|
|
# Kilométeróra (KÖTELEZŐ!)
|
|
odometer_value = Column(Integer, nullable=False)
|
|
odometer_anomaly = Column(Boolean, default=False) # Ha csökkenést észlelünk, True lesz
|
|
|
|
# Pénzügyek
|
|
cost_amount = Column(Integer, nullable=False, default=0) # HUF
|
|
|
|
# Leírás és Képek
|
|
description = Column(String, nullable=True)
|
|
image_paths = Column(JSON, nullable=True) # Lista a feltöltött képek (számla, fotó) útvonalairól
|
|
|
|
# Kapcsolat a szolgáltatóval
|
|
# Ha is_diy=True, akkor a user maga csinálta.
|
|
# Ha is_diy=False és service_provider_id=None, akkor ismeretlen helyen készült.
|
|
is_diy = Column(Boolean, default=False)
|
|
service_provider_id = Column(Integer, ForeignKey("data.service_providers.id"), nullable=True)
|
|
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now()) |