Subversion Repositories SmartDukaan

Rev

Rev 12533 | 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:
12965 manish.sha 52
        sql = "SELECT Z.itemId, Z.purchaseId, Z.purchaseDate, sum(Z.quantity) as quantity, Z.unitPrice, Z.nlc, Z.nlcP, Z.vatDiff, Z.taxType, Z.SupplierName  FROM (SELECT X.itemId, X.purchaseId, X.purchaseDate, X.quantity, X.unitPrice, X.nlc, X.nlcP, X.vatDiff, X.inventoryItemId, X.scanTime, X.taxType, X.SupplierName 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, su.name as SupplierName 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 supplier su on po.supplierId = su.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, 3295) 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, Y.SupplierName 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, su.name as SupplierName 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 supplier su on po.supplierId = su.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, 3295) 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
12394 manish.sha 60
        multipliedQty = 0.0
61
 
12357 manish.sha 62
        if result_data:
12395 manish.sha 63
 
12357 manish.sha 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
12395 manish.sha 87
 
88
            if multipliedQty == 0.0:
89
                multipliedQty = multipliedQty + 1.0
12394 manish.sha 90
            weightedNlc = weightedNlc/multipliedQty
12357 manish.sha 91
            grnDetail = grnDetail + "}"
92
 
93
            print weightedNlc
94
            print grnDetail
95
 
96
            stockWeightedNlcInfo = StockWeightedNlcInfo()
97
            stockWeightedNlcInfo.itemId = itemId
98
            stockWeightedNlcInfo.source = 3
99
            stockWeightedNlcInfo.updatedTimestamp = updateTime
100
            stockWeightedNlcInfo.grnDetail = grnDetail
101
            stockWeightedNlcInfo.stockQuantity = stockQuantity
102
            stockWeightedNlcInfo.avgWeightedNlc = weightedNlc
103
            session.commit()
104
 
105
    db.close()
106
 
107
def main():
108
    getAmazonFbaInventoryDataMap() 
109
    getAmazonTransferredSkuDetailMap()
110
 
111
if __name__=='__main__':
112
    main()
113