LogoLogo
Web PortalContact Support
  • Fast-Weigh Knowledge Base
  • Tutorials
    • Tutorials Overview
    • Logging in for the First Time
    • Navigating the Web Portal
    • Using the Ticket Query
    • Generating Reports
    • Using the Ticketing App
  • How To Guides
    • How To Guides Overview
    • How to Create New Records
      • Creating New Web Portal Users
      • Creating Tax Codes
      • Creating Billing Terms and Modes
      • Creating a New Customer
      • Creating a New Product
      • Creating a New Pricing Template
      • Creating a New Truck
      • Creating a New Hauler
      • Creating New Orders
      • Creating Invoices
      • Creating Payments
      • Creating Statements
      • Creating Hauler Pay Statement
      • Creating a New Region
      • Creating a New Location
      • Creating a New Yard
    • How to Update Pricing
      • Changing Order Product Pricing
      • Bulk Updating Open Order Pricing
    • How to Import Tickets
    • How to Edit Tickets
      • Edit via Ticket Query
      • Edit via Ticket Bulk Edit
    • How to Edit an Invoice
      • Charge & Cash Pay Types
    • How to Track Inventory
  • References
    • New Pricing Tools
    • References Overview
    • Web Portal
      • Home
      • Load-Out
        • Dashboard
        • In-Yard
        • History
      • Tickets
        • Ticket Query
        • Delivery Query
        • Ticket Entry
        • Ticket Import
        • Ticket Bulk Edit
      • Quotes
        • Dashboard
        • Quotes
        • Projects
      • Orders
        • Orders
        • Status Update
        • Jobs & Phases
        • Haul Zones
      • Inventory
        • Inventory
        • Dashboard
      • Trucks
        • Assignment
        • Trucks
        • Haulers
        • Truck Bulk Edit
      • Dispatch
        • Requests
          • Dispatching Ticket Types
        • Drivers
        • Live Tracking
        • Tracking Query
        • Request Import
      • Billing/AR
        • Billing
        • Balance Dashboard
        • New Payment
        • Invoice / Payment Query
        • Payment Export
        • Customer Credit
      • Hauler Pay
        • Truck Adjustments
        • Statements
        • Setup
      • Reporting
        • Running Reports
          • Default Reports
        • Scheduled Reports
        • Analytics
        • Custom Reports
      • Resources
        • Customer
        • Products
        • Locations
        • Billing
          • Tax Codes
          • Pay Terms
          • Price Adjustments
          • Freight Matrix
          • Ship To
          • Invoice Adjustment Types
          • Customer Payment Information
          • Pay To User Assignment
        • Truck Types
        • Salespeople
        • Inspectors
      • Account and Administration
        • User Administration
        • Portal Settings
        • User Defined Fields
        • Devices
        • API Information
        • Import Format
        • Accounting Periods
        • Email Bounce Report
        • Related Accounts
      • Roles And Responsibilities
    • Ticketing App
      • Setup
      • Application
        • Ticketing
        • Trucks
        • Customers
        • Orders
        • Reports
        • History
        • Portal
        • Settings
    • New Ticketing App
      • Setup
        • Logging In and Device Setup
      • Application
        • Server Settings
          • Manage Devices
        • Lanes & Ticketing
        • Dashboard
        • Trucks
        • In-Yard
        • Customers
        • Orders
        • Requests
        • Payments
        • History
    • Mobile App
      • Setup
        • Mobile Ticketing App
        • Mobile Dispatching App
        • Mobile Printer Setup
      • Ticketing Mode
      • Haul Mode
      • POD Mode
      • Printing
        • Star Micronics
    • Management App
      • Setup
      • Application
    • API Documentation
    • GraphQL Documentation
      • Reporting with GraphQL
    • Accounting Interfaces
      • Quickbooks Online
      • Quickbooks Desktop
      • Spectrum
      • Vista Viewpoint
      • Sage
      • Net Suite
    • Integrations
      • Avalara
      • HaulHub
      • Fast-Weigh Ticket Integrator
    • Hardware
      • Scale House Check List
      • IP Cameras
      • Moxa NPort 5110
      • Web Switch
      • TagMaster CT45
      • External IP Addresses
      • Tegaur Kiosk
      • I&E Kiosk (Legacy)
      • Bluetooth Printers
    • Loader App
      • Setup
  • FAQs and Best Practices
    • Frequently Asked Questions
      • Can I integrate Fast-Weigh with my Accounting Software?
      • What is Fast-Weigh’s NTEP CC #?
      • Can I import ticket data via CSV?
      • Does the web portal adjust based on Time Zones?
      • Why does changing the pricing template not update my orders?
      • Can I connect cameras to the ticketing app?
      • Can I connect my scale to the ticketing app?
      • What are the required computer specs to run Fast-Weigh
      • How do I get a custom report created?
      • Why does cash ticket pricing not behave like charge tickets?
      • Why does my E-Ticket look different than my archived ticket?
      • Can I export any of my data?
      • How do I fix an unsynced record?
      • How do I reset my password?
      • Where can I submit a feature request?
      • Does every customer need an order?
      • Do Ticket Numbers have to be unique?
      • Can Fast-Weigh do inbound ticketing?
      • Why are my requested custom ticket changes not showing on my tickets?
    • Best Practices
      • Security and Administration
      • Order Management
      • Product Pricing
      • Tax Code Defaults
      • Setting up a New Device
Powered by GitBook
LogoLogo
On this page
Export as PDF

Last updated 1 year ago

Helpful Telerik Links




Connecting Power BI to GraphQL

GraphQL can be connected into Power BI to visualize your data. In order to connect it up, you will need to be familiar enough with M Query to manipulate the Data Source Advanced Editor to connect in the API

  1. Create a new Power BI File and click Get Data.

  2. Select a Blank Query as your Data Source for now.

  3. Leave this blank.

  4. Add in a new parameter called x-api-key , set the Type to Text, and paste your API Key into the Current Value.

  5. Add in PBI parameters for any variables in your GraphQL Query.

  6. In this example, we have a To and From Date variable that we call RangeStart and RangeEnd in the PBI Parameters.

  7. Your Queries should look something like this:

  8. Navigate back to your blank Query .

  9. Right-click the name in the Queries list and select advanced editor .

  10. Copy and paste the pre-written query below into the Advanced Editor (overwriting what was already there).

  11. It will automatically use your API key and the date parameters you set with a pre-written Get Ticket query.

  12. When prompted to Specify How To Connect , click "Edit Credentials" and use Anonymous Access to connect.

Using Telerik Report Parameters

Required Parameters

When building your reports within Telerik, you have the ability to link your GraphQL Where Clause directly to dynamic parameters within Telerik to filter your data.

  1. Ensure that you have your Where Clause set up within your GraphQL Query.

  1. When you copy your query Body over from Insomnia, it should auto-generate Telerik parameter connectors in your variables.

    1. Make sure the Type is set to Inline for any Parameters that are passed to your GraphQL Body.

  2. Setup the Telerik Parameter in the Report Parameter Editor pop-up

  3. Some GraphQL Where clause formats will need to add extra formatting in your Value

    • Integers: Make sure your body does not have quotes around the @variable in the Body.

    • Dates: Make sure your body does have quotes around the @variable in the Body.

      • You will also need to add the following formatting to the Value expression to ensure that the date is in the correct Year-Month-Day format: = Format("{0:yyyy-MM-dd}", Parameters.NAME.Value )

    • String Arrays: Make sure your body does not have quotes and does have brackets around the @variable in the Body.

      • You will also need to add the following formatting to the Value expression to ensure that each value selected is wrapped in quotes and separated by commas: ='"' + Join('","', Parameters.NAME.Value ) + '"'

    • Integer Arrays: Make sure your body does not have quotes and does have brackets around the @variable in the Body.

  4. Click Next to preview your data using the Design-Time Value, then click Finish.

Optional Parameters

In addition to Required Parameters that directly filter what is returned from your Data Source, you can also use Telerik by itself to create optional parameters and filters.

  1. Add in a new Parameter in the Report Parameter Editor pop-up

  2. Click OK to close the pop-up.

  3. Add a new Filter that you will map to your new Report Parameter

    • Since we want this parameter to pull in everything when blank or filter to one customer when filled out, we will need to add in more to the expression than a simple filter.

  4. Under the Expression side of the filter editor, click on the drop-down arrow and select <Expression>

  5. Begin the conditional IIf statement with a check to see if the parameter is blank.

    1. In the text box, click between the end of the Value and the parenthesis and add in an equal sign and an empty quote: = ""

  6. Click in the text box after the empty quotes and add a comma to begin the truePart of the IIf statement.

    1. Note: Here, we want nothing to happen if the expression is true (the parameter is blank).

    2. Add in another empty quote: ""

  7. After the truePart, add another comma to begin the falsePart.

    1. Navigate to Fields and double-click on the field you want to populate if the parameter is not blank (what it will be matching).

Note: Here, we want the Customer ID to populate if the expression is false (the parameter is not blank).

  1. Click OK to close the Expression Editor.

  2. Under the Value side of the filter editor, click on the drop-down arrow and select the Parameter.

  3. Navigate to the Home tab on the top of the Report Designer and click Preview to test out the report.

    • You should be able to leave your new parameter blank (you may have to click inside of the field and then click out in the report designer so it registers and blank) or type in a value to filter the report to that single value

Handling Nullable Tables in Telerik

Sometimes, you may have a table linked in your GraphQL query that can be set or completely blank depending on the parent table it is connected to.

"An error has occurred while processing TextBox 'textBox2': The expression contains object 'Name' that is not defined in the current context."


If you do receive this error for the Salesperson Name field (or any other field), there is a workaround you can use to display the name when it is set or hide the object entirely when it is blank.

  1. Find the Data section of the Properties.

  2. Click on the "..." button to edit the Bindings.

  3. Add a new Binding.

    1. Set the Property Path to "DataSource"

    2. The Expression needs to be the parent of the field you are wanting to display. In this case, we want to see = Fields.Order.Salesperson.Name so we will set the Expression to = Fields.Order.Salesperson

  4. In the field where you want to show the salesperson name, you only need to add the second half of the expression we referenced for the DataSource = Fields.Order.Salesperson.Name.

    1. If you do not want the field to be entirely blank, you can set a "NoDataMessage" and "NoDataStyle" in the Properties Panel

Common Abbreviations

You may encounter some common abbreviations in the fields available to retrieve with GraphQL. Here is a repository of those abbreviations and what they mean so that you can replace them in your reports.


Customer

Tax Status

  • T = Taxed

  • X = Exempt

Credit Status

  • O = Open Account

  • C = Cash Only

  • N = Do Not Sell


Location

Default Dispatch Type

  • PD - FastWeigh POD

  • CP - Create at Pickup

  • CD - Create at Delivery

  • RP - Receive at Pickup

  • RD - Receive at Delivery

  • LC - Load Count Only


Order

Pay Type

  • C = Charge Hide

  • D = Credit Card

  • K = Check

  • S = Charge Show

  • X = Cash

Status

  • A = Active

  • I = Inactive

  • C = Closed


Order Product

Freight Type, Surcharge Type, and Order Quantity Type

  • U = Per Unit

  • L = Per Load

Status

  • A = Active

  • I = Inactive

  • C = Closed


Quote

Pay Type

  • C = Charge Hide

  • D = Credit Card

  • K = Check

  • S = Charge Show

  • X = Cash

Status

  • B = Bidding

  • P = Pending

  • C = Accepted

  • R = Rejected

  • E = Expired

  • A = Awarded


Quote Product

Status

  • A = Active

  • I = Inactive

  • C = Closed


Request Hauler

Ticket Type

  • PD - FastWeigh POD

  • CP - Create at Pickup

  • CD - Create at Delivery

  • RP - Receive at Pickup

  • RD - Receive at Delivery

  • LC - Load Count Only


Ticket

Manual Weigh

  • 0 or False = Weight from a scale

  • 1 or True = Manually typed weight

Connecting GraphQL to Telerik Report Designer

Note: Make sure you are running Telerik Report Designer version 14.0.20.219 or later.

    1. Set the Method to Post

    2. Set the Data Selector to $.data.*

  1. Create a new parameter called x-api-key.

    1. Set the Type to Header

Note: In our example, our Inline Parameters are the @FromDate and @ToDate.

With this M Query as the base, you can replace the GraphQL body with your own , just make sure to escape any quotes in the GraphQL with double quotes as instructed in the M Query comment. If you do replace the GraphQL, you will want to remove all of the steps after the Convert to Table step and re-create the expand column steps for your own query.

Repeat the data setup until you have all of your desired data sources added, and Close & Apply the Power Query Editor. You can use a flattened version of the Query like in the example, or you could repeat these steps for individually queried tables that you want to bring in, and then join the tables via their keys from the Relationships Model page.

Tip: For more information about GraphQL Where Clauses, check out our article on .

Click Next to go to the Configure Request Parameters page. Here, you will see your auto-generated parameters.

Enter the values you want to use for the data preview in the Design-Time Value

Set up the parameterized value in Value by selecting the drop-down > New Report Parameter (if you have pre-setup your parameter, just select it from the list).

For more information about what the settings here are, check out this

Click here for more info on .

Strings: Make sure your body does have quotes around the @variable in the Body.

You will also need to add the following formatting to the Value expression to ensure that each value selected is separated by commas: =Join(',', Parameters.NAME.Value )

Navigate to the Home tab on the top of the report and click Preview to test your parameters.

Set up the parameter by right-clicking the white space on the report and then clicking Report Parameters...

For more information about what the settings here are, check out this .

Click here for more info on .

Right-click the report white space again and this time select Filters... Note: you can also use Filters for simple data filters like filtering out all voided tickets.

Click in the text box after the equals sign

Navigate to Functions > Logical and double click IIf to add it into the text box above. (You can also manually type this instead of pulling it in from Functions)

Add in the parameter value by Navigating to Report Parameters > click the + by the parameter name > double click Value Note: Here, we are adding Parameters.CustomerID.Value

This completes the check to see if the parameter is blank.

This completes the truePart of the IIf statement.

This completes the falsePart of the IIf statement.

This completes your entire optional filter. Go ahead and close the Filter Editor.

A good example of this would be if you wanted to show the Order Salesperson Name, which might not always be set on the Order. When you query this in GraphQL, it can return in two ways:

While the way this data is returned may be fine in the JSON view, it can cause some major problems in Telerik. This is because you end up trying to call a field object that either exists and returns correctly or doesn't exist at all:

When you add the Salesperson Name field to the report like normally and then run the report, the Orders that do not have a salesperson will show you the following error in place of where the name would be:

Navigate to the Insert tab at the top of the Report Designer.

Inset a List from the Tables section.

Select the new List object, and navigate to the Properties Panel on the bottom-right.

Click OK to save the Bindings

Click inside of the new List object, add in new text boxes for the field title and the field itself, and set up their formating

In this case, we only need to input = Fields.Name to get the Salesperson Name.

Lastly, make sure to preview the report for both fields that should have a Salesperson and should be blank to make sure everything functions as expected.

In my example, including the field title in the list ensured that it was hidden entirely when there was no salesperson set, but you can keep the title outside of the list to prevent this.

Navigate to the Data tab of the Report Designer

Select Web Service Data Source to bring up the configuration wizard

Enter in your GraphQL Endpoint URL into the Service URL. Example:

Your URL can be found at

Enter the Body from the "Fast-Weigh: Copy Telerik Body"

Click Next > to configure the Request Parameters

enter the API key in both the Value and Design-Time Value fields

If you are using a WHERE clause in your Body, for information about setting up Inline parameters.

Click Next > to show the Preview Your Data page Click on the Download button to run the PreviewClick Finish >>| to load in your dataset to use in your report.

  1. References
  2. GraphQL Documentation

Reporting with GraphQL

Using Power BI and Telerik with Fast-Weigh GraphQL

      let
      //To and From Date PBI parameters, formatted in yyyy-MM-dd format
      FromDate = Number.ToText(Date.Year(RangeStart)) &"-"& Text.PadStart(Number.ToText(Date.Month(RangeStart)),2,"0") &"-"& Text.PadStart(Number.ToText(Date.Day(RangeStart)),2,"0"),
      ToDate = Number.ToText(Date.Year(RangeEnd))&"-"&Text.PadStart(Number.ToText(Date.Month(RangeEnd)),2,"0")&"-"&Text.PadStart(Number.ToText(Date.Day(RangeEnd)),2,"0"),
      //URL should be your GraphQL Endpoint URL
      url = "https://fwt.fast-weigh.dev/v1/graphql",
      //Header pulls API Key from x-api-key PBI parameter
      header = 
      [#"x-api-key" = #"x-api-key",
      #"Content-Type" = "application/json"],
      //Body is copied from Insomnia "Fast-Weigh: Copy Telerik Body" plugin
      //You will need to surround the body in quotes, and then escape any internal body quotes by using 2 in a row instead of one: ""
      //In the variables, you need to add 3 quotes to end the statement, an ampersand to join the parameters, and the PBI parameter name. 
      //For Example: "" " & FromDate & " ""
      RequestBody=
      "{
      ""query"": ""query GetTickets($FromDate: date!, $ToDate: date!) {\n  LoadTicket(\n    where: {_and: [\n                        {TicketDate: {_gte: $FromDate}}, \n                        {TicketDate: {_lte: $ToDate}}\n                ]}\n        ) \n        {\n    TicketKey # Unique, auto-assigned key\n    TicketNumber\n    Void\n    NetWeight\n    Operator\n    InvoiceNum\n    BatchNum\n    InvoiceHistoryKey\n    InvoiceDate\n    TicketDate # Only the Date\n    TicketDateTime # The Date and the Time in UTC\n    UTCOffset # The UTCoffset that needs to be added to the TicketDateTime to get the correct time\n    OrderProduct { # The specific version of a Product on an Order\n      OrderProductKey # Unique, auto-assigned key\n      Description # The pricing description for the specific version of the product\n      FreightType\n      Product { # The Product used for the OrderProduct\n        ProductKey # Unique, auto-assigned key\n        ProductID\n        ProductDescription\n        UnitOfMeasure\n      }\n      Location {\n        LocationKey # Unique, auto-assigned key\n        LocationName\n        LocationDescription\n      }\n      Yard {\n              YardKey # Unique, auto-assigned key\n        YardName\n        YardDescription\n      }\n    }\n    Order {\n      OrderKey # Unique, auto-assigned key\n      OrderNumber\n      Description\n      DefaultJob\n      PONumber\n      OpenProductOrder\n      Status\n      DeliveryLocation\n      PayType\n      UseHaulZones\n      Customer {\n        CustomerKey # Unique, auto-assigned key\n        CustomerID\n        CustomerName\n        TermsCode\n        Salesperson { # Default Salesperson set on Customer\n          Name\n        }\n      }\n      Salesperson { # Actual Salesperson set on the Order\n        Name\n      }\n    }\n    Region {\n      RegionKey # Unique, auto-assigned key\n      RegionName\n      RegionDescription\n    }\n    TaxCode { # The Tax Code set on the Ticket and what is used for Billing\n      Code\n      Description\n      MaterialPercent\n      MaterialPercent2\n      FreightPercent\n      FreightPercent2\n      SurchargePercent\n      SurchargePercent2\n    }\n    Truck {\n      TruckKey # Unique, auto-assigned key\n      TruckID\n      Hauler {\n        HaulerKey # Unique, auto-assigned key\n        HaulerID\n        HaulerName\n      }\n    }\n    HaulZone{\n      FreightType\n    }\n    RatesAndAmounts { # The dollar amounts on the Tickets\n      MaterialRateOriginal\n      FreightRateOriginal\n      SurchargeRateOriginal\n      MaterialAmountCalculated\n      FreightAmountCalculated\n      SurchargeAmountCalculated\n      MaterialTaxCalculated\n      MaterialTax2Calculated\n      FreightTaxCalculated\n      FreightTax2Calculated\n      SurchargeTaxCalculated\n      SurchargeTax2Calculated\n      HaulerRateOriginal\n      HaulerAmountCalculated\n    }\n  }\n}\n"",
      ""variables"": {
      ""FromDate"": """ & FromDate & """,
      ""ToDate"": """ & ToDate & """
      }
      }",
      //The following 5 steps convert the response to a table that Power BI can expand
      webdata = Web.Contents(url, [Headers=header, Content = Text.ToBinary(RequestBody)]),
      response = Json.Document(webdata),
      data = response[data],
      LoadTicket = data[LoadTicket],
      ConvertToTable = Table.FromList(LoadTicket, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
      //These steps can be done directly in the editor by expanding each column from the header
      #"Expanded Column1" = Table.ExpandRecordColumn(ConvertToTable, "Column1", {"TicketKey", "TicketNumber", "Void", "NetWeight", "Operator", "InvoiceNum", "BatchNum", "InvoiceHistoryKey", "InvoiceDate", "TicketDate", "TicketDateTime", "UTCOffset", "OrderProduct", "Order", "Region", "TaxCode", "Truck", "HaulZone", "RatesAndAmounts"}, {"TicketKey", "TicketNumber", "Void", "NetWeight", "Operator", "InvoiceNum", "BatchNum", "InvoiceHistoryKey", "InvoiceDate", "TicketDate", "TicketDateTime", "UTCOffset", "OrderProduct", "Order", "Region", "TaxCode", "Truck", "HaulZone", "RatesAndAmounts"}),
      #"Expanded OrderProduct" = Table.ExpandRecordColumn(#"Expanded Column1", "OrderProduct", {"OrderProductKey", "Description", "FreightType", "Product", "Location", "Yard"}, {"OrderProductKey", "Description", "FreightType", "Product", "Location", "Yard"}),
      #"Expanded Product" = Table.ExpandRecordColumn(#"Expanded OrderProduct", "Product", {"ProductKey", "ProductID", "ProductDescription", "UnitOfMeasure"}, {"ProductKey", "ProductID", "ProductDescription", "UnitOfMeasure"}),
      #"Expanded Location" = Table.ExpandRecordColumn(#"Expanded Product", "Location", {"LocationKey", "LocationName", "LocationDescription"}, {"LocationKey", "LocationName", "LocationDescription"}),
      #"Expanded Yard" = Table.ExpandRecordColumn(#"Expanded Location", "Yard", {"YardKey", "YardName", "YardDescription"}, {"YardKey", "YardName", "YardDescription"}),
      #"Expanded Order" = Table.ExpandRecordColumn(#"Expanded Yard", "Order", {"OrderKey", "OrderNumber", "Description", "DefaultJob", "PONumber", "OpenProductOrder", "Status", "DeliveryLocation", "PayType", "UseHaulZones", "Customer", "Salesperson"}, {"OrderKey", "OrderNumber", "Description.1", "DefaultJob", "PONumber", "OpenProductOrder", "Status", "DeliveryLocation", "PayType", "UseHaulZones", "Customer", "Salesperson"}),
      #"Expanded Customer" = Table.ExpandRecordColumn(#"Expanded Order", "Customer", {"CustomerKey", "CustomerID", "CustomerName", "TermsCode", "Salesperson"}, {"CustomerKey", "CustomerID", "CustomerName", "TermsCode", "Salesperson.1"}),
      #"Expanded Region" = Table.ExpandRecordColumn(#"Expanded Customer", "Region", {"RegionKey", "RegionName", "RegionDescription"}, {"RegionKey", "RegionName", "RegionDescription"}),
      #"Expanded TaxCode" = Table.ExpandRecordColumn(#"Expanded Region", "TaxCode", {"Code", "Description", "MaterialPercent", "MaterialPercent2", "FreightPercent", "FreightPercent2", "SurchargePercent", "SurchargePercent2"}, {"Code", "Description.2", "MaterialPercent", "MaterialPercent2", "FreightPercent", "FreightPercent2", "SurchargePercent", "SurchargePercent2"}),
      #"Expanded Truck" = Table.ExpandRecordColumn(#"Expanded TaxCode", "Truck", {"TruckKey", "TruckID", "Hauler"}, {"TruckKey", "TruckID", "Hauler"}),
      #"Expanded Hauler" = Table.ExpandRecordColumn(#"Expanded Truck", "Hauler", {"HaulerKey", "HaulerID", "HaulerName"}, {"HaulerKey", "HaulerID", "HaulerName"}),
      #"Expanded RatesAndAmounts" = Table.ExpandRecordColumn(#"Expanded Hauler", "RatesAndAmounts", {"MaterialRateOriginal", "FreightRateOriginal", "SurchargeRateOriginal", "MaterialAmountCalculated", "FreightAmountCalculated", "SurchargeAmountCalculated", "MaterialTaxCalculated", "MaterialTax2Calculated", "FreightTaxCalculated", "FreightTax2Calculated", "SurchargeTaxCalculated", "SurchargeTax2Calculated", "HaulerRateOriginal", "HaulerAmountCalculated"}, {"MaterialRateOriginal", "FreightRateOriginal", "SurchargeRateOriginal", "MaterialAmountCalculated", "FreightAmountCalculated", "SurchargeAmountCalculated", "MaterialTaxCalculated", "MaterialTax2Calculated", "FreightTaxCalculated", "FreightTax2Calculated", "SurchargeTaxCalculated", "SurchargeTax2Calculated", "HaulerRateOriginal", "HaulerAmountCalculated"}),
      //These are nullable fields, and they have to be expanded manually. Make sure to rename column names if any are duplicates like the Name columns
      #"Expanded Salesperson" = Table.ExpandRecordColumn(#"Expanded RatesAndAmounts", "Salesperson", {"Name"}),
      #"Renamed Columns" = Table.RenameColumns(#"Expanded Salesperson",{{"Name", "OrderSalespersonName"}}),
      #"Expanded Salesperson.1" = Table.ExpandRecordColumn(#"Renamed Columns", "Salesperson.1", {"Name"}),
      #"Renamed Columns1" = Table.RenameColumns(#"Expanded Salesperson.1",{{"Name", "CustomerSalespersonName"}}),
      #"Expanded HaulZone" = Table.ExpandRecordColumn(#"Renamed Columns1", "HaulZone", {"HZFreightType"}),
      //After the nullable fields are expanded, make sure to replace the errors with a blank
      #"Replaced Errors" = Table.ReplaceErrorValues(#"Expanded HaulZone", {{"CustomerSalespersonName", ""}, {"OrderSalespersonName", ""}, {"HZFreightType", ""}}),
      //Make sure to rename any other duplicate headers
      #"Renamed Columns2" = Table.RenameColumns(#"Replaced Errors",{{"Description", "PricingDescription"}, {"Description.1", "OrderDescription"}}),
      //Use the Detect Type tool to set the header types automatically, if they are not already set
      #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns2",{{"TicketKey", Int64.Type}, {"TicketNumber", type number}, {"Void", type logical}, {"NetWeight", type number}, {"Operator", type text}, {"InvoiceNum", Int64.Type}, {"BatchNum", type text}, {"InvoiceHistoryKey", Int64.Type}, {"InvoiceDate", type date}, {"TicketDate", type date}, {"TicketDateTime", type datetime}, {"UTCOffset", Int64.Type}, {"OrderProductKey", Int64.Type}, {"PricingDescription", type text}, {"FreightType", type text}, {"ProductKey", Int64.Type}, {"ProductID", type text}, {"ProductDescription", type text}, {"UnitOfMeasure", type text}, {"LocationKey", Int64.Type}, {"LocationName", type text}, {"LocationDescription", type text}, {"YardKey", Int64.Type}, {"YardName", type text}, {"YardDescription", type text}, {"OrderKey", Int64.Type}, {"OrderNumber", Int64.Type}, {"OrderDescription", type text}, {"DefaultJob", type text}, {"PONumber", type text}, {"OpenProductOrder", type logical}, {"Status", type text}, {"DeliveryLocation", type text}, {"PayType", type text}, {"UseHaulZones", type logical}, {"CustomerKey", Int64.Type}, {"CustomerID", type text}, {"CustomerName", type text}, {"TermsCode", Int64.Type}, {"CustomerSalespersonName", type text}, {"OrderSalespersonName", type text}, {"RegionKey", Int64.Type}, {"RegionName", type text}, {"RegionDescription", type text}, {"Code", type text}, {"Description.2", type text}, {"MaterialPercent", type number}, {"MaterialPercent2", type number}, {"FreightPercent", type number}, {"FreightPercent2", type number}, {"SurchargePercent", type number}, {"SurchargePercent2", type number}, {"TruckKey", Int64.Type}, {"TruckID", type text}, {"HaulerKey", Int64.Type}, {"HaulerID", type text}, {"HaulerName", type text}, {"HZFreightType", type any}, {"MaterialRateOriginal", type number}, {"FreightRateOriginal", Int64.Type}, {"SurchargeRateOriginal", Int64.Type}, {"MaterialAmountCalculated", type number}, {"FreightAmountCalculated", type number}, {"SurchargeAmountCalculated", type number}, {"MaterialTaxCalculated", type number}, {"MaterialTax2Calculated", type number}, {"FreightTaxCalculated", type number}, {"FreightTax2Calculated", type number}, {"SurchargeTaxCalculated", type number}, {"SurchargeTax2Calculated", type number}, {"HaulerRateOriginal", Int64.Type}, {"HaulerAmountCalculated", type number}}),
      #"Replaced Value" = Table.ReplaceValue(#"Changed Type","U","Per Unit",Replacer.ReplaceText,{"FreightType"}),
      #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","L","Per Load",Replacer.ReplaceText,{"FreightType"}),
      #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","A","Active",Replacer.ReplaceText,{"Status"}),
      #"Replaced Value3" = Table.ReplaceValue(#"Replaced Value2","I","Inactive",Replacer.ReplaceText,{"Status"}),
      #"Replaced Value4" = Table.ReplaceValue(#"Replaced Value3","C","Closed",Replacer.ReplaceText,{"Status"}),
      #"Replaced Value5" = Table.ReplaceValue(#"Replaced Value4","C","Charge Hide",Replacer.ReplaceText,{"PayType"}),
      #"Replaced Value6" = Table.ReplaceValue(#"Replaced Value5","D","Credit Card",Replacer.ReplaceText,{"PayType"}),
      #"Replaced Value7" = Table.ReplaceValue(#"Replaced Value6","K","Check",Replacer.ReplaceText,{"PayType"}),
      #"Replaced Value8" = Table.ReplaceValue(#"Replaced Value7","S","Charge Show",Replacer.ReplaceText,{"PayType"}),
      #"Replaced Value9" = Table.ReplaceValue(#"Replaced Value8","X","Cash",Replacer.ReplaceText,{"PayType"})
      in
      #"Replaced Value9"
   
=Fields.Order.Salesperson.Name
  • Helpful Telerik Links
  • Connecting Power BI to GraphQL
  • Using Telerik Report Parameters
  • Required Parameters
  • Optional Parameters
  • Handling Nullable Tables in Telerik
  • Common Abbreviations
  • Connecting GraphQL to Telerik Report Designer
Telerik Support Page
Telerik Designing Reports Knowledge Base
Telerik Reporting Forum
Getting Started with Telerik Report Designer (Video)
Web Service Data Source Information
Report Parameters Overview
Report Structure Overview
Expressions Overview
Functions Overview
Sorting Data Overview
Filtering Data Overview
Grouping Data Overview
Conditional Formatting
Excel Rendering Design Considerations
Using Parameters in GraphQL
Telerik Report Parameters Docs
the difference between Blank and Null
Telerik Report Parameters Docs
the difference between Blank and Null
https://fwt.fast-weigh.dev/v1/graphql
portal.fast-weigh.com/APIInfo
Insomnia plugin
check out this article