Thursday, 10 December 2015

Assign ProductDimenssionGroup for the ProductMaster:
static void ProductVariant(Args _args)
{
    ecoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantDimensionValue  EcoResProductVariantDimensionValue;
    RefRecId                            ecoResDistinctProductVariantRecId;
    EcoResProductReleaseManagerBase     releaseManager;
    container productDimensions;
    InventTable     inventtable;
    EcoResProductMasterColor       ecoResProductMasterColor;
    EcoResProductDimensionGroupProduct  ecoResProductDimensionGroupProduct;


    inventtable = InventTable::find("AA0330LEN08");

    ecoResProductDimensionGroupProduct = EcoResProductDimensionGroupProduct::findByProduct(EcoResProduct::find(InventTable.Product).RecId);
    if(!ecoResProductDimensionGroupProduct)
    {
        ecoResProductDimensionGroupProduct.clear();
        ecoResProductDimensionGroupProduct.initValue();
        ecoResProductDimensionGroupProduct.initFromProduct(EcoResProduct::find(InventTable.Product));
        ecoResProductDimensionGroupProduct.ProductDimensionGroup =  EcoResProductDimensionGroup::findByDimensionGroupName("CLR").RecId;
        ecoResProductDimensionGroupProduct.validateWrite();
        ecoResProductDimensionGroupProduct.insert();
    }

    ecoResProductMasterColor.clear();
    ecoResProductMasterColor.initValue();
    ecoResProductMasterColor.Color = EcoResColor::findByName("RED").Recid;
    ecoResProductMasterColor.ColorProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
    ecoResProductMasterColor.ColorProductMaster = EcoResProduct::find(InventTable.Product).RecId;
    ecoResProductMasterColor.insert();
   
    productDimensions = EcoResProductVariantDimValue::getDimensionValuesContainer("","","RED","");
    ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
                                                                   EcoResProduct::find(InventTable.Product).productNumber(),
                                                                    productDimensions);
    ecoResDistinctProductVariantRecId = EcoResProductVariantManager::createProductVariant(InventTable.Product,ecoResDistinctProductVariant.DisplayProductNumber,productDimensions);

    ecoResDistinctProductVariant = ecoResDistinctProductVariant::find(ecoResDistinctProductVariantRecId);
    releaseManager = EcoResProductReleaseManagerBase::newFromProduct(ecoResDistinctProductVariant);
    releaseManager.release();
}
Create & Release Product through X++
static void CreatandReleaseProduct(Args _args)
{
    #define.ProductNum()
    #define.SearchName()
    #define.StorageDim()
    #define.TrackingDim()
    #define.ItemId()
    #define.NameAlias()
    #define.ModelGroup()
    #define.ItemGroup()
    EcoResDistinctProduct               ecoResDistinctProduct;
    EcoResProductIdentifier             ecoResProductIdentifier;
    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
    InventTable                         inventTable;
    InventTableModule                   inventTableModule;
    InventItemSetupSupplyType           inventItemSetupSupplyType;
    EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;
    InventModelGroupItem                inventModelGroupItem;
    InventItemGroupItem                 inventItemGroupItem;
    try
    {
        //Product
        ecoResDistinctProduct.clear();
        ecoResDistinctProduct.initValue();
        ecoResDistinctProduct.ProductType = EcoResProductType::Item;
        ecoResDistinctProduct.DisplayProductNumber = 'AA0330LEN55';
        ecoResDistinctProduct.SearchName = 'AA0330LEN55';
        if (ecoResDistinctProduct.validateWrite())
        {
            ecoResDistinctProduct.insert();
            ecoResProductIdentifier.clear();
            ecoResProductIdentifier.initValue();
            ecoResProductIdentifier.ProductNumber = 'AA0330LEN55';
            ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
            ecoResProductIdentifier.insert();
            //Storage dimension group
            ecoResStorageDimensionGroupProduct.clear();
            ecoResStorageDimensionGroupProduct.initValue();
            ecoResStorageDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
            ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName('SiteWH').RecId;
            if (ecoResStorageDimensionGroupProduct.validateWrite())
            {
                ecoResStorageDimensionGroupProduct.insert();
            }
            //Tracking dimension group
            ecoResTrackingDimensionGroupProduct.clear();
            ecoResTrackingDimensionGroupProduct.initValue();
            ecoResTrackingDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
            ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName('b&S').RecId;
            if (ecoResTrackingDimensionGroupProduct.validateWrite())
            {
                ecoResTrackingDimensionGroupProduct.insert();
            }
            EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProduct.RecId, 'AA0330LEN55','AA0330LEN55');
            //Released product
            inventTable.clear();
            inventTable.initValue();
            inventTable.initFromEcoResProduct(ecoResDistinctProduct);
            inventTable.ItemId = 'AA0330LEN55';
            inventTable.NameAlias = 'AA0330LEN55';
            if (inventTable.validateWrite())
            {
                inventTable.insert();
                //Inventory model group
                inventModelGroupItem.clear();
                inventModelGroupItem.initValue();
                inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                inventModelGroupItem.ItemId = inventTable.ItemId;
                inventModelGroupItem.ModelGroupId = 'LIFO';
                inventModelGroupItem.ModelGroupDataAreaId = curext();
                inventModelGroupItem.insert();
                //Item group
                inventItemGroupItem.clear();
                inventItemGroupItem.initValue();
                inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                inventItemGroupItem.ItemId = inventTable.ItemId;
                inventItemGroupItem.ItemGroupId = 'Parts';
                inventItemGroupItem.ItemGroupDataAreaId = curext();
                inventItemGroupItem.insert();
                //Extended product details – Inventory
                inventTableModule.clear();
                inventTableModule.initValue();
                inventTableModule.ItemId = inventTable.ItemId;
                inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
                inventTableModule.insert();
                //Extended product details – Purchase
                inventTableModule.clear();
                inventTableModule.initValue();
                inventTableModule.ItemId = inventTable.ItemId;
                inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
                inventTableModule.insert();
                //Extended product details – Sales
                inventTableModule.clear();
                inventTableModule.initValue();
                inventTableModule.ItemId = inventTable.ItemId;
                inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
                inventTableModule.insert();
                //Warehouse items
                InventItemLocation::createDefault(inventTable.ItemId);
                //Supply type setup
                inventItemSetupSupplyType.clear();
                inventItemSetupSupplyType.initValue();
                inventItemSetupSupplyType.ItemId = inventTable.ItemId;
                inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
                inventItemSetupSupplyType.insert();
                //Product storage dimension group
                ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResDistinctProduct.RecId);
                if (ecoResStorageDimensionGroupProduct.RecId)
                {
                    ecoResStorageDimensionGroupItem.clear();
                    ecoResStorageDimensionGroupItem.initValue();
                    ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                    ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
                    ecoResStorageDimensionGroupItem.StorageDimensionGroup   = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
                    ecoResStorageDimensionGroupItem.insert();
                }
                //Product tracking dimension group
                ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResDistinctProduct.RecId);
                if (ecoResTrackingDimensionGroupProduct.RecId)
                {
                    ecoResTrackingDimensionGroupItem.clear();
                    ecoResTrackingDimensionGroupItem.initValue();
                    ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                    ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
                    ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
                    ecoResTrackingDimensionGroupItem.insert();
                }
            }
        }
    }
    catch
    {
        error('Error!');
        return;
    }
    info('Done!');
}
Import Product &Released through X++ 
static void Productdataimport(Args _args)
{
    #AviFiles
    SysOperationProgress progress       = new SysOperationProgress();
    SysExcelApplication                 application;
    SysExcelWorkbooks                   workbooks;
    SysExcelWorkbook                    workbook;
    SysExcelWorksheets                  worksheets;
    SysExcelWorksheet                   worksheet;
    SysExcelWorkSheet                   workSheetInventTableModule;
    SysExcelCells                       cellsInventTableModule;
    SysExcelCells                       cells;
    COMVariantType                      type;
    COMVariantType                      typeModule;
    EcoResProduct                       ecoResProduct;
    EcoResProductMaster                 ecoResProductMaster;
    EcoResProductIdentifier             ecoResProductIdentifier;
    EcoResProductDimensionGroupProduct  ecoResProductDimensionGroupProduct;
    EcoResProductMasterModelingPolicy   ecoResProductMasterModelingPolicy;
    EcoResProductMasterColor            ecoResProductMasterColor;
    EcoResColor                         ecoResColor;

    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;

    EcoResConfiguration                 ecoResConfiguration;
    EcoResProductMasterConfiguration    ecoResProductMasterConfiguration;

    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantConfiguration   ecoResProductVariantConfiguration;

    InventTable                         inventTable;
    InventTableModule                   inventTableModule;
    InventItemSetupSupplyType           inventItemSetupSupplyType;

    EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;
    EcoResDistinctProduct               ecoResDistinctProduct;

    InventModelGroupItem                inventModelGroupItem;
    InventItemGroupItem                 inventItemGroupItem;

    InventDim                           inventDim;
    InventDimCombination                inventDimCombination;
    EcoResCategory                      ecoResCategory;
    EcoResProductSubtype                productSubtype,EcoResProductSubtype;
    EcoResProductType                                   productType;
    EcoResVariantConfigurationTechnologyType            ecoResVariantConfigurationTechnologyType;
    EcoResProductDimensionGroup                         ecoResProductDimensionGroup;

    EcoResStorageDimensionGroup                         ecoResStorageDimensionGroup;
    EcoResEcoResProduct_Product_Master      productMaster;
    EcoResEcoResProduct_Product_Distinct    distMaster;
    EcoResProductDisplayProductNumber       productNumber;
    EcoResEcoResProduct                     ecoResProd;
    ItemId                                  itemid;
    RecId                                   recid;
    Name                                    name;
    EcoResProductSearchName                 SearchName;
    EcoResCategoryName                      categoryName;
    InventModelGroupId                      inventModelGroupId;
    ItemGroupId                             itemGroupId;
    //EcoResStorageDimensionGroupRecId        storageDimensionGroupRecId;
    EcoResStorageDimensionGroupName         storageDimensionGroupName;
    EcoResTrackingDimensionGroupName        trackingDimensionGroupName;
    EcoResProductDimensionGroupName         productDimensionGroupName;
    UnitOfMeasureSymbol                     unitOfMeasureSymbol1,unitOfMeasureSymbol2,unitOfMeasureSymbol3;
    TaxItemGroup                            taxItemGroup1,taxItemGroup2;
    ItemProdGroupId                         prodGroupId;
    EcoResItemColorName                     itemColorName;
    ItemBuyerGroupId                        buyerGroupId;
    IntrastatItemCodeId                     intrastatItemCodeId;
    ItemOrigCountryRegionId                 countryRegionId;
    InventNumGroupId                        inventNumGroupId;
    PdsLeadTimeAdvice                       pdsLeadTimeAdvice;
    PmfProductType                          pmfProductType;
    ReqGroupId                              reqGroupId;
    boolean                                 isMaster = false;
    container                               Item1, offsetaccount1;
    str                 productProductMaster,ProductDimensionGroup,StorageDimensionGroup,TrackingDimensionGroup;
    Struct struct       = new Struct();
    container           ledgerDimension;
    DimensionDefault    DimensionDefault;


    //DataEntryForm DataEntryForm1;
    int row = 1;
    FileIoPermission perm;
    //dipl_monthsofyear months;
    //year1 year1;
    //Country Country2;
    #define.Filename(@'D:\Imp\Book1.xls')
    #define.FileMode('W')
    ;

    perm = new FileIOPermission(#FileName, #FileMode);
    perm.assert();
    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    try
    {
        workbooks.open(#Filename);
    }
    catch (Exception::Error)
    {
        throw error("File cannot be opened.");
    }
    workbook = workbooks.item(1);
    worksheets = workbook.worksheets();
    worksheet = worksheets.itemFromNum(1);
    cells = worksheet.cells();

    progress.setAnimation(#AviTransfer);
    try
    {
        ttsbegin;
        do
        {
            row++;

            if (row >= 1)
            {
                productType                 = str2enum(productType, any2str(cells.item(row, 1).value().bStr()));
                //productProductMaster        =  (any2str(cells.item(row, 2).value().bStr()));
                productSubtype              = str2enum(ProductSubtype,cells.item(row, 2).value().bStr());
                productNumber               = any2str(cells.item(row, 3).value().bStr());
                itemid                      = any2str(cells.item(row, 4).value().bStr());
                name                        = any2str(cells.item(row, 5).value().bStr());
                SearchName                  = any2str(cells.item(row, 6).value().bStr());
                categoryName                = any2str(cells.item(row, 7).value().bStr());
                inventModelGroupId          = any2str(cells.item(row, 8).value().bStr());
                itemGroupId                 = any2str(cells.item(row, 9).value().bStr());
                storageDimensionGroupName   = any2str(cells.item(row, 10).value().bStr());
                trackingDimensionGroupName  = any2str(cells.item(row, 11).value().bStr());
                productDimensionGroupName   = any2str(cells.item(row, 12).value().bStr());
                unitOfMeasureSymbol1        = any2str(cells.item(row, 13).value().bStr());
                unitOfMeasureSymbol2        = any2str(cells.item(row, 14).value().bStr());
                unitOfMeasureSymbol3        = any2str(cells.item(row, 15).value().bStr());
                taxItemGroup1               = any2str(cells.item(row, 16).value().bStr());
                taxItemGroup2               = any2str(cells.item(row, 17).value().bStr());
                prodGroupId                 = any2str(cells.item(row, 18).value().bStr());
                itemColorName               = any2str(cells.item(row, 21).value().bStr());
                buyerGroupId                = any2str(cells.item(row, 22).value().bStr());
                intrastatItemCodeId         = any2str(cells.item(row, 26).value().bStr());
                countryRegionId             = any2str(cells.item(row, 27).value().bStr());
                inventNumGroupId            = any2str(cells.item(row, 28).value().bStr());
                //pdsLeadTimeAdvice           = any2str(cells.item(row, 29).value().bStr());
                pmfProductType              = str2enum(pmfProductType, any2str(cells.item(row, 30).value().bStr()));
                reqGroupId                  = any2str(cells.item(row, 32).value().bStr());
                //ProductMaster
                ecoResProductMaster.clear();
                ecoResProductMaster.initValue();
                //ecoResProductMaster.ProductType = EcoResProductType::Item;
                //ecoResProductMaster.pr
               // ecoResProductSubtype =  any2str(cells.item(row, 2).value().bStr());
                //str2enum(EcoResProductSubtype, any2str(cells.item(row, 2).value().bStr()));
                //if(EcoResProductSubtype::Product == str2enum(EcoResProductSubtype, any2str(cells.item(row, 2).value().bStr())))
                //ecoResProductMaster.ProductType =  str2enum(productType, any2str(cells.item(row, 1).value().bStr()));

                //ecoResProductMaster.ProductType         = productType;

             if(productType == EcoResProductType::Item )//|| productType == EcoResProductType::Service)
                {
                    if(productSubtype == EcoResProductSubtype::Product)
                    {

                    ecoResDistinctProduct.clear();
                    ecoResDistinctProduct.initValue();
                    ecoResDistinctProduct.ProductType =  productType;
                    ecoResDistinctProduct.DisplayProductNumber = productNumber;
                    ecoResDistinctProduct.SearchName = name;
                        if (ecoResDistinctProduct.validateWrite())
                        {
                        ecoResDistinctProduct.insert();
                        ecoResProductIdentifier.clear();
                        ecoResProductIdentifier.initValue();
                        ecoResProductIdentifier.ProductNumber = productNumber;
                        ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
                        ecoResProductIdentifier.insert();
                        ecoResStorageDimensionGroupProduct.clear();
                        ecoResStorageDimensionGroupProduct.initValue();
                        ecoResStorageDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                        ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName(storageDimensionGroupName).RecId;
                        if (ecoResStorageDimensionGroupProduct.validateWrite())
                            {
                                ecoResStorageDimensionGroupProduct.insert();
                            }
            //Tracking dimension group
                        ecoResTrackingDimensionGroupProduct.clear();
                        ecoResTrackingDimensionGroupProduct.initValue();
                        ecoResTrackingDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                        ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName(trackingDimensionGroupName).RecId;
                        if (ecoResTrackingDimensionGroupProduct.validateWrite())
                            {
                                ecoResTrackingDimensionGroupProduct.insert();
                            }
            EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProduct.RecId, name,name);
            //Released product
            inventTable.clear();
            inventTable.initValue();
            inventTable.initFromEcoResProduct(ecoResDistinctProduct);
            inventTable.ItemId = itemid;
            inventTable.NameAlias = name;
                if (inventTable.validateWrite())
                {
                    inventTable.insert();
                    //Inventory model group
                    inventModelGroupItem.clear();
                    inventModelGroupItem.initValue();
                    inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    inventModelGroupItem.ItemId = inventTable.ItemId;
                    inventModelGroupItem.ModelGroupId = inventModelGroupId;
                    inventModelGroupItem.ModelGroupDataAreaId = curext();
                    inventModelGroupItem.insert();
                    //Item group
                    inventItemGroupItem.clear();
                    inventItemGroupItem.initValue();
                    inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    inventItemGroupItem.ItemId = inventTable.ItemId;
                    inventItemGroupItem.ItemGroupId = itemGroupId;
                    inventItemGroupItem.ItemGroupDataAreaId = curext();
                    inventItemGroupItem.insert();
                    //Extended product details – Inventory
                    inventTableModule.clear();
                    inventTableModule.initValue();
                    inventTableModule.ItemId = inventTable.ItemId;
                    inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
                    inventTableModule.insert();
                    //Extended product details – Purchase
                    inventTableModule.clear();
                    inventTableModule.initValue();
                    inventTableModule.ItemId = inventTable.ItemId;
                    inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
                    inventTableModule.insert();
                    //Extended product details – Sales
                    inventTableModule.clear();
                    inventTableModule.initValue();
                    inventTableModule.ItemId = inventTable.ItemId;
                    inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
                    inventTableModule.insert();
                    //Warehouse items
                    InventItemLocation::createDefault(inventTable.ItemId);
                    //Supply type setup
                    inventItemSetupSupplyType.clear();
                    inventItemSetupSupplyType.initValue();
                    inventItemSetupSupplyType.ItemId = inventTable.ItemId;
                    inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
                    inventItemSetupSupplyType.insert();
                    //Product storage dimension group
                    ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResDistinctProduct.RecId);
                            if (ecoResStorageDimensionGroupProduct.RecId)
                            {
                                ecoResStorageDimensionGroupItem.clear();
                                ecoResStorageDimensionGroupItem.initValue();
                                ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                                ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
                                ecoResStorageDimensionGroupItem.StorageDimensionGroup   = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
                                ecoResStorageDimensionGroupItem.insert();
                            }
                    //Product tracking dimension group
                    ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResDistinctProduct.RecId);
                            if (ecoResTrackingDimensionGroupProduct.RecId)
                            {
                                ecoResTrackingDimensionGroupItem.clear();
                                ecoResTrackingDimensionGroupItem.initValue();
                                ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                                ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
                                ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
                                ecoResTrackingDimensionGroupItem.insert();
                            }
                    }
                        }

                     


                    }}}
 
                type = cells.item(row+1, 1).value().variantType();
            }
            while (type != COMVariantType::VT_EMPTY);
        ttscommit;
        }
    catch(Exception::Error)
    {
        workbooks.close();
        CodeAccessPermission::revertAssert();
        application.quit();
        ttsabort;
    }
    workbooks.close();
    CodeAccessPermission::revertAssert();
    application.quit();
}

Sunday, 6 December 2015

Excel read through x++ in ax2012:
static void ReadExcelFile(Args _args)
{
SysExcelApplication excel;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells,Rowcell;
COMVariantType type;
int row;
CustAccount account;
CustName name;

#define.filename(@"D:\ReadExcel.xlsx")
     // convert into str from excel cell value
 //str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
    //{
    //switch (_cv.variantType())
    //{
    //case (COMVariantType::VT_BSTR):
    //return _cv.bStr();
    //case (COMVariantType::VT_R4):
    //return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
    //case (COMVariantType::VT_R8):
    //return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
    //case (COMVariantType::VT_DECIMAL):
    //return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
    //case (COMVariantType::VT_DATE):
    //return date2str(_cv.date(),123,2,1,2,1,4);
    //case (COMVariantType::VT_EMPTY):
    //return "";
    //default:
    //throw error(strfmt("@SYS26908", _cv.variantType()));
    //}
    //return "";
    //}
    //;
    //
 
 
try
{
excel = SysExcelApplication::construct();
workbooks = excel.workbooks();
workbooks.open(#filename);
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
//row = 1; 
type = cells.item(row+1, 1).value().variantType();
while (type != COMVariantType::VT_EMPTY)
{
row++;

    if(type == COMVariantType::VT_BSTR )
    {
        account = strFmt("%1", cells.item(row, 1).value().bStr());
    }
    else
    {
        account =num2str((cells.item(row, 1).value().double()),0,0,0,0);
    }  

name = cells.item(row, 2).value().bStr();
info(strFmt('%1 - %2', account, name));
type = cells.item(row+1, 1).value().variantType();
}
excel.quit();
}
catch
{
if (workbook)
{
workbook.close();
}
if (excel)
{
excel.quit();
}
}

}

Friday, 4 December 2015

using x++ create and release ProductMaster:


static void ProductMastersReleasedProduct(Args _args)
{
    EcoResProductMaster                 ecoResProductMaster;
    EcoResProductIdentifier             ecoResProductIdentifier;
    EcoResProductDimensionGroupProduct  ecoResProductDimensionGroupProduct;
    EcoResProductMasterModelingPolicy   ecoResProductMasterModelingPolicy;

    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;

    EcoResConfiguration                 ecoResConfiguration;
    EcoResProductMasterConfiguration    ecoResProductMasterConfiguration;

    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantConfiguration   ecoResProductVariantConfiguration;

    InventTable                         inventTable;
    InventTableModule                   inventTableModule;
    InventItemSetupSupplyType           inventItemSetupSupplyType;

    EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;

    InventModelGroupItem                inventModelGroupItem;
    InventItemGroupItem                 inventItemGroupItem;

    InventDim                           inventDim;
    InventDimCombination                inventDimCombination;

    try
    {
        //ProductMaster
        ecoResProductMaster.clear();
        ecoResProductMaster.initValue();

        ecoResProductMaster.ProductType = EcoResProductType::Item;
        ecoResProductMaster.DisplayProductNumber = "S6Testing";
        ecoResProductMaster.SearchName = "S6Testing";
        ecoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;

        if (ecoResProductMaster.validateWrite())
        {
            ecoResProductMaster.insert();

            ecoResProductIdentifier.clear();
            ecoResProductIdentifier.initValue();

            ecoResProductIdentifier.ProductNumber = "S6Testing";
            ecoResProductIdentifier.Product = ecoResProductMaster.RecId;

            ecoResProductIdentifier.insert();

            //Product dimension group
            ecoResProductDimensionGroupProduct.clear();
            ecoResProductDimensionGroupProduct.initValue();
            ecoResProductDimensionGroupProduct.initFromProduct(ecoResProductMaster);

            ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductDimensionGroup::findByDimensionGroupName("Config").RecId;

            if (ecoResProductDimensionGroupProduct.validateWrite())
            {
                ecoResProductDimensionGroupProduct.insert();
            }

            //Storage dimension group
            ecoResStorageDimensionGroupProduct.clear();
            ecoResStorageDimensionGroupProduct.initValue();
            ecoResStorageDimensionGroupProduct.Product = ecoResProductMaster.RecId;

            ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName("site").RecId;

            if (ecoResStorageDimensionGroupProduct.validateWrite())
            {
                ecoResStorageDimensionGroupProduct.insert();
            }

            //Tracking dimension group
            ecoResTrackingDimensionGroupProduct.clear();
            ecoResTrackingDimensionGroupProduct.initValue();
            ecoResTrackingDimensionGroupProduct.Product = ecoResProductMaster.RecId;

            ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName("Btch").RecId;

            if (ecoResTrackingDimensionGroupProduct.validateWrite())
            {
                ecoResTrackingDimensionGroupProduct.insert();
            }

            //Product modeling policy
            ecoResProductMasterModelingPolicy.clear();
            ecoResProductMasterModelingPolicy.initValue();

            ecoResProductMasterModelingPolicy.ProductMaster = ecoResProductMaster.RecId;

            if (ecoResProductMasterModelingPolicy.validateWrite())
            {
                ecoResProductMasterModelingPolicy.insert();
            }

            //Product translation
            EcoResProductTranslation::createOrUpdateTranslation(ecoResProductMaster.RecId, "S6Testing", "S6Testing");

            //Configuration
            ecoResConfiguration = EcoResConfiguration::findByName("STest-1");

            if (!ecoResConfiguration)
            {
                ecoResConfiguration.clear();
                ecoResConfiguration.initValue();
                ecoResConfiguration.Name = "STest-1";
                ecoResConfiguration.insert();
            }

            //Configuration assigned to product master
            ecoResProductMasterConfiguration.clear();
            ecoResProductMasterConfiguration.initValue();
            ecoResProductMasterConfiguration.Configuration = ecoResConfiguration.RecId;
            //ecoResProductMasterConfiguration.Description = "STest-1";
            ecoResProductMasterConfiguration.ConfigProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
            ecoResProductMasterConfiguration.ConfigProductMaster = ecoResProductMaster.RecId;
            ecoResProductMasterConfiguration.insert();

            //Product variant
            ecoResDistinctProductVariant.clear();
            ecoResDistinctProductVariant.initValue();
            ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
                ecoResProductMaster.productNumber(),
                EcoResProductVariantDimValue::getDimensionValuesContainer("STest-1", "", ""));
            ecoResDistinctProductVariant.SearchName = ecoResProductMaster.SearchName + "STest-1"/*ConfigId*/;
            ecoResDistinctProductVariant.ProductType = ecoResProductMaster.ProductType;
            ecoResDistinctProductVariant.ProductMaster = ecoResProductMaster.RecId;
            ecoResDistinctProductVariant.insert();

            //Product variant configuration
            ecoResProductVariantConfiguration.clear();
            ecoResProductVariantConfiguration.initValue();
            ecoResProductVariantConfiguration.initFromDistinctProductVariant(ecoResDistinctProductVariant);
            ecoResProductVariantConfiguration.ProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
            ecoResProductVariantConfiguration.Configuration = ecoResConfiguration.RecId;
            ecoResProductVariantConfiguration.insert();

            //Product variant translation
            EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProductVariant.RecId, "STesting", "STesting");

            //Released product
            inventTable.clear();
            inventTable.initValue();

            inventTable.initFromEcoResProduct(ecoResProductMaster);

            inventTable.ItemId = "S001";
            inventTable.NameAlias = "STesting";
            //inventTable.editTMSInventEnabled(true,NoYes::Yes);

            if (inventTable.validateWrite())
            {
                inventTable.insert();

                //Inventory model group
                inventModelGroupItem.clear();
                inventModelGroupItem.initValue();
                inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                inventModelGroupItem.ItemId = inventTable.ItemId;
                inventModelGroupItem.ModelGroupId = "FIFO";
                inventModelGroupItem.ModelGroupDataAreaId = curext();
                inventModelGroupItem.insert();

                //Item group
                inventItemGroupItem.clear();
                inventItemGroupItem.initValue();
                inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                inventItemGroupItem.ItemId = inventTable.ItemId;
                inventItemGroupItem.ItemGroupId = "Audio";
                inventItemGroupItem.ItemGroupDataAreaId = curext();
                inventItemGroupItem.insert();

                //Extended product details - Inventory
                inventTableModule.clear();
                inventTableModule.initValue();
                inventTableModule.ItemId = inventTable.ItemId;
                inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
                inventTableModule.insert();

                //Extended product details - Purchase
                inventTableModule.clear();
                inventTableModule.initValue();
                inventTableModule.ItemId = inventTable.ItemId;
                inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
                inventTableModule.insert();

                //Extended product details - Sales
                inventTableModule.clear();
                inventTableModule.initValue();
                inventTableModule.ItemId = inventTable.ItemId;
                inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
                inventTableModule.insert();

                //Warehouse items
                InventItemLocation::createDefault(inventTable.ItemId);

                //Supply type setup
                inventItemSetupSupplyType.clear();
                inventItemSetupSupplyType.initValue();
                inventItemSetupSupplyType.ItemId = inventTable.ItemId;
                inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
                inventItemSetupSupplyType.insert();

                //Product storage dimension group
                ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResProductMaster.RecId);

                if (ecoResStorageDimensionGroupProduct.RecId)
                {
                    ecoResStorageDimensionGroupItem.clear();
                    ecoResStorageDimensionGroupItem.initValue();
                    ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                    ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
                    ecoResStorageDimensionGroupItem.StorageDimensionGroup   = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
                    ecoResStorageDimensionGroupItem.insert();
                }

                //Product tracking dimension group
                ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResProductMaster.RecId);

                if (ecoResTrackingDimensionGroupProduct.RecId)
                {
                    ecoResTrackingDimensionGroupItem.clear();
                    ecoResTrackingDimensionGroupItem.initValue();
                    ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                    ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
                    ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
                    ecoResTrackingDimensionGroupItem.insert();
                }
            }

            inventDim.clear();
            inventDim.ConfigId = "STest-1";/*ConfigId*/
            inventDim = InventDim::findOrCreate(inventDim);

            //Released product variant
            inventDimCombination.clear();
            inventDimCombination.initValue();
            inventDimCombination.DistinctProductVariant = ecoResDistinctProductVariant.RecId;
            inventDimCombination.ItemId = inventTable.ItemId;
            inventDimCombination.InventDimId = inventDim.InventDimId;
            inventDimCombination.insert();
        }
    }
    catch
    {
        error("Error!");
        return;
    }

    info("Done!");
}

http://dynamicsaxspaingermany.blogspot.in/2013/05/creating-product-master-with-variants.html

Wednesday, 2 December 2015

List of tables in form grid:
Here I want to get the list of AOT tables  in my form.
First i have created a table with table type Inmemory.
I have created a field in that table i.e Tablename.
I have created a form using that table as datasource.
I have created a button in design and have override Clicked().

Clicked():
void clicked()
{
    Dictionary   dictionary;
    TableId         tableId;
    TableName       tableName;
    TmpTablesList       objTest;
    TmpTablesList       obj;
    dictionary = new dictionary();
    tableId = dictionary.tableNext(0);
    tableName = dictionary.tableName(tableId);

    while(tableId)
    {
        objTest.clear();

        //info(strFmt("%1 - %2",int2str(tableId),tableName));
        objTest.TableName = tableName;
        //obj.Tablename = tableId;
        objTest.insert();
        info(strFmt("%1 ",objTest.TableName));
        tableId = dictionary.tableNext(tableId);
        tableName= dictionary.tableName(tableId);
        if(tableId==10)
            break;
    }
    TmpTablesList.setTmpData(objTest);


    TmpTablesList_ds.executeQuery();
    super();

  }


Tuesday, 1 December 2015

Creation of customer through x++ code
static void JobCreateCustomer (Args _args)
{
    CustTable                    custTable;
    NumberSeq                    numberSeq;
    Name                         name ='SouthSide Street LTDA';

    DirParty                        dirParty;
    DirPartyPostalAddressView       dirPartyPostalAddressView;
    DirPartyContactInfoView         dirPartyContactInfo;

    /* Marks the beginning of a transaction.
       Necessary to utilize the method numRefCustAccount() */
    ttsBegin;
    custTable.initValue();

   try
    {
       //CustTable
        numberSeq               = NumberSeq::newGetNum(CustParameters::numRefCustAccount());
        custTable.AccountNum    = numberSeq.num();
        custTable.CustGroup     ='020';
        custTable.Currency      ='BRL';
        custTable.PaymTermId    ='10DD';
        custTable.PaymMode      ='CHEQUE-01';

        custTable.insert(DirPartyType::Organization, name);

        //DirParty

        /* Creates a new instance of the DirParty class from an address book entity
           that is represented by the custTable parameter. */
        dirParty = DirParty::constructFromCommon(custTable);

        dirPartyPostalAddressView.LocationName      ='HeadQuarters ';
        dirPartyPostalAddressView.City              ='São Paulo';
        dirPartyPostalAddressView.Street            ='4th Avenue';
        dirPartyPostalAddressView.StreetNumber      ='18';
        dirPartyPostalAddressView.CountryRegionId   ='BRA';
        dirPartyPostalAddressView.State             ='SP';

        // Fill address
        dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView);

        dirPartyContactInfo.LocationName    ='SouthStreet Contact Phone';
        dirPartyContactInfo.Locator         ='551291165341';
        //dirPartyContactInfo.Type          = LogisticsElectronicAddressMethodType::Phone;
        dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Phone;
        dirPartyContactInfo.IsPrimary       = NoYes::Yes;

        // Fill Contacts
        dirParty.createOrUpdateContactInfo(dirPartyContactInfo);

        // Marks the end of transaction.
        ttsCommit;
    }
    catch(Exception::Error)
    {
       ttsAbort;

    }

}