Thursday, 21 February 2019

Control level validating in D365

[FormControlEventHandler(formControlStr(ProjJournalTransEmpl, ctrlProjQty), FormControlEventType::Validating)]
    public static void ctrlProjQty_OnValidating(FormControl sender, FormControlEventArgs e)
    {
        ProjJournalTrans            projJournalTransLocal;
        real                        chargeable, nonChargeable, tempQty, validQty;
        boolean                     flag;
        FormDataSource              projFds             =   sender.formRun().dataSource('ProjJournalTrans');
        ProjJournalTrans            projJournalTrans    =   projFds.cursor().orig();
        FormRun                     element             =   sender.formRun();
        FormRealControl             qty                 =   element.design().controlName("ctrlProjQty");
        FormControl                 postButton          =   element.design().controlName("PostJournal");
        ProjCategory                projCategory;


        while select  projJournalTransLocal
        where projJournalTransLocal.JournalId == projJournalTrans.JournalId
        && projJournalTransLocal.RecId      != projJournalTrans.RecId
        {
            projCategory    =   ProjCategory::find(projJournalTransLocal.CategoryId);
            if(projCategory.INTC_IsChargeable   ==  NoYes::No)
            {
                nonChargeable   +=   projJournalTransLocal.Qty;
            }
            else
            {
                chargeable      +=   projJournalTransLocal.Qty;
            }
        }
        validQty        =   qty.realValue() + (chargeable + nonChargeable);

        if(validQty != 0)
        {
            postButton.enabled(false);
            checkFailed(strFmt("Entered hours do not match the criteria : %1", validQty));
        }
        else
        {
            postButton.enabled(true);
        }
    }

No comments:

Post a Comment