Drug order book
Backend
1. Variables
// order status variable
ensure var VarOrderStatus kind: setOfText
modules: ["Pharmacy", "Jewelery"]
deploy: fixedOnDeploy
value: "<root>
<node key='1'>Created</node>
<node key='2'>CreditCheck</node>
<node key='3'>Dispatched</node>
<node key='4'>Completed</node>
<node key='5'>Cancelled</node>
</root>"
// deeplink success message variable
ensure var VarDeeplinkSuccessMessage kind: paragraph
modules: ["Pharmacy"]
deploy: fixedOnDeploy
value: "Thank you, ${p1} for your purchase of ${p2} with us!"
ensure var VarSequence kind: sequence
deploy: fixedOnDeploy
value: 100
ensure var VarTextPatternSeq kind: text
deploy: fixedOnDeploy
value: "${P}"
2. DrugOrderBook
ensure spreadsheet: DrugOrderBook
withFields: ["RowId", "OrderNo", "Date", "Customer", "CustomerName*", "Address*", "Handle*"]
ofTypes: [rowId, identifier, date, pickUser, text, paragraph, handle]
modules: ["Pharmacy"]
readRoleSet: [Owner, Customer, $Public]
insertRoleSet: [Owner, Customer, $Public]
removeRoleSet: [Owner]
updateRoleSet: [Owner]
ensure form EntityDrugOrder
label: "Order"
modules: ["Pharmacy"]
commentRoleSet: [Owner, $Public]
allowToPrintForm: true
permissionMatrix: {
'$Public': 'write'
}
ensure section: Details
ensure field RowId
permissionMatrix: {
'defaultPermission': 'invisible'
}
ensure field Customer
roleDataSource: [Customer]
permissionMatrix: {
'defaultPermission': 'invisible'
}
ensure field Date defaultValue: "now"
ensure grid: Items
ensure field Quantity kind: counter min: 0 max: 99999 step: 1
ensure field ItemRef kind: ref
spreadsheet: DrugMaster
copyFieldMap: {
'Pack': 'Pack',
'Name': 'Name',
'Ingredient': 'Ingredient',
'DiscountedPrice': 'DiscountedPrice',
'Dose': 'Dose',
'MRP': 'MRP',
'Brand': 'Brand',
'ItemMasterRowId': '$RowId'
}
layoutSpreadsheet: ListLayout
overlayLayoutSpreadsheet.item.firstLine.caption.lineFields: [Quantity]
forceOpenOnFormCreate: true
forceOpenOnGridRowCreate: true
permissionMatrix: {
'defaultPermission': 'invisible'
}
ensure field Total kind: number
ensure field ItemMasterRowId
permissionMatrix: {
'defaultPermission': 'invisible'
}
ensure field DiscountedPrice prefix: "₹"
ensure field MRP prefix: "₹"
ensure layoutGrid ListLayout kind: list
firstLine.first.lineFields: [Name]
firstLine.caption.lineFields: [Quantity]
secondLine.first.lineFields: [Ingredient]
secondLine.first.showLabels: true
thirdLine.first.lineFields: [Brand]
thirdLine.first.showLabels: true
fourthLine.first.lineFields: [Dose, Pack]
fourthLine.first.showLabels: true
fifthLine.first.lineFields: [DiscountedPrice]
fifthLine.first.showLabels: true
ensure layoutGrid TableLayout kind: table
showComps: [Items.Name,
Ingredient,
Brand,
Dose,
Pack,
DiscountedPrice,
Quantity,
Items.Total
]
ensure grid: Items
layoutGridMap.asideDefaultLayout: ListLayout
ensure section: Summary
ensure field OrderStatus kind: pickText
sourceVar: VarOrderStatus
defaultOptionId: "1"
ensure field TotalBill kind: number disabled: true prefix: "₹"
ensure field Orderlink kind: hyperlink
permissionMatrix: {
'defaultPermission': 'invisible'
}
ensure formula TotalFormula
assignToField: Items.Total
formula: "${f:Items.DiscountedPrice} * ${f:Items.Quantity}"
ensure formula TotalBillFormula
assignToField: TotalBill
formula: "SUM(${f:Items.Total})"
ensure spreadsheet DrugOrderBook
searchables: [CustomerName, Address, Handle]
queryables: [RowId]
Frontend
1. Actions
a. AddDrugOrder
ensure action AddDrugOrder kind: rowInsert
label: "Add order"
modules: ["Pharmacy"]
icon: "AddRounded"
spreadsheet: DrugOrderBook
sendMessageToInbox: true
b. EditDrugOrderBook
ensure spreadsheet DrugOrderBook
ensure layoutSpreadsheet TableLayout kind: table
columnSizeSet: ["AutoSize"]
showCommentCount: true
showComps: [Date, CustomerName, Address, Handle, TotalBill, Items]
ensure action EditDrugOrderBook kind: spreadsheetEditor
label: "Order book"
modules: ["Pharmacy"]
icon: "AddShoppingCartRounded"
spreadsheet: DrugOrderBook
layoutSpreadsheet: TableLayout
2. Deeplinks
a. DeeplinkDrugOrderInsert
ensure deeplink DeeplinkDrugOrderInsert kind: spreadsheetInsert
modules: ["Pharmacy"]
visibilityConstraint: allowPublicSharing
creationRoles: [Owner]
expiry: noExpiry
showEnterpriseImageInLinkPreview: true
showHeader: true
showEnterprise: true
transparentHeader: false
spreadsheet: DrugOrderBook
showRepeatButton: true
repeatButtonLabel: "Order Again"
successMessageVar: {
'var': 'VarDeeplinkSuccessMessage',
'paramSet': [
'${f:Details.CustomerName}',
'${f:Items.Name}'
]
}
b. DeeplinkDrugOrder
ensure form EntityDrugOrder
ensure layout DeeplinkLayout kind: content
direction: vertical
start.fields: [Date, Details.CustomerName, Address, Handle]
start.padding: thick
start.showBorderSet: ["top", "bottom"]
flexCenter.showPaddingSet: ["top", "bottom"]
flexCenter.gridLayouts: [Items.TableLayout]
flexCenter.padding: thick
end.fields: [TotalBill]
end.showBorderSet: ["top"]
end.showPaddingSet: ["top", "bottom"]
end.padding: thick
ensure layout Template kind: template
showEnterprise: true
showSeparator: true
paperSize: a4Size
ensure deeplink DeeplinkDrugOrder kind: spreadsheetRow
modules: ["Pharmacy"]
visibilityConstraint: enforceEnterpriseUserSignIn
creationRoles: [Owner]
expiry: noExpiry
showEnterpriseImageInLinkPreview: true
showHeader: false
spreadsheet: DrugOrderBook
formContentLayout: DeeplinkLayout
formTemplateLayout: Template
3. Prompt
ensure spreadsheet: RepeatDrugOrderSheet
withFields: ["Order", "Customer"]
ofTypes: [text, pickUser]
readRoleSet: [Owner]
insertRoleSet: [Owner, Customer]
updateRoleSet: [Owner, Customer]
removeRoleSet: [Owner]
clearRoleSet: [Owner]
ensure form EntityRepeatDrugOrder
ensure section: Details
ensure field Customer roleDataSource: [Customer]
ensure action AddRepeatOrder kind: rowInsert
spreadsheet: RepeatDrugOrderSheet
ensure prompt PromptRepeatOrder
action: AddRepeatOrder
promptText: "repeat last order"
permissionRoles: [Customer, Owner]
4. Group actions
ensure group DrugOrderBook
pinnedActions: [EditDrugOrderBook, AddDrugOrder]
hideActionMenu: true
actionPermission: {
'AddDrugOrder': {
'roles': [
'Owner',
'$Public'
]
},
'EditDrugOrderBook': {
'roles': [
'Owner'
]
},
'AddRepeatOrder': {
'roles': [
'Owner',
'Customer'
]
}
}
Agent
1. DrugOrderBook.xlsx
Split the spreadsheet data into daily files and generate both .xlsx and .json formats for external accounting integration.
ensure driveSheet DrugOrderBook
spreadsheet: DrugOrderBook
partitionedData: true
roles: [Owner]
attachmentRoles: [Owner]
dataPartitionPeriod: daily
unit: months
value: 3
exportKindSet: ["xlsx", "json"]