DateTime Handlings in AX 2012 / D365

static void AlfTimeAdd(Args _args)
    TransDateTime    d = DateTimeUtil::getSystemDateTime();
    TransDate       d3 = today();
    TransDateTime    d1,d2;
    print d;
    print d3;
    d1 = DateTimeUtil::addHours(d,4); // To add 4 hours from current time
    print d1;
    d2 = Datetimeutil::newDateTime(d3,7.5*60*60); // I need today 7.30 Am
    print d2;
    print DateTimeUtil::addHours(d,4);
    print DateTimeUtil::addDays(d,4);
    print DateTimeUtil::addMinutes(d,4);
    print DateTimeUtil::addMonths(d,4);
    print DateTimeUtil::addYears(d,4);

X++ Code to handle workflow event hander for current record


public void changeRequested(WorkflowElementEventArgs  _workflowElementEventArgs)

.parmRecId(), true));
    DpayWorkerReqTable.Status = DpayWorkflowStatus::NotSubmitted;

ERROR : Update is not allowed without specifying ValidTimeStateUpdateMode in AX 2012 / D365


Add tableName.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);

inside the tts.

static void Job511(Args _args)
    EmplContract     emplContract;
    utcdatetime minDateTime = DateTimeUtil::minValue() , maxDateTime = DateTimeUtil::maxValue();
    While select forUpdate
        * from emplContract
            where emplContract.AnnualLeave == “”
        emplContract.AnnualLeave = “اجازة السنوية”;

ValidTimeState in child table relation in AX 2012 / D365


   while select validTimeState(AsOnToday) * from hcmEmployment join hcmWorker
        where  hcmWorker.RecId == hcmEmployment .Worker &&
      hcmWorker.PersonnelNumber == “1269”
        print hcmEmployment .ValidFrom;


User ID to user name or Worker Name in AX 2012 / D365


Worker = HcmWorker::find(DirPersonUser::findUserWorkerReference(UserId));


    public display Name userName()
    DirPartyName        partyName;

    partyName = DirPersonUser::userId2Name(this.UserId);
    if (!partyName)
        partyName = (select firstonly Name from userInfo where userInfo.Id == this.UserId).Name;
    if (!partyName)
        partyName = this.UserId;
    return partyName;


Relation between HcmPositionDetail, HcmPositionWorkerAssignment, HcmWorker for query class in AX 2012 / D365

Hi, Query                   query = new Query(); QueryRun                queryRun; QueryBuildDataSource    qbdsHcmWorker, qbdsHcmPosition, qbdsHcmPositionDetail, qbdsHcmPositionWorkerAssign; QueryBuildRange         qbrWorker,qbrdDept; HcmPositionDetail       hcmPositionDetail; HcmWorker               hcmWorker; ; qbdsHcmWorker = query.addDataSource(tableNum(HcmWorker)); qbdsHcmWorker.addRange(fieldnum(HcmWorker,PersonnelNumber)).value(‘1020’); qbdsHcmPositionWorkerAssign = qbdsHcmWorker.addDataSource(tableNum(HcmPositionWorkerAssignment)); qbdsHcmPositionWorkerAssign.relations(false); […]

Sum() in Query class in AX 2012 / D365

Hi, To perform sum() function in Query Class. qbdsOverTimeTrans.addSelectionField( fieldnum( DAPOvertimeTransactions, Amount), SelectionField::Sum); Regards,

QueryBuildRange class to filter with never date in AX 2012 or D365

Hi, qbdsHcmPositionDetail.addRange(fieldnum(HcmPositionDetail,ValidTo)).value(date2str(dateMax(), 321,  DateDay::Digits2, DateSeparator::Hyphen, DateMonth::Digits2, DateSeparator::Hyphen, DateYear::Digits4));This is used for Valid Time State Tables particularly. Regards,

Greater than or euqal to / Less than or equal to (<= or >=) in Query class in AX 2012 or D365

Hi, Greater than or equal to:queryBuildDataSource.addRange(fieldNum(HcmPositionWorkerAssignment,ValidTo));        queryBuildRange.value(SysQuery::range(today(), dateMax())); or queryBuildDataSource.addRange(fieldNum(HcmPositionWorkerAssignment,ValidTo));        queryBuildRange.value((queryRange(today(), dateMax())); Less than or equal to:  queryBuildDataSource.addRange(fieldNum(HcmPositionWorkerAssignment,ValidTo));        queryBuildRange.value(SysQuery::range( dateNull(), today())); or queryBuildDataSource.addRange(fieldNum(HcmPositionWorkerAssignment,ValidTo));        queryBuildRange.value((queryRange(dateNull(), today()));  Regards,

Time null in AX 2012 / D365

Hi, There is no timeNull() unline dateNull() in Ax 2012, where as there is an work around to handle this as timeMin() or TimeMax(). DateTimeUtil::time(dateTimeUtil::minTime());  // prints 12:00 AMDateTimeUtil::time(dateTimeUtil::maxTime());  // prints 11:59 PM Regards,

Getting current user languague in SSRS in AX 2012

Hi, =iif(Parameters!AX_RenderingCulture.Value = “ar”,FALSE,TRUE) Note:  No needs to validate using controller class or passing the values in DP class for this. In my case, I needs to change the order ofcolumn of the table in SSRS without reference to arabic from right to left and rest left to right. So I added visibity based on […]