| Line 102... |
Line 102... |
| 102 |
order.total_weight = t_order.total_weight
|
102 |
order.total_weight = t_order.total_weight
|
| 103 |
if t_order.created_timestamp:
|
103 |
if t_order.created_timestamp:
|
| 104 |
order.created_timestamp = to_py_date(t_order.created_timestamp)
|
104 |
order.created_timestamp = to_py_date(t_order.created_timestamp)
|
| 105 |
else:
|
105 |
else:
|
| 106 |
order.created_timestamp = datetime.datetime.now()
|
106 |
order.created_timestamp = datetime.datetime.now()
|
| - |
|
107 |
order.pickupStoreId = t_order.pickupStoreId
|
| 107 |
return order
|
108 |
return order
|
| 108 |
|
109 |
|
| 109 |
def create_transaction(t_transaction):
|
110 |
def create_transaction(t_transaction):
|
| 110 |
t_orders = t_transaction.orders
|
111 |
t_orders = t_transaction.orders
|
| 111 |
if not t_orders:
|
112 |
if not t_orders:
|
| Line 250... |
Line 251... |
| 250 |
order.orderType = orderType
|
251 |
order.orderType = orderType
|
| 251 |
#After we got payment success, we will set logistics info also
|
252 |
#After we got payment success, we will set logistics info also
|
| 252 |
logistics_client = LogisticsClient().get_client()
|
253 |
logistics_client = LogisticsClient().get_client()
|
| 253 |
#FIXME line item is only one now. If multiple will come, need to fix.
|
254 |
#FIXME line item is only one now. If multiple will come, need to fix.
|
| 254 |
item_id = order.lineitems[0].item_id
|
255 |
item_id = order.lineitems[0].item_id
|
| - |
|
256 |
if order.pickupStoreId:
|
| 255 |
logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id, DeliveryType.COD)
|
257 |
logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id, DeliveryType.PREPAID)
|
| 256 |
|
258 |
else:
|
| - |
|
259 |
logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id, DeliveryType.COD)
|
| 257 |
current_time = datetime.datetime.now()
|
260 |
current_time = datetime.datetime.now()
|
| 258 |
logistics_info.deliveryTime = adjust_delivery_time(current_time, logistics_info.deliveryTime)
|
261 |
logistics_info.deliveryTime = adjust_delivery_time(current_time, logistics_info.deliveryTime)
|
| 259 |
logistics_info.shippingTime = adjust_delivery_time(current_time, logistics_info.shippingTime)
|
262 |
logistics_info.shippingTime = adjust_delivery_time(current_time, logistics_info.shippingTime)
|
| 260 |
|
263 |
|
| 261 |
order.warehouse_id = logistics_info.warehouseId
|
264 |
order.warehouse_id = logistics_info.warehouseId
|
| Line 840... |
Line 843... |
| 840 |
for awb, detail in delivered_orders.iteritems():
|
843 |
for awb, detail in delivered_orders.iteritems():
|
| 841 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
844 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
| 842 |
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]:
|
845 |
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]:
|
| 843 |
continue
|
846 |
continue
|
| 844 |
#raise TransactionServiceException(103, "No order found for the awb:" + awb)
|
847 |
#raise TransactionServiceException(103, "No order found for the awb:" + awb)
|
| - |
|
848 |
if order.pickupStoreId:
|
| - |
|
849 |
order.status = OrderStatus.DELIVERED_AT_STORE
|
| - |
|
850 |
order.statusDescription = "Order delivered At Store"
|
| - |
|
851 |
else:
|
| 845 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
852 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
| 846 |
order.statusDescription = "Order delivered"
|
853 |
order.statusDescription = "Order delivered"
|
| 847 |
timestamp, receiver = detail.split('|')
|
854 |
timestamp, receiver = detail.split('|')
|
| 848 |
if order.first_dlvyatmp_timestamp is None:
|
855 |
if order.first_dlvyatmp_timestamp is None:
|
| 849 |
order.first_dlvyatmp_timestamp = timestamp
|
856 |
order.first_dlvyatmp_timestamp = timestamp
|
| 850 |
order.delivery_timestamp = timestamp
|
857 |
order.delivery_timestamp = timestamp
|
| 851 |
order.receiver = receiver
|
858 |
order.receiver = receiver
|
| 852 |
update_trust_level(order)
|
859 |
update_trust_level(order)
|
| 853 |
session.commit()
|
860 |
session.commit()
|
| 854 |
|
861 |
|
| 855 |
def mark_order_as_delivered(orderId, deliveryTimestamp, receiver):
|
862 |
def mark_order_as_delivered(orderId, deliveryTimestamp, receiver):
|
| 856 |
order = Order.get_by(id=orderId)
|
863 |
order = Order.get_by(id=orderId)
|
| 857 |
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, OrderStatus.DOA_PICKUP_REQUEST_RAISED, OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_RECEIVED, OrderStatus.RET_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_AUTHORIZED, OrderStatus.RET_PICKUP_REQUEST_RAISED, OrderStatus.RTO_IN_TRANSIT, OrderStatus.BILLED]:
|
864 |
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, OrderStatus.DOA_PICKUP_REQUEST_RAISED, OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_RECEIVED, OrderStatus.RET_PICKUP_CONFIRMED, OrderStatus.RET_REQUEST_AUTHORIZED, OrderStatus.RET_PICKUP_REQUEST_RAISED, OrderStatus.RTO_IN_TRANSIT, OrderStatus.BILLED, OrderStatus.RECEIVED_AT_STORE]:
|
| 858 |
raise TransactionServiceException(101, "Either wrond order id or invalid state " + str(orderId))
|
865 |
raise TransactionServiceException(101, "Either wrond order id or invalid state " + str(orderId))
|
| 859 |
|
866 |
|
| 860 |
# Provider is 4 is for self pickup and hardcoded. We should figure out a way to not to hard code.
|
867 |
# Provider is 4 is for self pickup and hardcoded. We should figure out a way to not to hard code.
|
| 861 |
if order.status == OrderStatus.BILLED and order.logistics_provider_id != 4:
|
868 |
if order.status == OrderStatus.BILLED and order.logistics_provider_id != 4:
|
| 862 |
raise TransactionServiceException(101, "Order is not marked for self pickup: " + str(orderId))
|
869 |
raise TransactionServiceException(101, "Order is not marked for self pickup: " + str(orderId))
|
| 863 |
|
870 |
|
| 864 |
if 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.RTO_IN_TRANSIT, OrderStatus.BILLED]:
|
871 |
if 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.RTO_IN_TRANSIT, OrderStatus.BILLED, OrderStatus.RECEIVED_AT_STORE]:
|
| 865 |
order.delivery_timestamp = deliveryTimestamp
|
872 |
order.delivery_timestamp = deliveryTimestamp
|
| 866 |
order.receiver = receiver
|
873 |
order.receiver = receiver
|
| 867 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
874 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
| 868 |
order.statusDescription = "Order delivered"
|
875 |
order.statusDescription = "Order delivered"
|
| 869 |
update_trust_level(order)
|
876 |
update_trust_level(order)
|
| 870 |
session.commit()
|
877 |
session.commit()
|
| 871 |
|
878 |
|
| - |
|
879 |
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
|
| - |
|
880 |
order = Order.get_by(id=orderId)
|
| - |
|
881 |
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]:
|
| - |
|
882 |
order.status = OrderStatus.RECEIVED_AT_STORE
|
| - |
|
883 |
order.statusDescription = "Order received at store"
|
| - |
|
884 |
order.delivery_timestamp = deliveryTimestamp
|
| - |
|
885 |
session.commit()
|
| - |
|
886 |
|
| 872 |
def mark_orders_as_rto(provider_id, returned_orders):
|
887 |
def mark_orders_as_rto(provider_id, returned_orders):
|
| 873 |
for awb, detail in returned_orders.iteritems():
|
888 |
for awb, detail in returned_orders.iteritems():
|
| 874 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
889 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
| 875 |
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]:
|
890 |
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]:
|
| 876 |
continue
|
891 |
continue
|
| Line 885... |
Line 900... |
| 885 |
current_time = datetime.datetime.now()
|
900 |
current_time = datetime.datetime.now()
|
| 886 |
to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
|
901 |
to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
|
| 887 |
rto_orders = Order.query.filter_by(logistics_provider_id = provider_id).filter_by(status=OrderStatus.RTO_IN_TRANSIT).filter(Order.delivery_timestamp <= to_datetime).all()
|
902 |
rto_orders = Order.query.filter_by(logistics_provider_id = provider_id).filter_by(status=OrderStatus.RTO_IN_TRANSIT).filter(Order.delivery_timestamp <= to_datetime).all()
|
| 888 |
return rto_orders
|
903 |
return rto_orders
|
| 889 |
|
904 |
|
| - |
|
905 |
def get_receive_pending_orders(storeId):
|
| - |
|
906 |
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()
|
| - |
|
907 |
|
| - |
|
908 |
def get_received_at_store_orders(storeId):
|
| - |
|
909 |
return Order.query.filter_by(pickupStoreId = storeId).filter_by(status = OrderStatus.RECEIVED_AT_STORE).all()
|
| - |
|
910 |
|
| 890 |
def update_non_delivery_reason(provider_id, undelivered_orders):
|
911 |
def update_non_delivery_reason(provider_id, undelivered_orders):
|
| 891 |
for awb, reason in undelivered_orders.iteritems():
|
912 |
for awb, reason in undelivered_orders.iteritems():
|
| 892 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
913 |
order = Order.query.filter_by(airwaybill_no=awb, logistics_provider_id = provider_id).first()
|
| 893 |
if order == None or order.status == OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE:
|
914 |
if order == None or order.status == OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE:
|
| 894 |
continue
|
915 |
continue
|