| Line 30... |
Line 30... |
| 30 |
from sqlalchemy.sql.functions import count
|
30 |
from sqlalchemy.sql.functions import count
|
| 31 |
import calendar
|
31 |
import calendar
|
| 32 |
import datetime
|
32 |
import datetime
|
| 33 |
import sys
|
33 |
import sys
|
| 34 |
import threading
|
34 |
import threading
|
| - |
|
35 |
import math
|
| 35 |
|
36 |
|
| 36 |
to_addresses = ["khushal.bhatia@shop2020.in", "chaitnaya.vats@shop2020.in", "chandan.kumar@shop2020.in"]
|
37 |
to_addresses = ["khushal.bhatia@shop2020.in", "chaitnaya.vats@shop2020.in", "chandan.kumar@shop2020.in"]
|
| 37 |
mail_user = "cnc.center@shop2020.in"
|
38 |
mail_user = "cnc.center@shop2020.in"
|
| 38 |
mail_password = "5h0p2o2o"
|
39 |
mail_password = "5h0p2o2o"
|
| 39 |
skippedItems = { 175 : [27, 2160, 2175, 2163, 2158, 7128, 26, 2154],
|
40 |
skippedItems = { 175 : [27, 2160, 2175, 2163, 2158, 7128, 26, 2154],
|
| Line 1130... |
Line 1131... |
| 1130 |
|
1131 |
|
| 1131 |
for itemId, status in oosStatusMap.iteritems():
|
1132 |
for itemId, status in oosStatusMap.iteritems():
|
| 1132 |
total_order_count = 0
|
1133 |
total_order_count = 0
|
| 1133 |
total_rto_count = 0
|
1134 |
total_rto_count = 0
|
| 1134 |
for sid in (1,3,6,7,8):
|
1135 |
for sid in (1,3,6,7,8):
|
| 1135 |
#if OOSStatus.query.filter_by(item_id = itemId, date = oosDate, sourceId = sid).first() is None:
|
- |
|
| 1136 |
oosStatus = OOSStatus()
|
1136 |
oosStatus = OOSStatus()
|
| 1137 |
oosStatus.item_id = itemId
|
1137 |
oosStatus.item_id = itemId
|
| 1138 |
oosStatus.date = oosDate
|
1138 |
oosStatus.date = oosDate
|
| 1139 |
oosStatus.sourceId = sid
|
1139 |
oosStatus.sourceId = sid
|
| 1140 |
order_count = 0
|
1140 |
order_count = 0
|
| Line 1148... |
Line 1148... |
| 1148 |
oosStatus.is_oos = status
|
1148 |
oosStatus.is_oos = status
|
| 1149 |
if oosStatus.is_oos and order_count > 0:
|
1149 |
if oosStatus.is_oos and order_count > 0:
|
| 1150 |
oosStatus.is_oos = False
|
1150 |
oosStatus.is_oos = False
|
| 1151 |
total_order_count = total_order_count + order_count
|
1151 |
total_order_count = total_order_count + order_count
|
| 1152 |
total_rto_count = total_rto_count + rto_count
|
1152 |
total_rto_count = total_rto_count + rto_count
|
| 1153 |
#else:
|
- |
|
| 1154 |
# print "OOS Status already exists for ItemID:"+str(itemId) + " and SourceID " + str(sid)
|
- |
|
| 1155 |
|
- |
|
| 1156 |
#if OOSStatus.query.filter_by(item_id = itemId, date = oosDate, sourceId = 0).first() is None:
|
- |
|
| 1157 |
oosStatus = OOSStatus()
|
1153 |
oosStatus = OOSStatus()
|
| 1158 |
oosStatus.item_id = itemId
|
1154 |
oosStatus.item_id = itemId
|
| 1159 |
oosStatus.date = oosDate
|
1155 |
oosStatus.date = oosDate
|
| 1160 |
oosStatus.sourceId = 0
|
1156 |
oosStatus.sourceId = 0
|
| 1161 |
oosStatus.num_orders = total_order_count
|
1157 |
oosStatus.num_orders = total_order_count
|
| Line 1165... |
Line 1161... |
| 1165 |
oosStatus.is_oos = status
|
1161 |
oosStatus.is_oos = status
|
| 1166 |
if oosStatus.is_oos and order_count > 0:
|
1162 |
if oosStatus.is_oos and order_count > 0:
|
| 1167 |
oosStatus.is_oos = False
|
1163 |
oosStatus.is_oos = False
|
| 1168 |
|
1164 |
|
| 1169 |
session.commit()
|
1165 |
session.commit()
|
| 1170 |
#else:
|
- |
|
| 1171 |
#print "OOS Status already exists for ItemID:"+str(itemId) + " and SourceID " + str(sid)
|
- |
|
| 1172 |
|
1166 |
|
| - |
|
1167 |
|
| - |
|
1168 |
itemCountMap = {}
|
| - |
|
1169 |
oosDate = oosDate - datetime.timedelta(days = 1) - datetime.timedelta(hours = 1)
|
| - |
|
1170 |
lines = session.query(OOSStatus.item_id, func.sum(OOSStatus.num_orders)/func.count(OOSStatus.num_orders)).filter(OOSStatus.date >= oosDate).filter(OOSStatus.sourceId == 1).filter(OOSStatus.is_oos == 0).group_by(OOSStatus.item_id).all()
|
| - |
|
1171 |
for line in lines:
|
| - |
|
1172 |
item_id = line[0]
|
| - |
|
1173 |
quantity = math.ceil(max(1,3*int(line[1])))
|
| - |
|
1174 |
itemCountMap[item_id] = quantity
|
| - |
|
1175 |
cl = CatalogClient().get_client()
|
| - |
|
1176 |
cl.updateItemHoldInventory(itemCountMap)
|
| 1173 |
|
1177 |
|
| 1174 |
def get_oos_statuses_for_x_days_for_item(itemId, sourceId, days):
|
1178 |
def get_oos_statuses_for_x_days_for_item(itemId, sourceId, days):
|
| 1175 |
timestamp = datetime.datetime.now()
|
1179 |
timestamp = datetime.datetime.now()
|
| 1176 |
timestamp = timestamp - datetime.timedelta(days = days)
|
1180 |
timestamp = timestamp - datetime.timedelta(days = days)
|
| 1177 |
return OOSStatus.query.filter_by(item_id = itemId).filter_by(sourceId = sourceId).filter(OOSStatus.date > timestamp).all()
|
1181 |
return OOSStatus.query.filter_by(item_id = itemId).filter_by(sourceId = sourceId).filter(OOSStatus.date > timestamp).all()
|