You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
4.9 KiB
Python
96 lines
4.9 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import Field
|
|
from src.models import CommonParams, DefaultBase, Pagination
|
|
from src.auth.service import CurrentUser
|
|
|
|
|
|
MAX_NUMERIC_VALUE = 1_000_000_000_000_000 # thousands of trillion
|
|
|
|
class PlantMasterdataBase(DefaultBase):
|
|
discount_rate: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
total_project_cost: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
umur_teknis: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
interest_rate: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
loan_portion: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
equity_portion: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
loan: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
loan_tenor: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
principal_interest_payment: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
corporate_tax_rate: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
wacc_on_project: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
wacc_on_equity: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
equity: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
daya_mampu_netto: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
auxiliary: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
susut_trafo: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
sfc: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_a: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_b: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_c: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_d: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
harga_bahan_bakar: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_project_irr: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_project_npv: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_equity_irr: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_equity_npv: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_roa_all: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_roa_current: Optional[float] = Field(None, ge=0, le=MAX_NUMERIC_VALUE)
|
|
created_at: Optional[datetime] = Field(None)
|
|
updated_at: Optional[datetime] = Field(None)
|
|
created_by: Optional[str] = Field(None)
|
|
updated_by: Optional[str] = Field(None)
|
|
|
|
|
|
class PlantMasterDataCreate(PlantMasterdataBase):
|
|
discount_rate: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
total_project_cost: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
umur_teknis: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
interest_rate: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
loan_portion: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
equity_portion: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
loan: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
loan_tenor: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
principal_interest_payment: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
corporate_tax_rate: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
wacc_on_project: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
wacc_on_equity: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
equity: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
daya_mampu_netto: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
auxiliary: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
susut_trafo: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
sfc: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_a: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_b: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_c: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
electricity_price_d: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
harga_bahan_bakar: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_project_irr: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_project_npv: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_equity_irr: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_on_equity_npv: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_roa_all: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
calc_roa_current: float = Field(..., ge=0, le=MAX_NUMERIC_VALUE)
|
|
|
|
|
|
class PlantMasterDataUpdate(PlantMasterdataBase):
|
|
pass
|
|
|
|
|
|
class PlantMasterDataRead(PlantMasterdataBase):
|
|
id: UUID
|
|
|
|
|
|
class PlantMasterDataPagination(Pagination):
|
|
items: List[PlantMasterDataRead] = []
|
|
|
|
|
|
class ListQueryParams(CommonParams):
|
|
search: Optional[str] = Field(
|
|
default=None,
|
|
description="Search keyword",
|
|
)
|
|
|