Subversion Repositories SmartDukaan

Rev

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

Rev 6966 Rev 7025
Line 111... Line 111...
111
            update_local_connected_orders(provider.id, local_connected_orders)
111
            update_local_connected_orders(provider.id, local_connected_orders)
112
    except:
112
    except:
113
        print "Some issue while processing the orders for local connection status"
113
        print "Some issue while processing the orders for local connection status"
114
        traceback.print_exc()
114
        traceback.print_exc()
115
 
115
 
116
def process_reached_destination_city_orders(provider):
-
 
117
    try:
-
 
118
        orders_tobe_reached_destination_city = fetch_data(provider.id, [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY])
-
 
119
        destination_city_reached_orders = read_reached_destination_orders(orders_tobe_reached_destination_city)
-
 
120
        if destination_city_reached_orders:
-
 
121
            update_destination_city_reached_orders(provider.id, destination_city_reached_orders)
-
 
122
    except:
-
 
123
        print "Some issue while processing the orders for Reached Destination City status"
-
 
124
        traceback.print_exc()
-
 
125
 
-
 
126
def process_first_delivery_attempt_orders(provider):
116
def process_first_delivery_attempt_orders(provider):
127
    try:
117
    try:
128
        orders_tobe_first_delivery_attempted = fetch_data(provider.id, [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY])
118
        orders_tobe_first_delivery_attempted = fetch_data(provider.id, [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY])
129
        first_atdl_orders = read_first_delivery_attempt_orders(orders_tobe_first_delivery_attempted)
119
        first_atdl_orders = read_first_delivery_attempt_orders(orders_tobe_first_delivery_attempted)
130
        if first_atdl_orders:
120
        if first_atdl_orders:
131
            update_first_atdl_orders(provider.id, first_atdl_orders)
121
            update_first_atdl_orders(provider.id, first_atdl_orders)
132
    except:
122
    except:
133
        print "Some issue while processing the orders for First delivery attempt status"
123
        print "Some issue while processing the orders for First delivery attempt status"
134
        traceback.print_exc()
124
        traceback.print_exc()
135
 
125
 
-
 
126
def process_reached_destination_city_orders(provider):
-
 
127
    try:
-
 
128
        orders_tobe_reached_destination_city = fetch_data(provider.id, [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY])
-
 
129
        destination_city_reached_orders = read_reached_destination_orders(orders_tobe_reached_destination_city)
-
 
130
        if destination_city_reached_orders:
-
 
131
            update_destination_city_reached_orders(provider.id, destination_city_reached_orders)
-
 
132
    except:
-
 
133
        print "Some issue while processing the orders for Reached Destination City status"
-
 
134
        traceback.print_exc()
-
 
135
 
136
def process_delivery_report(provider):
136
def process_delivery_report(provider):
137
    try:
137
    try:
138
        orders_tobe_delivered = fetch_data(provider.id, [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE])
138
        orders_tobe_delivered = fetch_data(provider.id, [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE])
139
        delivered_orders, returned_orders, undelivered_orders = read_delivery_orders(orders_tobe_delivered)
139
        delivered_orders, returned_orders, undelivered_orders = read_delivery_orders(orders_tobe_delivered)
140
        if delivered_orders:
140
        if delivered_orders:
Line 366... Line 366...
366
            root =  fromstring(str(get_updates(order.airwaybill_no)))
366
            root =  fromstring(str(get_updates(order.airwaybill_no)))
367
            children = root.getchildren()
367
            children = root.getchildren()
368
            for child in children:
368
            for child in children:
369
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
369
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
370
                for element in reversed(nodes):
370
                for element in reversed(nodes):
371
                    if (getTrimedString(element.findtext('ServiceEvent', '')).find(getTrimedString('Reached at OKHLA SDC')) != -1):
371
                    if element.findtext('TrackingCode', '') == 'PRO':
372
                        datestring = element.findtext('Date', '')
372
                        datestring = element.findtext('Date', '')
373
                        timestring = element.findtext('Time', '')
373
                        timestring = element.findtext('Time', '')
374
                        delivery_date = get_py_datetime(datestring, timestring)
374
                        delivery_date = get_py_datetime(datestring, timestring)
375
                        local_connected_orders[order.airwaybill_no] = str(delivery_date)
375
                        local_connected_orders[order.airwaybill_no] = str(delivery_date)
376
                        break
376
                        break
377
                break
377
                break
378
        except:
378
        except:
379
            pass
379
            pass
380
    
380
            
381
    print "Local Connected Orders"
381
    print "Local Connected Orders"
382
    print local_connected_orders
382
    print local_connected_orders
383
    
383
    
384
    return local_connected_orders
384
    return local_connected_orders
385
 
385
 
Line 391... Line 391...
391
            children = root.getchildren()
391
            children = root.getchildren()
392
            child_number = 0
392
            child_number = 0
393
            for child in children:
393
            for child in children:
394
                child_number = child_number + 1
394
                child_number = child_number + 1
395
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
395
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
396
                orderstatus = None
-
 
397
                for element in nodes:
396
                for element in nodes:
398
                    if element.findtext('ScanType', '') == 'UD' and (getTrimedString(element.findtext('Scan', '')) == getTrimedString('Shipment Inscan') or getTrimedString(element.findtext('Scan', '')) == getTrimedString('Shipment-Autoscan')) and element.findtext('ScannedLocation', '') == child.findtext('Destination', ''):
397
                    if element.findtext('TrackingCode', '') == 'RDB':
399
                        datestring = element.findtext('Date', '')
398
                        datestring = element.findtext('Date', '')
400
                        timestring = element.findtext('Time', '')
399
                        timestring = element.findtext('Time', '')
401
                        delivery_date = get_py_datetime(datestring, timestring)
400
                        delivery_date = get_py_datetime(datestring, timestring)
402
                        destination_city_reached_orders[order.airwaybill_no] = str(delivery_date)
401
                        destination_city_reached_orders[order.airwaybill_no] = str(delivery_date)
403
                        orderstatus = 'UD'
-
 
404
                        break
402
                        break
405
                    elif element.findtext('ScanType', '') == 'RD':
-
 
406
                        if child_number < len(children):
-
 
407
                            orderstatus = 'RD'
-
 
408
                            break
-
 
409
                if orderstatus != 'RD':
-
 
410
                    break
-
 
411
        except:
403
        except:
412
            pass
404
            pass
413
    
405
    
414
    print "Destination City Reached Orders"
406
    print "Destination City Reached Orders"
415
    print destination_city_reached_orders
407
    print destination_city_reached_orders
Line 420... Line 412...
420
    first_atdl_orders = {}
412
    first_atdl_orders = {}
421
    for order in orders_tobe_first_delivery_attempted:
413
    for order in orders_tobe_first_delivery_attempted:
422
        try:
414
        try:
423
            root =  fromstring(str(get_updates(order.airwaybill_no)))
415
            root =  fromstring(str(get_updates(order.airwaybill_no)))
424
            children = root.getchildren()
416
            children = root.getchildren()
425
            children = root.getchildren()
-
 
426
            child_number = 0
-
 
427
            for child in children:
417
            for child in children:
428
                child_number = child_number + 1
-
 
429
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
418
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
430
                orderstatus = None
-
 
431
                node_number = len(nodes)-1
-
 
432
                for element in reversed(nodes):
419
                for element in reversed(nodes):
433
                    if element.findtext('ScanType', '') == 'UD' and getTrimedString(element.findtext('Scan', '')) == getTrimedString('Shipment Outscan'):
-
 
434
                        if node_number != 0 and nodes[node_number-1].findtext('ScanType', '') == 'UD':
-
 
435
                            element = nodes[node_number-1]
-
 
436
                            datestring = element.findtext('ScanDate', '')
-
 
437
                            timestring = element.findtext('ScanTime', '')
420
                    if element.findtext('TrackingCode', '') == 'OFD':
438
                            delivery_date = get_py_datetime(datestring, timestring)
-
 
439
                            reason_for_nondelivery = element.findtext('Scan', '')
-
 
440
                            first_atdl_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_nondelivery
-
 
441
                        orderstatus = 'UD'
-
 
442
                        break
-
 
443
                    elif element.findtext('ScanType', '') == 'UD' and getTrimedString(element.findtext('Scan', '')) == getTrimedString("Shpt Held At Destination As Per Shipper's Request"):
-
 
444
                        datestring = element.findtext('ScanDate', '')
421
                        datestring = element.findtext('Date', '')
445
                        timestring = element.findtext('ScanTime', '')
422
                        timestring = element.findtext('Time', '')
446
                        delivery_date = get_py_datetime(datestring, timestring)
423
                        delivery_date = get_py_datetime(datestring, timestring)
447
                        reason_for_nondelivery = element.findtext('Scan', '')
-
 
448
                        first_atdl_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_nondelivery
424
                        first_atdl_orders[order.airwaybill_no] = str(delivery_date)
449
                        orderstatus = 'UD'
-
 
450
                        break
425
                        break
451
                    elif element.findtext('ScanType', '') == 'RD':
-
 
452
                        if child_number < len(children):
-
 
453
                            orderstatus = 'RD'
-
 
454
                            break
-
 
455
                    node_number = node_number - 1
-
 
456
                if orderstatus != 'RD':
-
 
457
                    break
426
                break
458
        except:
427
        except:
459
            pass
428
            pass
460
    
429
    
461
    print "FIRST DELIVERY ATTEMPT MADE Orders"
430
    print "FIRST DELIVERY ATTEMPT MADE Orders"
462
    print first_atdl_orders
431
    print first_atdl_orders
Line 476... Line 445...
476
                child_number = child_number + 1
445
                child_number = child_number + 1
477
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
446
                nodes = child.findall('ShipmentInfo/ShipmentEvent')
478
                if len(nodes):
447
                if len(nodes):
479
                    node_number = len(nodes)-1
448
                    node_number = len(nodes)-1
480
                    for element in reversed(nodes):
449
                    for element in reversed(nodes):
481
                        if element.findtext('StatusCode', '') == 'Delivered':
450
                        if element.findtext('TrackingCode', '') == 'DLVD':
482
                            datestring = element.findtext('Date', '')
451
                            datestring = element.findtext('Date', '')
483
                            timestring = element.findtext('Time', '')
452
                            timestring = element.findtext('Time', '')
484
                            delivery_date = get_py_datetime(datestring, timestring)
453
                            delivery_date = get_py_datetime(datestring, timestring)
-
 
454
                            element1 = child.findall('ShipmentInfo/Consignee')[0]
485
                            receiver = 'Receiver'
455
                            receiver = element1.findtext('Name', '')
486
                            delivered_orders[order.airwaybill_no] = str(delivery_date) + "|" +  receiver
456
                            delivered_orders[order.airwaybill_no] = str(delivery_date) + "|" +  receiver
487
                            break
457
                            break
488
                        elif element.findtext('StatusCode', '') == 'RTO':
458
                        elif element.findtext('TrackingCode', '') == 'RTO':
489
                            datestring = element.findtext('Date', '')
459
                            datestring = element.findtext('Date', '')
490
                            timestring = element.findtext('Time', '')
460
                            timestring = element.findtext('Time', '')
491
                            delivery_date = get_py_datetime(datestring, timestring)
461
                            delivery_date = get_py_datetime(datestring, timestring)
492
                            if node_number < len(nodes)-1:
462
                            if node_number < len(nodes)-1:
493
                                reason_for_return = nodes[node_number+1].findtext('ServiceEvent', '')
463
                                reason_for_return = nodes[node_number+1].findtext('ServiceEvent', '')
494
                            else:
464
                            else:
495
                                reason_for_return = element.findtext('ServiceEvent', '')
465
                                reason_for_return = element.findtext('ServiceEvent', '')
496
                            returned_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_return
466
                            returned_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_return
497
                            break       
467
                            break       
-
 
468
                        elif element.findtext('TrackingCode', '') == 'UDLD':
-
 
469
                            datestring = element.findtext('Date', '')
-
 
470
                            timestring = element.findtext('Time', '')
-
 
471
                            delivery_date = get_py_datetime(datestring, timestring)
-
 
472
                            if node_number < len(nodes)-1:
-
 
473
                                reason_for_return = nodes[node_number+1].findtext('ServiceEvent', '')
-
 
474
                            else:
-
 
475
                                reason_for_return = element.findtext('ServiceEvent', '')
-
 
476
                            undelivered_orders[order.airwaybill_no] = str(delivery_date) + "|" + reason_for_return
-
 
477
                            break
498
                        node_number = node_number - 1
478
                        node_number = node_number - 1
499
        except:
479
        except:
500
            pass
480
            pass
501
    
481
    
502
    print "Delivered Orders:"
482
    print "Delivered Orders:"
Line 776... Line 756...
776
        process_pickup_records(provider)
756
        process_pickup_records(provider)
777
        #process_dao_pickup_orders(provider)
757
        #process_dao_pickup_orders(provider)
778
        #process_return_pickup_orders(provider)
758
        #process_return_pickup_orders(provider)
779
    if options.delivery_report:
759
    if options.delivery_report:
780
        process_local_connection_orders(provider)
760
        process_local_connection_orders(provider)
781
        #process_reached_destination_city_orders(provider)
761
        process_reached_destination_city_orders(provider)
782
        #process_first_delivery_attempt_orders(provider)
762
        process_first_delivery_attempt_orders(provider)
783
        process_delivery_report(provider)
763
        process_delivery_report(provider)
784
        #create_crm_tickets_for_delivey_attempted_orders(provider)
764
        create_crm_tickets_for_delivey_attempted_orders(provider)
785
        #auto_close_crm_tickets_created()
765
        auto_close_crm_tickets_created()
786
    if options.gen_reports:
766
    if options.gen_reports:
787
        generate_reports(provider)
767
        generate_reports(provider)
788
 
768
 
789
if __name__ == '__main__':
769
if __name__ == '__main__':
790
    main()
770
    main()