Minimum Version Required: 26.01
Fields And Definitions
Common terminology aliases:
Sum of InvoiceTransReport.ExtPrice: Sales Volume, Sales, Revenue, $Vol
Sum of InvoiceTransReport.Case Equivs (virtual field): Case Equivalents, Equivs, CEs
Customers.Company: Customer Name, Retailer Name
Best Practices
For reporting on sales in general, use the InvoiceTransReport table (instead of InvoiceTrans or InvoiceTransHist). InvoiceTransReport will contain 3 years of sales history, and include the not-yet-verified sales (in the InvoiceTrans table) combined together
InvoiceTransReport.LoadSheetDate is the specific date that the delivery happened, and is the main date filtered on in most sales reporting.
For reporting on assigned employees to a customer (the sales rep assigned, the delivery rep assigned, the merchandiser assigned, the management structures above those people, etc...) use the AssignedUsers table, filtered on the active one, as a denormalized short cut to this information, instead of linking through several joins to the Stops/Routes/RouteVersions to try to find the right information.
InvoiceTransReport.SalesmanActual is the person who actually entered the order. This can be different from the 'assigned sales rep' if that person was out for a day, or someone was helping them with their route.
All contact information is in the Users table. For example, a customer's contacts are found through Customers -> CustomersUsers -> Users (many to many join)
Almost all sales reports should have default filters for: Customers.CustomerAccountType = 1 AND ProductTypes.SalesReportDefault = 1 (must join in Customers, Products, and ProductTypes to add these)
Pay attention to the category on the TableField information to understand additional context about how that field is used