Monday, 10 October 2016

To filter dimension value through code in ax 2012

qbdsProjTable = _query.dataSourceTable(tableNum(ProjTable));
           
        SysQuery::addDimensionAttributeRange(_query, qbdsProjTable.name(), fieldStr(ProjTable, DefaultDimension), DimensionComponent::DimensionAttribute, "Diving", "LineofBusiness", true);

Wednesday, 5 October 2016

Find Dimension Name based on default dimemsion

The following method can be created in DimensionDefaultingEngine class and used wherever required.



public static SysDim  umg_DefaultDimensionValue(DimensionDefault   _dimensionDefault, Description  _segmentName)
{
    DimensionAttributeValueSetStorage       dimensionStorage;
    Counter                                 i;
    SysDim                                  segmentValue;

    // Get dimension storage
    if (_dimensionDefault)
    {
        dimensionStorage = DimensionAttributeValueSetStorage::find(_dimensionDefault);
        for (i=1 ; i<= dimensionStorage.elements() ; i++)
        {
            if (DimensionAttribute::find(dimensionStorage.getAttributeByIndex(i)).Name == _segmentName)
            {
                segmentValue = dimensionStorage.getDisplayValueByIndex(i);
                break;
            }
            else
            {
                segmentValue = '';
            }
        }
    }
    return segmentValue;
}

Tuesday, 5 July 2016

Sales order creation using console apllication

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SalesOrderCreation.ServiceReference1;

namespace SalesOrderCreation
{
    class Program
    {
        static void Main(string[] args)
        {
            CreateSalesOrder();
        }
        static void CreateSalesOrder()
        {
            SalesOrderServiceClient client = new SalesOrderServiceClient();
               
            CallContext cc = new CallContext();
            cc.Company = "BM01";
            ServiceReference1.AxdSalesOrder so = new AxdSalesOrder();
          
            AxdEntity_SalesTable salesTable = new AxdEntity_SalesTable();

            AxdEntity_SalesLine salesLine = new AxdEntity_SalesLine();

            salesTable.CustAccount = "C000000007";
            salesTable.InvoiceAccount = "C000000007";

            salesTable.CurrencyCode = "USD";

            salesTable.ReceiptDateRequested = System.DateTime.Today;

            salesTable.Payment = "10D";
            salesTable.PurchOrderFormNum = "DevSuneela";

            salesLine.ItemId = "123456";
            

            salesLine.SalesQty = 20;

            salesLine.SalesUnit = "ea";
                      
            salesTable.SalesLine = new AxdEntity_SalesLine[] { salesLine };

            so.SalesTable = new AxdEntity_SalesTable[] { salesTable };

            so.DocPurpose = AxdEnum_XMLDocPurpose.Original;

            so.DocPurposeSpecified = true;
                       
            
            client.create(cc, so);

           
        }

    }
}

Thursday, 16 June 2016

Filter dimension values based on the dimension selected

To Filter standard and custom dimension values based on the dimension selected


public void lookup(FormControl _formControl, str _filterStr)
{

SysTableLookup sysTableLookup;

Query query;

QueryBuildDataSource qbdsDimensionFinancialTag,qbds,qbds1,qbds2;

QueryBuildRange qbrFinancialTagCategory;
 
//standard

DimensionAttributeValueSetItem valueSetItem;

DimensionAttribute dimAttribute;

DimensionAttributeValue dimAttributeValue;
 
str name,value;

container con;

OMOperatingUnit operatingUnit;
 
//standard

#define.MyCustomFinancialDimension('MyCustomFinancialDimension')

if( DimensionAttribute::findByName(Table1_Dimension.valueStr()).Type == DimensionAttributeType::CustomList)

{
 
query = new Query();

qbdsDimensionFinancialTag = query.addDataSource(tableNum(DimensionFinancialTag));

qbrFinancialTagCategory = qbdsDimensionFinancialTag.addRange(fieldNum(DimensionFinancialTag, FinancialTagCategory));

qbrFinancialTagCategory.value(strFmt('%1', DimensionAttribute::findByName(Table1_Dimension.valueStr(), false).financialTagCategory()));

sysTableLookup = sysTableLookup::newParameters(tableNum(DimensionFinancialTag), _formControl);

sysTableLookup.addLookupfield(fieldNum(DimensionFinancialTag, Value), true);

sysTableLookup.addLookupfield(fieldNum(DimensionFinancialTag, Description));

sysTableLookup.addSelectionField(fieldNum(DimensionFinancialTag, FinancialTagCategory));

sysTableLookup.parmQuery(query);

sysTableLookup.performFormLookup();

}
   else

{



value = Table1_Dimension.valueStr();


 
if(value == "CostCenter")

{
 
sysTableLookup = sysTableLookup::newParameters(tableNum(DimAttributeOMCostCenter), _formControl);

query = new query();

qbds = query.addDataSource(tableNum(DimAttributeOMCostCenter));

qbds.addRange(fieldNum(DimAttributeOMCostCenter,Value)).value(SysQuery::valueUnlimited());

sysTableLookup.addLookupfield(fieldNum(DimAttributeOMCostCenter, Value), true);
           

sysTableLookup.parmQuery(query);

sysTableLookup.performFormLookup();

}
 
if(value == "Brand")

{
 
sysTableLookup = sysTableLookup::newParameters(tableNum(DimAttributeOMDepartment), _formControl);

query = new query();

qbds = query.addDataSource(tableNum(DimAttributeOMDepartment));

qbds.addRange(fieldNum(DimAttributeOMDepartment,Value)).value(SysQuery::valueUnlimited());

sysTableLookup.addLookupfield(fieldNum(DimAttributeOMDepartment, Value), true);
         

sysTableLookup.parmQuery(query);

sysTableLookup.performFormLookup();

}

}

}
 


 

Wednesday, 8 June 2016

To append string using computed column in View

public static server str POConfirmationJournal()

{
TableName viewName = tableStr(DESPurchOpenLines);
return SysComputedColumn::add(SysComputedColumn::returnField(viewName,identifierStr(PurchTable),fieldStr(PurchTable,PurchId)),
SysComputedColumn::cast(SysComputedColumn::returnLiteral('-1'), 'VARCHAR'));
 
}
 
 
 


 

Tuesday, 24 May 2016

To find Minimum DateTime from all records of a table

DateTimeUtil::applyTimeZoneOffset(vendPurchOrderJour.DESPODateTime, DateTimeUtil::getUserPreferredTimeZone());

Tuesday, 10 May 2016

Create lookup form and add the lookup form to the form control in AX 2012

1. To create lookup form, first create a query(Optional) with the required data sources and appropriate relations.
2. Create a lookup form with the query as datasource. Set the style property of the design to Lookup.
3. In the form init(), the following code has to be written after Super()

    element.selectMode(DirPartyTable_Name);

where DirPartyTable_Name is control in the grid.
4.Go the form control for which lookup form needs to be assigned(Navigate to the control in the design list ) and override lookupReference(Lookup) based on the field type and add the following code in the method
public Common lookupReference()
{

    Args                args;
    FormRun             formRun;
    DirPartyTable       selectedRecord;

    args = new Args();
    args.name(formStr(SalesRepLookup));
    args.caller(element);

    formRun = classfactory.formRunClass(args);
    formRun.init();
    formRun.selectRecordMode(this);
    this.performFormLookup(formRun);

    selectedRecord = formRun.selectRecordModeSelectedRecord();

    return selectedRecord;
}
That's it we are done with the lookup form.