Order spreadsheet
Backend
1. Variables
// identifier text pattern variable
ensure var VarTextPatternFormOrderOrderID kind: text
deploy: fixedOnDeploy
value: "Order-${p1}"
paramSet: ["p1"]
// sequence variable
ensure var VarSequenceOrder kind: sequence deploy: fixedOnDeploy value: 100
// form chat bubble pattern variable
ensure var VarPatternEntityOrderEntityOrder kind: text
deploy: fixedOnDeploy
value: "${p1}"
paramSet: ["p1"]
// picker variable for order status
ensure var VarSetOfTextOrderStatus kind: setOfText
deploy: fixedOnDeploy
value: "<root>
<node key='1'>Created</node>
<node key='2'>Dispatched</node>
<node key='3'>In Transit</node>
<node key='4'>Completed</node>
<node key='5'>Cancelled</node>
</root>"
2. OrderBook
// this spreadsheet stores order information
ensure spreadsheet: OrderBook
withFields: [Date, OrderId]
ofTypes: [date, identifier]
removeRoleSet: [Owner]
insertRoleSet: [Owner, Agent]
updateRoleSet: [Owner, Agent]
readRoleSet: [Owner]
ensure form EntityOrder label: "Order" commentRoleSet: [Employee]
chatLabelPatternVar: {
'var': 'VarPatternEntityOrderEntityOrder',
'paramSet': [
'${f:Details.OrderId}'
]
}
ensure section: Details
ensure field Date defaultValue: "now"
ensure field OrderId
textPatternVar: {
'var': 'VarTextPatternFormOrderOrderID',
'paramSet': [
'${var:VarSequenceOrder}'
]
}
ensure field VisitRef kind: ref
spreadsheet: VisitBook
copyFieldMap: {
'VisitRowId': '$RowId',
'CustomerName': 'CustomerName',
'MobileNumber': 'MobileNumber',
'GSTNo': 'GSTNo'
}
layoutSpreadsheet: ListLayout
ensure field Remarks kind: paragraph
ensure grid: Items
ensure field ItemRef kind: ref
spreadsheet: ItemMaster
copyFieldMap: {
'ItemMasterRowId': '$RowId',
'Price': 'Price',
'Name': 'Name',
'ItemSize': 'ItemSize',
'ItemType': 'ItemType'
}
layoutSpreadsheet: ListLayout
ensure field Quantity kind: counter
ensure field Total kind: number
ensure field ItemRef
overlayLayoutSpreadsheet.item.firstLine.caption.lineFields: [Quantity]
ensure layoutGrid ListLayout kind: list
firstLine.first.lineFields: [Name]
firstLine.caption.lineFields: [Quantity]
secondLine.first.lineFields: [Price]
secondLine.first.showLabels: true
secondLine.caption.lineFields: [Total]
ensure layoutGrid TableLayout kind: table
columnSizeSet: ["Flex", "AutoSize"]
showComps: [Name, ItemType, ItemSize, Price, Quantity, Total]
ensure grid: Items
layoutGridMap.asideDefaultLayout: ListLayout
ensure section: Summary
ensure field TotalBill kind: number
prefix: "₹"
suffix: "/-"
ensure field OrderStatus kind: pickText
permissionMatrix: {
'defaultPermission': 'write',
'Employee': 'read'
}
sourceVar: VarSetOfTextOrderStatus
defaultOptionId: "1"
ensure formula TotalFormula
assignToField: Items.Total
formula: "${f:Items.Price} * ${f:Items.Quantity}"
ensure formula TotalBillFormula
assignToField: Summary.TotalBill
formula: "SUM(${f:Items.Total})"
Frontend
1. AddOrder
// this action will add order to spreadsheet
ensure var VarMappingVisitToOrder kind: mapping
deploy: fixedOnDeploy
fromForm: EntityVisit
toForm: EntityOrder
fieldMappingMap: {
'map': {
'${f:SysRowId}': 'VisitRowId',
'${f:Details.CustomerName}': 'CustomerName',
'${f:Details.MobileNumber}': 'MobileNumber',
'${f:Details.GSTNo}': 'GSTNo'
}
}
ensure action AddOrder kind: rowInsert
icon: "AddShoppingCartRounded"
spreadsheet: OrderBook
sendMessageToInbox: true
ensure form EntityVisit
actionPermission: {
'AddOrder': {
'mappingVar': 'VarMappingVisitToOrder',
'roles': [
'Agent',
'Owner'
],
'groups': [
'MyVisits'
]
}
}
2. ViewOrderBook
// this action will allow user to view or edit order
ensure spreadsheet OrderBook
ensure layoutSpreadsheet KanbanLayout kind: kanban
kanbanField: Summary.OrderStatus
showFields: [Date, OrderId, CustomerName, MobileNumber, TotalBill]
showCommentCount: true
showFooter: true
ensure action ViewOrderBook kind: spreadsheetEditor
icon: "LibraryBooksRounded"
spreadsheet: OrderBook
layoutSpreadsheet: KanbanLayout
3. Group actions
// this group has all the actions those can be performed for order
ensure group MyVisits
pinnedActions: [AddVisit, AddOrder, ViewVisitSheet, ViewOrderBook, CallReportVisit]
pinnedActionSetMobile: [AddVisit, AddOrder]
actionPermission: {
'AddOrder': {
'menuGroup': '1',
'roles': [
'Agent'
]
},
'ViewOrderBook': {
'menuGroup': '2',
'roles': [
'Owner'
]
}
}