Subversion Repositories SmartDukaan

Rev

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

Rev 35718 Rev 35734
Line 18... Line 18...
18
from reportlab.lib.units import inch, mm
18
from reportlab.lib.units import inch, mm
19
from reportlab.pdfgen.canvas import Canvas
19
from reportlab.pdfgen.canvas import Canvas
20
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, \
20
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, \
21
    BaseDocTemplate, Frame, PageTemplate, Table, TableStyle
21
    BaseDocTemplate, Frame, PageTemplate, Table, TableStyle
22
from reportlab.rl_config import defaultPageSize
22
from reportlab.rl_config import defaultPageSize
23
from shop2020.clients.AlertClient import AlertClient
-
 
24
from shop2020.clients.CRMClient import CRMClient
23
from shop2020.clients.CRMClient import CRMClient
25
from shop2020.clients.CatalogClient import CatalogClient
24
from shop2020.clients.CatalogClient import CatalogClient
26
from shop2020.clients.HelperClient import HelperClient
25
from shop2020.clients.HelperClient import HelperClient
27
from shop2020.clients.InventoryClient import InventoryClient
26
from shop2020.clients.InventoryClient import InventoryClient
28
from shop2020.clients.LogisticsClient import LogisticsClient
27
from shop2020.clients.LogisticsClient import LogisticsClient
Line 66... Line 65...
66
from shop2020.model.v1.order.impl.model.TelecomCircle import TelecomCircle
65
from shop2020.model.v1.order.impl.model.TelecomCircle import TelecomCircle
67
from shop2020.model.v1.order.impl.model.UserWallet import UserWallet
66
from shop2020.model.v1.order.impl.model.UserWallet import UserWallet
68
from shop2020.model.v1.order.impl.model.UserWalletHistory import \
67
from shop2020.model.v1.order.impl.model.UserWalletHistory import \
69
    UserWalletHistory
68
    UserWalletHistory
70
from shop2020.model.v1.user.impl.Converters import to_t_address
69
from shop2020.model.v1.user.impl.Converters import to_t_address
71
from shop2020.thriftpy.alert.ttypes import MonitoredEntity, EntityType
-
 
72
from shop2020.thriftpy.crm.ttypes import *
70
from shop2020.thriftpy.crm.ttypes import *
73
from shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpType
71
from shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpType
74
from shop2020.thriftpy.model.v1.catalog.ttypes import ItemType, ItemCondition
72
from shop2020.thriftpy.model.v1.catalog.ttypes import ItemType, ItemCondition
75
from shop2020.thriftpy.model.v1.inventory.ttypes import BillingType, \
73
from shop2020.thriftpy.model.v1.inventory.ttypes import BillingType, \
76
    InventoryServiceException, WarehouseType, InventoryType, VatType, ItemInventory, \
74
    InventoryServiceException, WarehouseType, InventoryType, VatType, ItemInventory, \
Line 1398... Line 1396...
1398
            if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1396
            if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1399
                return False
1397
                return False
1400
            order.status = OrderStatus.RTO_IN_TRANSIT
1398
            order.status = OrderStatus.RTO_IN_TRANSIT
1401
            order.delivery_timestamp = datetime.datetime.now()
1399
            order.delivery_timestamp = datetime.datetime.now()
1402
            order.statusDescription = "Order Returned to Origin"
1400
            order.statusDescription = "Order Returned to Origin"
1403
            try:
-
 
1404
                alert_client = AlertClient().get_client()
-
 
1405
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
-
 
1406
            except Exception as e:
-
 
1407
                print "Exception in ending alert in MarkOrderAsRTO method"
-
 
1408
                print e
-
 
1409
        update_trust_level(orders[0])
1401
        update_trust_level(orders[0])
1410
        session.commit()
1402
        session.commit()
1411
    else:
1403
    else:
1412
        if selectedOrder == None or selectedOrder.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1404
        if selectedOrder == None or selectedOrder.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1413
            return False
1405
            return False
1414
        selectedOrder.status = OrderStatus.RTO_IN_TRANSIT
1406
        selectedOrder.status = OrderStatus.RTO_IN_TRANSIT
1415
        selectedOrder.delivery_timestamp = datetime.datetime.now()
1407
        selectedOrder.delivery_timestamp = datetime.datetime.now()
1416
        selectedOrder.statusDescription = "Order Returned to Origin"
1408
        selectedOrder.statusDescription = "Order Returned to Origin"
1417
        update_trust_level(selectedOrder)
1409
        update_trust_level(selectedOrder)
1418
        session.commit()
1410
        session.commit()
1419
        try:
-
 
1420
            alert_client = AlertClient().get_client()
-
 
1421
            alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(selectedOrder.id))
-
 
1422
        except Exception as e:
-
 
1423
            print "Exception in ending alert in MarkOrderAsRTO method"
-
 
1424
            print e
-
 
1425
    return True
1411
    return True
1426
    
1412
    
1427
def get_order(order_id):
1413
def get_order(order_id):
1428
    order = Order.get_by(id=order_id)
1414
    order = Order.get_by(id=order_id)
1429
    if not order:
1415
    if not order:
Line 2058... Line 2044...
2058
        orders = Order.query.filter(Order.id.in_(orderIds)).filter_by(warehouse_id = warehouseId, logistics_provider_id = providerId, status = OrderStatus.BILLED).all()
2044
        orders = Order.query.filter(Order.id.in_(orderIds)).filter_by(warehouse_id = warehouseId, logistics_provider_id = providerId, status = OrderStatus.BILLED).all()
2059
        for order in orders:
2045
        for order in orders:
2060
            order.status = OrderStatus.SHIPPED_FROM_WH
2046
            order.status = OrderStatus.SHIPPED_FROM_WH
2061
            order.statusDescription = "Order shipped from warehouse"
2047
            order.statusDescription = "Order shipped from warehouse"
2062
            order.shipping_timestamp = current_timestamp
2048
            order.shipping_timestamp = current_timestamp
2063
            '''
-
 
2064
            try:
-
 
2065
                print "Trying to schedule alert"
-
 
2066
                monitoredEntity = MonitoredEntity();
-
 
2067
                monitoredEntity.entityType=EntityType.COURIER;
-
 
2068
                monitoredEntity.eventType=OrderStatus.SHIPPED_FROM_WH;
-
 
2069
                monitoredEntity.entityIdentifier="orderId = " + str(order.id);
-
 
2070
                adjustedDeliveryDays = adjust_delivery_time(datetime.datetime.now(), 1);
-
 
2071
                sec = datetime.datetime.now()
-
 
2072
                #Warn alert time is taken as 16 hrs
-
 
2073
                warn_time = (sec + timedelta(days=(adjustedDeliveryDays-1)) + timedelta(hours=16))
-
 
2074
                #Critical alert time is taken as 26 hrs                    
-
 
2075
                critical_time = (sec + timedelta(days=(adjustedDeliveryDays-1)) + timedelta(hours=26))
-
 
2076
                monitoredEntity.warnExpiryTime = int(warn_time.strftime("%s"))*1000
-
 
2077
                monitoredEntity.criticalExpiryTime = int(critical_time.strftime("%s"))*1000
-
 
2078
                monitoredEntity.description="warehouseId = " + str(warehouseId) + " providerId = " + str(providerId) + " orderId = "  + str(order.id);
-
 
2079
                alert_client = AlertClient().get_client()
-
 
2080
                alert_client.scheduleAlert(monitoredEntity)
-
 
2081
            except Exception as e:
-
 
2082
                print "Exception in scheduling alert in ShippedFromWarehouse method"
-
 
2083
                print e
-
 
2084
            '''
-
 
2085
            session.commit()
2049
            session.commit()
2086
        logisticsTxnIdOrdersMap = {}
2050
        logisticsTxnIdOrdersMap = {}
2087
        for order in orders:
2051
        for order in orders:
2088
            if order.logisticsTransactionId:
2052
            if order.logisticsTransactionId:
2089
                if logisticsTxnIdOrdersMap.has_key(order.logisticsTransactionId):
2053
                if logisticsTxnIdOrdersMap.has_key(order.logisticsTransactionId):
Line 2195... Line 2159...
2195
            if order.status != OrderStatus.SHIPPED_FROM_WH:
2159
            if order.status != OrderStatus.SHIPPED_FROM_WH:
2196
                continue
2160
                continue
2197
            order.status = OrderStatus.SHIPPED_TO_LOGST
2161
            order.status = OrderStatus.SHIPPED_TO_LOGST
2198
            order.statusDescription = "Order picked up by Courier Company"
2162
            order.statusDescription = "Order picked up by Courier Company"
2199
            order.pickup_timestamp = pickup_timestamp
2163
            order.pickup_timestamp = pickup_timestamp
2200
            
-
 
2201
            try:
-
 
2202
                monitoredEntity = MonitoredEntity();
-
 
2203
                monitoredEntity.entityType=EntityType.COURIER;
-
 
2204
                monitoredEntity.eventType=OrderStatus.SHIPPED_TO_LOGST
-
 
2205
                monitoredEntity.entityIdentifier="orderId = " + str(order.id);
-
 
2206
                adjustedDeliveryDays = adjust_delivery_time(datetime.datetime.now(), 2);
-
 
2207
                sec = datetime.datetime.now()
-
 
2208
                #Warn alert time is taken as 26 hrs
-
 
2209
                warn_time = (sec + timedelta(days=(adjustedDeliveryDays-2)) + timedelta(hours=26))
-
 
2210
                #Critical alert time is taken as 36 hrs                    
-
 
2211
                critical_time = (sec + timedelta(days=(adjustedDeliveryDays-1)) + timedelta(hours=36))
-
 
2212
                monitoredEntity.warnExpiryTime = int(warn_time.strftime("%s"))*1000
-
 
2213
                monitoredEntity.criticalExpiryTime = int(critical_time.strftime("%s"))*1000
-
 
2214
                monitoredEntity.description="providerId = " + str(provider_id)
-
 
2215
                alert_client = AlertClient().get_client()
-
 
2216
                alert_client.updateMonitoredObject(monitoredEntity)
-
 
2217
            except Exception as e:
-
 
2218
                print "Exception in updating alert in MarkOrdersAsPickedUp method"
-
 
2219
                print e
-
 
2220
    session.commit()
2164
    session.commit()
2221
 
2165
 
2222
def get_orders_not_picked_up(provider_id):
2166
def get_orders_not_picked_up(provider_id):
2223
    current_time = datetime.datetime.now()
2167
    current_time = datetime.datetime.now()
2224
    to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
2168
    to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
Line 2254... Line 2198...
2254
                order.first_dlvyatmp_timestamp = order.delivery_timestamp
2198
                order.first_dlvyatmp_timestamp = order.delivery_timestamp
2255
            order.receiver = receiver
2199
            order.receiver = receiver
2256
            if order.pickupStoreId:
2200
            if order.pickupStoreId:
2257
                order.status = OrderStatus.DELIVERED_AT_STORE
2201
                order.status = OrderStatus.DELIVERED_AT_STORE
2258
                order.statusDescription = "Order delivered At Store"
2202
                order.statusDescription = "Order delivered At Store"
2259
                try:
-
 
2260
                    monitoredEntity = MonitoredEntity();
-
 
2261
                    monitoredEntity.entityType=EntityType.COURIER;
-
 
2262
                    monitoredEntity.eventType=OrderStatus.DELIVERED_AT_STORE;
-
 
2263
                    monitoredEntity.entityIdentifier="orderId = " + str(order.id);
-
 
2264
                    #adjustedDeliveryDays = adjust_delivery_time(datetime.datetime.now(), 1);
-
 
2265
                    sec = datetime.datetime.now()
-
 
2266
                    #Critical alert time is taken as 26 hrs                    
-
 
2267
                    critical_time = (sec + timedelta(hours=4))
-
 
2268
                    monitoredEntity.criticalExpiryTime = int(critical_time.strftime("%s"))*1000
-
 
2269
                    monitoredEntity.description="deliveryTimeAtStore = " + str(order.delivery_timestamp) + " orderId = "  + str(order.id);
-
 
2270
                    alert_client = AlertClient().get_client()
-
 
2271
                    alert_client.updateMonitoredObject(monitoredEntity)
-
 
2272
                except Exception as e:
-
 
2273
                    print e
-
 
2274
            else:
2203
            else:
2275
                order.status = OrderStatus.DELIVERY_SUCCESS
2204
                order.status = OrderStatus.DELIVERY_SUCCESS
2276
                order.statusDescription = "Order delivered"
2205
                order.statusDescription = "Order delivered"
2277
                if order.insuranceDetails:
2206
                if order.insuranceDetails:
2278
                    try:
2207
                    try:
Line 2283... Line 2212...
2283
                        return
2212
                        return
2284
                    
2213
                    
2285
                if order.dataInsuranceDetails:
2214
                if order.dataInsuranceDetails:
2286
                    order.dataInsuranceDetails[0].startDate = order.delivery_timestamp
2215
                    order.dataInsuranceDetails[0].startDate = order.delivery_timestamp
2287
                    order.dataInsuranceDetails[0].expiryDate = order.delivery_timestamp + timedelta(days = 90)
2216
                    order.dataInsuranceDetails[0].expiryDate = order.delivery_timestamp + timedelta(days = 90)
2288
                        
-
 
2289
                try:
-
 
2290
                    alert_client = AlertClient().get_client()
-
 
2291
                    alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
-
 
2292
                except Exception as e:
-
 
2293
                    print "Exception in scheduling alert in ShippedFromWarehouse method"
-
 
2294
                    print e
-
 
2295
        
2217
        
2296
    
2218
    
2297
    for logisticsTxnId, ordersList in logisticsTxnIdOrdersMap.iteritems():
2219
    for logisticsTxnId, ordersList in logisticsTxnIdOrdersMap.iteritems():
2298
        if enqueue_delivery_success_mail(logisticsTxnId, ordersList) :
2220
        if enqueue_delivery_success_mail(logisticsTxnId, ordersList) :
2299
            order = ordersList[0]
2221
            order = ordersList[0]
Line 2417... Line 2339...
2417
    #        payment_client = PaymentClient().get_client()
2339
    #        payment_client = PaymentClient().get_client()
2418
    #        payment_client.partiallyCapturePayment(order.transaction.id, order.total_amount, xferBy, xferTxnId, now())
2340
    #        payment_client.partiallyCapturePayment(order.transaction.id, order.total_amount, xferBy, xferTxnId, now())
2419
    #        order.cod_reconciliation_timestamp = datetime.datetime.now()
2341
    #        order.cod_reconciliation_timestamp = datetime.datetime.now()
2420
    #        session.commit()
2342
    #        session.commit()
2421
            
2343
            
2422
        try:
-
 
2423
            alert_client = AlertClient().get_client()
-
 
2424
            alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
-
 
2425
        except Exception as e:
-
 
2426
            print "Exception in ending alert in MarkOrderAsDelivered method"
-
 
2427
            print e
-
 
2428
                        
-
 
2429
    update_trust_level(grouppedOrdersList[0])
2344
    update_trust_level(grouppedOrdersList[0])
2430
    session.commit()
2345
    session.commit()
2431
 
2346
 
2432
    
2347
    
2433
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
2348
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
Line 2436... Line 2351...
2436
        order.status = OrderStatus.RECEIVED_AT_STORE
2351
        order.status = OrderStatus.RECEIVED_AT_STORE
2437
        order.statusDescription = "Order received at store"
2352
        order.statusDescription = "Order received at store"
2438
        order.delivery_timestamp = deliveryTimestamp
2353
        order.delivery_timestamp = deliveryTimestamp
2439
    session.commit()
2354
    session.commit()
2440
    try:
2355
    try:
2441
        alert_client = AlertClient().get_client()
-
 
2442
        alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
-
 
2443
    except Exception as e:
-
 
2444
        print e
-
 
2445
        
-
 
2446
    try:
-
 
2447
        enqueue_received_at_store_email(order)
2356
        enqueue_received_at_store_email(order)
2448
    except Exception as e:
2357
    except Exception as e:
2449
        print e
2358
        print e
2450
 
2359
 
2451
 
2360
 
Line 2462... Line 2371...
2462
                continue
2371
                continue
2463
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2372
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2464
            order.status = OrderStatus.RTO_IN_TRANSIT
2373
            order.status = OrderStatus.RTO_IN_TRANSIT
2465
            order.delivery_timestamp, reason = detail.split('|')
2374
            order.delivery_timestamp, reason = detail.split('|')
2466
            order.statusDescription = "Order Returned to Origin:" + reason
2375
            order.statusDescription = "Order Returned to Origin:" + reason
2467
            try:
-
 
2468
                alert_client = AlertClient().get_client()
-
 
2469
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
-
 
2470
            except Exception as e:
-
 
2471
                print "Exception in ending alert in MarkOrderAsRTO method"
-
 
2472
                print e
-
 
2473
        
2376
 
2474
        update_trust_level(orders[0])        
2377
        update_trust_level(orders[0])        
2475
        session.commit()
2378
        session.commit()
2476
 
2379
 
2477
def get_rto_orders(provider_id):
2380
def get_rto_orders(provider_id):
2478
    current_time = datetime.datetime.now()
2381
    current_time = datetime.datetime.now()
Line 2530... Line 2433...
2530
                continue
2433
                continue
2531
            order.status = OrderStatus.SHIPPED_TO_DESTINATION_CITY
2434
            order.status = OrderStatus.SHIPPED_TO_DESTINATION_CITY
2532
            order.statusDescription = "Left Out of Origin City"
2435
            order.statusDescription = "Left Out of Origin City"
2533
            current_time = datetime.datetime.now()
2436
            current_time = datetime.datetime.now()
2534
            order.local_connected_timestamp = datetime.datetime(current_time.year, current_time.month, current_time.day)
2437
            order.local_connected_timestamp = datetime.datetime(current_time.year, current_time.month, current_time.day)
2535
            try:
-
 
2536
                monitoredEntity = MonitoredEntity();
-
 
2537
                monitoredEntity.entityType=EntityType.COURIER;
-
 
2538
                monitoredEntity.eventType=OrderStatus.SHIPPED_TO_DESTINATION_CITY
-
 
2539
                monitoredEntity.entityIdentifier="orderId = " + str(order.id);
-
 
2540
    
-
 
2541
                sec = datetime.datetime.now()
-
 
2542
                #Warn alert time is taken as 14 hrs less than expected delivery time
-
 
2543
                warn_time1 = (order.expected_delivery_time-timedelta(hours = 14))
-
 
2544
                warn_time2 = sec + timedelta(order.expected_delivery_time - order.expected_shipping_timestamp) - timedelta(sec - order.shipping_time)
-
 
2545
                warn_time = max(warn_time1, warn_time2)
-
 
2546
                
-
 
2547
                #Critical alert time is taken as 13 hrs less than promised delivery time                    
-
 
2548
                critical_time1 = (order.expected_delivery_time-timedelta(hours = 10))
-
 
2549
                critical_time2  = sec + timedelta(order.expected_delivery_time - order.expected_shipping_timestamp) - timedelta(sec - order.shipping_time) + timedelta(hours = 5)
-
 
2550
                critical_time = max(critical_time1, critical_time2)
-
 
2551
                
-
 
2552
                monitoredEntity.warnExpiryTime = int(warn_time.strftime("%s"))*1000
-
 
2553
                monitoredEntity.criticalExpiryTime = int(critical_time.strftime("%s"))*1000
-
 
2554
                monitoredEntity.description="providerId = " + str(provider_id) + " destination city " + order.customer_city 
-
 
2555
                alert_client = AlertClient().get_client()
-
 
2556
                alert_client.updateMonitoredObject(monitoredEntity)
-
 
2557
            except Exception as e:
-
 
2558
                print "Exception in updating alert in MarkOrderAsLocalConnected method"
-
 
2559
                print e
-
 
2560
            session.commit()
2438
            session.commit()
2561
 
2439
 
2562
def get_orders_not_local_connected(provider_id):
2440
def get_orders_not_local_connected(provider_id):
2563
    current_time = datetime.datetime.now()
2441
    current_time = datetime.datetime.now()
2564
    to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
2442
    to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
Line 2578... Line 2456...
2578
                continue
2456
                continue
2579
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2457
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2580
            order.status = OrderStatus.REACHED_DESTINATION_CITY
2458
            order.status = OrderStatus.REACHED_DESTINATION_CITY
2581
            order.statusDescription = "Reached Destination City"
2459
            order.statusDescription = "Reached Destination City"
2582
            order.reached_destination_timestamp = timestamp
2460
            order.reached_destination_timestamp = timestamp
2583
            try:
-
 
2584
                monitoredEntity = MonitoredEntity();
-
 
2585
                monitoredEntity.entityType=EntityType.COURIER;
-
 
2586
                monitoredEntity.eventType=OrderStatus.REACHED_DESTINATION_CITY
-
 
2587
                monitoredEntity.entityIdentifier="orderId = " + str(order.id);
-
 
2588
        
-
 
2589
                sec = datetime.datetime.now()
-
 
2590
                #Warn alert time is taken as expected delivery time
-
 
2591
                warn_time1 = (order.expected_delivery_time)
-
 
2592
                warn_time2 = sec + timedelta(order.expected_delivery_time - order.expected_shipping_time) - timedelta(sec - order.shipping_time)
-
 
2593
                warn_time = max(warn_time1, warn_time2)
-
 
2594
                
-
 
2595
                #Critical alert time is taken as 13 hrs less than promised delivery time                    
-
 
2596
                critical_time1 = (order.expected_delivery_time + timedelta(hours = 5))
-
 
2597
                critical_time2  = sec + timedelta(order.expected_delivery_time - order.expected_shipping_time) - timedelta(sec - order.shipping_time) + timedelta(hours = 5)
-
 
2598
                critical_time = max(critical_time1, critical_time2)
-
 
2599
                
-
 
2600
                monitoredEntity.warnExpiryTime = int(warn_time.strftime("%s"))*1000
-
 
2601
                monitoredEntity.criticalExpiryTime = int(critical_time.strftime("%s"))*1000
-
 
2602
                monitoredEntity.description="providerId = " + str(provider_id) + " destination city " + order.customer_city 
-
 
2603
                alert_client = AlertClient().get_client()
-
 
2604
                alert_client.updateMonitoredObject(monitoredEntity)
-
 
2605
            except Exception as e:
-
 
2606
                print "Exception in updating alert in MarkOrderAsDestCityReached method"
-
 
2607
                print e
-
 
2608
        session.commit()
2461
        session.commit()
2609
 
2462
 
2610
def mark_orders_as_firstDeliveryAttempted(provider_id, first_atdl_orders):
2463
def mark_orders_as_firstDeliveryAttempted(provider_id, first_atdl_orders):
2611
    for awb, detail in first_atdl_orders.iteritems():
2464
    for awb, detail in first_atdl_orders.iteritems():
2612
        orders = None
2465
        orders = None
Line 2620... Line 2473...
2620
                continue
2473
                continue
2621
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2474
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2622
            order.status = OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE
2475
            order.status = OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE
2623
            order.first_dlvyatmp_timestamp, reason = detail.split('|')
2476
            order.first_dlvyatmp_timestamp, reason = detail.split('|')
2624
            order.statusDescription = reason
2477
            order.statusDescription = reason
2625
            try:
-
 
2626
                monitoredEntity = MonitoredEntity();
-
 
2627
                monitoredEntity.entityType=EntityType.COURIER;
-
 
2628
                monitoredEntity.eventType=OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE
-
 
2629
                monitoredEntity.entityIdentifier="orderId = " + str(order.id);
-
 
2630
                adjustedDeliveryDaysfor1day = adjust_delivery_time(datetime.datetime.now(), 1);
-
 
2631
                adjustedDeliveryDaysfor2days = adjust_delivery_time(datetime.datetime.now(), 2);
-
 
2632
                sec = datetime.datetime.now()
-
 
2633
                #Warn alert time is taken as 16 hrs
-
 
2634
                warn_time = (sec + timedelta(days=(adjustedDeliveryDaysfor1day-1)) + timedelta(hours=24))
-
 
2635
                #Critical alert time is taken as 26 hrs                    
-
 
2636
                critical_time = (sec + timedelta(days=(adjustedDeliveryDaysfor2days-2)) + timedelta(hours=48))
-
 
2637
                monitoredEntity.warnExpiryTime = int(warn_time.strftime("%s"))*1000
-
 
2638
                monitoredEntity.criticalExpiryTime = int(critical_time.strftime("%s"))*1000
-
 
2639
                monitoredEntity.description="providerId = " + str(provider_id) + " first attempt timestamp" + order.first_dlvyatmp_timestamp
-
 
2640
                alert_client = AlertClient().get_client()
-
 
2641
                alert_client.updateMonitoredObject(monitoredEntity)
-
 
2642
            except Exception as e:
-
 
2643
                print "Exception in updating alert in MarkOrdersAsFirstDeliveryAttempted method"
-
 
2644
                print e
-
 
2645
        session.commit()
2478
        session.commit()
2646
 
2479
 
2647
def get_orders_not_met_expected_delivery_date():
2480
def get_orders_not_met_expected_delivery_date():
2648
    current_time = datetime.datetime.now()
2481
    current_time = datetime.datetime.now()
2649
    today_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
2482
    today_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)