Subversion Repositories SmartDukaan

Rev

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

Rev 9945 Rev 10097
Line 17... Line 17...
17
    Category, EntityIDGenerator, SimilarItems, ProductNotification, Source, \
17
    Category, EntityIDGenerator, SimilarItems, ProductNotification, Source, \
18
    SourceItemPricing, AuthorizationLog, VoucherItemMapping, CategoryVatMaster, \
18
    SourceItemPricing, AuthorizationLog, VoucherItemMapping, CategoryVatMaster, \
19
    OOSTracker, EntityTag, ItemInsurerMapping, Insurer, Banner, BannerMap, \
19
    OOSTracker, EntityTag, ItemInsurerMapping, Insurer, Banner, BannerMap, \
20
    FreebieItem, BrandInfo, Amazonlisted, StorePricing, ItemVatMaster, \
20
    FreebieItem, BrandInfo, Amazonlisted, StorePricing, ItemVatMaster, \
21
    PageViewEvents, CartEvents, EbayItem, BannerUriMapping, Campaign, SnapdealItem, \
21
    PageViewEvents, CartEvents, EbayItem, BannerUriMapping, Campaign, SnapdealItem, \
22
    SnapdealItemUpdateHistory, ProductFeedSubmit, MarketplaceItems, MarketPlaceItemPrice, \
22
    ProductFeedSubmit, MarketplaceItems, MarketPlaceItemPrice, \
23
    SourcePercentageMaster, SourceItemPercentage, FlipkartItem
23
    SourcePercentageMaster, SourceItemPercentage, FlipkartItem, MarketPlaceUpdateHistory, \
-
 
24
    SourceCategoryPercentage
24
from shop2020.thriftpy.model.v1.catalog.ttypes import status, ItemShippingInfo, \
25
from shop2020.thriftpy.model.v1.catalog.ttypes import status, ItemShippingInfo, \
25
    ItemType, PremiumType, FreebieItem as t_FreebieItem, \
26
    ItemType, PremiumType, FreebieItem as t_FreebieItem, \
26
    StorePricing as tStorePricing, CatalogServiceException, \
27
    StorePricing as tStorePricing, CatalogServiceException, \
27
    BannerType, InsurerType
28
    BannerType, InsurerType, Banner as t_banner
28
from shop2020.thriftpy.model.v1.inventory.ttypes import \
29
from shop2020.thriftpy.model.v1.inventory.ttypes import \
29
    InventoryServiceException, IgnoredInventoryUpdateItems,SnapdealInventoryItem
30
    InventoryServiceException, IgnoredInventoryUpdateItems,SnapdealInventoryItem
-
 
31
from shop2020.thriftpy.model.v1.order.ttypes import OrderSource
30
from shop2020.utils import EmailAttachmentSender
32
from shop2020.utils import EmailAttachmentSender
31
from shop2020.utils.EmailAttachmentSender import mail
33
from shop2020.utils.EmailAttachmentSender import mail
32
from shop2020.utils.Utils import to_py_date, log_risky_flag
34
from shop2020.utils.Utils import to_py_date, log_risky_flag
33
from sqlalchemy import desc, asc
35
from sqlalchemy import desc, asc
34
from sqlalchemy.sql.expression import or_, distinct, func, and_
36
from sqlalchemy.sql.expression import or_, distinct, func, and_
Line 1431... Line 1433...
1431
        banner_details.imageName=banner.imageName
1433
        banner_details.imageName=banner.imageName
1432
        banner_details.link=banner.link
1434
        banner_details.link=banner.link
1433
        banner_details.hasMap=banner.hasMap
1435
        banner_details.hasMap=banner.hasMap
1434
        banner_details.priority = banner.priority
1436
        banner_details.priority = banner.priority
1435
        banner_details.bannerType = banner.bannerType
1437
        banner_details.bannerType = banner.bannerType
-
 
1438
        add_banner_map(t_bannerMaps,banner.bannerType)
-
 
1439
        add_banner_uri(t_bannerUriMappings,banner.bannerType)
1436
        session.commit()
1440
        session.commit()
-
 
1441
        return True
1437
    except:
1442
    except:
1438
        return
1443
        return False
1439
    add_banner_map(t_bannerMaps,banner.bannerType)
-
 
1440
    add_banner_uri(t_bannerUriMappings,banner.bannerType)
-
 
1441
 
-
 
1442
def get_all_banners():
1444
def get_all_banners():
1443
    return session.query(Banner).all()
1445
    return session.query(Banner).all()
1444
 
1446
 
1445
def delete_banner(name,bType):
1447
def delete_banner(name,bType):
1446
    try:
1448
    try:
1447
        session.query(Banner.bannerName).filter_by(bannerName=name).filter_by(bannerType=bType).delete()
1449
        session.query(Banner.bannerName).filter_by(bannerName=name).filter_by(bannerType=bType).delete()
1448
        session.commit()
-
 
1449
        delete_banner_map(name,bType)
1450
        delete_banner_map(name,bType)
1450
        delete_uri_mapping(name,bType)
1451
        delete_uri_mapping(name,bType)
-
 
1452
        session.commit()
1451
        return True
1453
        return True
1452
    except:
1454
    except:
1453
        return False
1455
        return False
1454
 
1456
 
1455
def get_banner_details(name,bType):
1457
def get_banner_details(name,bType):
1456
    banner = session.query(Banner).filter(Banner.bannerName==name).filter(Banner.bannerType==bType).one()
1458
    banner = session.query(Banner).filter(Banner.bannerName==name).filter(Banner.bannerType==bType).one()
1457
    return banner  
1459
    return banner
-
 
1460
 
-
 
1461
def __t_banner_details(name,bType,target):
-
 
1462
    banner = session.query(Banner).filter(Banner.bannerName==name).filter(Banner.bannerType==bType).one()
-
 
1463
    bannerObj = t_banner()
-
 
1464
    bannerObj.bannerName = banner.bannerName
-
 
1465
    bannerObj.imageName = banner.imageName
-
 
1466
    bannerObj.link = banner.link
-
 
1467
    bannerObj.priority = banner.priority
-
 
1468
    bannerObj.hasMap = banner.hasMap
-
 
1469
    bannerObj.bannerType = banner.bannerType
-
 
1470
    bannerObj.target = target
-
 
1471
    return bannerObj
-
 
1472
 
1458
 
1473
 
1459
def get_active_banners():
1474
def get_active_banners():
1460
    bannerUriMap = {}
1475
    bannerUriMap = {}
1461
    bannerType = [1,2]
1476
    bannerType = [1,2]
1462
    all_active = session.query(BannerUriMapping,Banner).filter(BannerUriMapping.bannerType.in_(bannerType)).filter(BannerUriMapping.isActive==True).filter(BannerUriMapping.bannerName==Banner.bannerName).filter(BannerUriMapping.bannerType==Banner.bannerType).order_by(desc(Banner.priority)).all()
1477
    all_active = session.query(BannerUriMapping,Banner).filter(BannerUriMapping.bannerType.in_(bannerType)).filter(BannerUriMapping.isActive==True).filter(BannerUriMapping.bannerName==Banner.bannerName).filter(BannerUriMapping.bannerType==Banner.bannerType).order_by(desc(Banner.priority)).all()
Line 1464... Line 1479...
1464
        bannerObj = []
1479
        bannerObj = []
1465
        if (bannerUriMapping[0].bannerType == BannerType.SIDE_BANNER):
1480
        if (bannerUriMapping[0].bannerType == BannerType.SIDE_BANNER):
1466
            if 'side-banner' in bannerUriMap:
1481
            if 'side-banner' in bannerUriMap:
1467
                for obj in bannerUriMap['side-banner']:
1482
                for obj in bannerUriMap['side-banner']:
1468
                    bannerObj.append(obj)
1483
                    bannerObj.append(obj)
1469
            bannerObj.append(get_banner_details(bannerUriMapping[0].bannerName,bannerUriMapping[0].bannerType))
1484
            bannerObj.append(__t_banner_details(bannerUriMapping[0].bannerName,bannerUriMapping[0].bannerType,bannerUriMapping[0].target))
1470
            bannerUriMap['side-banner'] = bannerObj
1485
            bannerUriMap['side-banner'] = bannerObj
1471
            continue
1486
            continue
1472
        if bannerUriMapping[0].uri not in bannerUriMap:
1487
        if bannerUriMapping[0].uri not in bannerUriMap:
1473
            bannerObj.append(get_banner_details(bannerUriMapping[0].bannerName,bannerUriMapping[0].bannerType))
1488
            bannerObj.append(__t_banner_details(bannerUriMapping[0].bannerName,bannerUriMapping[0].bannerType,bannerUriMapping[0].target))
1474
            bannerUriMap[bannerUriMapping[0].uri] = bannerObj
1489
            bannerUriMap[bannerUriMapping[0].uri] = bannerObj
1475
        else:
1490
        else:
1476
            for obj in bannerUriMap[bannerUriMapping[0].uri]:
1491
            for obj in bannerUriMap[bannerUriMapping[0].uri]:
1477
                bannerObj.append(obj)
1492
                bannerObj.append(obj)
1478
            bannerObj.append(get_banner_details(bannerUriMapping[0].bannerName,bannerUriMapping[0].bannerType))
1493
            bannerObj.append(__t_banner_details(bannerUriMapping[0].bannerName,bannerUriMapping[0].bannerType,bannerUriMapping[0].target))
1479
            bannerUriMap[bannerUriMapping[0].uri] = bannerObj
1494
            bannerUriMap[bannerUriMapping[0].uri] = bannerObj
1480
    return bannerUriMap
1495
    return bannerUriMap
1481
        
1496
        
1482
 
1497
 
1483
def add_banner_map(bannerMaps,bannerType):
1498
def add_banner_map(bannerMaps,bannerType):
1484
    try:
-
 
1485
        for bannerMap in bannerMaps:
1499
    for bannerMap in bannerMaps:
1486
            banner_map_details=BannerMap()
1500
        banner_map_details=BannerMap()
1487
            banner_map_details.bannerName=bannerMap.bannerName
1501
        banner_map_details.bannerName=bannerMap.bannerName
1488
            banner_map_details.mapLink=bannerMap.mapLink
1502
        banner_map_details.mapLink=bannerMap.mapLink
1489
            banner_map_details.coordinates=bannerMap.coordinates
1503
        banner_map_details.coordinates=bannerMap.coordinates
1490
            banner_map_details.bannerType = bannerType
1504
        banner_map_details.bannerType = bannerType
1491
            session.commit()
-
 
1492
        return True
-
 
1493
    except:
-
 
1494
        return False
-
 
1495
    
1505
    
1496
 
1506
 
1497
def delete_banner_map(name,bType):
1507
def delete_banner_map(name,bType):
1498
    try:
-
 
1499
        session.query(BannerMap.bannerName).filter_by(bannerName=name).filter_by(bannerType=bType).delete()
1508
    session.query(BannerMap.bannerName).filter_by(bannerName=name).filter_by(bannerType=bType).delete()
1500
        session.commit()
-
 
1501
        return True
-
 
1502
    except:
-
 
1503
        return False
-
 
1504
 
1509
 
1505
def delete_uri_mapping(name,bType):
1510
def delete_uri_mapping(name,bType):
1506
    try:
-
 
1507
        session.query(BannerUriMapping.bannerName).filter_by(bannerName=name).filter_by(bannerType=bType).delete()
1511
    session.query(BannerUriMapping.bannerName).filter_by(bannerName=name).filter_by(bannerType=bType).delete()
1508
        session.commit()
-
 
1509
    except:
-
 
1510
        return False
-
 
1511
 
1512
 
1512
def get_banner_map_details(name,bType):
1513
def get_banner_map_details(name,bType):
1513
    query= session.query(BannerMap)
1514
    query= session.query(BannerMap)
1514
    return query.filter_by(bannerName=name).filter_by(bannerType=bType).all()
1515
    return query.filter_by(bannerName=name).filter_by(bannerType=bType).all()
1515
 
1516
 
Line 1533... Line 1534...
1533
        banner_uri = BannerUriMapping()
1534
        banner_uri = BannerUriMapping()
1534
        banner_uri.bannerName = bannerUriMapping.bannerName
1535
        banner_uri.bannerName = bannerUriMapping.bannerName
1535
        banner_uri.uri = bannerUriMapping.uri
1536
        banner_uri.uri = bannerUriMapping.uri
1536
        banner_uri.isActive = bannerUriMapping.isActive
1537
        banner_uri.isActive = bannerUriMapping.isActive
1537
        banner_uri.bannerType = bannerType
1538
        banner_uri.bannerType = bannerType
1538
        session.commit()
1539
        banner_uri.target = bannerUriMapping.target
1539
 
1540
 
1540
def get_uri_mapping(name,bType):
1541
def get_uri_mapping(name,bType):
1541
    query= session.query(BannerUriMapping)
1542
    query= session.query(BannerUriMapping)
1542
    return query.filter_by(bannerName=name).filter_by(bannerType=bType).all()
1543
    return query.filter_by(bannerName=name).filter_by(bannerType=bType).all()
1543
 
1544
 
Line 2093... Line 2094...
2093
    if not __validateSnapdealObject(snapdealitem):
2094
    if not __validateSnapdealObject(snapdealitem):
2094
        print "Bad object"
2095
        print "Bad object"
2095
        return False
2096
        return False
2096
    try:
2097
    try:
2097
        if item is not None:
2098
        if item is not None:
2098
            itemHistory = SnapdealItemUpdateHistory()
2099
            itemHistory = MarketPlaceUpdateHistory()
2099
            itemHistory.item_id = snapdealitem.item_id
2100
            itemHistory.item_id = snapdealitem.item_id
-
 
2101
            itemHistory.source = OrderSource.SNAPDEAL
2100
            itemHistory.exceptionPrice = item.exceptionPrice
2102
            itemHistory.exceptionPrice = item.exceptionPrice
2101
            itemHistory.warehouseId = item.warehouseId
2103
            itemHistory.warehouseId = item.warehouseId
2102
            itemHistory.isListedOnSnapdeal = item.isListedOnSnapdeal
2104
            itemHistory.isListedOnSource = item.isListedOnSnapdeal
2103
            itemHistory.transferPrice = item.transferPrice
2105
            itemHistory.transferPrice = item.transferPrice
2104
            itemHistory.sellingPrice = item.sellingPrice
2106
            itemHistory.sellingPrice = item.sellingPrice
2105
            itemHistory.courierCost = item.courierCost
2107
            itemHistory.courierCost = item.courierCost
2106
            itemHistory.commission = item.commission
2108
            itemHistory.commission = item.commission
2107
            itemHistory.serviceTax = item.serviceTax
2109
            itemHistory.serviceTax = item.serviceTax
2108
            itemHistory.suppressPriceFeed = item.suppressPriceFeed
2110
            itemHistory.suppressPriceFeed = item.suppressPriceFeed
2109
            itemHistory.suppressInventoryFeed = item.suppressInventoryFeed
2111
            itemHistory.suppressInventoryFeed = item.suppressInventoryFeed
2110
            itemHistory.updatedOn = item.updatedOn
2112
            itemHistory.updatedOn = item.updatedOn
2111
            itemHistory.maxNlc = item.maxNlc
2113
            itemHistory.maxNlc = item.maxNlc
2112
            itemHistory.skuAtSnapdeal = item.skuAtSnapdeal
2114
            itemHistory.skuAtSource = item.skuAtSnapdeal
2113
            itemHistory.supc = item.supc
2115
            itemHistory.marketPlaceSerialNumber = item.supc
2114
            itemHistory.priceUpdatedBy = item.priceUpdatedBy
2116
            itemHistory.priceUpdatedBy = item.priceUpdatedBy
2115
            
2117
            
2116
            if (item.sellingPrice!=snapdealitem.sellingPrice):
2118
            if (item.sellingPrice!=snapdealitem.sellingPrice):
2117
                item.priceUpdatedBy = snapdealitem.updatedBy
2119
                item.priceUpdatedBy = snapdealitem.updatedBy
2118
                
2120
                
Line 2353... Line 2355...
2353
        return True
2355
        return True
2354
    except Exception as e:
2356
    except Exception as e:
2355
        print e
2357
        print e
2356
        return False
2358
        return False
2357
    
2359
    
-
 
2360
def __markStatusForFlipkartItems(flipkartItem,item):
-
 
2361
    try:
-
 
2362
        marketplaceItem = flipkartItem.marketplaceItems
-
 
2363
        markUpdatedItem = MarketPlaceItemPrice.query.filter(MarketPlaceItemPrice.item_id==flipkartItem.item_id).filter(MarketPlaceItemPrice.source==marketplaceItem.source).first()
-
 
2364
        if markUpdatedItem is None:
-
 
2365
            marketPlaceItemPrice = MarketPlaceItemPrice()
-
 
2366
            marketPlaceItemPrice.item_id = flipkartItem.item_id
-
 
2367
            marketPlaceItemPrice.source = marketplaceItem.source
-
 
2368
            marketPlaceItemPrice.lastUpdatedOn = item.updatedOn
-
 
2369
            marketPlaceItemPrice.sellingPrice = marketplaceItem.currentSp 
-
 
2370
            marketPlaceItemPrice.suppressPriceFeed = item.suppressPriceFeed
-
 
2371
            marketPlaceItemPrice.isListedOnSource = item.isListedOnFlipkart
-
 
2372
        else:
-
 
2373
            if (markUpdatedItem.sellingPrice!=marketplaceItem.currentSp or markUpdatedItem.suppressPriceFeed!=item.suppressPriceFeed or markUpdatedItem.isListedOnSource!=item.isListedOnFlipkart):
-
 
2374
                markUpdatedItem.lastUpdatedOn = item.updatedOn
-
 
2375
            markUpdatedItem.sellingPrice = marketplaceItem.currentSp
-
 
2376
            markUpdatedItem.suppressPriceFeed = item.suppressPriceFeed
-
 
2377
            markUpdatedItem.isListedOnSource = item.isListedOnFlipkart
-
 
2378
        return True
-
 
2379
    except Exception as e:
-
 
2380
        print e
-
 
2381
        return False
-
 
2382
    
-
 
2383
    
2358
def get_costing_for_marketplace(source_id,itemId):
2384
def get_costing_for_marketplace(source_id,itemId):
2359
    sip = SourceItemPercentage.get_by(source=source_id,item_id=itemId)
2385
    time = datetime.datetime.now()
-
 
2386
    sip = SourceItemPercentage.query.filter(SourceItemPercentage.item_id==itemId).filter(SourceItemPercentage.source==source_id).filter(SourceItemPercentage.startDate<=time).filter(SourceItemPercentage.expiryDate>=time).first()
2360
    if sip is None:
2387
    if sip is not None:
2361
        spm = SourcePercentageMaster.get_by(source=source_id)
-
 
2362
        return spm
-
 
2363
    else:
-
 
2364
        return sip
2388
        return sip
-
 
2389
    else:
-
 
2390
        item = get_item(itemId)
-
 
2391
        scp = SourceCategoryPercentage.query.filter(SourceCategoryPercentage.category_id==item.category).filter(SourceCategoryPercentage.source==source_id).filter(SourceCategoryPercentage.startDate<=time).filter(SourceCategoryPercentage.expiryDate>=time).first()
-
 
2392
        if scp is not None:
-
 
2393
            return scp
-
 
2394
        else:
-
 
2395
            spm = SourcePercentageMaster.get_by(source=source_id)
-
 
2396
            return spm
2365
    
2397
    
2366
def __validateSnapdealObject(snapdealItem):
2398
def __validateSnapdealObject(snapdealItem):
2367
    if len(snapdealItem.supc)==0 or snapdealItem.supc is None or len(snapdealItem.skuAtSnapdeal)==0 or snapdealItem.skuAtSnapdeal is None or snapdealItem.sellingPrice==0 or snapdealItem.maxNlc==0:
2399
    if len(snapdealItem.supc)==0 or snapdealItem.supc is None or len(snapdealItem.skuAtSnapdeal)==0 or snapdealItem.skuAtSnapdeal is None or snapdealItem.sellingPrice==0 or snapdealItem.maxNlc==0:
2368
        return False
2400
        return False
2369
    else:
2401
    else:
2370
        return True
2402
        return True
-
 
2403
    
-
 
2404
def __validateFlipkartObject(flipkartitem):
-
 
2405
    mpItem = flipkartitem.marketplaceItems
-
 
2406
    print mpItem
-
 
2407
    if mpItem.currentSp==0 or flipkartitem.maxNlc==0:
-
 
2408
        return False
-
 
2409
    else:
-
 
2410
        return True
2371
        
2411
        
2372
            
2412
            
2373
def get_all_marketplace_items_for_priceupdate(source):
2413
def get_all_marketplace_items_for_priceupdate(source):
2374
    marketPlaceItemsPrices = MarketPlaceItemPrice.query.filter(MarketPlaceItemPrice.source == source).filter(MarketPlaceItemPrice.lastUpdatedOn > MarketPlaceItemPrice.lastUpdatedOnMarketplace).all()
2414
    marketPlaceItemsPrices = MarketPlaceItemPrice.query.filter(MarketPlaceItemPrice.source == source).filter(MarketPlaceItemPrice.lastUpdatedOn > MarketPlaceItemPrice.lastUpdatedOnMarketplace).all()
2375
    print marketPlaceItemsPrices 
-
 
2376
    return marketPlaceItemsPrices
2415
    return marketPlaceItemsPrices
2377
 
2416
 
2378
def update_marketplace_priceupdate_status(skuList,timestamp,source_id):
2417
def update_marketplace_priceupdate_status(skuList,timestamp,source_id):
2379
    for sku in skuList:
2418
    for sku in skuList:
2380
            item = MarketPlaceItemPrice.get_by(item_id=sku,source=source_id)
2419
            item = MarketPlaceItemPrice.get_by(item_id=sku,source=source_id)
Line 2402... Line 2441...
2402
        if item is not None:
2441
        if item is not None:
2403
            marketplaceitem =  MarketplaceItems.get_by(itemId=itemid,source=7)
2442
            marketplaceitem =  MarketplaceItems.get_by(itemId=itemid,source=7)
2404
            ic = InventoryClient().get_client()
2443
            ic = InventoryClient().get_client()
2405
            warehouse = ic.getWarehouse(item.warehouseId)
2444
            warehouse = ic.getWarehouse(item.warehouseId)
2406
            if(warehouse.vendor.id==vendor_id):
2445
            if(warehouse.vendor.id==vendor_id):
2407
                print 'Inside maxnlc change'
-
 
2408
                item.maxNlc = nlc
2446
                item.maxNlc = nlc
2409
                vat = (item.sellingPrice/(1+(marketplaceitem.vat/100))-(nlc/(1+(marketplaceitem.vat/100))))*(marketplaceitem.vat/100)
2447
                vat = (item.sellingPrice/(1+(marketplaceitem.vat/100))-(nlc/(1+(marketplaceitem.vat/100))))*(marketplaceitem.vat/100)
2410
                inHouseCost = 15 + vat + (marketplaceitem.returnProvision/100)*item.sellingPrice + marketplaceitem.otherCost
2448
                inHouseCost = 15 + vat + (marketplaceitem.returnProvision/100)*item.sellingPrice + marketplaceitem.otherCost
2411
                marketplaceitem.minimumPossibleTp  = nlc + inHouseCost
2449
                marketplaceitem.minimumPossibleTp  = nlc + inHouseCost
2412
                marketplaceitem.minimumPossibleSp = (nlc+(item.courierCost+marketplaceitem.closingFee)*(1+(marketplaceitem.serviceTax/100))*(1+(marketplaceitem.vat/100))+(15+marketplaceitem.otherCost)*(1+(marketplaceitem.vat)/100))/(1-(marketplaceitem.commission/100+marketplaceitem.emiFee/100)*(1+(marketplaceitem.serviceTax/100))*(1+(marketplaceitem.vat)/100)-(marketplaceitem.returnProvision/100)*(1+(marketplaceitem.vat)/100))
2450
                marketplaceitem.minimumPossibleSp = (nlc+(item.courierCost+marketplaceitem.closingFee)*(1+(marketplaceitem.serviceTax/100))*(1+(marketplaceitem.vat/100))+(15+marketplaceitem.otherCost)*(1+(marketplaceitem.vat)/100))/(1-(marketplaceitem.commission/100+marketplaceitem.emiFee/100)*(1+(marketplaceitem.serviceTax/100))*(1+(marketplaceitem.vat)/100)-(marketplaceitem.returnProvision/100)*(1+(marketplaceitem.vat)/100))
2413
                session.commit()
2451
                session.commit()
2414
    finally:
2452
    finally:
2415
        close_session()
2453
        close_session()
2416
        
2454
        
2417
def get_all_flipkart_items():
2455
def get_all_flipkart_items():
2418
    return session.query(FlipkartItem).all()
-
 
2419
2456
    return session.query(FlipkartItem).all()
-
 
2457
 
-
 
2458
def get_flipkart_item(itemid):
-
 
2459
    item = session.query(FlipkartItem,Item).join((Item,FlipkartItem.item_id==Item.id)).filter(FlipkartItem.item_id==itemid).first()
-
 
2460
    return item
-
 
2461
 
-
 
2462
def add_or_update_flipkart_item(flipkartitem):
-
 
2463
    item = FlipkartItem.get_by(item_id=flipkartitem.item_id)
-
 
2464
    mpItem = get_marketplace_details_for_item(flipkartitem.item_id,OrderSource.FLIPKART)
-
 
2465
    t_mpItem = flipkartitem.marketplaceItems
-
 
2466
    if not __validateFlipkartObject(flipkartitem):
-
 
2467
        return False
-
 
2468
    try:
-
 
2469
        if item is not None:
-
 
2470
            itemHistory = MarketPlaceUpdateHistory()
-
 
2471
            itemHistory.item_id = flipkartitem.item_id
-
 
2472
            itemHistory.source = OrderSource.FLIPKART
-
 
2473
            itemHistory.exceptionPrice = item.exceptionPrice
-
 
2474
            itemHistory.warehouseId = item.warehouseId
-
 
2475
            itemHistory.isListedOnSource = item.isListedOnFlipkart
-
 
2476
            itemHistory.transferPrice = mpItem.currentTp
-
 
2477
            itemHistory.sellingPrice = mpItem.currentSp
-
 
2478
            itemHistory.courierCost = mpItem.courierCost
-
 
2479
            itemHistory.commission = item.commissionValue
-
 
2480
            itemHistory.serviceTax = item.serviceTaxValue
-
 
2481
            itemHistory.suppressPriceFeed = item.suppressPriceFeed
-
 
2482
            itemHistory.suppressInventoryFeed = item.suppressInventoryFeed
-
 
2483
            itemHistory.updatedOn = item.updatedOn
-
 
2484
            itemHistory.maxNlc = item.maxNlc
-
 
2485
            itemHistory.skuAtSource = item. skuAtFlipkart
-
 
2486
            itemHistory.marketPlaceSerialNumber = item.flipkartSerialNumber
-
 
2487
            itemHistory.priceUpdatedBy = item.updatedBy
-
 
2488
            if (mpItem.currentSp!=t_mpItem.currentSp):
-
 
2489
                item.updatedBy = flipkartitem.updatedBy
-
 
2490
            item.exceptionPrice = flipkartitem.exceptionPrice
-
 
2491
            item.warehouseId = flipkartitem.warehouseId
-
 
2492
            item.isListedOnFlipkart = flipkartitem.isListedOnFlipkart
-
 
2493
            item.commissionValue = flipkartitem.commissionValue
-
 
2494
            item.serviceTaxValue = flipkartitem.serviceTaxValue
-
 
2495
            item.suppressPriceFeed =flipkartitem.suppressPriceFeed
-
 
2496
            item.suppressInventoryFeed =flipkartitem.suppressInventoryFeed
-
 
2497
            item.maxNlc = flipkartitem.maxNlc
-
 
2498
            item.skuAtFlipkart = flipkartitem.skuAtFlipkart
-
 
2499
            item.flipkartSerialNumber = flipkartitem.flipkartSerialNumber
-
 
2500
            item.updatedOn = datetime.datetime.now()
-
 
2501
            __markStatusForFlipkartItems(flipkartitem,item)
-
 
2502
            return update_marketplace_attributes_for_item(flipkartitem.marketplaceItems)
-
 
2503
        else:
-
 
2504
            item = FlipkartItem()
-
 
2505
            if flipkartitem.item_id is not None:
-
 
2506
                item.item_id = flipkartitem.item_id
-
 
2507
                item.exceptionPrice = flipkartitem.exceptionPrice
-
 
2508
                item.warehouseId = flipkartitem.warehouseId
-
 
2509
                item.isListedOnFlipkart = flipkartitem.isListedOnFlipkart
-
 
2510
                item.commissionValue = flipkartitem.commissionValue
-
 
2511
                item.serviceTaxValue = flipkartitem.serviceTaxValue
-
 
2512
                item.suppressPriceFeed =flipkartitem.suppressPriceFeed
-
 
2513
                item.suppressInventoryFeed =flipkartitem.suppressInventoryFeed 
-
 
2514
                item.maxNlc = flipkartitem.maxNlc
-
 
2515
                item.skuAtFlipkart = flipkartitem.skuAtFlipkart
-
 
2516
                item.flipkartSerialNumber = flipkartitem.flipkartSerialNumber
-
 
2517
                item.updatedOn = datetime.datetime.now()  
-
 
2518
                item.updatedBy = flipkartitem.updatedBy
-
 
2519
                __markStatusForFlipkartItems(flipkartitem,item)
-
 
2520
                return update_marketplace_attributes_for_item(flipkartitem.marketplaceItems)  
-
 
2521
    except Exception as ex:
-
 
2522
        print "Unable to addOrupdate flipkart"
-
 
2523
        print ex
-
 
2524
        return False
-
 
2525
 
-
 
2526
def get_flipkart_item_detail(itemid):
-
 
2527
    item = session.query(FlipkartItem,Item).join((Item,FlipkartItem.item_id==Item.id)).filter(FlipkartItem.item_id==itemid).first()
-
 
2528
    try:
-
 
2529
        client = InventoryClient().get_client()
-
 
2530
        FlipkartInventoryItem = client.getFlipkartlInventoryForItem(itemid)
-
 
2531
        return item, FlipkartInventoryItem
-
 
2532
    except Exception as e:
-
 
2533
        print e
-
 
2534
        return item,None
-
 
2535
 
-
 
2536
def get_flipkart_items(offset,limit):
-
 
2537
    return session.query(FlipkartItem,Item).join((Item,FlipkartItem.item_id==Item.id)).offset(offset).limit(limit).all()
-
 
2538
 
-
 
2539
def search_flipkart_items(search_terms,offset,limit):
-
 
2540
    query = session.query(FlipkartItem,Item).join((Item,FlipkartItem.item_id==Item.id))
-
 
2541
    search_terms = ['%' + search_term + '%' for search_term in search_terms]
-
 
2542
    for search_term in search_terms:
-
 
2543
        query_clause = []
-
 
2544
        query_clause.append(Item.id.like(search_term))
-
 
2545
        query_clause.append(Item.brand.like(search_term))
-
 
2546
        query_clause.append(Item.model_name.like(search_term))
-
 
2547
        query_clause.append(Item.model_number.like(search_term))
-
 
2548
        query_clause.append(Item.color.like(search_term))
-
 
2549
        query = query.filter(or_(*query_clause))
-
 
2550
    
-
 
2551
    query = query.offset(offset)
-
 
2552
    if limit:
-
 
2553
        query = query.limit(limit)
-
 
2554
    flipkart_items = query.all()
-
 
2555
    return flipkart_items
-
 
2556
 
-
 
2557
def get_flipkart_search_result_count(search_terms):
-
 
2558
    query = session.query(FlipkartItem,Item).join((Item,FlipkartItem.item_id==Item.id))
-
 
2559
    search_terms = ['%' + search_term + '%' for search_term in search_terms]
-
 
2560
    for search_term in search_terms:
-
 
2561
        query_clause = []
-
 
2562
        query_clause.append(Item.id.like(search_term))
-
 
2563
        query_clause.append(Item.brand.like(search_term))
-
 
2564
        query_clause.append(Item.model_name.like(search_term))
-
 
2565
        query_clause.append(Item.model_number.like(search_term))
-
 
2566
        query_clause.append(Item.color.like(search_term))
-
 
2567
        query = query.filter(or_(*query_clause))
-
 
2568
    return query.count()
-
 
2569
 
-
 
2570
def get_count_for_flipkart_items():
-
 
2571
    return session.query(func.count(FlipkartItem.item_id)).scalar()
-
 
2572
 
-
 
2573
def get_all_fk_items():
-
 
2574
    return session.query(FlipkartItem,Item).join((Item,FlipkartItem.item_id==Item.id)).all()
-
 
2575
 
-
 
2576