create and post Invoice register journal and transfer it to Invoice pool, once PO based vendor Invoices are registered and approved by both finance and end user department throw a custom form and workflow developed by us then we want to post it throw PO Invoice we which i need to created Invoice Register Journal and delete current record which is reverse of Invoice Register Functionality. i have added some custom column in ledgerjournaltrans table i am updating them before posting.
static void createVendorInvoiceJournal(Args _args)
{
LedgerJournalCheckPost jourCheckPost;
LedgerJournalTable jourTable;
AxLedgerJournalTable header = new AxLedgerJournalTable();
AxLedgerJournalTrans trans = new AxLedgerJournalTrans();
LedgerJournalTrans ledgerJournalTrans = LedgerJournalTrans::findRecId(5667107114,false),
ledgerJournalTransUpdate = null,ledgerjournalTransDelete = null;
LedgerJournalNameId ledgerJournalNameId = “INV-REG”;
DimensionDisplayValue dValue = “99999999—-“;
DimensionAttributeValueCombination davc = null;
void ApproveJournal(LedgerJournalId _journalNum)
{
LedgerJournalTable journalTable = LedgerJournalTable::find(_journalNum,true);
if(journalTable)
{
ttsBegin;
journalTable.markApproved();
journalTable.update();
ttsCommit;
}
}
void updateFieldLedgerJournalTrans(LedgerJournalTrans _oldTrans,RecId _newRecId)
{
LedgerJournalTrans localUpdate = LedgerJournalTrans::findRecId(_newRecId,true);
if(localUpdate)
{
if(localUpdate.OffsetLedgerDimension ==0)
localUpdate.OffsetLedgerDimension = _oldTrans.OffsetLedgerDimension;
localUpdate.MemoDate = _oldTrans.MemoDate;
localUpdate.InvoiceLocation = _oldTrans.InvoiceLocation;
localUpdate.InvoiceType = _oldTrans.InvoiceType;
localUpdate.DocumentState = _oldTrans.DocumentState;
localUpdate.WFApprovalStatus= _oldTrans.WFApprovalStatus;
ttsBegin;
localUpdate.update();
ttsCommit;
}
}
;
header.parmJournalName(ledgerJournalNameId);
header.parmJournalType(LedgerJournalType::VendInvoiceRegister);
header.save();
trans.parmAccountType(LedgerJournalACType::Vend);
trans.parmLedgerDimension(ledgerjournaltrans.LedgerDimension);
trans.parmJournalNum(header.ledgerJournalTable().JournalNum);
trans.parmPostingProfile(ledgerjournaltrans.PostingProfile);
trans.parmInvoice(LedgerJournalTrans.Invoice);
trans.parmDue(LedgerJournalTrans.Due);
trans.parmDocumentNum(LedgerJournalTrans.DocumentNum);
trans.parmDocumentDate(LedgerJournalTrans.DocumentDate);
trans.parmAccountType(ledgerjournaltrans.AccountType);
trans.parmAmountCurCredit(ledgerjournaltrans.AmountCurCredit);
trans.parmOffsetAccountType(ledgerjournaltrans.OffsetAccountType);
trans.parmTxt(LedgerJournalTrans.Txt);
trans.parmTransDate(LedgerJournalTrans.TransDate);
trans.parmTransactionType(LedgerJournalTrans.TransactionType == LedgerTransType::Vend?LedgerJournalTrans.TransactionType:LedgerTransType::Vend);
trans.parmVoucher(LedgerJournalTrans.Voucher);
trans.parmPurchIdRange(LedgerJournalTrans.PurchIdRange);
trans.parmDefaultDimension(ledgerjournaltrans.DefaultDimension);
select firstOnly1 recId from davc where davc.DisplayValue == dValue;
if(davc.RecId || LedgerJournalTrans.OffsetLedgerDimension)
{
trans.parmOffsetLedgerDimension(ledgerjournaltrans.OffsetLedgerDimension !=0?LedgerJournalTrans.OffsetLedgerDimension:davc.RecId);
}
trans.parmApproved(NoYes::Yes);
trans.parmApprover(LedgerJournalTrans.Approver != 0?LedgerJournalTrans.Approver:HcmWorker::userId2Worker(curUserId()));
trans.save();
jourTable = header.ledgerJournalTable();
ledgerJournalTransUpdate = trans.ledgerJournalTrans();
updateFieldLedgerJournalTrans(LedgerJournalTrans,ledgerJournalTransUpdate.RecId);
if (jourTable.RecId > 0)
{
ApproveJournal(jourTable.JournalNum);
jourCheckPost = ledgerJournalCheckPost::newLedgerJournalTable(jourTable,NoYes::Yes,NoYes::Yes);
jourCheckPost.run();
}
delete_from ledgerjournalTransDelete where ledgerjournalTransDelete.RecId == LedgerJournalTrans.RecId;
}
Filed under: Dynamics Ax 2012

Like
Report
*This post is locked for comments