from datetime import datetime from typing import Any, List, Optional from uuid import UUID from pydantic import Field from src.models import DefaultBase, Pagination class PlantTransactionDataBase(DefaultBase): tahun: Optional[int] = Field(None, nullable=True, ge=1900, le=9999) is_actual: Optional[int] = Field(None, nullable=True, ge=0, le=1) seq: Optional[int] = Field(None, nullable=True, ge=0, le=9999) net_capacity_factor: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) eaf: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) production_bruto: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) production_netto: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) energy_sales: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) fuel_consumption: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_a: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_b: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_c: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_d: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_total: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_pv: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) revenue_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_replacement: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_pm: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_acquisition: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_pinjaman: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_depreciation: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_total: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_pv: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_a_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_c_fuel: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_c_pv: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_c_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_bd_om: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_bd_pm_nonmi: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_bd_bd: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_bd_total: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_bd_pv: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_bd_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) cost_disposal_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) total_expense: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) total_cost_eac: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) total_profit_loss: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) total_residual_value: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) total_profit_loss: Optional[float] = Field(None, nullable=True) total_residual_value: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) calc_depreciation: Optional[float] = Field(None, nullable=True) calc_interest_payment: Optional[float] = Field(None, nullable=True) calc_principal_payment: Optional[float] = Field(None, nullable=True) calc_dept_amount: Optional[float] = Field(None, nullable=True) calc2_ebitda: Optional[float] = Field(None, nullable=True) calc2_earning_before_tax: Optional[float] = Field(None, nullable=True) calc2_tax: Optional[float] = Field(None, nullable=True) calc2_earning_after_tax: Optional[float] = Field(None, nullable=True) calc2_nopat: Optional[float] = Field(None, nullable=True) calc3_interest_after_tax: Optional[float] = Field(None, nullable=True) calc3_free_cash_flow_on_project: Optional[float] = Field(None, nullable=True) calc3_discounted_fcf_on_project: Optional[float] = Field(None, nullable=True) calc4_principal_repayment: Optional[float] = Field(None, nullable=True) calc4_free_cash_flow_on_equity: Optional[float] = Field(None, nullable=True) calc4_discounted_fcf_on_equity: Optional[float] = Field(None, nullable=True) created_at: Optional[datetime] = Field(None, nullable=True) updated_at: Optional[datetime] = Field(None, nullable=True) created_by: Optional[str] = Field(None, nullable=True) updated_by: Optional[str] = Field(None, nullable=True) cost_disposal_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_total_revenue: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_revenue_a: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_revenue_b: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_revenue_c: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_revenue_d: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_revenue_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_fuel_cost_component_c: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_fuel_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_fuel_cost_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_oem_component_bd: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_oem_bd_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_oem_periodic_maintenance_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_oem_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_capex_component_a: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_capex_biaya_investasi_tambahan: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_capex_acquisition_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) chart_capex_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_total_revenue: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_revenue_a: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_revenue_b: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_revenue_c: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_revenue_d: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_revenue_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_fuel_cost_component_c: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_fuel_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_fuel_cost_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_oem_component_bd: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_oem_bd_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_oem_periodic_maintenance_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_oem_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_capex_component_a: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_capex_biaya_investasi_tambahan: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_capex_acquisition_cost: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) # fs_chart_capex_annualized: Optional[float] = Field(None, nullable=True, ge=0, le=1_000_000_000_000_000) class PlantTransactionChart(PlantTransactionDataBase): pass class PlantChartData(DefaultBase): items: List[PlantTransactionChart] bep_year: Optional[int] = Field(int, nullable=True, ge=0, le=9999) bep_total_lcc: Optional[float] = Field(float, nullable=True, ge=0, le=1_000_000_000_000_000) class PlantTransactionFSImport(DefaultBase): data: List[List[Optional[Any]]] is_actual: Optional[int] = Field(None, nullable=True, ge=0, le=1) seq: Optional[int] = Field(None, nullable=True, ge=0, le=9999) class PlantTransactionDataCreate(PlantTransactionDataBase): pass class PlantTransactionDataUpdate(PlantTransactionDataBase): pass class PlantTransactionDataRead(PlantTransactionDataBase): id: UUID class PlantTransactionDataPagination(Pagination): items: List[PlantTransactionDataRead] = []