Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
5945 mandeep.dh 1
namespace java in.shop2020.model.v1.inventory
2
namespace py shop2020.thriftpy.model.v1.inventory
3
 
4
include "GenericService.thrift"
5
 
6
enum WarehouseLocation {
7808 anupam.sin 7
	Delhi = 0,
8
	Mumbai = 1,
5945 mandeep.dh 9
	Bangalore = 2,
10
	Kolkata = 3
11
}
12
 
13
struct Vendor {
14
	1:i64 id,
15
	2:string name
16
}
17
 
18
enum BillingType {
19
	OURS = 0,
6725 rajveer 20
	EXTERNAL = 1,
21
	OURS_EXTERNAL = 2
5945 mandeep.dh 22
}
23
 
24
enum WarehouseType {
25
    OURS = 0,
7410 amar.kumar 26
    THIRD_PARTY = 1,
27
    OURS_THIRDPARTY = 2
5945 mandeep.dh 28
}
29
 
30
enum InventoryType {
31
    GOOD = 0,
32
    BAD = 1,
33
    VIRTUAL = 2
34
}
35
 
36
enum HolidayType {
37
	WEEKLY = 0,
38
	MONTHLY = 1,
39
	SPECIFIC = 2
40
}
41
 
42
/* 
43
Warehouse fields details
44
location: it is full address
45
vendorString: some key for the warehouse
46
*/
47
struct Warehouse {
48
	1:i64 id,
49
	2:string displayName,
50
	3:string location,
51
	5:i64 addedOn,
52
	6:i64 lastCheckedOn,
53
	7:string tinNumber,
54
	8:string pincode,
55
	9:string vendorString,
56
	10:WarehouseLocation logisticsLocation,
57
	12:BillingType billingType,
58
	13:WarehouseType warehouseType,
59
	14:InventoryType inventoryType,
60
	15:Vendor vendor,
61
	16:i64 shippingWarehouseId,
62
	17:i64 billingWarehouseId,
63
	18:bool isAvailabilityMonitored,
7330 amit.gupta 64
	19:i64 transferDelayInHours,
65
	20:i64 stateId
5945 mandeep.dh 66
}
67
 
68
/* */
69
struct ItemInventory{
70
	1:i64 id,
71
	2:map<i64,i64> availability,
8182 amar.kumar 72
	3:map<i64,i64> reserved,
73
	4:map<i64,i64> held
5945 mandeep.dh 74
}
75
 
76
struct ItemInventoryHistory{
77
	1:i64 item_id,
78
	2:i64 warehouse_id,
79
	3:i64 timestamp,
80
	4:i64 availability
81
}
82
 
83
struct VendorItemPricing{
84
	1:i64 vendorId,
85
	2:i64 itemId,
86
	3:double transferPrice,
87
	4:double mop,
6747 amar.kumar 88
	5:double dealerPrice,
89
	6:double nlc
5945 mandeep.dh 90
}
91
 
92
struct VendorItemMapping{
93
	1:i64 vendorId,
94
	2:string itemKey,
95
	3:i64 itemId
96
}
97
 
98
struct AvailableAndReservedStock {
99
	1:i64 itemId,
100
	2:i64 available,
101
	3:i64 reserved,
102
	4:i64 minimumStock
103
}
104
 
6531 vikram.rag 105
struct IgnoredInventoryUpdateItems {
106
	1:i64 itemId,
107
	2:i64 warehouseId
6821 amar.kumar 108
}
109
 
110
struct ItemStockPurchaseParams{
111
	1:i64 item_id,
112
	2:i32 numOfDaysStock,
113
	3:i64 minStockLevel
114
}
115
 
5945 mandeep.dh 116
exception InventoryServiceException{
117
	1:i64 id,
118
	2:string message
119
}
120
 
6821 amar.kumar 121
struct OOSStatus {
122
	1:i64 item_id
123
	2:i64 date
124
	3:bool is_oos
125
	4:i64 num_orders
8182 amar.kumar 126
	5:i64 rto_orders
6821 amar.kumar 127
}
7281 kshitij.so 128
 
129
struct AmazonInventorySnapshot {
130
    1:i64 item_id
131
    2:i64 availability
132
    3:i64 reserved
133
} 
134
 
8282 kshitij.so 135
struct AmazonFbaInventorySnapshot {
136
    1:i64 item_id
137
    2:i64 availability
138
}
139
 
8182 amar.kumar 140
struct HoldInventoryDetail {
141
	1:i64 item_id
142
	2:i64 warehouse_id
143
	3:i64 held
144
	4:i64 source
145
}
146
 
9404 vikram.rag 147
struct SnapdealInventoryItem{
148
	1:i64 item_id
149
	2:i64 availability
150
	3:i64 lastUpdatedOnSnapdeal
9495 vikram.rag 151
	4:i64 pendingOrders
9404 vikram.rag 152
}
153
 
10050 vikram.rag 154
struct FlipkartInventorySnapshot{
155
	1:i64 item_id
156
	2:i64 availability
157
	3:i64 createdOrders
158
	4:i64 heldOrders
159
}
9404 vikram.rag 160
 
10050 vikram.rag 161
 
5945 mandeep.dh 162
service InventoryService extends GenericService.GenericService{
163
 
164
	i64 addWarehouse(1:Warehouse warehouse) throws (1:InventoryServiceException cex),
165
 
166
	/**
167
	add a new vendor
168
	*/
169
	i64 addVendor(1:Vendor vendor) throws (1:InventoryServiceException cex),
170
 
171
	/**
172
	Stores the incremental warehouse updates of items.
173
	*/
174
	void updateInventoryHistory(1:i64 warehouse_id, 2:string timestamp, 3:map<string, i64> availability) throws (1:InventoryServiceException cex),
175
 
176
	/**
177
	Stores the final inventory stocks of items.
178
	*/
179
	void updateInventory(1:i64 warehouse_id, 2:string timestamp, 3:map<string, i64> availability) throws (1:InventoryServiceException cex),
180
 
181
	/**
182
	Add the inventory to existing stock.
183
	*/
184
	void addInventory(1:i64 itemId, 2:i64 warehouseId, 3:i64 quantity) throws (1:InventoryServiceException cex),
185
 
186
	//all delete methods
187
	void retireWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
188
 
189
	ItemInventory getItemInventoryByItemId(1:i64 item_id) throws (1:InventoryServiceException cex),
190
	i64 getItemAvailibilityAtWarehouse(1:i64 warehouse_id, 2:i64 item_id) throws (1:InventoryServiceException cex),
191
 
192
	/**
193
	Determines the warehouse that should be used to fulfil an order for the given item.
194
	It first checks all the warehouses which are in the logistics location given by the
195
	warehouse_loc parameter. If none of the warehouses there have any inventory, then the
196
	preferred warehouse for the item is used. 
197
 
198
	Returns an ordered list of size 4 with following elements in the given order:
199
	1. Id of the fulfillment warehouse which was finally picked up.
200
	2. Expected delay added by the category manager.
201
	3. Id of the billing warehouse which was finally picked up.
202
	 */
5978 rajveer 203
	list<i64> getItemAvailabilityAtLocation(1:i64 itemId, 2:i64 sourceId) throws (1:InventoryServiceException isex),
5945 mandeep.dh 204
 
205
	list<Warehouse> getAllWarehouses(1:bool isActive) throws (1:InventoryServiceException cex),
206
 
207
	/**
208
	 Returns the warehouse with the given id.
209
	*/
210
	Warehouse getWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
211
	list<i64> getAllItemsForWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
212
 
213
	/**
5966 rajveer 214
	Depending on reservation in the table, verify if we can bill this order or not.
215
	*/
216
	bool isOrderBillable(1:i64 itemId, 2:i64 warehouseId, 3:i64 sourceId, 4:i64 orderId),
217
 
218
	/**
5945 mandeep.dh 219
	 Increases the reservation count for an item in a warehouse. Should always succeed normally.
220
	*/
5966 rajveer 221
	bool reserveItemInWarehouse(1:i64 itemId, 2:i64 warehouseId, 3:i64 sourceId, 4:i64 orderId, 5:i64 createdTimestamp, 6:i64 promisedShippingTimestamp, 7:double quantity) throws (1:InventoryServiceException cex),
5945 mandeep.dh 222
 
223
	/**
7968 amar.kumar 224
	 Updates the reservation for Order
225
	*/
226
	bool updateReservationForOrder(1:i64 itemId, 2:i64 warehouseId, 3:i64 sourceId, 4:i64 orderId, 5:i64 createdTimestamp, 6:i64 promisedShippingTimestamp, 7:double quantity) throws (1:InventoryServiceException cex),
227
 
228
	/**
5945 mandeep.dh 229
	 Decreases the reservation count for an item in a warehouse. Should always succeed normally.
230
	*/
5966 rajveer 231
	bool reduceReservationCount(1:i64 itemId, 2:i64 warehouseId, 3:i64 sourceId, 4:i64 orderId, 5:double quantity) throws (1:InventoryServiceException cex),
5945 mandeep.dh 232
 
233
	/**
234
	Returns the pricing information of an item associated with the vendor of the given warehouse.
235
	Raises an exception if either the item, vendor or the associated pricing information can't be found.
236
	*/
237
	VendorItemPricing getItemPricing(1:i64 itemId, 2:i64 vendorId) throws (1:InventoryServiceException cex),
238
 
239
	/**
240
	Returns the list of vendor pricing information of an item.
241
	Raises an exception if item not found corresponding to itemId
242
	*/
243
	list<VendorItemPricing> getAllItemPricing(1:i64 itemId) throws (1:InventoryServiceException cex),
244
 
245
 
246
	/**
247
	Adds vendor prices corresponding to the item. If pricing already exists then updates the prices. 
248
	Raises an exception if either the item or vendor can't be found corresponding to their ids.
249
	*/
250
	void addVendorItemPricing(1:VendorItemPricing vendorItemPricing) throws (1:InventoryServiceException cex),
251
 
252
	/**
253
	Returns a vendor given its id
254
	*/
255
	Vendor getVendor(1:i64 vendorId), 
256
 
257
    /**
258
    Return list of all vendors
259
    */
260
    list<Vendor> getAllVendors(), 
261
 
262
	/**
263
	Adds VendorItemMapping. Updates VendorItemMapping if exists corresponding to the item key.  
264
	*/
265
	void addVendorItemMapping(1:string key, 2:VendorItemMapping vendorItemMapping) throws (1:InventoryServiceException cex),
266
 
267
	/**
268
	Returns the list of vendor item mapping corresponding to itemId passed as parameter.
269
	Raises an exception if item not found corresponding to itemId
270
	*/
271
	list<VendorItemMapping> getVendorItemMappings(1:i64 itemId) throws (1:InventoryServiceException cex),
272
 
273
	/**
274
	Returns a list of inventory stock for items for which there are pending orders for the given vendor.
275
	*/
276
	list<AvailableAndReservedStock> getPendingOrdersInventory(1:i64 vendorid),
277
 
278
	/**
279
	 This method returns all warehouses for a given warehosueType, inventoryType, vendor, billingWarehouse and shippingWarehouse.
280
	 getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 3, 7, 7) would return ours warehouse with GOOD type inventory for vendor 1 for billing warehouse 7 and shipping warehouse 7
281
	 getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 3, 7, 7) would return ours warehouse with GOOD type inventory for vendor 3 for billing warehouse 7 and shipping warehouse 7
282
     getWarehouses(null, null, 3, 7, 7) would return all type warehouses with all type inventory for vendor 3 for billing warehouse 7 and shipping warehouse 7
283
     getWarehouses(null, null, 0, 0, 7) would return all type warehouses with all type inventory for all vendors for all billing warehouses at shipping warehouse 7
284
	 */
285
	list<Warehouse> getWarehouses(1:WarehouseType warehouseType, 2:InventoryType inventoryType, 3:i64 vendorId, 4:i64 billingWarehouseId, 5:i64 shippingWarehouseId);
286
 
287
    /**
288
     * Resets availability of an item to the quantity mentioned in a warehouse.
289
     */
290
    void resetAvailability(1:string itemKey, 2:i64 vendorId, 3:i64 quantity, 4:i64 warehouseId) throws (1:InventoryServiceException cex);
291
 
292
    /**
293
     * Resets availability of a warehouse to zero.
294
     */
295
    void resetAvailabilityForWarehouse(1:i64 warehouseId) throws (1:InventoryServiceException cex);
296
 
297
    /**
298
     * Returns the list of item keys which need to be processed for a given warehouse.
299
     * This is currently used by Support application to send item keys whose inventory needs 
300
     * to be updated from PLB
301
     */
302
    list<string> getItemKeysToBeProcessed(1:i64 warehouseId);
303
 
304
    /**
305
     * Marks/Deletes missed inventory updates for a given key and warehouse.
306
     * This generally happens when updates from PLB are applied on the currentinventorysnapshot for an item
307
     */
308
    void markMissedInventoryUpdatesAsProcessed(1:string itemKey, 2:i64 warehouseId);
309
 
310
    /**
311
     * Returns all the item key mappings that have been ignored until date. Value of map has the warehouse id
312
     * and the timestamp from where alert was raised.
313
     */
314
    map<string, map<i64, i64>> getIgnoredItemKeys();
315
 
316
    /**
317
    Add the BAD type inventory to existing stock.
318
    */
319
    void addBadInventory(1:i64 itemId, 2:i64 warehouseId, 3:i64 quantity) throws (1:InventoryServiceException cex);
320
 
321
    /**
322
    Returns all shipping locations
323
    */    
324
    list<Warehouse> getShippingLocations();
325
 
326
    /**
327
     * Fetches all the vendor item mappings present.
328
     */    
329
    list<VendorItemMapping> getAllVendorItemMappings();
330
 
331
    /**
332
     * Gets items' inventory for a warehouse
333
     * If warehouse is passed as zero, items' inventory across all warehouses is sent
334
     */
335
    map<i64, ItemInventory> getInventorySnapshot(1:i64 warehouseId);
336
 
337
    /**
338
    * Clear item availability cache.
339
    */
340
    void clearItemAvailabilityCache();
341
 
342
    void updateVendorString(1:i64 warehouseId, 2:string vendorString);
6096 amit.gupta 343
 
344
    void clearItemAvailabilityCacheForItem(1:i64 item_id);
6467 amar.kumar 345
 
7718 amar.kumar 346
    i64 getOurWarehouseIdForVendor(1:i64 vendorId, 2:i64 billingWarehouseId);
6484 amar.kumar 347
 
348
    map<i64, i64> getItemAvailabilitiesAtOurWarehouses(1:list<i64> item_ids);
6531 vikram.rag 349
 
350
    list<i64> getMonitoredWarehouseForVendors(1:list<i64> vendorIds);
351
 
352
    list<IgnoredInventoryUpdateItems> getIgnoredWarehouseidsAndItemids();
353
 
354
    bool insertItemtoIgnoreInventoryUpdatelist(1:i64 item_id,2:i64 warehouse_id);
355
 
356
    bool deleteItemFromIgnoredInventoryUpdateList(1:i64 item_id,2:i64 warehouse_id);
357
 
358
    i32 getAllIgnoredInventoryupdateItemsCount();
359
 
360
    list<i64> getIgnoredInventoryUpdateItemids(1:i32 offset,2:i32 limit);
361
 
6821 amar.kumar 362
    void updateItemStockPurchaseParams(1:i64 item_id, 2:i32 numOfDaysStock, 3:i64 minStockLevel);
363
 
364
    ItemStockPurchaseParams getItemStockPurchaseParams(1:i64 itemId);
365
 
366
    void addOosStatusForItem(1:map<i64, bool> oosStatusMap, 2: i64 date);
6832 amar.kumar 367
 
9665 rajveer 368
    list<OOSStatus> getOosStatusesForXDaysForItem(1:i64 itemId, 2:i32 sourceId, 3:i32 days);
6857 amar.kumar 369
 
370
    list<ItemStockPurchaseParams> getNonZeroItemStockPurchaseParams();
7149 amar.kumar 371
 
372
    /**
373
	Returns a list of inventory stock for items for which there are pending orders or have billable inventory.
374
	*/
375
	list<AvailableAndReservedStock> getBillableInventoryAndPendingOrders();
7281 kshitij.so 376
 
377
	string getWarehouseName(1:i64 warehouse_id);
378
 
379
	AmazonInventorySnapshot getAmazonInventoryForItem(1:i64 item_id);
380
 
381
	list<AmazonInventorySnapshot> getAllAmazonInventory();
382
 
383
	void addOrUpdateAmazonInventoryForItem(1:AmazonInventorySnapshot amazonInventorySnapshot);
384
 
7972 amar.kumar 385
	string getLastNdaySaleForItem(1:i64 itemId, 2:i64 numberOfDays);
386
 
8282 kshitij.so 387
	void addOrUpdateAmazonFbaInventory(1:AmazonFbaInventorySnapshot amazonfbainventorysnapshot);
9482 vikram.rag 388
 
9762 amar.kumar 389
	void addUpdateHoldInventory(1:i64 itemId, 2:i64 warehouseId, 3:i64 holdQuantity, 4:i64 source)  throws (1:InventoryServiceException cex);
8182 amar.kumar 390
 
8282 kshitij.so 391
	i64 getAmazonFbaItemInventory(1:i64 itemId);
392
 
9404 vikram.rag 393
	list<AmazonFbaInventorySnapshot> getAllAmazonFbaItemInventory();
8282 kshitij.so 394
 
9404 vikram.rag 395
	list<i64> getOursGoodWarehouseIdsForLocation(1:i64 state_id);
8363 vikram.rag 396
 
9404 vikram.rag 397
	i64 getHoldInventoryDetailForItemForWarehouseIdExceptSource(1:i64 id,2:i64 warehouse_id,3:i64 source);
8959 vikram.rag 398
 
9404 vikram.rag 399
	SnapdealInventoryItem getSnapdealInventoryForItem(1:i64 item_id);
400
 
401
	void addOrUpdateSnapdealInventoryForItem(1:SnapdealInventoryItem snapdealinventoryitem)
402
 
403
	double getNlcForWarehouse(1:i64 warehouse_id,2:i64 item_id)
404
 
9640 amar.kumar 405
	map<i32, i64> getHeldInventoryMapForItem(1:i64 item_id, 2:i64 warehouse_id)
406
 
9495 vikram.rag 407
	void addOrUpdateAllAmazonFbaInventory(list<AmazonFbaInventorySnapshot> allamazonfbainventorysnapshot)
9456 vikram.rag 408
 
9495 vikram.rag 409
	void addOrUpdateAllSnapdealInventory(list<SnapdealInventoryItem> allsnapdealinventorysnapshot)
9482 vikram.rag 410
 
9495 vikram.rag 411
	list<SnapdealInventoryItem> getSnapdealInventorySnapshot()
412
 
9761 amar.kumar 413
	list<HoldInventoryDetail> getHoldInventoryDetails(1:i64 itemId, 2:i64 warehouseId, 3:i64 source)
414
 
10050 vikram.rag 415
	void addOrUpdateFlipkartInventorySnapshot(list<FlipkartInventorySnapshot> flipkartInventorySnapshot)
416
 
417
	list<FlipkartInventorySnapshot> getFlipkartInventorySnapshot()
418
 
10097 kshitij.so 419
	FlipkartInventorySnapshot getFlipkartlInventoryForItem(1:i64 item_id)
420
 
5945 mandeep.dh 421
}