Subversion Repositories SmartDukaan

Rev

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

Rev 19693 Rev 19714
Line 63... Line 63...
63
from shop2020.model.v1.order.impl.model.UserWalletHistory import \
63
from shop2020.model.v1.order.impl.model.UserWalletHistory import \
64
    UserWalletHistory
64
    UserWalletHistory
65
from shop2020.thriftpy.alert.ttypes import MonitoredEntity, EntityType
65
from shop2020.thriftpy.alert.ttypes import MonitoredEntity, EntityType
66
from shop2020.thriftpy.crm.ttypes import *
66
from shop2020.thriftpy.crm.ttypes import *
67
from shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpType
67
from shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpType
68
from shop2020.thriftpy.model.v1.catalog.ttypes import ItemType
68
from shop2020.thriftpy.model.v1.catalog.ttypes import ItemType, ItemCondition
69
from shop2020.thriftpy.model.v1.inventory.ttypes import BillingType, \
69
from shop2020.thriftpy.model.v1.inventory.ttypes import BillingType, \
70
    InventoryServiceException, WarehouseType, InventoryType, VatType, ItemInventory
70
    InventoryServiceException, WarehouseType, InventoryType, VatType, ItemInventory
71
from shop2020.thriftpy.model.v1.order.ttypes import TransactionServiceException, \
71
from shop2020.thriftpy.model.v1.order.ttypes import TransactionServiceException, \
72
    TransactionStatus, OrderStatus, DelayReason, ExtraTransactionProcessingType, \
72
    TransactionStatus, OrderStatus, DelayReason, ExtraTransactionProcessingType, \
73
    HotspotAction, TimeoutSummary, OrderStatusGroups, OrderType, RechargeOrderStatus, \
73
    HotspotAction, TimeoutSummary, OrderStatusGroups, OrderType, RechargeOrderStatus, \
Line 2726... Line 2726...
2726
                process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns, order.invoice_number)
2726
                process_credit_transaction(order.transaction.id, order.customer_id, 1, creditTxns, order.invoice_number)
2727
            except:
2727
            except:
2728
                traceback.print_exc()
2728
                traceback.print_exc()
2729
                session.rollback()
2729
                session.rollback()
2730
                return
2730
                return
2731
        
2731
    
-
 
2732
    itemIds = []
-
 
2733
    ordersMap = {}
-
 
2734
    orderItemsMap = {}        
-
 
2735
    for order in grouppedOrdersList:
-
 
2736
        if order.lineitems[0].item_id not in itemIds:
-
 
2737
            itemIds.append(order.lineitems[0].item_id)
-
 
2738
        ordersMap[order.id] = order
-
 
2739
        orderItemsMap[order.id] = order.lineitems[0].item_id
-
 
2740
    
-
 
2741
    catalogClient = CatalogClient().get_client()
-
 
2742
    items = catalogClient.getItems(itemIds)
-
 
2743
    catalogIds = []
-
 
2744
    catalogItemsMap = {}
-
 
2745
    for item in items:
-
 
2746
        catalogIds.append(item.catalog_item_id)
-
 
2747
        catalogItemsMap[item.id] = item.catalog_item_id
-
 
2748
    
-
 
2749
    itemWarrantyInfoMap = catalogClient.getWarrantyInfoForItemList(catalogIds, ItemCondition.DAMAGED)
-
 
2750
    itemDOAWarrantyInfoMap = catalogClient.getWarrantyInfoForItemList(catalogIds, ItemCondition.DEFECTIVE)
2732
        
2751
       
2733
    for order in grouppedOrdersList:            
2752
    for order in grouppedOrdersList:            
2734
        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]:
2753
        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]:
2735
            raise TransactionServiceException(101, "Either wrong order id or invalid state " + str(orderId))
2754
            raise TransactionServiceException(101, "Either wrong order id or invalid state " + str(orderId))
2736
       
2755
       
2737
        # Provider is 4 is for self pickup and hardcoded. We should figure out a way to not to hard code.   
2756
        # Provider is 4 is for self pickup and hardcoded. We should figure out a way to not to hard code.   
Line 2780... Line 2799...
2780
            alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
2799
            alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
2781
        except Exception as e:
2800
        except Exception as e:
2782
            print "Exception in ending alert in MarkOrderAsDelivered method"
2801
            print "Exception in ending alert in MarkOrderAsDelivered method"
2783
            print e
2802
            print e
2784
            
2803
            
-
 
2804
    for orderId, order in ordersMap.items():
-
 
2805
        orderItemId = orderItemsMap.get(orderId)
-
 
2806
        orderCatalogItemId = catalogItemsMap.get(orderItemId)
-
 
2807
        itemWarrantyInfo = itemWarrantyInfoMap.get(orderCatalogItemId)
-
 
2808
        itemDOAWarrantyInfo = itemDOAWarrantyInfoMap.get(orderCatalogItemId)
-
 
2809
        
-
 
2810
        itemWarrntyVal = 0
-
 
2811
        doaItemWarrantyVal = 0
-
 
2812
        
-
 
2813
        if itemWarrantyInfo.key()[0]=='M':
-
 
2814
            itemWarrntyVal = 30*itemWarrantyInfo.values()[0]
-
 
2815
        else:
-
 
2816
            itemWarrntyVal = itemWarrantyInfo.values()[0]
-
 
2817
        
-
 
2818
        if itemDOAWarrantyInfo.key()[0]=='M':
-
 
2819
            doaItemWarrantyVal = 30*itemDOAWarrantyInfo.values()[0]
-
 
2820
        else:
-
 
2821
            doaItemWarrantyVal = itemDOAWarrantyInfo.values()[0]
-
 
2822
        
-
 
2823
        order.lineitems[0].warrantry_expiry_timestamp = deliveryTimestamp + timedelta(days=itemWarrntyVal)
-
 
2824
        order.lineitems[0].damaged_expiry_timestamp = deliveryTimestamp + timedelta(days=doaItemWarrantyVal)
-
 
2825
            
2785
    update_trust_level(grouppedOrdersList[0])
2826
    update_trust_level(grouppedOrdersList[0])
2786
    session.commit()
2827
    session.commit()
2787
 
2828
 
2788
    
2829
    
2789
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
2830
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
Line 10650... Line 10691...
10650
            returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_DONE]
10691
            returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_DONE]
10651
        else:
10692
        else:
10652
            returnOrder.processedAt = datetime.datetime.now()
10693
            returnOrder.processedAt = datetime.datetime.now()
10653
            returnOrder.refundDescription = str(returnOrder.replacementOrderId) + " has been delivered now"
10694
            returnOrder.refundDescription = str(returnOrder.replacementOrderId) + " has been delivered now"
10654
            returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_DONE]
10695
            returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_DONE]
-
 
10696
    session.commit()
-
 
10697
    
-
 
10698
def get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty):
-
 
10699
    query = session.query(Order).join((LineItem,Order.id==LineItem.order_id)).filter(Order.delivery_timestamp != None).filter(LineItem.quantity-LineItem.returnQty>0)
-
 
10700
    if not overrideWarranty and itemCondition is not None:
-
 
10701
        if itemCondition == 'DAMAGED':
-
 
10702
            query = query.filter(LineItem.warranty_expiry_timestamp<=datetime.datetime.now())
-
 
10703
        elif itemCondition == 'DEFECTIVE':
-
 
10704
            query = query.filter(LineItem.damaged_expiry_timestamp<=datetime.datetime.now())
-
 
10705
            
-
 
10706
    orders = query.order_by(desc(Order.delivery_timestamp)).all()
-
 
10707
    return orders
-
 
10708
        
-
 
10709
def get_eligible_return_orders_for_pickup(customerId):
10655
    session.commit()  
10710
    return ReturnOrderInfo.query.filter(ReturnOrderInfo.returnTransaction.customer_id==customerId).filter(or_(ReturnOrderInfo.returnStatus==OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_REQUEST_RAISED], ReturnOrderInfo.returnStatus==OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED])).all()     
10656
 
10711
 
10657
if __name__ == '__main__':
10712
if __name__ == '__main__':
10658
    print get_orders_by_mobile_number("9650889334")
10713
    print get_orders_by_mobile_number("9650889334")