Subversion Repositories SmartDukaan

Rev

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

Rev 4979 Rev 5110
Line 8... Line 8...
8
from elixir.fields import Field
8
from elixir.fields import Field
9
from elixir.options import using_options, using_table_options
9
from elixir.options import using_options, using_table_options
10
from elixir.relationships import OneToMany, ManyToOne, ManyToMany
10
from elixir.relationships import OneToMany, ManyToOne, ManyToMany
11
from sqlalchemy import create_engine
11
from sqlalchemy import create_engine
12
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Text,\
12
from sqlalchemy.types import Integer, String, DateTime, Float, Boolean, Text,\
13
    Date
13
    Date, Enum
14
import datetime
14
import datetime
15
import elixir
15
import elixir
16
 
16
 
17
class Vendor(Entity):
17
class Vendor(Entity):
18
    id = Field(Integer, primary_key=True, autoincrement=True)
18
    id = Field(Integer, primary_key=True, autoincrement=True)
19
    name = Field(String(50))
19
    name = Field(String(50))
20
    warehouses = ManyToMany('Warehouse')
20
    warehouses = OneToMany('Warehouse')
21
    using_options(shortnames=True)
21
    using_options(shortnames=True)
22
    using_table_options(mysql_engine="InnoDB")
22
    using_table_options(mysql_engine="InnoDB")
23
 
23
 
24
class Warehouse(Entity):
24
class Warehouse(Entity):
25
    id = Field(Integer, primary_key=True, autoincrement=True)
25
    id = Field(Integer, primary_key=True, autoincrement=True)
26
    displayName = Field(String(50))
26
    displayName = Field(String(50))
27
    location = Field(String(200))
27
    location = Field(String(200))
28
    status = Field(Integer)
-
 
29
    addedOn = Field(DateTime)
28
    addedOn = Field(DateTime)
30
    lastCheckedOn = Field(DateTime)
29
    lastCheckedOn = Field(DateTime)
31
    tinNumber = Field(String(50))
30
    tinNumber = Field(String(50))
32
    pincode = Field(String(10))
31
    pincode = Field(String(10))
33
    vendorString = Field(String(50))
32
    vendorString = Field(String(50))
-
 
33
    badInventory = OneToMany('BadInventorySnapshot')
34
    inventory = OneToMany('CurrentInventorySnapshot')
34
    inventory = OneToMany('CurrentInventorySnapshot')
35
    inventoryHistory = OneToMany('ItemInventoryHistory')
35
    inventoryHistory = OneToMany('ItemInventoryHistory')
36
    logisticsLocation = Field(Integer)
36
    logisticsLocation = Field(Integer)
37
    vendors = ManyToMany('Vendor')
37
    vendor = ManyToOne('Vendor')
38
    billingType = Field(Integer)
38
    billingType = Field(Integer)
-
 
39
    inventoryType = Field(Enum('GOOD', 'BAD', 'VIRTUAL'))
-
 
40
    warehouseType = Field(Enum('OURS', 'THIRD_PARTY'))
-
 
41
    shippingWarehouseId = Field(Integer)
-
 
42
    billingWarehouseId = Field(Integer)
-
 
43
    transferDelayInHours = Field(Integer)
-
 
44
    isAvailabilityMonitored = Field(Boolean)
39
    using_options(shortnames=True)
45
    using_options(shortnames=True)
40
    using_table_options(mysql_engine="InnoDB")
46
    using_table_options(mysql_engine="InnoDB")
41
    
47
    
42
    def __repr__(self):
48
    def __repr__(self):
43
        return "<warehouse>%s</warehouse>" %(self.location)
49
        return "<warehouse>%s</warehouse>" %(self.location)
Line 88... Line 94...
88
    expectedDelay = Field(Integer)
94
    expectedDelay = Field(Integer)
89
    warranty_period = Field(Integer)
95
    warranty_period = Field(Integer)
90
    defaultWarehouse = Field(Integer)
96
    defaultWarehouse = Field(Integer)
91
    isWarehousePreferenceSticky = Field(Boolean)
97
    isWarehousePreferenceSticky = Field(Boolean)
92
    preferredVendor = Field(Integer)
98
    preferredVendor = Field(Integer)
-
 
99
    type = Field(Enum('SERIALIZED', 'NON_SERIALIZED'))
93
    using_options(shortnames=True)
100
    using_options(shortnames=True)
94
    using_table_options(mysql_engine="InnoDB")
101
    using_table_options(mysql_engine="InnoDB")
95
    
102
    
96
    def __repr__(self):
103
    def __repr__(self):
97
        return "<Item>%d</item>" % (self.id)
104
        return "<Item>%d</item>" % (self.id)
Line 153... Line 160...
153
    def __repr__(self):
160
    def __repr__(self):
154
        return "<ItemInfo><key>%s</key><value>%s</value></ItemInfo>" % (self.key, self.value)
161
        return "<ItemInfo><key>%s</key><value>%s</value></ItemInfo>" % (self.key, self.value)
155
    
162
    
156
 
163
 
157
class CurrentInventorySnapshot(Entity):
164
class CurrentInventorySnapshot(Entity):
158
    #id = Field(Integer, primary_key=True)
-
 
159
    #checkedOn = Field(DateTime, default=datetime.datetime.now())
-
 
160
    item = ManyToOne("Item", primary_key=True)
165
    item = ManyToOne("Item", primary_key=True)
161
    warehouse = ManyToOne("Warehouse", primary_key=True)
166
    warehouse = ManyToOne("Warehouse", primary_key=True)
162
    availibility = Field(Integer)
167
    availibility = Field(Integer)
163
    reserved = Field(Integer)
168
    reserved = Field(Integer)
164
    using_options(shortnames=True)
169
    using_options(shortnames=True)
165
    using_table_options(mysql_engine="InnoDB")
170
    using_table_options(mysql_engine="InnoDB")
166
    
171
    
167
    def __repr__(self):
172
    def __repr__(self):
168
        return "<current inventory><availability> %s </availability><time>%s</time><item>%s</item><warehouse>%s</warehouse></current inventory>" %(self.availibility, self.checkedOn, self.item, self.warehouse)
173
        return "<current inventory><availability> %s </availability><time>%s</time><item>%s</item><warehouse>%s</warehouse></current inventory>" %(self.availibility, self.checkedOn, self.item, self.warehouse)
169
 
174
 
-
 
175
class BadInventorySnapshot(Entity):
-
 
176
    item = ManyToOne("Item", primary_key=True)
-
 
177
    warehouse = ManyToOne("Warehouse", primary_key=True)
-
 
178
    availability = Field(Integer)
-
 
179
    using_options(shortnames=True)
-
 
180
    using_table_options(mysql_engine="InnoDB")
-
 
181
 
170
class ItemInventoryHistory(Entity):
182
class ItemInventoryHistory(Entity):
171
    id = Field(Integer, primary_key=True, autoincrement = True)    
183
    id = Field(Integer, primary_key=True, autoincrement = True)    
172
    timestamp = Field(DateTime, default=datetime.datetime.now())
184
    timestamp = Field(DateTime, default=datetime.datetime.now())
173
    availibility = Field(Integer)
185
    availibility = Field(Integer)
174
    item = ManyToOne("Item")
186
    item = ManyToOne("Item")