Codeunit 8063 "Sales Documents"
Subscription Billing · Microsoft.SubscriptionBilling
Across versions
- BC23-28not present
- BC29-30present
Subscription Billing · Microsoft.SubscriptionBilling · BC29-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| SingleInstance | true |
Events published
OnCheckResetValueForSubscriptionItems(var TempSalesLine: Record "Sales Line"; var ResetValueForSubscriptionItems: Boolean; var IsHandled: Boolean)(integration)OnCreateSubscriptionHeaderFromSalesLineBeforeInsertSubscriptionHeader(var SubscriptionHeader: Record "Subscription Header"; SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line")(integration)OnCreateSubscriptionHeaderFromSalesLineAfterInsertSubscriptionHeader(var SubscriptionHeader: Record "Subscription Header"; SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line")(integration)OnCreateSubscriptionHeaderFromSalesLineBeforeInsertSubscriptionLine(var SubscriptionLine: Record "Subscription Line"; SalesSubscriptionLine: Record "Sales Subscription Line"; SalesLine: Record "Sales Line")(integration)OnCreateSubscriptionHeaderFromSalesLineAfterInsertSubscriptionLine(var SubscriptionLine: Record "Subscription Line"; SalesSubscriptionLine: Record "Sales Subscription Line"; SalesLine: Record "Sales Line")(integration)OnBeforeCreateSubscriptionHeaderFromSalesLine(SubscriptionHeader: Record "Subscription Header"; SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line"; SerialNo: Code[50]; QtyPerSerialNo: Decimal; var IsHandled: Boolean)(integration)OnAfterCreateSubscriptionHeaderFromSalesLine(SubscriptionHeader: Record "Subscription Header"; SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line")(integration)OnAfterInsertBillingLineArchiveOnMoveBillingLineToBillingLineArchive(var BillingLineArchive: Record "Billing Line Archive"; BillingLine: Record "Billing Line")(integration)OnBeforeMoveBillingLineToBillingLineArchiveForPostingPreview(SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)(integration)OnBeforeClearQtyToInvoiceOnForSubscriptionItem(var SalesLine: Record "Sales Line"; var IsHandled: Boolean)(integration)OnAfterSalesLineShouldSkipInvoicing(var SalesLine: Record "Sales Line"; SkipTemporaryCheck: Boolean; var Result: Boolean)(integration)OnAfterSkipInsertingSalesInvoiceLineIfServiceCommitmentItemsExist(SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line"; var IsHandled: Boolean)(integration)OnUpdateQuantitiesOnPostUpdateOrderLineOnSetDefaultQtyBlankOnAfterCalcShouldModifySalesLine(var TempSalesLine: Record "Sales Line" temporary; var ShouldModifySalesLine: Boolean)(integration)OnRevertInvoicedQuantityOnUpdateSalesLineOnBeforeSalesLineModifyOnAfterCalcShouldModifySalesLine(var SalesLine: Record "Sales Line"; var ShouldModifySalesLine: Boolean)(integration)OnSetQtyToInvoiceToZeroOnBeforePostUpdateOrderLineModifyTempLineOnAfterCalcShouldModifySalesLine(var TempSalesLine: Record "Sales Line" temporary; var ShouldModifySalesLine: Boolean)(integration)
Event subscriptions
- SalesHeaderOnBeforeDeleteEvent subscribes to Table “Sales Header” OnBeforeDeleteEvent
- SalesLineOnAfterDeleteEvent subscribes to Table “Sales Line” OnBeforeDeleteEvent
- SetVATProductPostingGroupInContractRenewalLineOnAfterAssignFieldsForNo subscribes to Table “Sales Line” OnAfterAssignFieldsForNo
- SalesPostOnBeforeSalesLineDeleteAll subscribes to Codeunit “Sales-Post” OnBeforeDeleteAfterPosting
- ValidateQuantityOnSalesLineOnBeforeInsertSalesOrderLine subscribes to Codeunit “Sales-Quote to Order” OnBeforeInsertSalesOrderLine
- BlanketSalesOrderToOrderValidateQuantityOnSalesLineOnBeforeInsertSalesOrderLine subscribes to Codeunit “Blanket Sales Order to Order” OnBeforeInsertSalesOrderLine
- ClearQtyToInvoiceForServiceCommitmentItemAfterValidateEventQtyToInvoice subscribes to Table “Sales Line” OnAfterValidateEvent (Qty. to Invoice)
- ClearQtyToInvoiceForServiceCommitmentItemAfterInitQtyToInvoice subscribes to Table “Sales Line” OnAfterInitQtyToInvoice
- ResetValueForServiceCommitmentItemsBeforePosting subscribes to Codeunit “Sales-Post” OnAfterCopyToTempLines
- RestoreValueForServiceCommitmentItemsAfterPosting subscribes to Codeunit “Sales-Post” OnPostUpdateOrderLineOnBeforeInitOutstanding
- SkipInitializingPostingNo subscribes to Codeunit “Sales-Post” OnBeforeUpdatePostingNo
- SkipInsertingSalesInvoiceHeaderIfOnlyServiceCommitmentItemsExist subscribes to Codeunit “Sales-Post” OnInsertPostedHeadersOnBeforeInsertInvoiceHeader
- SkipInsertingSalesInvoiceLineIfServiceCommitmentItemsExist subscribes to Codeunit “Sales-Post” OnPostSalesLineOnBeforeInsertInvoiceLine
- CacheSalesLineContextFromSalesPost subscribes to Codeunit “Sales-Post” OnBeforePostItemJnlLine
- CacheSalesLineContextFromDropShipment subscribes to Codeunit “Purch.-Post” OnPostAssocItemJnlLineOnBeforePost
- CreateSubscriptionHeaderFromItemJournalLine subscribes to Codeunit “Item Jnl.-Post Line” OnAfterPostItemJnlLine
- CloseSalesOrderLineOnDropShipmentAssocOrderUpdate subscribes to Codeunit “Purch.-Post” OnUpdateAssocOrderOnBeforeSalesOrderLineModify
- UpdateQuantitiesOnPostUpdateOrderLineOnSetDefaultQtyBlank subscribes to Codeunit “Sales-Post” OnPostUpdateOrderLineOnSetDefaultQtyBlank
- UpdateInvoicedQtyOnShipmentLineOnBeforeModifySalesShptLine subscribes to Codeunit “Sales-Post” OnInsertShipmentLineOnAfterInitQuantityFields
- SetQtyToInvoiceToZeroOnBeforePostUpdateOrderLineModifyTempLine subscribes to Codeunit “Sales-Post” OnBeforePostUpdateOrderLineModifyTempLine
- SkipInvoiceOrShipFlagCheckForSubscriptionBillingOnBeforeCheckHeaderPostingType subscribes to Codeunit “Sales-Post” OnBeforeCheckHeaderPostingType
- SkipQuantityCheckForSubscriptionBillingOnBeforeSalesLineFind subscribes to Codeunit “Release Sales Document” OnBeforeSalesLineFind
- ForceInvoiceCreationForZeroQtyDocumentOnBeforeCalcInvoice subscribes to Codeunit “Sales-Post” OnBeforeCalcInvoice
- SetEverythingInvoicedForZeroQtyDocumentOnAfterSetEverythingInvoiced subscribes to Codeunit “Sales-Post” OnPostSalesLineOnAfterSetEverythingInvoiced
- ModifyShipmentDateFromInventoryPickPostingDate subscribes to Codeunit “Whse.-Activity-Post” OnUpdateSourceDocumentOnAfterSalesLineModify
- TransferRecurringBillingMark subscribes to Codeunit “Gen. Jnl.-Post Line” OnBeforeCustLedgEntryInsert
- HideConfirmKeepExistingDimensions subscribes to Table “Sales Header” OnBeforeConfirmKeepExistingDimensions
- SalesInvLineCopyContractNoOnAfterInitFromSalesLine subscribes to Table “Sales Invoice Line” OnAfterInitFromSalesLine
- SalesCrMemoLineCopyContractNoOnAfterInitFromSalesLine subscribes to Table “Sales Cr.Memo Line” OnAfterInitFromSalesLine
- RevertInvoicedQuantityOnUpdateSalesLineOnBeforeSalesLineModify subscribes to Codeunit “Undo Posting Management” OnUpdateSalesLineOnBeforeSalesLineModify
- ClearQtyToInvoiceInSalesLineForServiceCommitmentItem subscribes to Codeunit “Copy Document Mgt.” OnCopySalesDocLineOnBeforeCopyThisLine
- UpdateInvoicedQtyOnSalesLineAfterUndoShipment subscribes to Codeunit “Undo Posting Management” OnUpdateSalesLineOnBeforeInitOustanding
- FindSubscriptionOnAfterGetRecRefAndFieldsNoByType subscribes to Codeunit “Find Record Management” OnAfterGetRecRefAndFieldsNoByType
- ResetVariablesOnBeforePostSalesDoc subscribes to Codeunit “Sales-Post” OnBeforePostSalesDoc
- ResetVariablesOnAfterPostSalesDoc subscribes to Codeunit “Sales-Post” OnAfterPostSalesDoc
Procedures
MoveBillingLineToBillingLineArchiveForPostingPreview(SalesInvoiceHeader: Record "Sales Invoice Header")(internal)CreateServiceObjectFromSales(var SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; var SalesShptLine: Record "Sales Shipment Line")(obsolete 29.0: Use OnAfterPostItemJnlLine event subscriber to create Subscription Headers during item journal posting)CreateSubscriptionLineFromSalesLine(ServiceObject: Record "Subscription Header"; SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line")AllSalesLinesAreServiceCommitmentItems(SalesHeader: Record "Sales Header"): BooleanSetCalledFromContractRenewal(NewCalledFromContractRenewal: Boolean)(internal)IsInvoiceCredited(DocumentNo: Code[20]): Boolean(internal)GetAppliesToDocNo(SalesHeader: Record "Sales Header"): Code[20](internal)SalesLineShouldSkipInvoicing(var SalesLine: Record "Sales Line"): BooleanSalesLineShouldSkipInvoicing(var SalesLine: Record "Sales Line"; SkipTemporaryCheck: Boolean): Boolean
Plus 15 local procedures.
Recent changes
- 2026-09-08 #11059 Hardening subscription billing + drop shipment scenarios (main, BC30, fix)
- 2026-07-30 #8553 [Bug][SubscriptionBilling]: Performance: Billing document creation does not scale to large datasets (4M+ subscription lines) (main, BC30, performance)
Deprecations
- procedure CreateServiceObjectFromSales: Pending 29.0 (#if not CLEAN28), “Use OnAfterPostItemJnlLine event subscriber to create Subscription Headers during item journal posting”
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). 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: "codeunit", object_name: "Sales Documents"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.