feat: вфыв

This commit is contained in:
2024-07-22 12:45:21 +03:00
parent 7c10d8777e
commit 82c9126d87
19 changed files with 725 additions and 18 deletions

51
models/payroll.py Normal file
View 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)