Sunday, September 4, 2016

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();
}

2 comments:

  1. Good Post! Thank you so much for sharing this post, it was so good to read and useful to improve my knowledge as updated one, keep blogging…
    Microsoft Dynamics Online Training

    ReplyDelete

I will appreciate your comments !

How to enable new Microsoft teams - Public Preview!

New Microsoft Teams is just AWESOME, quick but useful post below shows how you have this preview feature to make your life EASY!  Open Micr...