📁 Showcase
AuickBooksSheet

QuickBooksSheet

Backend

1. Variables

ensure var VarTransaction kind: setOfText
  modules: ["Expense"]
  deploy: fixedOnDeploy
  value: "<root>
      <node key='keyCredit'>Credit</node>
      <node key='keyDebit'>Debit</node>
    </root>"

ensure var VarCostAllocation kind: setOfText
  modules: ["Expense"]
  deploy: fixedOnDeploy
  value: "<root>
      <node key='keyFixed'>Fixed</node>
      <node key='keyEmergency'>Emergency</node>
      <node key='keyEssential'>Essential</node>
      <node key='keyEntertainment'>Entertainment</node>
      <node key='keyGrocery'>Grocery</node>
      <node key='keySubscription'>Subscription</node>
      <node key='keyTransportation'>Transportation</node>
      <node key='keyInvestment'>Investment</node>
    </root>"

  ensure var VarRevenueAllocation kind: setOfText
  modules: ["Expense"]
  deploy: fixedOnDeploy
  value: "<root>
      <node key='keyPayCheck'>Pay check</node>
      <node key='keyInterest'>Interest</node>
      <node key='keyRental'>Rental</node>
      <node key='keyDividend'>Dividend</node>
      <node key='keySale'>Sale</node>
      <node key='keyOther'>Other</node>
    </root>"

1. QuikBooksSheet

// fields ending with "*" suffix are required
ensure spreadsheet: QuikBooksSheet
withFields: [
    "QuickBookRowId",
    "AssetRowId",
    "TransactionType*",
    "Date*"
  ]
ofTypes: [rowId, rowId, pickText, dateTime]
modules: ["Expense"]
readRoleSet: [Member]
insertRoleSet: [Member]
updateRoleSet: [Member]
removeRoleSet: [Member]

ensure form EntityQuickBook modules: ["Expense"]
ensure section: Details
ensure field QuickBookRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field AssetRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field TransactionType
  permissionMatrix: {
      'defaultPermission': 'writeOnce'
    }
  sourceVar: VarTransaction
  defaultOptionId: "keyDebit"
ensure field Date defaultValue: "now"
ensure field RefExpense kind: ref
  spreadsheet: ExpenseMaster
  copyFieldMap: {
      'ExpenseName': 'ExpenseName',
      'ExpenseCategoryRowId': 'CategoryRowId',
      'ExpenseCategory': 'Category',
      'ExpenseMasterRowId': '$RowId'
    }
  layoutSpreadsheet: ListLayout
ensure field ExpenseMasterRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field ExpenseCategoryRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field RefRevenue kind: ref
  spreadsheet: RevenueMaster
  copyFieldMap: {
      'RevenueName': 'RevenueName',
      'RevenueCategoryMasterRowId': 'RevenueCategoryMasterRowId',
      'RevenueCategory': 'RevenueCategory',
      'RevenueMasterRowId': '$RowId'
    }
  layoutSpreadsheet: ListLayout
ensure field RevenueMasterRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field RevenueCategoryMasterRowId
  permissionMatrix: {
      'defaultPermission': 'invisible'
    }
ensure field RevenueCategory kind: text label: "Category" disabled: true
ensure field ExpenseAllocation kind: pickText sourceVar: VarCostAllocation
ensure field RevenueAllocation kind: pickText sourceVar: VarRevenueAllocation
ensure field TotalAmount kind: decimal required: true numberOfDigitsAfterPeriod: 2

// composite, section, Attachment
ensure section: Attachment
ensure field Attachments kind: setOfDocument
  helperText: "Item receipts"
  fileTypeSet: ["any"]

// composite, section, Summary
ensure section: Summary
ensure field Verified kind: bool
  showAsCheckbox: true
  position: start
  labelPlacement: end
ensure field Notes kind: paragraph flexHeight: true

ensure spreadsheet QuikBooksSheet
ensure layoutSpreadsheet TableLayout kind: table
  columnSizeSet: ["Flex"]
  showComps: [Details.Date, Details.ExpenseName, Details.RevenueName, Details.TotalAmount, Summary.Verified]

2. Visibility rules

// visibilityRule, RevenueAllocation
ensure visibilityRule RevenueAllocation
  condition: "<root>
      <stmt>Details.TransactionType == ${d:TransactionType.keyCredit}</stmt>
    </root>"
ensure actionMapIfTrue Visible
  comp: Details.RevenueAllocation
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleRefRevenue
  comp: Details.RefRevenue
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleRevenueCategory
  comp: Details.RevenueCategory
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleCategoryId
  comp: Details.RevenueCategoryMasterRowId
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleRevenueName
  comp: Details.RevenueName
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleRevenueId
  comp: Details.RevenueMasterRowId
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfFalse Hidden
  comp: Details.RevenueAllocation
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideRefRevenue
  comp: Details.RefRevenue
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideRevenueName
  comp: Details.RevenueName
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideRevenueId
  comp: Details.RevenueMasterRowId
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideRevenueCategory
  comp: Details.RevenueCategory
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideReveueCategoryId
  comp: Details.RevenueCategoryMasterRowId
  visibilityAction: hidden
  visibilityActionOn: field

// visibilityRule, ExpenseAllocation
ensure visibilityRule ExpenseAllocation
  condition: "<root>
      <stmt>Details.TransactionType == ${d:TransactionType.keyDebit}</stmt>
    </root>"
ensure actionMapIfTrue Visible
  comp: Details.ExpenseAllocation
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleRefExpense
  comp: Details.RefExpense
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleExpenseName
  comp: Details.ExpenseName
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleExpenseCategory
  comp: Details.ExpenseCategory
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleExpenseRowId
  comp: Details.ExpenseMasterRowId
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfTrue VisibleExpenseCategoryId
  comp: Details.ExpenseCategoryRowId
  visibilityAction: visible
  visibilityActionOn: field
ensure actionMapIfFalse Hidden
  comp: Details.ExpenseAllocation
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideRefExpense
  comp: Details.RefExpense
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideExpenseName
  comp: Details.ExpenseName
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideExpenseId
  comp: Details.ExpenseMasterRowId
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideExpenseCategory
  comp: Details.ExpenseCategory
  visibilityAction: hidden
  visibilityActionOn: field
ensure actionMapIfFalse HideExpenseCategoryId
  comp: Details.ExpenseCategoryRowId
  visibilityAction: hidden
  visibilityActionOn: field

Frontend

1. Actions

a. AddTransaction

ensure action AddTransaction kind: rowInsert
  label: "Add Transaction"
  modules: ["Expense"]
  icon: "AddCircleOutlineRounded"
  spreadsheet: QuikBooksSheet
  sendMessageToInbox: true

b. TransactionSheet

ensure action TransactionSheet kind: spreadsheetEditor
  label: "Transaction Sheet"
  modules: ["Expense"]
  icon: "AutoStoriesRounded"
  spreadsheet: QuikBooksSheet
  layoutSpreadsheet: TableLayout

2. Group actions

ensure group QuickBooks
  actionPermission: {
     'AddTransaction': {
        'menuGroup': '4',
        'roles': [
          'Member'
        ]
      },
      'TransactionSheet': {
        'menuGroup': '4',
        'roles': [
          'Member'
        ]
      }
    }