microsoft / ALAppExtensions

Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
MIT License
770 stars 610 forks source link

[Event Request] Table 36 "Sales Header".InitRecord #14034

Closed fridrichovsky closed 3 years ago

fridrichovsky commented 3 years ago

Please add new event.

    procedure InitRecord()
    var
        ArchiveManagement: Codeunit ArchiveManagement;
        IsHandled: Boolean;
    begin
        GetSalesSetup;
        IsHandled := false;
        OnBeforeInitRecord(Rec, IsHandled, xRec);
#if CLEAN19
        if not IsHandled then
#else
        if not IsHandled then begin
            // NAVCZ
            GLSetup.Get();
            // NAVCZ
#endif
            case "Document Type" of
                "Document Type"::Quote, "Document Type"::Order:
                    begin
                        NoSeriesMgt.SetDefaultSeries("Posting No. Series", SalesSetup."Posted Invoice Nos.");
                        NoSeriesMgt.SetDefaultSeries("Shipping No. Series", SalesSetup."Posted Shipment Nos.");
                        if "Document Type" = "Document Type"::Order then begin
                            NoSeriesMgt.SetDefaultSeries("Prepayment No. Series", SalesSetup."Posted Prepmt. Inv. Nos.");
                            NoSeriesMgt.SetDefaultSeries("Prepmt. Cr. Memo No. Series", SalesSetup."Posted Prepmt. Cr. Memo Nos.");
#if not CLEAN19
                            // NAVCZ
                            "Prepayment Type" := GLSetup."Prepayment Type";
                            PrepmtValidation;
                            // NAVCZ
#endif
                        end;
                    end;
                "Document Type"::Invoice:
                    begin
                        if ("No. Series" <> '') and
                           (SalesSetup."Invoice Nos." = SalesSetup."Posted Invoice Nos.")
                        then
                            "Posting No. Series" := "No. Series"
                        else
                            NoSeriesMgt.SetDefaultSeries("Posting No. Series", SalesSetup."Posted Invoice Nos.");
                        if SalesSetup."Shipment on Invoice" then
                            NoSeriesMgt.SetDefaultSeries("Shipping No. Series", SalesSetup."Posted Shipment Nos.");
#if not CLEAN19
                        // NAVCZ
                        NoSeriesMgt.SetDefaultSeries("Prepayment No. Series", SalesSetup."Posted Prepmt. Inv. Nos.");
                        NoSeriesMgt.SetDefaultSeries("Prepmt. Cr. Memo No. Series", SalesSetup."Posted Prepmt. Cr. Memo Nos.");
                        "Prepayment Type" := GLSetup."Prepayment Type";
                        PrepmtValidation;
                        // NAVCZ
#endif
                    end;
                "Document Type"::"Return Order":
                    begin
                        NoSeriesMgt.SetDefaultSeries("Posting No. Series", SalesSetup."Posted Credit Memo Nos.");
                        NoSeriesMgt.SetDefaultSeries("Return Receipt No. Series", SalesSetup."Posted Return Receipt Nos.");
                    end;
                "Document Type"::"Credit Memo":
                    begin
                        if ("No. Series" <> '') and
                           (SalesSetup."Credit Memo Nos." = SalesSetup."Posted Credit Memo Nos.")
                        then
                            "Posting No. Series" := "No. Series"
                        else
                            NoSeriesMgt.SetDefaultSeries("Posting No. Series", SalesSetup."Posted Credit Memo Nos.");
                        if SalesSetup."Return Receipt on Credit Memo" then
                            NoSeriesMgt.SetDefaultSeries("Return Receipt No. Series", SalesSetup."Posted Return Receipt Nos.");
                    end;
            end;
            //----------------------------------------OnInitRecordOnAfterSetNoSeries:BEGIN
            OnInitRecordOnAfterSetNoSeries(Rec, xRec);
            //----------------------------------------OnInitRecordOnAfterSetNoSeries:END
#if not CLEAN19
        end;
#endif

        InitShipmentDate();

        InitPostingDate();

        if SalesSetup."Default Posting Date" = SalesSetup."Default Posting Date"::"No Date" then
            "Posting Date" := 0D;

        "Order Date" := WorkDate;
        "Document Date" := WorkDate;
        if "Document Type" = "Document Type"::Quote then
            CalcQuoteValidUntilDate;
#if not CLEAN17
        // NAVCZ
        case SalesSetup."Default VAT Date" of
            SalesSetup."Default VAT Date"::"Posting Date":
                "VAT Date" := "Posting Date";
            SalesSetup."Default VAT Date"::"Document Date":
                "VAT Date" := "Document Date";
            SalesSetup."Default VAT Date"::Blank:
                "VAT Date" := 0D;
        end;
        // NAVCZ
#endif

        IF "Sell-to Customer No." <> '' THEN
            GetCust("Sell-to Customer No.");
        UpdateLocationCode(Cust."Location Code");

        if IsCreditDocType then begin
            GLSetup.Get();
            Correction := GLSetup."Mark Cr. Memos as Corrections";
#if not CLEAN17
            // NAVCZ
            "Credit Memo Type" := "Credit Memo Type"::"Corrective Tax Document";
            // NAVCZ
#endif
        end;

        InitPostingDescription();

        UpdateOutboundWhseHandlingTime;

        "Responsibility Center" := UserSetupMgt.GetRespCenter(0, "Responsibility Center");
        "Doc. No. Occurrence" := ArchiveManagement.GetNextOccurrenceNo(DATABASE::"Sales Header", "Document Type".AsInteger(), "No.");

#if not CLEAN18
        // NAVCZ
        if "Document Type" in ["Document Type"::Quote, "Document Type"::Order, "Document Type"::Invoice,
                               "Document Type"::"Blanket Order"]
        then
            if RespCenter.Get("Responsibility Center") then
                UpdateBankInfoFromRecord(RespCenter)
            else begin
                CompanyInfo.Get();
                UpdateBankInfoFromRecord(CompanyInfo);
            end;

#if not CLEAN17
        Validate("Credit Memo Type");
#endif
        // NAVCZ

#endif
        OnAfterInitRecord(Rec);
    end;

    //----------------------------------------OnInitRecordOnAfterSetNoSeries:BEGIN
    [IntegrationEvent(false, false)]
    local procedure OnInitRecordOnAfterSetNoSeries(var SalesHeader: Record "Sales Header"; xSalesHeader: Record "Sales Header")
    begin
    end;
    //----------------------------------------OnInitRecordOnAfterSetNoSeries:END       
JesperSchulz commented 3 years ago

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.