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(fromDatetoDate)); 

  

        } 

  

  

  

        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; 

  

   }