close

 

通過X ++創建產品並發布產品 (AX 2012):


    public static void createProductInventItemAX2012(ItemId _itemid,ItemName _itemname, str dataareaId = curExt())
    {
        EcoResDistinctProduct               ecoResDistinctProduct;
        EcoResProductIdentifier             ecoResProductIdentifier;
        EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
        EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
        InventTable                         inventTable;
        InventTableModule                   inventTableModule;
        InventItemSetupSupplyType           inventItemSetupSupplyType;
        EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
        EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;
        InventModelGroupItem                inventModelGroupItem;
        InventItemGroupItem                 inventItemGroupItem;

        //    EcoResProductReleaseManagerBase     releaseManager;
        try
        {
            //Product
            ecoResDistinctProduct.clear();
            ecoResDistinctProduct.initValue();
            ecoResDistinctProduct.ProductType = EcoResProductType::Item;
            ecoResDistinctProduct.DisplayProductNumber = _itemid;
            ecoResDistinctProduct.SearchName = _itemname;
            if (ecoResDistinctProduct.validateWrite())
            {
                ecoResDistinctProduct.insert();
                ecoResProductIdentifier.clear();
                ecoResProductIdentifier.initValue();
                ecoResProductIdentifier.ProductNumber = _itemid;
                ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
                ecoResProductIdentifier.insert();
                //Storage dimension group
                ecoResStorageDimensionGroupProduct.clear();
                ecoResStorageDimensionGroupProduct.initValue();
                ecoResStorageDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName(EcoResProductParameters::find().DGS_StorageDimensionName).RecId;
                if (ecoResStorageDimensionGroupProduct.validateWrite())
                {
                    ecoResStorageDimensionGroupProduct.insert();
                }
                //Tracking dimension group
                ecoResTrackingDimensionGroupProduct.clear();
                ecoResTrackingDimensionGroupProduct.initValue();
                ecoResTrackingDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName(EcoResProductParameters::find().DGS_TrackingDimensionName).RecId;
                if (ecoResTrackingDimensionGroupProduct.validateWrite())
                {
                    ecoResTrackingDimensionGroupProduct.insert();
                }
                EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProduct.RecId,  _itemname, _itemname);
                //Released product
                inventTable.clear();
                inventTable.initValue();
                inventTable.initFromEcoResProduct(ecoResDistinctProduct);
                inventTable.ItemId = _itemid;
                inventTable.NameAlias = _itemname;
                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 = dataareaId;
                    inventModelGroupItem.insert();
                    //Item group
                    inventItemGroupItem.clear();
                    inventItemGroupItem.initValue();
                    inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                    inventItemGroupItem.ItemId = inventTable.ItemId;
                    inventItemGroupItem.ItemGroupId = "Consume";
                    inventItemGroupItem.ItemGroupDataAreaId = dataareaId;
                    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!");
    }
 

 

=======================================

 

通過X ++創建產品並發布產品 (D365) 

 

   public static void Create_ProductD365(ItemId _itemid,ItemName _itemname)
    {
        EcoResProductEntity                        ecoResProductEntity;

        EcoResProductEntityToCrossTableDataAdaptor adaptor;
        EcoResProduct                              product;

        NumberSequenceReference                    numberSequenceReference = EcoResProductParameters::numRefProductNumber();
        NumberSequenceTable                        numberSequenceTable = numberSequenceReference.numberSequenceTable();

        Args                                       args;
        EcoResProductReleaseSessionManager         productReleaseSessionManager;
        EcoResReleaseSessionRecId                  releaseSessionRecId;

        CompanyInfo                                companyInfo = CompanyInfo::find();
      
        ecoResProductEntity.ProductNumber                   = _itemid;
        ecoResProductEntity.ProductSearchName               = _itemname;
        ecoResProductEntity.ProductName                     = _itemname;
        ecoResProductEntity.ProductType                     = EcoResProductType::Item;
        ecoResProductEntity.ProductSubType                  = EcoResProductSubtype::Product;
        ecoResProductEntity.StorageDimensionGroupName       = EcoResProductParameters::find().DGS_StorageDimensionName;
        ecoResProductEntity.TrackingDimensionGroupName      = EcoResProductParameters::find().DGS_TrackingDimensionName;
        ecoResProductEntity.ProductDimensionGroupName       = "";

        // here you can set all the fields of the data entity that you need

        adaptor = EcoResProductEntityToCrossTableDataAdaptor::newFromEntity(ecoResProductEntity);

        ttsbegin;

        product = EcoResProductCrossTableManager::makeProductRecord(adaptor);

        EcoResProductCrossTableManager::insert(adaptor, product);
        // here you can create one or more translations
        EcoResProductTranslation::createOrUpdateTranslation(product.RecId, _itemname, _itemname);

        ttscommit;
    }

 EcoResCategory                      resCategory;
                    EcoResProductCategory               resProductCateg;
                    EcoResProduct                       ecoResProduct;
                    //find and create product
                    ecoResProduct = EcoResProduct::findByDisplayProductNumber(ItemId);
                    if(!ecoResProduct)
                    {                        
                        DGS_Common::Create_Product(ItemId, name);
                     //DGS_Common::createProductInventItem(ItemId, name, curCompany);
                     
                        ecoResProduct.clear();

                        select firstOnly ecoResProduct where EcoResProduct.DisplayProductNumber == ItemId; 
                        EcoResProductReleaseManagerBase::releaseProduct(ecoResProduct.RecId,CompanyInfo::findDataArea(curCompany).RecId);
                    }


                    InventTable                         inventTable;
                    InventModelGroupItem                inventModelGroupItem;
                    InventItemGroupItem                 inventItemGroupItem;
                    InventTableModule                   inventTableModule;

                    inventTable = InventTable::find(ItemId);
                    if(inventTable)
                    {
                        inventTable.selectforupdate(true);
                        inventTable.DGS_VariantCode = DGS_VariantCode;
                        inventTable.dgs_Supplier = dgs_Supplier;
                        inventTable.THK_EANCode = eanCode;
                        inventTable.DGS_cream = cream;
                        inventTable.DGS_liquid = liquid;
                        inventTable.DGS_fragile = fragile;
                        inventTable.DGS_fragrance = fragrance;
                        inventTable.DGS_PackWithBag = pack_with_bag;
                        inventTable.update();
                        newItem = false;
                    }
                    else
                    {
                        inventTable.clear();
                        inventTable.initValue();
                        inventTable.initFromEcoResProduct(ecoResProduct);
                        inventTable.ItemId = ItemId;
                        inventTable.NameAlias = name;
                        inventTable.DGS_VariantCode = DGS_VariantCode;
                        inventTable.dgs_Supplier = dgs_Supplier;
                        inventTable.THK_EANCode = eanCode;
                        inventTable.DGS_cream = cream;
                        inventTable.DGS_liquid = liquid;
                        inventTable.DGS_fragile = fragile;
                        inventTable.DGS_fragrance = fragrance;
                        inventTable.DGS_PackWithBag = pack_with_bag;
                        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 = dataareaId;
                            inventModelGroupItem.insert();
                            //Item group
                            inventItemGroupItem.clear();
                            inventItemGroupItem.initValue();
                            inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                            inventItemGroupItem.ItemId = inventTable.ItemId;
                            inventItemGroupItem.ItemGroupId = "Consume";
                            inventItemGroupItem.ItemGroupDataAreaId = dataareaId;
                            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();
                        }
                    }

 

arrow
arrow
    全站熱搜

    lionlionchopper 發表在 痞客邦 留言(0) 人氣()