Subversion Repositories SmartDukaan

Rev

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

Rev 19989 Rev 20641
Line 495... Line 495...
495
    returnMap = {}
495
    returnMap = {}
496
    missingItemPricingList = []
496
    missingItemPricingList = []
497
    for item_id, pricing in itemPricingMap.iteritems():
497
    for item_id, pricing in itemPricingMap.iteritems():
498
        if not pricing:
498
        if not pricing:
499
            missingItemPricingList.append(item_id)
499
            missingItemPricingList.append(item_id)
500
        
500
    if missingItemPricingList:
501
    cc = CatalogClient().get_client()
501
        cc = CatalogClient().get_client()
502
    items = cc.getItems(missingItemPricingList)
502
        items = cc.getItems(missingItemPricingList)
503
    lc = LogisticsClient().get_client()
503
        lc = LogisticsClient().get_client()
504
    #Consider selling price if its missing in itempricing
504
        #Consider selling price if its missing in itempricing
505
    for item in items:
505
        for item in items:
506
        itemPricingMap[item.id] = item.sellingPrice
506
            itemPricingMap[item.id] = item.sellingPrice
507
    pricingLocationInfoMap = __getLocationInfoMap(pin_code, itemPricingMap)    
507
    pricingLocationInfoMap = __getLocationInfoMap(pin_code, itemPricingMap)    
508
    if pricingLocationInfoMap == -1:
508
    if pricingLocationInfoMap == -1:
509
        returnMap = {"pincode_serviceable":False}    
509
        returnMap = {"pincode_serviceable":False}    
510
    else:
510
    else:
511
        #for item_id, sellingPrice in itemPricingMap.iteritems():
511
        #for item_id, sellingPrice in itemPricingMap.iteritems():
512
        allLocations = pricingLocationInfoMap[1].keys()    
512
        allLocations = pricingLocationInfoMap[1].keys()    
513
        itemLocationAvailability = ItemLocationAvailabilityCache()
-
 
514
        itemLocationAvailabilityList = __get_item_location_availability_bulk(itemPricingMap.keys(), allLocations)
513
        itemLocationAvailabilityList = __get_item_location_availability_bulk(itemPricingMap.keys(), allLocations)
515
        pricingLocationsMap = {}
514
        pricingLocationsMap = {}
516
        for itemLocationAvailability in itemLocationAvailabilityList:
515
        for itemLocationAvailability in itemLocationAvailabilityList:
517
            sellingPrice = itemPricingMap[itemLocationAvailability.item_id]
516
            sellingPrice = itemPricingMap[itemLocationAvailability.item_id]
518
            if pricingLocationInfoMap[sellingPrice] == -1:
517
            if pricingLocationInfoMap[sellingPrice] == -1:
Line 549... Line 548...
549
            
548
            
550
    return json.dumps(returnMap)
549
    return json.dumps(returnMap)
551
             
550
             
552
    
551
    
553
def __getLocationInfoMap(pin_code, itemPricingMap):
552
def __getLocationInfoMap(pin_code, itemPricingMap):
554
    priceList = list(set(itemPricingMap.values())) + [1]
553
    priceSet = set(itemPricingMap.values() + [1])
555
    if not pincodePricingServiceabilityMap.has_key(pin_code):
554
    if not pincodePricingServiceabilityMap.has_key(pin_code):
556
        pincodePricingServiceabilityMap[pin_code] = {}
555
        pincodePricingServiceabilityMap[pin_code] = {}
557
    pricingMap = pincodePricingServiceabilityMap[pin_code]
556
    pricingMap = pincodePricingServiceabilityMap[pin_code]
558
    if pricingMap != -1: 
557
    if pricingMap != -1: 
559
        missingInMap = []
-
 
560
        for sellingPrice in priceList:
-
 
561
            if not pricingMap.has_key(sellingPrice):
558
        missingInMap = list(priceSet - set(pricingMap.keys())) 
562
                missingInMap.append(sellingPrice)
559
        if missingInMap:
563
        
-
 
564
        lc = LogisticsClient().get_client()
560
            lc = LogisticsClient().get_client()
565
        priceLocationInfoMap = lc.getLocationInfoMap(pin_code, missingInMap)
561
            priceLocationInfoMap = lc.getLocationInfoMap(pin_code, missingInMap)
566
        if not priceLocationInfoMap:
562
            if not priceLocationInfoMap:
567
            pricingMap = pincodePricingServiceabilityMap[pin_code] = -1
563
                pricingMap = pincodePricingServiceabilityMap[pin_code] = -1
568
        else:
564
            else:
569
            for sellingPrice in missingInMap:
565
                for sellingPrice in missingInMap:
570
                if priceLocationInfoMap[sellingPrice] == {}:
566
                    if priceLocationInfoMap[sellingPrice] == {}:
571
                    pricingMap[sellingPrice] = -1
567
                        pricingMap[sellingPrice] = -1
572
                else:
568
                    else:
573
                    pricingMap[sellingPrice] = priceLocationInfoMap[sellingPrice]
569
                        pricingMap[sellingPrice] = priceLocationInfoMap[sellingPrice]
574
        
570
        
575
    return pricingMap
571
    return pricingMap
576
    
572
    
577
def __getDeliveryDate(minDays, isCod, maxDays=None):
573
def __getDeliveryDate(minDays, isCod, maxDays=None):
578
    curTime = datetime.datetime.now()
574
    curTime = datetime.datetime.now()
Line 625... Line 621...
625
#i.e. if user visiting to our site has specific source he would se pricing on that souce basis. Default source is 1.
621
#i.e. if user visiting to our site has specific source he would se pricing on that souce basis. Default source is 1.
626
def get_item_availability_for_location(item_id, source_id):
622
def get_item_availability_for_location(item_id, source_id):
627
    item_availability = ItemAvailabilityCache.get_by(itemId=item_id, sourceId = source_id)
623
    item_availability = ItemAvailabilityCache.get_by(itemId=item_id, sourceId = source_id)
628
    if item_availability:
624
    if item_availability:
629
        return [item_availability.warehouseId, item_availability.expectedDelay, item_availability.billingWarehouseId, item_availability.sellingPrice, item_availability.totalAvailability, item_availability.weight]
625
        return [item_availability.warehouseId, item_availability.expectedDelay, item_availability.billingWarehouseId, item_availability.sellingPrice, item_availability.totalAvailability, item_availability.weight]
-
 
626
        #return [item_availability.warehouseId, item_availability.expectedDelay, item_availability.billingWarehouseId, item_availability.sellingPrice, 0, item_availability.weight]
630
    else:
627
    else:
631
        __update_item_availability_cache(item_id, source_id)
628
        __update_item_availability_cache(item_id, source_id)
632
            ##Check risky status for the source
629
            ##Check risky status for the source
633
        __check_risky_item(item_id, source_id)
630
        __check_risky_item(item_id, source_id)
634
        return get_item_availability_for_location(item_id, source_id)
631
        return get_item_availability_for_location(item_id, source_id)