📁 Showcase
ExpenseMaster

ExpenseMaster

Backend

1. ExpenseCategoryMaster

// fields ending with "*" suffix are required
ensure spreadsheet: ExpenseCategoryMaster 
withFields: ["ExpenseCategory*"]
ofTypes: [text]
modules: ["Expense"] 
readRoleSet: [Member] 
insertRoleSet: [Member] 
updateRoleSet: [Member] 
removeRoleSet: [Member]

ensure spreadsheet: ExpenseCategoryMaster 
  searchables: [Details.ExpenseCategory] 
  queryables: [Details.ExpenseCategory] 

ensure layoutSpreadsheet ListLayout kind: list 
  filter.kind: tree 
  filter.showSearchBar: true 
  firstLine.first.lineFields: [Details.ExpenseCategory]

ensure layoutSpreadsheet TableLayout kind: table 
  showComps: [Details.ExpenseCategory]

ensure form EntityExpenseCategory modules: ["Expense"]
ensure section: Details
ensure field ExpenseCategory label: "Category"

2. ExpenseMaster

// fields ending with "*" suffix are required
ensure spreadsheet: ExpenseMaster 
withFields: ["ExpenseName*", "RefCategory"]
ofTypes: [text, ref]
modules: ["Expense"] 
readRoleSet: [Member] 
insertRoleSet: [Member] 
updateRoleSet: [Member] 
removeRoleSet: [Member] 
clearRoleSet: [Member]

ensrue spreadsheet ExpenseMaster
  searchables: [Details.ExpenseName] 
  queryables: [Details.ExpenseName] 

ensure form EntityExpense 
ensure composite Details 
ensure field RefCategory 
  spreadsheet: ExpenseCategoryMaster 
  copyFieldMap: {
      'Category': 'ExpenseCategory',
      'CategoryRowId': '$RowId'
    } 
  layoutSpreadsheet: ListLayout
ensure field CategoryRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field Description kind: paragraph

ensure spreadsheet ExpenseMaster
ensure layoutSpreadsheet ListLayout kind: list 
  firstLine.first.lineFields: [Details.ExpenseName] 
  firstLine.middle.lineFields: [Details.Category] 
  secondLine.first.lineFields: [Details.Description]

Frontend

1. Actions

a. DebitSubCategory

Implement an DebitSubCategory action to add/edit expense sub category in the ExpenseCategoryMaster spreadsheet.

ensure action DebitSubCategory kind: spreadsheetEditor 
  label: "Debit Sub Category" 
  modules: ["Expense"] 
  icon: "ListRounded" 
  spreadsheet: ExpenseCategoryMaster 
  layoutSpreadsheet: ListLayout 
  bulkInsertRoleSet: [Member]

b. DebitCategory

Implement an DebitCategory action to add/edit expense category in the ExpenseMaster spreadsheet.

ensure action DebitCategory kind: spreadsheetEditor 
  label: "Debit Category" 
  modules: ["Expense"] 
  icon: "ListAltRounded" 
  spreadsheet: ExpenseMaster 
  layoutSpreadsheet: ListLayout 
  bulkInsertRoleSet: [Member]

2. Group actions

ensure group QuickBooks 
  actionPermission: {
      'DebitSubCategory': {
        'menuGroup': '3',
        'roles': [
          'Member'
        ]
      },
      'DebitCategory': {
        'menuGroup': '3',
        'roles': [
          'Member'
        ]
      }
    }