Subversion Repositories SmartDukaan

Rev

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

Rev 4948 Rev 4999
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()