Buscar en este blog

domingo, 8 de octubre de 2017

Crear una entrada de presupuesto por código - Microsoft Dynamics Ax 2012

Aquí como hacer una entrada de presupuesto:

static void createBudgetHeaderAndLine(Args _args)
{
    BudgetTransactionHeader         header;
    BudgetTransactionLine           line;

    AxBudgetTransactionHeader       axHeader;
    AxBudgetTransactionLine         axLine;

    header.initValue();
    header.Date = 18\09\2017;
    header.BudgetModelId = PurchParameters::find().GRWModelId;
    header.BudgetTransactionCode = BudgetTransactionCode::findByBudgetTransactionCode(PurchParameters::find().GRWBudgetTransactionCode).RecId;

    axHeader = AxBudgetTransactionHeader::newBudgetTransactionHeader(header);
    axHeader.save();

    axLine = AxBudgetTransactionLine::construct();
    axLine.parmBudgetTransactionHeader(axHeader.parmRecId());
    axLine.parmLedgerDimension(5637146826);
    axLine.parmDate(18\09\2017);
    axLine.parmTransactionCurrencyAmount(30);
    axLine.parmBudgetType(BudgetType::Expense);
    axLine.parmTransactionCurrency("MXN");
    axLine.save();

    info(strFmt("Entrada de presupuesto creada: %1", header.TransactionNumber));

}

Y en Ax se ve algo como esto:




Post relacionados:
Autoliquidación de transacciones (Auto settlement) por código X++ - Dynamics Ax 2012
Validar si existe un archivo y la extensión del mismo por código - Dynamics Ax 2012
Lista de remisiones asociadas a una factura por código X++ en Dynamics Ax 2012


No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma. 



viernes, 6 de octubre de 2017

Autoliquidación de transacciones (Auto settlement) por código X++ - Dynamics Ax 2012

Para hacer la liquidación en automático de dos transacciones podemos usar el siguiente código:

static void autoSettlementExWill(Args _args)
{
    VendTrans                   vendTransFrom, vendTransTO;
    VendTransOpen               vendTransOpenFrom, vendTransOpenTo;
    CustVendOpenTransManager    SettleManager;
    Common                      originator;
    boolean                     settled;

    try
    {
        vendTransFrom = vendTrans::find(5637155127);
        vendTransTO = vendTrans::find(5637155128);
               
        //Revisando que no esten erradas las transacciones
        if(!vendTransFrom.Closed && !vendTransTo.Closed)
        {
            select firstonly vendTransOpenFrom
                where vendTransOpenFrom.RefRecId == vendTransFrom.RecId
                && vendTransOpenFrom.AccountNum == vendTransFrom.AccountNum;

            select firstonly vendTransOpenTo
                where vendTransOpenTo.RefRecId == vendTransTo.RecId
                && vendTransOpenTo.AccountNum == vendTransTo.AccountNum;

            originator = vendTransFrom.vendInvoiceJour().vendTable_InvoiceAccount();
            SettleManager = custVendOpenTransManager::construct(originator);  //en el originator solo hay custtable y vendtable en el swicht
            SettleManager.updateTransMarked(vendTransOpenFrom, true);
            SettleManager.updateTransMarked(vendTransOpenTo, true);
            settled = SettleManager.settleMarkedTrans();
           
            info(strFmt("Asiento liquidado: %1, con %2", vendTransFrom.Voucher, vendTransTO.Voucher));
        }
        else
            warning(strFmt("Las transacciones de los asientos: %1 y %2, no estan abiertas.", vendTransFrom.Voucher, vendTransTO.Voucher));
    }
    catch
    {
        error(strFmt("No fue posible liquidar las transacciones de proveedor. Asientos no liquidados: %1, con %2",
        vendTransFrom.Voucher, vendTransTO.Voucher));
    }

}




Post relacionados:
Crear y postear un LedgerVoucher en Ax 2012
Usuario actual, nombre de usuario, moneda de la empresa Dynamics Ax 2012
Lookup para dimensiones financieras personalizadas - Microsoft Dynamics Ax 2012 R2



No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.