Home
»
Microsoft Dynamics AX
»
AX WONDERS
»
Create Product / Product Masters AX 2012
Create Product / Product Masters AX 2012
About
About AX WONDERS
Microsoft Dynamics AX, Sharepoint and .NET (C#, ASP.NET) development blog.
Options
RSS for posts
Related Posts
create Product master by using X++ , AX 2012
by
Gaurav Pandey
on
10 Oct 2012
0
comments
Field 'Configuration technology' must be filled in. | AIF Product Master Create
by
SilvanoD
on
12 Oct 2011
Not Answered
Product-item data management services
by
Ievgenii Korovin
on
6 Jul 2011
0
comments
View More
Create Product / Product Masters AX 2012
Eduardo Arias
3 Jan 2013 5:03 PM
Comments
0
Hi There,
I hope everyone had a great new year and that you are ready for a new one full of challenges, and good things.
In this post I would like to discuss how to create product and product masters in AX 2012. Sometimes our requirements vary depending on the customer, and more often than not, we need to provide a dynamic option to create either a
product
or a
product master
.
So, what is the definition of these two terms?
Product
: This is the simpler of the two. They do not need product dimension groups when created.
Product Master
: This type must contain product dimension groups; otherwise you’ll get a run-time
error at the time the EcoResService is called.
The
product dimension
groups
can be Color, Size, Style and Configuration. In addition, you can create any other dimension group. In my example, a user created a dimension group called “Revision”, which is the chosen one for this example. This shows how flexible AX2012 is around product dimensions.
The following code takes two parameters. One is the product name (which has a custom EDT), and the product sub type (is it product or product master). Further, to achieve this we will use the following classes:
EcoResEcoResProduct_TrackingDimGroup
EcoResEcoResProduct_Product_Master
EcoResEcoResProduct_Product_Distinct
EcoResEcoResProduct_ProductDimGroup
EcoResEcoResProduct_StorageDimGroup
EcoResEcoResProduct_translation
EcoResEcoResProduct_Identifier
EcoResProductService
The
EcoResEcoResProduct_Product_Master
(
http://msdn.microsoft.com/en-us/library/ecoresecoresproduct_product_master.aspx
) class is in charge of creating the new Product Master, and the
EcoResEcoResProduct_Product_Distinct
(
http://msdn.microsoft.com/en-us/library/ecoresecoresproduct_product_distinct.aspx
) class is in charge of creating the Product. These records are going to be created in the
EcoResProduct
Table.
As you probably know by now, even these records exist in the EcoResProduct table, they
haven’t been release
to AX just yet.
Moving right along, we will be using the
EcoResProductService
class (
http://msdn.microsoft.com/en-us/library/ecoresproductservice.aspx
) to actually create the product in the EcoResProduct Table.
/// <summary>
/// Creates a new product in EcoResProduct
/// </summary>
/// <returns>
///
/// </returns>
/// <remarks>
///
/// </remarks>
/// <exception cref="Exception::Error">
/// Throws error upon Exception.
/// </exception>
public static void CreateEcoResProduct(ProductName _ecmProductName, EcoResProductSubtype prodSubType)
{
EcoResEcoResProduct_TrackingDimGroup tracDimGroup;
EcoResEcoResProduct_Product_Master productMaster;
EcoResEcoResProduct_Product_Distinct distMaster;
EcoResEcoResProduct_ProductDimGroup prodDimGroup;
EcoResEcoResProduct_StorageDimGroup storDimGroup;
EcoResEcoResProduct_translation translation;
EcoResEcoResProduct_Identifier identifier;
EcoResProductService ecoProdSvc;
EcoResProductNumber lEcoResProductNumber;
NumberSequenceTable numberSequenceTable;
EcoResEcoResProduct ecoResProd;
EcoResProductType ecoResProductType;
boolean isMaster = false;
;
try
{
// create product by initializing the Service object
ecoProdSvc = EcoResProductService::construct();
// initialize the EcoResEcoResProduct object
ecoResProd = new EcoResEcoResProduct();
numberSequenceTable = EcoResProductParameters::numRefProductNumber().numberSequenceTable();
lEcoResProductNumber = NumberSeq::newGetNumFromId(numberSequenceTable.RecId).num();
ecoResProductType = EcoResProductType::Item;
if(
prodSubType == EcoResProductSubtype::ProductMaster
)
{
isMaster = true;
//Create a new product master
productMaster = new EcoResEcoResProduct_Product_Master();
//initialize product master
productMaster.parmDisplayProductNumber(lEcoResProductNumber);
productMaster.parmProductType(ecoResProductType);
productMaster.parmSearchName(_ecmProductName);
productMaster.parmVariantConfigurationTechnology(EcoResVariantConfigurationTechnologyType::PredefinedVariants);
//create a product master Translation Object
translation = productMaster.createTranslation().addNew();
// create a new identifier object
Identifier = productMaster.createIdentifier().AddNew();
// Create the ProductDimensionGroup
prodDimGroup = productMaster.createProductDimGroup().addNew();
prodDimGroup.parmProduct(lEcoResProductNumber);
prodDimGroup.parmProductDimensionGroup('Revision');
// Create the StorageDimgroup object
storDimGroup = productMaster.createStorageDimGroup().addNew();
storDimGroup.parmProduct(lEcoResProductNumber);
storDimGroup.parmStorageDimensionGroup("S-W-L");
// Create the TrackingDimGroup object
tracDimGroup = productMaster.createTrackingDimGroup().addNew();
tracDimGroup.parmProduct(lEcoResProductNumber);
tracDimGroup.parmTrackingDimensionGroup("none");
}
else
{
// Create a new product distinct master
distMaster = new EcoResEcoResProduct_Product_Distinct();
// Take the newly created and initialize ProdMaster - variable and fill with product data
distMaster.parmDisplayProductNumber(lEcoResProductNumber);
distMaster.parmProductType(ecoResProductType);
distMaster.parmSearchName(_ecmProductName);
// Create a translation object
translation = distMaster.createTranslation().addNew();
// Create a new identifier object
Identifier = distMaster.createIdentifier().addNew();
// Create the StorageDimgroup object
storDimGroup = distMaster.createStorageDimGroup().addNew();
storDimGroup.parmProduct(lEcoResProductNumber);
storDimGroup.parmStorageDimensionGroup("S-W-L");
// Create the TrackingDimGroup object
tracDimGroup = distMaster.createTrackingDimGroup().addNew();
tracDimGroup.parmProduct(lEcoResProductNumber);
tracDimGroup.parmTrackingDimensionGroup("None");
}
// fill the translation object
translation.parmDescription(_ecmProductName);
translation.parmLanguageId('en-us');
//translati
translation.parmName(_ecmProductName);
// fill the identifier
identifier.parmProductNumber(lEcoResProductNumber);
// add the product to ecoResProd
if(isMaster)
ecoResProd.createProduct().add(productMaster);
else
ecoResProd.createProduct().add(distMaster);
// create the product using service
ecoProdSvc.create(ecoResProd);
}
catch(Exception::Error)
{
throw Exception::Error;
}
catch(Exception::Deadlock)
{
retry;
}
catch(Exception::UpdateConflict)
{
if(appl.ttsLevel() == 0)
{
if(xSession::currentRetryCount() >= 4)
{
throw Exception::UpdateConflictNotRecovered;
}
else
{
retry;
}
}
else
{
throw Exception::UpdateConflict;
}
}
}
Happy New Year and until the next time!
$core_v2_language.FormatString($core_v2_language.GetResource('Blog_PostQuestionAnswerView_CommentsCountFormatString'), $post.CommentCount)
Read the complete post at
axwonders.blogspot.com/.../hi-there-i-hope-everyone-had-great-new.html
Dynamics ERP 2012
,
AX 2012
,
AX 2012 Guide
,
Product Management
,
Create Products AX 2012
,
Products
,
EcoReProductService
,
EcoResProduct
,
Product Masters