"""
Reporting Domain Entities — Aggregate/Summary Tables.
"""
from dataclasses import dataclass
from datetime import date
from typing import Optional
from uuid import UUID

from shared.base_classes.entity import TenantEntity


@dataclass
class StockMovementSummary(TenantEntity):
    """خلاصه حرکات — Aggregate Table."""

    summary_date: Optional[date] = None
    item_id: Optional[UUID] = None
    warehouse_id: Optional[UUID] = None
    transaction_type: str = ""

    total_in_quantity: float = 0.0
    total_out_quantity: float = 0.0
    net_quantity: float = 0.0
    total_in_value: float = 0.0
    total_out_value: float = 0.0
    transaction_count: int = 0

    company_id: Optional[UUID] = None


@dataclass
class StockAgingBucket(TenantEntity):
    """سطل‌های عمر موجودی."""

    item_id: Optional[UUID] = None
    warehouse_id: Optional[UUID] = None
    batch_id: Optional[UUID] = None

    age_in_days: int = 0
    aging_category: str = ""  # 0-30, 31-60, 61-90, 91-180, 180+
    quantity: float = 0.0
    value: float = 0.0

    snapshot_date: Optional[date] = None
    company_id: Optional[UUID] = None
