Codeunit 60 "Sales-Calc. Discount"
Base Application · Microsoft.Sales.Document
Across versions
- BC23-27present
- BC281 events added, 1 events removed
- BC29-30unchanged
Neighbourhood 24 connected objects and pages
Base Application · Microsoft.Sales.Document · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| TableNo | Sales Line |
| Permissions | tabledata “Sales Header” = rm, tabledata “Sales Line” = rm |
Events published
OnBeforeCalcSalesDiscount(var SalesHeader: Record "Sales Header"; var IsHandled: Boolean; var SalesLine: Record "Sales Line"; var UpdateHeader: Boolean)(integration)OnAfterCalcSalesDiscount(var SalesHeader: Record "Sales Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var SalesLine2: Record "Sales Line")(integration)- subscribers: Codeunit 5477 “Sales Invoice Aggregator” OnAfterCalculateSalesDiscountOnSalesHeader, Codeunit 5496 “Graph Mgt - Sales Order Buffer” OnAfterCalculateSalesDiscountOnSalesHeader, Codeunit 5506 “Graph Mgt - Sales Quote Buffer” OnAfterCalculateSalesDiscountOnSalesHeader, Codeunit 5508 “Graph Mgt - Sal. Cr. Memo Buf.” OnAfterCalculateSalesDiscountOnSalesHeader
OnAfterCustInvDiscRecExists(var SalesHeader: Record "Sales Header"; var CustInvDisc: Record "Cust. Invoice Disc."; InvDiscBase: Decimal; ChargeBase: Decimal; var ShouldGetCustInvDisc: Boolean)(integration)OnAfterValidateSalesLine2Quantity(SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; CustInvoiceDisc: Record "Cust. Invoice Disc.")(integration)OnBeforeCalculateIncDiscForHeader(var TempSalesHeader: Record "Sales Header" temporary; var IsHandled: Boolean; var SalesLine: Record "Sales Line"; var TempSalesLine: Record "Sales Line" temporary; var UpdateHeader: Boolean)(integration)OnBeforeSetSalesLineServiceCharge(SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; CustInvoiceDisc: Record "Cust. Invoice Disc."; var IsHandled: Boolean)(integration)OnBeforeUpdateSalesHeaderInvoiceDiscount(var CustInvoiceDisc: Record "Cust. Invoice Disc."; var SalesHeader: Record "Sales Header"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var UpdateHeader: Boolean; var IsHandled: Boolean)(integration)OnCalculateInvoiceDiscountOnBeforeCurrencyInitialize(var CustomerPostingGroup: Record "Customer Posting Group")(integration)OnCalculateInvoiceDiscountOnBeforeCheckCustInvDiscServiceCharge(var CustInvoiceDisc: Record "Cust. Invoice Disc."; var SalesHeader: Record "Sales Header"; CurrencyDate: Date; ChargeBase: Decimal; var CustInvDiscFound: Boolean)+ BC28 − BC28 (integration)OnCalculateInvoiceDiscountOnBeforeCustInvDiscRecExists(var SalesHeader: Record "Sales Header"; var SalesLine2: Record "Sales Line"; var UpdateHeader: Boolean; var InvDiscBase: Decimal; var ChargeBase: Decimal; var TempVATAmountLine: Record "VAT Amount Line" temporary; var IsHandled: Boolean)(integration)OnCalculateInvoiceDiscountOnBeforeSalesLine2FindFirst(var SalesLine2: Record "Sales Line")(integration)OnCalculateInvoiceDiscountOnBeforeSalesLineInsert(var SalesLine: Record "Sales Line"; SalesHeader: Record "Sales Header")(integration)OnBeforeCalculateWithSalesHeader(var SalesLine: Record "Sales Line"; var TempSalesHeader: Record "Sales Header" temporary; var TempSalesLine: Record "Sales Line"; var UpdateHeader: Boolean; var IsHandled: Boolean)(integration)OnCalculateInvoiceDiscountOnBeforeSalesLine2DeleteTrue(UpdateHeader: Boolean; var SalesLine2: Record "Sales Line"; var IsHandled: Boolean)(integration)OnRunOnBeforeCalculateInvoiceDiscount(var SalesLine: Record "Sales Line"; var TempSalesHeader: Record "Sales Header" temporary; var TempSalesLine: Record "Sales Line" temporary; var UpdateHeader: Boolean; var IsHandled: Boolean)(integration)OnCalculateInvoiceDiscountOnBeforeUpdateSalesLine2(var SalesHeader: Record "Sales Header"; var SalesLine2: Record "Sales Line"; UpdateHeader: Boolean; CustInvDisc: Record "Cust. Invoice Disc."; var IsHandled: Boolean)(integration)OnBeforeCustInvDiscRecExists(InvDiscCode: Code[20]; var Result: Boolean; var IsHandled: Boolean)(integration)OnBeforeCalculateInvoiceDiscount(var SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line"; var UpdateHeader: Boolean)(integration)
Procedures
CustInvDiscRecExists(InvDiscCode: Code[20]): Boolean: Checks whether a customer invoice discount record exists for the specified code.CalculateWithSalesHeader(var TempSalesHeader: Record "Sales Header"; var TempSalesLine: Record "Sales Line"): Calculates invoice discount using the provided sales header without updating it.CalculateInvoiceDiscountOnLine(var SalesLineToUpdate: Record "Sales Line"): Calculates and applies invoice discount to a single sales line.CalculateIncDiscForHeader(var TempSalesHeader: Record "Sales Header"): Calculates invoice discount for a sales header if automatic calculation is enabled.UpdatePrepmtLineAmount(SalesHeader: Record "Sales Header"): Updates prepayment line amounts when invoice discount would exceed remaining non-prepaid amount.
Plus 3 local procedures.
Triggers
OnRun
Relations
- runs on Table 37 “Sales Line”
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 56 “Sales - Calc Discount By Type” (1 call:
CalculateInvoiceDiscount → ResetRecalculateInvoiceDisc) - Codeunit 65 “Discount Notification Mgt.” (1 call:
CalculateInvoiceDiscount → NotifyAboutMissingSetup)
Called by
- Codeunit 56 “Sales - Calc Discount By Type” (2 calls:
ApplyInvDiscBasedOnPct → (object),ApplyInvDiscBasedOnPct → CalculateInvoiceDiscountOnLine) - Codeunit 1002 “Job Create-Invoice” (1 call:
CalculateInvoiceDiscount → (object)) - Codeunit 1371 “Sales Batch Post Mgt.” (1 call:
CalculateInvoiceDiscount → (object)) - Codeunit 228 “Test Report-Print” (1 call:
CalcSalesDiscount → (object)) - Codeunit 229 “Document-Print” (1 call:
CalcSalesDisc → (object)) - Codeunit 414 “Release Sales Document” (1 call:
Code → (object)) - Codeunit 57 “Document Totals” (1 call:
CalculateSalesSubPageTotals → CalculateInvoiceDiscountOnLine) - Codeunit 61 “Sales-Disc. (Yes/No)” (1 call:
OnRun → (object)) - Codeunit 64 “Sales-Get Shipment” (1 call:
CalcInvoiceDiscount → CalculateInvoiceDiscountOnLine) - Codeunit 80 “Sales-Post” (1 call:
CalcInvDiscount → (object)) - Page 46 “Sales Order Subform” (1 call:
CalcInvDisc → CalculateInvoiceDiscountOnLine) - Page 47 “Sales Invoice Subform” (1 call:
CalcInvDisc → CalculateInvoiceDiscountOnLine) - Page 6631 “Sales Return Order Subform” (1 call:
CalcInvDisc → (object)) - Page 95 “Sales Quote Subform” (1 call:
CalcInvDisc → CalculateInvoiceDiscountOnLine) - Page 96 “Sales Cr. Memo Subform” (1 call:
CalcInvDisc → CalculateInvoiceDiscountOnLine) - Report 295 “Combine Shipments” (1 call:
FinalizeSalesInvHeader → (object)) - Report 6653 “Combine Return Receipts” (1 call:
FinalizeSalesInvHeader → (object)) - Table 36 “Sales Header” (1 call:
CalcInvDiscForHeader → CalculateIncDiscForHeader)
Countries that replace it
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: "codeunit", object_name: "Sales-Calc. Discount"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.