Centara
  • Introduction to Centara
  • Getting started with Centara
    • Software and hardware requirements
    • getCentara.exe
    • Install Centara Server
    • Centara Configuration
      • RDM overview
      • Create organization structure
      • General settings
      • Layouts and visual components
        • Creating layouts
        • Assigning layouts in configuration
        • Populating layouts with components
        • Applying functionalty to buttons
        • UI component reference
      • Hardware
        • OPOS installation
          • Epson OPOS
        • Centara server configuration
      • POS Receipts
        • Receipt parts
        • Receipt Directives
          • Formatting directives
          • General directives
          • Hospitality directives
          • Fiscal Printers directives
          • Tender slip directives
        • Receipt logo
        • Receipt template
          • Special formatting
      • POS operators and permissions
        • Create operators and permissions
      • Tenders
      • Other configuration
        • Customer configuration
        • Cash management
          • Setting up cash management
          • Balance report
        • Suspend / retrieve
        • Search
          • Applying customer search
          • Applying product search
            • Style search
            • Stock search
          • Applying transaction search
        • Custom settings
    • Install Centara POS
      • Alternative database configurations
      • Centara Licensing
    • Features
      • Conditional sub-layouts
      • Out of stock warning
  • User guides
    • POS User Guide
      • Operator sign on / off
      • Layouts
      • Selling products
      • Paying for products
      • Voiding
      • Customers
      • Suspend / retrieve
      • Cash management
    • Discount Offer module
      • Getting started
      • Basic discounts
      • Package deals
      • Seasonal offers
      • Miscellaneous
      • Working with the filters
      • Making changes to the discounts
      • Time restrictions
      • Selectors
      • Layered discounts
      • Audit Log
      • Glossary of Terms
    • Loyalty system
      • System overview
      • Creating organization stucture
      • Working with loyalty data
        • General handling
          • Adding loyalty data
        • Giftcards
          • Adding gift card data
        • Store credit
          • Instrument handling
        • Coupons
          • How to setup alphanumeric offer coupon
      • Connecting Centara to Loyalty
      • View loyalty data on POS
      • Loyalty operations
    • Snippet manager
  • Integrations
    • Sentry.io
    • Acumatica
      • Acumatica installation
      • Acumatica Connector
        • Customer creation
        • Cashier Groups
        • Avalara Configuration
        • Common configuration errors
        • General inquiries
  • Development
    • APIs
      • External orders
      • Item API
      • Loyalty API
        • Gift cards
        • Loyalty cards
        • Store credit
    • GraphQL
    • XVal
      • XVal List comprehensions
      • XVal operators
      • XVal examples
      • XVal usage
      • XVal testing
  • References
    • Data processes
      • XVal Library
      • Data process examples
    • POS macros
  • FAQ
    • Centara Server
      • Installation
      • Maintenance
    • Centara POS
Powered by GitBook
On this page

Was this helpful?

  1. Development

XVal

XVal is a expression/formula evaluation language. It operates on a value structure that’s mostly isomorphic to JSON. Its computations do not have side effects.

Functions

Functions technically take one argument, but they can be chained so a function can return a function, which can return a new function etc. The value bound to the argument of each function is in scope in the inner functions. This creates the effect of multiple argument functions.

Input parameters

Each input parameter is prefixed with a single backslash \ and ends with a single right arrow ->.

When a formula is passed in as a string, a double backslash is required to represent a single backslash.

Body

The body applies logic to the input parameters and returns an object. The object returned will reflect the construction of the logic, and can for example be either primitive type, a single JSON object or a JSON list.

Functions that takes one parameter

\x -> x + 5
\customer-> customer.nickname || customer.fullname

Functions that take two parameters

\x-> \y-> x*y

The example below takes a single parameter tx, and since the body is wrapped into curly braces {}, the result will be a JSON object.

\tx-> { store: tx.StoreId, items: [ i.ItemId | i <- tx.Items ] }
PreviousGraphQLNextXVal List comprehensions

Last updated 5 years ago

Was this helpful?