---
title: "Codeunit 1002 Job Create-Invoice"
author: "Jonas Paprotka"
url: https://jonas-paprotka.de/ref/codeunit/1002-job-create-invoice/
type: codeunit
id: 1002
name: "Job Create-Invoice"
app: "Base Application"
namespace: Microsoft.Projects.Project.Planning
versions: "17-28"
build: 28.5.54151.54365
source: "https://jonas-paprotka.de/ref/codeunit/1002-job-create-invoice/source/29/"
checked: 2026-09-20
subject: "Microsoft Dynamics 365 Business Central"
license: "Content © 2026 Jonas Paprotka. Quote freely with attribution and a link."
---

# Codeunit 1002 Job Create-Invoice

Jonas Paprotka, https://jonas-paprotka.de/ref/codeunit/1002-job-create-invoice/

| | |
| --- | --- |
| App | Base Application |
| Namespace | Microsoft.Projects.Project.Planning |
| Versions | 17-28 |
| Source file | Projects/Project/Planning/JobCreateInvoice.Codeunit.al |

## Procedures

| Name | Parameters | Returns | Access | Versions | Obsolete | Reason |
| --- | --- | --- | --- | --- | --- | --- |
| CreateSalesInvoice | (var Record Job Planning Line, Boolean) | - | public | 17-28 | - | - |
| CreateSalesInvoiceLines | (Code[20], var Record Job Planning Line, Code[20], Boolean, Date, Boolean) | - | public | 17-25 | Pending 23.0 | Replaced by CreateSalesInvoiceLines(JobNo: Code[20]; var JobPlanningLineSource: Record "Job Planning Line"; InvoiceNo: Code[20]; NewInvoice: Boolean; PostingDate: Date; DocumentDate: Date; CreditMemo: Boolean) |
| DeleteSalesInvoiceBuffer | () | - | public | 17-28 | - | - |
| CreateSalesInvoiceJobTask | (var Record Job Task, Date, Boolean, var Integer, var Code[20], var Code[20], Boolean) | - | public | 17-25 | Pending 23.0 | Replaced by CreateSalesInvoiceJobTask(var JobTask2: Record "Job Task"; PostingDate: Date; DocumentDate: Date; InvoicePerTask: Boolean; var NoOfInvoices: Integer; var OldJobNo: Code[20]; var OldJobTaskNo: Code[20]; LastJobTask: Boolean) |
| DeleteSalesLine | (Record Sales Line) | - | public | 17-28 | - | - |
| FindInvoices | (var Record Job Planning Line Invoice, Code[20], Code[20], Integer, Option) | - | public | 17-28 | - | - |
| GetJobPlanningLineInvoices | (Record Job Planning Line) | - | public | 17-28 | - | - |
| OpenSalesInvoice | (Record Job Planning Line Invoice) | - | public | 17-28 | - | - |
| CreateSalesInvoiceLines | (Code[20], var Record Job Planning Line, Code[20], Boolean, Date, Date, Boolean) | - | public | 23-28 | - | - |
| CreateSalesInvoiceJobTask | (var Record Job Task, Date, Date, Boolean, var Integer, var Code[20], var Code[20], Boolean) | - | public | 23-28 | - | - |
| CreateNewInvoice | (var Record Job Task, Boolean, var Code[20], var Code[20], Boolean) | Boolean | public | 25-28 | - | - |
| CreateSalesHeader | (Record Job, Record Job Planning Line, Date, Date) | - | public | 25-28 | - | - |
| CreateSalesLine | (var Record Job Planning Line) | - | public | 25-28 | - | - |
| TransferLine | (var Record Job Planning Line) | Boolean | public | 25-28 | - | - |
| TestExchangeRate | (var Record Job Planning Line, Date) | - | public | 25-28 | - | - |

## Events

| Kind | Name | Parameters | Versions | Obsolete | Reason |
| --- | --- | --- | --- | --- | --- |
| Integration event | OnAfterCreateSalesInvoiceLines | (Record Sales Header, Boolean) | 17-24 | - | - |
| Integration event | OnBeforeCreateSalesHeader | (Record Job, Date, var Record Sales Header, Record Job Planning Line) | 17-19 | - | - |
| Integration event | OnBeforeCreateSalesLine | (var Record Job Planning Line, var Record Sales Header, var Record Sales Header, var Boolean) | 17-28 | - | - |
| Integration event | OnAfterCreateSalesLine | (var Record Sales Line, Record Sales Header, Record Job, var Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnBeforeCreateNewInvoice | (var Record Job Task, Boolean, var Code[20], var Code[20], Boolean, var Boolean, var Boolean) | 17-24 | - | - |
| Integration event | OnBeforeCreateSalesInvoiceLines | (var Record Job Planning Line, Code[20], Boolean, Date, Boolean) | 17-21 | - | - |
| Integration event | OnBeforeCreateSalesInvoiceJobTask | (var Record Job Task, Date, Boolean, var Integer, var Code[20], var Code[20], Boolean, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeDeleteSalesLine | (var Record Sales Line, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeGetInvoiceNo | (var Record Job Planning Line, Boolean, Boolean, Date, var Code[20], var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeGetCrMemoNo | (var Record Job Planning Line, Boolean, Boolean, Date, var Code[20], var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeInsertSalesHeader | (var Record Sales Header, Record Job, Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnBeforeModifySalesHeader | (var Record Sales Header, Record Job, Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnBeforeInsertSalesLine | (var Record Sales Line, var Record Sales Header, Record Job, Record Job Planning Line) | 17-21 | - | - |
| Integration event | OnBeforeModifySalesLine | (var Record Sales Line, Record Sales Header, Record Job, Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnBeforeOpenSalesInvoice | (var Record Job Planning Line Invoice, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeTestSalesHeader | (var Record Sales Header, Record Job, var Boolean, Record Job Planning Line) | 17-19 | - | - |
| Integration event | OnBeforeTransferLine | (var Record Job Planning Line, var Boolean) | 17-21 | - | - |
| Integration event | OnBeforeUpdateSalesHeader | (var Record Sales Header, Record Job, var Boolean) | 17-28 | - | - |
| Integration event | OnAfterOpenSalesInvoice | (var Record Job Planning Line Invoice) | 17-28 | - | - |
| Integration event | OnAfterTestSalesHeader | (var Record Sales Header, Record Job, Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnBeforeFindInvoices | (var Record Job Planning Line Invoice, Code[20], Code[20], Integer, Option, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeShowMessageLinesTransferred | (var Record Job Planning Line, Boolean, var Boolean) | 17-28 | - | - |
| Integration event | OnBeforeTestExchangeRate | (var Record Job Planning Line, Date, var Boolean) | 17 | - | - |
| Integration event | OnBeforeTestTransferred | (var Record Job Planning Line, Record Sales Header, var Boolean) | 17-28 | - | - |
| Integration event | OnCreateSalesHeaderOnBeforeUpdateSalesHeader | (var Record Sales Header, var Record Job, var Boolean, Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnAfterValidateJobPlanningLine | (var Record Job Planning Line, var Text) | 17-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeJobPlanningLineModify | (var Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeCreateSalesLine | (var Record Job Planning Line, Record Sales Header, Record Sales Header, Boolean, var Integer) | 17-26 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeGetCustomer | (Record Job Planning Line, var Record Customer, var Boolean) | 17-25 | Pending 21.0 | Replaced with OnBeforeCheckJobBillToCustomer |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeTestJob | (var Record Job) | 17-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnAfterLinesCreated | (var Record Sales Header, var Record Job) | 17-23 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnBeforeTempJobPlanningLineFind | (var Record Job Task, var Record Sales Header, Boolean) | 17-20 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnBeforeCreateSalesLine | (var Record Job Planning Line, Record Sales Header, Record Sales Header, var Integer) | 17-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskTestJob | (var Record Job) | 17 | - | - |
| Integration event | OnDeleteSalesLineOnBeforeJobPlanningLineModify | (var Record Job Planning Line) | 17-28 | - | - |
| Integration event | OnCreateSalesInvoiceOnBeforeRunReport | (var Record Job Planning Line, var Boolean, var Boolean, var Date, var Code[20], var Boolean, Boolean) | 17-28 | - | - |
| Integration event | OnFindInvoicesOnBeforeTempJobPlanningLineInvoiceInsert | (var Record Job Planning Line Invoice, Record Job Planning Line Invoice) | 17-28 | - | - |
| Integration event | OnBeforeTestExchangeRate | (var Record Job Planning Line, Date, var Boolean, var Record Currency Exchange Rate) | 18-28 | - | - |
| Integration event | OnCreateSalesLineOnBeforeSalesCheckIfAnyExtText | (var Record Job Planning Line, var Record Sales Line, var Boolean) | 18-28 | - | - |
| Integration event | OnCreateSalesLineOnBeforeValidateSalesLineNo | (var Record Job Planning Line, var Record Sales Line, var Boolean) | 18-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskTestJob | (var Record Job, var Record Job Planning Line, Date) | 18-28 | - | - |
| Integration event | OnFindInvoicesOnBeforeTempJobPlanningLineInvoiceModify | (var Record Job Planning Line Invoice, Record Job Planning Line Invoice) | 18-28 | - | - |
| Integration event | OnCreateSalesHeaderOnBeforeCheckBillToCustomerNo | (var Record Sales Header, Record Job, Record Job Planning Line, var Boolean) | 18-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeJobPlanningLineCopy | (Record Job, var Record Job Planning Line, Date) | 18-28 | - | - |
| Integration event | OnBeforeCreateSalesHeader | (Record Job, Date, var Record Sales Header, var Record Job Planning Line) | 20-28 | - | - |
| Integration event | OnBeforeTestSalesHeader | (var Record Sales Header, Record Job, var Boolean, var Record Job Planning Line) | 20-28 | - | - |
| Integration event | OnBeforeCheckJobBillToCustomer | (Record Job Planning Line, Record Job, var Boolean) | 20-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnBeforeJobPlanningLineInvoiceInsert | (var Record Job Planning Line Invoice) | 20-28 | - | - |
| Integration event | OnBeforeUpdateSalesLineDimension | (var Record Sales Line, Record Job Planning Line, var Boolean) | 20-28 | - | - |
| Integration event | OnAfterUpdateSalesHeader | (var Record Sales Header, Record Job) | 21-28 | - | - |
| Integration event | OnCreateSalesLineOnAfterCalcShouldUpdateCurrencyFactor | (var Record Job Planning Line, var Record Job, var Record Sales Header, var Record Sales Header, var Boolean, var Boolean) | 21-28 | - | - |
| Integration event | OnCreateSalesLineOnAfterSalesLineModify | (var Record Sales Line, Record Sales Header, Record Job, Record Job Planning Line) | 21-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeJobPlanningLineFindSet | (var Record Job Planning Line, Code[20], Boolean, Date, Boolean) | 21-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnBeforeTempJobPlanningLineFind | (var Record Job Task, var Record Sales Header, Boolean, var Record Job Planning Line) | 21-28 | - | - |
| Integration event | OnBeforeCheckJobPlanningLineIsNegative | (Record Job Planning Line, var Boolean) | 21-26 | Pending 24.0 | Has no purpose in procedure CheckJobPlanningLineIsNegative anymore |
| Integration event | OnBeforeCreateSalesInvoiceLines | (var Record Job Planning Line, Code[20], Boolean, Date, Boolean, var Integer) | 22-26 | - | - |
| Integration event | OnBeforeInsertSalesLine | (var Record Sales Line, var Record Sales Header, Record Job, Record Job Planning Line, Boolean) | 22-28 | - | - |
| Integration event | OnBeforeTransferLine | (var Record Job Planning Line, var Boolean, var Boolean) | 22-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnAfterSetJobInvCurrency | (Record Job, var Boolean) | 22-28 | - | - |
| Integration event | OnCreateSalesLineOnBeforeValidateCurrencyCode | (var Boolean, Record Sales Line, Record Job Planning Line) | 22-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnAfterSetSalesDocumentType | (var Record Sales Header) | 22-28 | - | - |
| Integration event | OnBeforeGetJobPlanningLineInvoices | (Record Job Planning Line) | 22-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnAfterLinesCreated | (var Record Sales Header, var Record Job, Boolean, Boolean) | 24-28 | - | - |
| Integration event | OnCreateSalesInvoiceJobTaskOnAfterJobPlanningLineSetFilters | (var Record Job Planning Line, var Record Job Task) | 24-28 | - | - |
| Integration event | OnCreateSalesLineOnBeforeCheckPricesIncludingVATAndSetJobInformation | (var Record Sales Line, Record Job Planning Line, var Boolean) | 24-28 | - | - |
| Integration event | OnDeleteSalesLineOnBeforeGetJobPlanningLine | (Record Job Planning Line Invoice) | 24-28 | - | - |
| Integration event | OnBeforeGetCustomerNo | (var Record Job, var Record Job Planning Line, Boolean, var Code[20]) | 24-28 | - | - |
| Integration event | OnAfterCreateSalesInvoiceLines | (var Record Sales Header, Boolean) | 25-28 | - | - |
| Integration event | OnBeforeCreateNewInvoice | (var Record Job Task, Boolean, var Code[20], var Code[20], Boolean, var Boolean, var Boolean, var Record Job Planning Line) | 25-28 | - | - |
| Integration event | OnTestExchangeRateOnBeforeValidateCurrencyDate | (var Record Job Planning Line, Date, var Record Currency Exchange Rate, var Boolean) | 25-28 | - | - |
| Integration event | OnBeforeFindJobPlanningLineInvoice | (Record Job Task, var Record Job Planning Line Invoice, var Record Sales Header, var Boolean, var Boolean) | 25-28 | - | - |
| Integration event | OnBeforeCreateSalesInvoiceLines | (var Record Job Planning Line, Code[20], Boolean, Date, Boolean, var Integer, var Boolean) | 27-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeCreateSalesLine | (var Record Job Planning Line, Record Sales Header, Record Sales Header, Boolean, var Integer, var Boolean) | 27-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeNoSalesLineCreatedError | (var Boolean) | 27-28 | - | - |
| Integration event | OnCreateSalesInvoiceLinesOnBeforeJobPlanningLineInvoiceInsert | (var Record Job Planning Line Invoice) | 27-28 | - | - |
| Integration event | OnCreateSalesInvoiceOnBeforeFindJobPlanningLines | (var Record Job Planning Line) | 27-28 | - | - |
| Integration event | OnCreateSalesInvoiceOnBeforeCommit | (var Record Job Planning Line, var Boolean) | 27-28 | - | - |

## Source

Symbols: Microsoft.BaseApplication.symbols.437dbf0e-84ff-417a-965d-ed2bb9650972, https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/MSSymbols/nuget/v3/index.json, highest build per major on 2026-09-20.
AL source 29: https://github.com/microsoft/BCApps, MIT, releases/29.x at a66254c3b8b5bb1cea290dc8f9d097aec4381153.

Jonas Paprotka, 2026-09-20.
