static void
CreateEcoResProduct(Args _args)
{
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;
EcoResProductSearchName _ecmProductName;
EcoResProductSubtype prodSubType;
;
prodSubType =
EcoResProductSubtype::ProductMaster;
_ecmProductName = " IDB test 09";
lEcoResProductNumber = "IDB -099";
try
{
//
create product by initializing the Service object
ecoProdSvc = EcoResProductService::construct();
//
initialize the EcoResEcoResProduct object
ecoResProd = new EcoResEcoResProduct();
//
numberSequenceTable =
EcoResProductParameters::numRefProductNumber().numberSequenceTable(); //
Automated
// lEcoResProductNumber =
NumberSeq::newGetNumFromId(numberSequenceTable.RecId).num(); // Automated
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.parmProductType(EcoResProductType::Service);
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('Con-Dim');
//
Create the StorageDimgroup object
storDimGroup = productMaster.createStorageDimGroup().addNew();
storDimGroup.parmProduct(lEcoResProductNumber);
storDimGroup.parmStorageDimensionGroup("Con-Dim");
// Storage dimension group
//
Create the TrackingDimGroup object
tracDimGroup = productMaster.createTrackingDimGroup().addNew();
tracDimGroup.parmProduct(lEcoResProductNumber);
tracDimGroup.parmTrackingDimensionGroup("Con-Dim"); //
Tracking dimension group
}
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("Con-Dim");
// Create the TrackingDimGroup object
tracDimGroup = distMaster.createTrackingDimGroup().addNew();
tracDimGroup.parmProduct(lEcoResProductNumber);
tracDimGroup.parmTrackingDimensionGroup("Con-Dim");
}
//
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;
}
}
}Above code creates the record for product in EcoResProduct Table and Once you get the data in product form(EcoResProduct -Table) you can easily release those product in specified company in a single go, by selecting multiple products. It doesn't take much time as well. Release product will be saved in InventTable.
Else use the below method. Pass all the required parameters and get the required result
public container createProduct(str60 _product,
str60 _productname,
str60 _searchname,
str60 _desc,
str60 _color,
str60 _size,
str60 _style,
str60 _site,
str60 _warehouse,
Str60 _vendorId,
str60 _externalDesc,
str60 _countingGroup,
str60 _defaultReceipt,
str60 _defaultIssue,
str60 _defaultLocation,
str60 _productDimension,
str60 _sizeGrpId,
str60 _styleGrpId,
str60 _approveStatus,
str60 _category)
{
EcoResProductService erProdSvc;
EcoResEcoResProduct EcoResProd;
EcoResEcoResProduct_Product_Master ProdMast;
EcoResEcoResProduct_Translation Translation;
EcoResEcoResProduct_Identifier Identifier;
EcoResEcoResProduct_ProductDimGroup ProdDimGroup;
boolean isVariantExist = false;
InventDim inventDim;
InventDimCombination inventDimCombination;
container productDimensions,displayNumber,ret,sizeColorStyle;
EcoResDistinctProductVariant ecoResDistinctProductVariant;
EcoResProductVariantDimensionValue EcoResProductVariantDimensionValue;
RefRecId ecoResDistinctProductVariantRecId;
EcoResProductReleaseManagerBase releaseManager;
CompanyInfo companyInfo;
EcoResProductTranslation productTranslation;
RecId color,size,style;
Inventtable inventtable;
PdsVendorCheckItem vendorCheckItem;
EcoResCategory ecoResCategory;
RetailAttributesGlobalLookup retailAttributesGlobalLookup;
CreateProducMaster productMaste = new CreateProducMaster();
ttsBegin;
if(!EcoResProduct::findByDisplayProductNumber(_product).RecId)
{
//Initialize the service object
erProdSvc = EcoResProductService::construct();
EcoResProd = new EcoResEcoResProduct();
ProdMast = new EcoResEcoResProduct_Product_Master();
//ProdDimGroup = new EcoResEcoResProduct_ProductDimGroup();
//Newly created and initialize prodMast
ProdMast.parmDisplayProductNumber(_product);
ProdMast.parmProductType(EcoResProductType::Item);
ProdMast.parmSearchName(_searchname);
//Create a new translation object:
Translation = ProdMast.createTranslation().addNew();
Translation.parmDescription(_desc);
Translation.parmLanguageId('en-us');
Translation.parmName(_productname);
Identifier = ProdMast.createIdentifier().addNew();
Identifier.parmProductNumber(_product);
ProdDimGroup = ProdMast.createProductDimGroup().addNew();
ProdDimGroup.parmProduct(_product);
ProdDimGroup.parmProductDimensionGroup(_productDimension);
ProdMast.parmVariantConfigurationTechnology(EcoResVariantConfigurationTechnologyType::PredefinedVariants);
EcoResProd.createProduct().add(ProdMast);
erProdSvc.create(EcoResProd);
}
select * from ecoResCategory where ecoResCategory.Name == _category;
select * from retailAttributesGlobalLookup where retailAttributesGlobalLookup.Category == ecoResCategory.RecId;
sizeColorStyle = productMaste.insertProductDimension(_product,_color,_size,_style,retailAttributesGlobalLookup.VariantColorGroup
,retailAttributesGlobalLookup.VariantSizeGroup,retailAttributesGlobalLookup.VariantStyleGroup);
color = conPeek(sizeColorStyle,1);
size = conPeek(sizeColorStyle,2);
style = conPeek(sizeColorStyle,3);
if(!color)
_color = '';
if(!size)
_size = '';
if(!style)
_style ='';
productDimensions = EcoResProductVariantDimValue::getDimensionValuesContainer('',_size,_color,_style);
//if(EcoResProductVariantManager::checkNotExistDistinctProductVariant(EcoResProduct::findByDisplayProductNumber(_product).RecId,
//productDimensions) && color && size && style)
if(!EcoResProductVariantManager::findDistinctProductVariant(EcoResProduct::findByDisplayProductNumber(_product).RecId, productDimensions).RecId && color && size && style)
{
ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
_product,
productDimensions);
ecoResDistinctProductVariantRecId = EcoResProductVariantManager::createProductVariant(EcoResProduct::findByDisplayProductNumber(_product).RecId
,ecoResDistinctProductVariant.DisplayProductNumber,productDimensions);
}
if(!InventTable::find(_product).RecId)
{
EcoResProductReleaseManagerBase::releaseProduct(EcoResProduct::findByDisplayProductNumber(_product).RecId
,CompanyInfo::findDataArea(curext()).RecId);
}
select inventtable where inventtable.ItemId == _product;
if(inventtable)
{
inventtable.selectForUpdate(true);
inventtable.PdsVendorCheckItem = str2enum(vendorCheckItem,_approveStatus);
inventtable.doUpdate();
}
if(size && color && style)
{
inventDim.InventSizeId = _size;
inventDim.InventColorId = _color;
inventDim.InventStyleId = _style;
isVariantExist = true;
}
inventDim.InventSiteId = _site;
inventDim.InventLocationId = _warehouse;
inventDim = InventDim::findOrCreate(inventDim);
if(!InventDimCombination::find(_product,inventDim.InventDimId).RecId && ecoResDistinctProductVariantRecId)
{
// create InventDimCombination
inventDimCombination.DistinctProductVariant = ecoResDistinctProductVariantRecId;
inventDimCombination.ItemId = _product;
inventDimCombination.InventDimId = inventDim.InventDimId;
inventDimCombination.Insert();
}
ttsCommit;
ret = [inventDim.InventDimId,ecoResDistinctProductVariantRecId,isVariantExist];
return ret;
}
No comments:
Post a Comment