Subversion Repositories SmartDukaan

Rev

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

Rev 6484 Rev 6498
Line 9... Line 9...
9
from shop2020.model.v1.inventory.impl import DataService
9
from shop2020.model.v1.inventory.impl import DataService
10
from shop2020.model.v1.inventory.impl.DataService import Warehouse, \
10
from shop2020.model.v1.inventory.impl.DataService import Warehouse, \
11
    ItemInventoryHistory, CurrentInventorySnapshot, VendorItemPricing, \
11
    ItemInventoryHistory, CurrentInventorySnapshot, VendorItemPricing, \
12
    VendorItemMapping, Vendor, MissedInventoryUpdate, BadInventorySnapshot, \
12
    VendorItemMapping, Vendor, MissedInventoryUpdate, BadInventorySnapshot, \
13
    VendorItemProcurementDelay, VendorHolidays, ItemAvailabilityCache,\
13
    VendorItemProcurementDelay, VendorHolidays, ItemAvailabilityCache,\
14
    CurrentReservationSnapshot
14
    CurrentReservationSnapshot,Ignoredinventoryupdateitems
15
from shop2020.thriftpy.model.v1.inventory.ttypes import InventoryServiceException, \
15
from shop2020.thriftpy.model.v1.inventory.ttypes import InventoryServiceException, \
16
    HolidayType, InventoryType, WarehouseType
16
    HolidayType, InventoryType, WarehouseType
17
from shop2020.thriftpy.model.v1.order.ttypes import AlertType
17
from shop2020.thriftpy.model.v1.order.ttypes import AlertType
18
from shop2020.utils import EmailAttachmentSender
18
from shop2020.utils import EmailAttachmentSender
19
from shop2020.utils.EmailAttachmentSender import mail
19
from shop2020.utils.EmailAttachmentSender import mail
Line 30... Line 30...
30
mail_user = "cnc.center@shop2020.in"
30
mail_user = "cnc.center@shop2020.in"
31
mail_password = "5h0p2o2o"
31
mail_password = "5h0p2o2o"
32
skippedItems = { 175 : [27, 2160, 2175, 2163, 2158, 7128, 26, 2154],
32
skippedItems = { 175 : [27, 2160, 2175, 2163, 2158, 7128, 26, 2154],
33
                 193 : [5839] }
33
                 193 : [5839] }
34
 
34
 
-
 
35
 
-
 
36
 
35
def initialize(dbname='inventory', db_hostname="localhost"):
37
def initialize(dbname='inventory', db_hostname="localhost"):
36
    DataService.initialize(dbname, db_hostname)
38
    DataService.initialize(dbname, db_hostname)
37
    
39
    
38
def get_Warehouse(warehouse_id):
40
def get_Warehouse(warehouse_id):
39
    return Warehouse.get_by(id=warehouse_id)
41
    return Warehouse.get_by(id=warehouse_id)
Line 77... Line 79...
77
    if warehouse.vendorString:
79
    if warehouse.vendorString:
78
        ds_warehouse.vendorString = warehouse.vendorString
80
        ds_warehouse.vendorString = warehouse.vendorString
79
    session.commit()
81
    session.commit()
80
    return ds_warehouse.id
82
    return ds_warehouse.id
81
 
83
 
-
 
84
def get_ignored_items(warehouse_id): 
-
 
85
    Ignored_inventory_items = Ignoredinventoryupdateitems.query.filter_by(warehouse_id=warehouse_id).all()
-
 
86
    negativeItems = []
-
 
87
    for Ignored_inventory_item in Ignored_inventory_items:
-
 
88
        try:
-
 
89
            item_id = Ignored_inventory_item.item_id
-
 
90
            negativeItems.append(item_id)
-
 
91
        except:
-
 
92
            raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
-
 
93
    return negativeItems
-
 
94
 
82
def update_inventory_history(warehouse_id, timestamp, availability):
95
def update_inventory_history(warehouse_id, timestamp, availability):
83
    warehouse = get_Warehouse(warehouse_id)
96
    warehouse = get_Warehouse(warehouse_id)
84
    if not warehouse:
97
    if not warehouse:
85
        raise InventoryServiceException(107, "Warehouse? Where?")
98
        raise InventoryServiceException(107, "Warehouse? Where?")
86
    vendor = warehouse.vendor
99
    vendor = warehouse.vendor
87
    time = datetime.datetime.now()
100
    time = datetime.datetime.now()
-
 
101
    negativeItems = get_ignored_items(warehouse_id)        
88
    for item_key, quantity in availability.iteritems():
102
    for item_key, quantity in availability.iteritems():
89
        try:
103
        try:
90
            vendor_item_mapping = VendorItemMapping.query.filter_by(vendor=vendor, item_key=item_key).one();
104
            vendor_item_mapping = VendorItemMapping.query.filter_by(vendor=vendor, item_key=item_key).one();
91
            item_id = vendor_item_mapping.item_id
105
            item_id = vendor_item_mapping.item_id
-
 
106
            
92
        except:
107
        except:
93
            continue  
108
            continue  
94
        try:
109
        try:
-
 
110
            if item_id not in negativeItems:
95
            item_inventory_history = ItemInventoryHistory()
111
                item_inventory_history = ItemInventoryHistory()
96
            item_inventory_history.warehouse = warehouse
112
                item_inventory_history.warehouse = warehouse
97
            item_inventory_history.item_id = item_id
113
                item_inventory_history.item_id = item_id
98
            item_inventory_history.timestamp = time
114
                item_inventory_history.timestamp = time
99
            item_inventory_history.availability = quantity
115
                item_inventory_history.availability = quantity
100
        except:
116
        except:
101
            raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
117
            raise InventoryServiceException(108, "Some unforeseen error while updating inventory")
102
    session.commit()
118
    session.commit()
103
    
119
    
104
def update_inventory(warehouse_id, timestamp, availability):
120
def update_inventory(warehouse_id, timestamp, availability):
105
    warehouse = get_Warehouse(warehouse_id)
121
    warehouse = get_Warehouse(warehouse_id)
106
    if not warehouse:
122
    if not warehouse:
107
        raise InventoryServiceException(107, "Warehouse? Where?")
123
        raise InventoryServiceException(107, "Warehouse? Where?")
108
     
124
    negativeItems = get_ignored_items(warehouse_id)
109
    time = datetime.datetime.now()
125
    time = datetime.datetime.now()
110
    warehouse.lastCheckedOn = time
126
    warehouse.lastCheckedOn = time
111
    warehouse.vendorString = timestamp
127
    warehouse.vendorString = timestamp
112
    vendor = warehouse.vendor
128
    vendor = warehouse.vendor
113
    item_ids = []
129
    item_ids = []
114
    for item_key, quantity in availability.iteritems():
130
    for item_key, quantity in availability.iteritems():
115
        try:
131
        try:
116
            vendor_item_mapping = VendorItemMapping.query.filter_by(vendor=vendor, item_key=item_key).one();
132
            vendor_item_mapping = VendorItemMapping.query.filter_by(vendor=vendor, item_key=item_key).one();
117
            item_id = vendor_item_mapping.item_id
133
            item_id = vendor_item_mapping.item_id
-
 
134
            if item_id not in negativeItems: 
118
            item_ids.append(item_id)
135
                item_ids.append(item_id)
-
 
136
            else:
-
 
137
                continue
119
        except:
138
        except:
120
            print 'Skipping update for ' + item_key + ' quantity ' + str(quantity) + ' warehouse id: ' + str(warehouse_id)
139
            print 'Skipping update for ' + item_key + ' quantity ' + str(quantity) + ' warehouse id: ' + str(warehouse_id)
121
            __send_mail_for_missing_key(item_key, quantity, warehouse_id)
140
            __send_mail_for_missing_key(item_key, quantity, warehouse_id)
122
            continue
141
            continue
123
        try:
142
        try: