MukeshKapoor25's picture
feat(leave,wallet): Add leave and wallet modules with JWT auth
a558c77
"""
SQLAlchemy models for spa partner orders.
Maps to trans.spa_partner_orders and trans.spa_partner_order_items tables.
"""
from sqlalchemy import Column, String, Numeric, Integer, Text, TIMESTAMP, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.core.database import Base
import uuid
class SpaPartnerOrder(Base):
"""Spa partner order model"""
__tablename__ = "spa_partner_orders"
__table_args__ = {"schema": "trans"}
order_id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
order_number = Column(String(50), unique=True, nullable=False)
partner_id = Column(String(50), nullable=False)
merchant_id = Column(String(50))
order_status = Column(String(30), nullable=False) # draft | placed | approved | packed | dispatched | delivered | cancelled | returned
total_amount = Column(Numeric(12, 2), nullable=False)
tax_amount = Column(Numeric(12, 2))
discount_amount = Column(Numeric(12, 2))
net_amount = Column(Numeric(12, 2))
payment_status = Column(String(30)) # pending | partial | paid
payment_mode = Column(String(30)) # wallet | cash | online | credit
delivery_address = Column(Text)
city = Column(String(100))
created_at = Column(TIMESTAMP, server_default=func.current_timestamp())
updated_at = Column(TIMESTAMP, server_default=func.current_timestamp(), onupdate=func.current_timestamp())
# Relationship to order items
items = relationship("SpaPartnerOrderItem", back_populates="order", cascade="all, delete-orphan")
class SpaPartnerOrderItem(Base):
"""Spa partner order item model"""
__tablename__ = "spa_partner_order_items"
__table_args__ = {"schema": "trans"}
id = Column(Integer, primary_key=True, autoincrement=True)
order_id = Column(UUID(as_uuid=True), ForeignKey("trans.spa_partner_orders.order_id"), nullable=False)
product_id = Column(String(50), nullable=False)
product_name = Column(String(200))
quantity = Column(Integer, nullable=False)
unit_price = Column(Numeric(10, 2), nullable=False)
tax_percent = Column(Numeric(5, 2))
total_price = Column(Numeric(12, 2))
# Relationship to order
order = relationship("SpaPartnerOrder", back_populates="items")