When you are finished renamed the Item number Jobs

When you are finished renamed the Item number, you must record original Item number, related configure  and so on!

 

static void Jimmy_ItemRenamedAfterUpdate(Args _args)
{
    InventTableCompany      ITCompany,delITCompany;
    InventTable             IT,ITUpdateOrg;
    ConfigTable             ConfigTable;
    InventDimCombination    Combination;
    Dialog                  dlg     = new Dialog("updated to comoany Items infomation");
    DialogField             dlgItem = dlg.addField(types::String,'after rename Items:',"Format such as :Items + ',' + Items + ','  + items");
    ListEnumerator          le;
    ItemId                  ItemConfig;
    InventTrans             InventTrans;
    int                     ITCompanys,Combinations,NoConfig;

    SysDataBaseLog          SysDataBaseLog;
    Container               Con;
    fieldId                 fieldId;
    List                    datalist;
    ListEnumerator          enumerator;
;
    dlgItem.displayHeight(20);
    dlgItem.displayLength(50);
    dlg.doInit();
    if(!dlg.run())
        return ;

    le = global::strSplit(dlgItem.value(),',').getEnumerator();
    while (le.moveNext())
    {

        ttsbegin;
        ITUpdateOrg = InventTable::find(le.current(),true);
        if(ITUpdateOrg)
        {
            select firstonly SysDataBaseLog
                    where SysDataBaseLog.table == tablenum(InventTable)
                    && SysDataBaseLog.LogType == DatabaseLogType::RenameKey
                    && SysDataBaseLog.Description like ITUpdateOrg.ItemId + '*';
            if(SysDataBaseLog)
            {
                datalist = SysDataBaseLog.getDataAslist();
                enumerator = datalist.getEnumerator();
                while (enumerator.moveNext())
                {
                    Con          = enumerator.current();
                    fieldId      = conpeek(Con, 1);
                    ITUpdateOrg.OrgItemId = sysdatabaselog.contents2Str(conpeek(Con, 3), fieldId);
                    break;
                }
            }
            if(!ITUpdateOrg.OrgItemId)
                ITUpdateOrg.OrgItemId = ITUpdateOrg.ItemId;
            ITUpdateOrg.Update();
        }
        ttscommit;

        select firstonly forupdate IT where IT.ItemId == le.current();
        if(IT)
        {
            /*
            select firstonly InventTrans where InventTrans.ItemId == le.current();
            if(InventTrans)
                throw Error(StrFmt("The ItemId %1 Exists InventTrans,do not rename of Items!",le.current()));
            */
            select firstonly ConfigTable where ConfigTable.ItemId == IT.ItemId;
            //Have Configuration
            ItemConfig = '';
            if(ConfigTable)
            {
                ConfigTable.clear();

                while select ConfigTable where ConfigTable.ItemId == IT.ItemId
                {
                    ItemConfig = IT.ItemId + '_' + ConfigTable.ConfigId;

                    ttsbegin;
                    select firstonly forupdate ITCompany where ITCompany.ItemId == ItemConfig;
                    if(!ITCompany)
                    {
                        ITCompany.initValue();
                        ITCompany.ItemId        = ItemConfig;
                        ITCompany.Name          = IT.itemName;
                        ITCompany.OrgItemId     = IT.OrgItemId;
                        ITCompany.NormalItemId  = IT.ItemId;

                        ITCompany.insert();
                        ITCompanys++;
                    }
                    else
                    {
                        ITCompany.ItemId        = ItemConfig;
                        ITCompany.Name          = IT.itemName;
                        ITCompany.OrgItemId     = IT.OrgItemId;
                        ITCompany.NormalItemId  = IT.ItemId;
                        ITCompany.update();
                    }
                    ttscommit;

                    ttsbegin;
                    delete_from delITCompany where delITCompany.ItemId == IT.OrgItemId + '_' + ConfigTable.ConfigId
                        && delITCompany.OrgItemId == '' && delITCompany.NormalItemId == '';

                    ttscommit;

                    ttsbegin;
                    select firstonly forupdate Combination
                        where Combination.ItemId == ConfigTable.ItemId
                        &&    Combination.ConfigId == ConfigTable.ConfigId;
                    if(Combination)
                    {
                        Combination.ItemIdCompany = ItemConfig;
                        Combination.update();
                        Combinations++;
                    }
                    ttscommit;
                }
            }
            else //Have not Configuration
            {
                ttsbegin;
                select firstonly forupdate ITCompany where ITCompany.ItemId == IT.ItemId;
                if(!ITCompany)
                {
                    ITCompany.initValue();
                    ITCompany.ItemId        = IT.ItemId;
                    ITCompany.Name          = IT.itemName;
                    ITCompany.OrgItemId     = IT.OrgItemId;
                    ITCompany.NormalItemId  = IT.ItemId;
                    ITCompany.insert();
                }
                else
                {
                    ITCompany.ItemId        = IT.ItemId;
                    ITCompany.Name          = IT.itemName;
                    ITCompany.OrgItemId     = IT.OrgItemId;
                    ITCompany.NormalItemId  = IT.ItemId;
                    ITCompany.update();
                }
                ttscommit;
                ttsbegin;
                IT.ItemIdCompany = it.ItemId;
                IT.update();
                ttscommit;
                NoConfig ++;
                info(IT.ItemId);

            }
        }
        ELSE
           info("Not exists Item detail " + le.current());
    }
    info(strfmt("NoConfig : %1,Combinations : %2,ITCompanys : %3",NoConfig,Combinations,ITCompanys));
}
原文地址:https://www.cnblogs.com/Fandyx/p/2105403.html