Subversion Repositories SmartDukaan

Rev

Rev 12360 | Rev 12395 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
12357 manish.sha 1
from elixir import *
2
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
3
from sqlalchemy.sql import func
4
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct, cast, \
5
    between
6
 
7
from shop2020.model.v1.inventory.impl import DataService
8
from shop2020.model.v1.inventory.impl.DataService import StockWeightedNlcInfo
9
from shop2020.model.v1.inventory.impl.DataAcessors import get_all_amazon_fba_inventory
10
 
11
from datetime import datetime, timedelta
12
import datetime
13
import MySQLdb
14
import xlwt
15
import sys
16
 
17
 
18
DataService.initialize(db_hostname='192.168.190.114')
19
db = MySQLdb.connect('localhost',"root","shop2020","warehouse" )
20
cursor = db.cursor()
21
 
22
Amazon_Fba_Inventory_Map = {}
23
Weighted_Cal_ItemIds = []
24
 
25
 
26
def getAmazonFbaInventoryDataMap():
27
    global Amazon_Fba_Inventory_Map
28
    global Weighted_Cal_ItemIds
29
    all_fba_inventory = get_all_amazon_fba_inventory()
30
 
31
    for fba_inventory in all_fba_inventory:
32
        if Amazon_Fba_Inventory_Map.has_key(fba_inventory.item_id):
33
            val = Amazon_Fba_Inventory_Map.get(fba_inventory.item_id)
34
            Amazon_Fba_Inventory_Map[fba_inventory.item_id] = fba_inventory.availability + val
35
        else:
36
            Amazon_Fba_Inventory_Map[fba_inventory.item_id] = fba_inventory.availability
37
 
38
    print Amazon_Fba_Inventory_Map
39
    for itemId in Amazon_Fba_Inventory_Map.keys():
40
        availability = Amazon_Fba_Inventory_Map.get(itemId)
41
        if availability>0:
42
            Weighted_Cal_ItemIds.append(itemId)
43
 
44
    print Weighted_Cal_ItemIds
45
 
46
def getAmazonTransferredSkuDetailMap():
47
    global Amazon_Transferred_Sku_Detail_Map
48
 
49
    updateTime = datetime.datetime.now()
50
 
51
    for itemId in Weighted_Cal_ItemIds:
52
        sql = "SELECT Z.itemId, Z.purchaseId, Z.purchaseDate, sum(Z.quantity) as quantity, Z.unitPrice, Z.nlc, Z.nlcP, Z.vatDiff, Z.taxType  FROM (SELECT X.itemId, X.purchaseId, X.purchaseDate, X.quantity, X.unitPrice, X.nlc, X.nlcP, X.vatDiff, X.inventoryItemId, X.scanTime, X.taxType FROM (SELECT i.itemId as itemId, i.purchaseId as purchaseId, p.receivedOn as purchaseDate, s.quantity as quantity, l.unitPrice as unitPrice, l.nlc as nlc, l.nlcP as nlcP, l.vatDiff as vatDiff, i.id as inventoryItemId, s.scannedAt as scanTime, CASE po.taxType  WHEN 0 THEN 'VAT' WHEN 1 THEN 'CST' WHEN 2 THEN 'CFORM' END as taxType FROM scanNew s JOIN inventoryItem i on s.inventoryItemId= i.id JOIN transferLot t on (s.transferLotId= t.id) JOIN purchase p on p.id= i.purchaseId JOIN purchaseorder po on p.purchaseOrder_id = po.id JOIN lineitem l on (l.purchaseOrder_id= p.purchaseOrder_id and l.itemId= i.itemId) WHERE i.itemId =%d and t.destinationWarehouseId in (16, 1771) AND t.status in ('TRANSFER_COMPLETE','IN_TRANSIT','PARTIAL_TRANSFER') AND i.transferStatus is not null AND s.type='WAREHOUSE_TRANSFER_OUT' group by i.itemId, s.transferLotId, i.purchaseId, i.id order by s.scannedAt desc) as X group by X.inventoryItemId UNION SELECT Y.itemId, Y.purchaseId, Y.purchaseDate, Y.quantity, Y.unitPrice, Y.nlc, Y.nlcP, Y.vatDiff, Y.inventoryItemId, Y.scanTime, Y.taxType FROM (SELECT i.itemId as itemId, i.purchaseId as purchaseId, p.receivedOn as purchaseDate, s.quantity as quantity, l.unitPrice as unitPrice, l.nlc as nlc, l.nlcP as nlcP, l.vatDiff as vatDiff, i.id as inventoryItemId, s.scannedAt as scanTime, CASE po.taxType  WHEN 0 THEN 'VAT' WHEN 1 THEN 'CST' WHEN 2 THEN 'CFORM' END as taxType  FROM scanNew s JOIN inventoryItem i on s.inventoryItemId = i.id JOIN purchase p on p.id= i.purchaseId JOIN purchaseorder po on p.purchaseOrder_id = po.id JOIN lineitem l on (l.purchaseOrder_id= p.purchaseOrder_id and l.itemId= i.itemId) WHERE i.itemId =%d and po.warehouseId in (16, 1771) group by i.itemId, i.purchaseId, i.id order by s.scannedAt desc) as Y group by Y.inventoryItemId) as Z group by Z.itemId, Z.purchaseId order by Z.purchaseId desc"%(itemId,itemId)
12360 manish.sha 53
 
12357 manish.sha 54
        cursor.execute(sql)
55
        result_data = cursor.fetchall()
56
        availability = int(Amazon_Fba_Inventory_Map.get(itemId))
57
        stockQuantity = availability
58
        grnDetail = "{"
59
        weightedNlc = 0.0
60
 
12394 manish.sha 61
        multipliedQty = 0.0
62
 
12357 manish.sha 63
        if result_data:
64
            for record_data in result_data:
65
                print record_data[6]
66
                if record_data[6] is not None:
67
                    if availability == int(record_data[3]):
12360 manish.sha 68
                        grnDetail = grnDetail + "\'"+ str(int(record_data[1])) + "\'"+" : { \'TP\' : " + "\'"+ str(float(record_data[4]))+ "\'" + ", \'NLC\' : "+  "\'"+str(float(record_data[5]))+ "\'" +", \'NLCP\' : "+ "\'"+str(float(record_data[6])) + "\'"+", \'VAT_DIFF\' : " + "\'"+str(float(record_data[7])) + "\'" + ", \'QTY\' : "+ "\'"+str(int(record_data[3]))+ "\'" + " }"
12357 manish.sha 69
                        weightedNlc = weightedNlc + float(record_data[6]) * float(record_data[3])
12394 manish.sha 70
                        multipliedQty = multipliedQty + float(record_data[3])
12357 manish.sha 71
                        break
72
 
73
                    if availability > int(record_data[3]):
74
                        availability = availability - int(record_data[3])
12360 manish.sha 75
                        grnDetail = grnDetail + "\'"+ str(int(record_data[1])) + "\'"+" : { \'TP\' : " + "\'"+ str(float(record_data[4]))+ "\'" + ", \'NLC\' : "+  "\'"+str(float(record_data[5]))+ "\'" +", \'NLCP\' : "+ "\'"+str(float(record_data[6])) + "\'"+", \'VAT_DIFF\' : " + "\'"+str(float(record_data[7])) + "\'" + ", \'QTY\' : "+ "\'"+str(int(record_data[3]))+ "\'" + " }"+", "
12357 manish.sha 76
                        weightedNlc = weightedNlc + float(record_data[6]) * float(record_data[3])
12394 manish.sha 77
                        multipliedQty = multipliedQty + float(record_data[3])
12357 manish.sha 78
                        continue
79
 
80
                    if availability < int(record_data[3]):
12360 manish.sha 81
                        grnDetail = grnDetail + "\'"+ str(int(record_data[1])) + "\'"+" : { \'TP\' : " + "\'"+ str(float(record_data[4]))+ "\'" + ", \'NLC\' : "+  "\'"+str(float(record_data[5]))+ "\'" +", \'NLCP\' : "+ "\'"+str(float(record_data[6])) + "\'"+", \'VAT_DIFF\' : " + "\'"+str(float(record_data[7])) + "\'" + ", \'QTY\' : "+ "\'"+str(int(availability))+ "\'" + " }"
12357 manish.sha 82
                        weightedNlc = weightedNlc + float(record_data[6]) * float(availability)
12394 manish.sha 83
                        multipliedQty = multipliedQty + float(availability)
12357 manish.sha 84
                        break
85
                else:
86
                    continue
87
 
12394 manish.sha 88
            weightedNlc = weightedNlc/multipliedQty
12357 manish.sha 89
            grnDetail = grnDetail + "}"
90
 
91
            print weightedNlc
92
            print grnDetail
93
 
94
            stockWeightedNlcInfo = StockWeightedNlcInfo()
95
            stockWeightedNlcInfo.itemId = itemId
96
            stockWeightedNlcInfo.source = 3
97
            stockWeightedNlcInfo.updatedTimestamp = updateTime
98
            stockWeightedNlcInfo.grnDetail = grnDetail
99
            stockWeightedNlcInfo.stockQuantity = stockQuantity
100
            stockWeightedNlcInfo.avgWeightedNlc = weightedNlc
101
            session.commit()
102
 
103
    db.close()
104
 
105
def main():
106
    getAmazonFbaInventoryDataMap() 
107
    getAmazonTransferredSkuDetailMap()
108
 
109
if __name__=='__main__':
110
    main()
111