2013年4月11日星期四

How to using x++ create Item in InventTable


write this code in clicked method of button or menuitembutton:
 http://abjbaskar.wordpress.com/2011/08/12/parent-shold-not-be-closed-unless-child-form-is-closed/
Args args;
FormRun formRun;
;
super();
args = new Args(formstr(ChildFormName));
args.caller(element);

formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait(); // to wait the child form to close..

// formRun.detach(); // dont wait the child form to close..


public void insertNewItemInInventTable(ItemId _itemId)
{
InventTable inventTable;
EcoResProduct ecoResProduct;
EcoResProductTranslation ecoResProductTranslation;
InventModelGroupItem InventModelGroupItemLoc;
EcoResProductParameters EcoResProductParametersLoc;
EcoResProductDimensionGroupProduct ecoResProductDimensionGroupProduct;
EcoResStorageDimensionGroupItem ecoResStorageDimensionGroupItem;
EcoResTrackingDimensionGroupItem ecoResTrackingDimensionGroupItem;
EcoResStorageDimensionGroupProduct ecoResStorageDimensionGroupProduct;
EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
EcoResDistinctProductVariant EcoResDistinctProductVariant;
EcoResProductVariantDimensionValue EcoResProductVariantDimensionValue;
EcoResProductVariantConfiguration EcoResProductVariantConfiguration;
InventDim inventDimLoc;
InventTableModule inventTableModule;
InventItemSetupSupplyType inventItemSetupSupplyType;
EcoResProductMasterConfiguration EcoResProductMasterConfiguration;
EcoResProductMasterSize EcoResProductMasterSize;
EcoResConfiguration EcoResConfiguration;
EcoResProductMaster EcoResProductMaster;
InventDimCombination InventDimCombination;
InventDim _InventDim;
;
ttsBegin;
EcoResProductParametersLoc = EcoResProductParameters::find();
select firstOnly ecoResProduct where EcoResProduct.DisplayProductNumber == _itemId; //Audio system

if(!ecoResProduct)
{
//ecoResProduct = new SysDictTable(tableNum(EcoResDistinctProduct)).makeRecord();
// ecoResProduct.DisplayProductNumber = _itemId;
// ecoResProduct.SearchName = _itemId;
//ecoResProduct.ProductType = EcoResProductType::Item;
//ecoResProduct.Insert();

EcoResProductMaster.DisplayProductNumber = _itemId;
EcoResProductMaster.SearchName = _itemId;
EcoResProductMaster.ProductType = EcoResProductType::Item;
// EcoResProductMaster.RecId = ecoResProduct.RecId;
EcoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;
EcoResProductMaster.insert();
ecoResProduct= EcoResProductMaster;
}

// EcoResProductMaster.insert();
EcoResProductMasterConfiguration.ConfigProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
EcoResProductMasterConfiguration.ConfigProductMaster = ecoResProduct.RecId;
EcoResProductMasterConfiguration.Configuration = EcoResProductParametersLoc.Configuration;
EcoResProductMasterConfiguration.insert();

EcoResProductMasterSize.Size = EcoResProductParametersLoc.Size;
EcoResProductMasterSize.SizeProductMaster = ecoResProduct.RecId;
EcoResProductMasterSize.insert();

ecoResProductTranslation.Product = ecoResProduct.RecId;
ecoResProductTranslation.Name = _itemId;
ecoResProductTranslation.setDefaultLanguage();
ecoResProductTranslation.insert();

EcoResDistinctProductVariant.DisplayProductNumber = _itemId + ” : ” + EcoResConfiguration::find(EcoResProductParametersLoc.Configuration).Name;
EcoResDistinctProductVariant.ProductMaster = ecoResProduct.RecId;
EcoResDistinctProductVariant.ProductType = ecoResProduct.ProductType;
EcoResDistinctProductVariant.insert();

EcoResProductVariantConfiguration.Configuration = EcoResProductParametersLoc.Configuration;
EcoResProductVariantConfiguration.DistinctProductVariant = EcoResDistinctProductVariant.RecId;
EcoResProductVariantConfiguration.ProductDimensionAttribute = EcoResProductMasterConfiguration.ConfigProductDimensionAttribute;
EcoResProductVariantConfiguration.insert();

//EcoResProductVariantDimensionValue.DistinctProductVariant = EcoResDistinctProductVariant.RecId;
// EcoResProductVariantDimensionValue.ProductDimensionAttribute = EcoResProductMasterConfiguration.ConfigProductDimensionAttribute;
// EcoResProductVariantDimensionValue.insert();

inventTable.initValue();
inventTable.initFromEcoResProduct(ecoResProduct);
inventTable.ItemId = _itemId;
inventTable.NameAlias = ecoResProduct.SearchName;
inventTable.PmfProductType = PmfProductType::Co_Product;
inventTable.SESCOItemType = SESCOItemType::NonStockItem;
inventTable.StandardConfigId = EcoResConfiguration::find(EcoResProductParameters::find().Configuration).Name;
inventTable.StandardInventSizeId = EcoResSize::find(EcoResProductParameters::find().Size).Name;
inventTable.insert(true);

inventTableModule.initValue();
inventTableModule.ItemId = inventTable.ItemId;
inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
inventTableModule.insert();

inventTableModule.initValue();
inventTableModule.ItemId = inventTable.ItemId;
inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
inventTableModule.insert();

inventTableModule.initValue();
inventTableModule.ItemId = inventTable.ItemId;
inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
inventTableModule.insert();

//Create inventItemLocation
InventItemLocation::createDefault(inventTable.ItemId);

// Creates a new item default order type for the product that is released.

inventItemSetupSupplyType.initValue();
inventItemSetupSupplyType.ItemId = inventTable.ItemId;
inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
inventItemSetupSupplyType.insert();

//create relationship tables to dimension groups.

ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResProduct.RecId);
ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResProduct.RecId);

if (ecoResStorageDimensionGroupProduct.RecId)
{
// mandatory storage dimension group for the product
ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResStorageDimensionGroupItem.StorageDimensionGroup = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
ecoResStorageDimensionGroupItem.insert();
}

if (ecoResTrackingDimensionGroupProduct.RecId)
{
// mandatory tracking dimension group for the product
ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
ecoResTrackingDimensionGroupItem.insert();
}
InventModelGroupItemLoc.ItemDataAreaId = inventTable.dataAreaId;
InventModelGroupItemLoc.ItemId = inventTable.ItemId;
InventModelGroupItemLoc.ModelGroupId = EcoResProductParametersLoc.InventModelGroupId;
InventModelGroupItemLoc.ModelGroupDataAreaId = curext();
InventModelGroupItemLoc.initValue();
InventModelGroupItemLoc.insert();
//write product to dimension group relation
ecoResProductDimensionGroupProduct.initFromProduct(ecoResProduct);
ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductParametersLoc.EcoResProductDimensionGroupRecId;
ecoResProductDimensionGroupProduct.insert();
ecoResStorageDimensionGroupItem.initValue();
ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.dataAreaId;
ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResStorageDimensionGroupItem.StorageDimensionGroup = EcoResProductParametersLoc.EcoResStorageDimensionGroupRecId;
ecoResStorageDimensionGroupItem.insert();
ecoResTrackingDimensionGroupItem.initValue();
ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.dataAreaId;
ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = EcoResProductParametersLoc.EcoResTrackingDimensionGroupRecId;
ecoResTrackingDimensionGroupItem.insert();
ttsCommit;

InventDimCombination.DistinctProductVariant = EcoResDistinctProductVariant.RecId;
InventDimCombination.ItemId = _itemId;

_InventDim.configId = EcoResConfiguration::find(EcoResProductParametersLoc.Configuration).Name;
_InventDim = InventDim::findOrCreate(_InventDim);
InventDimCombination.InventDimId = _InventDim.inventDimId;
InventDimCombination.insert();

// inventTable.ItemId = _itemId;
// inventTable.SESCOItemType = SESCOItemType::NonStockItem;
// inventTable.PmfProductType = PmfProductType::Co_Product;
// inventTable.initValue();
// inventTable.insert();
}

没有评论:

发表评论