Subversion Repositories SmartDukaan

Rev

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

Rev 3451 Rev 3469
Line 1207... Line 1207...
1207
        order.purchase_order_id = po_id
1207
        order.purchase_order_id = po_id
1208
    session.commit()
1208
    session.commit()
1209
    return po_id
1209
    return po_id
1210
 
1210
 
1211
def update_weight(order_id, weight):
1211
def update_weight(order_id, weight):
-
 
1212
    '''
-
 
1213
    Update the weight of order
-
 
1214
    '''
1212
    order = get_order(order_id)
1215
    order = get_order(order_id)
1213
    order.total_weight = weight
1216
    order.total_weight = weight
-
 
1217
    lineitem = order.lineitems[0]
-
 
1218
    lineitem.total_weight = weight
-
 
1219
    lineitem.unit_weight = weight
1214
    
1220
    
-
 
1221
    session.commit()
-
 
1222
    return order
-
 
1223
 
-
 
1224
def change_product(order_id, item_id):
-
 
1225
    '''
-
 
1226
    Ship a product of a different color to the customer.
-
 
1227
    '''
-
 
1228
    order = get_order(order_id)
-
 
1229
    if order.status not in [OrderStatus.INIT, OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]:
-
 
1230
        raise TransactionServiceException(120, "This order has already been processed. Please seek help from engineering.")
-
 
1231
        
1215
    lineitems = order.lineitems
1232
    lineitem = order.lineitems[0]
-
 
1233
    
-
 
1234
    catalog_client = CatalogClient().get_client()
-
 
1235
    
-
 
1236
    old_item = catalog_client.getItem(lineitem.item_id)
-
 
1237
    item = catalog_client.getItem(item_id)
-
 
1238
    if old_item.catalogItemId != item.catalogItemId:
-
 
1239
        raise TransactionServiceException(121, "You can't ship a different item. You can only ship the same item in a different color.")
-
 
1240
    
-
 
1241
    catalog_client.reserveItemInWarehouse(item_id, order.warehouse_id, lineitem.quantity)
-
 
1242
    catalog_client.reduceReservationCount(lineitem.item_id, order.warehouse_id, lineitem.quantity)
-
 
1243
    #TODO: Check that this new item has the same price
-
 
1244
        
1216
    for lineitem in lineitems:
1245
    lineitem.item_id = item_id
1217
        lineitem.total_weight = weight
1246
    lineitem.color = item.color
-
 
1247
    
-
 
1248
    session.commit()
-
 
1249
    
-
 
1250
    order = get_order(order_id)
-
 
1251
    return order
-
 
1252
 
-
 
1253
def change_warehouse(order_id, warehouse_id):
-
 
1254
    '''
-
 
1255
    Update the warehouse which will be used to fulfil this order.
-
 
1256
    '''
-
 
1257
    order = get_order(order_id)
-
 
1258
    if order.status not in [OrderStatus.INIT, OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]:
-
 
1259
        raise TransactionServiceException(117, "This order has already been processed. Please seek help from engineering.")
-
 
1260
         
-
 
1261
    if warehouse_id == order.warehouse_id:
-
 
1262
        raise TransactionServiceException(118, "You have selected the current warehouse again. Nothing to do")
-
 
1263
 
-
 
1264
    lineitem = order.lineitems[0]
-
 
1265
    catalog_client = CatalogClient().get_client()
-
 
1266
    try:
-
 
1267
        warehouse = catalog_client.getWarehouse(warehouse_id)
-
 
1268
    except:
-
 
1269
        raise TransactionServiceException(119, "No warehouse with id" + str(warehouse_id))
-
 
1270
        
-
 
1271
    catalog_client.reserveItemInWarehouse(lineitem.item_id, warehouse_id, lineitem.quantity)
-
 
1272
    catalog_client.reduceReservationCount(lineitem.item_id, order.warehouse_id, lineitem.quantity)
1218
    
1273
    
-
 
1274
    order.warehouse_id = warehouse_id
1219
    session.commit()
1275
    session.commit()
1220
    return order
1276
    return order
1221
    
1277
    
1222
def close_session():
1278
def close_session():
1223
    if session.is_active:
1279
    if session.is_active: