web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :
Dynamics 365 Community / Blogs / Tajwal's Blog / create and post Invoice reg...

create and post Invoice register journal and transfer it to Invoice pool

Community Member Profile Picture Community Member

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

This was originally posted here.

Comments

*This post is locked for comments