Friday, March 21, 2014

Test Query by X++ code

// Test Query by X++ code

static void QueryPacking(Args _args)
{
   date           _fromDate,_todate;
    #AviFiles
    SysOperationProgress progress = new SysOperationProgress();

    int i;
    boolean _unposted;
    InventTrans        inventTransactions,inventTrans;
    InventTransOrigin  inventTransOrigin;
    VendPackingSlipTrans    packingTrans;
    VendPackingSlipJour     packingJour;
    PurchTable              purchTable;
    EcoResDistinctProductVariant    ecoResDistinctProdVariant;

    //POView  poViewTable;
    InventDim inventdim;
    boolean UPDATE;

    Query query;
    QueryRun    qr;
    QueryBuildDataSource qbdsTrans,qbdsJour,qbdsTransOrgin,qbdsinventTrans;
    ItemId  itemID;
    ;

    //super();
    progress.setCaption("Purchase Report");
    progress.setAnimation(#AviUpdate);

   // delete_from poView;
   // ttsBegin;

    _fromDate = 11\10\2007;//fdate.dateValue();
    _todate   = 11\10\2007;//tDate.dateValue();
    ItemId = "9007";

    query = new Query();
    qbdsJour = query.addDataSource(tablenum(VendPackingSlipJour));
    qbdsJour.addRange(fieldnum(VendPackingSlipJour,PurchId)).value("000246");
   
    if(_fromDate && _todate)
    {
        qbdsJour.addRange(fieldnum(VendPackingSlipJour, Deliverydate)).value(SysQuery::range(_fromDate,_toDate));
    }
    qbdsTrans  = qbdsJour.addDataSource(tablenum(VendPackingSlipTrans));  
    qbdsTrans.joinMode(JoinMode::InnerJoin);
    qbdsTrans.relations(true);
    //qbdsTrans.addRange(fieldnum(VendPackingSlipTrans,OrigPurchId)).value("000246");
   
    qbdsTransOrgin = qbdsTrans.addDataSource(tablenum(inventTransOrigin));
    qbdsTransOrgin.joinMode(JoinMode::InnerJoin);
    qbdsTransOrgin.relations(true);
    qbdsTransOrgin.addLink(fieldnum(VendPackingSlipTrans, InventTransId), fieldnum(inventTransOrigin, InventTransId));

    qbdsinventTrans = qbdsTransOrgin.addDataSource(tablenum(inventTrans));
    qbdsinventTrans.joinMode(JoinMode::InnerJoin);
    qbdsinventTrans.relations(false);
    qbdsinventTrans.addLink(fieldnum(inventTrans, InventTransOrigin), fieldnum(inventTransOrigin, RecId));
   
    if(ItemId)
    {
        qbdsinventTrans.addRange(fieldnum(inventTrans, itemID)).value(ItemID);
    }

    //qbdsJour = qbdsTrans.addDataSource(tablenum(VendPackingSlipJour));
    //qbdsJour.joinMode(JoinMode::ExistsJoin);
    //qbdsJour.relations(true);
    ////qbdsJour.addLink(fieldnum(VendPackingSlipTrans, VendPackingSlipJour), fieldnum(VendPackingSlipJour, RecId));
    //qbdsJour.addRange(fieldnum(VendPackingSlipJour, PurchId)).value("000246");


    //if(_fromDate && _todate)
    //{
        //qbdsJour.addRange(fieldnum(VendPackingSlipJour, Deliverydate)).value(SysQuery::range(_fromDate,_toDate));
    //}

    //qbdsTransOrgin = qbdsTrans.addDataSource(tablenum(inventTransOrigin));
    //qbdsTransOrgin.joinMode(JoinMode::InnerJoin);
    //qbdsTransOrgin.relations(true);
    //qbdsTransOrgin.addLink(fieldnum(VendPackingSlipTrans, InventTransId), fieldnum(inventTransOrigin, InventTransId));

    //qbdsinventTrans = qbdsTransOrgin.addDataSource(tablenum(inventTrans));
    //qbdsinventTrans.joinMode(JoinMode::InnerJoin);
    //qbdsinventTrans.relations(false);
    //qbdsinventTrans.addLink(fieldnum(inventTrans, InventTransOrigin), fieldnum(inventTransOrigin, RecId));

    //if(Item.valueStr())
    //{
        //qbdsinventTrans.addRange(fieldnum(inventTrans, RetailVariantId)).value(Item.valueStr());
    //}

                    //while select * from packingTrans
                        //join packingJour where packingJour.RecId == packingTrans.VendPackingSlipJour
                        //&& packingJour.PurchId == "000246"
                        //join inventTransOrigin where inventTransOrigin.InventTransId == packingTrans.InventTransId
                    //{
                        //inventTrans = inventTrans::findByInventTransOrigin(inventTransOrigin.RecId);
                        //info(strFmt("%1,%2",packingJour.PurchId,packingTrans.ItemId));

    qr = new QueryRun(query);
    qr.prompt();

    while (qr.next())
    {
        packingTrans= qr.get(tableNum(VendPackingSlipTrans));
        packingJour =qr.get(tablenum(VendPackingSlipJour));
        inventTransOrigin= qr.get(tableNum(InventtransOrigin));
        inventTrans =qr.get(tablenum(Inventtrans));
        info(strFmt("%1,%2,%3,%4",packingJour.PurchId,packingJour.DeliveryDate,packingTrans.ItemId,inventTransOrigin.InventTransId));
    }
}

Sorting Cointainer

// Sorting Cointainer

static void SortContainer(Args _args)
{
container con = [5,1,2,'Sangeeth B.Tech',9, 'MBA Sangeeth', NoYes::No];
str temp1;
str temp2;
int i;
int j;
container sorCon;
;

sorCon = con;

// Sort the container
    for (i = 1; i <= conlen(sorCon); i++)
    {
        for (j = i + 1; j <= conlen(sorCon); j++)
        {
            temp1 = conpeek(sorCon, j);
            temp2 = conpeek(sorCon, i);

            if (temp1 < temp2)
            {
                sorCon = condel(sorCon, j, 1);
                sorCon = conins(sorCon, j, temp2);
                sorCon = condel(sorCon, i, 1);
                sorCon = conins(sorCon, i, temp1);
            }
        }
    }

conview(sorCon);
}

ReleaseProducts Creation through X++

static void ReleaseProducts_detailed(Args _args)
{
EcoResProduct ecoResProduct;
InventTable inventTable;
InventTableModule inventTableModule;
NumberSequenceTable numberSequenceTable;
ItemId itemId;
InventItemSetupSupplyType inventItemSetupSupplyType;

EcoResStorageDimensionGroupProduct ecoResStorageDimensionGroupProduct;
EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
EcoResStorageDimensionGroupItem ecoResStorageDimensionGroupItem;
EcoResTrackingDimensionGroupItem ecoResTrackingDimensionGroupItem;
;

select firstOnly ecoResProduct where EcoResProduct.DisplayProductNumber == “20003?; //Audio system

changecompany (‘CEU’)
{
ttsBegin;
inventTable = null;
inventTableModule = null;
inventItemSetupSupplyType = null;
ecoResStorageDimensionGroupProduct = null;
ecoResTrackingDimensionGroupProduct = null;
ecoResStorageDimensionGroupItem = null;
ecoResTrackingDimensionGroupItem = null;

numberSequenceTable = InventParameters::numRefItemId().numberSequenceTable();
//get item id from:
//1. Product number if number seq for item ID is not set up or manual or return blank value
if (!numberSequenceTable.RecId || numberSequenceTable.Manual)
{
itemId = ecoResProduct.productNumber();
}
else //number sequence auto, get a number
{
itemId = NumberSeq::newGetNumFromId(numberSequenceTable.RecId).num();
}

inventTable.initValue();
inventTable.initFromEcoResProduct(ecoResProduct);
inventTable.ItemId = ItemId;
inventTable.NameAlias = ecoResProduct.SearchName;
inventTable.insert(true);

// Create inventTableModules

inventTableModule.initValue();
inventTableModule.ItemId = inventTable.ItemId;
inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
inventTableModule.insert();

inventTableModule.initValue();
inventTableModule.ItemId = inventTable.ItemId;
inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
inventTableModule.insert();

inventTableModule.initValue();
inventTableModule.ItemId = inventTable.ItemId;
inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
inventTableModule.insert();

//Create inventItemLocation
InventItemLocation::createDefault(inventTable.ItemId);

// Creates a new item default order type for the product that is released.

inventItemSetupSupplyType.initValue();
inventItemSetupSupplyType.ItemId = inventTable.ItemId;
inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
inventItemSetupSupplyType.insert();

//create relationship tables to dimension groups.

ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResProduct.RecId);
ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResProduct.RecId);

if (ecoResStorageDimensionGroupProduct.RecId)
{ // mandatory storage dimension group for the product
ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResStorageDimensionGroupItem.StorageDimensionGroup = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
ecoResStorageDimensionGroupItem.insert();
}

if (ecoResTrackingDimensionGroupProduct.RecId)
{ // mandatory tracking dimension group for the product
ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
ecoResTrackingDimensionGroupItem.insert();
}
ttsCommit;
info(strfmt(“Product successfully released to 'CEU 'legal entity”));
}
}

Total time Consumed to run a business logic

// Total time Consumed to run a business logic

static void TimeConsumed(Args _args)
{
    FromTime startTime = timeNow();
    int i;
    str dummyStr;
    ;
   
    for (i = 1 ; i <= 500000; i++)
    {
        dummyStr += int2str(i);     
    }
       
    info(strFmt("Total time consumed is  %1", timeConsumed(startTime, timeNow())));
}

GetExchangeRates

//GetExchangeRates
error :

static void getExchangeRates(Args _args)
{
    int         curPos, endPos, startPos;
    TextBuffer  tb = new TextBuffer();
    System.Net.WebRequest webRequest;
    System.Net.WebResponse webResponse;
    str page;
    System.IO.StreamReader streamReader;

    try
    {
        webRequest = System.Net.WebRequest::Create("http://www.x-rates.com/d/INR/table.html");

        // this will throw an webexception if cannot be reached.
        webResponse = webRequest.GetResponse();
        streamReader = new System.IO.StreamReader(webResponse.GetResponseStream());

        tb.setText('');
        page = streamReader.ReadToEnd();

        streamReader.Close();

        tb.setText(page);
        curpos   = 1;
        startPos = 1;
        tb.regularExpressions(false);

        tb.find('<a href="/d/INR/EUR/graph120.html" class="menu">', curpos);

        startpos = tb.matchPos();

        tb.find('</a>&nbsp;</font></td>', startpos);
        endpos = tb.matchPos();

        page = tb.subStr(startpos, endpos - startpos);
        info(strFmt("1 EUR = %1 INR",strreplace(page,'<a href="/d/INR/EUR/graph120.html" class="menu">','')));

        // Close the webResonse
        webResponse.Close();
    }
    catch(Exception::CLRError)
    {
        throw error(AifUtil::getClrErrorMessage());
    }
}

Form Lookup thorugh code

// Form Lookup thorugh code

public void lookup()

{
    HcmWorker               selectedRecord;
    Args                    args;
    FormRun                 formRun;
    Form                    workerLookupForm = new Form(formStr(HcmWorkerLookup));
    FormControl             control = this;
    FormStringControl       stringControl       = control as FormStringControl;

    args = new Args();
    args.name(formStr(HcmWorkerLookup));
    args.caller(this);

    args.parmObject(this);

    // position the lookup to highlight the current record
    // a string control supposed to contain a personnel number value
    selectedRecord = HcmWorker::findByPersonnelNumber(stringControl.text());

    if (selectedRecord.RecId != 0)
    {
        args.lookupRecord(selectedRecord);
    }

    // perform form lookup on the caller form control
    formRun = FormAutoLookupFactory::buildLookupFromCustomForm(stringControl, workerLookupForm , AbsoluteFieldBinding::construct(fieldStr(HcmWorker, PersonnelNumber), tableStr(HcmWorker)), args);
    stringControl.performFormLookup(formRun);

    //selectedRecord = formRun.selectRecordModeSelectedRecord();

}

Merging Two pdf file in AX 2012 through Code

// Merging Two pdf file in AX 2012 through Code

static void MergePDFs(Args _args)
{
    PdfSharp.Pdf.PdfDocument outPutPDFDocument = new PdfSharp.Pdf.PdfDocument(); // First u add pdfsharp.dll to AOT-->References , it can download from http://www.4shared.com/get/1LJNZy7i/pdfsharp.html?sd=true#
    PdfSharp.Pdf.PdfDocument inputPDFDocument = new PdfSharp.Pdf.PdfDocument();
    PdfSharp.Pdf.PdfPages pdfPages;
    container con = ["c:\\QUANTITATIVE APTITUDE.pdf","c:\\R S aggarwal verbal reasoning.pdf"]; // This has been hardcoded for now – use winapi::findfirstfile and next to get pdf’s -folder
    int i, j, pageCount;
    FileName pdfFile;
    InteropPermission permission;
    str errorMessage;
    ;

    try
    {
        permission = new InteropPermission(InteropKind::ClrInterop);
        permission.assert();
        for (i = 1; i <= conLen(con); i++)
        {
            pdfFile = conPeek(con,i);
            inputPDFDocument = PdfSharp.Pdf.IO.PdfReader::Open(pdfFile, PdfSharp.Pdf.IO.PdfDocumentOpenMode::Import);
            outputPDFDocument.set_Version(inputPDFDocument.get_Version());
            pageCount = inputPDFDocument.get_PageCount();
            pdfPages = inputPDFDocument.get_Pages();

            if (pageCount > 0)
            {
                for (j = 1 ; j <= pageCount; j++)
                {
                    outputPDFDocument.AddPage(pdfPages.get_Item(j));
                }
            }
        }
        outputPDFDocument.Save("c:\\mergedFile.pdf");
        CodeAccessPermission::revertAssert();
    }
    catch(Exception::CLRError)
    {
        // Get the CLR error before any other CLR operation
        errorMessage = AifUtil::getClrErrorMessage();
        CodeAccessPermission::revertAssert();
        throw error(errorMessage);
    }

}

How to get the count of number of pages printed on to SSRS report [AX 2012 , X++]

//How to get the count of number of pages printed on to SSRS report [AX 2012 , X++]

public void reportViewerRefreshComplete(SRSReportExecutionInfo _executionInfo)
{
    int page;
    super(_executionInfo);

    page = this.getReportContract().parmReportExecutionInfo().parmPrintedPhysicalPages();
    info("Total number of pages:" + int2str(page));
}

Test Dialog Enum Combo Box through Class

//TestDialogEnumComboBox

public class TestDialogEnumComboBox extends RunBaseBatch
{
    DialogEnumComboBox  dialogEnumComboBox;
    DialogField         dialogType;
    DialogRunBase dialog;
    SalesStatus salesStatus;


    #define.FieldNoTmp(600)
}
public Object dialog()
{
    Set enumSet = new Set(Types::Enum);
    dialog = super();


    dialogType = new DialogField(dialog, enumStr(SalesStatus), #FieldNoTmp);  
    dialog.addCtrlDialogField(dialogType.name());
    dialogType.init(dialog);
    dialogType.label("Sales status");
    dialogType.helpText("Select sales status.");
    dialogType.value();


    enumSet.add(SalesStatus::Canceled);
    enumSet.add(SalesStatus::Invoiced);


dialogEnumComboBox = DialogEnumComboBox::newParameters(null, dialogType.control().id(), enumNum(SalesStatus), enumSet, dialog.form());


    return dialog;
}
public void dialogPostRun(DialogRunbase _dialog)
{
    super(_dialog);  
    _dialog.dialogForm().formRun().controlMethodOverload(true);
    _dialog.dialogForm().formRun().controlMethodOverloadObject(this);
    _dialog.formRun().controlMethodOverload(true);
    _dialog.formRun().controlMethodOverloadObject(this);


    if (dialogEnumComboBox)
    {
        // Specify the formRun (at this point the formRun is already available)
        // This is needed to track selection in the comboBox
        dialogEnumComboBox.parmFormRun(dialog.dialogForm().formRun());


        // Select a specific entry in the comboBox, if needed
        dialogEnumComboBox.select(SalesStatus::Invoiced);


    }
}
public boolean getFromDialog()
{
    boolean ret;
    ret = super();


    if (dialogEnumComboBox)
    {
        salesStatus = dialogEnumComboBox.selection();
    }
    return ret;
}
client server static ClassDescription description()
{
    return "DialogEnumComboBox example";
}
public static void main(Args _args)

{

    SR_TestDialogEnumComboBox testDialogComboBox = new SR_TestDialogEnumComboBox();


    if (testDialogComboBox.prompt())
    {
        testDialogComboBox.run();
    }
}
public void run()
{
    info(enum2str(salesStatus));
}

Remove Aplhabet in Prefix and Suffix through X++

//Remove Aplhabet in Prefix and Suffix


static void removeAplhabetic_Prefix_Suffix(Args _args)
{
    int i = 0;
    int whereFound;
    str myString = "Sangeeth91004352000DynamicsAX";
    ;
    if(!isInteger(myString))
    {
        for(i=0 ; i < strlen(myString); i++)
        {
            whereFound = strnFind(myString, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" , 1, strLen(myString));
            if(whereFound > 1)
            {
                myString = strdel(myString,1,1);
            }
        }
        for(i=strlen(myString); i > 0; i--)
        {
            whereFound = strnFind(myString, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ,strLen(myString), -strLen(myString));
            if(whereFound <= strlen(myString)-1)
            {
                myString = strdel(myString,strlen(myString),1);
            }
        }
    }
    info(myString);
}

Export label custom content

 GRID => Properties "Export Label" => "SalesReportMexico" To get download file with custom naming.