Subversion Repositories SmartDukaan

Rev

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

Rev 4018 Rev 4019
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):