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)