Import the ProductAndProductmaster Through x++
static void ImportProductAndProductmaster(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;
EcoResDistinctProduct ecoResDistinctProduct;
EcoResColor ecoResColor;
EcoResProductMasterColor ecoResProductMasterColor;
EcoResProductVariantColor ecoResProductVariantColor;
EcoResColorName ecoResColorName;
EcoResStorageDimensionGroupProduct ecoResStorageDimensionGroupProduct;
EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
EcoResConfiguration ecoResConfiguration;
EcoResProductMasterConfiguration ecoResProductMasterConfiguration;
EcoResDistinctProductVariant ecoResDistinctProductVariant;
EcoResProductVariantConfiguration ecoResProductVariantConfiguration;
//EcoResStorageDimensionGroupName ecoResStorageDimensionGroupName;
EcoResProductDimensionGroupName ecoResProductDimensionGroupName;
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;
InventTable inventTable;
InventTableModule inventTableModule;
InventItemSetupSupplyType inventItemSetupSupplyType;
EcoResStorageDimensionGroupItem ecoResStorageDimensionGroupItem;
EcoResTrackingDimensionGroupItem ecoResTrackingDimensionGroupItem;
InventModelGroupItem inventModelGroupItem;
InventItemGroupItem inventItemGroupItem;
InventDim inventDim;
InventDimCombination inventDimCombination;
EcoResCategory ecoResCategory;
EcoResProductSubtype productSubtype;
EcoResProductType productType;
EcoResVariantConfigurationTechnologyType ecoResVariantConfigurationTechnologyType;
EcoResProductDimensionGroup ecoResProductDimensionGroup;
//PmfProductType pmfProductType;
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;
// TrackingDimensionGroup trackingDimensionGroup;
UnitOfMeasureSymbol unitOfMeasureSymbol;
boolean isMaster = false;
container Item1, offsetaccount1;
str ProductDimensionGroup,StorageDimensionGroup,TrackingDimensionGroup;
Struct struct = new Struct();
container ledgerDimension;
DimensionDefault DimensionDefault;
int row = 1;
FileIoPermission perm;
#define.Filename(@'D:\Released Product.xlsx')
#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()));
productSubtype = str2enum(productSubtype, any2str(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 = any2int(cells.item(row, 29).value().bStr());
pmfProductType = str2enum(pmfProductType, any2str(cells.item(row, 30).value().bStr()));
reqGroupId = any2str(cells.item(row, 32).value().bStr());
if(productType == EcoResProductType::Item || productType == EcoResProductType::Service)
{
if(productSubtype == EcoResProductSubtype::Product)
{
ecoResDistinctProduct.clear();
ecoResDistinctProduct.initValue();
ecoResDistinctProduct.ProductType = EcoResProductType::Item;
ecoResDistinctProduct.DisplayProductNumber = productNumber;
ecoResDistinctProduct.SearchName = Name;
if (ecoResDistinctProduct.validateWrite())
{
ecoResDistinctProduct.insert();
ecoResProductIdentifier.clear();
ecoResProductIdentifier.initValue();
ecoResProductIdentifier.ProductNumber = productNumber;
ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
ecoResProductIdentifier.insert();
//Storage dimension group
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;
inventTable.ItemBuyerGroupId = buyerGroupId;
inventTable.ProdGroupId = prodGroupId;
inventTable.ReqGroupId = reqGroupId;
inventTable.PmfProductType = pmfProductType;
inventTable.OrigCountryRegionId = countryRegionId;
inventTable.BatchNumGroupId = inventNumGroupId;
inventTable.StandardInventColorId = itemColorName;
inventTable.Intracode = intrastatItemCodeId;
inventTable.PdsShelfAdvice = any2int(cells.item(row, 29).value().bStr());
//inventTable.editTMSInventEnabled = any2str(cells.item(row, 34).value().bStr());
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();
}
}
}
}
else if(productSubtype == EcoResProductSubtype::ProductMaster || productSubtype == EcoResProductSubtype::ProductVariant)
{
ecoResProductMaster.clear();
ecoResProductMaster.initValue();
ecoResProductMaster.ProductType = EcoResProductType::Item;
ecoResProductMaster.DisplayProductNumber = productNumber;
ecoResProductMaster.SearchName = Name;
ecoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;
if (ecoResProductMaster.validateWrite())
{
ecoResProductMaster.insert();
ecoResProductIdentifier.clear();
ecoResProductIdentifier.initValue();
ecoResProductIdentifier.ProductNumber = productNumber;
ecoResProductIdentifier.Product = ecoResProductMaster.RecId;
ecoResProductIdentifier.insert();
//Product dimension group
ecoResProductDimensionGroupProduct.clear();
ecoResProductDimensionGroupProduct.initValue();
ecoResProductDimensionGroupProduct.initFromProduct(ecoResProductMaster);
ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductDimensionGroup::findByDimensionGroupName(productDimensionGroupName).RecId;
if (ecoResProductDimensionGroupProduct.validateWrite())
{
ecoResProductDimensionGroupProduct.insert();
}
//Storage dimension group
ecoResStorageDimensionGroupProduct.clear();
ecoResStorageDimensionGroupProduct.initValue();
ecoResStorageDimensionGroupProduct.Product = ecoResProductMaster.RecId;
ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName(storageDimensionGroupName).RecId;
if (ecoResStorageDimensionGroupProduct.validateWrite())
{
ecoResStorageDimensionGroupProduct.insert();
}
//Tracking dimension group
ecoResTrackingDimensionGroupProduct.clear();
ecoResTrackingDimensionGroupProduct.initValue();
ecoResTrackingDimensionGroupProduct.Product = ecoResProductMaster.RecId;
ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName(trackingDimensionGroupName).RecId;
if (ecoResTrackingDimensionGroupProduct.validateWrite())
{
ecoResTrackingDimensionGroupProduct.insert();
}
ecoResProductMasterModelingPolicy.clear();
ecoResProductMasterModelingPolicy.initValue();
ecoResProductMasterModelingPolicy.ProductMaster = ecoResProductMaster.RecId;
if (ecoResProductMasterModelingPolicy.validateWrite())
{
ecoResProductMasterModelingPolicy.insert();
}
//Product translation
EcoResProductTranslation::createOrUpdateTranslation(ecoResProductMaster.RecId, Name, Name);
//Color
ecoResColor = EcoResColor::findByName(itemColorName);
if(!ecoResColor)
{
ecoResColor.clear();
ecoResColor.initvalue();
ecoResColor.name = itemColorName;
ecoResColor.insert();
}
//Color assigned to product master
ecoResProductMasterColor.clear();
ecoResProductMasterColor.initValue();
ecoResProductMasterColor.Color = ecoResColor.RecId;
ecoResProductMasterColor.ColorProductDimensionAttribute =EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
ecoResProductMasterColor.ColorProductMaster = ecoResProductMaster.RecId;
ecoResProductMasterColor.insert();
ecoResDistinctProductVariant.clear();
ecoResDistinctProductVariant.initValue();
ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
ecoResProductMaster.productNumber(),
EcoResProductVariantDimValue::getDimensionValuesContainer("", "", itemColorName));
ecoResDistinctProductVariant.SearchName = ecoResProductMaster.SearchName + itemColorName/*ColorId*/;
ecoResDistinctProductVariant.ProductType = ecoResProductMaster.ProductType;
ecoResDistinctProductVariant.ProductMaster = ecoResProductMaster.RecId;
ecoResDistinctProductVariant.insert();
//Product variant color
ecoResProductVariantColor.clear();
ecoResProductVariantColor.clear();
ecoResProductVariantColor.initValue();
ecoResProductVariantColor.initFromDistinctProductVariant(ecoResDistinctProductVariant);
ecoResProductVariantColor.ProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
ecoResProductVariantColor.Color = ecoResColor.RecId;
ecoResProductVariantColor.insert();
//Released product
inventTable.clear();
inventTable.initValue();
inventTable.initFromEcoResProduct(ecoResProductMaster);
inventTable.ItemId = itemid;
inventTable.NameAlias = name;
inventTable.ItemBuyerGroupId = buyerGroupId;
inventTable.ProdGroupId = prodGroupId;
inventTable.ReqGroupId = reqGroupId;
inventTable.PmfProductType = pmfProductType;
inventTable.OrigCountryRegionId = countryRegionId;
inventTable.BatchNumGroupId = inventNumGroupId;
inventTable.StandardInventColorId = itemColorName;
inventTable.Intracode = intrastatItemCodeId;
inventTable.PdsShelfAdvice = any2int(cells.item(row, 29).value().bStr());
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(ecoResProductMaster.RecId);
if (ecoResStorageDimensionGroupProduct.RecId)
{
ecoResStorageDimensionGroupItem.clear();
ecoResStorageDimensionGroupItem.initValue();
ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResStorageDimensionGroupItem.StorageDimensionGroup = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
ecoResStorageDimensionGroupItem.insert();
}
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.InventColorId = itemColorName;/*ColorId*/
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();
}
}
}
}
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();
}
static void ImportProductAndProductmaster(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;
EcoResDistinctProduct ecoResDistinctProduct;
EcoResColor ecoResColor;
EcoResProductMasterColor ecoResProductMasterColor;
EcoResProductVariantColor ecoResProductVariantColor;
EcoResColorName ecoResColorName;
EcoResStorageDimensionGroupProduct ecoResStorageDimensionGroupProduct;
EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
EcoResConfiguration ecoResConfiguration;
EcoResProductMasterConfiguration ecoResProductMasterConfiguration;
EcoResDistinctProductVariant ecoResDistinctProductVariant;
EcoResProductVariantConfiguration ecoResProductVariantConfiguration;
//EcoResStorageDimensionGroupName ecoResStorageDimensionGroupName;
EcoResProductDimensionGroupName ecoResProductDimensionGroupName;
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;
InventTable inventTable;
InventTableModule inventTableModule;
InventItemSetupSupplyType inventItemSetupSupplyType;
EcoResStorageDimensionGroupItem ecoResStorageDimensionGroupItem;
EcoResTrackingDimensionGroupItem ecoResTrackingDimensionGroupItem;
InventModelGroupItem inventModelGroupItem;
InventItemGroupItem inventItemGroupItem;
InventDim inventDim;
InventDimCombination inventDimCombination;
EcoResCategory ecoResCategory;
EcoResProductSubtype productSubtype;
EcoResProductType productType;
EcoResVariantConfigurationTechnologyType ecoResVariantConfigurationTechnologyType;
EcoResProductDimensionGroup ecoResProductDimensionGroup;
//PmfProductType pmfProductType;
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;
// TrackingDimensionGroup trackingDimensionGroup;
UnitOfMeasureSymbol unitOfMeasureSymbol;
boolean isMaster = false;
container Item1, offsetaccount1;
str ProductDimensionGroup,StorageDimensionGroup,TrackingDimensionGroup;
Struct struct = new Struct();
container ledgerDimension;
DimensionDefault DimensionDefault;
int row = 1;
FileIoPermission perm;
#define.Filename(@'D:\Released Product.xlsx')
#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()));
productSubtype = str2enum(productSubtype, any2str(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 = any2int(cells.item(row, 29).value().bStr());
pmfProductType = str2enum(pmfProductType, any2str(cells.item(row, 30).value().bStr()));
reqGroupId = any2str(cells.item(row, 32).value().bStr());
if(productType == EcoResProductType::Item || productType == EcoResProductType::Service)
{
if(productSubtype == EcoResProductSubtype::Product)
{
ecoResDistinctProduct.clear();
ecoResDistinctProduct.initValue();
ecoResDistinctProduct.ProductType = EcoResProductType::Item;
ecoResDistinctProduct.DisplayProductNumber = productNumber;
ecoResDistinctProduct.SearchName = Name;
if (ecoResDistinctProduct.validateWrite())
{
ecoResDistinctProduct.insert();
ecoResProductIdentifier.clear();
ecoResProductIdentifier.initValue();
ecoResProductIdentifier.ProductNumber = productNumber;
ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
ecoResProductIdentifier.insert();
//Storage dimension group
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;
inventTable.ItemBuyerGroupId = buyerGroupId;
inventTable.ProdGroupId = prodGroupId;
inventTable.ReqGroupId = reqGroupId;
inventTable.PmfProductType = pmfProductType;
inventTable.OrigCountryRegionId = countryRegionId;
inventTable.BatchNumGroupId = inventNumGroupId;
inventTable.StandardInventColorId = itemColorName;
inventTable.Intracode = intrastatItemCodeId;
inventTable.PdsShelfAdvice = any2int(cells.item(row, 29).value().bStr());
//inventTable.editTMSInventEnabled = any2str(cells.item(row, 34).value().bStr());
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();
}
}
}
}
else if(productSubtype == EcoResProductSubtype::ProductMaster || productSubtype == EcoResProductSubtype::ProductVariant)
{
ecoResProductMaster.clear();
ecoResProductMaster.initValue();
ecoResProductMaster.ProductType = EcoResProductType::Item;
ecoResProductMaster.DisplayProductNumber = productNumber;
ecoResProductMaster.SearchName = Name;
ecoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;
if (ecoResProductMaster.validateWrite())
{
ecoResProductMaster.insert();
ecoResProductIdentifier.clear();
ecoResProductIdentifier.initValue();
ecoResProductIdentifier.ProductNumber = productNumber;
ecoResProductIdentifier.Product = ecoResProductMaster.RecId;
ecoResProductIdentifier.insert();
//Product dimension group
ecoResProductDimensionGroupProduct.clear();
ecoResProductDimensionGroupProduct.initValue();
ecoResProductDimensionGroupProduct.initFromProduct(ecoResProductMaster);
ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductDimensionGroup::findByDimensionGroupName(productDimensionGroupName).RecId;
if (ecoResProductDimensionGroupProduct.validateWrite())
{
ecoResProductDimensionGroupProduct.insert();
}
//Storage dimension group
ecoResStorageDimensionGroupProduct.clear();
ecoResStorageDimensionGroupProduct.initValue();
ecoResStorageDimensionGroupProduct.Product = ecoResProductMaster.RecId;
ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName(storageDimensionGroupName).RecId;
if (ecoResStorageDimensionGroupProduct.validateWrite())
{
ecoResStorageDimensionGroupProduct.insert();
}
//Tracking dimension group
ecoResTrackingDimensionGroupProduct.clear();
ecoResTrackingDimensionGroupProduct.initValue();
ecoResTrackingDimensionGroupProduct.Product = ecoResProductMaster.RecId;
ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName(trackingDimensionGroupName).RecId;
if (ecoResTrackingDimensionGroupProduct.validateWrite())
{
ecoResTrackingDimensionGroupProduct.insert();
}
ecoResProductMasterModelingPolicy.clear();
ecoResProductMasterModelingPolicy.initValue();
ecoResProductMasterModelingPolicy.ProductMaster = ecoResProductMaster.RecId;
if (ecoResProductMasterModelingPolicy.validateWrite())
{
ecoResProductMasterModelingPolicy.insert();
}
//Product translation
EcoResProductTranslation::createOrUpdateTranslation(ecoResProductMaster.RecId, Name, Name);
//Color
ecoResColor = EcoResColor::findByName(itemColorName);
if(!ecoResColor)
{
ecoResColor.clear();
ecoResColor.initvalue();
ecoResColor.name = itemColorName;
ecoResColor.insert();
}
//Color assigned to product master
ecoResProductMasterColor.clear();
ecoResProductMasterColor.initValue();
ecoResProductMasterColor.Color = ecoResColor.RecId;
ecoResProductMasterColor.ColorProductDimensionAttribute =EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
ecoResProductMasterColor.ColorProductMaster = ecoResProductMaster.RecId;
ecoResProductMasterColor.insert();
ecoResDistinctProductVariant.clear();
ecoResDistinctProductVariant.initValue();
ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
ecoResProductMaster.productNumber(),
EcoResProductVariantDimValue::getDimensionValuesContainer("", "", itemColorName));
ecoResDistinctProductVariant.SearchName = ecoResProductMaster.SearchName + itemColorName/*ColorId*/;
ecoResDistinctProductVariant.ProductType = ecoResProductMaster.ProductType;
ecoResDistinctProductVariant.ProductMaster = ecoResProductMaster.RecId;
ecoResDistinctProductVariant.insert();
//Product variant color
ecoResProductVariantColor.clear();
ecoResProductVariantColor.clear();
ecoResProductVariantColor.initValue();
ecoResProductVariantColor.initFromDistinctProductVariant(ecoResDistinctProductVariant);
ecoResProductVariantColor.ProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
ecoResProductVariantColor.Color = ecoResColor.RecId;
ecoResProductVariantColor.insert();
//Released product
inventTable.clear();
inventTable.initValue();
inventTable.initFromEcoResProduct(ecoResProductMaster);
inventTable.ItemId = itemid;
inventTable.NameAlias = name;
inventTable.ItemBuyerGroupId = buyerGroupId;
inventTable.ProdGroupId = prodGroupId;
inventTable.ReqGroupId = reqGroupId;
inventTable.PmfProductType = pmfProductType;
inventTable.OrigCountryRegionId = countryRegionId;
inventTable.BatchNumGroupId = inventNumGroupId;
inventTable.StandardInventColorId = itemColorName;
inventTable.Intracode = intrastatItemCodeId;
inventTable.PdsShelfAdvice = any2int(cells.item(row, 29).value().bStr());
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(ecoResProductMaster.RecId);
if (ecoResStorageDimensionGroupProduct.RecId)
{
ecoResStorageDimensionGroupItem.clear();
ecoResStorageDimensionGroupItem.initValue();
ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResStorageDimensionGroupItem.StorageDimensionGroup = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
ecoResStorageDimensionGroupItem.insert();
}
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.InventColorId = itemColorName;/*ColorId*/
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();
}
}
}
}
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();
}
No comments:
Post a Comment