Monday, November 17, 2025

Fixed Asset Register Report

[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;
 
 
 
   }
 
 
 
 
 
 
   
}