Skip to content

[W1][Table][23][Sales Header] OnCalcQuoteValidUntilDateOnBeforeAssign or OnBeforeCalcQuoteValidUntilDate #29741

@dannoe

Description

@dannoe

Why do you need this change?

In our solution we are storing the validity calculation formula per sales header record and are still using our own "valid until" fields. We now want to integrate as much as possible into the base app, so we need an event to override the validity calculation from the sales setup.

Below are two different suggestions how to implement this. We tried to avoid the generic IsHandled pattern.

Describe the request

Suggestions 1

    local procedure CalcQuoteValidUntilDate()
    var
        BlankDateFormula: DateFormula;
+       QuoteValidityCalculation: DateFormula;
    begin
        GetSalesSetup();
+       QuoteValidityCalculation := SalesSetup."Quote Validity Calculation";
+       OnCalcQuoteValidUntilDateOnBeforeAssign(Rec, xRec, QuoteValidityCalculation, UpdateDocumentDate);
+       if  QuoteValidityCalculation <> BlankDateFormula then
+           "Quote Valid Until Date" := CalcDate(QuoteValidityCalculation , "Document Date");
-       if SalesSetup."Quote Validity Calculation" <> BlankDateFormula then
-           "Quote Valid Until Date" := CalcDate(SalesSetup."Quote Validity Calculation", "Document Date");
    end;

    [IntegrationEvent(false, false)]
    local procedure OnCalcQuoteValidUntilDateOnBeforeAssign(var SalesHeader: Record "Sales Header"; xSalesHeader: Record "Sales Header"; var QuoteValidityCalculation: DateFormula; UpdateDocumentDate: Boolean)
    begin
    end;

Suggestions 2

    local procedure CalcQuoteValidUntilDate()
    var
        BlankDateFormula: DateFormula;
+       QuoteValidUntilDate: Date;
    begin
+       QuoteValidUntilDate := 0D;
+       OnBeforeCalcQuoteValidUntilDate(Rec, xRec, QuoteValidUntilDate, UpdateDocumentDate);
+       if  QuoteValidUntilDate <> 0D then begin
+           "Quote Valid Until Date" := QuoteValidUntilDate;
+           exit;
+      end;

        GetSalesSetup();
        if SalesSetup."Quote Validity Calculation" <> BlankDateFormula then
           "Quote Valid Until Date" := CalcDate(SalesSetup."Quote Validity Calculation", "Document Date");
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeCalcQuoteValidUntilDate(var SalesHeader: Record "Sales Header"; xSalesHeader: Record "Sales Header"; var QuoteValidUntilDate: Date; UpdateDocumentDate: Boolean)
    begin
    end;

Internal work item: AB#622577

Metadata

Metadata

Assignees

No one assigned

    Labels

    SCMGitHub request for SCM areaevent-requestRequest for adding an event

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions