"""Schemas for Pemindahan Produk module."""

from datetime import date, datetime, time
from decimal import Decimal
from typing import Optional

from pydantic import BaseModel, ConfigDict


class PemindahanCreate(BaseModel):
    tanggal: date
    jam: Optional[time] = None
    tangki_sumber_id: int
    tangki_tujuan_id: int
    volume_sumber_sebelum: Decimal
    volume_tujuan_sebelum: Decimal
    volume_tujuan_sesudah: Decimal
    catatan: Optional[str] = None


class PemindahanResponse(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: int
    spbu_id: int
    tanggal: date
    jam: Optional[time] = None
    tangki_sumber_id: int
    tangki_sumber_nama: Optional[str] = None
    produk_lama_id: Optional[int] = None
    produk_lama_nama: Optional[str] = None
    tangki_tujuan_id: int
    tangki_tujuan_nama: Optional[str] = None
    volume_sumber_sebelum: Decimal
    volume_tujuan_sebelum: Decimal
    volume_tujuan_sesudah: Decimal
    volume_masuk: Decimal
    losses_transfer: Decimal
    catatan: Optional[str] = None
    dilakukan_oleh: Optional[int] = None
    dilakukan_oleh_nama: Optional[str] = None
    created_at: datetime
    updated_at: datetime
