KVSKBASalesInvoice
Procedures
InitializeRequest(Integer, Boolean, Boolean, Option, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean) :
Summary: Initializes the report request options programmatically.
procedure InitializeRequest(NoOfCopiesFrom: Integer; ShowInternalInfoFrom: Boolean; LogInteractionFrom: Boolean; ShowItemTrackingFrom: Option; DisplayAsmInfoFrom: Boolean; PrintOnNotePaperFrom: Boolean; ShowZeroQuantityLinesFrom: Boolean; ShowTariffNoFrom: Boolean; ShowCountryOfOriginFrom: Boolean; DisplayAdditionalFeeNoteFrom: Boolean):
Parameters:
NoOfCopiesFrom: The number of additional copies to print.ShowInternalInfoFrom: Specifies whether internal information (e.g. G/L account numbers) should be printed.LogInteractionFrom: Specifies whether the print action should be logged as an interaction.ShowItemTrackingFrom: Specifies whether item tracking is shown: 0 = None, 1 = DocLines, 2 = ItemTrackingTable.DisplayAsmInfoFrom: Specifies whether assembly component lines are shown beneath each item line.PrintOnNotePaperFrom: Specifies whether the report prints on business letterhead paper.ShowZeroQuantityLinesFrom: Specifies whether lines with Quantity = 0 are shown (for supported line types).ShowTariffNoFrom: Specifies whether the tariff number is printed beneath each item line.ShowCountryOfOriginFrom: Specifies whether the country/region of origin is printed beneath each item line.DisplayAdditionalFeeNoteFrom: Specifies whether additional fee notes from LineFeeNoteOnReportHist are appended to the document totals block.
Remarks: Unlike the Draft Invoice report, there is no ArchiveDocumentFrom parameter because posted sales invoices cannot be archived from the report. InitializeRequest is declared as a plain public procedure (no access modifier). Unlike the posted Credit Memo and Draft Invoice, this report also accepts ShowZeroQuantityLinesFrom and DisplayAdditionalFeeNoteFrom, and DisplayAsmInfoFrom maps to GlobalDisplayAssemblyInfo. OnUpdateRequestPageSettings is local and not obsolete on this report.
AddItemTrackingLines() :
Summary: Adds item tracking heading and line rows inline beneath the current document line when GlobalShowItemTracking = DocLines.
procedure AddItemTrackingLines():
Remarks: Called from the DocLine OnAfterGetRecord trigger (after OnBeforeAddItemTrackingLines) when TempTrackingSpecBuffer has entries for the current line. TempTrackingSpecBuffer must already be filtered to the current line's Source Ref. No. before calling. The procedure first iterates TempTrackingSpecBuffer to determine which captions (LotNo, SerialNo, Quantity) are needed, then calls OnBeforeAddItemTrackingHeading / MasterDoc.AddItemTrackingHeading, and then iterates again calling OnBeforeAddItemTrackingLine / MasterDoc.AddItemTrackingLine for each entry. Declared as a public procedure (no access modifier) so that extension codeunits can call it when subscribing to OnBeforeAddItemTrackingLines.
CheckShipmentNo(Code[20]) : Text[50]
Summary: Returns the common shipment number if all sales invoice lines with a shipment number reference the same shipment; otherwise returns an empty string.
procedure CheckShipmentNo(DocHeaderNoPar: Code[20]): Text[50]
Parameters:
DocHeaderNoPar: The document number of the sales invoice header to check.
Returns: The shared Shipment No. (max 50 characters) when all lines refer to the same shipment, or empty text when lines differ or none have a shipment number.
Remarks: Called from CreateDocumentHeading to optionally add a shipment number heading row. Only lines with a non-empty Shipment No. are evaluated. Lines without a Shipment No. are ignored. The first differing Shipment No. causes an immediate return of empty text. Declared as a public procedure (no access modifier) to allow callers (e.g. extension reports) to reuse the shipment detection logic.
SetShowZeroQuantityLines(Boolean) :
Summary: Sets the GlobalShowZeroQuantityLines flag to control whether sales invoice lines with Quantity = 0 are shown.
procedure SetShowZeroQuantityLines(NewShowZeroQuantityLines: Boolean):
Parameters:
NewShowZeroQuantityLines: True to show zero-quantity lines; false to hide them.
Remarks: This setter provides programmatic access to the same flag exposed by the ShowZeroQuantityLines request page field. Only affects lines of type Fixed Asset, G/L Account, Item, Resource, Charge (Item), and Allocation Account. Lines with Attached to Line No. ≠0 inherit the hide decision recursively from their parent line. The flag can also be set via InitializeRequest (ShowZeroQuantityLinesFrom parameter) or OnUpdateRequestPageSettings.
Events
OnAfterGetCustomerCopies(Code[20], Integer) :
Summary: Raised after the local GetCustomerCopies procedure has determined the number of additional invoice copies for a customer.
[IntegrationEvent(false, false)]
local procedure OnAfterGetCustomerCopies(CustomerNo: Code[20]; var CustomerCopies: Integer):
Parameters:
CustomerNo: The customer number for which copies were looked up.CustomerCopies: The resolved customer copy count. Modify to override the default value retrieved from Customer."Invoice Copies".
Remarks: Customer."Invoice Copies" is marked obsolete (deprecated in BC29.5) and the comment in GetCustomerCopies states the field collection from customer will be removed with BC29.5. This event allows subscribers to provide the copy count via a custom mechanism after that removal. CustomerCopies is added to GlobalMasterDoc.GetNoOfCopies() + 1 to determine the CopyLoop2 range in the output pass.
OnAfterGetLineType(Record Sales Invoice Line, Enum KVSKBADocumentLineType) :
Summary: Raised at the end of the local GetLineType function, after the default KVSKBADocumentLineType has been determined from the sales invoice line type.
[IntegrationEvent(false, false)]
local procedure OnAfterGetLineType(SalesInvoiceLine: Record "Sales Invoice Line"; var KVSKBADocumentLineType: Enum "KVSKBADocumentLineType"):
Parameters:
SalesInvoiceLine: The sales invoice line record whose type was evaluated.KVSKBADocumentLineType: The resolved document line type. Modify to override the default type assignment.
Remarks: The default mapping is: Type = " " → CommentLine; KVSKBAHeading → HeaderLine; KVSKBASubtotal → SubtotalHeader; KVSKBABundle → BundleHeader; KVSKBAEndSubtotalBundle → SubtotalBundleFooter. Standard item/service lines default to StandardLine, then are overridden to NullPosition (based on KVSKBANotBillable / KVSKBANullPosition depending on CLEAN29 flag) or AlternativeLine when applicable. Use this event to add or override line type classification for custom line types.
OnUpdateRequestPageSettings(Enum KVSKBADocumentInitEventType, Boolean, Integer, Boolean, Boolean, Boolean, Boolean, Boolean, Option, Boolean, Boolean, Boolean) :
Summary: Raised during request page lifecycle events to allow customization of report options.
[IntegrationEvent(true, false)]
local procedure OnUpdateRequestPageSettings(InitEventType: Enum "KVSKBADocumentInitEventType"; RequestPageAlreadyOpen: Boolean; var NoOfCopies: Integer; var ShowInternalInfo: Boolean; var LogInteraction: Boolean; var PrintOnNotePaper: Boolean; var ShowZeroQuantityLines: Boolean; var DisplayAssemblyInfo: Boolean; var ShowItemTracking: Option; var DisplayAdditionalFeeNote: Boolean; var ShowTariffNo: Boolean; var ShowCountryOfOrigin: Boolean):
Parameters:
InitEventType: The lifecycle event type that triggered this call (OnOpenPage, OnClosePage, OnBeforeOnPreReport, OnAfterOnPreReport).RequestPageAlreadyOpen: Indicates whether the request page has already been opened in this session.NoOfCopies: The number of additional copies to print. Can be modified by subscribers.ShowInternalInfo: Specifies whether internal information is shown. Can be modified by subscribers.LogInteraction: Specifies whether the print action is logged as an interaction. Can be modified by subscribers.PrintOnNotePaper: Specifies whether the report prints on business letterhead paper. Can be modified by subscribers.ShowZeroQuantityLines: Specifies whether lines with Quantity = 0 are shown. Can be modified by subscribers.DisplayAssemblyInfo: Specifies whether assembly component lines are shown. Can be modified by subscribers.ShowItemTracking: Specifies whether item tracking is shown: None, DocLines, or ItemTrackingTable. Can be modified by subscribers.DisplayAdditionalFeeNote: Specifies whether additional fee notes are appended to the document totals. Can be modified by subscribers.ShowTariffNo: Specifies whether tariff numbers are printed. Can be modified by subscribers.ShowCountryOfOrigin: Specifies whether the country/region of origin is printed. Can be modified by subscribers.
Remarks: Unlike the SalesDraftInvoice report, OnUpdateRequestPageSettings on this report is a local procedure (not public) and carries no [Obsolete] attribute. It has 12 parameters. Also fires from OnAfterOnOpenRequestPage when a non-empty RequestPageCaption is set. There is no ArchiveDocument parameter on this report. Fired on OnOpenPage, OnClosePage, OnBeforeOnPreReport and OnAfterOnPreReport.
OnBeforeCreateDocumentHeader(Record KVSKBADocumentHeaderBuffer, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnBeforeCreateDocumentHeader(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var Handled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeCreateDocumentAddress(Record KVSKBADocumentHeaderBuffer, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnBeforeCreateDocumentAddress(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var Handled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddDocHeader(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnBeforeAddDocHeader(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeCreateDocumentHeading(Record KVSKBADocumentHeaderBuffer, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnBeforeCreateDocumentHeading(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var Handled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterCreateDocumentHeading(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnAfterCreateDocumentHeading(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPreDataItemDocHeaderText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnPreDataItemDocHeaderText(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPostDataItemDocHeaderText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnPostDataItemDocHeaderText(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPreDataItemDocFooterText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
OnPostDataItemDocFooterText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
OnDocFooterFinished(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
OnBeforeCheckForPageAndBlockBreak(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Boolean, Boolean, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckForPageAndBlockBreak(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var skipLine: Boolean; var isHandled: Boolean; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddDocumentLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddDocumentLine(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer"; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line" temporary; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddDocumentLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddDocumentLine(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer"; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line" temporary; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddTariffNoAndCountryOfOriginInfo(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc, Boolean, Boolean) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddTariffNoAndCountryOfOriginInfo(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"; var ShowCountryOfOrigin: Boolean; var ShowTariffNo: Boolean):
OnBeforeAddItemAttributeInfo(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddItemAttributeInfo(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddAssemblyInfo(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddAssemblyInfo(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddShipmentInfo(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddShipmentInfo(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddItemTrackingLines(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Record Tracking Specification, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddItemTrackingLines(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var TrackingSpecBuffer: Record "Tracking Specification" temporary; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddChargeAssignmentInfo(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Record Item Charge Assignment (Sales), Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddChargeAssignmentInfo(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var ItemChargeAssignment: Record "Item Charge Assignment (Sales)"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddDocLineInfo(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddDocLineInfo(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPreDataItemHeadLineText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnPreDataItemHeadLineText(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPostDataItemHeadLineText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnPostDataItemHeadLineText(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPreDataItemFootLineText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnPreDataItemFootLineText(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPostDataItemFootLineText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnPostDataItemFootLineText(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddSubscriptionTotalList(Record KVSKBADocumentHeaderBuffer, Boolean, Record Sales Invoice Header, Record Job Ledger Entry, Record Job Ledger Entry, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddSubscriptionTotalList(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var IsHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var TempContractBillingDetailsBuffer: Record "Job Ledger Entry" temporary; var TempContractBillingDetailsGroupingBuffer: Record "Job Ledger Entry" temporary; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddShipmentMethod(Record KVSKBADocumentHeaderBuffer, Record Shipment Method, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddShipmentMethod(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var ShipmentMethod: Record "Shipment Method"; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddShipmentMethod(Record KVSKBADocumentHeaderBuffer, Record Shipment Method, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddShipmentMethod(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var ShipmentMethod: Record "Shipment Method"; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddPaymentTerms(Record KVSKBADocumentHeaderBuffer, Record Payment Terms, Boolean, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddPaymentTerms(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var PaymentTerms: Record "Payment Terms"; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddPaymentTerms(Record KVSKBADocumentHeaderBuffer, Record Payment Terms, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddPaymentTerms(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var PaymentTerms: Record "Payment Terms"; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnCasePrintVatSpecificationOnCaseElse(Enum KVSKBAPrintVatSpecification, Record VAT Amount Line, Boolean) :
Summary: Raised in the else-branch of the VAT specification case statement, allowing subscribers to define custom suppression logic for non-standard KVSKBAPrintVatSpecification values.
[IntegrationEvent(false, false)]
local procedure OnCasePrintVatSpecificationOnCaseElse(PrintVatSpecification: Enum "KVSKBAPrintVatSpecification"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var SkipVATSpecVerification: Boolean):
Parameters:
PrintVatSpecification: The current value of CompanyInfo.KVSKBAPrintVatSpecificonDocs that matched the else-branch.TempVATAmountLine: The temporary VAT amount line buffer. Can be filtered or modified by subscribers.SkipVATSpecVerification: Set to true to break the VATSpec data item for this custom value.
Remarks: Unlike SalesDraftInvoice, the VATSpec suppression check on this report uses GetTotalVATAmount() directly (not a separate VATAmount variable). VATClauseSpec uses TempGlobalVATAmountLine itself (not a separate copy) for clause lookup. TempGlobalVATAmountLine is populated per-line in DocLine OnAfterGetRecord via InsertLine.
OnPreDataItemVATSpec(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record VAT Amount Line, Boolean, Boolean, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnPreDataItemVATSpec(var KVSKBADocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var SkipVATSpecVerification: Boolean; var IsHandled: Boolean; var KVSKBAMasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddDocVATSpecLine(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record VAT Amount Line, Boolean, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddDocVATSpecLine(var KVSKBADocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var IsHandled: Boolean; var KVSKBAMasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPreDataItemVATSpecLCY(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record VAT Amount Line, Boolean, Boolean, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnPreDataItemVATSpecLCY(var KVSKBADocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var SkipVATSpecVerification: Boolean; var IsHandled: Boolean; var KVSKBAMasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddDocVATSpecLineLCY(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record VAT Amount Line, Boolean, Text[50], Decimal, Decimal, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddDocVATSpecLineLCY(var KVSKBADocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var IsHandled: Boolean; var VALExchRate: Text[50]; var VALVATBaseLCY: Decimal; var VALVATAmountLCY: Decimal; var KVSKBAMasterDoc: Codeunit "KVSKBAMasterDoc"):
OnPreDataItemVATClauseSpec(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record VAT Amount Line, Boolean, Record VAT Clause, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnPreDataItemVATClauseSpec(var KVSKBADocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var IsHandled: Boolean; var VATClause: Record "VAT Clause"; var KVSKBAMasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddDocVATClause(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Record VAT Amount Line, Boolean, Record VAT Clause, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddDocVATClause(var KVSKBADocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var IsHandled: Boolean; var VATClause: Record "VAT Clause"; var KVSKBAMasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddItemTrackingHeading(Record KVSKBADocumentHeaderBuffer, Enum KVSKBADocumentTableType, Integer, Text[250], Text[50], Text[50], Text[30], Record Tracking Specification, Boolean, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddItemTrackingHeading(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; TableType: Enum "KVSKBADocumentTableType"; var LineNo: Integer; Format: Text[250]; var LotNoCaption: Text[50]; var SerialNoCaption: Text[50]; var QuantityCaption: Text[30]; var TempTrackingSpecification: Record "Tracking Specification" temporary; var SkipStandardCode: Boolean; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddItemTrackingLine(Record KVSKBADocumentHeaderBuffer, Enum KVSKBADocumentTableType, Integer, Text[250], Code[20], Text[250], Code[20], Record Tracking Specification, Text[30], Boolean, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddItemTrackingLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; TableType: Enum "KVSKBADocumentTableType"; var LineNo: Integer; Format: Text[250]; PositionNo: Code[20]; Description: Text[250]; ItemNo: Code[20]; var TempTrackingSpecification: Record "Tracking Specification" temporary; SortTrigger: Text[30]; var SkipStandardCode: Boolean; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddItemTrackingAppendix(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Option, Record Tracking Specification, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(true, false)]
local procedure OnBeforeAddItemTrackingAppendix(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var ShowItemTracking: Option; var TrackingSpecBuffer: Record "Tracking Specification" temporary; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddItemTrackingAppendixLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Boolean, Record Sales Invoice Header, Record Sales Invoice Line, Record Tracking Specification, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddItemTrackingAppendixLine(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; var isHandled: Boolean; var DocumentHeader: Record "Sales Invoice Header"; var DocumentLine: Record "Sales Invoice Line"; var TrackingSpecBuffer: Record "Tracking Specification" temporary; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterGetRecordCopyLoop(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordCopyLoop(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterGetRecordCopyLoop2(Record KVSKBADocumentHeaderBuffer, Record Sales Invoice Header, Codeunit KVSKBAMasterDoc, Integer) :
[IntegrationEvent(false, false)]
local procedure OnAfterGetRecordCopyLoop2(var DocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var DocumentHeader: Record "Sales Invoice Header"; var MasterDoc: Codeunit "KVSKBAMasterDoc"; CopyLoopNumber: Integer):
OnBeforeHideZeroQuantities(Record Sales Invoice Line, Boolean, Boolean) :
Summary: Raised in the local HideZeroQuantities function before the default zero-quantity hide logic is evaluated.
[IntegrationEvent(false, false)]
local procedure OnBeforeHideZeroQuantities(DocLine: Record "Sales Invoice Line"; var HideZeroQuantity: Boolean; var IsHandled: Boolean):
Parameters:
DocLine: The sales invoice line record being evaluated for hiding.HideZeroQuantity: Set to true to hide the line, false to show it. Only used when IsHandled is set to true.IsHandled: Set to true to use the value in HideZeroQuantity instead of the default logic.
Remarks: The default logic checks Attached to Line No. (recursively evaluating the parent) and then whether GlobalShowZeroQuantityLines is false and Quantity = 0 for applicable line types. Set IsHandled to true to fully replace the hide decision. This event is unique to the Sales Invoice report and has no equivalent in SalesDraftInvoice.
OnBeforeSetLanguageFormatAddress(Record Sales Invoice Header, Boolean) :
Summary: Raised before FormatAddress.SetLanguageCode is called with the sales invoice header's language code.
[IntegrationEvent(false, false)]
local procedure OnBeforeSetLanguageFormatAddress(DocHeader: Record "Sales Invoice Header"; var IsHandled: Boolean):
Parameters:
DocHeader: The sales invoice header record currently being processed.IsHandled: Set to true to skip the default FormatAddress.SetLanguageCode call.
Remarks: Fired in the DocHeader OnAfterGetRecord trigger before address formatting and document header/heading creation begin.
OnBeforeResetLanguageFormatAddress(Record Sales Invoice Header, Boolean) :
Summary: Raised before FormatAddress.SetLanguageCode is called with an empty string to reset the address language after heading creation.
[IntegrationEvent(false, false)]
local procedure OnBeforeResetLanguageFormatAddress(DocHeader: Record "Sales Invoice Header"; var GlobalIsHandled: Boolean):
Parameters:
DocHeader: The sales invoice header record currently being processed.GlobalIsHandled: Set to true to skip the default FormatAddress.SetLanguageCode('') reset call.
Remarks: Fired in the DocHeader OnAfterGetRecord trigger after CreateDocumentHeading and OnAfterCreateDocumentHeading have run.
OnAfterTransferTotalAmount(Record KVSKBADocumentHeaderBuffer, Record VAT Amount Line) :
Summary: Raised after all VAT total amounts have been transferred to the document header buffer in the DocLine OnPostDataItem trigger.
[IntegrationEvent(false, false)]
local procedure OnAfterTransferTotalAmount(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempVATAmountLine: Record "VAT Amount Line" temporary):
Parameters:
TempDocumentHeaderBuffer: The temporary document header buffer, already updated with NNC_VATAmt, NNC_TotalExclVAT, NNC_TotalInclVAT, NNC_TotalLCY, NNC_TotalLineAmt, NNC_TotalInvDiscAmt, and VAT Amount Caption.TempVATAmountLine: The temporary VAT amount line buffer containing the accumulated totals.
Remarks: Fired before MasterDoc.UpdateDocHeader. Unlike SalesDraftInvoice, there are no prepayment total fields on this report. Use this event to modify or extend the total fields on DocumentHeaderBuffer before they are committed.
OnBeforeAddTariffNoAndCountryOfOriginInfoDocLineText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddTariffNoAndCountryOfOriginInfoDocLineText(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddTariffNoAndCountryOfOriginInfoDocLineText(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddTariffNoAndCountryOfOriginInfoDocLineText(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddAssemblyInfoDocLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddAssemblyInfoDocLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddAssemblyInfoDocLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddAssemblyInfoDocLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddShipmentInfoDocLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddShipmentInfoDocLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddShipmentInfoDocLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddShipmentInfoDocLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnBeforeAddChargeAssignmentInfoDocLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnBeforeAddChargeAssignmentInfoDocLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterAddChargeAssignmentInfoDocLine(Record KVSKBADocumentHeaderBuffer, Record KVSKBADocumentLineBuffer, Record Sales Invoice Header, Record Sales Invoice Line, Codeunit KVSKBAMasterDoc) :
[IntegrationEvent(false, false)]
local procedure OnAfterAddChargeAssignmentInfoDocLine(var TempDocumentHeaderBuffer: Record "KVSKBADocumentHeaderBuffer" temporary; var TempDocumentLineBuffer: Record "KVSKBADocumentLineBuffer" temporary; DocumentHeader: Record "Sales Invoice Header"; DocumentLine: Record "Sales Invoice Line"; var MasterDoc: Codeunit "KVSKBAMasterDoc"):
OnAfterOnOpenRequestPage(Text, Record Sales Invoice Header) :
Summary: Raised at the end of the request page OnOpenPage trigger, allowing subscribers to override the report request page caption and apply additional document filtering.
[IntegrationEvent(false, false)]
local procedure OnAfterOnOpenRequestPage(var RequestPageCaption: Text; var SalesInvoiceHeader: Record "Sales Invoice Header"):
Parameters:
RequestPageCaption: The caption to set on the request page. Set to a non-empty text to override the default caption via Caption(RequestPageCaption).SalesInvoiceHeader: The sales invoice header data item record. Can be used to apply additional filters to the report data set (e.g. for embedding or context-specific filtering).
Remarks: This event is unique to the Sales Invoice report. Fired after OnUpdateRequestPageSettings and after the advanced option values are loaded in request page OnOpenPage. If RequestPageCaption is set to a non-empty value, the report request page caption is overridden using Caption(RequestPageCaption).
Protected Variables
Item
Type: Record Item
GlobalItemChargeAssignment
Type: Record Item Charge Assignment (Sales)
TempDocHeaderBuffer
Type: Record (KVSKBADocumentHeaderBuffer) temporary
TempDocLineBuffer
Type: Record (KVSKBADocumentLineBuffer) temporary
DocLineFormatRec
Type: Record (KVSKBADocumentLineFormat)
SalesSetup
Type: Record Sales & Receivables Setup
TempSalesLine
Type: Record Sales Line temporary
TempTrackingSpecBuffer
Type: Record Tracking Specification temporary
GlobalMasterDoc
Type: Codeunit (KVSKBAMasterDoc)
KFWMasterDocReportMgt
Type: Codeunit (KVSKBAMasterDocReportMgt)
ReportUtils
Type: Codeunit (KVSKBAReportUtilities)
GlobalDisplayAdditionalFeeNote
Type: Boolean
GlobalDisplayAssemblyInfo
Type: Boolean
GlobalLogInteraction
Type: Boolean
GlobalPrintOnNotePaper
Type: Boolean
GlobalShowCountryOfOrigin
Type: Boolean
GlobalShowInternalInfo
Type: Boolean
GlobalShowTariffNo
Type: Boolean
GlobalShowZeroQuantityLines
Type: Boolean
CrossRefNo
Type: Code[50]
GlobalNoOfCopies
Type: Integer
LineCounter
Type: Integer
ConsistingOfLbl
Type: Label
GlobalShowItemTracking
Type: Option
TextBuffer
Type: Text