Thursday 22 September 2016

Create Free Text Invoice in AX using X++

static void CreateFreeTextInvoice(Args _args)
{
    CustInvoiceTable    custInvoiceTable;
    CustInvoiceLine     custInvoiceLine;
    CustTable           custTable;
    CustPostInvoice     custPostInvoice;
    LineNum             lineNum;
    ;

    custTable = CustTable::find('******');
    custInvoiceTable.clear();
    custInvoiceTable.initFromCustTable(custTable);
    custInvoiceTable.insert();

    custInvoiceLine.clear();
    custInvoiceLine.initValue();
    custInvoiceLine.LedgerDimension =  123456;
    custInvoiceLine.initFromCustInvoiceTable(custInvoiceTable);
    custInvoiceLine.AmountCur = 101.00;
    custInvoiceLine.Description = "Test";
    custInvoiceLine.TaxItemGroup = "";
    custInvoiceLine.ParentRecId = custInvoiceTable.RecId;

    if(!lineNum)
        lineNum = CustInvoiceLine::lastLineNum_W(custInvoiceLine.ParentRecId);

    lineNum += 1;
    custInvoiceLine.LineNum = lineNum;
    custInvoiceLine.insert();

    custPostInvoice = new CustPostInvoice(custInvoiceTable);
    custPostInvoice.run();
}

Get LedgerDimension for Vendor and Customer in AX

For Customer:-

DimensionStorage::getDynamicAccount(AccountNum, LedgerJournalACType::Cust)



For Vendor:-

DimensionStorage::getDynamicAccount(AccountNum, LedgerJournalACType::Vend)

Create output order in AX using X++.

static void createOutputOrder(Args _args)
{
    InventJournalTable journalTable;
    InventJournalTrans journalTrans;
    InventMovement inventMovement;
    WMSOrderCreate wmsOrderCreate;
    ;

    while select journalTable
        where journalTable.JournalType == InventJournalType::Transfer
           //&& journalTable.JournalId == "********"   ------------------------------------------- For Specific Journal
    {
        while select journalTrans
            where JournalTrans.JournalId == journalTable.JournalId
        {
            inventMovement = InventMovement::construct(journalTrans);

            wmsOrderCreate = WMSOrderCreate::newMovement(inventMovement, journalTrans.Qty);
            wmsOrderCreate.parmMustBeWMSOrderControlled(true);
            wmsOrderCreate.parmQty(journalTrans.Qty);
            wmsOrderCreate.parmRecalculateMaxQtyForValidation(false);
            wmsOrderCreate.parmWMSOrderType(WMSOrderType::Output);
            wmsOrderCreate.parmMaxCWQty(journalTrans.Qty);
            wmsOrderCreate.parmMaxQty(journalTrans.Qty);
            wmsOrderCreate.run();
         }
    }
}