Subversion Repositories SmartDukaan

Rev

Rev 12357 | Rev 12394 | 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
 
61
        if result_data:
62
            for record_data in result_data:
63
                print record_data[6]
64
                if record_data[6] is not None:
65
                    if availability == int(record_data[3]):
12360 manish.sha 66
                        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 67
                        weightedNlc = weightedNlc + float(record_data[6]) * float(record_data[3])
68
                        break
69
 
70
                    if availability > int(record_data[3]):
71
                        availability = availability - int(record_data[3])
12360 manish.sha 72
                        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 73
                        weightedNlc = weightedNlc + float(record_data[6]) * float(record_data[3])
74
                        continue
75
 
76
                    if availability < int(record_data[3]):
12360 manish.sha 77
                        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 78
                        weightedNlc = weightedNlc + float(record_data[6]) * float(availability)
79
                        break
80
                else:
81
                    continue
82
 
83
            weightedNlc = weightedNlc/stockQuantity
84
            grnDetail = grnDetail + "}"
85
 
86
            print weightedNlc
87
            print grnDetail
88
 
89
            stockWeightedNlcInfo = StockWeightedNlcInfo()
90
            stockWeightedNlcInfo.itemId = itemId
91
            stockWeightedNlcInfo.source = 3
92
            stockWeightedNlcInfo.updatedTimestamp = updateTime
93
            stockWeightedNlcInfo.grnDetail = grnDetail
94
            stockWeightedNlcInfo.stockQuantity = stockQuantity
95
            stockWeightedNlcInfo.avgWeightedNlc = weightedNlc
96
            session.commit()
97
 
98
    db.close()
99
 
100
def main():
101
    getAmazonFbaInventoryDataMap() 
102
    getAmazonTransferredSkuDetailMap()
103
 
104
if __name__=='__main__':
105
    main()
106