📁 Showcase
Spreadsheet

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