FD1 Client Protocol
Library Developer Home FD1 Client Protocol Home Conceptual Overview Using GET/POST Protocol Definition Authentication Authorisation Firehoses Programming Support fd1generic.js Examples General curl websocat Major APIs / Endpoints Endpoint Overview Accounts Customers Fetch Data Departments Devices Locations Products Sales SalesBuilder Session Less Common Endpoints User Interface Reserved Worked Examples Temperature Monitor Custom Report Instore Customer Display External Customer Display Cross Domain Reporting More examples Advanced Integration FieldpineDevices External Website Reseller APIs Schema Definitions custdisp.sale.* device.bluetooth.announcement device.scale.reading firehose.status sale.create sale.read Diagnostic Schema tufe.error tufe.trace tufe.status tusp.entry

FD1 SalesBuilder

SalesBuilder functions are used to create and manipulate sales as they are assembled. SalesBuilder implements shopping cart functionality or allows you to create instore checkouts. If your app is creating a sale, then you probably wish to use salesbuilder to create them. You can simply upload a completed sale definition instead, however that means you must implement all logic and business rules and get it correct.

Index

Create a new Sale
  • salesbuilder_create
Finalising Sale
  • salesbuilder_complete
  • salesbuilder_cancel
Set Sale Properties
  • salesbuilder_set_customer
Add and Remove Items and their properties
  • salesbuilder_add_product

salesbuilder.salesbuilder_create

Creates a single new sale allowing you to add items, payments, customer details and other values.

Available: WebSocket Fieldpine.JS


Request
{
  a: "fd1.salesbuilder.salesbuilder_create",
}
Response
{
  r: "fd1.salesbuilder.salesbuilder_create",
  data: {
       physkey: "jafj459385hggdg39vgcg53038qQQ8",
       startdt: "2024-02-04 14:45:23",
       ...
    }
  }
}

salesbuilder.sale_fetch

Example

{
  a: "fd1.salesbuilder.sale_fetch",
  k: "jafj459385hggdg39vgcg53038qQQ8"
}

salesbuilder.sale_get_price

Example

Request
{
  a: "fd1.salesbuilder.sale_get_price",
  rq: 92838,
  k: "jafj459385hggdg39vgcg53038qQQ8",
  v: {
    pid: [ 1256, 8231 ]
  }
}
Response
{
  r: "fd1.salesbuilder.sale_park",
  rp: 92838,
  k: "jafj459385hggdg39vgcg53038qQQ8",
  data: {
    rows: [
        { pid: 1256, price: 19.95 },
        { pid: 8231, price: 17.20 }
    ]
  }
}

Alternatively a key/value response format can be requested; this may be easier to work with in some circumstances

Request
{
  a: "fd1.salesbuilder.sale_get_price",
  rq: 92838,
  k: "jafj459385hggdg39vgcg53038qQQ8",
  v: {
    _format: "kv",
    pid: [ 1256, 8231 ]
  }
}
Response
{
  r: "fd1.salesbuilder.sale_park",
  rp: 92838,
  k: "jafj459385hggdg39vgcg53038qQQ8",
  data: {
    kv: {
        "1256": 19.95,
        "8231": 17.20
    }
  }
}

salesbuilder.sale_add_product

salesbuilder.sale_edit_product

salesbuilder.sale_set_delivery_address

salesbuilder.sale_set_customer

salesbuilder.sale_add_payment

salesbuilder.sale_edit_payment

salesbuilder.sale_invoke_eftpos

Starts an integrated Eftpos payment sequence. The exact action varies depending on the Eftpos provider in use.

Example

{
  a: "fd1.salesbuilder.sale_invoke_eftpos",
  k: "jafj459385hggdg39vgcg53038qQQ8",
  v: {
    amount: 56.00
  }
}

salesbuilder.sale_park

Example

Request
{
  a: "fd1.salesbuilder.sale_park",
  k: "jafj459385hggdg39vgcg53038qQQ8"
}
Response
{
  r: "fd1.salesbuilder.sale_park",
  k: "jafj459385hggdg39vgcg53038qQQ8"
}

salesbuilder.sale_unpark

Example

Request
{
  a: "fd1.salesbuilder.sale_unpark",
  k: "jafj459385hggdg39vgcg53038qQQ8"
}
Response
{
  r: "fd1.salesbuilder.sale_unpark",
  k: "jafj459385hggdg39vgcg53038qQQ8",
  data: {
    ... sale definition ...
  }
}

salesbuilder.sale_void

Marks a sale as void and stores it for audit purposes.

Example

Request
{
  a: "fd1.salesbuilder.sale_void",
  k: "jafj459385hggdg39vgcg53038qQQ8"
}
Response
{
  r: "fd1.salesbuilder.sale_void",
  k: "jafj459385hggdg39vgcg53038qQQ8"
}