Subversion Repositories SmartDukaan

Rev

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

Rev 447 Rev 483
Line 42... Line 42...
42
    try:
42
    try:
43
        return query.one()
43
        return query.one()
44
    except:
44
    except:
45
        raise InventoryServiceException(109, "Item not found")
45
        raise InventoryServiceException(109, "Item not found")
46
        
46
        
-
 
47
def get_item_by_vendor_id(vendor_id):
-
 
48
    query = Item.query.filter_by(vendor_item_id=vendor_id)
-
 
49
    try:
-
 
50
        return query.one()
-
 
51
    except:
-
 
52
        raise InventoryServiceException(109, "Item not found")
-
 
53
        
47
def get_Warehouse(warehouse_id):
54
def get_Warehouse(warehouse_id):
48
    return Warehouse.get_by(id=warehouse_id)
55
    return Warehouse.get_by(id=warehouse_id)
49
 
56
 
50
def get_all_warehouses_by_status(status):
57
def get_all_warehouses_by_status(status):
51
    if not status:
58
    if not status:
Line 75... Line 82...
75
    ds_warehouse = Warehouse()
82
    ds_warehouse = Warehouse()
76
    ds_warehouse.id = warehouse.id
83
    ds_warehouse.id = warehouse.id
77
    ds_warehouse.location = warehouse.location
84
    ds_warehouse.location = warehouse.location
78
    ds_warehouse.status = status.ACTIVE
85
    ds_warehouse.status = status.ACTIVE
79
    ds_warehouse.addedOn = datetime.datetime.now()
86
    ds_warehouse.addedOn = datetime.datetime.now()
-
 
87
    ds_warehouse.lastCheckedOn = datetime.datetime.now()
-
 
88
    ds_warehouse.tinNumber = warehouse.tinNumber
-
 
89
    ds_warehouse.pincode = warehouse.pincode
-
 
90
    if warehouse.vendorString:
-
 
91
        ds_warehouse.vendorString = warehouse.vendorString
80
    session.commit()
92
    session.commit()
81
    return ds_warehouse.id
93
    return ds_warehouse.id
82
 
94
 
83
def update_item(item):
95
def update_item(item):
84
    if not item:
96
    if not item:
Line 90... Line 102...
90
    ds_item = get_Item(item.id)
102
    ds_item = get_Item(item.id)
91
    
103
    
92
    if not ds_item:
104
    if not ds_item:
93
        raise InventoryServiceException(101, "Item already exists")
105
        raise InventoryServiceException(101, "Item already exists")
94
    
106
    
-
 
107
    if item.manufacturer_name:
-
 
108
        ds_item.manufacturer_name = item.manufacturer_name
-
 
109
    if item.model_name:
-
 
110
        ds_item.model_name = item.model_name
-
 
111
    if item.model_number:
-
 
112
        ds_item.model_number = item.model_number
-
 
113
    if item.category:
-
 
114
        ds_item.category = item.category
-
 
115
    if item.comments:
-
 
116
        ds_item.comments = item.comments
-
 
117
 
95
    if item.catalogItemId:
118
    if item.catalogItemId:
96
        ds_item.catalog_item_id = item.catalogItemId
119
        ds_item.catalog_item_id = item.catalogItemId
97
    if item.vendorItemId:
120
    if item.vendorItemId:
98
        ds_item.vendor_item_id = item.vendorItemId
121
        ds_item.vendor_item_id = item.vendorItemId
99
    else:
122
    else:
100
        raise InventoryServiceException(101, "vendor item id cannot be missing")
123
        raise InventoryServiceException(101, "vendor item id cannot be missing")
-
 
124
 
-
 
125
    if item.mrp:
-
 
126
        ds_item.mrp = item.mrp
101
        
127
    if item.mop:
-
 
128
        ds_item.mop = item.mop
-
 
129
    if item.sellingPrice:
-
 
130
        ds_item.sellingPrice = item.sellingPrice
-
 
131
    if item.weight:
-
 
132
        ds_item.weight = item.weight
102
    if item.weight:
133
    if item.weight:
103
        ds_item.weight = item.weight
134
        ds_item.weight = item.weight
104
    
135
    
105
    if item.featureId:
136
    if item.featureId:
106
        ds_item.feature_id = item.featureId
137
        ds_item.feature_id = item.featureId
Line 113... Line 144...
113
def add_item(item):
144
def add_item(item):
114
    if not item:
145
    if not item:
115
        raise InventoryServiceException(108, "Bad item in request")
146
        raise InventoryServiceException(108, "Bad item in request")
116
    if get_Item(item.id):
147
    if get_Item(item.id):
117
        raise InventoryServiceException(101, "Item already exists")
148
        raise InventoryServiceException(101, "Item already exists")
118
    
149
 
119
    ds_item = Item()
150
    ds_item = Item()
120
    if item.id:
151
    if item.id:
121
        ds_item.id = item.id
152
        ds_item.id = item.id
-
 
153
    if item.manufacturer_name:
-
 
154
        ds_item.manufacturer_name = item.manufacturer_name
-
 
155
    if item.model_name:
-
 
156
        ds_item.model_name = item.model_name
-
 
157
    if item.model_number:
-
 
158
        ds_item.model_number = item.model_number
-
 
159
    if item.category:
-
 
160
        ds_item.category = item.category
-
 
161
    if item.comments:
-
 
162
        ds_item.comments = item.comments
-
 
163
 
122
    if item.catalogItemId:
164
    if item.catalogItemId:
123
        ds_item.catalog_item_id = item.catalogItemId
165
        ds_item.catalog_item_id = item.catalogItemId
124
    if item.vendorItemId:
166
    if item.vendorItemId:
125
        ds_item.vendor_item_id = item.vendorItemId
167
        ds_item.vendor_item_id = item.vendorItemId
126
    else:
168
    else:
Line 128... Line 170...
128
    if item.itemStatus:
170
    if item.itemStatus:
129
        ds_item.status = item.itemStatus
171
        ds_item.status = item.itemStatus
130
    else: #this is for update calls
172
    else: #this is for update calls
131
        ds_item.status = status.IN_PROCESS
173
        ds_item.status = status.IN_PROCESS
132
    ds_item.addedOn = datetime.datetime.now()
174
    ds_item.addedOn = datetime.datetime.now()
133
    if item.price:
175
    if item.mrp:
134
        update_price(item, ds_item)
176
        ds_item.mrp = item.mrp
-
 
177
    if item.mop:
-
 
178
        ds_item.mop = item.mop
-
 
179
    if item.sellingPrice:
-
 
180
        ds_item.sellingPrice = item.sellingPrice
135
    if item.weight:
181
    if item.weight:
136
        ds_item.weight = item.weight
182
        ds_item.weight = item.weight
137
    
183
    
138
    if item.featureId:
184
    if item.featureId:
139
        ds_item.feature_id = item.featureId
185
        ds_item.feature_id = item.featureId
Line 149... Line 195...
149
    #check if categories present. If yes, add them to system
195
    #check if categories present. If yes, add them to system
150
    
196
    
151
    session.commit();
197
    session.commit();
152
    return ds_item.id
198
    return ds_item.id
153
    
199
    
-
 
200
#this is no more used
154
def update_price(item, ds_item):
201
def update_price(item, ds_item):
155
    log_entry("update_price", "updating price for item")
202
    log_entry("update_price", "updating price for item")
156
    for k,v in item.price.iteritems():
203
    for k,v in item.price.iteritems():
157
        price = Price()
204
        price = Price()
158
        price.warehouse_id = k
205
        price.warehouse_id = k
159
        price.price = v
206
        price.price = v
160
        price.item = ds_item
207
        price.item = ds_item
161
        session.commit() 
208
        session.commit() 
162
 
209
 
-
 
210
#this is no more used
163
def update_price_for_warehouse(item_id, warehouse_id, price):
211
def update_price_for_warehouse(item_id, warehouse_id, price):
164
    log_entry("update_price", "updating price for item and warehouse")
212
    log_entry("update_price", "updating price for item and warehouse")
165
    price = Price.query.filter_by(warehouse_id=warehouse_id, item_id=item_id).one()
213
    price = Price.query.filter_by(warehouse_id=warehouse_id, item_id=item_id).one()
166
    if not price:
214
    if not price:
167
        price = Price()
215
        price = Price()
Line 170... Line 218...
170
        price.item = item
218
        price.item = item
171
    price.price = price    
219
    price.price = price    
172
    session.commit()
220
    session.commit()
173
        
221
        
174
    
222
    
-
 
223
def update_inventory(warehouse_id, timestamp, availability):
-
 
224
    warehouse = get_Warehouse(warehouse_id)
-
 
225
    if not warehouse:
-
 
226
        raise InventoryServiceException(107, "Warehouse? Where?")
-
 
227
     
-
 
228
    time = datetime.datetime.now()
-
 
229
    warehouse.lastCheckedOn = time
-
 
230
    warehouse.vendorString = timestamp
-
 
231
    
-
 
232
    for k,v in availability.iteritems():
-
 
233
        vendor_id = k
-
 
234
        quantity = v
-
 
235
        item = get_item_by_vendor_id(vendor_id) 
-
 
236
        if not item:
-
 
237
            raise InventoryServiceException(106, "Item not found, how did you get this?")
-
 
238
        try:
-
 
239
            item_inventory_history = ItemInventoryHistory()
-
 
240
            item_inventory_history.warehouse = warehouse
-
 
241
            item_inventory_history.item = item
-
 
242
            item_inventory_history.timestamp = time
-
 
243
            item_inventory_history.availibility = quantity
-
 
244
 
-
 
245
            current_inventory_snapshot = CurrentInventorySnapshot.get_by(item=item, warehouse=warehouse)
-
 
246
            if not current_inventory_snapshot:
-
 
247
                current_inventory_snapshot = CurrentInventorySnapshot()
-
 
248
                current_inventory_snapshot.item = item
-
 
249
                current_inventory_snapshot.warehouse = warehouse
-
 
250
                current_inventory_snapshot.availibility = 0
-
 
251
            # added the difference in the current inventory    
-
 
252
            current_inventory_snapshot.availibility = current_inventory_snapshot.availibility + quantity
-
 
253
        except:
-
 
254
            raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
-
 
255
    session.commit() 
-
 
256
 
-
 
257
        
-
 
258
 
-
 
259
#this is no more used
175
def update_inventory(item_id, warehouse_id, quantity, timestamp):
260
def update_inventory_old(item_id, warehouse_id, quantity, timestamp):
176
    item = get_Item(item_id)
261
    item = get_Item(item_id)
177
    warehouse = get_Warehouse(warehouse_id) 
262
    warehouse = get_Warehouse(warehouse_id) 
178
    time = to_py_date(timestamp)
263
    time = to_py_date(timestamp)
179
    
264
    
180
    if not item:
265
    if not item:
Line 304... Line 389...
304
    item = get_Item(item_id)
389
    item = get_Item(item_id)
305
    
390
    
306
    if not item:
391
    if not item:
307
        raise InventoryServiceException(101, "bad item")
392
        raise InventoryServiceException(101, "bad item")
308
    
393
    
309
    warehouses = item.currentInventory.warehouse
-
 
310
394
    warehouses = item.currentInventory.warehouse
-
 
395
    return warehouses
-
 
396
311
397