Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
85 ashish 1
namespace java in.shop2020.model.v1.catalog
95 ashish 2
namespace py shop2020.thriftpy.model.v1.catalog
85 ashish 3
 
4
/**
5
	Objects
6
*/
7
 
123 ashish 8
/**
1330 chandransh 9
Caution :- Never ever change the numbers in it. Please confirm from @Chandranshu or @Rajveer before any changes in enum and other entries in file.
123 ashish 10
**/
103 ashish 11
enum status{
123 ashish 12
	PHASED_OUT = 0,		//Item is no longer selling
13
	DELETED = 1,		//Item has been deliberately deleted 
14
	PAUSED = 2,			//Item's sale is currently paused
15
	ACTIVE = 3,			//Item is available for sale as of now
16
	IN_PROCESS = 4		//Item has been added, but content is not available for the same
720 chandransh 17
	CONTENT_COMPLETE = 5  //The content for this item has been completed. We can start selling the item now.
103 ashish 18
}
19
 
646 chandransh 20
enum WarehouseLocation{
1330 chandransh 21
	Mumbai = 0,
22
	Delhi = 1,
646 chandransh 23
	Bangalore = 2,
24
	Kolkata = 3
25
}
26
 
1330 chandransh 27
struct Vendor{
28
	1:i64 id,
29
	2:string name
30
}
31
 
483 rajveer 32
/* 
33
Warehouse fields details
34
location: it is full address
35
vendorString: some key for the warehouse
36
*/
85 ashish 37
struct Warehouse{
38
	1:i64 id,
752 chandransh 39
	2:string displayName,
40
	3:string location,
41
	4:status warehouseStatus,
42
	5:i64 addedOn,
43
	6:i64 lastCheckedOn,
44
	7:string tinNumber,
45
	8:string pincode,
46
	9:string vendorString,
47
	10:WarehouseLocation logisticsLocation
1330 chandransh 48
	11:string vendor
85 ashish 49
}
115 ashish 50
/* */
85 ashish 51
struct ItemInventory{
52
	1:i64 id,
483 rajveer 53
	2:map<i64,i64> availability
85 ashish 54
}
55
 
483 rajveer 56
 
85 ashish 57
struct ItemInventoryHistory{
58
	1:i64 item_id,
59
	2:i64 warehouse_id,
60
	3:i64 timestamp,
61
	4:i64 availability
62
}
63
 
64
struct Item{
65
	1:i64 id,
956 chandransh 66
	2:string productGroup
67
	3:string brand,
68
	4:string modelNumber,
69
	5:string modelName,
1330 chandransh 70
	6:string color,
71
	7:i64 category,
72
	8:string comments,
73
	9:i64 catalogItemId,
121 ashish 74
	10:i64 featureId,
75
	11:string featureDescription,
483 rajveer 76
	12:ItemInventory itemInventory,
77
	13:double mrp, //maxmimum retail price
78
	14:double mop, //market operative price
79
	15:double sellingPrice, //Selling price
1343 chandransh 80
	16:double transferPrice,
720 chandransh 81
	17:double weight,
82
	18:i64 addedOn,
83
	19:i64 startDate,
84
	20:i64 retireDate,
85
	21:status itemStatus,
2033 rajveer 86
	22:string status_description,
87
	23:map<string,string> otherInfo,
88
	24:string bestDealText,
89
	25:double bestDealValue,
90
	26:double dealerPrice,
91
	27:bool defaultForEntity,
2063 ankur.sing 92
	28:i64 updatedOn,
93
	29:i64 bestSellingRank
85 ashish 94
}
95
 
1343 chandransh 96
struct VendorItemPricing{
1349 chandransh 97
	1:i64 vendorId,
98
	2:i64 itemId,
1343 chandransh 99
	3:double transferPrice,
100
	4:double mop,
101
	5:double dealerPrice
102
}
103
 
1967 rajveer 104
struct Category{
105
	1:i64 id,
106
	2:string label,
107
	3:string description,
108
	4:i64 parent_category_id,
109
	/**
110
	* This field should not be used.
111
	*/
112
	5:list<i64> children_category_ids
113
}
114
 
121 ashish 115
exception InventoryServiceException{
85 ashish 116
	1:i64 id,
117
	2:string message
118
}
119
 
121 ashish 120
service InventoryService{
763 rajveer 121
 
122
	/**
123
	* For closing the open session in sqlalchemy
124
	*/
125
	void closeSession(),
126
 
85 ashish 127
/**
128
	Availability and inventory attributes	
129
*/
130
	//all add and update methods - added by Ashish
123 ashish 131
	i64 addItem(1:Item item) throws (1:InventoryServiceException cex),
132
	i64 updateItem(1:Item item) throws (1:InventoryServiceException cex),
121 ashish 133
	i64 addWarehouse(1:Warehouse warehouse) throws (1:InventoryServiceException cex),
632 rajveer 134
	bool isActive(1:i64 itemId) throws (1:InventoryServiceException isex),
2033 rajveer 135
	string getItemStatusDescription(1:i64 itemId) throws (1:InventoryServiceException isex),
483 rajveer 136
	void updateInventory(1:i64 warehouse_id, 2:string timestamp, 3:map<string, i64> availability) throws (1:InventoryServiceException cex),
137
	// commented right now. write on based of requirement
138
	// void updatePrice(1:i64 item_id, 2:i64 warehouse_id, 3:double price) throws (1:InventoryServiceException cex),
103 ashish 139
	//all delete methods
121 ashish 140
	void retireWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
103 ashish 141
 
142
	//Item management apis
121 ashish 143
	void startItemOn(1:i64 item_id, 2:i64 timestamp) throws (1:InventoryServiceException cex),
144
	void retireItemOn(1:i64 item_id, 2:i64 timestamp) throws (1:InventoryServiceException cex),
145
	void changeItemStatus(1:i64 item_id, 2:i64 timestamp, 3:status newstatus) throws (1:InventoryServiceException cex),
85 ashish 146
	//Other accessor methods - added by Ashish
121 ashish 147
	Item getItem(1:i64 item_id) throws (1:InventoryServiceException cex),
632 rajveer 148
	list<Item> getItemsByCatalogId(1:i64 catalog_item_id) throws  (1:InventoryServiceException cex),
121 ashish 149
	list<Item> getAllItems(1:bool isActive) throws (1:InventoryServiceException cex),
150
	list<Item> getAllItemsByStatus(1:status itemStatus) throws (1:InventoryServiceException cex),
151
	ItemInventory getItemInventory(1:i64 item_id) throws (1:InventoryServiceException cex),
632 rajveer 152
	ItemInventory getItemInventoryByItemId(1:i64 item_id) throws (1:InventoryServiceException cex),
153
	//ItemInventory getItemInventoryByCatalogId(1:i64 item_id) throws (1:InventoryServiceException cex),
121 ashish 154
	i64 getItemAvailibilityAtWarehouse(1:i64 warehouse_id, 2:i64 item_id) throws (1:InventoryServiceException cex),
720 chandransh 155
	bool markItemAsContentComplete(1:i64 entityId) throws (1:InventoryServiceException cex),
646 chandransh 156
 
1157 rajveer 157
 
646 chandransh 158
	/**
159
	  Returns the id of the warehouse with the largest inventory of the item and the inventory size in the given locations.
160
	  The size of list will always be 2.
161
	 */
162
	list<i64> getItemAvailabilityAtLocation(1:i64 warehouse_loc, 2:i64 item_id) throws (1:InventoryServiceException isex),
121 ashish 163
	list<Warehouse> getAllWarehouses(1:bool isActive) throws (1:InventoryServiceException cex),
1343 chandransh 164
 
165
	/**
166
	 Returns the warehouse with the given id.
167
	*/
121 ashish 168
	Warehouse getWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
169
	list<Warehouse> getAllWarehousesForItem(1:i64 item_id) throws (1:InventoryServiceException cex),
502 rajveer 170
	list<Item> getAllItemsForWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
171
 
862 chandransh 172
	/**
173
	 Increases the reservation count for an item in a warehouse. Should always succeed normally.
174
	*/
175
	bool reserveItemInWarehouse(1:i64 itemId, 2:i64 warehouseId, 3:double quantity) throws (1:InventoryServiceException cex),
176
 
177
	/**
178
	 Decreases the reservation count for an item in a warehouse. Should always succeed normally.
179
	*/
180
	bool reduceReservationCount(1:i64 itemId, 2:i64 warehouseId, 3:double quantity) throws (1:InventoryServiceException cex),
181
 
502 rajveer 182
	// for home page .... best deals, best sellers and latest arrivals
588 chandransh 183
	list<Item> getBestSellers() throws (1:InventoryServiceException isex),
1924 rajveer 184
	list<i64> getBestSellersCatalogIds(1:i64 beginIndex, 2:i64 totalItems, 3:string brand, 4:i64 category) throws (1:InventoryServiceException cex),
588 chandransh 185
	i64 getBestSellersCount() throws (1:InventoryServiceException cex),
186
 
187
	list<Item> getBestDeals() throws (1:InventoryServiceException isex),
1924 rajveer 188
	list<i64> getBestDealsCatalogIds(1:i64 beginIndex, 2:i64 totalItems, 3:string brand, 4:i64 category) throws (1:InventoryServiceException cex),
588 chandransh 189
	i64 getBestDealsCount() throws (1:InventoryServiceException cex),
190
 
191
	list<Item> getLatestArrivals() throws (1:InventoryServiceException isex),
1924 rajveer 192
	list<i64> getLatestArrivalsCatalogIds(1:i64 beginIndex, 2:i64 totalItems, 3:string brand, 4:i64 category) throws (1:InventoryServiceException cex),
632 rajveer 193
	i64 getLatestArrivalsCount() throws (1:InventoryServiceException cex),
194
 
1157 rajveer 195
 
196
	i64 generateNewEntityID(),
197
 
198
	/**
1343 chandransh 199
	Returns the pricing information of an item associated with the vendor of the given warehouse.
200
	Raises an exception if either the item, vendor or the associated pricing information can't be found.
201
	*/
202
	VendorItemPricing getItemPricing(1:i64 itemId, 2:i64 warehouseId) throws (1:InventoryServiceException cex),
203
 
204
	/**
1157 rajveer 205
	* Store category object and retrieve it
206
	*/
1967 rajveer 207
	/**
632 rajveer 208
	bool putCategoryObject(1:binary object),
209
	binary getCategoryObject()
1967 rajveer 210
	*/
211
 
212
	/**
213
	* All category related functions
214
	*/
215
	bool addCategory(1:Category category),
216
	Category getCategory(1:i64 id),
1990 ankur.sing 217
	list<Category> getAllCategories(),
1967 rajveer 218
 
1990 ankur.sing 219
	/**
220
	Returns the list of vendor pricing information of an item.
221
	Raises an exception if item not found corresponding to itemId
222
	*/
223
	list<VendorItemPricing> getAllItemPricing(1:i64 itemId) throws (1:InventoryServiceException cex),
224
 
225
 
226
	/**
227
	Updates Vendor item pricing.
228
	Raises an exception if either the item or vendor can't be found corresponding to their ids.
229
	Raises an exception if no pricing exists for vendor-item mapping.
230
	*/
231
	void updateVendorItemPricing(1:VendorItemPricing vendorItemPricing) throws (1:InventoryServiceException cex),
232
 
2063 ankur.sing 233
	/**
234
	Return list of all vendors
235
	*/
236
	list<Vendor> getAllVendors()
237
 
85 ashish 238
}
239