| 4503 |
mandeep.dh |
1 |
'''
|
|
|
2 |
Created on 29-Jul-2011
|
|
|
3 |
|
|
|
4 |
@author: Chandranshu
|
|
|
5 |
'''
|
|
|
6 |
from elixir.entity import Entity
|
|
|
7 |
from elixir.fields import Field
|
|
|
8 |
from elixir.options import using_options, using_table_options
|
|
|
9 |
from elixir.relationships import ManyToOne
|
|
|
10 |
from shop2020.thriftpy.purchase.ttypes import LineItem as TLineItem
|
|
|
11 |
from shop2020.utils.Utils import to_java_date
|
|
|
12 |
from sqlalchemy.types import Integer, String, Float, DateTime, Boolean
|
|
|
13 |
import datetime
|
|
|
14 |
|
|
|
15 |
|
|
|
16 |
class LineItem(Entity):
|
|
|
17 |
'''
|
|
|
18 |
classdocs
|
|
|
19 |
'''
|
|
|
20 |
purchaseOrder = ManyToOne("PurchaseOrder", primary_key=True)
|
|
|
21 |
itemId = Field(Integer, primary_key=True, autoincrement=False)
|
|
|
22 |
productGroup = Field(String(100))
|
|
|
23 |
brand = Field(String(100))
|
|
|
24 |
modelNumber = Field(String(50))
|
|
|
25 |
modelName = Field(String(50))
|
|
|
26 |
color = Field(String(20))
|
|
|
27 |
itemNumber = Field(String(20))
|
|
|
28 |
quantity = Field(Float)
|
|
|
29 |
unfulfilledQuantity = Field(Float)
|
|
|
30 |
createdAt = Field(DateTime)
|
|
|
31 |
unitPrice = Field(Float)
|
|
|
32 |
fulfilled = Field(Boolean)
|
| 6821 |
amar.kumar |
33 |
availableQuantity = Field(Integer)
|
|
|
34 |
reservedQuantity = Field(Integer)
|
|
|
35 |
avgSales = Field(Float)
|
|
|
36 |
minStockLevel = Field(Integer)
|
|
|
37 |
numberOfDaysStock = Field(Integer)
|
|
|
38 |
suggestedQuantity = Field(Integer)
|
|
|
39 |
numberOfDaysInStock = Field(Integer)
|
| 6880 |
amar.kumar |
40 |
lastXdaysSale = Field(String(50))
|
|
|
41 |
previouslyOrderedQty = Field(Integer)
|
| 4503 |
mandeep.dh |
42 |
using_options(shortnames=True)
|
|
|
43 |
using_table_options(mysql_engine="InnoDB")
|
|
|
44 |
|
|
|
45 |
def __init__(self, purchase_order, t_line_item):
|
|
|
46 |
'''
|
|
|
47 |
Constructor
|
|
|
48 |
'''
|
|
|
49 |
self.purchaseOrder = purchase_order
|
|
|
50 |
self.itemId = t_line_item.itemId
|
|
|
51 |
self.productGroup = t_line_item.productGroup
|
|
|
52 |
self.brand = t_line_item.brand
|
|
|
53 |
self.modelNumber = t_line_item.modelNumber
|
|
|
54 |
self.modelName = t_line_item.modelName
|
|
|
55 |
self.color = t_line_item.color
|
|
|
56 |
self.itemNumber = t_line_item.itemNumber
|
|
|
57 |
self.quantity = t_line_item.quantity
|
| 5450 |
mandeep.dh |
58 |
self.unfulfilledQuantity = t_line_item.unfulfilledQuantity
|
| 4503 |
mandeep.dh |
59 |
self.createdAt = datetime.datetime.now()
|
|
|
60 |
self.unitPrice = t_line_item.unitPrice
|
|
|
61 |
self.fulfilled = False
|
| 6821 |
amar.kumar |
62 |
self.availableQuantity = t_line_item.availableQuantity
|
|
|
63 |
self.reservedQuantity = t_line_item.reservedQuantity
|
|
|
64 |
self.avgSales = t_line_item.avgSales
|
|
|
65 |
self.minStockLevel = t_line_item.minStockLevel
|
|
|
66 |
self.numberOfDaysStock = t_line_item.numberOfDaysStock
|
|
|
67 |
self.suggestedQuantity = t_line_item.suggestedQuantity
|
|
|
68 |
self.numberOfDaysInStock = t_line_item.numberOfDaysInStock
|
| 6857 |
amar.kumar |
69 |
self.lastXdaysSale = t_line_item.lastXdaysSale
|
| 6880 |
amar.kumar |
70 |
self.previouslyOrderedQty = t_line_item.previouslyOrderedQty
|
| 4503 |
mandeep.dh |
71 |
|
|
|
72 |
def to_thrift_object(self):
|
|
|
73 |
t_line_item = TLineItem()
|
|
|
74 |
t_line_item.orderId = self.purchaseOrder.id
|
|
|
75 |
t_line_item.itemId = self.itemId
|
|
|
76 |
#TODO: Fetch the next 5 items from the catalog service
|
|
|
77 |
t_line_item.productGroup = self.productGroup
|
|
|
78 |
t_line_item.brand = self.brand
|
|
|
79 |
t_line_item.modelNumber = self.modelNumber
|
|
|
80 |
t_line_item.modelName = self.modelName
|
|
|
81 |
t_line_item.color = self.color
|
|
|
82 |
t_line_item.itemNumber = self.itemNumber
|
|
|
83 |
t_line_item.quantity = self.quantity
|
| 6882 |
amar.kumar |
84 |
if t_line_item.quantity < 0:
|
|
|
85 |
t_line_item.quantity = 0
|
| 4503 |
mandeep.dh |
86 |
t_line_item.unfulfilledQuantity = self.unfulfilledQuantity
|
|
|
87 |
t_line_item.createdAt = to_java_date(self.createdAt)
|
| 6837 |
amar.kumar |
88 |
t_line_item.unitPrice = self.unitPrice
|
| 4503 |
mandeep.dh |
89 |
t_line_item.fulfilled = self.fulfilled
|
| 6821 |
amar.kumar |
90 |
t_line_item.availableQuantity = self.availableQuantity
|
|
|
91 |
t_line_item.reservedQuantity = self.reservedQuantity
|
|
|
92 |
t_line_item.avgSales = self.avgSales
|
|
|
93 |
t_line_item.minStockLevel = self.minStockLevel
|
|
|
94 |
t_line_item.numberOfDaysStock = self.numberOfDaysStock
|
|
|
95 |
t_line_item.suggestedQuantity = self.suggestedQuantity
|
|
|
96 |
t_line_item.numberOfDaysInStock = self.numberOfDaysInStock
|
| 6857 |
amar.kumar |
97 |
t_line_item.lastXdaysSale = self.lastXdaysSale
|
| 6880 |
amar.kumar |
98 |
t_line_item.previouslyOrderedQty = self.previouslyOrderedQty
|
| 4503 |
mandeep.dh |
99 |
return t_line_item
|