Subversion Repositories SmartDukaan

Rev

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

Rev 3133 Rev 3186
Line 927... Line 927...
927
     - orderId
927
     - orderId
928
    """
928
    """
929
    status_transition = {OrderStatus.SALES_RET_RECEIVED : OrderStatus.SALES_RET_REFUNDED,
929
    status_transition = {OrderStatus.SALES_RET_RECEIVED : OrderStatus.SALES_RET_REFUNDED,
930
                         OrderStatus.DOA_CERT_INVALID : OrderStatus.DOA_INVALID_REFUNDED,
930
                         OrderStatus.DOA_CERT_INVALID : OrderStatus.DOA_INVALID_REFUNDED,
931
                         OrderStatus.DOA_CERT_VALID : OrderStatus.DOA_VALID_REFUNDED,
931
                         OrderStatus.DOA_CERT_VALID : OrderStatus.DOA_VALID_REFUNDED,
-
 
932
                         OrderStatus.INIT : OrderStatus.REFUNDED,
932
                         OrderStatus.SUBMITTED_FOR_PROCESSING : OrderStatus.REFUNDED,
933
                         OrderStatus.SUBMITTED_FOR_PROCESSING : OrderStatus.REFUNDED,
933
                         OrderStatus.INVENTORY_LOW : OrderStatus.REFUNDED
934
                         OrderStatus.INVENTORY_LOW : OrderStatus.REFUNDED
934
                         }
935
                         }
935
    order = get_order(order_id)
936
    order = get_order(order_id)
-
 
937
    
-
 
938
    if order.status not in status_transition.keys():
-
 
939
        raise TransactionServiceException(114, "This order can't be refunded")
-
 
940
    
-
 
941
    if order.status == OrderStatus.INIT:
-
 
942
        __update_inventory_reservation(order)
936
    if order.status in [OrderStatus.SALES_RET_RECEIVED, OrderStatus.DOA_CERT_INVALID, OrderStatus.DOA_CERT_VALID] :
943
    elif order.status in [OrderStatus.SALES_RET_RECEIVED, OrderStatus.DOA_CERT_INVALID, OrderStatus.DOA_CERT_VALID] :
937
        __create_return_order(order)
944
        __create_return_order(order)
938
        __create_refund(order)
945
        __create_refund(order)
939
        order.status = status_transition[order.status]
-
 
940
        order.statusDescription = "Refunded"
-
 
941
    elif order.status in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]:
946
    elif order.status in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]:
942
        __create_cancellation(order)
947
        __create_cancellation(order)
943
        try:
-
 
944
            #Reduce the reservation count for all lineitems.
-
 
945
            catalog_client = CatalogClient().get_client()
-
 
946
            for lineitem in order.lineitems:
-
 
947
                catalog_client.reduceReservationCount(lineitem.item_id, order.warehouse_id, lineitem.quantity);
-
 
948
        except:
-
 
949
            print "Unable to reduce reservation count"
948
        __update_inventory_reservation(order)
950
        order.status = status_transition[order.status]
-
 
951
        order.statusDescription = "Refunded"
-
 
952
    else:
-
 
953
        raise TransactionServiceException(114, "This order can't be refunded")
-
 
954
    
949
    
-
 
950
    order.status = status_transition[order.status]
-
 
951
    order.statusDescription = "Refunded"
955
    order.refund_timestamp = datetime.datetime.now()
952
    order.refund_timestamp = datetime.datetime.now()
956
    session.commit()
953
    session.commit()
957
    return True
954
    return True
958
 
955
 
-
 
956
def __update_inventory_reservation(order):
-
 
957
    try:
-
 
958
        #Reduce the reservation count for all lineitems.
-
 
959
        catalog_client = CatalogClient().get_client()
-
 
960
        for lineitem in order.lineitems:
-
 
961
            catalog_client.reduceReservationCount(lineitem.item_id, order.warehouse_id, lineitem.quantity);
-
 
962
    except:
-
 
963
        print "Unable to reduce reservation count"
-
 
964
 
959
def __clone_order(order, should_copy_billing_info):
965
def __clone_order(order, should_copy_billing_info):
960
    current_time = datetime.datetime.now()
966
    current_time = datetime.datetime.now()
961
    new_order = Order()
967
    new_order = Order()
962
    new_order.customer_id = order.customer_id
968
    new_order.customer_id = order.customer_id
963
    new_order.customer_name = order.customer_name
969
    new_order.customer_name = order.customer_name