Order spreadsheet
Backend
1. Variables
ensure var VarTextPatternOrderId kind: text
deploy: fixedOnDeploy
value: "Order-${p1}"
ensure var VarSequenceOrder kind: sequence deploy: fixedOnDeploy value: 100
ensure var VarPatternOrderBubbleTitle kind: text
deploy: fixedOnDeploy
value: "${p1}"
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
ensure spreadsheet: OrderBook
withFields: ["Date", "OrderId"]
ofTypes: [date, identifier]
removeRoleSet: [Owner]
insertRoleSet: [Owner, Salesman]
updateRoleSet: [Owner, Salesman]
readRoleSet: [Owner]
ensure form EntityOrder
label: "Order"
// Employees can comment in the chat bubble
commentRoleSet: [Employee]
// Heading label of the chat bubble
chatLabelPatternVar: {
'var': 'VarTextPatternOrderId',
'paramSet': [
'${f:Details.OrderId}'
]
}
a. Details
ensure section: Details
ensure field Date defaultValue: "now"
ensure field OrderId
textPatternVar: {
'var': 'VarTextPatternOrderId',
'paramSet': [
'${var:VarSequenceOrder}'
]
}
ensure field VisitRef kind: ref
spreadsheet: VisitBook
layoutSpreadsheet: ListLayout
copyFieldMap: {
'VisitRowId': '$RowId',
'CustomerName': 'CustomerName',
'MobileNumber': 'MobileNumber',
'GSTNo': 'GSTNo'
}
ensure field Remarks kind: paragraph
b. Items
// grid declaration
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]
// grid layout - list
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]
// grid layout - table
ensure layoutGrid TableLayout kind: table
columnSizeSet: ["Flex", "AutoSize"]
showComps: [Name, ItemType, ItemSize, Price, Quantity, Total]
// default grid layout - list
// user can toggle between list and table layouts through overlay menu
ensure grid: Items
layoutGridMap.asideDefaultLayout: ListLayout
c. Summary
ensure section: Summary
ensure field TotalBill kind: number
prefix: "₹"
suffix: "/-"
ensure field OrderStatus kind: pickText
permissionMatrix: {
'defaultPermission': 'write',
'Employee': 'read'
}
sourceVar: VarSetOfTextOrderStatus
defaultOptionId: "1"
d. Formulas
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. Actions
a. AddOrder
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
// attach action to EntityVisit's overlay menu on both form and chat bubble
ensure form EntityVisit
actionPermission: {
'AddOrder': {
'mappingVar': 'VarMappingVisitToOrder',
'roles': [
'Salesman',
'Owner'
],
'groups': [
'MyVisits'
]
}
}
b. EditOrderBook
// create Kanban layout on OrderBook spreadsheet
ensure spreadsheet OrderBook
ensure layoutSpreadsheet KanbanLayout kind: kanban
kanbanField: Summary.OrderStatus
showFields: [Date, OrderId, CustomerName, MobileNumber, TotalBill]
showCommentCount: true
showFooter: true
// on EditOrderBook click open KanbanLayout
ensure action EditOrderBook kind: spreadsheetEditor
icon: "LibraryBooksRounded"
spreadsheet: OrderBook
layoutSpreadsheet: KanbanLayout
b. ShowOrderHistory
ensure action ShowOrderHistory kind: spreadsheetHistory
icon: "HistoryRounded"
spreadsheet: OrderBook
2. Group actions
Actions are grouped here for demo. Merging the grouped actions from Visit Sheet.
ensure group MyVisits
pinnedActions: [AddVisit, AddOrder, EditOrderBook, ReportVisit]
pinnedActionSetMobile: [AddVisit, AddOrder]
actionPermission: {
'AddVisit': {
'menuGroup': '1',
'roles': [
'Salesman'
]
},
'AddOrder': {
'menuGroup': '1',
'roles': [
'Salesman'
]
},
'EditVisitSheet': {
'menuGroup': '2',
'roles': [
'Owner'
]
},
'EditOrderBook': {
'menuGroup': '2',
'roles': [
'Owner'
]
},
'ReportVisit': {
'menuGroup': '3',
'roles': [
'Owner'
]
},
'ShowOrderHistory': {
'menuGroup': '3',
'roles': [
'Owner'
]
}
}