Subversion Repositories SmartDukaan

Rev

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