---
id: object/table/1001
type: object
title: Table 1001 "Job Task"
summary: Table 1001 "Job Task" in Base Application (Microsoft.Projects.Project.Job). 75 fields, 27 public procedures, 22 events. Present since at least BC23, still in BC30, changed in BC24-29.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "29"
  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: 6f188bf5ebebe895ee186a8a146efed8793f8417b44362e593a089232195f4db
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Projects/Project/Job/JobTask.Table.al
    title: src/Layers/W1/BaseApp/Projects/Project/Job/JobTask.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/projects-assemble-to-project
    - https://learn.microsoft.com/dynamics365/business-central/projects-how-create-jobs
    - https://learn.microsoft.com/dynamics365/business-central/projects-how-invoice-jobs
    - https://learn.microsoft.com/dynamics365/business-central/projects-how-manage-budgets
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/project-management
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9315
object_type: table
object_id: 1001
name: Job Task
caption: Project Task
namespace: Microsoft.Projects.Project.Job
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 75
  procedures: 72
  events: 22
  subscribers: 0
relations:
  out: 42
  referenced_by: 55
  pages: 5
  extended_by: 2
  event_subscribers: 4
  calls: 4
  called_by: 0
  implements: 0
---

# Table 1001 "Job Task"

> Table 1001 "Job Task" in Base Application (Microsoft.Projects.Project.Job). 75 fields, 27 public procedures, 22 events. Present since at least BC23, still in BC30, changed in BC24-29.

Base Application · Microsoft.Projects.Project.Job · captioned "Project Task" · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Projects/Project/Job/JobTask.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 1002 "Job Task Lines"](../page/1002.md) (4 Learn pages), [Page 1001 "Job Task Lines Subform"](../page/1001.md) (2), [Page 1003 "Job Task Card"](../page/1003.md) (2), [Page 1004 "Job Task List"](../page/1004.md) (2).

## Properties

| Property | Value |
|---|---|
| Caption | Project Task |
| 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 | Job No. | Code[20] | Specifies the number of the related project. | TableRelation [Table 167 "Job"](../table/167.md); not editable; NotBlank |
| 2 | Job Task No. | Code[20] | Specifies the number of the related project task. | NotBlank |
| 3 | Description | Text[100] | Specifies a description of the project task. You can enter anything that is meaningful in describing the task. The description is copied and used in descriptions on the project planning line. |  |
| 4 | Job Task Type | Enum "Job Task Type" | Specifies the purpose of the account. Newly created accounts are automatically assigned the Posting account type, but you can change this. Choose the field to select one of the following five options: | enum [Enum 1001 "Job Task Type"](../enum/1001.md) |
| 6 | WIP-Total | Option | Specifies the project tasks you want to group together when calculating Work In Process (WIP) and Recognition. | OptionCaption: ,Total,Excluded |
| 7 | Job Posting Group | Code[20] | Specifies the project posting group of the task. | TableRelation [Table 208 "Job Posting Group"](../table/208.md) (Job Posting Group) |
| 9 | WIP Method | Code[20] | Specifies the name of the Work in Process calculation method that is associated with a project. The value in this field comes from the WIP method specified on the project card. | TableRelation [Table 1006 "Job WIP Method"](../table/1006.md) ("Job WIP Method".Code where(Valid = const(true))) |
| 10 | Schedule (Total Cost) | Decimal | Specifies, in the local currency, the total budgeted cost for the project task during the time period in the Planning Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Planning Line"."Total Cost (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Schedule Line" = const(true), "Planning Date" = field("Planning Date Filter"))); not editable |
| 11 | Schedule (Total Price) | Decimal | Specifies, in local currency, the total budgeted price for the project task during the time period in the Planning Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Planning Line"."Line Amount (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Schedule Line" = const(true), "Planning Date" = field("Planning Date Filter"))); not editable |
| 12 | Usage (Total Cost) | Decimal | Specifies, in local currency, the total cost of the usage of items, resources and general ledger expenses posted on the project task during the time period in the Posting Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Ledger Entry"."Total Cost (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Entry Type" = const(Usage), "Posting Date" = field("Posting Date Filter"))); not editable |
| 13 | Usage (Total Price) | Decimal | Specifies, in the local currency, the total price of the usage of items, resources and general ledger expenses posted on the project task during the time period in the Posting Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Ledger Entry"."Line Amount (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Entry Type" = const(Usage), "Posting Date" = field("Posting Date Filter"))); not editable |
| 14 | Contract (Total Cost) | Decimal | Specifies, in local currency, the total billable cost for the project task during the time period in the Planning Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Planning Line"."Total Cost (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Contract Line" = const(true), "Planning Date" = field("Planning Date Filter"))); not editable |
| 15 | Contract (Total Price) | Decimal | Specifies, in the local currency, the total billable price for the project task during the time period in the Planning Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Planning Line"."Line Amount (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Contract Line" = const(true), "Planning Date" = field("Planning Date Filter"))); not editable |
| 16 | Contract (Invoiced Price) | Decimal | Specifies, in the local currency, the total billable price for the project task that has been invoiced during the time period in the Posting Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: - sum("Job Ledger Entry"."Line Amount (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Entry Type" = const(Sale), "Posting Date" = field("Posting Date Filter"))); not editable |
| 17 | Contract (Invoiced Cost) | Decimal | Specifies, in the local currency, the total billable cost for the project task that has been invoiced during the time period in the Posting Date Filter field. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: - sum("Job Ledger Entry"."Total Cost (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Entry Type" = const(Sale), "Posting Date" = field("Posting Date Filter"))); not editable |
| 19 | Posting Date Filter | Date | — | FlowFilter |
| 20 | Planning Date Filter | Date | — | FlowFilter |
| 21 | Totaling | Text[250] | Specifies an interval or a list of project task numbers. | TableRelation [Table 1001 "Job Task"](../table/1001.md) ("Job Task"."Job Task No." where("Job No." = field("Job No."))) |
| 22 | New Page | Boolean | Specifies whether you want a new page to start immediately after this project task when you print the project tasks. To start a new page after this project task, select the New Page check box. |  |
| 23 | No. of Blank Lines | Integer | Specifies the number of blank lines that you want inserted before this project task in reports that shows project tasks. |  |
| 24 | Indentation | Integer | — |  |
| 30 | Location Code | Code[10] | Specifies the location code of the task. | TableRelation [Table 14 "Location"](../table/14.md) (Location where("Use As In-Transit" = const(false))) |
| 31 | Bin Code | Code[20] | Specifies a bin code for specific location of the task. | TableRelation [Table 7354 "Bin"](../table/7354.md) (Bin.Code where("Location Code" = field("Location Code"))) |
| 34 | Recognized Sales Amount | Decimal | — | not editable |
| 37 | Recognized Costs Amount | Decimal | — | not editable |
| 41 | Language Code | Code[10] | Specifies the language to be used on printouts for this project. | TableRelation [Table 8 "Language"](../table/8.md) |
| 56 | Recognized Sales G/L Amount | Decimal | — | not editable |
| 57 | Recognized Costs G/L Amount | Decimal | — | not editable |
| 60 | 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))) |
| 61 | 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))) |
| 62 | Outstanding Orders | Decimal | Specifies the sum of outstanding orders, in local currency, for this project task. The value of the Outstanding Amount (LCY) field is used for entries in the Purchase Line table of document type Order to calculate and update the contents of this field. | FlowField: sum("Purchase Line"."Outstanding Amt. Ex. VAT (LCY)" where("Document Type" = const(Order), "Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)))) |
| 63 | Amt. Rcd. Not Invoiced | Decimal | Specifies the sum for items that have been received but have not yet been invoiced. The value in the Amt. Rcd. Not Invoiced (LCY) field is used for entries in the Purchase Line table of document type Order to calculate and update the contents of this field. | FlowField: sum("Purchase Line"."A. Rcd. Not Inv. Ex. VAT (LCY)" where("Document Type" = const(Order), "Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)))) |
| 64 | Remaining (Total Cost) | Decimal | Specifies the remaining total cost (LCY) as the sum of costs from project planning lines associated with the project task. The calculation occurs when you have specified that there is a usage link between the project ledger and the project planning lines. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Planning Line"."Remaining Total Cost (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Schedule Line" = const(true), "Planning Date" = field("Planning Date Filter"))); not editable |
| 65 | Remaining (Total Price) | Decimal | Specifies the remaining total price (LCY) as the sum of prices from project planning lines associated with the project task. The calculation occurs when you have specified that there is a usage link between the project ledger and the project planning lines. <small>via [Page 1002 "Job Task Lines"](../page/1002.md)</small> | FlowField: sum("Job Planning Line"."Remaining Line Amount (LCY)" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."), "Job Task No." = field(filter(Totaling)), "Schedule Line" = const(true), "Planning Date" = field("Planning Date Filter"))); not editable |
| 66 | Start Date | Date | Specifies the start date for the project task. The date is based on the date on the related project planning line. | FlowField: min("Job Planning Line"."Planning Date" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."))); not editable |
| 67 | End Date | Date | Specifies the end date for the project task. The date is based on the date on the related project planning line. | FlowField: max("Job Planning Line"."Planning Date" where("Job No." = field("Job No."), "Job Task No." = field("Job Task No."))); not editable |
| 70 | Bill-to Customer No. | Code[20] | Specifies the number of the customer who pays for the project. | TableRelation [Table 18 "Customer"](../table/18.md) |
| 71 | Bill-to Name | Text[100] | Specifies the name of the customer who pays for the project. | TableRelation Customer.Name |
| 72 | Bill-to Address | Text[100] | Specifies the address of the customer to whom you will send the invoice. |  |
| 73 | Bill-to Address 2 | Text[50] | Specifies an additional line of the address. |  |
| 74 | Bill-to City | Text[30] | Specifies the city of the address. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Bill-to Country/Region Code" = const('')) "Post Code".City else if ("Bill-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Bill-to Country/Region Code"))) |
| 75 | Bill-to County | Text[30] | Specifies the county code of the customer's billing address. |  |
| 76 | Bill-to Post Code | Code[20] | Specifies the postal code of the customer who pays for the project. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Bill-to Country/Region Code" = const('')) "Post Code" else if ("Bill-to Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Bill-to Country/Region Code"))) |
| 77 | Bill-to Country/Region Code | Code[10] | Specifies the country/region code of the customer's billing address. | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region) |
| 78 | Bill-to Name 2 | Text[50] | Specifies an additional part of the name of the customer who pays for the project. |  |
| 79 | Bill-to Contact No. | Code[20] | Specifies the number of the contact person at the customer's billing address. | TableRelation Contact."No." |
| 80 | Bill-to Contact | Text[100] | Specifies the name of the contact person at the customer who pays for the project. |  |
| 90 | Sell-to Customer No. | Code[20] | Specifies the number of the customer who will receive the products and be billed by default for the project task. | TableRelation [Table 18 "Customer"](../table/18.md) |
| 91 | Sell-to Customer Name | Text[100] | Specifies the name of the customer who will receive the products and be billed by default. | TableRelation Customer.Name |
| 92 | Sell-to Customer Name 2 | Text[50] | Specifies an additional part of the name of the customer who will receive the products and be billed by default. |  |
| 93 | Sell-to Address | Text[100] | Specifies the address where the customer is located. |  |
| 94 | Sell-to Address 2 | Text[50] | Specifies additional address information. |  |
| 95 | Sell-to City | Text[30] | Specifies the city of the customer on the sales document. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Sell-to Country/Region Code" = const('')) "Post Code".City else if ("Sell-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Sell-to Country/Region Code"))) |
| 96 | Sell-to Contact | Text[100] | Specifies the name of the person to contact at the customer. |  |
| 97 | Sell-to Post Code | Code[20] | Specifies the postal code. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Sell-to Country/Region Code" = const('')) "Post Code" else if ("Sell-to Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Sell-to Country/Region Code"))) |
| 98 | Sell-to County | Text[30] | Specifies the state, province or county of the address. |  |
| 99 | Sell-to Country/Region Code | Code[10] | Specifies the country or region of the address. | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region) |
| 100 | Sell-to Contact No. | Code[20] | Specifies the number of the contact person that the sales document will be sent to. | TableRelation [Table 5050 "Contact"](../table/5050.md) |
| 110 | Ship-to Code | Code[10] | Specifies the code for another shipment address than the customer's own address, which is entered by default. | TableRelation [Table 222 "Ship-to Address"](../table/222.md) ("Ship-to Address".Code where("Customer No." = field("Sell-to Customer No."))) |
| 111 | Ship-to Name | Text[100] | Specifies the name that products on the sales document will be shipped to. |  |
| 112 | Ship-to Name 2 | Text[50] | Specifies an additional part of the name that products on the sales document will be shipped to. |  |
| 113 | Ship-to Address | Text[100] | Specifies the address that products on the sales document will be shipped to. |  |
| 114 | Ship-to Address 2 | Text[50] | Specifies additional address information. |  |
| 115 | Ship-to City | Text[30] | Specifies the city of the customer on the sales document. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Ship-to Country/Region Code" = const('')) "Post Code".City else if ("Ship-to Country/Region Code" = filter(<> '')) "Post Code".City where("Country/Region Code" = field("Ship-to Country/Region Code"))) |
| 116 | Ship-to Contact | Text[100] | Specifies the name of the contact person at the address that products on the sales document will be shipped to. |  |
| 117 | Ship-to Post Code | Code[20] | Specifies the postal code. | TableRelation [Table 225 "Post Code"](../table/225.md) (if ("Ship-to Country/Region Code" = const('')) "Post Code" else if ("Ship-to Country/Region Code" = filter(<> '')) "Post Code" where("Country/Region Code" = field("Ship-to Country/Region Code"))) |
| 118 | Ship-to County | Text[30] | Specifies the state, province or county of the address. |  |
| 119 | Ship-to Country/Region Code | Code[10] | Specifies the customer's country/region. | TableRelation [Table 9 "Country/Region"](../table/9.md) (Country/Region) |
| 130 | External Document No. | Code[35] | Specifies a document number that refers to the customer's or vendor's numbering system. <small>via [Page 1003 "Job Task Card"](../page/1003.md)</small> |  |
| 131 | Payment Method Code | Code[10] | Specifies how to make payment, such as with bank transfer, cash, or check. <small>via [Page 1003 "Job Task Card"](../page/1003.md)</small> | TableRelation [Table 289 "Payment Method"](../table/289.md) (Payment Method) |
| 132 | Payment Terms Code | Code[10] | Specifies a formula that calculates the payment due date, payment discount date, and payment discount amount. <small>via [Page 1003 "Job Task Card"](../page/1003.md)</small> | TableRelation [Table 3 "Payment Terms"](../table/3.md) (Payment Terms) |
| 133 | Your Reference | Text[35] | Specifies the customer's reference. The content will be printed on sales documents. <small>via [Page 1003 "Job Task Card"](../page/1003.md)</small> |  |
| 134 | Price Calculation Method | Enum "Price Calculation Method" | Specifies the default method of the unit price calculation. | enum [Enum 7000 "Price Calculation Method"](../enum/7000.md) |
| 140 | Invoice Currency Code | Code[10] | Specifies the currency code you want to apply when creating invoices for a project. By default, the invoice currency code for a project is based on what currency code is defined on the customer card. | TableRelation [Table 4 "Currency"](../table/4.md) |
| 721 | Coupled to Dataverse | Boolean | Coupled to Field Service <small>caption</small> | obsolete Removed 28.0; #if not CLEANSCHEMA28; FlowField: exist("CRM Integration Record" where("Integration ID" = field(SystemId), "Table ID" = const(Database::"Job Task"))); not editable |

## Keys

- Key1: Job No., Job Task No. (clustered)
- Key2: Job Task No.
- Key3: SystemCreatedAt

## Events published

- `OnAfterApplyPurchaseLineFilters(var JobTask: Record "Job Task"; var PurchaseLine: Record "Purchase Line")` (integration)
- `OnAfterValidateShortcutDimCode(var JobTask: Record "Job Task"; var xJobTask: Record "Job Task"; FieldNumber: Integer; var ShortcutDimCode: Code[20])` (integration)
- `OnAfterOnInsert(var JobTask: Record "Job Task"; var xJobTask: Record "Job Task")` (integration)
- `OnBeforeOnInsert(var JobTask: Record "Job Task"; var IsHandled: Boolean)` (integration)
- `OnBeforeOnModify(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobTaskNo(var JobTask: Record "Job Task"; var xJobTask: Record "Job Task"; FieldNumber: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateJobPostingGroup(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateShortcutDimCode(var JobTask: Record "Job Task"; var xJobTask: Record "Job Task"; FieldNumber: Integer; var ShortcutDimCode: Code[20]; JobTask2: Record "Job Task"; var IsHandled: Boolean)` (integration)
- `OnInitWIPFieldsOnBeforeModify(var JobTask: Record "Job Task")` (integration)
- `OnJobLedgEntriesExistOnAfterSetFilter(var JobTask: Record "Job Task"; var JobLedgerEntry: Record "Job Ledger Entry")` (integration)
- `OnBeforeCaption(JobTask: Record "Job Task"; var IsHandled: Boolean; var Result: Text)` (integration)
- `OnAfterShipToAddressEqualsSellToAddress(var JobTask: Record "Job Task"; var Result: Boolean)` (integration)
- `OnAfterSyncShipToWithSellTo(var JobTask: Record "Job Task")` (integration)
- `OnUpdateCostPricesOnRelatedJobPlanningLinesOnBeforeConfirmUpdate(var JobTask: Record "Job Task"; var ConfirmResult: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckSellToCustomerAssosEntriesExist(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckBillToCustomerAssosEntriesExist(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; var IsHandled: Boolean)` (integration)
- `OnBeforeSellToCustomerNoUpdated(var JobTask: Record "Job Task"; var xJobTask: Record "Job Task"; CallingFieldNo: Integer)` (integration)
- `OnAfterSellToCustomerNoUpdated(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; var SellToCustomer: Record Customer)` (integration)
- `OnAfterShipToCodeValidate(var JobTask: Record "Job Task"; var ShipToAddress: Record "Ship-to Address")` (integration)
- `OnBeforeBillToCustomerNoUpdated(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; CallingFieldNo: Integer)` (integration)
- `OnBillToCustomerNoUpdatedOnAfterCopyFieldsFromBillToCustomer(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; var Job: Record Job; var BillToCustomer: Record Customer)` (integration)
- `OnAfterBillToCustomerNoUpdated(var JobTask: Record "Job Task"; xJobTask: Record "Job Task"; var BillToCustomer: Record Customer; CallingFieldNo: Integer)` (integration)

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 7006 "Price Helper - V16"](../codeunit/7006.md) AfterDeleteJobTask
- OnAfterRenameEvent: [Codeunit 7006 "Price Helper - V16"](../codeunit/7006.md) AfterRenameJobTask
- OnBeforeModifyEvent: [Codeunit 1000 "Job Calculate WIP"](../codeunit/1000.md) VerifyJobWIPEntryOnBeforeModify
- OnBeforeRenameEvent: [Codeunit 1000 "Job Calculate WIP"](../codeunit/1000.md) VerifyJobWIPEntryOnBeforeRename

## Procedures

- `CalcEACTotalCost(): Decimal`
- `CalcEACTotalPrice(): Decimal`
- `Caption(): Text`
- `InitWIPFields()`
- `ToPriceSource(var PriceSource: Record "Price Source"; PriceType: Enum "Price Type")`
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`
- `ClearTempDim()`
- `ApplyPurchaseLineFilters(var PurchLine: Record "Purchase Line"; JobNo: Code[20]; JobTaskNo: Code[20])`
- `JobPlanningLineExist(): Boolean`
- `SalesJobLedgEntryExist(): Boolean`
- `SalesLineExist(): Boolean`
- `ShouldSearchForCustomerByName(CustomerNo: Code[20]): Boolean`
- `UpdateSellToContact(CustomerNo: Code[20])` (protected)
- `BilltoContactLookup(): Boolean`
- `LookupSellToCustomerName(var CustomerName: Text): Boolean`
- `SelltoCustomerNoOnAfterValidate(var JobTask: Record "Job Task"; var xJobTask: Record "Job Task")`
- `SelltoContactLookup(): Boolean`
- `ShipToNameEqualsSellToName(): Boolean`
- `BillToAddressEqualsSellToAddress(): Boolean`
- `ShipToAddressEqualsSellToAddress(): Boolean`
- `SyncShipToWithSellTo()`
- `JobLedgEntryExist(): Boolean`
- `JobPlanLineExist(): Boolean`
- `SendProfile(var DocumentSendingProfile: Record "Document Sending Profile")`
- `SetHideValidationDialog(NewHideValidationDialog: Boolean)`
- `GetHideValidationDialog(): Boolean`
- `SuspendDeletionCheck(Suspend: Boolean)`

Plus 23 local procedures.

## Triggers

OnDelete, OnInsert, OnModify

## Relations

- drill-down page [Page 1002 "Job Task Lines"](../page/1002.md)
- lookup page [Page 1002 "Job Task Lines"](../page/1002.md)
- Totaling: TableRelation [Table 1001 "Job Task"](../table/1001.md)
- Contract (Total Cost): CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- Contract (Total Price): CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- End Date: CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- Remaining (Total Cost): CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- Remaining (Total Price): CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- Schedule (Total Cost): CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- Schedule (Total Price): CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- Start Date: CalcFormula [Table 1003 "Job Planning Line"](../table/1003.md)
- WIP Method: TableRelation [Table 1006 "Job WIP Method"](../table/1006.md)
- Location Code: TableRelation [Table 14 "Location"](../table/14.md)
- Job No.: TableRelation [Table 167 "Job"](../table/167.md)
- Contract (Invoiced Cost): CalcFormula [Table 169 "Job Ledger Entry"](../table/169.md)
- Contract (Invoiced Price): CalcFormula [Table 169 "Job Ledger Entry"](../table/169.md)
- Usage (Total Cost): CalcFormula [Table 169 "Job Ledger Entry"](../table/169.md)
- Usage (Total Price): CalcFormula [Table 169 "Job Ledger Entry"](../table/169.md)
- Bill-to Customer No.: TableRelation [Table 18 "Customer"](../table/18.md)
- Sell-to Customer No.: TableRelation [Table 18 "Customer"](../table/18.md)
- Job Posting Group: TableRelation [Table 208 "Job Posting Group"](../table/208.md)
- Ship-to Code: TableRelation [Table 222 "Ship-to Address"](../table/222.md)
- Bill-to City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Bill-to Post Code: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Sell-to City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Sell-to Post Code: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Ship-to City: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Ship-to Post Code: TableRelation [Table 225 "Post Code"](../table/225.md) (conditional)
- Payment Method Code: TableRelation [Table 289 "Payment Method"](../table/289.md)
- Payment Terms Code: TableRelation [Table 3 "Payment Terms"](../table/3.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)
- Amt. Rcd. Not Invoiced: CalcFormula [Table 39 "Purchase Line"](../table/39.md)
- Outstanding Orders: CalcFormula [Table 39 "Purchase Line"](../table/39.md)
- Invoice Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Sell-to Contact No.: TableRelation [Table 5050 "Contact"](../table/5050.md)
- Coupled to Dataverse: CalcFormula [Table 5331 "CRM Integration Record"](../table/5331.md)
- Bin Code: TableRelation [Table 7354 "Bin"](../table/7354.md)
- Language Code: TableRelation [Table 8 "Language"](../table/8.md)
- Bill-to Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)
- Sell-to Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)
- Ship-to Country/Region Code: TableRelation [Table 9 "Country/Region"](../table/9.md)

## Referenced by

55 fields in 51 objects relate to this table (TableRelation or CalcFormula).

- [Table 167 "Job"](../table/167.md): Calc. Recog. Costs Amount, Calc. Recog. Costs G/L Amount, Calc. Recog. Sales Amount, Calc. Recog. Sales G/L Amount
- [Table 1002 "Job Task Dimension"](../table/1002.md): Job No., Job Task No.
- [Table 1001 "Job Task"](../table/1001.md): Totaling
- [Table 1003 "Job Planning Line"](../table/1003.md): Job Task No.
- [Table 1007 "Job WIP Warning"](../table/1007.md): Job Task No.
- [Table 1008 "Job Assigned Resource"](../table/1008.md): Job Task No.
- [Table 1012 "Job Resource Price"](../table/1012.md): Job Task No.
- [Table 1013 "Job Item Price"](../table/1013.md): Job Task No.
- [Table 1014 "Job G/L Account Price"](../table/1014.md): Job Task No.
- [Table 1020 "Job Usage Link"](../table/1020.md): Job Task No.
- [Table 1021 "Job WIP Total"](../table/1021.md): Job Task No.
- [Table 1022 "Job Planning Line Invoice"](../table/1022.md): Job Task No.
- [Table 111 "Sales Shipment Line"](../table/111.md): Job Task No.
- [Table 113 "Sales Invoice Line"](../table/113.md): Job Task No.
- [Table 115 "Sales Cr.Memo Line"](../table/115.md): Job Task No.
- [Table 121 "Purch. Rcpt. Line"](../table/121.md): Job Task No.
- [Table 123 "Purch. Inv. Line"](../table/123.md): Job Task No.
- [Table 125 "Purch. Cr. Memo Line"](../table/125.md): Job Task No.
- [Table 169 "Job Ledger Entry"](../table/169.md): Job Task No.
- [Table 181 "Posted Gen. Journal Line"](../table/181.md): Job Task No.
- [Table 210 "Job Journal Line"](../table/210.md): Job Task No.
- [Table 32 "Item Ledger Entry"](../table/32.md): Job Task No.
- [Table 37 "Sales Line"](../table/37.md): Job Task No.
- [Table 39 "Purchase Line"](../table/39.md): Job Task No.
- [Table 461 "Prepayment Inv. Line Buffer"](../table/461.md): Job Task No.
- [Table 5108 "Sales Line Archive"](../table/5108.md): Job Task No.
- [Table 5110 "Purchase Line Archive"](../table/5110.md): Job Task No.
- [Table 5136 "Job Task Archive"](../table/5136.md): Totaling
- [Table 5510 "Employee Time Reg Buffer"](../table/5510.md): Job Task No.
- [Table 5771 "Warehouse Source Filter"](../table/5771.md): Job Task No. Filter
- [Table 5802 "Value Entry"](../table/5802.md): Job Task No.
- [Table 5902 "Service Line"](../table/5902.md): Job Task No.
- [Table 5907 "Service Ledger Entry"](../table/5907.md): Job Task No.
- [Table 5991 "Service Shipment Line"](../table/5991.md): Job Task No.
- [Table 5993 "Service Invoice Line"](../table/5993.md): Job Task No.
- [Table 5995 "Service Cr.Memo Line"](../table/5995.md): Job Task No.
- [Table 6012 "Service Line Archive"](../table/6012.md): Job Task No.
- [Table 6227 "Sustainability Value Entry"](../table/6227.md): Job Task No.
- [Table 6651 "Return Shipment Line"](../table/6651.md): Job Task No.
- [Table 6661 "Return Receipt Line"](../table/6661.md): Job Task No.
- [Table 6900 "Expense"](../table/6900.md): Job Task No.
- [Table 6907 "Expense Report Line"](../table/6907.md): Job Task No.
- [Table 6912 "Expense Ledger Entry"](../table/6912.md): Job Task No.
- [Table 6916 "Posted Expense Report Line"](../table/6916.md): Job Task No.
- [Table 81 "Gen. Journal Line"](../table/81.md): Job Task No.
- [Table 904 "Assemble-to-Order Link"](../table/904.md): Job Task No.
- [Table 914 "Posted Assemble-to-Order Link"](../table/914.md): Job Task No.
- [Table 951 "Time Sheet Line"](../table/951.md): Job Task No.
- [Table 952 "Time Sheet Detail"](../table/952.md): Job Task No.
- [Table 955 "Time Sheet Line Archive"](../table/955.md): Job Task No.
- and 1 more objects (1 fields): data/code/relations/29.json

## Pages and codeunits on this table

- [Page 1001 "Job Task Lines Subform"](../page/1001.md) (source table)
- [Page 1002 "Job Task Lines"](../page/1002.md) (source table)
- [Page 1003 "Job Task Card"](../page/1003.md) (source table)
- [Page 1004 "Job Task List"](../page/1004.md) (source table)
- [Page 1024 "Job Task Statistics"](../page/1024.md) (source table)
- [Codeunit 1003 "Job Task-Indent"](../codeunit/1003.md) (codeunit runs on it)
- [Codeunit 1017 "Job Tasks-Send"](../codeunit/1017.md) (codeunit runs on it)

## Extended by

- [Table extension 6260 "Sust. Job Task"](../tableextension/6260.md)
- [Table extension 6611 "FS Job Task"](../tableextension/6611.md)

## 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) (6 calls: `ClearTempDim → DeleteJobTaskTempDim`, `CreateDefaultJobTaskDimensionsFromCustomer → InsertJobTaskDim`, `OnInsert → InsertJobTaskDim`, …)
- [Codeunit 109 "Lookup State Manager"](../codeunit/109.md) (1 call: `LookupSellToCustomerName → SaveRecord`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (1 call: `UpdateCostPricesOnRelatedJobPlanningLines → GetResponseOrDefault`)
- [Codeunit 452 "Report Distribution Management"](../codeunit/452.md) (1 call: `SendProfile → GetFullDocumentTypeText`)

## Recent changes

- 2026-07-14 [#9315 [Projects] Add Assigned Resources to projects and project tasks](../../changes/bcapps/9315.md) (main, BC30, feature)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-29

## Deprecations

- field Coupled to Dataverse: Removed 28.0 (#if not CLEANSCHEMA28), "Field Service is moved to Field Service Integration app."

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: "Job Task")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
