Subversion Repositories SmartDukaan

Rev

Rev 5513 | Rev 6039 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5513 Rev 5944
Line 11... Line 11...
11
from sqlalchemy import create_engine
11
from sqlalchemy import create_engine
12
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Text, Enum
12
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Text, Enum
13
import datetime
13
import datetime
14
import elixir
14
import elixir
15
 
15
 
16
class Vendor(Entity):
-
 
17
    id = Field(Integer, primary_key=True, autoincrement=True)
-
 
18
    name = Field(String(50))
-
 
19
    warehouses = OneToMany('Warehouse')
-
 
20
    using_options(shortnames=True)
-
 
21
    using_table_options(mysql_engine="InnoDB")
-
 
22
 
-
 
23
class Warehouse(Entity):
-
 
24
    id = Field(Integer, primary_key=True, autoincrement=True)
-
 
25
    displayName = Field(String(50))
-
 
26
    location = Field(String(200))
-
 
27
    addedOn = Field(DateTime)
-
 
28
    lastCheckedOn = Field(DateTime)
-
 
29
    tinNumber = Field(String(50))
-
 
30
    pincode = Field(String(10))
-
 
31
    vendorString = Field(String(50))
-
 
32
    badInventory = OneToMany('BadInventorySnapshot')
-
 
33
    inventory = OneToMany('CurrentInventorySnapshot')
-
 
34
    inventoryHistory = OneToMany('ItemInventoryHistory')
-
 
35
    logisticsLocation = Field(Integer)
-
 
36
    vendor = ManyToOne('Vendor')
-
 
37
    billingType = Field(Integer)
-
 
38
    inventoryType = Field(Enum('GOOD', 'BAD', 'VIRTUAL'))
-
 
39
    warehouseType = Field(Enum('OURS', 'THIRD_PARTY'))
-
 
40
    shippingWarehouseId = Field(Integer)
-
 
41
    billingWarehouseId = Field(Integer)
-
 
42
    transferDelayInHours = Field(Integer)
-
 
43
    isAvailabilityMonitored = Field(Boolean)
-
 
44
    using_options(shortnames=True)
-
 
45
    using_table_options(mysql_engine="InnoDB")
-
 
46
    
-
 
47
    def __repr__(self):
-
 
48
        return "<warehouse>%s</warehouse>" %(self.location)
-
 
49
 
-
 
50
    @property
-
 
51
    def all_items(self):
-
 
52
        items = []
-
 
53
        for ci in self.inventory:
-
 
54
            items.append(ci.item)
-
 
55
        return items 
-
 
56
 
-
 
57
class EntityIDGenerator(Entity):
16
class EntityIDGenerator(Entity):
58
    id=Field(Integer, primary_key=True)
17
    id=Field(Integer, primary_key=True)
59
    using_options(shortnames=True)
18
    using_options(shortnames=True)
60
    using_table_options(mysql_engine="InnoDB")
19
    using_table_options(mysql_engine="InnoDB")
61
    
20
    
Line 83... Line 42...
83
    status = Field(Integer)
42
    status = Field(Integer)
84
    status_description = Field(String(100))
43
    status_description = Field(String(100))
85
    bestDealText = Field(String(100))
44
    bestDealText = Field(String(100))
86
    bestDealValue = Field(Float)
45
    bestDealValue = Field(Float)
87
    bestSellingRank = Field(Integer)
46
    bestSellingRank = Field(Integer)
88
    currentInventory = OneToMany('CurrentInventorySnapshot')
-
 
89
    inventoryHistory = OneToMany('ItemInventoryHistory')
-
 
90
    statusChangeLog = OneToMany("ItemChangeLog")
47
    statusChangeLog = OneToMany("ItemChangeLog")
91
    defaultForEntity = Field(Boolean)
48
    defaultForEntity = Field(Boolean)
92
    risky = Field(Boolean)
49
    risky = Field(Boolean)
93
    expectedDelay = Field(Integer)
50
    expectedDelay = Field(Integer)
94
    warranty_period = Field(Integer)
51
    warranty_period = Field(Integer)
Line 100... Line 57...
100
    using_options(shortnames=True)
57
    using_options(shortnames=True)
101
    using_table_options(mysql_engine="InnoDB")
58
    using_table_options(mysql_engine="InnoDB")
102
    
59
    
103
    def __repr__(self):
60
    def __repr__(self):
104
        return "<Item>%d</item>" % (self.id)
61
        return "<Item>%d</item>" % (self.id)
105
    
-
 
106
    @property
-
 
107
    def get_total_inventory(self):
-
 
108
        if self.currentInventory:
-
 
109
            i = 0
-
 
110
            for entry in self.currentInventory:
-
 
111
                i += entry.availability - entry.reserved
-
 
112
            return i
-
 
113
        
-
 
114
        else:
-
 
115
            return 0;
-
 
116
    
-
 
117
    @property
-
 
118
    def get_all_warehouses(self):
-
 
119
        return [ci.warehouse for ci in self.currentInventory]
-
 
120
 
-
 
121
class VendorItemMapping(Entity):
-
 
122
    vendor = ManyToOne('Vendor', primary_key=True)
-
 
123
    item_key = Field(String(200), primary_key=True)
-
 
124
    item = ManyToOne('Item')
-
 
125
    using_options(shortnames=True)
-
 
126
    using_table_options(mysql_engine="InnoDB")
-
 
127
    
-
 
128
class VendorItemPricing(Entity):
-
 
129
    vendor = ManyToOne('Vendor', primary_key=True)
-
 
130
    item = ManyToOne('Item', primary_key=True)
-
 
131
    mop = Field(Float)
-
 
132
    dealerPrice = Field(Float)
-
 
133
    transfer_price = Field(Float)
-
 
134
    using_options(shortnames=True)
-
 
135
    using_table_options(mysql_engine="InnoDB")
-
 
136
 
-
 
137
class VendorItemProcurementDelay(Entity):
-
 
138
    vendor = ManyToOne('Vendor', primary_key=True)
-
 
139
    item = ManyToOne('Item', primary_key=True)
-
 
140
    procurementDelay = Field(Integer)
-
 
141
    using_options(shortnames=True)
-
 
142
    using_table_options(mysql_engine="InnoDB")
-
 
143
 
-
 
144
class VendorHolidays(Entity):
-
 
145
    vendor = ManyToOne('Vendor', primary_key=True)
-
 
146
    holidayType = Field(Integer, primary_key=True, autoincrement=False)
-
 
147
    holidayValue = Field(Integer, primary_key=True, autoincrement=False)
-
 
148
    occasion = Field(String(100))
-
 
149
    using_options(shortnames=True)
-
 
150
    using_table_options(mysql_engine="InnoDB")
-
 
151
        
-
 
152
class CurrentInventorySnapshot(Entity):
-
 
153
    item = ManyToOne("Item", primary_key=True)
-
 
154
    warehouse = ManyToOne("Warehouse", primary_key=True)
-
 
155
    availability = Field(Integer)
-
 
156
    reserved = Field(Integer)
-
 
157
    using_options(shortnames=True)
-
 
158
    using_table_options(mysql_engine="InnoDB")
-
 
159
    
-
 
160
    def __repr__(self):
-
 
161
        return "<current inventory><availability> %s </availability><time>%s</time><item>%s</item><warehouse>%s</warehouse></current inventory>" %(self.availability, self.checkedOn, self.item, self.warehouse)
-
 
162
 
-
 
163
class BadInventorySnapshot(Entity):
-
 
164
    item = ManyToOne("Item", primary_key=True)
-
 
165
    warehouse = ManyToOne("Warehouse", primary_key=True)
-
 
166
    availability = Field(Integer)
-
 
167
    using_options(shortnames=True)
-
 
168
    using_table_options(mysql_engine="InnoDB")
-
 
169
 
-
 
170
class SupplierInventorySnapshot(Entity):
-
 
171
    item = ManyToOne("Item", primary_key=True)
-
 
172
    warehouse = ManyToOne("Warehouse", primary_key=True)
-
 
173
    availability = Field(Integer)
-
 
174
    using_options(shortnames=True)
-
 
175
    using_table_options(mysql_engine="InnoDB")
-
 
176
 
-
 
177
class ItemInventoryHistory(Entity):
-
 
178
    id = Field(Integer, primary_key=True, autoincrement = True)    
-
 
179
    timestamp = Field(DateTime, default=datetime.datetime.now())
-
 
180
    availability = Field(Integer)
-
 
181
    item = ManyToOne("Item")
-
 
182
    warehouse = ManyToOne("Warehouse")
-
 
183
    using_options(shortnames=True)
-
 
184
    using_table_options(mysql_engine="InnoDB")
-
 
185
    
-
 
186
    def __repr__(self):
-
 
187
        pass
-
 
188
 
62
 
189
class ItemChangeLog(Entity):
63
class ItemChangeLog(Entity):
190
    id = Field(Integer, primary_key=True, autoincrement=True)
64
    id = Field(Integer, primary_key=True, autoincrement=True)
191
    old_status = Field(Integer)
65
    old_status = Field(Integer)
192
    new_status = Field(Integer)
66
    new_status = Field(Integer)
Line 242... Line 116...
242
    username = Field(String(30))
116
    username = Field(String(30))
243
    reason = Field(Text)
117
    reason = Field(Text)
244
    using_options(shortnames=True)
118
    using_options(shortnames=True)
245
    using_table_options(mysql_engine="InnoDB")
119
    using_table_options(mysql_engine="InnoDB")
246
 
120
 
247
class MissedInventoryUpdate(Entity):
-
 
248
    id = Field(Integer, primary_key=True, autoincrement=True)
-
 
249
    itemKey = Field(String(200))
-
 
250
    quantity = Field(Integer)
-
 
251
    warehouseId = Field(Integer)
-
 
252
    isIgnored = Field(Boolean)
-
 
253
    timestamp = Field(DateTime)
-
 
254
    using_options(shortnames=True)
-
 
255
    using_table_options(mysql_engine="InnoDB")
-
 
256
 
-
 
257
class ItemAvailabilityCache(Entity):
-
 
258
    itemId = Field(Integer, primary_key=True, autoincrement=False)
-
 
259
    warehouseId = Field(Integer)
-
 
260
    expectedDelay = Field(Integer)
-
 
261
    billingWarehouseId = Field(Integer)
-
 
262
    sellingPrice = Field(Float) 
-
 
263
    using_options(shortnames=True)
-
 
264
    using_table_options(mysql_engine="InnoDB")
-
 
265
 
-
 
266
class VoucherItemMapping(Entity):
121
class VoucherItemMapping(Entity):
267
    voucherType = Field(Integer, primary_key=True)
122
    voucherType = Field(Integer, primary_key=True)
268
    item = ManyToOne('Item', primary_key=True)
123
    item = ManyToOne('Item', primary_key=True)
269
    amount = Field(Integer, default=0, server_default="0")
124
    amount = Field(Integer, default=0, server_default="0")
270
    using_options(shortnames=True)
125
    using_options(shortnames=True)