| Line 861... |
Line 861... |
| 861 |
|
861 |
|
| 862 |
return True
|
862 |
return True
|
| 863 |
except:
|
863 |
except:
|
| 864 |
return False
|
864 |
return False
|
| 865 |
|
865 |
|
| 866 |
def mark_orders_as_returned_from_store(providerId, orderIds):
|
866 |
def mark_orders_as_returned_from_store(providerId, orderIds, awbs):
|
| 867 |
try:
|
867 |
try:
|
| 868 |
current_timestamp = datetime.datetime.now()
|
868 |
current_timestamp = datetime.datetime.now()
|
| 869 |
orders = Order.query.filter_by(logistics_provider_id = providerId, status = OrderStatus.RET_PICKUP_REQUEST_RAISED).all()
|
869 |
orders = Order.query.filter_by(logistics_provider_id = providerId, status = OrderStatus.RET_PICKUP_REQUEST_RAISED).all()
|
| 870 |
for order in orders:
|
870 |
for order in orders:
|
| 871 |
if order.id in orderIds:
|
871 |
if order.id in orderIds:
|
| 872 |
order.status = OrderStatus.RET_RETURN_IN_TRANSIT
|
872 |
order.status = OrderStatus.RET_RETURN_IN_TRANSIT
|
| 873 |
order.statusDescription = "Order returned from store"
|
873 |
order.statusDescription = "Order returned from store"
|
| 874 |
order.doa_pickup_timestamp = current_timestamp
|
874 |
order.doa_pickup_timestamp = current_timestamp
|
| - |
|
875 |
#order.airwaybill_no = awbs[orderIds.index(order.id)]
|
| - |
|
876 |
order.tracking_id = awbs[orderIds.index(order.id)]
|
| 875 |
session.commit()
|
877 |
session.commit()
|
| 876 |
|
878 |
|
| 877 |
return True
|
879 |
return True
|
| 878 |
except:
|
880 |
except:
|
| 879 |
return False
|
881 |
return False
|
| Line 955... |
Line 957... |
| 955 |
order.receiver = receiver
|
957 |
order.receiver = receiver
|
| 956 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
958 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
| 957 |
order.statusDescription = "Order delivered"
|
959 |
order.statusDescription = "Order delivered"
|
| 958 |
update_trust_level(order)
|
960 |
update_trust_level(order)
|
| 959 |
session.commit()
|
961 |
session.commit()
|
| - |
|
962 |
|
| - |
|
963 |
# if order.pickupStoreId:
|
| - |
|
964 |
# payment_client = PaymentClient().get_client()
|
| - |
|
965 |
# payment_client.createRefund(order.id, order.transaction.id, order.total_amount)
|
| - |
|
966 |
# payment_client = PaymentClient().get_client()
|
| - |
|
967 |
# payment_client.partiallyCapturePayment(order.transaction.id, order.total_amount, xferBy, xferTxnId, now())
|
| - |
|
968 |
# order.cod_reconciliation_timestamp = datetime.datetime.now()
|
| - |
|
969 |
# session.commit()
|
| - |
|
970 |
|
| 960 |
try:
|
971 |
try:
|
| 961 |
alert_client = AlertClient().get_client()
|
972 |
alert_client = AlertClient().get_client()
|
| 962 |
alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + order.id)
|
973 |
alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + order.id)
|
| 963 |
except Exception as e:
|
974 |
except Exception as e:
|
| 964 |
print e
|
975 |
print e
|
| Line 969... |
Line 980... |
| 969 |
if order != None or order.status in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERED_AT_STORE]:
|
980 |
if order != None or order.status in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERED_AT_STORE]:
|
| 970 |
order.status = OrderStatus.RECEIVED_AT_STORE
|
981 |
order.status = OrderStatus.RECEIVED_AT_STORE
|
| 971 |
order.statusDescription = "Order received at store"
|
982 |
order.statusDescription = "Order received at store"
|
| 972 |
order.delivery_timestamp = deliveryTimestamp
|
983 |
order.delivery_timestamp = deliveryTimestamp
|
| 973 |
session.commit()
|
984 |
session.commit()
|
| - |
|
985 |
try:
|
| - |
|
986 |
enqueue_received_at_store_email(order)
|
| - |
|
987 |
except Exception as e:
|
| - |
|
988 |
print e
|
| - |
|
989 |
|
| - |
|
990 |
def enqueue_received_at_store_email(order):
|
| - |
|
991 |
# Calling helper service on production
|
| - |
|
992 |
helperClient = HelperClient(host_key = "helper_service_server_host_prod").get_client()
|
| - |
|
993 |
try:
|
| - |
|
994 |
emailSubject = 'Order Pickup from Store for Order ID: ' + str(order.id)
|
| - |
|
995 |
emailBody = get_received_at_store_email_body(order)
|
| - |
|
996 |
helperClient.saveUserEmailForSending(order.customer_email, None, emailSubject, emailBody, '', 'ReceivedAtStore')
|
| - |
|
997 |
except Exception as e:
|
| - |
|
998 |
print e
|
| - |
|
999 |
|
| - |
|
1000 |
def get_received_at_store_email_body(order):
|
| - |
|
1001 |
|
| - |
|
1002 |
html = """
|
| - |
|
1003 |
<html>
|
| - |
|
1004 |
<body>
|
| - |
|
1005 |
<div>
|
| - |
|
1006 |
<p>Dear Customer,</p>
|
| - |
|
1007 |
<p>
|
| - |
|
1008 |
We are pleased to inform that your order: $order_id for your product $product_name has been reached at store.
|
| - |
|
1009 |
You can pick it from store. Store details are mentioned below:
|
| - |
|
1010 |
</p>
|
| - |
|
1011 |
<p>
|
| - |
|
1012 |
Store Address is:
|
| - |
|
1013 |
$store_address
|
| - |
|
1014 |
</p>
|
| - |
|
1015 |
<p>
|
| - |
|
1016 |
Warm Regards,<br />
|
| - |
|
1017 |
Saholic Team
|
| - |
|
1018 |
</p>
|
| - |
|
1019 |
</div>
|
| - |
|
1020 |
</body>
|
| - |
|
1021 |
</html>
|
| - |
|
1022 |
"""
|
| - |
|
1023 |
client = LogisticsClient().get_client()
|
| - |
|
1024 |
pickupStore = client.getPickupStore(order.pickupStoreId)
|
| - |
|
1025 |
address = pickupStore.name + "\n" + pickupStore.line1 + "\n"
|
| - |
|
1026 |
if pickupStore.line2:
|
| - |
|
1027 |
address = address + pickupStore.line2 + "\n"
|
| - |
|
1028 |
address = address + pickupStore.city + "\n"
|
| - |
|
1029 |
address = address + pickupStore.state + "\n"
|
| - |
|
1030 |
address = address + "PIN " + pickupStore.pin + "\n"
|
| - |
|
1031 |
address = address + "Phone: " + pickupStore.phone
|
| - |
|
1032 |
|
| - |
|
1033 |
product = "%s %s %s %s" % (order.lineitems[0].brand, order.lineitems[0].model_name, order.lineitems[0].model_number, order.lineitems[0].color)
|
| - |
|
1034 |
info = dict(order_id = order.id, product_name = product, store_address = address)
|
| - |
|
1035 |
return Template(html).substitute(info)
|
| - |
|
1036 |
|
| 974 |
|
1037 |
|
| 975 |
def mark_orders_as_rto(provider_id, returned_orders):
|
1038 |
def mark_orders_as_rto(provider_id, returned_orders):
|
| 976 |
for awb, detail in returned_orders.iteritems():
|
1039 |
for awb, detail in returned_orders.iteritems():
|
| 977 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
1040 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
| 978 |
if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE]:
|
1041 |
if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE]:
|
| 979 |
continue
|
1042 |
continue
|
| 980 |
#raise TransactionServiceException(103, "No order found for the awb:" + awb)
|
1043 |
#raise TransactionServiceException(103, "No order found for the awb:" + awb)
|
| 981 |
order.status = OrderStatus.RTO_IN_TRANSIT
|
1044 |
order.status = OrderStatus.RTO_IN_TRANSIT
|
| 982 |
order.delivery_timestamp, reason = detail.split('|')
|
1045 |
order.delivery_timestamp, reason = detail.split('|')
|
| 983 |
order.statusDescription = "Order Returned to Origin:" + reason
|
1046 |
order.statusDescription = "Order Returned to Origin:" + reason
|
| Line 999... |
Line 1062... |
| 999 |
return Order.query.filter_by(pickupStoreId = storeId).filter(Order.status.in_((OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERED_AT_STORE))).all()
|
1062 |
return Order.query.filter_by(pickupStoreId = storeId).filter(Order.status.in_((OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERED_AT_STORE))).all()
|
| 1000 |
|
1063 |
|
| 1001 |
def get_received_at_store_orders(storeId):
|
1064 |
def get_received_at_store_orders(storeId):
|
| 1002 |
return Order.query.filter_by(pickupStoreId = storeId).filter(Order.status.in_((OrderStatus.RECEIVED_AT_STORE, OrderStatus.RET_PICKUP_REQUEST_RAISED))).all()
|
1065 |
return Order.query.filter_by(pickupStoreId = storeId).filter(Order.status.in_((OrderStatus.RECEIVED_AT_STORE, OrderStatus.RET_PICKUP_REQUEST_RAISED))).all()
|
| 1003 |
|
1066 |
|
| - |
|
1067 |
def get_orders_collection_at_store(storeId, fromDate, toDate, onlyCod):
|
| - |
|
1068 |
query = Order.query.filter(Order.status == OrderStatus.DELIVERY_SUCCESS)
|
| - |
|
1069 |
if storeId:
|
| - |
|
1070 |
query = query.filter_by(pickupStoreId = storeId)
|
| - |
|
1071 |
if onlyCod:
|
| - |
|
1072 |
query = query.filter_by(cod = onlyCod)
|
| - |
|
1073 |
if fromDate:
|
| - |
|
1074 |
query = query.filter(Order.delivery_timestamp >= fromDate)
|
| - |
|
1075 |
if toDate:
|
| - |
|
1076 |
query = query.filter(Order.delivery_timestamp <= toDate)
|
| - |
|
1077 |
return query.all()
|
| - |
|
1078 |
|
| 1004 |
def update_non_delivery_reason(provider_id, undelivered_orders):
|
1079 |
def update_non_delivery_reason(provider_id, undelivered_orders):
|
| 1005 |
for awb, reason in undelivered_orders.iteritems():
|
1080 |
for awb, reason in undelivered_orders.iteritems():
|
| 1006 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
1081 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
| 1007 |
if order == None or order.status == OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE:
|
1082 |
if order == None or order.status == OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE:
|
| 1008 |
continue
|
1083 |
continue
|