| 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)
|