Thursday, 11 August 2022

Workflow validation before submit x++ D365 CoC

 [ExtensionOf(classStr(CustFreeInvoiceWorkflow))]

final class XX_CustFreeInvoiceWorkflow_Extension

{

    public static void main(Args _args)

    {

        CustFreeInvoiceWorkflow custFreeInvoiceWorkflow = CustFreeInvoiceWorkflow::construct();

        CustInvoiceTable        custInvoiceTable;

        FormDataSource          custInvoiceTableDataSource;


        if (_args)

        {

            custInvoiceTable = _args.record();

            custInvoiceTableDataSource = FormDataUtil::getFormDataSource(custInvoiceTable);


            if(custInvoiceTable)

            {

                CustInvoiceLine     custInvoiceLine;

                MainAccountNum      mainAccountNum;

                MainAccount         mainAccount;

                

                while select custInvoiceLine where custInvoiceLine.ParentRecId == custInvoiceTable.RecId

                {

                    if(MainAccount::findByMainAccountId(LedgerDimensionFacade::getDisplayValueForLedgerDimension(custInvoiceLine.LedgerDimension)).XX_IsMandatory == true)

                    {

                        boolean         validated, contractCat, customers, projects, division, site;


                        contractCat =   XX_CustInvoiceLineDimension::getValidated(custInvoiceLine.DefaultDimension, "ContractCategory");

                        customers   =   XX_CustInvoiceLineDimension::getValidated(custInvoiceLine.DefaultDimension, "Customers");

                        projects    =   XX_CustInvoiceLineDimension::getValidated(custInvoiceLine.DefaultDimension, "Projects");

                        division    =   XX_CustInvoiceLineDimension::getValidated(custInvoiceLine.DefaultDimension, "Division");

                        site        =   XX_CustInvoiceLineDimension::getValidated(custInvoiceLine.DefaultDimension, "Site");


                        if(contractCat || customers || projects || division || site)

                        {

                            throw error("[ContractCategory, Customers, Projects, Division, Site] dimensions are mandatory in line to submit");

                        }

                    }

                }

            }

        }

        next main(_args);

    }


}

No comments:

Post a Comment