[
SRSReportQueryAttribute(querystr(FixedAssetRegisterReport)),
SRSReportParameterAttribute(classstr(FixedAssetRegisterContract))
]
public class FixedAssetRegisterDP extends SrsReportDataProviderBase
{
FromDate fromDate;
ToDate toDate;
AssetregisterTmp AssetregisterTmp;
str site,projNumber,costcentre;
AssetSumCalc assetSumCalc;
AssetCalcReport balanceReport;
real cyAmount;
AssetTrans assetTrans;
[
SRSReportDataSetAttribute(tablestr(AssetregisterTmp))
]
public AssetregisterTmp getAssetregisterDS()
{
select AssetregisterTmp;
return AssetregisterTmp;
}
public Name getSite(AssetBook _assetBook)
{
DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
DimensionAttribute dimensionAttribute;
#define.DimensionName("@SYS103211")
dimensionAttributeValueSetStorage = dimensionAttributeValueSetStorage::find(_assetbook.DefaultDimension);
dimensionAttribute = dimensionAttribute::findbyname(#DimensionName);
return dimensionAttributeValueSetStorage.getDisplayValueByDimensionAttribute(dimensionAttribute.recId);
}
public Name getCostcentre(AssetBook _assetBook)
{
DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
DimensionAttribute dimensionAttribute;
#define.DimensionName("@SYS343410")
dimensionAttributeValueSetStorage = dimensionAttributeValueSetStorage::find(_assetbook.DefaultDimension);
dimensionAttribute = dimensionAttribute::findbyname(#DimensionName);
return dimensionAttributeValueSetStorage.getDisplayValueByDimensionAttribute(dimensionAttribute.recId);
}
public Name getProjNumber(AssetBook _assetBook)
{
DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
DimensionAttribute dimensionAttribute;
#define.DimensionName("@SYS4534")
dimensionAttributeValueSetStorage = dimensionAttributeValueSetStorage::find(_assetbook.DefaultDimension);
dimensionAttribute = dimensionAttribute::findbyname(#DimensionName);
return dimensionAttributeValueSetStorage.getDisplayValueByDimensionAttribute(dimensionAttribute.recId);
}
public void insertccbAssetregisterTmp(AssetTable assetTable,AssetBook assetBook)
{
//assetSumCalc = AssetSumCalc_Trans::newAssetYear(_assetBook.AssetId,_assetBook.BookId,_assetBook.AcquisitionDate);
assetSumCalc = AssetSumCalc_Trans::newAssetPeriod(_assetBook.AssetId,_assetBook.BookId,fromDate,toDate);
// balanceReport = new AssetRollForwardCalcReport( _assetBook.AcquisitionDate , dateMax());
balanceReport = new AssetRollForwardCalcReport(fromDate,toDate);
balanceReport.calcAsset(_assetBook);
cyAmount = this.getDpCy(_assetBook);
AssetregisterTmp.clear();
AssetregisterTmp.AssetId = _assetTable.AssetId;
AssetregisterTmp.MainAssetId = _assetTable.MainAssetId;
AssetregisterTmp.Name = _assetTable.Name;
AssetregisterTmp.NameAlias = _assetTable.NameAlias;
AssetregisterTmp.AssetGroup = _assetTable.AssetGroup;
AssetregisterTmp.BookId = _assetBook.BookId;
AssetregisterTmp.Condition = _assetTable.Condition;
AssetregisterTmp.Quantity = _assetTable.Quantity;
AssetregisterTmp.UnitOfMeasure = _assetTable.UnitOfMeasure;
AssetregisterTmp.Location = _assetTable.Location;
AssetregisterTmp.RoomNumber = _assetTable.RoomNumber;
AssetregisterTmp.LastMaintenance = _assetTable.LastMaintenance;
AssetregisterTmp.Barcode = _assetTable.Barcode;
AssetregisterTmp.Status = _assetBook.Status;
AssetregisterTmp.CCBVerificationStatus = _assetTable.VerificationStatus;
AssetregisterTmp.AcquisitionDate = _assetBook.AcquisitionDate;
AssetregisterTmp.DisposalDate = _assetBook.DisposalDate;
AssetregisterTmp.ScrapValue = _assetBook.ScrapValue;
AssetregisterTmp.SerialNum = _assetTable.SerialNum;
AssetregisterTmp.UsedFromDate =_assetBook.UsedFromDate;
AssetregisterTmp.ServiceLife = _assetBook.ServiceLife;
AssetregisterTmp.LifeTimeRest = _assetBook.LifeTimeRest;
AssetregisterTmp.CustInvoiceId = _assetBook.CustInvoiceId;
AssetregisterTmp.CustAccount = _assetBook.CustAccount;
AssetregisterTmp.SaleValue = _assetBook.SaleValue;
AssetregisterTmp.Site = this.getSite(_assetBook);
AssetregisterTmp.Costcentre = this.getCostcentre(_assetBook);
AssetregisterTmp.Projectnumber = this.getProjNumber(_assetBook);
AssetregisterTmp.AcquisitionPrice = assetSumCalc.acquisitionValue() + assetSumCalc.acquisitionAdjValue() +
assetSumCalc.writeDownAdjValue() + assetSumCalc.writeUpAdjValue();
// AssetregisterTmp.AccDepBOY = balanceReport.columnDepreciationStartPeriod();
AssetregisterTmp.AccDepBOY = assetSumCalc.bonusDepreciationValue() + assetSumCalc.bonusDepreciationValue_priorYears() + assetSumCalc.bonusDepreciationValue_thisYear() +
assetSumCalc.extraDepreciationValue() + assetSumCalc.extraDepreciationValue_priorYears() + assetSumCalc.extraDepreciationValue_thisYear() +
assetSumCalc.depreciationValue() + assetSumCalc.depreciationValue_priorYears() + assetSumCalc.depreciationValue_thisYear() +
assetSumCalc.depreciationAdjValue() + assetSumCalc.depreciationAdjValue_priorYears() + assetSumCalc.depreciationAdjValue_thisYear();
// AssetregisterTmp.DepCY = assetSumCalc.depreciationAdjValue() + assetSumCalc.extraDepreciationValue() + assetSumCalc.depreciationValue();
AssetregisterTmp.DepCY = cyAmount;
if (AssetregisterTmp.Status == AssetStatus::Scrapped || ccbAssetregisterTmp.Status == AssetStatus::Sold)
{
AssetregisterTmp.DepRetirement = assetSumCalc.depreciationValue_priorYears() + assetSumCalc.depreciationAdjValue_priorYears() +
assetSumCalc.depreciationAdjValue_thisYear() + assetSumCalc.depreciationValue_thisYear();
}
AssetregisterTmp.AccDepYTD = (AssetregisterTmp.AccDepBOY) - (AssetregisterTmp.DepCY);
AssetregisterTmp.NBV = (AssetregisterTmp.AcquisitionPrice) - abs(AssetregisterTmp.AccDepYTD);
AssetregisterTmp.CustomerName = _assetBook.custName();
AssetregisterTmp.insert();
}
public void processReport()
{
Query query;
QueryRun qr;
CCBFixedAssetRegisterContract contract = this.parmDataContract() as CCBFixedAssetRegisterContract;
AssetTable assetTable;
AssetBook assetBook;
fromDate = contract.parmFromDate();
toDate = contract.parmToDate();
query = this.parmQuery();
if (fromDate && toDate)
{
query.dataSourceTable(tableNum(AssetBook)).addRange(fieldNum(AssetBook,AcquisitionDate)).value(queryRange(fromDate, toDate));
}
qr = new QueryRun(query);
while(qr.next())
{
assetTable = qr.get(tableNum(AssetTable));
assetBook = qr.get(tableNum(AssetBook));
this.insertccbAssetregisterTmp(assetTable,assetBook);
}
}
public real getDpCy(AssetBook _assetBook)
{
int currentYear = year(toDate);
str CurrentYearStart = "01"+"/"+"01"+"/"+ int2Str(currentYear);
str CurrentYearEnd = "12"+"/"+"31"+"/"+int2Str(currentYear);
select sum(AmountCur) from assetTrans
where assetTrans.AssetId == _assetBook.AssetId
&& assetTrans.BookId == _assetBook.BookId
&& assetTrans.TransDate >= str2Date(CurrentYearStart,213)
&& assetTrans.TransDate <= str2Date(CurrentYearEnd,213)
&& (assetTrans.TransType == AssetTransType::Depreciation ||
assetTrans.TransType == AssetTransType::DepreciationAdj ||
assetTrans.TransType == AssetTransType::ExtraordinaryDepreciation);
return assetTrans.AmountCur;
}