Sunday, September 4, 2016

AX 2012 - Username and password keeps prompt on Home | Role center page

After Enterprise portal in being installed and have configured in AX 2012, sometimes username and password keeps prompt for Home | Role Center page. However, this is irrespective to AX as any web application can be configured in IE settings for username and password.

First option Steps outlined on this MSDN page resolves this issue.

Second option
IE explorer | Internet options | Security | Intranet (or your settings), Select custom level scroll to the bottom | User Authentication and select autologon depending upon your setup




CIL error "A parameter could not be serialised."

If you ever encounter the error message "A Parameter could not be serialized" that clued that some changes have been done to sysOperation framework and to resolve this error generate incremental CIL.

AX 2012 - Create and Post hour journal through X++

Following job can be used to create, validate, and post hour journal in Project Management and Accounting module in AX 2012 R3.


static void createHourJournal(Args _args)
{
    ProjJournalTableData    JournalTableData;
    ProjJournalTransData    journalTransData;
    ProjJournalTable        journalTable, journalTableUpdate;
    ProjJournalTrans        journalTrans;
    ProjTable               projTable;
    ProjInvoiceTable        projInvoiceTable;
    NumberSeq               numberSeq;
    ProjJournalCheckPost    jourPost;
    ProjQtyEmpl             qty;
    JournalNumOfLines       numOfLines;
    ttsBegin;
    journalTableData = JournalTableData::newTable(journalTable);
    journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans, journalTableData);
    // Init JournalTable -- header
    journalTable.clear();
    journalTable.JournalId      = journalTableData.nextJournalId();
    journalTable.JournalType    = ProjJournalType::Hour;
    journalTable.JournalNameId  = MROParameters::find().JournalHour;
    journalTable.initFromProjJournalName(ProjJournalName::find(journalTable.JournalNameId));
    journalTable.insert();
    // Init JournalTrans -- lines
    journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));
    journalTrans.clear();
    journalTransData.initFromJournalTable();
    projTable           = ProjTable::find('000057');
    projInvoiceTable    = projTable.projInvoice();
    journalTrans.setTransDate();
    journalTrans.TransDate      = systemDateGet();
    journalTrans.ProjTransDate  = systemDateGet();
    journalTrans.ProjId         = projTable.ProjId;
    journalTrans.Qty            = 7.5;
    journalTrans.CategoryId     = 'Category ID';
    journalTrans.LinePropertyId = 'Line property ID';
    journalTrans.Worker         = DirPersonUser::currentWorker();
    journalTrans.ActivityNumber = 'Activity number';
    journalTrans.Txt            = 'Sample Text';
    if (projInvoiceTable.CurrencyId)
        journalTrans.CurrencyId = projInvoiceTable.CurrencyId;
    else
        journalTrans.CurrencyId = CompanyInfo::standardCurrency();
    journalTrans.DefaultDimension   = projTable.DefaultDimension;
    journalTrans.TaxGroupId         = ProjParameters::taxGroupInvoice(projTable.ProjId);
    if (journalTrans.Worker)
    {
        journalTrans.setHourPrices();
        journalTrans.setPeriodDate();
    }
    numberSeq = NumberSeq::newGetVoucherFromId(journalTable.VoucherNumberSequenceTable, false);
    journalTrans.Voucher        = numberSeq.voucher();
    journalTransData.create();
    ttsCommit;
   
    // Validating the journal
    jourPost = ProjJournalCheckPost::newJournalCheckPost(true,true,JournalCheckPostType::Check,tableNum(ProjJournalTable),journalTable.JournalId);
   
    // Posting the journal
    jourPost = ProjJournalCheckPost::newJournalCheckPost(true,true,JournalCheckPostType::Post,tableNum(ProjJournalTable), journalTable.JournalId);
    jourPost.run();
}