Subversion Repositories SmartDukaan

Rev

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

Rev 5697 Rev 5713
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