In VendInvoiceDocument report I have added additional four columns and use VendInvoiceDocumentDP class for extension.
I have extended the insertVendInvoiceDocumentTmp or populateVendInvoiceDocumentTmp, it works but the reference data of first line appear in second line and I couldn't figure it out why it happened. Means the sales price of M0005 is 600 and it shows with Item Number M0006.
Sample code
public void insertVendInvoiceDocumentTmp(NoYes _purchInvoiceTransOrTaxTrans, NoYes _vendPaymSched)
{
next insertVendInvoiceDocumentTmp(_purchInvoiceTransOrTaxTrans, _vendPaymSched);
VendInvoiceDocumentTmp vendInvoiceDocumentTmp = this.vendInvoiceDocumentTmp;
real latestPurchasePrice;
ItemId _itemID;
date _invoiceDate;
AccountNum _accountNum;
real _purchPrice;
DataAreaId _areaId;
_itemID = vendInvoiceDocumentTmp.ItemId;
_invoiceDate = vendInvoiceDocumentTmp.InvoiceDate;
_accountNum = vendInvoiceDocumentTmp.InvoiceNum;
_purchPrice = vendInvoiceDocumentTmp.PurchPrice;
_areaId = vendInvoiceDocumentTmp.DataAreaId;
latestPurchasePrice = InventoryManager::getSpecificLatestPurchasePrice(_itemID, _invoiceDate);
vendInvoiceDocumentTmp.BT_AccountNum = _accountNum;
if(vendInvoiceDocumentTmp.PurchPrice != 0)
{
if(latestPurchasePrice != _purchPrice)
VendInvoiceDocumentTmp.BT_DiffPercentage = ((_purchPrice - latestPurchasePrice) / _purchPrice) * 100;
else
VendInvoiceDocumentTmp.BT_DiffPercentage = 0;
}
vendInvoiceDocumentTmp.BT_DocumentDate = _invoiceDate;
vendInvoiceDocumentTmp.BT_ItemOnHand = InventoryManager::getOnHand(_areaId, _itemID);
vendInvoiceDocumentTmp.BT_LastPurchPrice = latestPurchasePrice;
vendInvoiceDocumentTmp.BT_SalesPrice = InventTableModule::find(_itemID, ModuleInventPurchSales::Sales).Price;
}