ifixkart-backend/Backend/app/models/ServicePaymentModel.py

26 lines
1.3 KiB
Python

from sqlalchemy import Column, String, DateTime, Numeric, ForeignKey
from sqlalchemy.sql import func
from app.core.database.db_session import Base
class ServicePayment(Base):
__tablename__ = "service_payments"
payment_id = Column(String(26), primary_key=True)
service_job_id = Column(String(26), ForeignKey("service_jobs.job_id"), nullable=False, index=True)
quote_id = Column(String(26), ForeignKey("service_job_quotes.quote_id"), nullable=True)
payment_type = Column(String(20), nullable=False) # ADVANCE, ADDITIONAL, FINAL, REFUND
amount = Column(Numeric(10, 2), nullable=False)
status = Column(String(20), default="PENDING") # PENDING, CAPTURED, FAILED, REFUNDED
provider = Column(String(50), nullable=True) # RAZORPAY, CASH, UPI, etc.
provider_order_id = Column(String(100), nullable=True)
provider_payment_id = Column(String(100), unique=True, nullable=True, index=True)
provider_signature = Column(String(255), nullable=True)
transaction_reference = Column(String(100), nullable=True)
# Refund Tracking Audit Columns
provider_refund_id = Column(String(100), nullable=True, index=True)
refund_reason = Column(String(255), nullable=True)
refunded_at = Column(DateTime, nullable=True)
created_at = Column(DateTime, server_default=func.now())
paid_at = Column(DateTime, nullable=True)