Master data
Backend
1. Variables
// picker variable for stock status
ensure var VarSetOfTextStockStatus kind: setOfText
deploy: fixedOnDeploy
value: "<root>
<node color='success' key='1'>In Stock</node>
<node color='primary' key='2'>Low Stock</node>
<node color='error' key='3'>Out of Stock</node>
</root>"
2. ItemSizeMaster
// this spreadsheet stores item size information
ensure spreadsheet: ItemSizeMaster
withFields: [Size, Stock]
ofTypes: [text, logNumber]
removeRoleSet: [Owner]
insertRoleSet: [Owner]
updateRoleSet: [Owner]
readRoleSet: [Owner]
ensure layoutSpreadsheet ListLayout kind: list
filter.showSearchBar: true
firstLine.first.lineFields: [Size]
ensure spreadsheet ItemSizeMaster searchables: [Size]
ensure form EntityItemSize label: "Tile Size"
3. ItemTypeMaster
// this spreadsheet stores item type information
ensure spreadsheet: ItemTypeMaster
withFields: [Type, Stock]
ofTypes: [text, logNumber]
removeRoleSet: [Owner]
insertRoleSet: [Owner]
updateRoleSet: [Owner]
readRoleSet: [Owner]
ensure layoutSpreadsheet ListLayout kind: list
filter.showSearchBar: true
firstLine.first.lineFields: [Type]
ensure spreadsheet ItemTypeMaster searchables: [Type]
ensure form EntityItemType label: "Tile Type"
4. ItemMaster
// this spreadsheet stores item information
ensure spreadsheet: ItemMaster
withFields: [Name, Description, Price]
ofTypes: [text, paragraph, number]
removeRoleSet: [Owner]
insertRoleSet: [Owner]
updateRoleSet: [Owner]
readRoleSet: [Owner]
ensure form EntityItem label: "Tile"
ensure section: Details
ensure field Description lineCount: 5
ensure field Price prefix: "₹"
ensure field ItemTypeRef kind: ref
spreadsheet: ItemTypeMaster
layoutSpreadsheet: ListLayout
copyFieldMap: {
'ItemTypeMasterRowId': '$RowId',
'ItemType': 'Type'
}
ensure field ItemSizeRef kind: ref
spreadsheet: ItemSizeMaster
layoutSpreadsheet: ListLayout
copyFieldMap: {
'ItemSizeMasterRowId': '$RowId',
'ItemSize': 'Size'
}
ensure field AvailableQuantity kind: logNumber
ensure field StockStatus kind: pickText
sourceVar: VarSetOfTextStockStatus
defaultOptionId: "1"
ensure spreadsheet ItemMaster
searchables: [Name, Price, ItemType, ItemSize]
queryables: [ItemTypeMasterRowId, ItemSizeMasterRowId, Price, ItemType, ItemSize]
ensure layoutSpreadsheet ListLayout kind: list
filter.kind: tree
filter.showSearchBar: true
filter.categoryFields: [Details.ItemTypeRef, Details.ItemSizeRef]
filter.advanceFilterFields: [Details.Price]
firstLine.first.lineFields: [Details.Name]
secondLine.first.lineFields: [Details.Price]
secondLine.first.showLabels: true
thirdLine.first.lineFields: [Details.ItemType, Details.ItemSize]
thirdLine.first.showLabels: true
ensure layoutSpreadsheet TableLayout kind: table
columnSizeSet: ["AutoSize"]
showComps: [Name, Description, Price, ItemType, ItemSize, AvailableQuantity, StockStatus]
Frontend
1. AddItemSize
// this action will add item size to spreadsheet
ensure action AddItemSize kind: rowInsert
icon: "AddRounded"
spreadsheet: ItemSizeMaster
sendMessageToInbox: true
2. AddItemType
// this action will add item type to spreadsheet
ensure action AddItemType kind: rowInsert
icon: "AddRounded"
spreadsheet: ItemTypeMaster
sendMessageToInbox: true
3. AddItem
// this action will add item to spreadsheet
ensure action AddItem kind: rowInsert
icon: "AddRounded"
spreadsheet: ItemMaster
sendMessageToInbox: true
4. EditItemSizeMaster
// this action will allow you to edit or add new size
ensure action EditItemSizeMaster kind: spreadsheetEditor
icon: "CategoryRounded"
spreadsheet: ItemSizeMaster
layoutSpreadsheet: ListLayout
bulkInsertRoleSet: [Owner]
5. EditItemTypeMaster
// this action will allow you to edit or add new type
ensure action EditItemTypeMaster kind: spreadsheetEditor
icon: "CategoryRounded"
spreadsheet: ItemTypeMaster
layoutSpreadsheet: ListLayout
bulkInsertRoleSet: [Owner]
6. EditItemMaster
// this action will allow you to edit or add new item
ensure action EditItemMaster kind: spreadsheetEditor
icon: "FeaturedPlayListRounded"
spreadsheet: ItemMaster
layoutSpreadsheet: TableLayout
bulkInsertRoleSet: [Owner]
7. Group actions
// this group has all the actions those can be performed for master data
ensure group MasterData
allowPromptAssistant: false
pinnedActions: [EditItemTypeMaster, EditItemSizeMaster, EditItemMaster]
actionPermission: {
'AddItemType': {
'menuGroup': '1',
'roles': [
'Owner'
]
},
'AddItemSize': {
'menuGroup': '1',
'roles': [
'Owner'
]
},
'AddItem': {
'menuGroup': '1',
'roles': [
'Owner'
]
},
'EditItemTypeMaster': {
'menuGroup': '2',
'roles': [
'Owner'
]
},
'EditItemSizeMaster': {
'menuGroup': '2',
'roles': [
'Owner'
]
},
'EditItemMaster': {
'menuGroup': '2',
'roles': [
'Owner'
]
}
}