Subversion Repositories SmartDukaan

Rev

Rev 17769 | Rev 21838 | 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
12357 manish.sha 12
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Enum, Date, Text
5944 mandeep.dh 13
import datetime
12363 kshitij.so 14
 
5944 mandeep.dh 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
 
7330 amit.gupta 28
class StateMaster(Entity):
29
    id = Field(Integer, primary_key=True, autoincrement=False)
30
    name= Field(String(100))
12280 amit.gupta 31
    vatType = Field(Integer)
7330 amit.gupta 32
    using_options(shortnames=True)
33
    using_table_options(mysql_engine="InnoDB")
34
 
5944 mandeep.dh 35
class Warehouse(Entity):
36
    id = Field(Integer, primary_key=True, autoincrement=True)
37
    displayName = Field(String(50))
38
    location = Field(String(200))
39
    status = Field(Integer)
40
    addedOn = Field(DateTime)
41
    lastCheckedOn = Field(DateTime)
42
    tinNumber = Field(String(50))
43
    pincode = Field(String(10))
44
    vendorString = Field(String(50))
45
    badInventory = OneToMany('BadInventorySnapshot')
46
    inventory = OneToMany('CurrentInventorySnapshot')
47
    inventoryHistory = OneToMany('ItemInventoryHistory')
7330 amit.gupta 48
    state = ManyToOne('StateMaster') 
5944 mandeep.dh 49
    logisticsLocation = Field(Integer)
50
    vendor = ManyToOne('Vendor')
51
    billingType = Field(Integer)
52
    inventoryType = Field(Enum('GOOD', 'BAD', 'VIRTUAL'))
53
    warehouseType = Field(Enum('OURS', 'THIRD_PARTY'))
54
    shippingWarehouseId = Field(Integer)
55
    billingWarehouseId = Field(Integer)
56
    transferDelayInHours = Field(Integer)
57
    isAvailabilityMonitored = Field(Boolean)
12357 manish.sha 58
    source = Field(Integer)
5944 mandeep.dh 59
    using_options(shortnames=True)
60
    using_table_options(mysql_engine="InnoDB")
61
 
62
    def __repr__(self):
63
        return "<warehouse>%s</warehouse>" %(self.location)
64
 
65
class VendorItemMapping(Entity):
66
    vendor = ManyToOne('Vendor', primary_key=True)
67
    item_key = Field(String(200), primary_key=True)
68
    item_id = Field(Integer)
69
    using_options(shortnames=True)
70
    using_table_options(mysql_engine="InnoDB")
71
 
72
class VendorItemPricing(Entity):
73
    vendor = ManyToOne('Vendor', primary_key=True)
74
    item_id = Field(Integer, primary_key=True)
75
    mop = Field(Float)
76
    dealerPrice = Field(Float)
77
    transfer_price = Field(Float)
6751 amar.kumar 78
    nlc = Field(Float)
5944 mandeep.dh 79
    using_options(shortnames=True)
80
    using_table_options(mysql_engine="InnoDB")
81
 
82
class VendorHolidays(Entity):
83
    vendor = ManyToOne('Vendor', primary_key=True)
8491 rajveer 84
    date = Field(Date, primary_key=True)
5944 mandeep.dh 85
    occasion = Field(String(100))
86
    using_options(shortnames=True)
87
    using_table_options(mysql_engine="InnoDB")
88
 
89
class CurrentInventorySnapshot(Entity):
90
    item_id = Field(Integer, primary_key=True)
91
    warehouse = ManyToOne("Warehouse", primary_key=True)
92
    availability = Field(Integer)
93
    reserved = Field(Integer)
8205 amar.kumar 94
    held = Field(Integer, default=0, server_default="0")
5944 mandeep.dh 95
    using_options(shortnames=True)
96
    using_table_options(mysql_engine="InnoDB")
5966 rajveer 97
 
8182 amar.kumar 98
class HoldInventoryDetail(Entity):
99
    item_id = Field(Integer, primary_key=True)
100
    warehouse = ManyToOne("Warehouse", primary_key=True)
101
    held = Field(Integer)
8718 amar.kumar 102
    source = Field(Integer, primary_key=True)
8182 amar.kumar 103
    using_options(shortnames=True)
104
    using_table_options(mysql_engine="InnoDB")
105
 
5966 rajveer 106
class CurrentReservationSnapshot(Entity):
107
    item_id = Field(Integer, primary_key=True)
108
    warehouse_id = Field(Integer, primary_key=True)
109
    source_id = Field(Integer, primary_key=True)
110
    order_id = Field(Integer, primary_key=True)
111
    created_timestamp = Field(DateTime)
112
    promised_shipping_timestamp = Field(DateTime)
113
    reserved = Field(Integer)
114
    using_options(shortnames=True)
115
    using_table_options(mysql_engine="InnoDB")
116
 
5944 mandeep.dh 117
class BadInventorySnapshot(Entity):
118
    item_id = Field(Integer, primary_key=True)
119
    warehouse = ManyToOne("Warehouse", primary_key=True)
120
    availability = Field(Integer)
121
    using_options(shortnames=True)
122
    using_table_options(mysql_engine="InnoDB")
123
 
124
class SupplierInventorySnapshot(Entity):
125
    item_id = Field(Integer, primary_key=True)
126
    warehouse = ManyToOne("Warehouse", primary_key=True)
127
    availability = Field(Integer)
128
    using_options(shortnames=True)
129
    using_table_options(mysql_engine="InnoDB")
130
 
131
class ItemInventoryHistory(Entity):
132
    id = Field(Integer, primary_key=True, autoincrement = True)    
133
    timestamp = Field(DateTime, default=datetime.datetime.now())
134
    availability = Field(Integer)
135
    item_id = Field(Integer)
136
    warehouse = ManyToOne("Warehouse")
137
    using_options(shortnames=True)
138
    using_table_options(mysql_engine="InnoDB")
139
 
140
    def __repr__(self):
141
        pass
142
 
143
class MissedInventoryUpdate(Entity):
144
    id = Field(Integer, primary_key=True, autoincrement=True)
145
    itemKey = Field(String(200))
146
    quantity = Field(Integer)
147
    warehouseId = Field(Integer)
148
    isIgnored = Field(Boolean)
149
    timestamp = Field(DateTime)
150
    using_options(shortnames=True)
151
    using_table_options(mysql_engine="InnoDB")
152
 
153
class ItemAvailabilityCache(Entity):
154
    itemId = Field(Integer, primary_key=True, autoincrement=False)
5978 rajveer 155
    sourceId = Field(Integer, primary_key=True, autoincrement=False)
5944 mandeep.dh 156
    warehouseId = Field(Integer)
157
    expectedDelay = Field(Integer)
158
    billingWarehouseId = Field(Integer)
159
    sellingPrice = Field(Float) 
160
    totalAvailability = Field(Integer)
7589 rajveer 161
    weight = Field(Integer, default=300, server_default="300")
5944 mandeep.dh 162
    using_options(shortnames=True)
163
    using_table_options(mysql_engine="InnoDB")
19413 amit.gupta 164
 
165
class ItemLocationAvailabilityCache(Entity):
166
    item_id = Field(Integer, primary_key=True, autoincrement=False)
167
    location_id = Field(Integer, primary_key=True, autoincrement=False)
168
    physical_availability = Field(Integer)
169
    virtual_availability = Field(Integer)
170
    min_transfer_delay = Field(Integer)
171
    max_transfer_delay = Field(Integer)
172
    using_options(shortnames=True)
173
    using_table_options(mysql_engine="InnoDB")
5944 mandeep.dh 174
 
6821 amar.kumar 175
class ItemStockPurchaseParams(Entity):
176
    item_id = Field(Integer, primary_key=True, autoincrement=False)
177
    numOfDaysStock = Field(Integer)
178
    minStockLevel = Field(Integer)
179
    using_options(shortnames=True)
180
    using_table_options(mysql_engine="InnoDB")
181
 
182
class OOSStatus(Entity):
183
    item_id = Field(Integer, primary_key=True, autoincrement=False)
9665 rajveer 184
    sourceId = Field(Integer, primary_key=True, autoincrement=False)
6821 amar.kumar 185
    date = Field(DateTime, primary_key=True, autoincrement=False)
186
    is_oos = Field(Boolean)
187
    num_orders = Field(Integer)
8182 amar.kumar 188
    rto_orders = Field(Integer)
6821 amar.kumar 189
    using_options(shortnames=True)
190
    using_table_options(mysql_engine="InnoDB")
191
 
7281 kshitij.so 192
class AmazonInventorySnapshot(Entity):
10452 vikram.rag 193
    item_id = Field(Integer, primary_key=True,autoincrement=False)
7281 kshitij.so 194
    availability = Field(Integer)
195
    reserved = Field(Integer)
10450 vikram.rag 196
    is_oos = Field(Boolean)
197
    lastUpdatedOnAmazon =  Field(DateTime)
7281 kshitij.so 198
    using_options(shortnames=True)
199
    using_table_options(mysql_engine="InnoDB")
8282 kshitij.so 200
 
201
class AmazonFbaInventorySnapshot(Entity):
8374 vikram.rag 202
    item_id = Field(Integer, primary_key=True,autoincrement=False)
8282 kshitij.so 203
    availability = Field(Integer)
11173 vikram.rag 204
    inbound = Field(Integer)
205
    reserved = Field(Integer)
206
    unfulfillable = Field(Integer)
207
    location = Field(Integer,primary_key=True,autoincrement=False)
8282 kshitij.so 208
    using_options(shortnames=True)
209
    using_table_options(mysql_engine="InnoDB")
7281 kshitij.so 210
 
9404 vikram.rag 211
class SnapdealInventorySnapshot(Entity):
212
    item_id = Field(Integer, primary_key=True,autoincrement=False)
213
    availability = Field(Integer)
214
    lastUpdatedOnSnapdeal = Field(DateTime)
9495 vikram.rag 215
    pendingOrders = Field(Integer)
10450 vikram.rag 216
    is_oos = Field(Boolean)
9404 vikram.rag 217
    using_options(shortnames=True)
218
    using_table_options(mysql_engine="InnoDB")
10450 vikram.rag 219
 
10050 vikram.rag 220
class FlipkartInventorySnapshot(Entity):
221
    item_id = Field(Integer, primary_key=True,autoincrement=False)
222
    availability = Field(Integer)
223
    createdOrders = Field(Integer)
224
    heldOrders = Field(Integer)
10450 vikram.rag 225
    is_oos = Field(Boolean)
226
    lastUpdatedOnFlipkart =  Field(DateTime)
10050 vikram.rag 227
    using_options(shortnames=True)
228
    using_table_options(mysql_engine="InnoDB")
229
 
10544 vikram.rag 230
class SnapdealStockAtEOD(Entity):
231
    item_id = Field(Integer, primary_key=True,autoincrement=False)
10567 vikram.rag 232
    availability = Field(Integer)
233
    date =  Field(DateTime, primary_key=True,autoincrement=False)
10544 vikram.rag 234
    using_options(shortnames=True)
235
    using_table_options(mysql_engine="InnoDB")
236
 
237
class FlipkartStockAtEOD(Entity):
238
    item_id = Field(Integer, primary_key=True,autoincrement=False)
10567 vikram.rag 239
    availability = Field(Integer)
240
    date =  Field(DateTime, primary_key=True,autoincrement=False)
10544 vikram.rag 241
    using_options(shortnames=True)
242
    using_table_options(mysql_engine="InnoDB")
243
 
12357 manish.sha 244
class StockWeightedNlcInfo(Entity):
245
    itemId = Field(Integer, primary_key=True,autoincrement=False)
246
    source = Field(Integer, primary_key=True,autoincrement=False)
247
    updatedTimestamp = Field(DateTime, primary_key=True,autoincrement=False)
248
    grnDetail = Field(Text)
249
    stockQuantity = Field(Integer)
250
    avgWeightedNlc = Field(Float)
251
    using_options(shortnames=True)
252
    using_table_options(mysql_engine="InnoDB")    
17769 kshitij.so 253
def initialize(dbname='inventory', db_hostname="localhost", setup=True):
5944 mandeep.dh 254
    #metadata.bind = "sqlite:///inventory-new.sqlite" #need to read it from configserver.
255
    #metadata.bind = 'mysql://root:shop2020@localhost/inventory'
6532 amit.gupta 256
    iengine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)
257
    metadata.bind = iengine
5944 mandeep.dh 258
    metadata.bind.echo = True
17769 kshitij.so 259
    setup_all(setup)
5944 mandeep.dh 260
 
261
if __name__=="__main__":
262
    initialize()