Subversion Repositories SmartDukaan

Rev

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

Rev 13107 Rev 13108
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
4
from shop2020.utils.Utils import to_java_date, to_py_date
5
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFbaSalesSnapshot
5
from shop2020.thriftpy.model.v1.order.ttypes import AmazonFbaSalesSnapshot
6
 
6
 
7
con = None
7
con = None
8
 
8
 
9
def get_mongo_connection(host='localhost', port=27017):
9
def get_mongo_connection(host='localhost', port=27017):
Line 33... Line 33...
33
    r = collection.find({"$and":list}).sort([('dateOfSale',pymongo.DESCENDING)]).limit(1)
33
    r = collection.find({"$and":list}).sort([('dateOfSale',pymongo.DESCENDING)]).limit(1)
34
    if r.count() > 0:
34
    if r.count() > 0:
35
        return to_amazonFbaSaleSnapshot(r.next())
35
        return to_amazonFbaSaleSnapshot(r.next())
36
    else:
36
    else:
37
        return to_amazonFbaSaleSnapshot(None)
37
        return to_amazonFbaSaleSnapshot(None)
-
 
38
 
-
 
39
def getInStockAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation,outOfStockTime):
-
 
40
    fbasalessnapshot = []
-
 
41
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
-
 
42
    toDate = datetime.now()-timedelta(days = 1)
-
 
43
    fromDate = outOfStockTime
-
 
44
    list = []
-
 
45
    list.append({"item_id":item_id})
-
 
46
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
-
 
47
    query = {}
-
 
48
    query['$gt'] = fromDate 
-
 
49
    query['$lte'] = to_java_date(datetime.combine(toDate.date(), time(00,00,00)))
-
 
50
    list.append({"dateOfSale":query})
-
 
51
    cursor = collection.find({"$and":list}).sort([('dateOfSale',pymongo.ASCENDING)])
-
 
52
    totalSale = 0
-
 
53
    noOfDays = 0
-
 
54
    for sale in cursor:
-
 
55
        totalSale = totalSale + sale.get('totalOrderCount')
-
 
56
        noOfDays = noOfDays + 1 
-
 
57
    return totalSale, noOfDays 
-
 
58
 
38
        
59
        
39
def getAmazonFbaSalesSnapshotForDays(interval):
60
def getAmazonFbaSalesSnapshotForDays(interval):
40
    fbasalessnapshot = []
61
    fbasalessnapshot = []
41
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
62
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
42
    toDate = datetime.now()-timedelta(days = 1)
63
    toDate = datetime.now()-timedelta(days = 1)
43
    fromDate = toDate-timedelta(days = interval)
64
    fromDate = toDate-timedelta(days = interval)
44
    query = {}
65
    query = {}
45
    query['$gte'] = to_java_date(datetime.combine(fromDate.date(), time(00,00,00)))
66
    query['$gte'] = to_java_date(datetime.combine(fromDate.date(), time(00,00,00)))
46
    query['$lte'] = to_java_date(datetime.combine(toDate.date(), time(00,00,00)))
67
    query['$lte'] = to_java_date(datetime.combine(toDate.date(), time(00,00,00)))
47
    print query
-
 
48
    cursor = collection.find({"dateOfSale":query}).sort([('dateOfSale',pymongo.ASCENDING)])
68
    cursor = collection.find({"dateOfSale":query}).sort([('dateOfSale',pymongo.ASCENDING)])
49
    print cursor.count()
-
 
50
    for sale in cursor:
69
    for sale in cursor:
51
        fbasalessnapshot.append(to_amazonFbaSaleSnapshot(sale))
70
        fbasalessnapshot.append(to_amazonFbaSaleSnapshot(sale))
52
    return fbasalessnapshot
71
    return fbasalessnapshot
53
    
-
 
54
 
72
 
55
def main():
-
 
56
    getAmazonFbaSalesLatestSnapshotForItemLocationWise(174,2)
-
 
57
 
73
 
58
 
74
 
-
 
75
def getLastOutOfStock(item_id,fcLocation):
-
 
76
    collection = get_mongo_connection().AmazonSaleSnapshot.AmazonDailySaleSnapshot
-
 
77
    list = []
-
 
78
    list.append({"item_id":item_id})
-
 
79
    list.append({"fcLocation":AmazonFCWarehouseLocation._VALUES_TO_NAMES.get(fcLocation)})
-
 
80
    list.append({"isOutOfStock":True})
-
 
81
    r = collection.find({"$and":list}).sort([('dateOfSale',pymongo.DESCENDING)]).limit(1)
-
 
82
    if r.count() > 0:
-
 
83
        lastOutOfStock = to_amazonFbaSaleSnapshot(r.next())
-
 
84
    else:
-
 
85
        lastOutOfStock = to_amazonFbaSaleSnapshot(None)
-
 
86
    if lastOutOfStock.dateOfSale == 0:
-
 
87
        return lastOutOfStock, 0, 0
-
 
88
    else:
-
 
89
        return lastOutOfStock, getInStockAmazonFbaSalesLatestSnapshotForItemLocationWise(item_id,fcLocation,lastOutOfStock.dateOfSale)
-
 
90
        
-
 
91
 
-
 
92
def main():
-
 
93
    print getLastOutOfStock(174,2)
-
 
94
 
59
if __name__ == "__main__":
95
if __name__ == "__main__":
60
    main()
96
    main()
61
97