---
id: object/table/13
type: object
title: Table 13 "Salesperson/Purchaser"
summary: Table 13 "Salesperson/Purchaser" in Base Application (Microsoft.CRM.Team). 43 fields, 5 public procedures, 2 events. Present since at least BC23, still in BC30, changed in BC24, BC26-28.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 3ca98c190205cf3273294db77c5f997419664430ed09b2b0ecdc7d4081d4d452
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/CRM/Team/SalespersonPurchaser.Table.al
    title: src/Layers/W1/BaseApp/CRM/Team/SalespersonPurchaser.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_salespersonpurchaser_create
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_salespersonpurchaser_delete
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_salespersonpurchaser_get
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_salespersonpurchaser_update
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/resources/dynamics_salespersonpurchaser
    - https://learn.microsoft.com/dynamics365/business-central/purchasing-how-setup-purchasers
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/set-up-business-central/set-up-purchase
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 13
name: Salesperson/Purchaser
namespace: Microsoft.CRM.Team
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 43
  procedures: 8
  events: 2
  subscribers: 0
relations:
  out: 22
  referenced_by: 85
  pages: 7
  extended_by: 0
  event_subscribers: 1
  calls: 1
  called_by: 0
  implements: 0
---

# Table 13 "Salesperson/Purchaser"

> Table 13 "Salesperson/Purchaser" in Base Application (Microsoft.CRM.Team). 43 fields, 5 public procedures, 2 events. Present since at least BC23, still in BC30, changed in BC24, BC26-28.

Base Application · Microsoft.CRM.Team · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/CRM/Team/SalespersonPurchaser.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 30075 "APIV2 - Salesperson/Purchaser"](../page/30075.md) (5 Learn pages), [Page 14 "Salespersons/Purchasers"](../page/14.md) (1), [Page 5116 "Salesperson/Purchaser Card"](../page/5116.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Salesperson/Purchaser |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Code | Code[20] | Specifies a code for the salesperson or purchaser. | NotBlank |
| 2 | Name | Text[50] | Specifies the name of the salesperson or purchaser. |  |
| 3 | Commission % | Decimal | Specifies the percentage to use to calculate the salesperson's commission. |  |
| 140 | Image | Media | Specifies the picture that has been inserted for the salesperson or purchaser. |  |
| 150 | Privacy Blocked | Boolean | Specifies whether to limit access to data for the data subject during daily operations. This is useful, for example, when protecting data from changes while it is under privacy review. |  |
| 720 | Coupled to CRM | Boolean | Coupled to Dataverse <small>caption</small> | obsolete Removed 26.0; #if not CLEANSCHEMA26; not editable |
| 721 | Coupled to Dataverse | Boolean | Specifies that the salesperson/purchaser is coupled to a user in Dataverse. | FlowField: exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::"Salesperson/Purchaser"))); not editable |
| 5050 | Global Dimension 1 Code | Code[20] | Specifies the code for the global dimension that is linked to the record or entry for analysis purposes. Two global dimensions, typically for the company's most important activities, are available on all cards, documents, reports, and lists. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))) |
| 5051 | Global Dimension 2 Code | Code[20] | Specifies the code for the global dimension that is linked to the record or entry for analysis purposes. Two global dimensions, typically for the company's most important activities, are available on all cards, documents, reports, and lists. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))) |
| 5052 | E-Mail | Text[80] | Specifies the salesperson's email address. |  |
| 5053 | Phone No. | Text[30] | Specifies the salesperson's telephone number. |  |
| 5054 | Next Task Date | Date | Specifies the date of the next task assigned to the salesperson. | FlowField: min("To-do".Date where("Salesperson Code" = field(Code), Closed = const(false), "System To-do Type" = filter(Organizer \| "Salesperson Attendee"))); not editable |
| 5055 | No. of Opportunities | Integer | Specifies the number of open opportunities handled by the salesperson. | FlowField: count("Opportunity Entry" where("Salesperson Code" = field(Code), Active = const(true), "Estimated Close Date" = field("Date Filter"), "Action Taken" = field("Action Taken Filter"), "Sales Cycle Code" = field("Sales Cycle Filter"), "Sales Cycle Stage" = field("Sales Cycle Stage Filter"), "Probabilit...; not editable |
| 5056 | Estimated Value (LCY) | Decimal | Specifies the total estimated value of all the opportunities handled by the salesperson. The field is not editable. <small>via [Page 5117 "Salesperson Statistics"](../page/5117.md)</small> | FlowField: sum("Opportunity Entry"."Estimated Value (LCY)" where("Salesperson Code" = field(Code), Active = const(true), "Estimated Close Date" = field("Date Filter"), "Action Taken" = field("Action Taken Filter"), "Sales Cycle Code" = field("Sales Cycle Filter"), "Sales Cycle Stage" = field("Sales Cycle Stage...; not editable |
| 5057 | Calcd. Current Value (LCY) | Decimal | Specifies the total calculated current value of all the opportunities handled by the salesperson. The field is not editable. <small>via [Page 5117 "Salesperson Statistics"](../page/5117.md)</small> | FlowField: sum("Opportunity Entry"."Calcd. Current Value (LCY)" where("Salesperson Code" = field(Code), Active = const(true), "Estimated Close Date" = field("Date Filter"), "Action Taken" = field("Action Taken Filter"), "Sales Cycle Code" = field("Sales Cycle Filter"), "Sales Cycle Stage" = field("Sales Cycle ...; not editable |
| 5058 | Date Filter | Date | — | FlowFilter |
| 5059 | No. of Interactions | Integer | Specifies the number of interactions handled by this salesperson. | FlowField: count("Interaction Log Entry" where("Salesperson Code" = field(Code), Canceled = const(false), Date = field("Date Filter"), Postponed = const(false))); not editable |
| 5060 | Cost (LCY) | Decimal | Specifies the total cost of all the interactions handled by the salesperson. The field is not editable. <small>via [Page 5117 "Salesperson Statistics"](../page/5117.md)</small> | FlowField: sum("Interaction Log Entry"."Cost (LCY)" where("Salesperson Code" = field(Code), Canceled = const(false), Date = field("Date Filter"), Postponed = const(false))); not editable |
| 5061 | Duration (Min.) | Decimal | Specifies the total duration of all the interactions handled by the salesperson. The field is not editable. <small>via [Page 5117 "Salesperson Statistics"](../page/5117.md)</small> | FlowField: sum("Interaction Log Entry"."Duration (Min.)" where("Salesperson Code" = field(Code), Canceled = const(false), Date = field("Date Filter"), Postponed = const(false))); not editable |
| 5062 | Job Title | Text[30] | Specifies the salesperson's job title. |  |
| 5063 | Action Taken Filter | Enum "Opportunity Action Taken" | — | FlowFilter; enum [Enum 5091 "Opportunity Action Taken"](../enum/5091.md) |
| 5064 | Sales Cycle Filter | Code[10] | — | TableRelation [Table 5090 "Sales Cycle"](../table/5090.md) (Sales Cycle); FlowFilter |
| 5065 | Sales Cycle Stage Filter | Integer | — | TableRelation [Table 5091 "Sales Cycle Stage"](../table/5091.md) ("Sales Cycle Stage".Stage where("Sales Cycle Code" = field("Sales Cycle Filter"))); FlowFilter |
| 5066 | Probability % Filter | Decimal | — | FlowFilter |
| 5067 | Completed % Filter | Decimal | — | FlowFilter |
| 5068 | Avg. Estimated Value (LCY) | Decimal | Specifies the average estimated value of the opportunities handled by the salesperson. <small>via [Page 5117 "Salesperson Statistics"](../page/5117.md)</small> | FlowField: average("Opportunity Entry"."Estimated Value (LCY)" where("Salesperson Code" = field(Code), Active = const(true), "Estimated Close Date" = field("Date Filter"), "Action Taken" = field("Action Taken Filter"), "Sales Cycle Code" = field("Sales Cycle Filter"), "Sales Cycle Stage" = field("Sales Cycle S...; not editable |
| 5069 | Avg.Calcd. Current Value (LCY) | Decimal | Specifies the average calculated current value of the opportunities handled by that salesperson. <small>via [Page 5117 "Salesperson Statistics"](../page/5117.md)</small> | FlowField: average("Opportunity Entry"."Calcd. Current Value (LCY)" where("Salesperson Code" = field(Code), Active = const(true), "Estimated Close Date" = field("Date Filter"), "Action Taken" = field("Action Taken Filter"), "Sales Cycle Code" = field("Sales Cycle Filter"), "Sales Cycle Stage" = field("Sales Cy...; not editable |
| 5070 | Contact Filter | Code[20] | — | TableRelation [Table 5050 "Contact"](../table/5050.md); FlowFilter |
| 5071 | Contact Company Filter | Code[20] | — | TableRelation [Table 5050 "Contact"](../table/5050.md) (Contact where(Type = const(Company))); FlowFilter |
| 5072 | Campaign Filter | Code[20] | — | TableRelation [Table 5071 "Campaign"](../table/5071.md); FlowFilter |
| 5073 | Estimated Value Filter | Decimal | — | FlowFilter |
| 5074 | Calcd. Current Value Filter | Decimal | — | FlowFilter |
| 5075 | Chances of Success % Filter | Decimal | — | FlowFilter |
| 5076 | Task Status Filter | Enum "Task Status" | — | FlowFilter; enum [Enum 5081 "Task Status"](../enum/5081.md) |
| 5077 | Closed Task Filter | Boolean | — | FlowFilter |
| 5078 | Priority Filter | Option | — | FlowFilter; OptionCaption: Low,Normal,High |
| 5079 | Team Filter | Code[10] | — | TableRelation [Table 5083 "Team"](../table/5083.md); FlowFilter |
| 5082 | Opportunity Entry Exists | Boolean | — | FlowField: exist("Opportunity Entry" where("Salesperson Code" = field(Code), Active = const(true), "Contact No." = field("Contact Filter"), "Contact Company No." = field("Contact Company Filter"), "Sales Cycle Code" = field("Sales Cycle Filter"), "Sales Cycle Stage" = field("Sales Cycle Stage Filter"), "Campai...; not editable |
| 5083 | Task Entry Exists | Boolean | — | FlowField: exist("To-do" where("Salesperson Code" = field(Code), "Contact No." = field("Contact Filter"), "Contact Company No." = field("Contact Company Filter"), "Campaign No." = field("Campaign Filter"), "Team Code" = field("Team Filter"), Status = field("Task Status Filter"), Closed = field("Closed Task Fil...; not editable |
| 5084 | Close Opportunity Filter | Code[10] | — | TableRelation [Table 5094 "Close Opportunity Code"](../table/5094.md) (Close Opportunity Code); FlowFilter |
| 5085 | Search E-Mail | Code[80] | Search Email <small>caption</small> |  |
| 5086 | E-Mail 2 | Text[80] | Email 2 <small>caption</small> |  |
| 5087 | Blocked | Boolean | Specifies whether this Salesperson can be assigned for new documents |  |

## Keys

- Key1: Code (clustered)
- Key2: Search E-Mail
- Key3: SystemModifiedAt

## Events published

- `OnAfterValidateShortcutDimCode(var SalespersonPurchaser: Record "Salesperson/Purchaser"; var xSalespersonPurchaser: Record "Salesperson/Purchaser"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnBeforeValidateShortcutDimCode(var SalespersonPurchaser: Record "Salesperson/Purchaser"; var xSalespersonPurchaser: Record "Salesperson/Purchaser"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 7205 "CDS Int. Table. Subscriber"](../codeunit/7205.md) DeleteCouplingOnAfterDeleteSalesperson

## Procedures

- `CreateInteraction()`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `GetPrivacyBlockedTransactionText(SalespersonPurchaser2: Record "Salesperson/Purchaser"; IsPostAction: Boolean; IsSalesperson: Boolean): Text[150]`
- `GetPrivacyBlockedGenericText(SalespersonPurchaser2: Record "Salesperson/Purchaser"; IsSalesperson: Boolean): Text[150]`
- `VerifySalesPersonPurchaserPrivacyBlocked(SalespersonPurchaser2: Record "Salesperson/Purchaser"): Boolean`

Plus 1 local procedures.

## Triggers

OnDelete, OnInsert, OnModify, OnRename

## Relations

- lookup page [Page 14 "Salespersons/Purchasers"](../page/14.md)
- Global Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Global Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Contact Company Filter: TableRelation [Table 5050 "Contact"](../table/5050.md)
- Contact Filter: TableRelation [Table 5050 "Contact"](../table/5050.md)
- Cost (LCY): CalcFormula [Table 5065 "Interaction Log Entry"](../table/5065.md)
- Duration (Min.): CalcFormula [Table 5065 "Interaction Log Entry"](../table/5065.md)
- No. of Interactions: CalcFormula [Table 5065 "Interaction Log Entry"](../table/5065.md)
- Campaign Filter: TableRelation [Table 5071 "Campaign"](../table/5071.md)
- Next Task Date: CalcFormula [Table 5080 "To-do"](../table/5080.md)
- Task Entry Exists: CalcFormula [Table 5080 "To-do"](../table/5080.md)
- Team Filter: TableRelation [Table 5083 "Team"](../table/5083.md)
- Sales Cycle Filter: TableRelation [Table 5090 "Sales Cycle"](../table/5090.md)
- Sales Cycle Stage Filter: TableRelation [Table 5091 "Sales Cycle Stage"](../table/5091.md)
- Avg. Estimated Value (LCY): CalcFormula [Table 5093 "Opportunity Entry"](../table/5093.md)
- Avg.Calcd. Current Value (LCY): CalcFormula [Table 5093 "Opportunity Entry"](../table/5093.md)
- Calcd. Current Value (LCY): CalcFormula [Table 5093 "Opportunity Entry"](../table/5093.md)
- Estimated Value (LCY): CalcFormula [Table 5093 "Opportunity Entry"](../table/5093.md)
- No. of Opportunities: CalcFormula [Table 5093 "Opportunity Entry"](../table/5093.md)
- Opportunity Entry Exists: CalcFormula [Table 5093 "Opportunity Entry"](../table/5093.md)
- Close Opportunity Filter: TableRelation [Table 5094 "Close Opportunity Code"](../table/5094.md)
- Coupled to Dataverse: CalcFormula [Table 5331 "CRM Integration Record"](../table/5331.md)

## Referenced by

85 fields in 79 objects relate to this table (TableRelation or CalcFormula).

- [Table 5080 "To-do"](../table/5080.md): Salesperson Name, Completed By, Salesperson Code
- [Table 5050 "Contact"](../table/5050.md): Salesperson Code, Salesperson Filter
- [Table 5071 "Campaign"](../table/5071.md): Salesperson Code, Salesperson Filter
- [Table 5084 "Team Salesperson"](../table/5084.md): Salesperson Name, Salesperson Code
- [Table 5092 "Opportunity"](../table/5092.md): Salesperson Name, Salesperson Code
- [Table 110 "Sales Shipment Header"](../table/110.md): Salesperson Code
- [Table 112 "Sales Invoice Header"](../table/112.md): Salesperson Code
- [Table 114 "Sales Cr.Memo Header"](../table/114.md): Salesperson Code
- [Table 120 "Purch. Rcpt. Header"](../table/120.md): Purchaser Code
- [Table 122 "Purch. Inv. Header"](../table/122.md): Purchaser Code
- [Table 124 "Purch. Cr. Memo Hdr."](../table/124.md): Purchaser Code
- [Table 1381 "Customer Templ."](../table/1381.md): Salesperson Code
- [Table 1383 "Vendor Templ."](../table/1383.md): Purchaser Code
- [Table 1572 "Approval Entry Buffer"](../table/1572.md): Salespers./Purch. Name
- [Table 18 "Customer"](../table/18.md): Salesperson Code
- [Table 181 "Posted Gen. Journal Line"](../table/181.md): Salespers./Purch. Code
- [Table 21 "Cust. Ledger Entry"](../table/21.md): Salesperson Code
- [Table 222 "Ship-to Address"](../table/222.md): Salesperson Code
- [Table 23 "Vendor"](../table/23.md): Purchaser Code
- [Table 246 "Requisition Line"](../table/246.md): Purchaser Code
- [Table 25 "Vendor Ledger Entry"](../table/25.md): Purchaser Code
- [Table 270 "Bank Account"](../table/270.md): Our Contact Code
- [Table 271 "Bank Account Ledger Entry"](../table/271.md): Our Contact Code
- [Table 281 "Phys. Inventory Ledger Entry"](../table/281.md): Salespers./Purch. Code
- [Table 30136 "Shpfy Staff Member"](../table/30136.md): Salesperson Code
- [Table 36 "Sales Header"](../table/36.md): Salesperson Code
- [Table 38 "Purchase Header"](../table/38.md): Purchaser Code
- [Table 382 "CV Ledger Entry Buffer"](../table/382.md): Salesperson Code
- [Table 454 "Approval Entry"](../table/454.md): Salespers./Purch. Name
- [Table 456 "Posted Approval Entry"](../table/456.md): Salespers./Purch. Name
- [Table 5065 "Interaction Log Entry"](../table/5065.md): Salesperson Code
- [Table 5072 "Campaign Entry"](../table/5072.md): Salesperson Code
- [Table 5076 "Segment Header"](../table/5076.md): Salesperson Code
- [Table 5077 "Segment Line"](../table/5077.md): Salesperson Code
- [Table 5079 "Marketing Setup"](../table/5079.md): Default Salesperson Code
- [Table 5083 "Team"](../table/5083.md): Salesperson Filter
- [Table 5093 "Opportunity Entry"](../table/5093.md): Salesperson Code
- [Table 5096 "Segment Wizard Filter"](../table/5096.md): Salesperson Code Filter
- [Table 5102 "RM Matrix Management"](../table/5102.md): Salesperson Filter
- [Table 5106 "Interaction Merge Data"](../table/5106.md): Salesperson Code
- [Table 5107 "Sales Header Archive"](../table/5107.md): Salesperson Code
- [Table 5109 "Purchase Header Archive"](../table/5109.md): Purchaser Code
- [Table 5199 "Attendee"](../table/5199.md): Attendee No.
- [Table 5200 "Employee"](../table/5200.md): Salespers./Purch. Code
- [Table 5222 "Employee Ledger Entry"](../table/5222.md): Salespers./Purch. Code
- [Table 5475 "Sales Invoice Entity Aggregate"](../table/5475.md): Salesperson Code
- [Table 5477 "Purch. Inv. Entity Aggregate"](../table/5477.md): Purchaser Code
- [Table 5495 "Sales Order Entity Buffer"](../table/5495.md): Salesperson Code
- [Table 5496 "Purchase Order Entity Buffer"](../table/5496.md): Purchaser Code
- [Table 5505 "Sales Quote Entity Buffer"](../table/5505.md): Salesperson Code
- and 29 more objects (29 fields): data/code/relations/29.json

## Pages and codeunits on this table

- [Page 14 "Salespersons/Purchasers"](../page/14.md) (source table)
- [Page 30075 "APIV2 - Salesperson/Purchaser"](../page/30075.md) (source table)
- [Page 36958 "Salesperson/Purchasers"](../page/36958.md) (source table)
- [Page 5108 "Salesperson/Purchaser Picture"](../page/5108.md) (source table)
- [Page 5116 "Salesperson/Purchaser Card"](../page/5116.md) (source table)
- [Page 5117 "Salesperson Statistics"](../page/5117.md) (source table)
- [Page 8050 "Sales Person API"](../page/8050.md) (source table)

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (5 calls: `OnDelete → DeleteDefaultDim`, `OnInsert → UpdateDefaultDim`, `OnRename → RenameDefaultDim`, …)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24, BC26-28

## Deprecations

- field Coupled to CRM: Removed 26.0 (#if not CLEANSCHEMA26), "Replaced by flow field Coupled to Dataverse"

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "table", object_name: "Salesperson/Purchaser")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
