Subversion Repositories SmartDukaan

Rev

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

Rev 13130 Rev 13480
Line 1... Line 1...
1
import pymongo
1
import pymongo
2
from datetime import datetime, timedelta, time, date
2
from datetime import datetime, timedelta, time, date
3
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFCWarehouseLocation
3
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFCWarehouseLocation
4
from shop2020.utils.Utils import to_java_date, to_py_date
4
from shop2020.utils.Utils import to_java_date, to_py_date
5
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFbaSalesSnapshot, AmazonHourlySaleSnapshot
5
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFbaSalesSnapshot, AmazonHourlySaleSnapshot, \
-
 
6
AmazonFbaOrderItem
-
 
7
 
6
 
8
 
7
con = None
9
con = None
-
 
10
prefix = {'FBA':0,'FBB':1,'FBG':2}
8
 
11
 
9
def get_mongo_connection(host='localhost', port=27017):
12
def get_mongo_connection(host='localhost', port=27017):
10
    global con
13
    global con
11
    if con is None:
14
    if con is None:
12
        print "Establishing connection %s host and port %d" %(host,port)
15
        print "Establishing connection %s host and port %d" %(host,port)
Line 29... Line 32...
29
    if saleSnapshot is None:
32
    if saleSnapshot is None:
30
        return amazonHourlySaleSnapshot
33
        return amazonHourlySaleSnapshot
31
    amazonHourlySaleSnapshot.__dict__.update(saleSnapshot)
34
    amazonHourlySaleSnapshot.__dict__.update(saleSnapshot)
32
    return amazonHourlySaleSnapshot
35
    return amazonHourlySaleSnapshot
33
 
36
 
-
 
37
def to_amazonFbaOrderItem(orderData):
-
 
38
    amazonFbaOrderItem = AmazonFbaOrderItem(amazonOrderId=None, purchaseDate=None, orderStatus=None, item_id=None, fcLocation=None, totalAmount=None, promotionDiscount=None, quantity=None)
-
 
39
    if orderData is None:
-
 
40
        return amazonFbaOrderItem
-
 
41
    amazonFbaOrderItem.__dict__.update(orderData)
-
 
42
    return amazonFbaOrderItem 
-
 
43
 
34
def getAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation):
44
def getAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation):
35
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
45
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
36
    list = []
46
    list = []
37
    list.append({"dateOfSale": to_java_date(datetime.combine((datetime.now()-timedelta(days=1)).date(), time(00,00,00)))})
47
    list.append({"dateOfSale": to_java_date(datetime.combine((datetime.now()-timedelta(days=1)).date(), time(00,00,00)))})
38
    list.append({"item_id":item_id})
48
    list.append({"item_id":item_id})
Line 60... Line 70...
60
    noOfDays = 0
70
    noOfDays = 0
61
    for sale in cursor:
71
    for sale in cursor:
62
        totalSale = totalSale + sale.get('totalOrderCount')
72
        totalSale = totalSale + sale.get('totalOrderCount')
63
        noOfDays = noOfDays + 1 
73
        noOfDays = noOfDays + 1 
64
    return totalSale, noOfDays 
74
    return totalSale, noOfDays 
65
 
-
 
66
        
75
        
67
def getAmazonFbaSalesSnapshotForDays(interval):
76
def getAmazonFbaSalesSnapshotForDays(interval):
68
    fbasalessnapshot = []
77
    fbasalessnapshot = []
69
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
78
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
70
    toDate = datetime.now()-timedelta(days = 1)
79
    toDate = datetime.now()-timedelta(days = 1)
Line 75... Line 84...
75
    cursor = collection.find({"dateOfSale":query}).sort([('dateOfSale',pymongo.ASCENDING)])
84
    cursor = collection.find({"dateOfSale":query}).sort([('dateOfSale',pymongo.ASCENDING)])
76
    for sale in cursor:
85
    for sale in cursor:
77
        fbasalessnapshot.append(to_amazonFbaSaleSnapshot(sale))
86
        fbasalessnapshot.append(to_amazonFbaSaleSnapshot(sale))
78
    return fbasalessnapshot
87
    return fbasalessnapshot
79
 
88
 
80
 
-
 
81
 
-
 
82
def getLastOutOfStock(item_id,fcLocation):
89
def getLastOutOfStock(item_id,fcLocation):
83
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
90
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
84
    list = []
91
    list = []
85
    list.append({"item_id":item_id})
92
    list.append({"item_id":item_id})
86
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
93
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
Line 103... Line 110...
103
    lastestSnapshotTime = r.next().get('snapshotTime')
110
    lastestSnapshotTime = r.next().get('snapshotTime')
104
    cursor = collection.find({"snapshotTime":{"$in":[lastestSnapshotTime]}})
111
    cursor = collection.find({"snapshotTime":{"$in":[lastestSnapshotTime]}})
105
    for sale in cursor:
112
    for sale in cursor:
106
        fbaHourlySnapshot.append(to_amazonFbaHourlySnapshot(sale))
113
        fbaHourlySnapshot.append(to_amazonFbaHourlySnapshot(sale))
107
    return fbaHourlySnapshot
114
    return fbaHourlySnapshot
-
 
115
 
-
 
116
def getAmazonOrderData(startDate, endDate, offset, limit):
-
 
117
    fbaOrderData = []
-
 
118
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonSaleData
-
 
119
    list = []
-
 
120
    query = {}
-
 
121
    list.append({"orderStatus":"Shipped"})
-
 
122
    query['$gte'] = to_java_date(startDate)
-
 
123
    query['$lte'] = to_java_date(endDate)
-
 
124
    list.append({"purchaseDate":query})
-
 
125
    if offset is None and limit is None:
-
 
126
        cursor = collection.find({"$and":list}).sort([('purchaseDate',pymongo.ASCENDING)])
-
 
127
    else:
-
 
128
        cursor = collection.find({"$and":list}).skip(offset).limit(limit).sort([('purchaseDate',pymongo.ASCENDING)])
-
 
129
    for orderData in cursor:
-
 
130
        fbaOrderData.append(to_amazonFbaOrderItem(orderData))
-
 
131
    return fbaOrderData
-
 
132
 
-
 
133
def getDistinctItemsFromOrderData(startDate, endDate):
-
 
134
    item_ids = []
-
 
135
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonSaleData
-
 
136
    list = []
-
 
137
    query = {}
-
 
138
    list.append({"orderStatus":"Shipped"})
-
 
139
    query['$gte'] = to_java_date(startDate)
-
 
140
    query['$lte'] = to_java_date(endDate)
-
 
141
    list.append({"purchaseDate":query})
-
 
142
    cursor = collection.find({"$and":list}).distinct('item_id')
-
 
143
    for item_id in cursor:
-
 
144
        item_ids.append(item_id)
-
 
145
    return item_ids
-
 
146
 
-
 
147
def getOrderByAmazonOrderIdAndSku(amazonOrderId, sku):
-
 
148
    list = []
-
 
149
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonSaleData
-
 
150
    list.append({"amazonOrderId": amazonOrderId})
-
 
151
    list.append({"item_id":int(sku[3:])})
-
 
152
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(prefix.get(sku[0:3]))})
-
 
153
    r = collection.find({"$and":list})
-
 
154
    if r.count() > 1:
-
 
155
        print "gt 1"
-
 
156
        print amazonOrderId
-
 
157
        print sku
-
 
158
        raise
-
 
159
    elif r.count()==0:
-
 
160
        print "eq 0"
-
 
161
        print amazonOrderId
-
 
162
        print sku
-
 
163
        raise
-
 
164
    else:
-
 
165
        return to_amazonFbaOrderItem(r.next())
108
        
166
        
-
 
167
    
-
 
168
    
109
 
169
 
110
def main():
170
def main():
-
 
171
#    startDate = datetime.strptime('01-11-2014 00:00:00', '%d-%m-%Y %H:%M:%S')
-
 
172
#    endDate = datetime.strptime('01-12-2014 00:00:00', '%d-%m-%Y %H:%M:%S')
-
 
173
#    getDistinctItemsFromOrderData(startDate, endDate)
-
 
174
#    list = []
-
 
175
#    for x in getAmazonOrderData(startDate, endDate, None, None):
-
 
176
#        if x.promotionDiscount > 0 and x.item_id not in list:
-
 
177
#            list.append(x.item_id)
-
 
178
#    print list
-
 
179
    instock = 0
111
    print getLatestHourlySnapshot()
180
    x = getAmazonFbaSalesSnapshotForDays(29)
-
 
181
    for i in x:
-
 
182
        if i.item_id==17373:
-
 
183
            print i.totalSale,
-
 
184
            print '\t',
-
 
185
            print i.totalOrderCount,
-
 
186
            print '\t',
-
 
187
            print i.promotionSale,
-
 
188
            print '\t',
-
 
189
            print i.promotionOrderCount,
-
 
190
            print '\t',
-
 
191
            print i.isOutOfStock
-
 
192
            
-
 
193
    print "****"
-
 
194
    print instock
-
 
195
            
112
 
196
    
113
if __name__ == "__main__":
197
if __name__ == "__main__":
114
    main()
198
    main()
115
199