Subversion Repositories SmartDukaan

Rev

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

Rev 2975 Rev 2983
Line 8... Line 8...
8
from shop2020.model.v1.catalog.impl.DataService import Item, \
8
from shop2020.model.v1.catalog.impl.DataService import Item, \
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot, ItemInfo,\
9
    Warehouse, ItemInventoryHistory, CurrentInventorySnapshot, ItemInfo,\
10
    ItemChangeLog, Category, EntityIDGenerator, VendorItemPricing,\
10
    ItemChangeLog, Category, EntityIDGenerator, VendorItemPricing,\
11
    VendorItemMapping, Vendor
11
    VendorItemMapping, Vendor
12
from shop2020.thriftpy.model.v1.catalog.ttypes import \
12
from shop2020.thriftpy.model.v1.catalog.ttypes import \
13
    InventoryServiceException, status
13
    InventoryServiceException, status, ItemShippingInfo
14
from shop2020.model.v1.catalog.impl.Convertors import to_t_item,\
14
from shop2020.model.v1.catalog.impl.Convertors import to_t_item,\
15
    to_t_vendor_item_pricing
15
    to_t_vendor_item_pricing
16
import datetime
16
import datetime
17
import sys
17
import sys
18
from shop2020.utils.Utils import log_entry, to_py_date, log_risky_flag
18
from shop2020.utils.Utils import log_entry, to_py_date, log_risky_flag
Line 51... Line 51...
51
    except Exception as ex:
51
    except Exception as ex:
52
        print ex
52
        print ex
53
        raise InventoryServiceException(109, "Item not found")
53
        raise InventoryServiceException(109, "Item not found")
54
        
54
        
55
def is_active(item_id):
55
def is_active(item_id):
-
 
56
    t_item_shipping_info = ItemShippingInfo()
56
    try:
57
    try:
57
        item = get_item(item_id)
58
        item = get_item(item_id)
58
        return item.status == status.ACTIVE
59
        t_item_shipping_info.isActive = (item.status == status.ACTIVE)
-
 
60
        t_item_shipping_info.isRisky = item.risky
-
 
61
        t_item_shipping_info.quantity = __get_item_availability(item) 
59
    except InventoryServiceException:
62
    except InventoryServiceException:
-
 
63
        print "[ERROR] Unexpected error:", sys.exc_info()[0]
60
        return False
64
    return t_item_shipping_info
61
    
65
 
62
def get_item_status_description(itemId):
66
def get_item_status_description(itemId):
63
    item = get_item(itemId)
67
    item = get_item(itemId)
64
    return item.status_description
68
    return item.status_description
65
        
69
        
66
def get_Warehouse(warehouse_id):
70
def get_Warehouse(warehouse_id):
Line 433... Line 437...
433
    """
437
    """
434
    
438
    
435
def check_risky_item(item):
439
def check_risky_item(item):
436
    if not item.risky:
440
    if not item.risky:
437
        return
441
        return
438
    all_inventory = CurrentInventorySnapshot.query.filter_by(item = item).all()
-
 
439
    availibility = 0
-
 
440
    reserved = 0
-
 
441
    for currInv in all_inventory:
-
 
442
        availibility = availibility + currInv.availibility
442
    availability = __get_item_availability(item)
443
        reserved = reserved + currInv.reserved 
-
 
444
    if availibility - reserved <= 0:
443
    if availability <= 0:
445
        if item.status == status.ACTIVE:
444
        if item.status == status.ACTIVE:
446
            change_item_status(item.id, status.PAUSED)
445
            change_item_status(item.id, status.PAUSED)
447
    else:
446
    else:
448
        if item.status == status.PAUSED:
447
        if item.status == status.PAUSED:
449
            change_item_status(item.id, status.ACTIVE)
448
            change_item_status(item.id, status.ACTIVE)
450
    session.commit()
449
    session.commit()
451
 
450
 
-
 
451
def __get_item_availability(item):
-
 
452
    all_inventory = CurrentInventorySnapshot.query.filter_by(item = item).all()
-
 
453
    availability = 0
-
 
454
    reserved = 0
-
 
455
    for currInv in all_inventory:
-
 
456
        availability = availability + currInv.availibility
-
 
457
        reserved = reserved + currInv.reserved
-
 
458
    return availability - reserved
-
 
459
    
452
def reserve_item_in_warehouse(item_id, warehouse_id, quantity):    
460
def reserve_item_in_warehouse(item_id, warehouse_id, quantity):    
453
    if not warehouse_id:
461
    if not warehouse_id:
454
        raise InventoryServiceException(101, "bad warehouse_id")
462
        raise InventoryServiceException(101, "bad warehouse_id")
455
    item = get_item(item_id)
463
    item = get_item(item_id)
456
    if not item:
464
    if not item: