| 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")
|