25 May 2017

X++ code to get tax calculation in AX 2012 - Sales tax Line wise to get sales tax.

Tax::calcTaxAmount(salesLine.TaxGroup, salesLine.TaxItemGroup, Systemdateget(), salesLine.CurrencyCode, salesLine.LineAmount, TaxModuleType::Sales);


public TaxAmount taxValue1(SalesLine  _salesLine)
{
    TaxOnItem       TaxOnItem;
    TaxGroupData    TaxGroupData;
    real            TaxAmount;
    TaxValue        TaxValue;
    //SalesLine       SalesLine
    ;

    //select firstOnly from salesLine where salesLine.SalesId == 'YourSalesId';
    if(_salesLine.TaxItemGroup && _salesLine.TaxGroup && _salesLine.LineAmount != 0)
    {
        select TaxOnItem
            where TaxOnItem.TaxItemGroup == _salesLine.TaxItemGroup;      
            if(TaxOnItem)
            {
                select TaxGroupData
                    where TaxGroupData.TaxGroup == _salesLine.TaxGroup
                        && TaxGroupData.TaxCode  == TaxOnItem.TaxCode;
               
                if(TaxGroupData)
                {
                    TaxValue  =  TaxData::find(TaxOnItem.TaxCode, Systemdateget(), 0).TaxValue;
                    TaxAmount = (_salesLine.LineAmount * TaxValue) / 100;
                }
               
            }
       
    }
    return TaxValue;
}

X++ to to get financial dimension value using default dimension in AX 2012

#define.dimProductGroups("ProductGroups")
    #define.dimCostCenters("CostCenters")
    #define.dimDepartments("Departments")


private str getDimensionValue(RecId _dimensionDefault, Str dimName)
{
    DimensionAttributeValueSetStorage   dimStorage;
    Str                                 dimValue;
    Counter                             i;


    // DimensionDefault is a RecId that combines all Dimension Values
    dimStorage = DimensionAttributeValueSetStorage::find(_dimensionDefault);

    for (i= 1 ; i<= dimStorage.elements() ; i++)
    {
        if(DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == dimName)
        {
            dimValue = dimStorage.getDisplayValueByIndex(i);
        }
        if(DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == dimName)
        {
            dimValue = dimStorage.getDisplayValueByIndex(i);
        }
        if(DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name == dimName)
        {
            dimValue = dimStorage.getDisplayValueByIndex(i);
        }
    }

    return dimValue;
}

Calling:
salesDeliveryLinesTmp.ProductGroup      =   this.getDimensionValue(custPackingSlipTrans.DefaultDimension,#dimProductGroups);
    salesDeliveryLinesTmp.CostCenter        =   this.getDimensionValue(custPackingSlipTrans.DefaultDimension,#dimCostCenters);
    salesDeliveryLinesTmp.Department        =   this.getDimensionValue(custPackingSlipTrans.DefaultDimension,#dimDepartments);

====
Using Dimension name getting default dimension getting dimension value;

private DimensionValue ceDimensionProductGroup(DimensionDefault _dimensionDefault)
{
    DimensionValue                      value;
    DimensionAttributeValueSetStorage   dimStorage;
    int i;

    dimStorage = DimensionAttributeValueSetStorage::find(_dimensionDefault);

    for (i=1; i<=dimStorage.elements(); i++)
    {
        if (DimensionAttribute::findByName(CustParameters::find().CeDimensionReportValue3).Name == DimensionAttribute::find(dimStorage.getAttributeByIndex(i)).Name)
        {
            value = dimStorage.getDisplayValueByIndex(i);
        }
    }

    return value;
}



23 May 2017

SQL server 2012 BackUp database using compression query command


USE [MicrosoftDynamicsAX]
BACKUP DATABASE MicrosoftDynamicsAX
TO DISK = 'D:\Backup\Data\MicrosoftDynamicsAX_BackUp\MicrosoftDynamicsAX.bak'
WITH COPY_ONLY, COMPRESSION
GO


USE [MicrosoftDynamicsAX_model]
BACKUP DATABASE MicrosoftDynamicsAX_model
TO DISK = 'D:\Backup\Data\MicrosoftDynamicsAX_BackUp\MicrosoftDynamicsAX_model.bak'
WITH COPY_ONLY, COMPRESSION
GO

28 April 2017

How to get on hand inventory quantity or Available physical quantity in AX 2012

public InventQty onHandInventory(ItemId itemId, InventSiteId inventSiteId,InventLocationId inventLocation)
{
    InventOnhand    inventOnhand;
    InventDim       _inventDim;
    InventDimParm   inventDimParm;
    InventQty       availQty;
    //inventDim
    _inventDim.InventSiteId = inventSiteId;
    _inventDim.InventLocationId = inventLocation;
    inventDimParm.initFromInventDim(_inventDim);

    inventOnhand = inventOnhand::newParameters(itemId,_inventDim,inventDimParm);

    availQty = inventOnhand.availPhysical();
   // info(strFmt("%1",availQty));
    return availQty;

}

02 March 2017

how to add date range in query value in AX 2012

queryBuildRange = queryBuildDataSource.addRange(fieldNum(CustPackingSlipJour,DeliveryDate));
        queryBuildRange.value(queryRange(fromDate,toDate));
        //queryBuildRange.value(SysQuery::range(fromDate,toDate));

Refreshing SSRS report meta data in Dynamimcs AX 2012 || Refreshing code changes in reports objects in SSRS

When changing parameter or Parameter labels or added new parameter in the Contract class, do the following:
1. In VS, remember to change the prompting string for the parameter.
2. Refresh the Datasets.
3. Build the VS project.
4. Add the Report to the AOT.
5. Delete the Report from the Report Server.
6. Deploy the report in VS.
7. Most importantly, Compile the SSRSReport in the AOT.
8. Go to SSRS report and restore and check the properties: Changed Time is affected or not.
Query changes not affected means:


static void deleteSRSReportQuery(Args _args)
{
SRSReportQuery srsReportQuery;
ttsBegin;
while select forUpdate srsReportQuery
{
srsReportQuery.doDelete();
}
ttsCommit;
}

Service class to get the selected record and deleted matching records and refresh the form data source in D365 F&O

 [DataContractAttribute] class ABCUserProfilesBulkDeleteContract {         UserId userId;     [DataMemberAttribute('UserId')]     pu...