File size: 2,989 Bytes
9fd3989
 
 
 
 
 
 
 
 
 
 
 
 
 
0f78d29
9fd3989
 
 
 
 
 
 
 
 
 
 
 
 
 
edd1bb3
0f78d29
9fd3989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0f78d29
9fd3989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""
PostgreSQL reference models for POS sync.
"""
from sqlalchemy import Column, String, DateTime, Text, Boolean, Float, Integer, JSON, ARRAY
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func
from datetime import datetime

Base = declarative_base()


class CustomerRef(Base):
    """PostgreSQL reference table for customers"""
    __tablename__ = "customer_ref"
    __table_args__ = {"schema": "trans"}

    customer_id = Column(String, primary_key=True)
    merchant_id = Column(String, nullable=False, index=True)
    name = Column(String(150), nullable=False)
    phone = Column(String(20), nullable=True, index=True)
    email = Column(String(255), nullable=True, index=True)
    notes = Column(Text, nullable=True)
    status = Column(String(20), nullable=False, default="active")
    created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
    updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)


class StaffRef(Base):
    """PostgreSQL reference table for staff"""
    __tablename__ = "pos_staff_ref"
    __table_args__ = {"schema": "trans"}

    staff_id = Column(String, primary_key=True)
    merchant_id = Column(String, nullable=False, index=True)
    name = Column(String(150), nullable=False)
    phone = Column(String(20), nullable=True)
    email = Column(String(255), nullable=True)
    role = Column(String(50), nullable=True)
    specializations = Column(ARRAY(String), nullable=True)
    status = Column(String(20), nullable=False, default="active")
    created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
    updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)


class CatalogueServiceRef(Base):
    """PostgreSQL reference table for catalogue services"""
    __tablename__ = "catalogue_service_ref"
    __table_args__ = {"schema": "trans"}

    service_id = Column(String, primary_key=True)
    merchant_id = Column(String, nullable=False, index=True)
    service_name = Column(String(200), nullable=False)
    service_code = Column(String(50), nullable=False, index=True)
    category_id = Column(String, nullable=True)
    category_name = Column(String(100), nullable=True)
    description = Column(Text, nullable=True)
    duration_mins = Column(Integer, nullable=False, default=30)
    price = Column(Float, nullable=False, default=0.0)
    currency = Column(String(3), nullable=False, default="INR")
    gst_rate = Column(Float, nullable=False, default=18.0)
    status = Column(String(20), nullable=False, default="active")
    sort_order = Column(Integer, nullable=False, default=0)
    pricing = Column(JSON, nullable=True)  # Store full pricing JSON
    category = Column(JSON, nullable=True)  # Store full category JSON
    created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
    updated_at = Column(DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)