📁 Showcase
Reports

Reports

Backend

1. Reports

a. MonthlySales

• Input form
// input form for report ReportMonthlyOrders

ensure form FilterMonthly 
ensure section: Details
ensure field LabelFilterDate kind: label 
  label: "Filter Date"
  bold: true 
  textPattern: "Filter Date"
ensure field FromDate kind: date 
  defaultValue: "startOfMonth" 
ensure field ToDate kind: date 
  defaultValue: "endOfMonth"
• Output form
// output form for report ReportMonthlyOrders

ensure form OutputMonthlySales 
ensure grid: Details
ensure field CustomerName kind: text label: "Customer Name"
ensure field NumberOfOrder kind: number label: "No. of Order"
ensure field TotalBill kind: number label: "Total Bill" prefix: "₹ "

ensure layoutGrid MonthlySalesTable kind: table 
  columnSizeSet: ["Flex", "AutoSize"]
  showComps: [CustomerName, NumberOfOrder, TotalBill]

ensure section: Summary
ensure field TotalSale kind: number prefix: "₹ "
ensure field TotalOrders kind: number 
ensure field OrdersCancelled kind: number 
ensure field NewCustomers kind: number 
ensure field LastMonthSale kind: number prefix: "₹ "
ensure field TotalAmount kind: decimal 

ensure formula TotalAmount 
  assignToField: Summary.TotalAmount 
  formula: "SUM(${f:Details.TotalBill})"

ensure layout ReportLayout kind: content 
  direction: vertical 
  contentPadding: thick 
  showPaddingSet: ["bottom"] 
  flexCenter.showPaddingSet: ["top", "bottom", "left", "right"] 
  flexCenter.padding: thick 
  end.fields: [TotalSale, TotalOrders, OrdersCancelled, NewCustomers, LastMonthSale, TotalAmount] 
  end.showBorderSet: ["top"] 
  end.showPaddingSet: ["top", "bottom", "left", "right"] 
  end.padding: thick
  flexCenter.gridLayouts: [Details.MonthlySalesTable]
• MonthlyOrders
// report for monthly order data

ensure report ReportMonthlyOrders kind: query 
  label: "Monthly Order Report" 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales 
  fromSpreadsheets: [OrderBook] 
  neoQL: "SELECT
            ${ss:OrderBook.Details.CustomerName} AS ${out:Details.CustomerName},
        COUNT(*) as ${out:Details.NumberOfOrder},
        SUM(${ss:OrderBook.Summary.TotalBill}) AS ${out:Details.TotalBill}
        FROM ${ss}
        WHERE ${ctx:row.type} = ${ss:OrderBook}
        AND ${ss:OrderBook.Details.Date} >= ${in:Details.FromDate}
        AND ${ss:OrderBook.Details.Date} <= ${in:Details.ToDate}
        GROUP BY ${ss:OrderBook.Details.CustomerName}"
• LastMonthSale
// report for last month sales

ensure report MonthlySalesLastMonthSale kind: query 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales 
  fromSpreadsheets: [OrderBook] 
  neoQL: "Select 
            COALESCE(sum(${ss:OrderBook.Summary.TotalBill}), 0)  as ${out:Summary.LastMonthSale} 
        from ${ss} 
        where ${ctx:row.type} = ${ss:OrderBook} 
        and ${ctx:row.createdOn} >= DATE_ADD_MILLIS(${in:Details.FromDate} , -30, 'day') 
        and ${ctx:row.createdOn} < ${in:Details.FromDate}"
• NewCustomers
// report for new customer sales

ensure report MonthlySalesNewCustomers kind: query 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales 
  fromSpreadsheets: [VisitBook, OrderBook] 
  neoQL: "Select 
            count(*) as ${out:Summary.NewCustomers} 
        from ${ss} as main 
        where ${ctx:row.type} = ${ss:OrderBook} 
        and ${ctx:row.createdOn} >= ${in:Details.FromDate}  
        and ${ctx:row.createdOn} <= ${in:Details.ToDate} 
        and ${ss:OrderBook.Details.VisitRowId} NOT IN  (select distinct ${ctx:row.id} 
        from ${ss} as sub 
        where ${ctx:row.type} = ${ss:VisitBook} 
        and ${ctx:row.createdOn} <= ${in:Details.ToDate}) 
        group by ${ss:OrderBook.Details.VisitRowId}"
• OrderCancelled
// report for cancelled orders

ensure report MonthlySalesOrderCancelled kind: query 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales 
  fromSpreadsheets: [OrderBook] 
  neoQL: "Select 
            count(*) as ${out:Summary.OrdersCancelled} 
    from ${ss} 
    where ${ctx:row.type} = ${ss:OrderBook}
    and ${ss:OrderBook.Details.Date} >= ${in:Details.FromDate}
    and ${ss:OrderBook.Details.Date} <= ${in:Details.ToDate}
    and ${ss:OrderBook.Summary.OrderStatus.optionId} == '5'"
• TotalOrders
// report for total orders

ensure report MonthlySalesTotalOrders kind: query 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales 
  fromSpreadsheets: [OrderBook] 
  neoQL: "Select 
            count(*) as ${out:Summary.TotalOrders} 
        from ${ss} 
        where ${ctx:row.type} = ${ss:OrderBook} and ${ss:OrderBook.Details.Date} >= ${in:Details.FromDate}
        and ${ss:OrderBook.Details.Date} <= ${in:Details.ToDate}"
• TotalAmount
// report for total amount for monthly sales

ensure report MonthlySalesTotalAmount kind: query 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales 
  fromSpreadsheets: [OrderBook] 
  neoQL: "Select 
            sum(${ss:OrderBook.Summary.TotalBill}) as ${out:Summary.TotalSale} 
        from ${ss}
        where ${ctx:row.type} = ${ss:OrderBook} and ${ss:OrderBook.Details.Date} >= ${in:Details.FromDate}
        and ${ss:OrderBook.Details.Date} <= ${in:Details.ToDate}"
• Report
// report for monthly sale

ensure report MonthlySales kind: composite 
  inputForm: FilterMonthly 
  outputForm: OutputMonthlySales
  mergeReports: [MonthlySalesTotalAmount, MonthlySalesTotalOrders, MonthlySalesOrderCancelled, MonthlySalesNewCustomers, MonthlySalesLastMonthSale, ReportMonthlyOrders]

Frontend

1. CallReportMonthlySales

// this action will call monthly sale report

ensure action CallReportMonthlySales kind: report 
  label: "Report Monthly Sales" 
  icon: "ListAltRounded" 
  report: MonthlySales 
  outputFormContentLayout: ReportLayout

2. Group actions

// this group has all actions those can be performed to get monthly sales

ensure group MyVisits 
  pinnedActions: [AddVisit, AddOrder, ViewVisitSheet, ViewOrderBook, CallReportVisit, CallReportMonthlySales] 
  pinnedActionSetMobile: [AddVisit, AddOrder] 
  actionPermission: {
      'CallReportMonthlySales': {
        'menuGroup': '3',
        'roles': [
          'Owner'
        ]
      }
    }