| Line 38... |
Line 38... |
| 38 |
import datetime
|
38 |
import datetime
|
| 39 |
import logging
|
39 |
import logging
|
| 40 |
import os
|
40 |
import os
|
| 41 |
import sys
|
41 |
import sys
|
| 42 |
import time
|
42 |
import time
|
| - |
|
43 |
from shop2020.config.client.ConfigClient import ConfigClient
|
| 43 |
logging.basicConfig(level=logging.DEBUG)
|
44 |
logging.basicConfig(level=logging.DEBUG)
|
| 44 |
|
45 |
|
| 45 |
|
46 |
|
| - |
|
47 |
try:
|
| - |
|
48 |
config_client = ConfigClient()
|
| - |
|
49 |
PREPAID_SHIPPING_CUTOFF_TIME = int(config_client.get_property('delivery_cutoff_time'))
|
| - |
|
50 |
except Exception as ex:
|
| - |
|
51 |
print "[ERROR] Unexpected config error:", sys.exc_info()[0]
|
| - |
|
52 |
PREPAID_SHIPPING_CUTOFF_TIME = 15
|
| 46 |
|
53 |
|
| 47 |
|
- |
|
| 48 |
|
- |
|
| - |
|
54 |
COD_SHIPPING_CUTOFF_TIME = 12
|
| 49 |
|
55 |
|
| 50 |
PAGE_HEIGHT=defaultPageSize[1]
|
56 |
PAGE_HEIGHT=defaultPageSize[1]
|
| 51 |
PAGE_WIDTH=defaultPageSize[0]
|
57 |
PAGE_WIDTH=defaultPageSize[0]
|
| 52 |
|
58 |
|
| 53 |
ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT = {
|
59 |
ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT = {
|
| Line 71... |
Line 77... |
| 71 |
if t_order.logistics_provider_id:
|
77 |
if t_order.logistics_provider_id:
|
| 72 |
order.logistics_provider_id = t_order.logistics_provider_id
|
78 |
order.logistics_provider_id = t_order.logistics_provider_id
|
| 73 |
order.airwaybill_no = t_order.airwaybill_no
|
79 |
order.airwaybill_no = t_order.airwaybill_no
|
| 74 |
order.tracking_id = t_order.tracking_id
|
80 |
order.tracking_id = t_order.tracking_id
|
| 75 |
if t_order.expected_shipping_time:
|
81 |
if t_order.expected_shipping_time:
|
| 76 |
order.expected_shipping_time = to_py_date(t_order.expected_shipping_time).replace(hour=15, minute=0, second=0)
|
82 |
order.expected_shipping_time = to_py_date(t_order.expected_shipping_time).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
| 77 |
if t_order.expected_delivery_time:
|
83 |
if t_order.expected_delivery_time:
|
| 78 |
order.expected_delivery_time = to_py_date(t_order.expected_delivery_time)
|
84 |
order.expected_delivery_time = to_py_date(t_order.expected_delivery_time)
|
| 79 |
order.promised_delivery_time = to_py_date(t_order.expected_delivery_time)
|
85 |
order.promised_delivery_time = to_py_date(t_order.expected_delivery_time)
|
| 80 |
if t_order.customer_id:
|
86 |
if t_order.customer_id:
|
| 81 |
order.customer_id = t_order.customer_id
|
87 |
order.customer_id = t_order.customer_id
|
| Line 200... |
Line 206... |
| 200 |
|
206 |
|
| 201 |
order.warehouse_id = logistics_info.warehouseId
|
207 |
order.warehouse_id = logistics_info.warehouseId
|
| 202 |
order.logistics_provider_id = logistics_info.providerId
|
208 |
order.logistics_provider_id = logistics_info.providerId
|
| 203 |
order.airwaybill_no = logistics_info.airway_billno
|
209 |
order.airwaybill_no = logistics_info.airway_billno
|
| 204 |
order.tracking_id = order.airwaybill_no
|
210 |
order.tracking_id = order.airwaybill_no
|
| 205 |
order.expected_shipping_time = (current_time + datetime.timedelta(days=logistics_info.shippingTime)).replace(hour=15, minute=0, second=0)
|
211 |
order.expected_shipping_time = (current_time + datetime.timedelta(days=logistics_info.shippingTime)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
| 206 |
order.expected_delivery_time = current_time + datetime.timedelta(days=logistics_info.deliveryTime)
|
212 |
order.expected_delivery_time = current_time + datetime.timedelta(days=logistics_info.deliveryTime)
|
| 207 |
order.promised_delivery_time = order.expected_delivery_time
|
213 |
order.promised_delivery_time = order.expected_delivery_time
|
| 208 |
|
214 |
|
| 209 |
catalog_client = CatalogClient().get_client()
|
215 |
catalog_client = CatalogClient().get_client()
|
| 210 |
catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
|
216 |
catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
|
| Line 228... |
Line 234... |
| 228 |
|
234 |
|
| 229 |
order.warehouse_id = logistics_info.warehouseId
|
235 |
order.warehouse_id = logistics_info.warehouseId
|
| 230 |
order.logistics_provider_id = logistics_info.providerId
|
236 |
order.logistics_provider_id = logistics_info.providerId
|
| 231 |
order.airwaybill_no = logistics_info.airway_billno
|
237 |
order.airwaybill_no = logistics_info.airway_billno
|
| 232 |
order.tracking_id = order.airwaybill_no
|
238 |
order.tracking_id = order.airwaybill_no
|
| 233 |
order.expected_shipping_time = (current_time + datetime.timedelta(days=logistics_info.shippingTime)).replace(hour=12, minute=0, second=0)
|
239 |
order.expected_shipping_time = (current_time + datetime.timedelta(days=logistics_info.shippingTime)).replace(hour=COD_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
| 234 |
order.expected_delivery_time = current_time + datetime.timedelta(days=logistics_info.deliveryTime)
|
240 |
order.expected_delivery_time = current_time + datetime.timedelta(days=logistics_info.deliveryTime)
|
| 235 |
order.promised_delivery_time = order.expected_delivery_time
|
241 |
order.promised_delivery_time = order.expected_delivery_time
|
| 236 |
|
242 |
|
| 237 |
catalog_client = CatalogClient().get_client()
|
243 |
catalog_client = CatalogClient().get_client()
|
| 238 |
catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
|
244 |
catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
|
| Line 1414... |
Line 1420... |
| 1414 |
"""
|
1420 |
"""
|
| 1415 |
Returns a map containing the number of risky orders keyed by item id. A risky order
|
1421 |
Returns a map containing the number of risky orders keyed by item id. A risky order
|
| 1416 |
is defined as one whose shipping date is about to expire.
|
1422 |
is defined as one whose shipping date is about to expire.
|
| 1417 |
"""
|
1423 |
"""
|
| 1418 |
item_wise_risky_orders_count = {}
|
1424 |
item_wise_risky_orders_count = {}
|
| 1419 |
shipping_cutoff_time = (datetime.datetime.now() + datetime.timedelta(days = 1)).replace(hour=15, minute=0, second=0)
|
1425 |
shipping_cutoff_time = (datetime.datetime.now() + datetime.timedelta(days = 1)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
| 1420 |
orders = Order.query.filter(Order.status.in_(tuple([OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.ACCEPTED]))).filter(Order.expected_shipping_time <= shipping_cutoff_time).all()
|
1426 |
orders = Order.query.filter(Order.status.in_(tuple([OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.ACCEPTED]))).filter(Order.expected_shipping_time <= shipping_cutoff_time).all()
|
| 1421 |
for order in orders:
|
1427 |
for order in orders:
|
| 1422 |
for lineitem in order.lineitems:
|
1428 |
for lineitem in order.lineitems:
|
| 1423 |
quantity = lineitem.quantity
|
1429 |
quantity = lineitem.quantity
|
| 1424 |
if item_wise_risky_orders_count.has_key(lineitem.item_id):
|
1430 |
if item_wise_risky_orders_count.has_key(lineitem.item_id):
|