Thursday, 10 December 2015

Import Product &Released through X++ 
static void Productdataimport(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;
    EcoResProductMasterColor            ecoResProductMasterColor;
    EcoResColor                         ecoResColor;

    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;

    EcoResConfiguration                 ecoResConfiguration;
    EcoResProductMasterConfiguration    ecoResProductMasterConfiguration;

    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantConfiguration   ecoResProductVariantConfiguration;

    InventTable                         inventTable;
    InventTableModule                   inventTableModule;
    InventItemSetupSupplyType           inventItemSetupSupplyType;

    EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;
    EcoResDistinctProduct               ecoResDistinctProduct;

    InventModelGroupItem                inventModelGroupItem;
    InventItemGroupItem                 inventItemGroupItem;

    InventDim                           inventDim;
    InventDimCombination                inventDimCombination;
    EcoResCategory                      ecoResCategory;
    EcoResProductSubtype                productSubtype,EcoResProductSubtype;
    EcoResProductType                                   productType;
    EcoResVariantConfigurationTechnologyType            ecoResVariantConfigurationTechnologyType;
    EcoResProductDimensionGroup                         ecoResProductDimensionGroup;

    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;
    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;
    boolean                                 isMaster = false;
    container                               Item1, offsetaccount1;
    str                 productProductMaster,ProductDimensionGroup,StorageDimensionGroup,TrackingDimensionGroup;
    Struct struct       = new Struct();
    container           ledgerDimension;
    DimensionDefault    DimensionDefault;


    //DataEntryForm DataEntryForm1;
    int row = 1;
    FileIoPermission perm;
    //dipl_monthsofyear months;
    //year1 year1;
    //Country Country2;
    #define.Filename(@'D:\Imp\Book1.xls')
    #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()));
                //productProductMaster        =  (any2str(cells.item(row, 2).value().bStr()));
                productSubtype              = str2enum(ProductSubtype,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           = any2str(cells.item(row, 29).value().bStr());
                pmfProductType              = str2enum(pmfProductType, any2str(cells.item(row, 30).value().bStr()));
                reqGroupId                  = any2str(cells.item(row, 32).value().bStr());
                //ProductMaster
                ecoResProductMaster.clear();
                ecoResProductMaster.initValue();
                //ecoResProductMaster.ProductType = EcoResProductType::Item;
                //ecoResProductMaster.pr
               // ecoResProductSubtype =  any2str(cells.item(row, 2).value().bStr());
                //str2enum(EcoResProductSubtype, any2str(cells.item(row, 2).value().bStr()));
                //if(EcoResProductSubtype::Product == str2enum(EcoResProductSubtype, any2str(cells.item(row, 2).value().bStr())))
                //ecoResProductMaster.ProductType =  str2enum(productType, any2str(cells.item(row, 1).value().bStr()));

                //ecoResProductMaster.ProductType         = productType;

             if(productType == EcoResProductType::Item )//|| productType == EcoResProductType::Service)
                {
                    if(productSubtype == EcoResProductSubtype::Product)
                    {

                    ecoResDistinctProduct.clear();
                    ecoResDistinctProduct.initValue();
                    ecoResDistinctProduct.ProductType =  productType;
                    ecoResDistinctProduct.DisplayProductNumber = productNumber;
                    ecoResDistinctProduct.SearchName = name;
                        if (ecoResDistinctProduct.validateWrite())
                        {
                        ecoResDistinctProduct.insert();
                        ecoResProductIdentifier.clear();
                        ecoResProductIdentifier.initValue();
                        ecoResProductIdentifier.ProductNumber = productNumber;
                        ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
                        ecoResProductIdentifier.insert();
                        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;
                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();
                            }
                    }
                        }

                     


                    }}}
 
                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