Showing posts with label Product master. Show all posts
Showing posts with label Product master. Show all posts

Monday, December 9, 2013

How to create Product master using x++ code

We can create product master using x++ code. I have used below code in one of my implementation.



private void createProductMaster(itemId                        _itemId,
                                 DataAreaId                    _dataAreaId = curext()
                                )
{
    EcoResProductService                    ecoResProdService;
    EcoResEcoResProduct                     ecoResProduct;
    EcoResEcoResProduct_Product_Master      prodMaster;
    EcoResEcoResProduct_Translation         translation;
    EcoResEcoResProduct_Identifier          identifier;
    EcoResEcoResProduct_ProductDimGroup     prodDimGroup;
    EcoResEcoResProduct_StorageDimGroup     storageDimGroup;
    EcoResEcoResProduct_TrackingDimGroup    trackingDimensionGroup;
    InventTable                             localInventTable;
    ;

    if (!this.isProductAlreadyExists() && this.getItemId())
    {
        localInventTable = InventTable::find(_itemId);
        //Initialize the service object
        changeCompany(_dataAreaId)
        {
            ecoResProdService = EcoResProductService::construct();
            ecoResProduct     = new EcoResEcoResProduct();
            prodMaster        = new EcoResEcoResProduct_Product_Master();

            //Newly created and initialize prodMaster

            prodMaster.parmDisplayProductNumber(this.getItemId());
            prodMaster.parmProductType(EcoResProductType::Item);
            prodMaster.parmSearchName(this.getItemId());

            //Create a new translation object:
            Translation = prodMaster.createTranslation().addNew();

            Translation.parmDescription(this.getItemLongDescription());
            Translation.parmLanguageId(CompanyInfo::languageId());
            Translation.parmName(this.getItemShortDescription());
            Identifier = prodMaster.createIdentifier().addNew();

            Identifier.parmProductNumber(this.getItemId());
            if (localInventTable.productDimensionGroup())
            {
                ProdDimGroup = prodMaster.createProductDimGroup().addNew();
                ProdDimGroup.parmProduct(this.getItemId());
                ProdDimGroup.parmProductDimensionGroup(EcoResProductDimensionGroup::find(localInventTable.productDimensionGroup()).Name);
            }

            if (localInventTable.storageDimensionGroup())
            {
                if (EcoResStorageDimensionGroup::find(localInventTable.storageDimensionGroup()).Name)
                {
                    storageDimGroup = prodMaster.createStorageDimGroup().addNew();
                    storageDimGroup.parmProduct(this.getItemId());
                    storageDimGroup.parmStorageDimensionGroup(EcoResStorageDimensionGroup::find(localInventTable.storageDimensionGroup()).Name);
                }
            }

            if (localInventTable.trackingDimensionGroup())
            {
                if (EcoResTrackingDimensionGroup::find(localInventTable.trackingDimensionGroup()).Name)
                {
                    trackingDimensionGroup = prodMaster.createTrackingDimGroup().addNew();
                    trackingDimensionGroup.parmProduct(this.getItemId());
                    trackingDimensionGroup.parmTrackingDimensionGroup(EcoResTrackingDimensionGroup::find(localInventTable.trackingDimensionGroup()).Name);
                }
            }

            prodMaster.parmVariantConfigurationTechnology(EcoResVariantConfigurationTechnologyType::ConstraintBased);
            ecoResProduct.createProduct().add(prodMaster);
            ecoResProdService.create(ecoResProduct);
            }
        }
}

Sunday, December 8, 2013

How to convert Product master to Product in Ax2012


In One of my implementation I was having a requirement in this I had to convert product master to product across the companies. You can find in below code how we can do this.


public void convertProductMasterToProduct(ItemId    _itemId,
                                          str       _supplyCompany = "",
                                          str       _demandCompany = "")
{
    EcoResProductMaster             master;
    EcoResDistinctProduct           distinctProduct;
    EcoResProductTranslation        productTranslation;
    InventTable                     inventtable;
    EcoResProductIdentifier         productIdentifier;
    str                             text;
    str                             shortText;
    ;

    ttsBegin;

    master = EcoResProductMaster::find(inventtable::find(_itemId).Product, true);

    if (master)
    {
        distinctProduct.clear();
        distinctProduct.initValue();
        distinctProduct.DisplayProductNumber = master.DisplayProductNumber;
        distinctProduct.SearchName = master.SearchName;
        distinctProduct.ProductType = EcoResProductType::Item;
        text = EcoResProductTranslation::findByProductLanguage(master.RecId, CompanyInfo::languageId()).Description;
        shortText = EcoResProductTranslation::findByProductLanguage(master.RecId, CompanyInfo::languageId()).Name;
        master.delete();
        distinctProduct.insert();

       productTranslation.clear();
       productTranslation.initValue();
       productTranslation.LanguageId = CompanyInfo::find().LanguageId;
       productTranslation.Name = shortText;
       productTranslation.Product = distinctProduct.RecId;
       productTranslation.Description = text;
       productTranslation.insert();

       productIdentifier.clear();
       productIdentifier.initValue();
       productIdentifier.ProductNumber = _itemId;
       productIdentifier.Product = distinctProduct.RecId;
       productIdentifier.insert();
        if (_supplyCompany)
        {
            changeCompany(_supplyCompany)
            {
                inventTable = InventTable::find(_itemId, true);
                if (inventtable)
                {
                    InventTable.Product = distinctProduct.RecId;
                    inventtable.StandardConfigId = "";
                    InventTable.update();
                }
            }
        }
        if (_demandCompany)
        {
            changeCompany(_demandCompany)
            {
                inventTable = InventTable::find(_itemId, true);
                if (inventtable)
                {
                    InventTable.Product = distinctProduct.RecId;
                    inventtable.StandardConfigId = "";
                    InventTable.update();

                }
            }
        }
    }
    ttsCommit;


}