feat: вфыв
This commit is contained in:
51
models/payroll.py
Normal file
51
models/payroll.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import datetime
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import ForeignKey, Double
|
||||
from sqlalchemy.orm import mapped_column, Mapped, relationship
|
||||
|
||||
from models.base import BaseModel
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from models.auth import User
|
||||
|
||||
|
||||
class PayrollScheme(BaseModel):
|
||||
__tablename__ = 'payroll_schemas'
|
||||
key: Mapped[str] = mapped_column(primary_key=True)
|
||||
name: Mapped[str] = mapped_column(nullable=False)
|
||||
|
||||
|
||||
class PayRate(BaseModel):
|
||||
__tablename__ = 'pay_rates'
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
name: Mapped[str] = mapped_column(nullable=False)
|
||||
|
||||
payroll_scheme_key: Mapped[int] = mapped_column(ForeignKey("payroll_schemas.key"), nullable=False)
|
||||
payroll_scheme: Mapped["PayrollScheme"] = relationship(lazy="joined")
|
||||
|
||||
base_rate: Mapped[float] = mapped_column(Double, nullable=False)
|
||||
|
||||
overtime_rate: Mapped[float] = mapped_column(Double, nullable=True)
|
||||
overtime_threshold: Mapped[int] = mapped_column(nullable=True)
|
||||
|
||||
|
||||
class PaymentRecord(BaseModel):
|
||||
__tablename__ = 'payment_records'
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
|
||||
user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False)
|
||||
user: Mapped["User"] = relationship(back_populates="payment_records", foreign_keys=[user_id])
|
||||
|
||||
created_by_user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), nullable=False)
|
||||
created_by_user: Mapped["User"] = relationship(foreign_keys=[created_by_user_id])
|
||||
|
||||
start_date: Mapped[datetime.date] = mapped_column(nullable=False)
|
||||
end_date: Mapped[datetime.date] = mapped_column(nullable=False)
|
||||
created_at: Mapped[datetime.datetime] = mapped_column(nullable=False)
|
||||
|
||||
payroll_scheme_key: Mapped[int] = mapped_column(ForeignKey("payroll_schemas.key"), nullable=False)
|
||||
payroll_scheme: Mapped["PayrollScheme"] = relationship()
|
||||
|
||||
work_units: Mapped[int] = mapped_column(nullable=False)
|
||||
amount: Mapped[float] = mapped_column(Double, nullable=False)
|
||||
Reference in New Issue
Block a user