0

Código X++ para simular depreciación de un activo fijo


Con el siguiente código X++ podemos simular la depreciación de un activo fijo hasta el final de su vida, que guardaremos en una tabla para su posterior análisis.

static void DIPSimularDepreciacionActivo()
{
    TmpDateSum      tmpDateSum;
    AssetTable      assetTable;
    AssetBook       assetBook;
    AssetLedgerAccounts  assetLedgerAccounts;
    MainAccountNum       mainAccountNum;
    DIPSimulacionDepreciacion    simulacion;
    delete_from simulacion;
    while select assetTable join assetBook where
        assetTable.AssetId                      == assetBook.AssetId
    &&  assetBook.Depreciation                  == NoYes::Yes
    &&  assetBook.Status                        == AssetStatus::Open
    &&  assetTable.AssetId                      == "218-000063"
    {
        simulacion.clear();
        assetLedgerAccounts = AssetLedgerAccounts::find(assetBook.BookId,AssetParameters::find().PostingProfile,enum2int(AssetTransType::Depreciation),TableGroupAll::GroupId,assetTable.AssetGroup);
        mainAccountNum =  MainAccount::find(DimensionAttributeValueCombination::find(assetLedgerAccounts.OffsetLedgerDimension).MainAccount).MainAccountId;
        //Metodo de calculo utilizado por AX
        tmpDateSum.setTmpData(assetBook.initDepreciationProfile());
       //Datos comunes de linea
        simulacion.AssetGroupId       = assetTable.AssetGroup;
        simulacion.AssetId            = assetTable.AssetId;
        simulacion.MainAccountId      = mainAccountNum;
        simulacion.ImporteAdquisicion = assetBook.AcquisitionPrice;
        //Recorrer dataset depreciacion
       while select tmpDateSum where tmpDateSum.TmpNumerals01 != 0
        {
            simulacion.Periodo               = tmpDateSum.TransDate;        // Fecha depreciacion
            simulacion.Depreciacion          = tmpDateSum.TmpNumerals01;    // Importe depreciacion del periodo
            simulacion.DepreciacionAcumulada = tmpDateSum.Total;            // Importe depreciacion acumulada
            simulacion.NetBookValue          = tmpDateSum.TmpNumerals02;    // Valor neto en libros
            simulacion.insert();
        }
    }
    info("Simulacion terminada");
}


Este es el resultado. Espero que os sirva de ayuda.

Resultado
 

Contenido compartido en: El Blog de Juan Ruiz

7

Al utilizar este sitio web aceptas las condiciones de uso y aviso legal del mismoCerrar