Wednesday, 31 July 2019

Pre prompt, Pre run x++

//called before contract initialized

public void prePromptModifyContract()
{
SrsReportHelper::addParameterValueRangeToQuery(this.getFirstQuery(),tableNum(SSRSReportTest),fieldNum(SSRSReportTest, RecId),SysQuery::value(this.parmArgs().record().RecId));
}

//called before report get initialized (dp class)

protected void preRunModifyContract()
{
SSRSTestContract contract;

contract = this.parmReportContract().parmRdpContract() as SSRSTestContract;

contract.parmType(this.parmArgs().parm());
}

//to call report in controller

ssrsTestController.parmReportName(ssrsReportStr(Report, Design));

Sunday, 28 July 2019

passing args on_clicked event handler D365

[FormControlEventHandler(formControlStr(PSAContractStatus, INTC_UnitDetails), FormControlEventType::Clicked)]
    public static void INTC_UnitDetails_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        str         contractId;
        ProjTable   projTable;
        Args        args       = new Args();
        Form        formToCall = new Form('INTC_UnitDetailsTracking');

        FormButtonControl callerButton = sender as FormButtonControl;
        FormRun form = callerButton.formRun();

        //FormDataSource hcmWorker_ds = form.dataSource(formDataSourceStr(HcmWorker, HcmWorker)) as FormDataSource;
        //HcmWorker hcmWorker = hcmWorker_ds.cursor();

        contractId  =   form.design().controlName('ContractEdit').valueStr();
        select projTable   where projTable.ProjInvoiceProjId    ==  contractId;

        args.caller(form);
        args.object(formToCall );
        args.record(projTable);

        form = ClassFactory.formRunClass(args);
        form.init();
        form.run();
        form.wait();
    }

Tuesday, 23 July 2019

item on hand costPrice by site warehouse x++

class OnhandItemPriceTest
{
    public static void Main(Args _args)
    {
        InventDim       inventDim;
        InventDimParm   inventDimParm;
        InventOnHand    inventOnHand;
        InventSum       inventSum;

        select firstOnly inventSum where inventSum.ItemId == 'RSH 01';

        inventDim.InventLocationId  = "MainOffice";
        inventdim.InventSiteId      = "MainOffice";

        inventDimParm.initFromInventDim(inventDim);
        inventOnHand = InventOnHand::newItemDim(inventSum.ItemId, inventDim, inventDimParm);

        info(strfmt("%1", inventOnHand.costPricePcs()));
    }

}

on hand item unit x++

class ItemOnhandUnitTest
{       
    public static void main(Args _args)
    {
        UnitOfMeasureSymbol         unitIdSecondary;
        UnitOfMeasureSymbol         unitIdTemp;
        boolean                     allowEditUnit;

        [unitIdTemp, allowEditUnit] = InventOnhand::inventModuleUnitsSelectionToUnitIdAllowEdit(InventModuleUnits::InventoryUnit, "RSH 01", unitIdSecondary);

        info(strFmt("%1", unitIdTemp));
    }

}

Friday, 19 July 2019

tree lookup for reference group d365

//class declreation
EcoResCategoryHierarchy         procurementCategoryHierarchy;
SalesTableForm                  salesTableForm;

//form init
public void init()
    {
        super();
        procurementCategoryHierarchy    = EcoResCategoryHierarchy::find(EcoResCategoryHierarchyRole::getHierarchiesByRole(EcoResCategoryNamedHierarchyRole::Procurement).CategoryHierarchy);
        salesTableForm                  = SalesTableForm::construct(SalesTableFormId::None, element.args().record());
    }

//field methods under datasource
[DataField]
        class ProcurementCategoryId
        {
            public Common lookupReference(FormReferenceControl _formReferenceControl)
            {
                Common ret;
                   
                ret = EcoResCategory::lookupCategoryHierarchy(
                        _formReferenceControl,
                        procurementCategoryHierarchy,
                        false,
                        true,
                        true,
                        null,
                        CompanyInfo::find().RecId,//purchReqLine.BuyingLegalEntity,
                        CompanyInfo::find().RecId//purchReqLine.ReceivingOperatingUnit
                    );
                   
                return ret;
            }

            public Common resolveReference(FormReferenceControl _formReferenceControl)
            {
                Common ret;
           
                ret = EcoResCategory::resolveCategoryHierarchy(
                        _formReferenceControl,
                        procurementCategoryHierarchy,
                        false,
                        true,
                        true
                    );
           
                return ret.RecId? ret : null;
            }

        }

//Item modified
public void modified()
{
EcoResProductCategory       ecoresCatergory;
InventTable                 inventTable;
super();
select inventTable
join ecoresCatergory
where inventTable.ItemId ==  INTC_MaterialTakeOffTable.ItemId
&& ecoresCatergory.Product ==  inventTable.Product;

INTC_MaterialTakeOffTable.ProcureCategoryRecId    =   ecoresCatergory.Category;
}

Thursday, 18 July 2019

currency exchange rate in D365

[Extensionof(tableStr(Currency))]
final class Currency_Extension
{
    public static ExchRate exchRate(CurrencyCode            _currencyCode,
                                    TransDate               _exchRateDate            = systemDateGet(),
                                    ExchRatesTriangulation  _exchRatesTriangulation  = UnknownNoYes::Unknown,
                                    boolean                 _showerror               = true,
                                    GovernmentExchRate      _governmentExchRate      = NoYes::No)
   
    {
        ExchangeRateHelper exchangeRateHelper = ExchangeRateHelper::newExchangeDate( Ledger::current(),
                                                                                     _currencyCode,
                                                                                     _exchRateDate);
        if (!_showerror)
        {
            exchangeRateHelper.parmErrorType(AifErrorType::None);
        }

        return exchangeRateHelper.getExchangeRate1();
    }

}

Monday, 15 July 2019

OnLookup D365

class INTC_JournalNameLookup_EventHandler
{
    [FormControlEventHandler(formControlStr(ProjParameters, ProjParameters_INTC_JournalName), FormControlEventType::Lookup)]
    public static void ProjParameters_INTC_JournalName_OnLookup(FormControl sender, FormControlEventArgs e)
    {
        FormRun                     element = sender.formRun();
        SysTableLookup              sysTableLookup  = SysTableLookup::newParameters(tableNum(LedgerJournalName),sender);
        Query                       query;
        QueryBuildDataSource        qbds;

        sysTableLookup.addLookupfield(fieldnum(LedgerJournalName,JournalName),true);
        sysTableLookup.addLookupfield(fieldnum(LedgerJournalName,Name));

        query = new Query();
        qbds  = query.addDataSource(tableNum(LedgerJournalName));

        sysTableLookup.parmQuery(query);
        sysTableLookup.parmUseLookupValue(true);
        sysTableLookup.performFormLookup();

        FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
        ce.CancelSuperCall();
    }

}

Tuesday, 2 July 2019

OnInitialize - access form controls in D365

go to Form- Events - OnInitialize - copy event handler

[FormEventHandler(formStr(ProjTableCreate), FormEventType::Initialized)]
    public static void ProjTableCreate_OnInitialized(xFormRun sender, FormEventArgs e)
    {
        MenuItemName        menuItemName    =   sender.args().menuItemName();

        if(menuItemName ==  "ProjTableCreateSubproject")
        {
            sender.design().controlName('ProjTable_INTC_Code').visible(false);
        }
        else
        {
            sender.design().controlName('ProjTable_INTC_Code').visible(true);
        }
    }