Subversion Repositories SmartDukaan

Rev

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

Rev 5551 Rev 5555
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