| Line 10056... |
Line 10056... |
| 10056 |
returnOrderInfo.warehouse_id = order.warehouse_id
|
10056 |
returnOrderInfo.warehouse_id = order.warehouse_id
|
| 10057 |
session.commit()
|
10057 |
session.commit()
|
| 10058 |
|
10058 |
|
| 10059 |
return returnOrderInfo
|
10059 |
return returnOrderInfo
|
| 10060 |
|
10060 |
|
| 10061 |
def create_return_order_info(returnInfo, order=None):
|
10061 |
def create_return_order_info(returnInfo, order=None, itemCondition="DAMAGED"):
|
| 10062 |
returnOrderInfo = ReturnOrderInfo()
|
10062 |
returnOrderInfo = ReturnOrderInfo()
|
| 10063 |
returnOrderInfo.orderId = returnInfo.orderId
|
10063 |
returnOrderInfo.orderId = returnInfo.orderId
|
| 10064 |
returnOrderInfo.lineItemId = order.lineitems[0].id
|
10064 |
returnOrderInfo.lineItemId = order.lineitems[0].id
|
| 10065 |
returnOrderInfo.returnQuantity = returnInfo.returnQuantity
|
10065 |
returnOrderInfo.returnQuantity = returnInfo.returnQuantity
|
| 10066 |
returnOrderInfo.createdAt = datetime.datetime.now()
|
10066 |
returnOrderInfo.createdAt = datetime.datetime.now()
|
| Line 10166... |
Line 10166... |
| 10166 |
all_return_orders_as_per_warehouse = ReturnOrderInfo.query.filter(ReturnOrderInfo.processedAt==None).filter(ReturnOrderInfo.warehouse_id <= warehouseId).all()
|
10166 |
all_return_orders_as_per_warehouse = ReturnOrderInfo.query.filter(ReturnOrderInfo.processedAt==None).filter(ReturnOrderInfo.warehouse_id <= warehouseId).all()
|
| 10167 |
if all_return_orders_as_per_warehouse is None:
|
10167 |
if all_return_orders_as_per_warehouse is None:
|
| 10168 |
all_return_orders_as_per_warehouse = []
|
10168 |
all_return_orders_as_per_warehouse = []
|
| 10169 |
return all_return_orders_as_per_warehouse
|
10169 |
return all_return_orders_as_per_warehouse
|
| 10170 |
|
10170 |
|
| 10171 |
def create_return_transaction(returnTransaction):
|
10171 |
def create_return_transaction(returnTransaction, itemCondition, overrideWarranty):
|
| 10172 |
t_orders = returnTransaction.returnOrders
|
10172 |
t_orders = returnTransaction.returnOrders
|
| 10173 |
if not t_orders:
|
10173 |
if not t_orders:
|
| 10174 |
raise TransactionServiceException(101, "Return Orders missing from the transaction")
|
10174 |
raise TransactionServiceException(101, "Return Orders missing from the transaction")
|
| 10175 |
|
10175 |
|
| - |
|
10176 |
returnOrdersMap = {}
|
| - |
|
10177 |
for tOrder in t_orders:
|
| - |
|
10178 |
returnOrdersMap[tOrder.orderId] = tOrder.returnQuantity
|
| - |
|
10179 |
|
| - |
|
10180 |
if validate_return_transaction(returnTransaction.customer_id, returnOrdersMap, itemCondition, overrideWarranty):
|
| 10176 |
returnTxn = ReturnTransaction()
|
10181 |
returnTxn = ReturnTransaction()
|
| 10177 |
singleOrder = get_order(t_orders[0].orderId)
|
10182 |
singleOrder = get_order(t_orders[0].orderId)
|
| 10178 |
returnTxn.customer_id = returnTransaction.customer_id
|
10183 |
returnTxn.customer_id = returnTransaction.customer_id
|
| 10179 |
returnTxn.status = ReturnTransactionStatus._VALUES_TO_NAMES[ReturnTransactionStatus.INITIATED]
|
10184 |
returnTxn.status = ReturnTransactionStatus._VALUES_TO_NAMES[ReturnTransactionStatus.INITIATED]
|
| 10180 |
returnTxn.customer_email = singleOrder.customer_email
|
10185 |
returnTxn.customer_email = singleOrder.customer_email
|
| 10181 |
returnTxn.customer_name = singleOrder.customer_name
|
10186 |
returnTxn.customer_name = singleOrder.customer_name
|
| 10182 |
returnTxn.createdAt = datetime.datetime.now()
|
10187 |
returnTxn.createdAt = datetime.datetime.now()
|
| 10183 |
returnTxn.address_id = returnTransaction.address_id
|
10188 |
returnTxn.address_id = returnTransaction.address_id
|
| 10184 |
returnTxn.ticketId = returnTransaction.ticketId
|
- |
|
| 10185 |
returnTxn.customerAddress = returnTransaction.customerAddress
|
10189 |
returnTxn.customerAddress = returnTransaction.customerAddress
|
| 10186 |
returnTxn.customerCity = returnTransaction.customerCity
|
10190 |
returnTxn.customerCity = returnTransaction.customerCity
|
| 10187 |
returnTxn.customerPhone = returnTransaction.customerPhone
|
10191 |
returnTxn.customerPhone = returnTransaction.customerPhone
|
| 10188 |
returnTxn.customerState = returnTransaction.customerState
|
10192 |
returnTxn.customerState = returnTransaction.customerState
|
| 10189 |
returnTxn.pincode = returnTransaction.pincode
|
10193 |
returnTxn.pincode = returnTransaction.pincode
|
| 10190 |
for t_order in t_orders:
|
10194 |
for t_order in t_orders:
|
| 10191 |
order = get_order(t_order.orderId)
|
10195 |
order = get_order(t_order.orderId)
|
| 10192 |
returnOrder = create_return_order_info(t_order, order)
|
10196 |
returnOrder = create_return_order_info(t_order, order, itemCondition)
|
| 10193 |
returnOrder.returnTransaction = returnTxn
|
10197 |
returnOrder.returnTransaction = returnTxn
|
| 10194 |
lineitem = order.lineitems[0]
|
10198 |
lineitem = order.lineitems[0]
|
| 10195 |
lineitem.returnQty = lineitem.returnQty + returnOrder.returnQuantity
|
10199 |
lineitem.returnQty = lineitem.returnQty + returnOrder.returnQuantity
|
| 10196 |
order.status = OrderStatus.PARTIAL_RETURN_IN_PROCESS
|
10200 |
order.status = OrderStatus.PARTIAL_RETURN_IN_PROCESS
|
| 10197 |
order.statusDescription = "Partial Return In Process"
|
10201 |
order.statusDescription = "Partial Return In Process"
|
| 10198 |
session.commit()
|
- |
|
| 10199 |
|
10202 |
|
| 10200 |
try:
|
10203 |
try:
|
| 10201 |
crmServiceClient = CRMClient().get_client()
|
10204 |
crmServiceClient = CRMClient().get_client()
|
| 10202 |
ticket =Ticket()
|
10205 |
ticket =Ticket()
|
| 10203 |
activity = Activity()
|
10206 |
activity = Activity()
|
| 10204 |
|
10207 |
|
| 10205 |
description = "Creating Ticket for return requested by customer:- " + str(returnTransaction.customer_name) + " Return Transaction Id:- "+ str(returnTxn.id)
|
10208 |
description = "Creating Ticket for return requested by customer:- " + str(returnTransaction.customer_name) + " Return Transaction Id:- "+ str(returnTxn.id)
|
| 10206 |
ticket.creatorId = 1
|
10209 |
ticket.creatorId = 1
|
| 10207 |
ticket.assigneeId = 34
|
10210 |
ticket.assigneeId = 34
|
| 10208 |
ticket.category = TicketCategory.RETURN_FORM
|
10211 |
ticket.category = TicketCategory.RETURN_FORM
|
| 10209 |
ticket.priority = TicketPriority.HIGH
|
10212 |
ticket.priority = TicketPriority.HIGH
|
| 10210 |
ticket.status = TicketStatus.OPEN
|
10213 |
ticket.status = TicketStatus.OPEN
|
| 10211 |
ticket.description = description
|
10214 |
ticket.description = description
|
| 10212 |
ticket.orderId = order.id
|
10215 |
ticket.orderId = order.id
|
| 10213 |
|
10216 |
|
| 10214 |
activity.creatorId = 1
|
10217 |
activity.creatorId = 1
|
| 10215 |
activity.ticketAssigneeId = ticket.assigneeId
|
10218 |
activity.ticketAssigneeId = ticket.assigneeId
|
| 10216 |
activity.type = ActivityType.OTHER
|
10219 |
activity.type = ActivityType.OTHER
|
| 10217 |
activity.description = description
|
10220 |
activity.description = description
|
| 10218 |
activity.ticketCategory = ticket.category
|
10221 |
activity.ticketCategory = ticket.category
|
| 10219 |
activity.ticketDescription = ticket.description
|
10222 |
activity.ticketDescription = ticket.description
|
| 10220 |
activity.ticketPriority = ticket.priority
|
10223 |
activity.ticketPriority = ticket.priority
|
| 10221 |
activity.ticketStatus = ticket.status
|
10224 |
activity.ticketStatus = ticket.status
|
| 10222 |
|
10225 |
|
| 10223 |
ticket.customerId= returnTransaction.customer_id
|
10226 |
ticket.customerId= returnTransaction.customer_id
|
| 10224 |
ticket.customerEmailId = returnTransaction.customer_email
|
10227 |
ticket.customerEmailId = returnTransaction.customer_email
|
| 10225 |
ticket.customerMobileNumber = returnTransaction.customerPhone
|
10228 |
ticket.customerMobileNumber = returnTransaction.customerPhone
|
| 10226 |
ticket.customerName = returnTransaction.customer_name
|
10229 |
ticket.customerName = returnTransaction.customer_name
|
| 10227 |
activity.customerId = ticket.customerId
|
10230 |
activity.customerId = ticket.customerId
|
| 10228 |
activity.customerEmailId = returnTransaction.customer_email
|
10231 |
activity.customerEmailId = returnTransaction.customer_email
|
| 10229 |
activity.customerMobileNumber = returnTransaction.customerPhone
|
10232 |
activity.customerMobileNumber = returnTransaction.customerPhone
|
| 10230 |
activity.customerName = returnTransaction.customer_name
|
10233 |
activity.customerName = returnTransaction.customer_name
|
| 10231 |
|
10234 |
|
| 10232 |
crmServiceClient.insertTicket(ticket, activity)
|
10235 |
returnTxn.ticketId = crmServiceClient.insertTicket(ticket, activity)
|
| 10233 |
|
10236 |
|
| 10234 |
except:
|
10237 |
except:
|
| 10235 |
print "Ticket for RTO Refund is not created."
|
10238 |
print "Ticket for RTO Refund is not created."
|
| - |
|
10239 |
session.commit()
|
| 10236 |
return returnTxn.id
|
10240 |
return returnTxn.id
|
| - |
|
10241 |
return 0
|
| 10237 |
|
10242 |
|
| 10238 |
def get_return_transactions_for_customer(statusList, customerMobile, customerEmail, returnTransactionId, customer_id):
|
10243 |
def get_return_transactions_for_customer(statusList, customerMobile, customerEmail, returnTransactionId, customer_id):
|
| 10239 |
query = ReturnTransaction.query
|
10244 |
query = ReturnTransaction.query
|
| 10240 |
if statusList is not None and len(statusList) >0:
|
10245 |
if statusList is not None and len(statusList) >0:
|
| 10241 |
statuses = []
|
10246 |
statuses = []
|
| Line 10390... |
Line 10395... |
| 10390 |
return True
|
10395 |
return True
|
| 10391 |
else:
|
10396 |
else:
|
| 10392 |
session.commit()
|
10397 |
session.commit()
|
| 10393 |
return True
|
10398 |
return True
|
| 10394 |
|
10399 |
|
| 10395 |
def communicate_pickup_details_to_customer(returnPickupRequest):
|
10400 |
def communicate_pickup_details_to_customer(returnPickupRequest, returnOrders):
|
| 10396 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all()
|
10401 |
returnTxn = returnOrders[0].returnTransaction
|
| 10397 |
subject = 'Pickup details'
|
10402 |
subject = 'Pickup details for '+str(returnTxn.id)
|
| 10398 |
filename = "/PickupDetails/" + str(returnPickupRequest.pickupRequestNo) +".pdf"
|
10403 |
filename = "/PickupDetails/" + str(returnPickupRequest.pickupRequestNo) +".pdf"
|
| 10399 |
|
10404 |
|
| 10400 |
try:
|
10405 |
try:
|
| 10401 |
inventory_client = InventoryClient().get_client()
|
10406 |
inventory_client = InventoryClient().get_client()
|
| 10402 |
warehouse = inventory_client.getWarehouse(returnOrders[0].warehouse_id)
|
10407 |
warehouse = inventory_client.getWarehouse(returnOrders[0].warehouse_id)
|
| 10403 |
|
10408 |
|
| 10404 |
logistics_client = LogisticsClient().get_client()
|
10409 |
logistics_client = LogisticsClient().get_client()
|
| 10405 |
provider = logistics_client.getProvider(returnPickupRequest.logisticsProviderId)
|
10410 |
provider = logistics_client.getProvider(returnPickupRequest.logisticsProviderId)
|
| 10406 |
provider_name = provider.name
|
10411 |
provider_name = provider.name
|
| 10407 |
|
10412 |
|
| 10408 |
returnTxn = returnOrders[0].returnTransaction
|
- |
|
| 10409 |
to_addr = returnTxn.customer_email
|
10413 |
to_addr = returnTxn.customer_email
|
| 10410 |
promised_pickup_time = returnPickupRequest.promised_pickup_timestamp.date().strftime("%d-%B-%Y (%A)")
|
10414 |
promised_pickup_time = returnPickupRequest.promised_pickup_timestamp.date().strftime("%d-%B-%Y (%A)")
|
| 10411 |
customer_address = returnTxn.customer_name +"\n" + returnTxn.customerAddress +"\n"
|
10415 |
customer_address = returnTxn.customer_name +"\n" + returnTxn.customerAddress +"\n"
|
| 10412 |
customer_address = customer_address + returnTxn.customerCity + "\n"
|
10416 |
customer_address = customer_address + returnTxn.customerCity + "\n"
|
| 10413 |
customer_address = customer_address + returnTxn.customerState + "\n"
|
10417 |
customer_address = customer_address + returnTxn.customerState + "\n"
|
| Line 10547... |
Line 10551... |
| 10547 |
else:
|
10551 |
else:
|
| 10548 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED]
|
10552 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED]
|
| 10549 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_SCHEDULED:
|
10553 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_SCHEDULED:
|
| 10550 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
10554 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
| 10551 |
returnPickupReq.promised_pickup_timestamp = datetime.datetime.now()+timedelta(days=2)
|
10555 |
returnPickupReq.promised_pickup_timestamp = datetime.datetime.now()+timedelta(days=2)
|
| - |
|
10556 |
returnOrdersMap = {}
|
| - |
|
10557 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all()
|
| - |
|
10558 |
for returnOrder in returnOrders:
|
| - |
|
10559 |
returnTxn = returnOrders[0].returnTransaction
|
| - |
|
10560 |
if returnOrdersMap.has_key(returnTxn.address_id):
|
| - |
|
10561 |
retOrders = returnOrdersMap.get(returnTxn.address_id)
|
| - |
|
10562 |
retOrders.append(returnOrder)
|
| - |
|
10563 |
returnOrdersMap[returnTxn.address_id] = retOrders
|
| - |
|
10564 |
else:
|
| - |
|
10565 |
retOrders = []
|
| - |
|
10566 |
retOrders.append(returnOrder)
|
| - |
|
10567 |
returnOrdersMap[returnTxn.address_id] = retOrders
|
| - |
|
10568 |
for returnOrdersList in returnOrdersMap.values():
|
| 10552 |
try:
|
10569 |
try:
|
| 10553 |
communicate_pickup_details_to_customer(returnPickupReq)
|
10570 |
communicate_pickup_details_to_customer(returnPickupReq, returnOrdersList)
|
| 10554 |
except:
|
10571 |
except:
|
| 10555 |
print "Customer Communication Failed for the pickup Information"
|
10572 |
print "Customer Communication Failed for the pickup Information"
|
| 10556 |
if returnPickupRequest.pickedUpAt:
|
10573 |
if returnPickupRequest.pickedUpAt:
|
| 10557 |
returnPickupReq.pickedUpAt = to_py_date(returnPickupRequest.pickedUpAt)
|
10574 |
returnPickupReq.pickedUpAt = to_py_date(returnPickupRequest.pickedUpAt)
|
| 10558 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_IN_TRANSIT]
|
10575 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_IN_TRANSIT]
|
| 10559 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
10576 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
| 10560 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]:
|
10577 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]:
|
| Line 10756... |
Line 10773... |
| 10756 |
return orders
|
10773 |
return orders
|
| 10757 |
|
10774 |
|
| 10758 |
def get_eligible_return_orders_for_pickup(customerId):
|
10775 |
def get_eligible_return_orders_for_pickup(customerId):
|
| 10759 |
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()
|
10776 |
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()
|
| 10760 |
|
10777 |
|
| - |
|
10778 |
def validate_return_transaction(customerId, returnOrdersMap, itemCondition, overrideWarranty):
|
| - |
|
10779 |
eligibleOrders = get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty)
|
| - |
|
10780 |
|
| - |
|
10781 |
ordersMap = {}
|
| - |
|
10782 |
for order in eligibleOrders:
|
| - |
|
10783 |
ordersMap[order.id] = order.lineitems[0].quantity - order.lineitems[0].returnQty
|
| - |
|
10784 |
|
| - |
|
10785 |
for orderId, returnOrderQty in returnOrdersMap.items():
|
| - |
|
10786 |
if returnOrderQty > ordersMap.get(orderId):
|
| - |
|
10787 |
return False
|
| - |
|
10788 |
return True
|
| - |
|
10789 |
|
| 10761 |
if __name__ == '__main__':
|
10790 |
if __name__ == '__main__':
|
| 10762 |
print get_orders_by_mobile_number("9650889334")
|
10791 |
print get_orders_by_mobile_number("9650889334")
|