Skip to content

[Event Request] Codeunit 11725 "Cash Document-Release CZP".CheckMandatoryFields #29851

@fridrichovsky

Description

@fridrichovsky

Why do you need this change?

We need skip CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Payment Purpose"); because our customization use different fill for payment purpose. It is reason why we don't want check this field. Event is prepared more generally for others. Event allows set fields for skip and developers can set each field what they want. So it is not necessary create variables for each skip.

Describe the request

local procedure CheckMandatoryFields(CashDocumentHeaderCZP: Record "Cash Document Header CZP")
    var
        //---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
        SkipTestFields: Dictionary of [Integer, Boolean];
        //---------------------------------------OnBeforeCheckMandatoryFields::END
    begin
        //---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
        OnBeforeCheckMandatoryFields(CashDocumentHeaderCZP, SkipTestFields);
        //---------------------------------------OnBeforeCheckMandatoryFields::END

        CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."No.");
        CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Posting Date");
        CashDocumentHeaderCZP.VATRounding();
        CashDocumentHeaderCZP.CalcFields(CashDocumentHeaderCZP."Amount Including VAT", CashDocumentHeaderCZP."Amount Including VAT (LCY)");
        CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Amount Including VAT");
        CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Amount Including VAT (LCY)");
        CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Document Date");
        //---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
        if not SkipTestFields.ContainsKey(CashDocumentHeaderCZP.FieldNo("Payment Purpose")) then
        //---------------------------------------OnBeforeCheckMandatoryFields::END
            CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Payment Purpose");
        if CashDocumentHeaderCZP."Currency Code" <> '' then
                CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Currency Factor");

        GetCashDesk(CashDocumentHeaderCZP."Cash Desk No.");
        case CashDeskCZP."Payed To/By Checking" of
            CashDeskCZP."Payed To/By Checking"::Warning:
                case CashDocumentHeaderCZP."Document Type" of
                    CashDocumentHeaderCZP."Document Type"::Receipt:
                        if (CashDocumentHeaderCZP."Received By" = '') or (CashDocumentHeaderCZP."Received From" = '') then
                            if not ConfirmManagement.GetResponseOrDefault(StrSubstNo(EmptyFieldQst, CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Received By"),
                                                                                    CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Received From")), false) then
                                Error('');
                    CashDocumentHeaderCZP."Document Type"::Withdrawal:
                        if (CashDocumentHeaderCZP."Paid By" = '') or (CashDocumentHeaderCZP."Paid To" = '') then
                            if not ConfirmManagement.GetResponseOrDefault(StrSubstNo(EmptyFieldQst, CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Paid By"),
                                                                                    CashDocumentHeaderCZP.FieldCaption(CashDocumentHeaderCZP."Paid To")), false) then
                                Error('');
                end;
            CashDeskCZP."Payed To/By Checking"::Blocking:
                case CashDocumentHeaderCZP."Document Type" of
                    CashDocumentHeaderCZP."Document Type"::Receipt:
                        begin
                            CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Received By");
                            CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Received From");
                        end;
                    CashDocumentHeaderCZP."Document Type"::Withdrawal:
                        begin
                            CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Paid By");
                            CashDocumentHeaderCZP.TestField(CashDocumentHeaderCZP."Paid To");
                        end;
                end;
        end;
    end;

    //---------------------------------------OnBeforeCheckMandatoryFields::BEGIN
    [IntegrationEvent(false, false)]
    local procedure OnBeforeCheckMandatoryFields(CashDocumentHeaderCZP: Record "Cash Document Header CZP"; var SkipTestFields: Dictionary of [Integer, Boolean])
    begin
    end;
    //---------------------------------------OnBeforeCheckMandatoryFields::END

Internal work item: AB#626304

Metadata

Metadata

Assignees

No one assigned

    Labels

    FinanceGitHub request for Finance areaevent-requestRequest for adding an eventships-in-future-updateFix ships in a future update

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions