Subversion Repositories SmartDukaan

Rev

Rev 720 | Rev 763 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

namespace java in.shop2020.model.v1.catalog
namespace py shop2020.thriftpy.model.v1.catalog

/**
        Objects
*/

/**
Caution :- Never ever change the numbers in it. Please confirm from @ashish before any changes in enum and other entries in file.
**/

enum status{
        PHASED_OUT = 0,         //Item is no longer selling
        DELETED = 1,            //Item has been deliberately deleted 
        PAUSED = 2,                     //Item's sale is currently paused
        ACTIVE = 3,                     //Item is available for sale as of now
        IN_PROCESS = 4          //Item has been added, but content is not available for the same
        CONTENT_COMPLETE = 5  //The content for this item has been completed. We can start selling the item now.
}

enum WarehouseLocation{
        Delhi = 0,
        Mumbai = 1,
        Bangalore = 2,
        Kolkata = 3
}

/* 
Warehouse fields details
location: it is full address
vendorString: some key for the warehouse
*/
struct Warehouse{
        1:i64 id,
        2:string displayName,
        3:string location,
        4:status warehouseStatus,
        5:i64 addedOn,
        6:i64 lastCheckedOn,
        7:string tinNumber,
        8:string pincode,
        9:string vendorString,
        10:WarehouseLocation logisticsLocation
}
/* */
struct ItemInventory{
        1:i64 id,
        2:map<i64,i64> availability
}


struct ItemInventoryHistory{
        1:i64 item_id,
        2:i64 warehouse_id,
        3:i64 timestamp,
        4:i64 availability
}

struct Item{
        1:i64 id,
        2:string manufacturerName,
        3:string modelNumber,
        4:string modelName,
        5:i64 category,
        6:string comments,
        7:i64 catalogItemId,
        8:string vendorItemId
        10:i64 featureId,
        11:string featureDescription,
        12:ItemInventory itemInventory,
        13:double mrp, //maxmimum retail price
        14:double mop, //market operative price
        15:double sellingPrice, //Selling price
        16:double transferPrice
        17:double weight,
        18:i64 addedOn,
        19:i64 startDate,
        20:i64 retireDate,
        21:status itemStatus,
        22:map<string,string> otherInfo,
        23:string bestDealText,
        24:double bestDealValue,
        25:double dealerPrice,
        26:i64 updatedOn,
        27:string color
}

exception InventoryServiceException{
        1:i64 id,
        2:string message
}

service InventoryService{
/**
        Availability and inventory attributes   
*/
        //all add and update methods - added by Ashish
        i64 addItem(1:Item item) throws (1:InventoryServiceException cex),
        i64 updateItem(1:Item item) throws (1:InventoryServiceException cex),
        i64 addWarehouse(1:Warehouse warehouse) throws (1:InventoryServiceException cex),
        bool isActive(1:i64 itemId) throws (1:InventoryServiceException isex),
        void updateInventory(1:i64 warehouse_id, 2:string timestamp, 3:map<string, i64> availability) throws (1:InventoryServiceException cex),
        // commented right now. write on based of requirement
        // void updatePrice(1:i64 item_id, 2:i64 warehouse_id, 3:double price) throws (1:InventoryServiceException cex),
        //all delete methods
        void retireWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
        
        //Item management apis
        void startItemOn(1:i64 item_id, 2:i64 timestamp) throws (1:InventoryServiceException cex),
        void retireItemOn(1:i64 item_id, 2:i64 timestamp) throws (1:InventoryServiceException cex),
        void changeItemStatus(1:i64 item_id, 2:i64 timestamp, 3:status newstatus) throws (1:InventoryServiceException cex),
        //Other accessor methods - added by Ashish
        Item getItem(1:i64 item_id) throws (1:InventoryServiceException cex),
        list<Item> getItemsByCatalogId(1:i64 catalog_item_id) throws  (1:InventoryServiceException cex),
        list<Item> getAllItems(1:bool isActive) throws (1:InventoryServiceException cex),
        list<Item> getAllItemsByStatus(1:status itemStatus) throws (1:InventoryServiceException cex),
        ItemInventory getItemInventory(1:i64 item_id) throws (1:InventoryServiceException cex),
        ItemInventory getItemInventoryByItemId(1:i64 item_id) throws (1:InventoryServiceException cex),
        //ItemInventory getItemInventoryByCatalogId(1:i64 item_id) throws (1:InventoryServiceException cex),
        i64 getItemAvailibilityAtWarehouse(1:i64 warehouse_id, 2:i64 item_id) throws (1:InventoryServiceException cex),
        bool markItemAsContentComplete(1:i64 entityId) throws (1:InventoryServiceException cex),
        
        /**
          Returns the id of the warehouse with the largest inventory of the item and the inventory size in the given locations.
          The size of list will always be 2.
         */
        list<i64> getItemAvailabilityAtLocation(1:i64 warehouse_loc, 2:i64 item_id) throws (1:InventoryServiceException isex),
        list<Warehouse> getAllWarehouses(1:bool isActive) throws (1:InventoryServiceException cex),
        Warehouse getWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
        list<Warehouse> getAllWarehousesForItem(1:i64 item_id) throws (1:InventoryServiceException cex),
        list<Item> getAllItemsForWarehouse(1:i64 warehouse_id) throws (1:InventoryServiceException cex),
        
        // for home page .... best deals, best sellers and latest arrivals
        list<Item> getBestSellers() throws (1:InventoryServiceException isex),
        list<i64> getBestSellersCatalogIds(1:i64 beginIndex, 2:i64 totalItems, 3:i64 category) throws (1:InventoryServiceException cex),
        i64 getBestSellersCount() throws (1:InventoryServiceException cex),
        
        list<Item> getBestDeals() throws (1:InventoryServiceException isex),
        list<i64> getBestDealsCatalogIds(1:i64 beginIndex, 2:i64 totalItems, 3:i64 category) throws (1:InventoryServiceException cex),
        i64 getBestDealsCount() throws (1:InventoryServiceException cex),
        
        list<Item> getLatestArrivals() throws (1:InventoryServiceException isex),
        list<i64> getLatestArrivalsCatalogIds(1:i64 beginIndex, 2:i64 totalItems, 3:i64 category) throws (1:InventoryServiceException cex),
        i64 getLatestArrivalsCount() throws (1:InventoryServiceException cex),
        
        bool putCategoryObject(1:binary object),
        binary getCategoryObject()
}