33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
from datetime import date
|
|
from sqlalchemy import Column, Date, ForeignKey, Integer, Numeric, String, Text, Enum
|
|
from sqlalchemy.orm import relationship
|
|
import enum
|
|
|
|
from app.db.session import Base
|
|
from app.models.base import Base as CustomBase
|
|
|
|
|
|
class PaymentMethod(str, enum.Enum):
|
|
"""Enum for payment methods."""
|
|
CREDIT_CARD = "credit_card"
|
|
BANK_TRANSFER = "bank_transfer"
|
|
CASH = "cash"
|
|
CHECK = "check"
|
|
PAYPAL = "paypal"
|
|
OTHER = "other"
|
|
|
|
|
|
class Payment(Base, CustomBase):
|
|
"""Payment model for tracking invoice payments."""
|
|
|
|
amount = Column(Numeric(10, 2), nullable=False)
|
|
payment_date = Column(Date, nullable=False, default=date.today)
|
|
payment_method = Column(Enum(PaymentMethod), nullable=False)
|
|
reference = Column(String(255), nullable=True)
|
|
notes = Column(Text, nullable=True)
|
|
|
|
# Foreign keys
|
|
invoice_id = Column(Integer, ForeignKey("invoice.id"), nullable=False)
|
|
|
|
# Relationships
|
|
invoice = relationship("Invoice", back_populates="payments") |