Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
2820 chandransh 1
namespace java in.shop2020.warehouse
2
namespace py shop2020.thriftpy.warehouse
3
 
3374 rajveer 4
include "GenericService.thrift"
5
 
5185 mandeep.dh 6
enum ScanType {
7
    PURCHASE = 0,   // Scan-in at the time of purchase
8
    SALE = 1,       // Scan-out for sale
9
    SALE_RET = 2,   // Scan-in when an item is returned undelivered
10
    DOA_IN = 3,     // Scan-in when an item is returned by the customer with the DOA certificate
11
    DOA_OUT = 4,     // Scan-out to return an item to the supplier
12
    PURCHASE_RETURN = 5, // Scan-out to return an item to the supplier (a Non-DOA case)
13
    SALE_RET_UNUSABLE = 6,
14
    LOST_IN_TRANSIT = 7,
15
    DOA_REPLACED = 8
16
}
17
 
4496 mandeep.dh 18
struct InventoryItem {
5185 mandeep.dh 19
    // primary fields
4496 mandeep.dh 20
    1:i64 id,
21
    2:i64 itemId,
22
    3:string itemNumber,
23
    4:string serialNumber,
24
    5:i64 initialQuantity,
25
    6:i64 currentQuantity,
4555 mandeep.dh 26
    7:i64 purchaseId,
27
 
28
    // derived fields for  efficient lookups
29
    8:i64 supplierId,
5185 mandeep.dh 30
    9:double unitPrice,
31
    10:i64 currentWarehouseId,
32
    11:ScanType lastScanType
2820 chandransh 33
}
34
 
4496 mandeep.dh 35
struct Scan {
36
    1:i64 id,
37
    2:i64 inventoryItemId,
38
    3:optional i64 quantity, // ignored in case of serialized items
39
    4:optional i64 orderId, // The order that was fulfilled with thin scan!
40
    5:i64 warehouseId,
41
    6:ScanType type,
42
    7:i64 scannedAt
2820 chandransh 43
}
44
 
4496 mandeep.dh 45
exception WarehouseServiceException {
46
    1:GenericService.ExceptionType exceptionType,
47
    2:string message
2820 chandransh 48
}
49
 
4496 mandeep.dh 50
service WarehouseService extends GenericService.GenericService {
51
    /**
52
     * Creating inventory for a serialized item
53
     */
4846 mandeep.dh 54
    InventoryItem createSerializedInventoryItem(1:i64 itemId, 2:string itemNumber, 3:string serialNumber, 4:i64 purchaseId) throws (1:WarehouseServiceException wex);
2820 chandransh 55
 
4496 mandeep.dh 56
    /**
57
     * Creating inventory for a serialized item using item number
58
     */
4555 mandeep.dh 59
    InventoryItem createSerializedInventoryItemFromItemNumber(1:string itemNumber, 2:string serialNumber, 3:i64 purchaseId) throws (1:WarehouseServiceException wex);
2820 chandransh 60
 
4496 mandeep.dh 61
    /**
62
     * Creates inventory for an unserailized item
63
     */
4555 mandeep.dh 64
    InventoryItem createInventoryItem(1:i64 itemId, 2:i64 quantity, 3:i64 purchaseId) throws (1:WarehouseServiceException wex);
2820 chandransh 65
 
4496 mandeep.dh 66
    /**
67
     * Retrieves serialized inventory item given a serial number
68
     */
4541 mandeep.dh 69
    InventoryItem getInventoryItem(1:string serialNumber) throws (1:WarehouseServiceException wex);
2820 chandransh 70
 
4496 mandeep.dh 71
    /**
72
     * Retrieves non-serialized inventory items from a given supplier
73
     */
74
    list<InventoryItem> getNonSeralizedInventoryItems(1:i64 itemId, 2:i64 quantity, 3:i64 supplierId);
3383 chandransh 75
 
4496 mandeep.dh 76
    /**
77
     * Retrieves inventory items for a given item
78
     */
79
    list<InventoryItem> getInventoryItems(1:i64 itemId);
80
 
81
    /**
82
     * Retrieves scans for a given order
83
     */
84
    list<Scan> getScanForOrder(1:i64 orderId);
85
 
86
    /**
87
     * Retrieves scans for a given inventory item
88
     */
89
    list<Scan> getScan(1:i64 inventoryItemId);
90
 
91
    /**
92
     * Scan serialized items.
93
     */
5110 mandeep.dh 94
    void scanSerializedItem(1:InventoryItem inventoryItem, 2:ScanType type, 3:i64 warehouseId) throws (1:WarehouseServiceException wex);
4496 mandeep.dh 95
 
96
    /**
97
     * Scan non-serialized items.
98
     */
99
    void scan(1:i64 inventoryItemId, 2:ScanType type, 3:i64 quantity, 4:i64 warehouseId) throws (1:WarehouseServiceException wex);
100
 
101
    /**
102
     * Scan serialized items linked with an order. Returns its price.
103
     */
5110 mandeep.dh 104
    InventoryItem scanSerializedItemForOrder(1:string serialNumber, 2:ScanType type, 3:i64 orderId, 4:i64 fulfilmentWarehouseId, 5:double quantity, 6:i64 billingWarehouseId) throws (1:WarehouseServiceException wex);
4496 mandeep.dh 105
 
106
    /**
107
     * Scan non-serialized items linked with an order.
108
     */
5110 mandeep.dh 109
    void scanForOrder(1:i64 inventoryItemId, 2:ScanType type, 3:i64 quantity, 4:i64 orderId, 5:i64 fulfilmentWarehouseId) throws (1:WarehouseServiceException wex);
4496 mandeep.dh 110
 
111
    /**
112
     * Created item number to item id mapping
113
     */
114
    void createItemNumberMapping(1:string itemNumber, 2:i64 itemId);
4618 amit.gupta 115
 
116
    /**
117
     * Get itemNumber mappings for itemId 
118
     */
119
    list<string> getItemNumbers(1:i64 itemId);
5110 mandeep.dh 120
 
121
    /**
122
     * Gets item ids for a given item number
123
     */
124
    list<i64> getItemIds(1:string itemNumber);
5185 mandeep.dh 125
 
126
    /**
127
     * Retrieves all inventory items given a last scan type
128
     */
129
    list<InventoryItem> getInventoryItemsFromLastScanType(1:ScanType lastScanType) throws (1:WarehouseServiceException wex);
130
 
131
    /**
132
     * Retrieves inventory item given a inventoryItem id
133
     */
134
    InventoryItem getInventoryItemFromId(1:i64 inventoryItemId) throws (1:WarehouseServiceException wex);    
4496 mandeep.dh 135
}