Subversion Repositories SmartDukaan

Rev

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

Rev 2358 Rev 2368
Line 285... Line 285...
285
     
285
     
286
    time = datetime.datetime.now()
286
    time = datetime.datetime.now()
287
    warehouse.lastCheckedOn = time
287
    warehouse.lastCheckedOn = time
288
    warehouse.vendorString = timestamp
288
    warehouse.vendorString = timestamp
289
    vendor = warehouse.vendor
289
    vendor = warehouse.vendor
290
    
290
    session.commit()
291
    for item_key, quantity in availability.iteritems():
291
    for item_key, quantity in availability.iteritems():
292
        try:
292
        try:
293
            vendor_item_mapping = VendorItemMapping.query.filter_by(vendor=vendor, item_key=item_key).one();
293
            vendor_item_mapping = VendorItemMapping.query.filter_by(vendor=vendor, item_key=item_key).one();
294
            item = vendor_item_mapping.item
294
            item = vendor_item_mapping.item
295
        except:
295
        except:
Line 308... Line 308...
308
                current_inventory_snapshot.warehouse = warehouse
308
                current_inventory_snapshot.warehouse = warehouse
309
                current_inventory_snapshot.availibility = 0
309
                current_inventory_snapshot.availibility = 0
310
                current_inventory_snapshot.reserved = 0
310
                current_inventory_snapshot.reserved = 0
311
            # added the difference in the current inventory    
311
            # added the difference in the current inventory    
312
            current_inventory_snapshot.availibility = current_inventory_snapshot.availibility + quantity
312
            current_inventory_snapshot.availibility = current_inventory_snapshot.availibility + quantity
313
            
-
 
314
            check_risky_item(item, current_inventory_snapshot.availibility, current_inventory_snapshot.reserved)
-
 
315
            
-
 
316
        except:
313
        except:
317
            raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
314
            raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
318
    session.commit() 
315
        session.commit() 
-
 
316
        check_risky_item(item)
319
 
317
 
320
def get_item_inventoy(item_id):
318
def get_item_inventoy(item_id):
321
    
319
    
322
    inventory = Item.get_by(id=item_id).currentInventory
320
    inventory = Item.get_by(id=item_id).currentInventory
323
    if not inventory:
321
    if not inventory:
Line 433... Line 431...
433
        return 0
431
        return 0
434
    else:
432
    else:
435
        return current_inventory_snapshot.availibility
433
        return current_inventory_snapshot.availibility
436
    """
434
    """
437
    
435
    
438
def check_risky_item(item, availability, reserved):
436
def check_risky_item(item):
439
    if not item.risky:
437
    if not item.risky:
440
        return
438
        return
-
 
439
    all_inventory = CurrentInventorySnapshot.query.filter_by(item = item).all()
-
 
440
    availibility = 0
-
 
441
    reserved = 0
-
 
442
    for currInv in all_inventory:
-
 
443
        availibility = availibility + currInv.availibility
-
 
444
        reserved = reserved + currInv.reserved 
441
    if availability - reserved <= 0:
445
    if availibility - reserved <= 0:
442
        if item.status == status.ACTIVE:
446
        if item.status == status.ACTIVE:
443
            change_item_status(item.id, status.PAUSED)
447
            change_item_status(item.id, status.PAUSED)
444
    else:
448
    else:
445
        if item.status == status.PAUSED:
449
        if item.status == status.PAUSED:
446
            change_item_status(item.id, status.ACTIVE)
450
            change_item_status(item.id, status.ACTIVE)
447
    
451
    session.commit()
448
 
452
 
449
def reserve_item_in_warehouse(item_id, warehouse_id, quantity):    
453
def reserve_item_in_warehouse(item_id, warehouse_id, quantity):    
450
    if not warehouse_id:
454
    if not warehouse_id:
451
        raise InventoryServiceException(101, "bad warehouse_id")
455
        raise InventoryServiceException(101, "bad warehouse_id")
452
    item = get_item(item_id)
456
    item = get_item(item_id)
Line 455... Line 459...
455
        
459
        
456
    query = CurrentInventorySnapshot.query.filter_by(warehouse_id = warehouse_id, item_id = item_id)
460
    query = CurrentInventorySnapshot.query.filter_by(warehouse_id = warehouse_id, item_id = item_id)
457
    try:
461
    try:
458
        current_inventory_snapshot = query.one()
462
        current_inventory_snapshot = query.one()
459
        current_inventory_snapshot.reserved = current_inventory_snapshot.reserved + quantity
463
        current_inventory_snapshot.reserved = current_inventory_snapshot.reserved + quantity
460
        
-
 
461
        check_risky_item(item, current_inventory_snapshot.availibility, current_inventory_snapshot.reserved)
-
 
462
        
-
 
463
        session.commit()
464
        session.commit()
-
 
465
        check_risky_item(item)
464
        return True
466
        return True
465
    except:
467
    except:
466
        print "Unexpected error:", sys.exc_info()[0]
468
        print "Unexpected error:", sys.exc_info()[0]
467
        return False
469
        return False
468
 
470
 
Line 475... Line 477...
475
        
477
        
476
    query = CurrentInventorySnapshot.query.filter_by(warehouse_id = warehouse_id, item_id = item_id)
478
    query = CurrentInventorySnapshot.query.filter_by(warehouse_id = warehouse_id, item_id = item_id)
477
    try:
479
    try:
478
        current_inventory_snapshot = query.one()
480
        current_inventory_snapshot = query.one()
479
        current_inventory_snapshot.reserved = current_inventory_snapshot.reserved - quantity
481
        current_inventory_snapshot.reserved = current_inventory_snapshot.reserved - quantity
480
        
-
 
481
        check_risky_item(item, current_inventory_snapshot.availibility, current_inventory_snapshot.reserved)
-
 
482
        
-
 
483
        session.commit()
482
        session.commit()
-
 
483
        check_risky_item(item)
484
        return True
484
        return True
485
    except:
485
    except:
486
        print "Unexpected error:", sys.exc_info()[0]
486
        print "Unexpected error:", sys.exc_info()[0]
487
        return False
487
        return False
488
    
488
    
Line 823... Line 823...
823
    try:
823
    try:
824
        log_risky_flag(item_id, risky)
824
        log_risky_flag(item_id, risky)
825
    except:
825
    except:
826
        print "Not able to log risky flag change"
826
        print "Not able to log risky flag change"
827
    item.risky = risky
827
    item.risky = risky
-
 
828
    if not risky and item.status == status.PAUSED:
-
 
829
        change_item_status(item.id, status.ACTIVE)
828
    session.commit()
830
    session.commit()
-
 
831
    check_risky_item(item)
829
    
832
    
830
def get_items_by_vendor_category(vendor_category):
833
def get_items_by_vendor_category(vendor_category):
831
    if not vendor_category:
834
    if not vendor_category:
832
        raise InventoryServiceException(101, "Invalid vendor category in request")
835
        raise InventoryServiceException(101, "Invalid vendor category in request")
833
    query = Item.query.filter(and_(Item.hotspotCategory==vendor_category, Item.status != status.PHASED_OUT))
836
    query = Item.query.filter(and_(Item.hotspotCategory==vendor_category, Item.status != status.PHASED_OUT))