| Line 458... |
Line 458... |
| 458 |
nodes = child.findall('Scans/ScanDetail')
|
458 |
nodes = child.findall('Scans/ScanDetail')
|
| 459 |
orderstatus = None
|
459 |
orderstatus = None
|
| 460 |
if len(nodes):
|
460 |
if len(nodes):
|
| 461 |
node_number = len(nodes)-1
|
461 |
node_number = len(nodes)-1
|
| 462 |
for element in reversed(nodes):
|
462 |
for element in reversed(nodes):
|
| 463 |
if element.findtext('ScanType', '') == 'DL':
|
463 |
if element.findtext('ScanType', '') == 'DL' and getTrimedString(element.findtext('Scan', '')) == getTrimedString('Shipment delivered'):
|
| 464 |
orderstatus = 'DL'
|
464 |
orderstatus = 'DL'
|
| 465 |
datestring = element.findtext('ScanDate', '')
|
465 |
datestring = element.findtext('ScanDate', '')
|
| 466 |
timestring = element.findtext('ScanTime', '')
|
466 |
timestring = element.findtext('ScanTime', '')
|
| 467 |
delivery_date = get_py_datetime(datestring, timestring)
|
467 |
delivery_date = get_py_datetime(datestring, timestring)
|
| 468 |
receiver = child.findtext('ReceivedBy', '')
|
468 |
receiver = child.findtext('ReceivedBy', '')
|
| Line 490... |
Line 490... |
| 490 |
timestring = child.findtext('ScanTime', '')
|
490 |
timestring = child.findtext('ScanTime', '')
|
| 491 |
delivery_date = get_py_datetime(datestring, timestring)
|
491 |
delivery_date = get_py_datetime(datestring, timestring)
|
| 492 |
reason_for_return = child.findtext('Status', '')
|
492 |
reason_for_return = child.findtext('Status', '')
|
| 493 |
returned_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_return
|
493 |
returned_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_return
|
| 494 |
break
|
494 |
break
|
| 495 |
elif child.findtext('StatusType', '') == 'DL':
|
495 |
elif child.findtext('StatusType', '') == 'DL' and getTrimedString(child.findtext('Scan', '')) == getTrimedString('Shipment delivered'):
|
| 496 |
orderstatus = 'DL'
|
496 |
orderstatus = 'DL'
|
| 497 |
datestring = child.findtext('ScanDate', '')
|
497 |
datestring = child.findtext('ScanDate', '')
|
| 498 |
timestring = child.findtext('ScanTime', '')
|
498 |
timestring = child.findtext('ScanTime', '')
|
| 499 |
delivery_date = get_py_datetime(datestring, timestring)
|
499 |
delivery_date = get_py_datetime(datestring, timestring)
|
| 500 |
receiver = child.findtext('ReceivedBy', '')
|
500 |
receiver = child.findtext('ReceivedBy', '')
|
| Line 631... |
Line 631... |
| 631 |
if user is None or user.userId == -1:
|
631 |
if user is None or user.userId == -1:
|
| 632 |
searchFilter.customerEmailId = order.customer_email
|
632 |
searchFilter.customerEmailId = order.customer_email
|
| 633 |
searchFilter.customerMobileNumber = order.customer_mobilenumber
|
633 |
searchFilter.customerMobileNumber = order.customer_mobilenumber
|
| 634 |
else:
|
634 |
else:
|
| 635 |
searchFilter.customerId = user.userId
|
635 |
searchFilter.customerId = user.userId
|
| - |
|
636 |
searchFilter.ticketCategory = TicketCategory.UNDELIVERED
|
| 636 |
tickets = crmServiceClient.getTickets(searchFilter)
|
637 |
tickets = crmServiceClient.getTickets(searchFilter)
|
| 637 |
print tickets
|
638 |
print tickets
|
| 638 |
for old_ticket in tickets:
|
639 |
for old_ticket in tickets:
|
| 639 |
if old_ticket.orderId == order.id:
|
640 |
if old_ticket.orderId == order.id:
|
| 640 |
ticket_created = True
|
641 |
ticket_created = True
|
| Line 676... |
Line 677... |
| 676 |
crmServiceClient.insertTicket(ticket, activity)
|
677 |
crmServiceClient.insertTicket(ticket, activity)
|
| 677 |
except:
|
678 |
except:
|
| 678 |
print "Some issue while creating crm tickets for orders in FIRST_DELIVERY_ATTEMPT_MADE status"
|
679 |
print "Some issue while creating crm tickets for orders in FIRST_DELIVERY_ATTEMPT_MADE status"
|
| 679 |
traceback.print_exc()
|
680 |
traceback.print_exc()
|
| 680 |
|
681 |
|
| - |
|
682 |
def auto_crm_tickets_created():
|
| - |
|
683 |
try:
|
| - |
|
684 |
ticket_created_orders = []
|
| - |
|
685 |
tickets_map = {}
|
| - |
|
686 |
crmServiceClient = CRMClient().get_client()
|
| - |
|
687 |
searchFilter = SearchFilter()
|
| - |
|
688 |
searchFilter.ticketCategory = TicketCategory.UNDELIVERED
|
| - |
|
689 |
searchFilter.ticketAssigneeIds = [defaultUndeliveredAsssigneeId]
|
| - |
|
690 |
searchFilter.ticketPriority = TicketPriority.HIGH
|
| - |
|
691 |
searchFilter.ticketStatuses = [TicketStatus.OPEN]
|
| - |
|
692 |
tickets = crmServiceClient.getTickets(searchFilter)
|
| - |
|
693 |
print tickets
|
| - |
|
694 |
for old_ticket in tickets:
|
| - |
|
695 |
ticket_created_orders.append(old_ticket.orderId)
|
| - |
|
696 |
tickets_map[old_ticket.orderId] = old_ticket
|
| - |
|
697 |
print ticket_created_orders
|
| - |
|
698 |
txnClient = TransactionClient().get_client()
|
| - |
|
699 |
orders = txnClient.getOrderList(ticket_created_orders)
|
| - |
|
700 |
for order in orders:
|
| - |
|
701 |
if order.status not in [OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE]:
|
| - |
|
702 |
old_ticket = tickets_map.get(order.id)
|
| - |
|
703 |
old_ticket.status = TicketStatus.CLOSED
|
| - |
|
704 |
activity = Activity()
|
| - |
|
705 |
activity.creatorId = 1
|
| - |
|
706 |
activity.ticketAssigneeId = old_ticket.assigneeId
|
| - |
|
707 |
activity.type = ActivityType.OTHER
|
| - |
|
708 |
activity.description = "Ticket Closed bcoz order status changed to:" + order.statusDescription
|
| - |
|
709 |
activity.ticketCategory = old_ticket.category
|
| - |
|
710 |
activity.ticketDescription = old_ticket.description
|
| - |
|
711 |
activity.ticketPriority = old_ticket.priority
|
| - |
|
712 |
activity.ticketStatus = old_ticket.status
|
| - |
|
713 |
|
| - |
|
714 |
if old_ticket.customerId is None or old_ticket.customerId == -1:
|
| - |
|
715 |
activity.customerEmailId = old_ticket.customerEmailId
|
| - |
|
716 |
activity.customerMobileNumber = old_ticket.customerMobileNumber
|
| - |
|
717 |
activity.customerName = old_ticket.customerName
|
| - |
|
718 |
else:
|
| - |
|
719 |
activity.customerId = old_ticket.customerId
|
| - |
|
720 |
|
| - |
|
721 |
crmServiceClient.updateTicket(old_ticket, activity)
|
| - |
|
722 |
except:
|
| - |
|
723 |
print "Some issue while closing crm tickets for orders in DELIVERY_SUCCESS status"
|
| - |
|
724 |
traceback.print_exc()
|
| - |
|
725 |
|
| 681 |
def get_py_datetime(datestring, timestring):
|
726 |
def get_py_datetime(datestring, timestring):
|
| 682 |
# This should be a command line argument.
|
727 |
# This should be a command line argument.
|
| 683 |
# Refer http://docs.python.org/library/time.html#time.strftime to
|
728 |
# Refer http://docs.python.org/library/time.html#time.strftime to
|
| 684 |
# get a complete list of format specifiers available for date time.
|
729 |
# get a complete list of format specifiers available for date time.
|
| 685 |
if datestring == '':
|
730 |
if datestring == '':
|
| Line 746... |
Line 791... |
| 746 |
process_local_connection_orders(provider)
|
791 |
process_local_connection_orders(provider)
|
| 747 |
process_reached_destination_city_orders(provider)
|
792 |
process_reached_destination_city_orders(provider)
|
| 748 |
process_first_delivery_attempt_orders(provider)
|
793 |
process_first_delivery_attempt_orders(provider)
|
| 749 |
process_delivery_report(provider)
|
794 |
process_delivery_report(provider)
|
| 750 |
create_crm_tickets_for_delivey_attempted_orders(provider)
|
795 |
create_crm_tickets_for_delivey_attempted_orders(provider)
|
| - |
|
796 |
auto_crm_tickets_created()
|
| 751 |
if options.gen_reports:
|
797 |
if options.gen_reports:
|
| 752 |
generate_reports(provider)
|
798 |
generate_reports(provider)
|
| 753 |
|
799 |
|
| 754 |
if __name__ == '__main__':
|
800 |
if __name__ == '__main__':
|
| 755 |
main()
|
801 |
main()
|