| Line 25... |
Line 25... |
| 25 |
PrivateDeals, AmazonOutOfSync, PrivateDealsPriceComparison, \
|
25 |
PrivateDeals, AmazonOutOfSync, PrivateDealsPriceComparison, \
|
| 26 |
SourceReturnPercentage, CompetitorPricing, CompetitorPricingRequest, \
|
26 |
SourceReturnPercentage, CompetitorPricing, CompetitorPricingRequest, \
|
| 27 |
AmazonPromotion, ExclusiveAffiliateItemInfo, OutboundAffiliateMaster
|
27 |
AmazonPromotion, ExclusiveAffiliateItemInfo, OutboundAffiliateMaster
|
| 28 |
from shop2020.thriftpy.model.v1.catalog.ttypes import status, ItemShippingInfo, \
|
28 |
from shop2020.thriftpy.model.v1.catalog.ttypes import status, ItemShippingInfo, \
|
| 29 |
ItemType, PremiumType, FreebieItem as t_FreebieItem, \
|
29 |
ItemType, PremiumType, FreebieItem as t_FreebieItem, \
|
| 30 |
StorePricing as tStorePricing, CatalogServiceException, BannerType, InsurerType, \
|
30 |
StorePricing as tStorePricing, CatalogServiceException, \
|
| 31 |
Banner as t_banner, CompetitorPricing as TCompetitorPricing
|
31 |
BannerType, InsurerType, Banner as t_banner, CompetitorPricing as TCompetitorPricing, \
|
| - |
|
32 |
AmazonPromotionType
|
| 32 |
from shop2020.thriftpy.model.v1.inventory.ttypes import VatType, \
|
33 |
from shop2020.thriftpy.model.v1.inventory.ttypes import VatType, \
|
| 33 |
InventoryServiceException, IgnoredInventoryUpdateItems, SnapdealInventoryItem
|
34 |
InventoryServiceException, IgnoredInventoryUpdateItems,SnapdealInventoryItem
|
| 34 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderSource
|
35 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderSource
|
| 35 |
from shop2020.utils import EmailAttachmentSender
|
36 |
from shop2020.utils import EmailAttachmentSender
|
| 36 |
from shop2020.utils.EmailAttachmentSender import mail
|
37 |
from shop2020.utils.EmailAttachmentSender import mail
|
| 37 |
from shop2020.utils.Utils import to_py_date, log_risky_flag
|
38 |
from shop2020.utils.Utils import to_py_date, log_risky_flag
|
| 38 |
from sqlalchemy import desc, asc
|
39 |
from sqlalchemy import desc, asc
|
| 39 |
from sqlalchemy.sql.expression import or_, distinct, func, and_
|
40 |
from sqlalchemy.sql.expression import or_, distinct, func, and_
|
| 40 |
from sqlalchemy.sql.functions import now
|
41 |
from sqlalchemy.sql.functions import now
|
| 41 |
from string import Template
|
42 |
from string import Template
|
| 42 |
import datetime
|
43 |
import datetime
|
| 43 |
import math
|
44 |
import math
|
| 44 |
import sys
|
45 |
import sys
|
| Line 1828... |
Line 1829... |
| 1828 |
def get_amazon_item_details(amazonItemId):
|
1829 |
def get_amazon_item_details(amazonItemId):
|
| 1829 |
amazonlisted = Amazonlisted.get_by(itemId=amazonItemId)
|
1830 |
amazonlisted = Amazonlisted.get_by(itemId=amazonItemId)
|
| 1830 |
fbaPromo, fbbPromo = __get_amazon_promotion_attributes_for_item(amazonItemId)
|
1831 |
fbaPromo, fbbPromo = __get_amazon_promotion_attributes_for_item(amazonItemId)
|
| 1831 |
return amazonlisted, fbaPromo, fbbPromo
|
1832 |
return amazonlisted, fbaPromo, fbbPromo
|
| 1832 |
|
1833 |
|
| - |
|
1834 |
|
| 1833 |
def update_amazon_item_details(amazonlisted):
|
1835 |
def update_amazon_item_details(amazonlisted):
|
| 1834 |
amazon_listed = Amazonlisted.get_by(itemId = amazonlisted.itemid)
|
1836 |
amazon_listed = Amazonlisted.get_by(itemId = amazonlisted.itemid)
|
| 1835 |
amazon_listed.isFba=amazonlisted.isFba
|
1837 |
amazon_listed.isFba=amazonlisted.isFba
|
| 1836 |
amazon_listed.isFbb=amazonlisted.isFbb
|
1838 |
amazon_listed.isFbb=amazonlisted.isFbb
|
| 1837 |
amazon_listed.isNonFba=amazonlisted.isNonFba
|
1839 |
amazon_listed.isNonFba=amazonlisted.isNonFba
|
| Line 1857... |
Line 1859... |
| 1857 |
amazon_listed.autoDecrement = amazonlisted.autoDecrement
|
1859 |
amazon_listed.autoDecrement = amazonlisted.autoDecrement
|
| 1858 |
amazon_listed.autoIncrement = amazonlisted.autoIncrement
|
1860 |
amazon_listed.autoIncrement = amazonlisted.autoIncrement
|
| 1859 |
amazon_listed.autoFavourite = amazonlisted.autoFavourite
|
1861 |
amazon_listed.autoFavourite = amazonlisted.autoFavourite
|
| 1860 |
amazon_listed.manualFavourite = amazonlisted.manualFavourite
|
1862 |
amazon_listed.manualFavourite = amazonlisted.manualFavourite
|
| 1861 |
amazon_listed.otherCost = amazonlisted.otherCost
|
1863 |
amazon_listed.otherCost = amazonlisted.otherCost
|
| - |
|
1864 |
if amazon_listed.fbaPromoPrice != amazonlisted.fbaPromoPrice and amazonlisted.fbaPromoPrice > 0:
|
| - |
|
1865 |
amazon_listed.fbaPromoPrice = amazonlisted.fbaPromoPrice
|
| - |
|
1866 |
amazon_listed.fbaPriceLastUpdatedOn = datetime.datetime.now()
|
| - |
|
1867 |
if amazon_listed.fbbPromoPrice != amazonlisted.fbbPromoPrice and amazonlisted.fbbPromoPrice > 0:
|
| - |
|
1868 |
amazon_listed.fbbPromoPrice = amazonlisted.fbbPromoPrice
|
| - |
|
1869 |
amazon_listed.fbbPriceLastUpdatedOn = datetime.datetime.now()
|
| 1862 |
session.commit()
|
1870 |
session.commit()
|
| 1863 |
|
1871 |
|
| 1864 |
def add_amazon_item(amazonlisted):
|
1872 |
def add_amazon_item(amazonlisted):
|
| 1865 |
if (not amazonlisted) or (not amazonlisted.itemid) or (not amazonlisted.asin):
|
1873 |
if (not amazonlisted) or (not amazonlisted.itemid) or (not amazonlisted.asin):
|
| 1866 |
return
|
1874 |
return
|
| Line 2704... |
Line 2712... |
| 2704 |
|
2712 |
|
| 2705 |
def get_all_fbb_listed_items():
|
2713 |
def get_all_fbb_listed_items():
|
| 2706 |
return Amazonlisted.query.filter(Amazonlisted.isFbb==True).filter(Amazonlisted.fbbListedOn==None).all()
|
2714 |
return Amazonlisted.query.filter(Amazonlisted.isFbb==True).filter(Amazonlisted.fbbListedOn==None).all()
|
| 2707 |
|
2715 |
|
| 2708 |
def get_all_fbb_pricing_items():
|
2716 |
def get_all_fbb_pricing_items():
|
| 2709 |
return Amazonlisted.query.filter(Amazonlisted.isFbb==True).filter(Amazonlisted.suppressFbbPriceUpdate==False).filter(Amazonlisted.fbbPriceLastUpdatedOn > Amazonlisted.fbbPriceLastUpdatedOnSc).filter(Amazonlisted.fbbListedOn != None).all()
|
2717 |
return Amazonlisted.query.filter(Amazonlisted.isFbb==True).filter(Amazonlisted.suppressFbbPriceUpdate==False).filter(Amazonlisted.fbbListedOn != None).all()
|
| 2710 |
|
- |
|
| 2711 |
|
2718 |
|
| 2712 |
def get_count_for_marketplaceHistory(source,itemId):
|
2719 |
def get_count_for_marketplaceHistory(source,itemId):
|
| 2713 |
return len(session.query(MarketPlaceHistory).filter(MarketPlaceHistory.item_id==itemId).filter(MarketPlaceHistory.source==source).filter(or_(MarketPlaceHistory.toGroup==True,MarketPlaceHistory.toGroup==None)).all())
|
2720 |
return len(session.query(MarketPlaceHistory).filter(MarketPlaceHistory.item_id==itemId).filter(MarketPlaceHistory.source==source).filter(or_(MarketPlaceHistory.toGroup==True,MarketPlaceHistory.toGroup==None)).all())
|
| 2714 |
|
2721 |
|
| 2715 |
def get_marketplace_history_by_date(source,startDate,endDate,offset,limit,itemId):
|
2722 |
def get_marketplace_history_by_date(source,startDate,endDate,offset,limit,itemId):
|
| Line 2829... |
Line 2836... |
| 2829 |
return session.query(CompetitorPricing,Item).join((Item,CompetitorPricing.item_id==Item.id)).filter(CompetitorPricing.competitorPricing_requestId==uploadId).all()
|
2836 |
return session.query(CompetitorPricing,Item).join((Item,CompetitorPricing.item_id==Item.id)).filter(CompetitorPricing.competitorPricing_requestId==uploadId).all()
|
| 2830 |
|
2837 |
|
| 2831 |
def add_amazon_promotion(amazonPromotions):
|
2838 |
def add_amazon_promotion(amazonPromotions):
|
| 2832 |
for sku, amazonPromotion in amazonPromotions.iteritems():
|
2839 |
for sku, amazonPromotion in amazonPromotions.iteritems():
|
| 2833 |
d_amazonPromotion = AmazonPromotion()
|
2840 |
d_amazonPromotion = AmazonPromotion()
|
| 2834 |
d_amazonPromotion.sku = sku
|
2841 |
d_amazonPromotion.sku = sku.strip().upper()
|
| 2835 |
d_amazonPromotion.standardPrice = amazonPromotion.standardPrice
|
2842 |
d_amazonPromotion.standardPrice = amazonPromotion.standardPrice
|
| 2836 |
d_amazonPromotion.salePrice = amazonPromotion.salePrice
|
2843 |
d_amazonPromotion.salePrice = amazonPromotion.salePrice
|
| 2837 |
d_amazonPromotion.subsidy = amazonPromotion.subsidyAmount
|
2844 |
d_amazonPromotion.subsidy = amazonPromotion.subsidyAmount
|
| 2838 |
d_amazonPromotion.startDate = to_py_date(amazonPromotion.startDate)
|
2845 |
d_amazonPromotion.startDate = to_py_date(amazonPromotion.startDate)
|
| 2839 |
d_amazonPromotion.endDate = to_py_date(amazonPromotion.endDate)
|
2846 |
d_amazonPromotion.endDate = to_py_date(amazonPromotion.endDate)
|
| 2840 |
d_amazonPromotion.addedOn = datetime.datetime.now()
|
2847 |
d_amazonPromotion.addedOn = to_py_date(amazonPromotion.addedOn)
|
| 2841 |
d_amazonPromotion.promotionActive = amazonPromotion.promotionActive
|
2848 |
d_amazonPromotion.promotionActive = False
|
| 2842 |
if sku.upper().startswith('FBA'):
|
2849 |
if d_amazonPromotion.sku.startswith('FBA'):
|
| 2843 |
d_amazonPromotion.stateId = 1
|
2850 |
d_amazonPromotion.stateId = 1
|
| 2844 |
elif sku.upper().startswith('FBB'):
|
2851 |
elif d_amazonPromotion.sku.startswith('FBB'):
|
| 2845 |
d_amazonPromotion.stateId = 2
|
2852 |
d_amazonPromotion.stateId = 2
|
| 2846 |
else:
|
2853 |
else:
|
| 2847 |
raise CatalogServiceException(101, "Amazon Promotion Illegal sku id")
|
2854 |
raise CatalogServiceException(101, "Amazon Promotion Illegal sku id "+sku)
|
| 2848 |
d_amazonPromotion.promotionType = amazonPromotion.promotionType
|
2855 |
d_amazonPromotion.promotionType = amazonPromotion.promotionType
|
| - |
|
2856 |
if d_amazonPromotion.promotionType == AmazonPromotionType._NAMES_TO_VALUES.get('LONGTERM'):
|
| - |
|
2857 |
amazonItem = get_amazon_item_details(int(d_amazonPromotion.sku[3:]))
|
| - |
|
2858 |
if amazonItem[0] is None:
|
| - |
|
2859 |
raise CatalogServiceException(102, "Item doesnot exist in amazonlisted sku id "+sku)
|
| - |
|
2860 |
if d_amazonPromotion.stateId == 1:
|
| - |
|
2861 |
amazonItem[0].fbaPromoPrice = amazonPromotion.salePrice
|
| - |
|
2862 |
amazonItem[0].fbaPromoStartDate = to_py_date(amazonPromotion.startDate)
|
| - |
|
2863 |
amazonItem[0].fbaPromoEndDate = to_py_date(amazonPromotion.endDate)
|
| - |
|
2864 |
amazonItem[0].fbaPromoActive = False
|
| - |
|
2865 |
else:
|
| - |
|
2866 |
amazonItem[0].fbbPromoPrice = amazonPromotion.salePrice
|
| - |
|
2867 |
amazonItem[0].fbbPromoStartDate = to_py_date(amazonPromotion.startDate)
|
| - |
|
2868 |
amazonItem[0].fbbPromoEndDate = to_py_date(amazonPromotion.endDate)
|
| - |
|
2869 |
amazonItem[0].fbbPromoActive = False
|
| - |
|
2870 |
else:
|
| - |
|
2871 |
d_amazonPromotion.promotionActive = True
|
| 2849 |
session.commit()
|
2872 |
session.commit()
|
| 2850 |
return True
|
2873 |
return True
|
| 2851 |
|
2874 |
|
| 2852 |
|
2875 |
|
| 2853 |
def get_vat_rates(itemId, categoryId):
|
2876 |
def get_vat_rates(itemId, categoryId):
|
| Line 2885... |
Line 2908... |
| 2885 |
return AmazonPromotion.query.filter(AmazonPromotion.startDate>=(to_py_date(startDate))).filter(AmazonPromotion.endDate<=(to_py_date(endDate))).all()
|
2908 |
return AmazonPromotion.query.filter(AmazonPromotion.startDate>=(to_py_date(startDate))).filter(AmazonPromotion.endDate<=(to_py_date(endDate))).all()
|
| 2886 |
|
2909 |
|
| 2887 |
def update_amazon_promotion(amazonPromotions):
|
2910 |
def update_amazon_promotion(amazonPromotions):
|
| 2888 |
for amazonPromotion in amazonPromotions:
|
2911 |
for amazonPromotion in amazonPromotions:
|
| 2889 |
amp = AmazonPromotion.get_by(sku=amazonPromotion.sku,addedOn=amazonPromotion.addedOn, promotionType = amazonPromotion.promotionType )
|
2912 |
amp = AmazonPromotion.get_by(sku=amazonPromotion.sku,addedOn=amazonPromotion.addedOn, promotionType = amazonPromotion.promotionType )
|
| - |
|
2913 |
amp.promotionActive = True
|
| 2890 |
amp.updatedOnMarketplace = amazonPromotion.updatedOnMarketplace
|
2914 |
amp.updatedOnMarketplace = datetime.datetime.now()
|
| - |
|
2915 |
if amp.promotionType==1:
|
| - |
|
2916 |
amazonItem = get_amazon_item_details(int(amp.sku[3:]))
|
| - |
|
2917 |
if amp.stateId == 1:
|
| - |
|
2918 |
amazonItem[0].fbaPromoActive = True
|
| - |
|
2919 |
else:
|
| - |
|
2920 |
amazonItem[0].fbbPromoActive = True
|
| 2891 |
session.commit()
|
2921 |
session.commit()
|
| 2892 |
|
2922 |
|
| 2893 |
def __get_amazon_promotion_attributes_for_item(item_id):
|
2923 |
def __get_amazon_promotion_attributes_for_item(item_id):
|
| 2894 |
timestamp = datetime.datetime.now()
|
2924 |
timestamp = datetime.datetime.now()
|
| 2895 |
fbaPromo = AmazonPromotion.query.filter(AmazonPromotion.sku=='FBA'+str(item_id)).filter(AmazonPromotion.startDate<=timestamp).filter(AmazonPromotion.endDate>=timestamp).filter(AmazonPromotion.updatedOnMarketplace>to_py_date(0)).order_by(desc(AmazonPromotion.updatedOnMarketplace)).limit(1).all()
|
- |
|
| 2896 |
fbbPromo = AmazonPromotion.query.filter(AmazonPromotion.sku=='FBB'+str(item_id)).filter(AmazonPromotion.startDate<=timestamp).filter(AmazonPromotion.endDate>=timestamp).filter(AmazonPromotion.updatedOnMarketplace>to_py_date(0)).order_by(desc(AmazonPromotion.updatedOnMarketplace)).limit(1).all()
|
- |
|
| 2897 |
return fbaPromo, fbbPromo
|
- |
|
| 2898 |
|
- |
|
| 2899 |
def get_ex_affiliate_item_info():
|
- |
|
| 2900 |
query = session.query(ExclusiveAffiliateItemInfo, OutboundAffiliateMaster.name).join((OutboundAffiliateMaster, ExclusiveAffiliateItemInfo.affiliateId==OutboundAffiliateMaster.id)).filter(ExclusiveAffiliateItemInfo.isActive == True).all()
|
- |
|
| 2901 |
close_session()
|
- |
|
| 2902 |
map = {}
|
- |
|
| 2903 |
for q in query:
|
- |
|
| 2904 |
map[q[0].itemId]=to_t_exclusive_affiliate_item_info(q)
|
- |
|
| 2905 |
return map
|
- |
|
| 2906 |
|
2925 |
fbaPromo = AmazonPromotion.query.filter(AmazonPromotion.sku=='FBA'+str(item_id)).filter(AmazonPromotion.promotionType==AmazonPromotionType.LONGTERM).filter(AmazonPromotion.startDate<=timestamp).filter(AmazonPromotion.endDate>=timestamp).order_by(desc(AmazonPromotion.addedOn)).limit(1).all()
|
| - |
|
2926 |
fbbPromo = AmazonPromotion.query.filter(AmazonPromotion.sku=='FBB'+str(item_id)).filter(AmazonPromotion.promotionType==AmazonPromotionType.LONGTERM).filter(AmazonPromotion.startDate<=timestamp).filter(AmazonPromotion.endDate>=timestamp).order_by(desc(AmazonPromotion.addedOn)).limit(1).all()
|
| - |
|
2927 |
return fbaPromo, fbbPromo
|
| - |
|
2928 |
|
| 2907 |
|
2929 |
|