Please click her for MS reference file
Below is the out of the box example reference and code.
SalesInvoiceJournalPostSubBill_Extension->endPost()
this.postUnbilledRevenueAndRevenueOffset();
LedgerVoucher ledgerVoucher = this.ledgerVoucher;
LedgerVoucherObject ledgerVoucherObject = ledgerVoucher.findLedgerVoucherObject();
LedgerDimensionAccount unbilledRevenueAccount = LedgerDimensionFacade::serviceCreateLedgerDimension(unbilledRevenueTransactionLine.SubBillUnbilledRevenueAccount, salesLine.DefaultDimension);
LedgerDimensionAccount unbilledRevenueOffsetAccount = LedgerDimensionFacade::serviceCreateLedgerDimension(unbilledRevenueTransactionLine.SubBillUnbilledRevenueOffsetAccount, salesLine.DefaultDimension);
CurrencyExchangeHelper exchangeRateHelper = this.getExchangeRateHelper(ledgerVoucherObject, detailLine.SubBillSchedLineRecId);
Amount revenueOffsetAmt = abs(custInvoiceTrans.lineAmount) + custInvoiceTrans.SumLineDisc;
Amount revenueAmt = (revenueOffsetAmt * -1);
// Unbilled Revenue
LedgerVoucherTransObject ledgerVoucherTransObject = LedgerVoucherTransObject::newTransactionAmountDefault(
ledgerVoucherObject,
LedgerPostingType::SalesRevenue,
unbilledRevenueAccount,
custInvoiceTrans.CurrencyCode,
revenueAmt,
exchangeRateHelper);
ledgerVoucherTransObject.parmText("@SubBill:UnbilledRevenueAccount");
ledgerVoucher.addTrans(ledgerVoucherTransObject);
// Unbilled Revenue Offset
// Dr. Accounts Receivable + Dr. Unbilled discount offset = Cr. Unbilled Revenue offset
ledgerVoucherTransObject = LedgerVoucherTransObject::newTransactionAmountDefault(
ledgerVoucherObject,
LedgerPostingType::SalesRevenueOffset,
unbilledRevenueOffsetAccount,
custInvoiceTrans.CurrencyCode,
revenueOffsetAmt,
exchangeRateHelper);
ledgerVoucherTransObject.parmText("@SubBill:UnbilledRevenueOffsetAccount");
ledgerVoucher.addTrans(ledgerVoucherTransObject);
ledgerVoucherObject.lastTransTxt();