Wednesday, 6 February 2019

dialog field custom lookup in D365

class INTC_HourJournalDialog extends RunBase
{
    DialogField                 fieldTimesheetNbr;
    DialogField                 fieldFromDate;
    DialogField                 fieldToDate;
    DialogRunbase               dialog;
    DialogGroup                 dialogGroup;
    TSTimesheetTable            timesheetTable;
    TSTimesheetNbr              timesheetNumber;
    TransDate                   fromDate, toDate;
    FormBuildStringControl      timesheetNbrControl;

    public container pack()
    {
        return conNull();
    }

    public boolean unpack(container packedClass)
    {
        return true;
    }

    public void timesheetNbrLookup(FormStringControl _control)
    {
        SysTableLookup              sysTableLookUp;
        QueryBuildDataSource        qbds;
        Query                       query = new Query();

        qbds            = query.addDataSource(tableNum(TSTimesheetTable));
        sysTableLookUp  = SysTableLookup::newParameters(tableNum(TSTimesheetTable), _control, true);

        sysTableLookUp.addLookupfield(fieldNum(TSTimesheetTable, TimesheetNbr));
        sysTableLookUp.addLookupfield(fieldNum(TSTimesheetTable, PeriodFrom));
        sysTableLookUp.addLookupfield(fieldNum(TSTimesheetTable, PeriodTo));
        sysTableLookUp.addLookupfield(fieldNum(TSTimesheetTable, ApprovalStatus));

        qbds.addRange(fieldnum(TSTimesheetTable,ApprovalStatus)).value(queryvalue(TSAppStatus::Approved));

        sysTableLookUp.parmQuery(query);
        sysTableLookUp.performFormLookup();
    }

    public Object dialog()
    {
        dialog = super();

        dialog.caption( 'Create Hour Journal');

        dialogGroup     =   dialog.addGroup("Main Group");
        dialogGroup.columns(2);
       
        fieldFromDate       = dialog.addField(extendedTypeStr(TransDate), 'From date');
        fieldToDate         = dialog.addField(extendedTypeStr(TransDate), 'To date');
        fieldTimesheetNbr   = dialog.addField(extendedTypeStr(TSTimesheetNbr), 'Timesheet number');

        timesheetNbrControl =   fieldTimesheetNbr.control();
        timesheetNbrControl.registerOverrideMethod(methodstr(FormStringControl, lookUp),methodstr(INTC_HourJournalDialog, timesheetNbrLookup),this);

        return dialog;
    }

    public boolean getFromDialog()
    {
        timesheetNumber =   fieldTimesheetNbr.value();
        fromDate        =   fieldFromDate.value();
        toDate          =   fieldToDate.value();
        return super();
    }

    public void run()
    {
        INTC_HourJournalCreate      journalCreate   =   new INTC_HourJournalCreate();
        timesheetTable = TSTimesheetTable::find(timesheetNumber);
        if (timesheetTable)
        {
            journalCreate.getTimesheet(fromDate, toDate, timesheetNumber);
            info("Approved Hour Journal/Journals Created");
        }
        else
        {
            throw error(strFmt("Timesheet - %1 not found!", timesheetNumber));
        }
    }

    public static void main(Args _args)
    {
        INTC_HourJournalDialog hourJournalDialog = new INTC_HourJournalDialog();

        if (hourJournalDialog.prompt())
        {
            hourJournalDialog.run();
        }
    }

}

No comments:

Post a Comment