Sunteți pe pagina 1din 3

The following code is used to create and post Project Expense journal in Dynamics

365 using code with the following values like "Journal name", "Amount", "Invoice
number", "Category id", "ProjId", "Vendor Id or ledger account".

LedgerJournalName ledgerJournalName;
LedgerJournalTable ledgerJournalTable;
LedgerJournalTrans ledgerJournalTrans;
LedgerJournalTrans_Project ledgerJournalTrans_Project;
NumberSequenceTable numberSequenceTable;
ledgerJournalCheckPost ledgerJournalCheckPost;
ProjLinePropertySetup projLinePropertySetup;
DirPersonUser personUser;
HcmWorker worker;
boolean priceFound = false;
CostPrice costPriceMST;
ProjPostCostJournal projPostCostJournal;
ResourceView resourceView;
NumberSeq numberseq;
Amount amount = 753.00;
boolean result = false;
TransDate invoiceDate = mkdate(22,06,2018);
ttsbegin;
ledgerJournalName = LedgerJournalName::find("PrjJrn");
if(ledgerJournalName)
{
ledgerJournalTable.JournalName = ledgerJournalName.JournalName;
ledgerJournalTable.initFromLedgerJournalName();
ledgerJournalTable.JournalNum =
JournalTableData::newTable(ledgerJournalTable).nextJournalId();
ledgerJournalTable.Name = ledgerJournalName.Name + “Test";
ledgerJournalTable.JournalType = LedgerJournalType::Cost;
ledgerJournalTable.insert();
if(ledgerJournalTable)
{
select NumberSequence from numberSequenceTable
where NumberSequenceTable.RecId ==
ledgerJournalName.NumberSequenceTable;
numberseq =
NumberSeq::NewGetVoucherFromCode(numberSequenceTable.NumberSequence);
ledgerJournalTrans.initValue();
ledgerJournalTrans.JournalNum = ledgerJournalTable.JournalNum;
ledgerJournalTrans.Voucher = numberseq.voucher();
ledgerJournalTrans.TransDate =today();
ledgerJournalTrans.Qty = 1;
ledgerJournalTrans.AccountType = LedgerJournalACType::Project;
// for offset account as vendor
ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Vend;
ledgerJournalTrans.parmOffsetAccount("1011",ledgerJournalTrans.OffsetAccountT
ype);
//

// for offset account as ledger


ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Ledger;
select projDefaultoffsetSetup where projDefaultoffsetSetup.ProjCategoryId ==
ProjParameters::find().RentalCategory;
ledgerJournalTrans.OffsetLedgerDimension =
LedgerDimensionFacade::serviceCreateLedgerDimension(projDefaultoffsetSetup.LedgerDim
ension);
//

ledgerJournalTrans.TransactionType = LedgerTransType::Payment;
ledgerJournalTrans.CurrencyCode = "USD";
ledgerJournalTrans.Invoice = "XXXX";
ledgerJournalTrans.Txt = strFmt("Expense Journal Auto Create");
ledgerJournalTrans.Approved = NoYes::Yes;
if(amount> 0)
{
ledgerJournalTrans.AmountCurDebit = amount;
}
else
{
ledgerJournalTrans.AmountCurCredit = abs(amount);
}
ledgerJournalTrans.Company = strUpr(curExt());
ledgerJournalTrans.OffsetCompany = strUpr(curExt());
select firstonly personUser where personUser.User == curUserId()
join worker
where worker.Person == personUser.PersonParty;
ledgerJournalTrans.Approver = worker.RecId;
ledgerJournalTrans.PostingProfile = 'GEN';
ledgerJournalTrans.parmAccount("000004",ledgerJournalTrans.AccountType);
ledgerJournalTrans.insert();
if(ledgerJournalTrans)
{
ledgerJournalTrans_Project.initValue();
ledgerJournalTrans_Project.CategoryId = "Cat1";
ledgerJournalTrans_Project.Qty = 1;
ledgerJournalTrans_Project.SalesCurrencyId = ledgerJournalTrans.CurrencyCode;
ledgerJournalTrans_Project.LinePropertyId = "Billable";
ledgerJournalTrans_Project.ProjTransDate = invoiceDate;
select resourceView
where resourceView.ResourceCompanyId == curExt();
ledgerJournalTrans_Project.Resource = resourceView.RecId;
ledgerJournalTrans_Project.ProjId = "000004";
ledgerJournalTrans_Project.RefRecId = ledgerJournalTrans.RecId;
ledgerJournalTrans_Project.Worker = ledgerJournalTrans.Approver;
ledgerJournalTrans_Project.CostPrice = amount;
costPriceMST = ProjCostSalesPrice::costPrice(ledgerJournalTrans,
ledgerJournalTrans_Project, false);
[ledgerJournalTrans_Project.SalesPrice, priceFound] =
ProjCostSalesPrice::findCostSalesPrice(ledgerJournalTrans_Project.ProjId,
ledgerJournalTrans_Project.Resource,
ledgerJournalTrans_Project.CategoryId,
costPriceMST,
CompanyInfoHelper::standardCurrency(),
ledgerJournalTrans_Project.SalesCurrencyId,
ledgerJournalTrans_Project.ProjTransDate,
ledgerJournalTrans_Project.ProjPriceGroupID,
false);
ledgerJournalTrans_Project.insert();
result = true;
}
}
}
ttscommit;
if(result == true)
{
ledgerJournalCheckPost =
ledgerJournalCheckPost::newLedgerJournalTable(ledgerJournalTable,NoYes::Yes);
ledgerJournalCheckPost.run();
info(Strfmt("Project Expense journal posted successfully %1 in %2",
ledgerJournalTable.JournalNum,curext()));
}

S-ar putea să vă placă și