"""Domain Entities for Operations Module.
Strict Decimal Precision COMPLIANT with Construction ERP 2026.
"""

from __future__ import annotations

from dataclasses import dataclass
from datetime import date, datetime
from decimal import Decimal


@dataclass(frozen=True)
class Equipment:
    """Represents a heavy machinery or vehicle in the fleet."""

    id: str
    equipment_code: str
    equipment_name: str
    equipment_type: str | None = None
    license_plate: str | None = None
    fuel_norm_per_hour: Decimal = Decimal("0.0000")
    status: str = "operating"
    current_project_id: str | None = None
    created_at: datetime | None = None
    updated_at: datetime | None = None


@dataclass(frozen=True)
class EquipmentFuelLog:
    """Represents a fuel fill event for an equipment machine shift."""

    id: str
    equipment_id: str
    fill_date: date
    fuel_quantity_liters: Decimal
    unit_price_vnd: Decimal
    total_cost_vnd: Decimal
    odometer_hours: Decimal
    source_invoice_id: str | None = None
    created_at: datetime | None = None


@dataclass(frozen=True)
class EquipmentOperatingLog:
    """Operational machine-hour record for ca máy tracking."""

    id: str
    equipment_id: str
    hours_operated: Decimal
    project_id: str | None = None
    log_date: date | None = None
    created_at: datetime | None = None
