AX2012 / D365FnO – HOW TO CREATE AN ITEM OR PRODUCT AND RELEASE IT IN SPECIFIC COMPANY USING X++

D365fno-PostImage

In this blog, I will try to explain you, what is an item and product and how we can create it through X++ code in D365FnO and AX 2012.

Product is a master data record that represents a type of item that your company produces, sells, or uses in its operations. Products can be physical goods, services, or a combination of both. Products are defined in the system and are associated with various attributes such as a product number, name, description, unit of measure, cost, sales price, and other product-related information.

Item is a master data record that represents a specific instance of a product that your company has in inventory. Each item is associated with a unique item number, which can be used to track the item’s location, quantity, and other relevant information such as the date of manufacture, batch or serial number, and expiration date.

How to create an product / item using X++ in D365FnO or AX2012, you can follow the following code:

Create a new runnable class.

Copy the below code in the created class.

class CreationProductAndRelease
{
    public static void main(Args _args)
    {
      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.ProductType = EcoResProductType::Item;
          ecoResDistinctProduct.DisplayProductNumber = "Alex7";
          ecoResDistinctProduct.SearchName = "Alex7";
          if (ecoResDistinctProduct.DisplayProductNumber)
          {
              ecoResDistinctProduct.insert();
              ecoResProductIdentifier.ProductNumber = "Alex7";
              ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
              ecoResProductIdentifier.insert();
  
              //Storage dimension group
              ecoResStorageDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
              ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName("Ware").RecId;
              if (ecoResStorageDimensionGroupProduct.StorageDimensionGroup)
              {
                  ecoResStorageDimensionGroupProduct.insert();
              }
  
              //Tracking dimension group
              ecoResTrackingDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
              ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName("None").RecId;
              if (ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup)
              {
                  ecoResTrackingDimensionGroupProduct.insert();
              }
  
              EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProduct.RecId, "Alex7","Alex7");
              //Released product
              inventTable.initValue();
              inventTable.initFromEcoResProduct(ecoResDistinctProduct);
              inventTable.ItemId = "Alex7";
              inventTable.NameAlias = "Alex7";
              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 = "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!");
    }
}
This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.