| 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:
|