Subversion Repositories SmartDukaan

Rev

Rev 10097 | Rev 10450 | 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
10126 amar.kumar 127
	6:i32 sourceId
6821 amar.kumar 128
}
7281 kshitij.so 129
 
130
struct AmazonInventorySnapshot {
131
    1:i64 item_id
132
    2:i64 availability
133
    3:i64 reserved
134
} 
135
 
8282 kshitij.so 136
struct AmazonFbaInventorySnapshot {
137
    1:i64 item_id
138
    2:i64 availability
139
}
140
 
8182 amar.kumar 141
struct HoldInventoryDetail {
142
	1:i64 item_id
143
	2:i64 warehouse_id
144
	3:i64 held
145
	4:i64 source
146
}
147
 
9404 vikram.rag 148
struct SnapdealInventoryItem{
149
	1:i64 item_id
150
	2:i64 availability
151
	3:i64 lastUpdatedOnSnapdeal
9495 vikram.rag 152
	4:i64 pendingOrders
9404 vikram.rag 153
}
154
 
10050 vikram.rag 155
struct FlipkartInventorySnapshot{
156
	1:i64 item_id
157
	2:i64 availability
158
	3:i64 createdOrders
159
	4:i64 heldOrders
160
}
9404 vikram.rag 161
 
10050 vikram.rag 162
 
5945 mandeep.dh 163
service InventoryService extends GenericService.GenericService{
164
 
165
	i64 addWarehouse(1:Warehouse warehouse) throws (1:InventoryServiceException cex),
166
 
167
	/**
168
	add a new vendor
169
	*/
170
	i64 addVendor(1:Vendor vendor) throws (1:InventoryServiceException cex),
171
 
172
	/**
173
	Stores the incremental warehouse updates of items.
174
	*/
175
	void updateInventoryHistory(1:i64 warehouse_id, 2:string timestamp, 3:map<string, i64> availability) throws (1:InventoryServiceException cex),
176
 
177
	/**
178
	Stores the final inventory stocks of items.
179
	*/
180
	void updateInventory(1:i64 warehouse_id, 2:string timestamp, 3:map<string, i64> availability) throws (1:InventoryServiceException cex),
181
 
182
	/**
183
	Add the inventory to existing stock.
184
	*/
185
	void addInventory(1:i64 itemId, 2:i64 warehouseId, 3:i64 quantity) throws (1:InventoryServiceException cex),
186
 
187
	//all delete methods
188
	void retireWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
189
 
190
	ItemInventory getItemInventoryByItemId(1:i64 item_id) throws (1:InventoryServiceException cex),
191
	i64 getItemAvailibilityAtWarehouse(1:i64 warehouse_id, 2:i64 item_id) throws (1:InventoryServiceException cex),
192
 
193
	/**
194
	Determines the warehouse that should be used to fulfil an order for the given item.
195
	It first checks all the warehouses which are in the logistics location given by the
196
	warehouse_loc parameter. If none of the warehouses there have any inventory, then the
197
	preferred warehouse for the item is used. 
198
 
199
	Returns an ordered list of size 4 with following elements in the given order:
200
	1. Id of the fulfillment warehouse which was finally picked up.
201
	2. Expected delay added by the category manager.
202
	3. Id of the billing warehouse which was finally picked up.
203
	 */
5978 rajveer 204
	list<i64> getItemAvailabilityAtLocation(1:i64 itemId, 2:i64 sourceId) throws (1:InventoryServiceException isex),
5945 mandeep.dh 205
 
206
	list<Warehouse> getAllWarehouses(1:bool isActive) throws (1:InventoryServiceException cex),
207
 
208
	/**
209
	 Returns the warehouse with the given id.
210
	*/
211
	Warehouse getWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
212
	list<i64> getAllItemsForWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
213
 
214
	/**
5966 rajveer 215
	Depending on reservation in the table, verify if we can bill this order or not.
216
	*/
217
	bool isOrderBillable(1:i64 itemId, 2:i64 warehouseId, 3:i64 sourceId, 4:i64 orderId),
218
 
219
	/**
5945 mandeep.dh 220
	 Increases the reservation count for an item in a warehouse. Should always succeed normally.
221
	*/
5966 rajveer 222
	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 223
 
224
	/**
7968 amar.kumar 225
	 Updates the reservation for Order
226
	*/
227
	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),
228
 
229
	/**
5945 mandeep.dh 230
	 Decreases the reservation count for an item in a warehouse. Should always succeed normally.
231
	*/
5966 rajveer 232
	bool reduceReservationCount(1:i64 itemId, 2:i64 warehouseId, 3:i64 sourceId, 4:i64 orderId, 5:double quantity) throws (1:InventoryServiceException cex),
5945 mandeep.dh 233
 
234
	/**
235
	Returns the pricing information of an item associated with the vendor of the given warehouse.
236
	Raises an exception if either the item, vendor or the associated pricing information can't be found.
237
	*/
238
	VendorItemPricing getItemPricing(1:i64 itemId, 2:i64 vendorId) throws (1:InventoryServiceException cex),
239
 
240
	/**
241
	Returns the list of vendor pricing information of an item.
242
	Raises an exception if item not found corresponding to itemId
243
	*/
244
	list<VendorItemPricing> getAllItemPricing(1:i64 itemId) throws (1:InventoryServiceException cex),
245
 
246
 
247
	/**
248
	Adds vendor prices corresponding to the item. If pricing already exists then updates the prices. 
249
	Raises an exception if either the item or vendor can't be found corresponding to their ids.
250
	*/
251
	void addVendorItemPricing(1:VendorItemPricing vendorItemPricing) throws (1:InventoryServiceException cex),
252
 
253
	/**
254
	Returns a vendor given its id
255
	*/
256
	Vendor getVendor(1:i64 vendorId), 
257
 
258
    /**
259
    Return list of all vendors
260
    */
261
    list<Vendor> getAllVendors(), 
262
 
263
	/**
264
	Adds VendorItemMapping. Updates VendorItemMapping if exists corresponding to the item key.  
265
	*/
266
	void addVendorItemMapping(1:string key, 2:VendorItemMapping vendorItemMapping) throws (1:InventoryServiceException cex),
267
 
268
	/**
269
	Returns the list of vendor item mapping corresponding to itemId passed as parameter.
270
	Raises an exception if item not found corresponding to itemId
271
	*/
272
	list<VendorItemMapping> getVendorItemMappings(1:i64 itemId) throws (1:InventoryServiceException cex),
273
 
274
	/**
275
	Returns a list of inventory stock for items for which there are pending orders for the given vendor.
276
	*/
277
	list<AvailableAndReservedStock> getPendingOrdersInventory(1:i64 vendorid),
278
 
279
	/**
280
	 This method returns all warehouses for a given warehosueType, inventoryType, vendor, billingWarehouse and shippingWarehouse.
281
	 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
282
	 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
283
     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
284
     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
285
	 */
286
	list<Warehouse> getWarehouses(1:WarehouseType warehouseType, 2:InventoryType inventoryType, 3:i64 vendorId, 4:i64 billingWarehouseId, 5:i64 shippingWarehouseId);
287
 
288
    /**
289
     * Resets availability of an item to the quantity mentioned in a warehouse.
290
     */
291
    void resetAvailability(1:string itemKey, 2:i64 vendorId, 3:i64 quantity, 4:i64 warehouseId) throws (1:InventoryServiceException cex);
292
 
293
    /**
294
     * Resets availability of a warehouse to zero.
295
     */
296
    void resetAvailabilityForWarehouse(1:i64 warehouseId) throws (1:InventoryServiceException cex);
297
 
298
    /**
299
     * Returns the list of item keys which need to be processed for a given warehouse.
300
     * This is currently used by Support application to send item keys whose inventory needs 
301
     * to be updated from PLB
302
     */
303
    list<string> getItemKeysToBeProcessed(1:i64 warehouseId);
304
 
305
    /**
306
     * Marks/Deletes missed inventory updates for a given key and warehouse.
307
     * This generally happens when updates from PLB are applied on the currentinventorysnapshot for an item
308
     */
309
    void markMissedInventoryUpdatesAsProcessed(1:string itemKey, 2:i64 warehouseId);
310
 
311
    /**
312
     * Returns all the item key mappings that have been ignored until date. Value of map has the warehouse id
313
     * and the timestamp from where alert was raised.
314
     */
315
    map<string, map<i64, i64>> getIgnoredItemKeys();
316
 
317
    /**
318
    Add the BAD type inventory to existing stock.
319
    */
320
    void addBadInventory(1:i64 itemId, 2:i64 warehouseId, 3:i64 quantity) throws (1:InventoryServiceException cex);
321
 
322
    /**
323
    Returns all shipping locations
324
    */    
325
    list<Warehouse> getShippingLocations();
326
 
327
    /**
328
     * Fetches all the vendor item mappings present.
329
     */    
330
    list<VendorItemMapping> getAllVendorItemMappings();
331
 
332
    /**
333
     * Gets items' inventory for a warehouse
334
     * If warehouse is passed as zero, items' inventory across all warehouses is sent
335
     */
336
    map<i64, ItemInventory> getInventorySnapshot(1:i64 warehouseId);
337
 
338
    /**
339
    * Clear item availability cache.
340
    */
341
    void clearItemAvailabilityCache();
342
 
343
    void updateVendorString(1:i64 warehouseId, 2:string vendorString);
6096 amit.gupta 344
 
345
    void clearItemAvailabilityCacheForItem(1:i64 item_id);
6467 amar.kumar 346
 
7718 amar.kumar 347
    i64 getOurWarehouseIdForVendor(1:i64 vendorId, 2:i64 billingWarehouseId);
6484 amar.kumar 348
 
349
    map<i64, i64> getItemAvailabilitiesAtOurWarehouses(1:list<i64> item_ids);
6531 vikram.rag 350
 
351
    list<i64> getMonitoredWarehouseForVendors(1:list<i64> vendorIds);
352
 
353
    list<IgnoredInventoryUpdateItems> getIgnoredWarehouseidsAndItemids();
354
 
355
    bool insertItemtoIgnoreInventoryUpdatelist(1:i64 item_id,2:i64 warehouse_id);
356
 
357
    bool deleteItemFromIgnoredInventoryUpdateList(1:i64 item_id,2:i64 warehouse_id);
358
 
359
    i32 getAllIgnoredInventoryupdateItemsCount();
360
 
361
    list<i64> getIgnoredInventoryUpdateItemids(1:i32 offset,2:i32 limit);
362
 
6821 amar.kumar 363
    void updateItemStockPurchaseParams(1:i64 item_id, 2:i32 numOfDaysStock, 3:i64 minStockLevel);
364
 
365
    ItemStockPurchaseParams getItemStockPurchaseParams(1:i64 itemId);
366
 
367
    void addOosStatusForItem(1:map<i64, bool> oosStatusMap, 2: i64 date);
6832 amar.kumar 368
 
9665 rajveer 369
    list<OOSStatus> getOosStatusesForXDaysForItem(1:i64 itemId, 2:i32 sourceId, 3:i32 days);
6857 amar.kumar 370
 
10126 amar.kumar 371
    list<OOSStatus> getOosStatusesForXDays(1:i32 sourceId, 2:i32 days);
372
 
373
    list<VendorItemPricing> getAllVendorItemPricing(1:i64 itemId, 2:i64 vendorId);
374
 
6857 amar.kumar 375
    list<ItemStockPurchaseParams> getNonZeroItemStockPurchaseParams();
7149 amar.kumar 376
 
377
    /**
378
	Returns a list of inventory stock for items for which there are pending orders or have billable inventory.
379
	*/
380
	list<AvailableAndReservedStock> getBillableInventoryAndPendingOrders();
7281 kshitij.so 381
 
382
	string getWarehouseName(1:i64 warehouse_id);
383
 
384
	AmazonInventorySnapshot getAmazonInventoryForItem(1:i64 item_id);
385
 
386
	list<AmazonInventorySnapshot> getAllAmazonInventory();
387
 
388
	void addOrUpdateAmazonInventoryForItem(1:AmazonInventorySnapshot amazonInventorySnapshot);
389
 
7972 amar.kumar 390
	string getLastNdaySaleForItem(1:i64 itemId, 2:i64 numberOfDays);
391
 
8282 kshitij.so 392
	void addOrUpdateAmazonFbaInventory(1:AmazonFbaInventorySnapshot amazonfbainventorysnapshot);
9482 vikram.rag 393
 
9762 amar.kumar 394
	void addUpdateHoldInventory(1:i64 itemId, 2:i64 warehouseId, 3:i64 holdQuantity, 4:i64 source)  throws (1:InventoryServiceException cex);
8182 amar.kumar 395
 
8282 kshitij.so 396
	i64 getAmazonFbaItemInventory(1:i64 itemId);
397
 
9404 vikram.rag 398
	list<AmazonFbaInventorySnapshot> getAllAmazonFbaItemInventory();
8282 kshitij.so 399
 
9404 vikram.rag 400
	list<i64> getOursGoodWarehouseIdsForLocation(1:i64 state_id);
8363 vikram.rag 401
 
9404 vikram.rag 402
	i64 getHoldInventoryDetailForItemForWarehouseIdExceptSource(1:i64 id,2:i64 warehouse_id,3:i64 source);
8959 vikram.rag 403
 
9404 vikram.rag 404
	SnapdealInventoryItem getSnapdealInventoryForItem(1:i64 item_id);
405
 
406
	void addOrUpdateSnapdealInventoryForItem(1:SnapdealInventoryItem snapdealinventoryitem)
407
 
408
	double getNlcForWarehouse(1:i64 warehouse_id,2:i64 item_id)
409
 
9640 amar.kumar 410
	map<i32, i64> getHeldInventoryMapForItem(1:i64 item_id, 2:i64 warehouse_id)
411
 
9495 vikram.rag 412
	void addOrUpdateAllAmazonFbaInventory(list<AmazonFbaInventorySnapshot> allamazonfbainventorysnapshot)
9456 vikram.rag 413
 
9495 vikram.rag 414
	void addOrUpdateAllSnapdealInventory(list<SnapdealInventoryItem> allsnapdealinventorysnapshot)
9482 vikram.rag 415
 
9495 vikram.rag 416
	list<SnapdealInventoryItem> getSnapdealInventorySnapshot()
417
 
9761 amar.kumar 418
	list<HoldInventoryDetail> getHoldInventoryDetails(1:i64 itemId, 2:i64 warehouseId, 3:i64 source)
419
 
10050 vikram.rag 420
	void addOrUpdateFlipkartInventorySnapshot(list<FlipkartInventorySnapshot> flipkartInventorySnapshot)
421
 
422
	list<FlipkartInventorySnapshot> getFlipkartInventorySnapshot()
423
 
10097 kshitij.so 424
	FlipkartInventorySnapshot getFlipkartlInventoryForItem(1:i64 item_id)
425
 
5945 mandeep.dh 426
}