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'
]
}
}