Showing posts with label AX 2012. Show all posts
Showing posts with label AX 2012. Show all posts

Thursday, April 14, 2016

After installing client on Windows 8.1 it crashes

During client installation we faced a issue when AX client gets crashed every time we try to start AX and the client terminates on startup after some investigation we found that is was Intel graphics drivers which were causing issue to fix this you need to Update the graphics driver to the most recent version available

Thursday, July 10, 2014

Number Sequence Error in AX 2012

While creating new number sequence we may come across this error "Default scope cannot be implicitly determined by the number sequence framework for the given datatype. Please provide scope information explicitly."

This generally comes when there is a conflict in a scope which is being entered in NumberSeqModule class and later changed fix this issue by below steps

*Please try this in testing environment first this will impact currently running number sequence as well

1. Find the EDT number which is conflicting
2. Run below job with EDT number
static void delteDatatyperef(Args _args)
{
    NumberSequenceDatatypeParameterType NumberSequenceDatatypeParameterType;
    NumberSequenceDatatype      NumberSequenceDatatype,lNumberSequenceDatatype;
    
    RefRecId    RefRecId = 105035;
    
    select NumberSequenceDatatype where NumberSequenceDatatype.DatatypeId == RefRecId;
    ttsBegin;
    delete_from NumberSequenceDatatypeParameterType where NumberSequenceDatatypeParameterType.NumberSequenceDatatype == NumberSequenceDatatype.RecId;
    delete_from lNumberSequenceDatatype where lNumberSequenceDatatype.DatatypeId == RefRecId;
    ttsCommit;
    

}

3. Run NumberSeqApplicationModule.load(); in another job as per module which is conflicting 

All will be working fine after this.



Tuesday, June 25, 2013

Dynamics AX 2012 Import HR Postions X++ code

static void ImportPosition(Args _args)
{
SysExcelApplication     application;
SysExcelWorkbooks       workbooks;
SysExcelWorkbook        workbook;
SysExcelWorksheets      worksheets;
SysExcelWorksheet       worksheet;
SysExcelCells           cells;
COMVariantType          type;
OMOperatingUnit         OMOperatingUnit;
int                     row=1;

Name                                name;
FileName                            filename;
HcmPosition                         HcmPosition;
HcmPositionDetail                   HcmPositionDetail;
HcmPositionWorkerAssignment         HcmPositionWorkerAssignment;
HcmPositionDuration                 HcmPositionDuration;
str                                 job;
OMOperatingUnitNumber               department;

;
application = SysExcelApplication::construct();
workbooks   = application.workbooks();

filename = "C:\\import\\HRPosition.xlsx";
ttsBegin;

try
{
workbooks.open(filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
do
{
row++;

    HcmPosition.PositionId = cells.item(row, 1).value().bStr();
    HcmPosition.insert();
    department = cells.item(row, 2).value().bStr();
    job = cells.item(row, 3).value().bStr();
    select firstOnly OMOperatingUnit where OMOperatingUnit.OMOperatingUnitNumber == department;
    if(OMOperatingUnit)
    {
        HcmPositionDetail.Department    = OMOperatingUnit.RecId;
        HcmPositionDetail.Job           = HcmJob::findByJob(job).RecId;
        HcmPositionDetail.Position      = HcmPosition.RecId;

        HcmPositionDetail.Title         = HcmTitle::findByTitle(HcmJobDetail::findByJob(HcmPositionDetail.Job).Description).RecId;
        HcmPositionDetail.Description   = cells.item(row, 4).value().bStr();
        HcmPositionDetail.ValidFrom     = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
        HcmPositionDetail.ValidTo       = DateTimeUtil::maxValue();
        HcmPositionDetail.insert();
        HcmPositionWorkerAssignment.ValidFrom   = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
        HcmPositionWorkerAssignment.ValidTo     = DateTimeUtil::maxValue();
        HcmPositionWorkerAssignment.Position    = HcmPosition.RecId;
        HcmPositionWorkerAssignment.Worker      = HcmWorker::findByPersonnelNumber(cells.item(row, 6).value().bStr()).RecId;
        HcmPositionWorkerAssignment.insert();
        HcmPositionDuration.Position    = HcmPosition.RecId;
        HcmPositionDuration.ValidFrom   = HcmPositionWorkerAssignment.ValidFrom;
        HcmPositionDuration.ValidTo     = DateTimeUtil::maxValue();
        HcmPositionDuration.insert();

        type = cells.item(row+1, 1).value().variantType();
    print row;
    }
    }
while (type != COMVariantType::VT_EMPTY);
application.quit();
ttsCommit;
}

Dynamics AX 2012 Code to meagre MainAccount Dimesion and Default Dimesion

Below is the to Code to meagre  MainAccount Dimesion and Default Dimesion   to get Ledger Dimension Account which is used in segmented while creating Journal voucher in LedgerJournalTrans

static void CreateLedgerDimension(Args _args)
{
    LedgerDimensionAccount  ledgerDimension,defaultDimension;
    LedgerDimensionAccount  empledgerdimension;
    LedgerDimensionAccount  mainAccDimension;
    HcmPositionDefaultDimension (empPositionDimension
    HcmPositionWorkerAssignment HcmPositionWorkerAssignment;
   
mainAccDimension = PayHeadTable::find('BasicRate').DebitAccount;

HcmPositionWorkerAssignment =   HcmPositionWorkerAssignment::getActivePositionWorkerAssignment(HcmWorker::findByPersonnelNumber('PID-0937').RecId);
       
select empposdimension where empposdimension.Position == HcmPositionWorkerAssignment.Position;
       
if(empPositionDimension)
empledgerdimension  =   empPositionDimension.DefaultDimension;

    defaultDimension = DimensionDefaultingService::serviceCreateLedgerDimension(mainAccDimension, empledgerdimension);


     info(strFmt("Before: %1", DimensionAttributeValueCombination::find(defaultDimension).DisplayValue));
 

}

Dynamics AX 2012 inserting data in Resource Dimension and fetching Default Dimension

DimensionDefault getDimension(ResourceTable _Resource)
{

DimensionAttribute DimensionAttribute;
DimensionFinancialTag  DimensionFinancialTag;

Struct struct = new Struct();

container defaultDimensionCon;
DimensionDefault workerDimensionDefault;

;
DimensionAttribute =  DimensionAttribute::findByName('Resource');

DimensionFinancialTag = DimensionFinancialTag::findByFinancialTagCategoryAndValue(DimensionAttribute.financialTagCategory(),_Resource.value,true);
        if(!DimensionFinancialTag)
        {
            DimensionFinancialTag.clear();
            DimensionFinancialTag.Description=_Resource.description;
            DimensionFinancialTag.Value=_HcmWorker.PersonnelNumber;
            DimensionFinancialTag.FinancialTagCategory=DimensionAttribute.financialTagCategory();
            DimensionFinancialTag.insert();


struct.add('Resource', _HcmWorker.PersonnelNumber);

defaultDimensionCon += struct.fields();

defaultDimensionCon += struct.fieldName(1);

defaultDimensionCon += struct.valueIndex(1);

workerDimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(defaultDimensionCon);

return workerDimensionDefault;
    }
    else
        return 0;
}