| Line 10146... |
Line 10146... |
| 10146 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
10146 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
| 10147 |
if not returnOrder:
|
10147 |
if not returnOrder:
|
| 10148 |
return None
|
10148 |
return None
|
| 10149 |
return returnOrder
|
10149 |
return returnOrder
|
| 10150 |
|
10150 |
|
| - |
|
10151 |
def refund_return_order(returnOrderInfo, attrList):
|
| - |
|
10152 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderInfo.id)
|
| - |
|
10153 |
if returnOrder.returnStatus not in (OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_INVALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_LOST_IN_TRANSIT],OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_DAMAGED] ,OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_LOST_IN_TRANSIT], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_UNUSABLE], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_USABLE],OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_DAMAGED]):
|
| - |
|
10154 |
print "************returnig false staus check"
|
| - |
|
10155 |
return False
|
| - |
|
10156 |
if returnOrder.returnAction == ReturnAction.REFUND:
|
| - |
|
10157 |
returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_IN_PROCESS]
|
| - |
|
10158 |
else:
|
| - |
|
10159 |
returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_ORDER_CREATED]
|
| - |
|
10160 |
detailsMap = {}
|
| - |
|
10161 |
if returnOrder.refundedAt or returnOrder.replacementOrderId:
|
| - |
|
10162 |
raise TransactionServiceException(145, "Refund/Replacemet already in Process for this return order")
|
| - |
|
10163 |
if returnOrder.receivedQuantity != returnOrder.returnQuantity:
|
| - |
|
10164 |
raise TransactionServiceException(145, "Quantity mismatch Return vs Received")
|
| - |
|
10165 |
detailsMap['RefundReason'] = returnOrderInfo.refundReason
|
| - |
|
10166 |
detailsMap['RefundType'] = returnOrderInfo.refundType
|
| - |
|
10167 |
detailsMap['RefundedBy'] = returnOrderInfo.refundedBy
|
| - |
|
10168 |
detailsMap['RefundAmount'] = returnOrderInfo.refundAmount
|
| - |
|
10169 |
detailsMap['RefundDescription'] = returnOrderInfo.refundDescription
|
| - |
|
10170 |
print detailsMap
|
| - |
|
10171 |
print "*************************8"
|
| - |
|
10172 |
if(not __process_return_order(returnOrder, detailsMap)):
|
| - |
|
10173 |
raise TransactionServiceException(145, "Issue in __process_return_order")
|
| - |
|
10174 |
returnOrder.processedAt = datetime.datetime.now()
|
| - |
|
10175 |
__markReturnTransactionAsProcessed(returnOrder.returnTransaction_id)
|
| - |
|
10176 |
set_order_attributes(returnOrder.orderId, attrList)
|
| - |
|
10177 |
return True
|
| - |
|
10178 |
|
| - |
|
10179 |
def __markReturnTransactionAsProcessed(returnTransactionId):
|
| - |
|
10180 |
returnTransaction = ReturnTransaction.get_by(id=returnTransactionId)
|
| - |
|
10181 |
if returnTransaction is None:
|
| - |
|
10182 |
raise TransactionServiceException(101, "No Return Transaction Found")
|
| - |
|
10183 |
unprocessedOrders = []
|
| - |
|
10184 |
for retOrder in returnTransaction.returnOrders:
|
| - |
|
10185 |
if retOrder.reshippedAt is None and retOrder.refundedAt is None:
|
| - |
|
10186 |
unprocessedOrders.append(retOrder)
|
| - |
|
10187 |
if len(unprocessedOrders) == 0:
|
| - |
|
10188 |
returnTransaction.processedAt = datetime.datetime.now()
|
| - |
|
10189 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[ReturnTransactionStatus.PROCESSED]
|
| - |
|
10190 |
session.commit()
|
| - |
|
10191 |
|
| - |
|
10192 |
|
| 10151 |
def get_return_orders_info_map(order_ids=None, statuses=None):
|
10193 |
def get_return_orders_info_map(order_ids=None, statuses=None):
|
| 10152 |
returnOrdersInfoQuery = ReturnOrderInfo.query
|
10194 |
returnOrdersInfoQuery = ReturnOrderInfo.query
|
| 10153 |
if order_ids is not None and len(order_ids)>0:
|
10195 |
if order_ids is not None and len(order_ids)>0:
|
| 10154 |
returnOrdersInfoQuery = returnOrdersInfoQuery.filter(ReturnOrderInfo.orderId.in_(tuple(order_ids)))
|
10196 |
returnOrdersInfoQuery = returnOrdersInfoQuery.filter(ReturnOrderInfo.orderId.in_(tuple(order_ids)))
|
| 10155 |
if statuses is not None:
|
10197 |
if statuses is not None:
|
| Line 10320... |
Line 10362... |
| 10320 |
|
10362 |
|
| 10321 |
def get_return_transaction(transaction_id):
|
10363 |
def get_return_transaction(transaction_id):
|
| 10322 |
transaction = ReturnTransaction.get_by(id=transaction_id)
|
10364 |
transaction = ReturnTransaction.get_by(id=transaction_id)
|
| 10323 |
if not transaction:
|
10365 |
if not transaction:
|
| 10324 |
raise TransactionServiceException(108, "no such transaction")
|
10366 |
raise TransactionServiceException(108, "no such transaction")
|
| 10325 |
|
- |
|
| 10326 |
return transaction
|
10367 |
return transaction
|
| 10327 |
|
10368 |
|
| 10328 |
def get_return_orders_for_return_transaction(returnTransactionId):
|
10369 |
def get_return_orders_for_return_transaction(returnTransactionId):
|
| 10329 |
returnOrders = ReturnOrderInfo.query.filter_by(returnTransactionId=returnTransactionId).all()
|
10370 |
returnOrders = ReturnOrderInfo.query.filter_by(returnTransactionId=returnTransactionId).all()
|
| 10330 |
|
10371 |
|
| Line 10555... |
Line 10596... |
| 10555 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
10596 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
| 10556 |
elif new_status == ReturnTransactionStatus.PROCESSED:
|
10597 |
elif new_status == ReturnTransactionStatus.PROCESSED:
|
| 10557 |
if returnOrdersIds and len(returnOrdersIds)>0:
|
10598 |
if returnOrdersIds and len(returnOrdersIds)>0:
|
| 10558 |
unprocessedOrders = []
|
10599 |
unprocessedOrders = []
|
| 10559 |
for retOrder in returnTransaction.returnOrders:
|
10600 |
for retOrder in returnTransaction.returnOrders:
|
| 10560 |
if retOrder.reshippedAt is None and retOrder.refundedAt is None:
|
10601 |
if retOrder.reshippedAt is None or retOrder.refundedAt is None:
|
| 10561 |
unprocessedOrders.append(retOrder)
|
10602 |
unprocessedOrders.append(retOrder)
|
| 10562 |
if len(returnOrdersIds) < len(returnTransaction.returnOrders):
|
10603 |
if len(returnOrdersIds) < len(returnTransaction.returnOrders):
|
| 10563 |
if len(returnOrdersIds) == len(unprocessedOrders):
|
10604 |
if len(returnOrdersIds) == len(unprocessedOrders):
|
| 10564 |
for ret_Order in unprocessedOrders:
|
10605 |
for ret_Order in unprocessedOrders:
|
| 10565 |
if ret_Order.returnAction == ReturnAction.REFUND:
|
10606 |
if ret_Order.returnAction == ReturnAction.REFUND:
|
| Line 10575... |
Line 10616... |
| 10575 |
else:
|
10616 |
else:
|
| 10576 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_ORDER_CREATED]
|
10617 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_ORDER_CREATED]
|
| 10577 |
returnTransaction.processedAt = datetime.datetime.now()
|
10618 |
returnTransaction.processedAt = datetime.datetime.now()
|
| 10578 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
10619 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
| 10579 |
for returnOrderId in returnOrdersIds:
|
10620 |
for returnOrderId in returnOrdersIds:
|
| 10580 |
__process_return_order(get_return_order_info(returnOrderId), returnOrdersAttrMap.get(returnOrderId))
|
10621 |
__process_return_order(get_return_order_info(returnOrderId), returnOrdersAttrMap.get(returnOrderId))
|
| - |
|
10622 |
|
| - |
|
10623 |
elif new_status == ReturnTransactionStatus.COMPLETED:
|
| - |
|
10624 |
mark_return_transaction_complete(returnTransaction.id)
|
| - |
|
10625 |
|
| - |
|
10626 |
elif new_status == ReturnTransactionStatus.CLOSED:
|
| 10581 |
elif new_status == ReturnTransactionStatus.CLOSED and mark_return_transaction_complete(returnTransaction.id):
|
10627 |
if not returnTransaction.status == ReturnTransactionStatus._VALUES_TO_NAMES[ReturnTransactionStatus.COMPLETED]:
|
| - |
|
10628 |
raise
|
| 10582 |
returnTransaction.closedAt = datetime.datetime.now()
|
10629 |
returnTransaction.closedAt = datetime.datetime.now()
|
| 10583 |
for ret_Order in returnTransaction.returnOrders:
|
10630 |
for ret_Order in returnTransaction.returnOrders:
|
| 10584 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.CLOSED]
|
10631 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.CLOSED]
|
| 10585 |
__communicate_customer_for_closed_transaction(returnTransaction)
|
10632 |
__communicate_customer_for_closed_transaction(returnTransaction)
|
| 10586 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
10633 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
| 10587 |
|
10634 |
|
| 10588 |
session.commit()
|
10635 |
session.commit()
|
| 10589 |
return True
|
10636 |
return True
|
| - |
|
10637 |
|
| 10590 |
|
10638 |
|
| 10591 |
def create_return_pickup_request(returnOrderIds, providerId):
|
10639 |
def create_return_pickup_request(returnOrderIds):
|
| 10592 |
returnPickupRequest = ReturnPickupRequest()
|
10640 |
returnPickupRequest = ReturnPickupRequest()
|
| 10593 |
returnPickupRequest.logisticsProviderId = providerId
|
- |
|
| 10594 |
returnPickupRequest.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_REQUESTED]
|
10641 |
returnPickupRequest.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PENDING]
|
| 10595 |
|
10642 |
|
| 10596 |
if len(returnOrderIds) > 0:
|
10643 |
if len(returnOrderIds) > 0:
|
| 10597 |
for returnOrderId in returnOrderIds:
|
10644 |
for returnOrderId in returnOrderIds:
|
| 10598 |
returnOrder = get_return_order_info(returnOrderId)
|
10645 |
returnOrder = get_return_order_info(returnOrderId)
|
| 10599 |
returnOrder.logisticsRequestId = returnPickupRequest.id
|
10646 |
returnOrder.logisticsRequestId = returnPickupRequest.id
|
| 10600 |
session.commit()
|
10647 |
session.commit()
|
| 10601 |
return True
|
10648 |
return returnPickupRequest.id
|
| 10602 |
|
10649 |
|
| 10603 |
return False
|
10650 |
return 0
|
| 10604 |
|
10651 |
|
| 10605 |
def update_return_pickup_request(returnPickupRequest):
|
10652 |
def update_return_pickup_request(returnPickupRequest):
|
| - |
|
10653 |
print returnPickupRequest
|
| 10606 |
try:
|
10654 |
try:
|
| 10607 |
returnPickupReq = ReturnPickupRequest.get_by(id=returnPickupRequest.id)
|
10655 |
returnPickupReq = ReturnPickupRequest.get_by(id=returnPickupRequest.id)
|
| - |
|
10656 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_REQUESTED:
|
| - |
|
10657 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
| - |
|
10658 |
|
| 10608 |
if returnPickupRequest.pickupRequestNo:
|
10659 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_CONFIRMED:
|
| - |
|
10660 |
returnPickupReq.logisticsProviderId = returnPickupRequest.logisticsProviderId
|
| 10609 |
returnPickupReq.pickupRequestNo = returnPickupRequest.pickupRequestNo
|
10661 |
returnPickupReq.pickupRequestNo = returnPickupRequest.pickupRequestNo
|
| 10610 |
returnPickupReq.confirmedAt = datetime.datetime.now()
|
10662 |
returnPickupReq.confirmedAt = datetime.datetime.now()
|
| 10611 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_CONFIRMED]
|
10663 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
| 10612 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
10664 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
| 10613 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED]:
|
10665 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED]:
|
| 10614 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]
|
10666 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]
|
| 10615 |
else:
|
10667 |
else:
|
| 10616 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED]
|
10668 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED]
|
| 10617 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_SCHEDULED:
|
10669 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_SCHEDULED:
|
| 10618 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
10670 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
| 10619 |
returnPickupReq.promised_pickup_timestamp = datetime.datetime.now()+timedelta(days=2)
|
10671 |
returnPickupReq.promised_pickup_timestamp = to_py_date(returnPickupRequest.promised_pickup_timestamp)
|
| 10620 |
returnOrdersMap = {}
|
10672 |
returnOrdersMap = {}
|
| 10621 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all()
|
10673 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all()
|
| 10622 |
for returnOrder in returnOrders:
|
10674 |
for returnOrder in returnOrders:
|
| 10623 |
returnTxn = returnOrders[0].returnTransaction
|
10675 |
returnTxn = returnOrders[0].returnTransaction
|
| 10624 |
if returnOrdersMap.has_key(returnTxn.address_id):
|
10676 |
if returnOrdersMap.has_key(returnTxn.address_id):
|
| Line 10632... |
Line 10684... |
| 10632 |
for returnOrdersList in returnOrdersMap.values():
|
10684 |
for returnOrdersList in returnOrdersMap.values():
|
| 10633 |
try:
|
10685 |
try:
|
| 10634 |
communicate_pickup_details_to_customer(returnPickupReq, returnOrdersList)
|
10686 |
communicate_pickup_details_to_customer(returnPickupReq, returnOrdersList)
|
| 10635 |
except:
|
10687 |
except:
|
| 10636 |
print "Customer Communication Failed for the pickup Information"
|
10688 |
print "Customer Communication Failed for the pickup Information"
|
| 10637 |
if returnPickupRequest.pickedUpAt:
|
10689 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_IN_TRANSIT:
|
| 10638 |
returnPickupReq.pickedUpAt = to_py_date(returnPickupRequest.pickedUpAt)
|
10690 |
returnPickupReq.pickedUpAt = to_py_date(returnPickupRequest.pickedUpAt)
|
| 10639 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_IN_TRANSIT]
|
10691 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_IN_TRANSIT]
|
| 10640 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
10692 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
| 10641 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]:
|
10693 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]:
|
| 10642 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RETURN_IN_TRANSIT]
|
10694 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RETURN_IN_TRANSIT]
|
| 10643 |
else:
|
10695 |
else:
|
| - |
|
10696 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RETURN_IN_TRANSIT]
|
| - |
|
10697 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_RECEIVED:
|
| - |
|
10698 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_RECEIVED]
|
| - |
|
10699 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
| 10644 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RETURN_IN_TRANSIT]
|
10700 |
if returnOrder.returnStatus not in (OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_INVALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_LOST_IN_TRANSIT], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_DAMAGED],OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID],OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_LOST_IN_TRANSIT], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_UNUSABLE], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_USABLE], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_DAMAGED]):
|
| - |
|
10701 |
return False
|
| - |
|
10702 |
returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.QUALITY_CHECK]
|
| 10645 |
session.commit()
|
10703 |
session.commit()
|
| 10646 |
return True
|
10704 |
return True
|
| 10647 |
except:
|
10705 |
except:
|
| - |
|
10706 |
traceback.print_exc()
|
| 10648 |
return False
|
10707 |
return False
|
| 10649 |
|
10708 |
|
| 10650 |
def receive_return_pickup(returnOrdersMap, req_id):
|
10709 |
def receive_return_pickup(returnOrdersMap, req_id):
|
| 10651 |
returnPickupReq = ReturnPickupRequest.get_by(id=req_id)
|
10710 |
#returnPickupReq = ReturnPickupRequest.get_by(id=req_id)
|
| 10652 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==req_id).all()
|
10711 |
#returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==req_id).all()
|
| 10653 |
if len(returnOrders)!=len(returnOrdersMap.keys()):
|
10712 |
#if len(returnOrders)!=len(returnOrdersMap.keys()):
|
| 10654 |
raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
10713 |
# raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
| - |
|
10714 |
|
| 10655 |
for returnOrder in returnOrders:
|
10715 |
for returnOrderId in returnOrdersMap.iterkeys():
|
| - |
|
10716 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
| - |
|
10717 |
if returnOrder is None:
|
| - |
|
10718 |
raise TransactionServiceException(101, "Return order missing")
|
| 10656 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
10719 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
| 10657 |
receiveCondition = ReceivedReturnType._NAMES_TO_VALUES[returnOrderDetails.get('ReceiveCondition')]
|
10720 |
receiveCondition = ReceivedReturnType._NAMES_TO_VALUES[returnOrderDetails.get('ReceiveCondition')]
|
| 10658 |
quantity = int(returnOrderDetails.get('Quantity'))
|
10721 |
quantity = int(returnOrderDetails.get('Quantity'))
|
| - |
|
10722 |
returnOrder.receivedReturnType = receiveCondition
|
| 10659 |
|
10723 |
returnOrder.receivedReturnType = receiveCondition
|
| 10660 |
if returnOrder.returnStatus in [OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_PICKUP_CONFIRMED], OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_RETURN_IN_TRANSIT]]:
|
10724 |
if returnOrder.returnStatus in [OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RETURN_IN_TRANSIT]]:
|
| 10661 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
10725 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
| 10662 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_RECEIVED_PRESTINE]
|
10726 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_PRESTINE]
|
| 10663 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
10727 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
| 10664 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_RECEIVED_DAMAGED]
|
10728 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_DAMAGED]
|
| 10665 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
10729 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
| 10666 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_LOST_IN_TRANSIT]
|
10730 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_LOST_IN_TRANSIT]
|
| 10667 |
returnOrder.receivedAt = datetime.datetime.now()
|
10731 |
returnOrder.receivedAt = datetime.datetime.now()
|
| 10668 |
returnOrder.receivedQuantity = quantity
|
10732 |
returnOrder.receivedQuantity = quantity
|
| 10669 |
elif returnOrder.returnStatus in [OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_PICKUP_CONFIRMED], OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_RETURN_IN_TRANSIT]]:
|
10733 |
elif returnOrder.returnStatus in [OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RETURN_IN_TRANSIT]]:
|
| 10670 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
10734 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
| 10671 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_RECEIVED_PRESTINE]
|
10735 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_PRESTINE]
|
| 10672 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
10736 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
| 10673 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_RECEIVED_DAMAGED]
|
10737 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_DAMAGED]
|
| 10674 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
10738 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
| 10675 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_LOST_IN_TRANSIT]
|
10739 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_LOST_IN_TRANSIT]
|
| 10676 |
returnOrder.receivedAt = datetime.datetime.now()
|
10740 |
returnOrder.receivedAt = datetime.datetime.now()
|
| 10677 |
returnOrder.receivedQuantity = quantity
|
10741 |
returnOrder.receivedQuantity = quantity
|
| 10678 |
else:
|
10742 |
else:
|
| 10679 |
return False
|
10743 |
return False
|
| 10680 |
|
10744 |
|
| Line 10682... |
Line 10746... |
| 10682 |
"RET_RECEIVED_PRESTINE" : ScanType.SALE_RET,
|
10746 |
"RET_RECEIVED_PRESTINE" : ScanType.SALE_RET,
|
| 10683 |
"RET_RECEIVED_DAMAGED" : ScanType.SALE_RET_UNUSABLE,
|
10747 |
"RET_RECEIVED_DAMAGED" : ScanType.SALE_RET_UNUSABLE,
|
| 10684 |
"RET_LOST_IN_TRANSIT" : ScanType.LOST_IN_TRANSIT,
|
10748 |
"RET_LOST_IN_TRANSIT" : ScanType.LOST_IN_TRANSIT,
|
| 10685 |
"DOA_RECEIVED_PRESTINE" : ScanType.DOA_IN,
|
10749 |
"DOA_RECEIVED_PRESTINE" : ScanType.DOA_IN,
|
| 10686 |
"DOA_RECEIVED_DAMAGED" : ScanType.DOA_IN,
|
10750 |
"DOA_RECEIVED_DAMAGED" : ScanType.DOA_IN,
|
| 10687 |
"DOA_LOST_IN_TRANSI" : ScanType.LOST_IN_TRANSIT
|
10751 |
"DOA_LOST_IN_TRANSIT" : ScanType.LOST_IN_TRANSIT
|
| 10688 |
}
|
10752 |
}
|
| 10689 |
inventoryClient = InventoryClient().get_client()
|
10753 |
#inventoryClient = InventoryClient().get_client()
|
| 10690 |
warehouse = inventoryClient.getWarehouse(returnOrders[0].warehouse_id)
|
10754 |
#warehouse = inventoryClient.getWarehouse(returnOrder.warehouse_id)
|
| 10691 |
warehouseClient = WarehouseClient().get_client()
|
10755 |
#warehouseClient = WarehouseClient().get_client()
|
| 10692 |
|
10756 |
|
| 10693 |
for returnOrder in returnOrders:
|
10757 |
for returnOrderId in returnOrdersMap.iterkeys():
|
| - |
|
10758 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
| 10694 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
10759 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
| 10695 |
warehouse = None
|
10760 |
#warehouse = inventoryClient.getWarehouse(returnOrder.warehouse_id)
|
| 10696 |
|
10761 |
|
| 10697 |
serialNumbers = []
|
10762 |
serialNumbers = []
|
| 10698 |
if returnOrderDetails.has_key('SerialNumbers'):
|
10763 |
if returnOrderDetails.has_key('SerialNumbers'):
|
| 10699 |
serialNumbers = returnOrderDetails.get('SerialNumbers').split(',')
|
10764 |
serialNumbersSplitted = returnOrderDetails.get('SerialNumbers').split(',')
|
| - |
|
10765 |
serialNumbers = []
|
| - |
|
10766 |
for t in serialNumbersSplitted:
|
| - |
|
10767 |
if t.strip() !="":
|
| - |
|
10768 |
serialNumbers.append(t.strip())
|
| 10700 |
|
10769 |
|
| 10701 |
scanFreebie = False
|
10770 |
scanFreebie = False
|
| 10702 |
if returnOrderDetails.has_key('ScanFreebie') and returnOrderDetails.get('ScanFreebie')=='yes':
|
10771 |
if returnOrderDetails.has_key('ScanFreebie') and returnOrderDetails.get('ScanFreebie')=='yes':
|
| 10703 |
scanFreebie = True
|
10772 |
scanFreebie = True
|
| 10704 |
quantity = int(returnOrderDetails.get('Quantity'))
|
10773 |
quantity = int(returnOrderDetails.get('Quantity'))
|
| 10705 |
|
10774 |
|
| 10706 |
if warehouse is not None and warehouse.billingType == BillingType.OURS or warehouse.billingType == BillingType.OURS_EXTERNAL:
|
10775 |
# if warehouse is not None and warehouse.billingType == BillingType.OURS or warehouse.billingType == BillingType.OURS_EXTERNAL:
|
| 10707 |
if scanMap.has_key(returnOrder.returnStatus):
|
10776 |
# if scanMap.has_key(returnOrder.returnStatus):
|
| 10708 |
scanType = scanMap[returnOrder.returnStatus]
|
10777 |
# scanType = scanMap[returnOrder.returnStatus]
|
| 10709 |
lineitem = returnOrder.lineitem
|
10778 |
# lineitem = returnOrder.lineitem
|
| 10710 |
return_qty = lineitem.returnQty - returnOrder.returnQuantity + quantity
|
10779 |
# return_qty = lineitem.returnQty - returnOrder.returnQuantity + quantity
|
| 10711 |
lineitem.returnQty = lineitem.returnQty - returnOrder.returnQuantity + quantity
|
10780 |
# lineitem.returnQty = lineitem.returnQty - returnOrder.returnQuantity + quantity
|
| 10712 |
order = get_order(returnOrder.orderId)
|
10781 |
# order = get_order(returnOrder.orderId)
|
| 10713 |
if return_qty < order.lineitems[0].quantity:
|
10782 |
# if return_qty < order.lineitems[0].quantity:
|
| 10714 |
order.status = OrderStatus.PARTIAL_RETURN
|
10783 |
# order.status = OrderStatus.PARTIAL_RETURN
|
| 10715 |
if return_qty == order.lineitems[0].quantity:
|
10784 |
# if return_qty == order.lineitems[0].quantity:
|
| 10716 |
order.status = OrderStatus.COMPLETE_RETURN
|
10785 |
# order.status = OrderStatus.COMPLETE_RETURN
|
| 10717 |
if warehouse.billingType == BillingType.OURS or scanType != ScanType.SALE_RET:
|
10786 |
# if warehouse.billingType == BillingType.OURS or scanType != ScanType.SALE_RET:
|
| 10718 |
if lineitem.serial_number is not None:
|
10787 |
# if lineitem.serial_number is not None:
|
| 10719 |
if serialNumbers is None or len(serialNumbers)==0 or len(serialNumbers)<quantity:
|
10788 |
# if serialNumbers is None or len(serialNumbers)==0 or len(serialNumbers)<quantity:
|
| 10720 |
return False
|
10789 |
# return False
|
| 10721 |
else:
|
10790 |
# else:
|
| 10722 |
for serialNumber in serialNumbers:
|
10791 |
# for serialNumber in serialNumbers:
|
| 10723 |
try:
|
10792 |
# try:
|
| 10724 |
warehouseClient.scanSerializedItemForOrder(serialNumber, scanType, order.id, order.fulfilmentWarehouseId, 1, order.warehouse_id)
|
10793 |
# warehouseClient.scanSerializedItemForOrder(serialNumber, scanType, order.id, order.fulfilmentWarehouseId, 1, order.warehouse_id)
|
| 10725 |
except:
|
10794 |
# except:
|
| 10726 |
warehouseClient = WarehouseClient().get_client()
|
10795 |
# warehouseClient = WarehouseClient().get_client()
|
| 10727 |
warehouseClient.scanSerializedItemForOrder(serialNumber, scanType, order.id, order.fulfilmentWarehouseId, 1, order.warehouse_id)
|
10796 |
# warehouseClient.scanSerializedItemForOrder(serialNumber, scanType, order.id, order.fulfilmentWarehouseId, 1, order.warehouse_id)
|
| 10728 |
else:
|
10797 |
# else:
|
| 10729 |
try:
|
10798 |
# try:
|
| 10730 |
warehouseClient.scanForOrder(None, scanType, quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
|
10799 |
# warehouseClient.scanForOrder(None, scanType, quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
|
| 10731 |
except:
|
10800 |
# except:
|
| 10732 |
warehouseClient = WarehouseClient().get_client()
|
10801 |
# warehouseClient = WarehouseClient().get_client()
|
| 10733 |
warehouseClient.scanForOrder(None, scanType, quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
|
10802 |
# warehouseClient.scanForOrder(None, scanType, quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
|
| 10734 |
if warehouse.billingType == BillingType.OURS_EXTERNAL and scanType == ScanType.SALE_RET:
|
10803 |
# if warehouse.billingType == BillingType.OURS_EXTERNAL and scanType == ScanType.SALE_RET:
|
| 10735 |
try:
|
10804 |
# try:
|
| 10736 |
warehouseClient.scanForOursExternalSaleReturn(order.id, lineitem.transfer_price)
|
10805 |
# warehouseClient.scanForOursExternalSaleReturn(order.id, lineitem.transfer_price)
|
| 10737 |
except:
|
10806 |
# except:
|
| 10738 |
warehouseClient = WarehouseClient().get_client()
|
10807 |
# warehouseClient = WarehouseClient().get_client()
|
| 10739 |
warehouseClient.scanForOursExternalSaleReturn(order.id, lineitem.transfer_price)
|
10808 |
# warehouseClient.scanForOursExternalSaleReturn(order.id, lineitem.transfer_price)
|
| 10740 |
if scanFreebie:
|
10809 |
# if scanFreebie:
|
| 10741 |
try:
|
10810 |
# try:
|
| 10742 |
warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
10811 |
# warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
| 10743 |
except:
|
10812 |
# except:
|
| 10744 |
warehouseClient = WarehouseClient().get_client()
|
10813 |
# warehouseClient = WarehouseClient().get_client()
|
| 10745 |
warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
10814 |
# warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
| - |
|
10815 |
#
|
| 10746 |
|
10816 |
|
| - |
|
10817 |
isValid = returnOrderDetails.get('productUsable')
|
| 10747 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_RECEIVED]
|
10818 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_PRESTINE]:
|
| - |
|
10819 |
if isValid == "true":
|
| - |
|
10820 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID]
|
| - |
|
10821 |
else:
|
| - |
|
10822 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_INVALID]
|
| - |
|
10823 |
|
| - |
|
10824 |
elif returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_PRESTINE]:
|
| - |
|
10825 |
if isValid == "true":
|
| - |
|
10826 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_USABLE]
|
| - |
|
10827 |
else:
|
| - |
|
10828 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_UNUSABLE]
|
| 10748 |
session.commit()
|
10829 |
session.commit()
|
| 10749 |
return True
|
10830 |
return True
|
| - |
|
10831 |
|
| 10750 |
|
10832 |
|
| 10751 |
def validate_return_pickup(returnPickupId, returnOrdersMap):
|
10833 |
def validate_return_pickup(returnPickupId, returnOrdersMap):
|
| 10752 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupId).all()
|
10834 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupId).all()
|
| 10753 |
if len(returnOrders)!=len(returnOrdersMap.keys()):
|
10835 |
if len(returnOrders)!=len(returnOrdersMap.keys()):
|
| 10754 |
raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
10836 |
raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
| Line 10831... |
Line 10913... |
| 10831 |
if not overrideWarranty and itemCondition is not None:
|
10913 |
if not overrideWarranty and itemCondition is not None:
|
| 10832 |
if itemCondition == 'DAMAGED':
|
10914 |
if itemCondition == 'DAMAGED':
|
| 10833 |
query = query.filter(LineItem.damaged_expiry_timestamp > datetime.datetime.now())
|
10915 |
query = query.filter(LineItem.damaged_expiry_timestamp > datetime.datetime.now())
|
| 10834 |
elif itemCondition == 'DEFECTIVE':
|
10916 |
elif itemCondition == 'DEFECTIVE':
|
| 10835 |
query = query.filter(LineItem.warranty_expiry_timestamp > datetime.datetime.now())
|
10917 |
query = query.filter(LineItem.warranty_expiry_timestamp > datetime.datetime.now())
|
| 10836 |
|
10918 |
|
| 10837 |
orders = query.order_by(desc(Order.delivery_timestamp)).all()
|
10919 |
orders = query.order_by(desc(Order.delivery_timestamp)).all()
|
| 10838 |
return orders
|
10920 |
return orders
|
| 10839 |
|
10921 |
|
| 10840 |
def get_eligible_return_orders_for_pickup(customerId):
|
10922 |
def get_eligible_return_orders_for_pickup(customerId):
|
| 10841 |
return session.query(ReturnOrderInfo).join((ReturnTransaction,ReturnOrderInfo.returnTransaction_id==ReturnTransaction.id)).filter(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])).filter(ReturnOrderInfo.logisticsRequestId==None).all()
|
10923 |
return session.query(ReturnOrderInfo).join((ReturnTransaction,ReturnOrderInfo.returnTransaction_id==ReturnTransaction.id)).filter(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])).filter(ReturnOrderInfo.logisticsRequestId==None).all()
|
| 10842 |
|
10924 |
|
| 10843 |
def validate_return_transaction(customerId, returnOrdersMap, itemCondition, overrideWarranty):
|
10925 |
def validate_return_transaction(customerId, returnOrdersMap, itemCondition, overrideWarranty):
|
| 10844 |
eligibleOrders = get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty)
|
10926 |
eligibleOrders = get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty)
|
| 10845 |
|
10927 |
|
| 10846 |
ordersMap = {}
|
10928 |
ordersMap = {}
|
| 10847 |
for order in eligibleOrders:
|
10929 |
for order in eligibleOrders:
|
| 10848 |
ordersMap[order.id] = order.lineitems[0].quantity - order.lineitems[0].returnQty
|
10930 |
ordersMap[order.id] = order.lineitems[0].quantity - order.lineitems[0].returnQty
|
| 10849 |
|
10931 |
|
| 10850 |
for orderId, returnOrderQty in returnOrdersMap.items():
|
10932 |
for orderId, returnOrderQty in returnOrdersMap.items():
|
| 10851 |
if returnOrderQty > ordersMap.get(orderId):
|
10933 |
if returnOrderQty > ordersMap.get(orderId):
|
| 10852 |
return False
|
10934 |
return False
|
| 10853 |
return True
|
10935 |
return True
|
| 10854 |
|
10936 |
|
| 10855 |
def get_return_pickup_request(returnPickupId):
|
10937 |
def get_return_pickup_request(returnPickupId):
|
| 10856 |
return ReturnPickupRequest.get_by(id=returnPickupId)
|
10938 |
return ReturnPickupRequest.get_by(id=returnPickupId)
|
| 10857 |
|
10939 |
|
| - |
|
10940 |
def mark_return_not_required_orders_as_processed(t_returnOrderInfo):
|
| - |
|
10941 |
returnOrderInfo = ReturnOrderInfo.get_by(id=t_returnOrderInfo.id)
|
| - |
|
10942 |
if returnOrderInfo is None:
|
| - |
|
10943 |
raise TransactionServiceException(101, "No Return Order Found")
|
| - |
|
10944 |
|
| - |
|
10945 |
if returnOrderInfo.returnPickupType == ReturnPickupType.NOT_REQUIRED:
|
| - |
|
10946 |
if returnOrderInfo.returnAction == ReturnAction.REPLACEMENT or t_returnOrderInfo.refundType!= RefundType.WALLET:
|
| - |
|
10947 |
raise TransactionServiceException(101, "Refund Type not Defined for return order:- "+str(returnOrderInfo.id))
|
| - |
|
10948 |
|
| - |
|
10949 |
detailsMap = {}
|
| - |
|
10950 |
if returnOrderInfo.refundedAt :
|
| - |
|
10951 |
raise TransactionServiceException(145, "Refund already in Process for this return order")
|
| - |
|
10952 |
detailsMap['RefundReason'] = "As per Customer Request"
|
| - |
|
10953 |
detailsMap['RefundType'] = t_returnOrderInfo.refundType
|
| - |
|
10954 |
detailsMap['RefundedBy'] = t_returnOrderInfo.refundedBy
|
| - |
|
10955 |
detailsMap['RefundAmount'] = t_returnOrderInfo.refundAmount
|
| - |
|
10956 |
returnOrderInfo.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_IN_PROCESS]
|
| - |
|
10957 |
if(not __process_return_order(returnOrderInfo, detailsMap)):
|
| - |
|
10958 |
raise TransactionServiceException(145, "Issue in __process_return_order")
|
| - |
|
10959 |
returnOrderInfo.processedAt = datetime.datetime.now()
|
| - |
|
10960 |
returnOrderInfo.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_DONE]
|
| - |
|
10961 |
session.commit()
|
| - |
|
10962 |
__markReturnTransactionAsProcessed(returnOrderInfo.returnTransaction_id)
|
| - |
|
10963 |
return True
|
| 10858 |
|
10964 |
|
| 10859 |
def mark_return_not_required_orders_as_processed(returnTransactionId):
|
- |
|
| 10860 |
returnTransaction = ReturnTransaction.get_by(id=returnTransactionId)
|
- |
|
| 10861 |
if returnTransaction is None:
|
- |
|
| 10862 |
raise TransactionServiceException(101, "No Return Transaction Found")
|
- |
|
| 10863 |
|
- |
|
| 10864 |
eligibleOrders = []
|
- |
|
| 10865 |
for returnOrder in returnTransaction.returnOrders:
|
- |
|
| 10866 |
if returnOrder.returnPickupType == ReturnPickupType.NOT_REQUIRED:
|
- |
|
| 10867 |
if returnOrder.returnAction and returnOrder.refundType == RefundType.INIT:
|
- |
|
| 10868 |
raise TransactionServiceException(101, "Refund Type not Defined for return order:- "+str(returnOrder.id))
|
- |
|
| 10869 |
eligibleOrders.append(returnOrder)
|
- |
|
| 10870 |
|
- |
|
| 10871 |
|
- |
|
| 10872 |
returnOrdersAttrMap = {}
|
- |
|
| 10873 |
returnOrderIds = []
|
- |
|
| 10874 |
|
- |
|
| 10875 |
for returnOrder in eligibleOrders:
|
- |
|
| 10876 |
returnOrderIds.append(returnOrder.id)
|
- |
|
| 10877 |
if returnOrder.returnAction:
|
- |
|
| 10878 |
detailsMap = {}
|
- |
|
| 10879 |
if returnOrder.refundedAt:
|
- |
|
| 10880 |
raise TransactionServiceException(145, "Refund already in Process for this return order")
|
- |
|
| 10881 |
detailsMap['RefundReason'] = "As per Customer Request"
|
- |
|
| 10882 |
detailsMap['RefundType'] = returnOrder.refundType
|
- |
|
| 10883 |
detailsMap['RefundedBy'] = "CRM Executive"
|
- |
|
| 10884 |
detailsMap['RefundAmount'] = returnOrder.refundAmount
|
- |
|
| 10885 |
returnOrdersAttrMap[returnOrder.id] = detailsMap
|
- |
|
| 10886 |
|
- |
|
| 10887 |
|
- |
|
| 10888 |
return change_return_transaction_status(returnTransactionId, ReturnTransactionStatus.PROCESSED, returnOrderIds, returnOrdersAttrMap)
|
- |
|
| 10889 |
|
10965 |
|
| 10890 |
def get_all_return_orders_for_return_pickup_request(logisticsRequestId):
|
10966 |
def get_all_return_orders_for_return_pickup_request(logisticsRequestId):
|
| 10891 |
return ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==logisticsRequestId).all()
|
10967 |
return ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==logisticsRequestId).all()
|
| 10892 |
|
10968 |
|
| 10893 |
def __clone_return_order(returnOrder, splitReturnOrderQty):
|
10969 |
def __clone_return_order(returnOrder, splitOrderQty):
|
| - |
|
10970 |
if returnOrder.returnQuantity <= splitOrderQty or splitOrderQty<=0:
|
| - |
|
10971 |
raise TransactionServiceException(101, "SplitQty canot be equal to or greater than parent return order returnQty")
|
| - |
|
10972 |
returnOrder.returnQuantity = returnOrder.returnQuantity - splitOrderQty
|
| 10894 |
new_returnOrder = ReturnOrderInfo()
|
10973 |
new_return_order = ReturnOrderInfo()
|
| - |
|
10974 |
new_return_order.returnTransaction = returnOrder.returnTransaction
|
| - |
|
10975 |
new_return_order.masterOrderId = returnOrder.masterOrderId
|
| 10895 |
returnOrderInfo.orderId = returnOrder.orderId
|
10976 |
new_return_order.orderId = returnOrder.orderId
|
| 10896 |
returnOrderInfo.lineItemId = returnOrder.lineItemId
|
10977 |
new_return_order.lineItemId = returnOrder.lineItemId
|
| - |
|
10978 |
new_return_order.logisticsRequestId = returnOrder.logisticsRequestId
|
| 10897 |
returnOrderInfo.returnQuantity = splitReturnOrderQty
|
10979 |
new_return_order.returnQuantity = splitOrderQty
|
| - |
|
10980 |
new_return_order.receivedQuantity = returnOrder.receivedQuantity
|
| 10898 |
returnOrderInfo.createdAt = datetime.datetime.now()
|
10981 |
new_return_order.createdAt = returnOrder.createdAt
|
| 10899 |
if itemCondition=="DAMAGED":
|
10982 |
new_return_order.processedAt = returnOrder.processedAt
|
| 10900 |
returnOrderInfo.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_REQUEST_RECEIVED]
|
10983 |
new_return_order.returnStatus = returnOrder.returnStatus
|
| 10901 |
else:
|
10984 |
new_return_order.reshippedAt = returnOrder.reshippedAt
|
| - |
|
10985 |
new_return_order.receivedAt = returnOrder.receivedAt
|
| 10902 |
returnOrderInfo.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_REQUEST_RECEIVED]
|
10986 |
new_return_order.refundReason = returnOrder.refundReason
|
| - |
|
10987 |
new_return_order.refundedBy = returnOrder.refundedBy
|
| 10903 |
returnOrderInfo.masterOrderId = order.logisticsTransactionId
|
10988 |
new_return_order.refundedAt = returnOrder.refundedAt
|
| 10904 |
returnOrderInfo.warehouse_id = order.warehouse_id
|
10989 |
new_return_order.warehouse_id = returnOrder.warehouse_id
|
| - |
|
10990 |
new_return_order.refundAmount = returnOrder.refundAmount
|
| - |
|
10991 |
new_return_order.refundType = returnOrder.refundType
|
| 10905 |
returnOrderInfo.returnAction = returnInfo.returnAction
|
10992 |
new_return_order.refundDescription = returnOrder.refundDescription
|
| - |
|
10993 |
new_return_order.returnPickupType = returnOrder.returnPickupType
|
| - |
|
10994 |
new_return_order.shippingType = returnOrder.shippingType
|
| - |
|
10995 |
new_return_order.replacementOrderId = returnOrder.replacementOrderId
|
| - |
|
10996 |
new_return_order.receivedReturnType = returnOrder.receivedReturnType
|
| 10906 |
returnOrderInfo.freebieItemId = order.freebieItemId
|
10997 |
new_return_order.freebieItemId = returnOrder.freebieItemId
|
| - |
|
10998 |
new_return_order.returnAction = returnOrder.returnAction
|
| 10907 |
returnOrderInfo.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.PENDING]
|
10999 |
new_return_order.returnTxnResolutionStatus = returnOrder.returnTxnResolutionStatus
|
| - |
|
11000 |
new_return_order.lineitem = returnOrder.lineitem
|
| - |
|
11001 |
new_return_order.returnPickUpRequest = returnOrder.returnPickUpRequest
|
| - |
|
11002 |
return new_return_order
|
| - |
|
11003 |
|
| 10908 |
|
11004 |
|
| 10909 |
def get_seller_info(sellerId):
|
11005 |
def get_seller_info(sellerId):
|
| 10910 |
sellerInfo = SellerInfo()
|
11006 |
sellerInfo = SellerInfo()
|
| 10911 |
seller = Seller.get_by(id=sellerId)
|
11007 |
seller = Seller.get_by(id=sellerId)
|
| 10912 |
if seller is None:
|
11008 |
if seller is None:
|
| Line 10927... |
Line 11023... |
| 10927 |
|
11023 |
|
| 10928 |
def get_warehouse_address(addressId):
|
11024 |
def get_warehouse_address(addressId):
|
| 10929 |
address = WarehouseAddressMaster.get_by(id=addressId)
|
11025 |
address = WarehouseAddressMaster.get_by(id=addressId)
|
| 10930 |
return to_t_warehouse_address(address)
|
11026 |
return to_t_warehouse_address(address)
|
| 10931 |
|
11027 |
|
| 10932 |
def split_return_order_info(returnOrderId, splitReturnOrderQty):
|
11028 |
def split_return_order_info(returnOrderId, splitOrderQty):
|
| 10933 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
11029 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
| 10934 |
if returnOrder is None:
|
11030 |
if returnOrder is None:
|
| 10935 |
raise TransactionServiceException(101, "No Return Order is there with this Order Id")
|
11031 |
raise TransactionServiceException(101, "No Return Order is there with this Order Id")
|
| - |
|
11032 |
new_return_order = __clone_return_order(returnOrder, splitOrderQty)
|
| - |
|
11033 |
session.commit()
|
| - |
|
11034 |
return new_return_order
|
| 10936 |
|
11035 |
|
| 10937 |
#Seller would be used to get tin number
|
11036 |
#Seller would be used to get tin number
|
| 10938 |
def __get_seller(warehouse_id):
|
11037 |
def __get_seller(warehouse_id):
|
| 10939 |
#As of now we have hardcoded the company and
|
11038 |
#As of now we have hardcoded the company and
|
| 10940 |
#seller would be returned on basis warehouse and company
|
11039 |
#seller would be returned on basis warehouse and company
|
| 10941 |
orgId=2
|
11040 |
orgId=2
|
| 10942 |
(sellerId,) = session.query(Seller.id).join((SellerWarehouse, Seller.id==SellerWarehouse.seller_id)).filter(Seller.organisation_id==orgId).filter(SellerWarehouse.warehouse_id==warehouse_id).first()
|
11041 |
(sellerId,) = session.query(Seller.id).join((SellerWarehouse, Seller.id==SellerWarehouse.seller_id)).filter(Seller.organisation_id==orgId).filter(SellerWarehouse.warehouse_id==warehouse_id).first()
|
| 10943 |
return sellerId
|
11042 |
return sellerId
|
| 10944 |
|
11043 |
|
| 10945 |
def add_shipment_delay(shipmentDelayDetail):
|
11044 |
def add_shipment_delay(shipmentDelayDetail):
|
| 10946 |
returnList = []
|
11045 |
returnList = []
|
| 10947 |
for delayObj in shipmentDelayDetail:
|
11046 |
for delayObj in shipmentDelayDetail:
|
| 10948 |
print delayObj.orderId
|
- |
|
| 10949 |
print delayObj.delayReason
|
- |
|
| 10950 |
print delayObj.delayReasonText
|
- |
|
| 10951 |
print delayObj.delay
|
- |
|
| 10952 |
order = get_order(delayObj.orderId)
|
11047 |
order = get_order(delayObj.orderId)
|
| 10953 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.ACCEPTED]:
|
11048 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.ACCEPTED]:
|
| 10954 |
returnList.append(delayObj.orderId)
|
11049 |
returnList.append(delayObj.orderId)
|
| 10955 |
continue
|
11050 |
continue
|
| 10956 |
try:
|
11051 |
try:
|
| Line 10959... |
Line 11054... |
| 10959 |
returnList.append(delayObj.orderId)
|
11054 |
returnList.append(delayObj.orderId)
|
| 10960 |
continue
|
11055 |
continue
|
| 10961 |
if not result:
|
11056 |
if not result:
|
| 10962 |
returnList.append(delayObj.orderId)
|
11057 |
returnList.append(delayObj.orderId)
|
| 10963 |
return returnList
|
11058 |
return returnList
|
| 10964 |
|
- |
|
| 10965 |
|
- |
|
| 10966 |
|
11059 |
|
| 10967 |
#Buyer can be anyone based on logic
|
11060 |
#Buyer can be anyone based on logic
|
| 10968 |
def __get_buyer(warehouse_id):
|
11061 |
def __get_buyer(warehouse_id):
|
| 10969 |
#As of now we have hardcoded the company and
|
11062 |
#As of now we have hardcoded the company and
|
| 10970 |
#seller would be returned on basis warehouse and company
|
11063 |
#seller would be returned on basis warehouse and company
|