Subversion Repositories SmartDukaan

Rev

Rev 6531 | Rev 6751 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5944 mandeep.dh 1
'''
2
Created on 22-Mar-2010
3
 
4
@author: ashish
5
'''
6
from elixir import metadata, setup_all
7
from elixir.entity import Entity
8
from elixir.fields import Field
9
from elixir.options import using_options, using_table_options
10
from elixir.relationships import OneToMany, ManyToOne
11
from sqlalchemy import create_engine
12
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Enum
13
import datetime
14
 
15
class Vendor(Entity):
16
    id = Field(Integer, primary_key=True, autoincrement=True)
17
    name = Field(String(50))
18
    warehouses = OneToMany('Warehouse')
19
    using_options(shortnames=True)
20
    using_table_options(mysql_engine="InnoDB")
6498 vikram.rag 21
 
6531 vikram.rag 22
class IgnoredInventoryUpdateItems(Entity):
6498 vikram.rag 23
    warehouse_id = Field(Integer,primary_key=True,autoincrement=False)
24
    item_id = Field(Integer,primary_key=True,autoincrement=False)
25
    using_options(shortnames=True)
26
    using_table_options(mysql_engine="InnoDB")
5944 mandeep.dh 27
 
28
class Warehouse(Entity):
29
    id = Field(Integer, primary_key=True, autoincrement=True)
30
    displayName = Field(String(50))
31
    location = Field(String(200))
32
    status = Field(Integer)
33
    addedOn = Field(DateTime)
34
    lastCheckedOn = Field(DateTime)
35
    tinNumber = Field(String(50))
36
    pincode = Field(String(10))
37
    vendorString = Field(String(50))
38
    badInventory = OneToMany('BadInventorySnapshot')
39
    inventory = OneToMany('CurrentInventorySnapshot')
40
    inventoryHistory = OneToMany('ItemInventoryHistory')
41
    logisticsLocation = Field(Integer)
42
    vendor = ManyToOne('Vendor')
43
    billingType = Field(Integer)
44
    inventoryType = Field(Enum('GOOD', 'BAD', 'VIRTUAL'))
45
    warehouseType = Field(Enum('OURS', 'THIRD_PARTY'))
46
    shippingWarehouseId = Field(Integer)
47
    billingWarehouseId = Field(Integer)
48
    transferDelayInHours = Field(Integer)
49
    isAvailabilityMonitored = Field(Boolean)
50
    using_options(shortnames=True)
51
    using_table_options(mysql_engine="InnoDB")
52
 
53
    def __repr__(self):
54
        return "<warehouse>%s</warehouse>" %(self.location)
55
 
56
class VendorItemMapping(Entity):
57
    vendor = ManyToOne('Vendor', primary_key=True)
58
    item_key = Field(String(200), primary_key=True)
59
    item_id = Field(Integer)
60
    using_options(shortnames=True)
61
    using_table_options(mysql_engine="InnoDB")
62
 
63
class VendorItemPricing(Entity):
64
    vendor = ManyToOne('Vendor', primary_key=True)
65
    item_id = Field(Integer, primary_key=True)
66
    mop = Field(Float)
67
    dealerPrice = Field(Float)
68
    transfer_price = Field(Float)
69
    using_options(shortnames=True)
70
    using_table_options(mysql_engine="InnoDB")
71
 
72
class VendorItemProcurementDelay(Entity):
73
    vendor = ManyToOne('Vendor', primary_key=True)
74
    item_id = Field(Integer, primary_key=True)
75
    procurementDelay = Field(Integer)
76
    using_options(shortnames=True)
77
    using_table_options(mysql_engine="InnoDB")
78
 
79
class VendorHolidays(Entity):
80
    vendor = ManyToOne('Vendor', primary_key=True)
81
    holidayType = Field(Integer, primary_key=True, autoincrement=False)
82
    holidayValue = Field(Integer, primary_key=True, autoincrement=False)
83
    occasion = Field(String(100))
84
    using_options(shortnames=True)
85
    using_table_options(mysql_engine="InnoDB")
86
 
87
class CurrentInventorySnapshot(Entity):
88
    item_id = Field(Integer, primary_key=True)
89
    warehouse = ManyToOne("Warehouse", primary_key=True)
90
    availability = Field(Integer)
91
    reserved = Field(Integer)
92
    using_options(shortnames=True)
93
    using_table_options(mysql_engine="InnoDB")
5966 rajveer 94
 
95
class CurrentReservationSnapshot(Entity):
96
    item_id = Field(Integer, primary_key=True)
97
    warehouse_id = Field(Integer, primary_key=True)
98
    source_id = Field(Integer, primary_key=True)
99
    order_id = Field(Integer, primary_key=True)
100
    created_timestamp = Field(DateTime)
101
    promised_shipping_timestamp = Field(DateTime)
102
    reserved = Field(Integer)
103
    using_options(shortnames=True)
104
    using_table_options(mysql_engine="InnoDB")
105
 
5944 mandeep.dh 106
class BadInventorySnapshot(Entity):
107
    item_id = Field(Integer, primary_key=True)
108
    warehouse = ManyToOne("Warehouse", primary_key=True)
109
    availability = Field(Integer)
110
    using_options(shortnames=True)
111
    using_table_options(mysql_engine="InnoDB")
112
 
113
class SupplierInventorySnapshot(Entity):
114
    item_id = Field(Integer, primary_key=True)
115
    warehouse = ManyToOne("Warehouse", primary_key=True)
116
    availability = Field(Integer)
117
    using_options(shortnames=True)
118
    using_table_options(mysql_engine="InnoDB")
119
 
120
class ItemInventoryHistory(Entity):
121
    id = Field(Integer, primary_key=True, autoincrement = True)    
122
    timestamp = Field(DateTime, default=datetime.datetime.now())
123
    availability = Field(Integer)
124
    item_id = Field(Integer)
125
    warehouse = ManyToOne("Warehouse")
126
    using_options(shortnames=True)
127
    using_table_options(mysql_engine="InnoDB")
128
 
129
    def __repr__(self):
130
        pass
131
 
132
class MissedInventoryUpdate(Entity):
133
    id = Field(Integer, primary_key=True, autoincrement=True)
134
    itemKey = Field(String(200))
135
    quantity = Field(Integer)
136
    warehouseId = Field(Integer)
137
    isIgnored = Field(Boolean)
138
    timestamp = Field(DateTime)
139
    using_options(shortnames=True)
140
    using_table_options(mysql_engine="InnoDB")
141
 
142
class ItemAvailabilityCache(Entity):
143
    itemId = Field(Integer, primary_key=True, autoincrement=False)
5978 rajveer 144
    sourceId = Field(Integer, primary_key=True, autoincrement=False)
5944 mandeep.dh 145
    warehouseId = Field(Integer)
146
    expectedDelay = Field(Integer)
147
    billingWarehouseId = Field(Integer)
148
    sellingPrice = Field(Float) 
149
    totalAvailability = Field(Integer)
150
    using_options(shortnames=True)
151
    using_table_options(mysql_engine="InnoDB")
152
 
153
def initialize(dbname='inventory', db_hostname="localhost"):
154
    #metadata.bind = "sqlite:///inventory-new.sqlite" #need to read it from configserver.
155
    #metadata.bind = 'mysql://root:shop2020@localhost/inventory'
6532 amit.gupta 156
    iengine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)
157
    metadata.bind = iengine
5944 mandeep.dh 158
    metadata.bind.echo = True
159
    setup_all(True)
160
 
161
if __name__=="__main__":
162
    initialize()