miércoles, 7 de febrero de 2018

Codigo X++ para simular depreciación de un activo fijo [AX2012]

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");
}
Resultado:









Espero que os sirva de ayuda

3 comentarios:

  1. Hola Juan, que tal!
    Juan, muchas gracias por compartir tus conocimientos.
    La verdad te quería consultar si me pudieras aconsejar por favor...
    Fíjate que estoy buscando material de estudio para iniciarme en este mundo de Dynamics, ya que me han hablado de una oportunidad de trabajo para entre Febrero y Marzo aproximadamente.
    La verdad es una buena oportunidad para mi y quiero prepararme lo mejor posible para no llegar tan novato en esto... me podría Juan decir u orientar por favor por donde empezar a ver esto...
    La oportunidad tengo entendido es para Dynamics 365 usando lenguaje X++
    De antemano muchas gracias y en verdad voy agradecer y apreciar sus comentarios.
    Un cordial saludo.

    ResponderEliminar
  2. Hola Erick, te recomiendo varios cursos:
    Curso Desarrollo con X++:
    https://www.elrincondynamics.es/formacion/detalle/view/curso-desarrollo-con-x

    Curso Gestión de Datos:
    https://www.elrincondynamics.es/formacion/detalle/view/curso-gesti%C3%B3n-de-datos-ax-2012-r3

    Curso Integración con Servicios y AIF:
    https://www.elrincondynamics.es/formacion/detalle/view/curso-integraci%C3%B3n-con-servicios-y-aif-ax2012-r3

    ResponderEliminar
  3. Juan Dios, te bendiga enormemente, muchas gracias en verdad.
    Voy a tomar tus consejos como una joyita y voy hacer el sacrificio de esta inversión para poder prepararme.
    De antemano muchas gracias, de verdad valoro mucho tu mensaje con tus recomendaciones.
    Dios te bendiga.


    Saludos.

    ResponderEliminar