Example #1
0
        protected void ClearChartObjectReferences(AuxiliaryItem ChaObjItem, string sFldName)
        {
            ItemField Fld = null;

            //--- Get the field and check exists
            if ((Fld = ChaObjItem.Fields.FindByDatabaseName(sFldName)) == null)
            {
                return;
            }

            //--- Clear the field value
            Fld.SetNullValue();
        }
Example #2
0
        protected void AddOrUpdateOrgObjItems(ItemList OrgObjItemLst, string sObjTyp, ref int nProgIdx, int nAllCnt)
        {
            AuxiliaryItem OrgObjItem = null;
            string        sMsg       = null;

            //--- Add, update or delete the users
            for (int nIdx = 0; nIdx < OrgObjItemLst.Count; nIdx++)
            {
                //--- Get the user and the message
                OrgObjItem = (AuxiliaryItem)OrgObjItemLst[nIdx];
                sMsg       =
                    (enAction)OrgObjItem.Tag == enAction.Create ? ProgMsg_CreOrgObj :
                    (enAction)OrgObjItem.Tag == enAction.Update ? ProgMsg_UpdOrgObj :
                    (enAction)OrgObjItem.Tag == enAction.Delete ? ProgMsg_DelOrgObj :
                    ProgMsg_SkipOrgObj;

                //--- Create a new message
                CreateMessage
                (
                    ProgressMessage.enMessageState.Info,
                    sMsg
                    .Replace("%typ%", sObjTyp)
                    .Replace("%num%", GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_OrgObj_Num).GetIntegerValue().ToString())
                    .Replace("%name%", OrgObjItem.GetTitle()),
                    nProgIdx + 1,
                    nAllCnt
                );

                try
                {
                    //--- Create the user
                    if ((enAction)OrgObjItem.Tag == enAction.Create)
                    {
                        OrgObjItem.Create();
                    }
                    //--- Update the user
                    else if (((enAction)OrgObjItem.Tag == enAction.Update) || ((enAction)OrgObjItem.Tag == enAction.Delete))
                    {
                        OrgObjItem.Update();
                    }
                }
                //--- Log the exception message
                catch (Exception Exc)
                { CreateMessage(Exc); }

                //--- Increment the org-object index
                nProgIdx++;
            }
        }
Example #3
0
        protected void SetOrgObjectItemDate(AuxiliaryItem OrgObjItem, string sItemFldName, DateTime dtDat)
        {
            ItemField Fld = null;

            //--- Get the item field name
            Fld = GetSBMItemFieldByDatabaseName(OrgObjItem, sItemFldName);

            //--- Set the null value or date value to the item field
            if (OrgChart.IsNullDate(dtDat))
            {
                Fld.SetNullValue();
            }
            else
            {
                Fld.SetDateOnlyValue(dtDat);
            }
        }
Example #4
0
        protected void ActivateOrgObjectItems(ItemList OrgObjItemLst, bool bAct, enAction Act)
        {
            AuxiliaryItem OrgObjItem = null;

            //--- Tag the items for delete
            for (int nIdx = 0; nIdx < OrgObjItemLst.Count; nIdx++)
            {
                //--- Get the org-object item and tag the item for delete if tag not exists
                OrgObjItem = (AuxiliaryItem)OrgObjItemLst[nIdx];

                //--- Check item tag not exists
                if (OrgObjItem.Tag == null)
                {
                    //--- Set the active flag and tag the action
                    OrgObjItem.SetActive(bAct);
                    OrgObjItem.Tag = Act;
                }
            }
        }
 public Planning(Project Prj, AuxiliaryItem PlanItem)
     : base(Prj, PlanItem)
 {
 }
 public Category(Application App, AuxiliaryItem Item)
     : base(App, Item)
 {
 }
Example #7
0
 public LineItem(Application App, AuxiliaryItem Item)
     : base(App, Item)
 {
 }
Example #8
0
 public CostCenter(Application App, AuxiliaryItem Item)
     : base(App, Item)
 {
 }
 public Person(Application App, AuxiliaryItem Item)
     : base(App, Item)
 {
 }
Example #10
0
        protected void SetChartObjects(ChartObjectList SAPChaObjLst, ChartObject SAPLeadPos, AuxiliaryItem ChaObjItem)
        {
            ChartObject   SAPChaObj  = null;
            AuxiliaryItem OrgObjItem = null;
            string        sFldName   = null;
            ItemIdentList IdentLst   = null;
            ItemField     Fld        = null;

            //--- Clear the chart object references fields
            ClearChartObjectReferences(ChaObjItem, FldName_ChaObj_Units);
            ClearChartObjectReferences(ChaObjItem, FldName_ChaObj_Poss);
            ClearChartObjectReferences(ChaObjItem, FldName_ChaObj_Pers);
            ClearChartObjectReferences(ChaObjItem, FldName_ChaObj_CosCens);

            //--- Import the SAP objects
            for (int nIdx = 0; nIdx < SAPChaObjLst.Count; nIdx++)
            {
                //--- Get the SAP chart object and the tagged org-object item
                SAPChaObj  = SAPChaObjLst[nIdx];
                OrgObjItem = (AuxiliaryItem)SAPChaObj.OrgObject.Tag;

                //--- Get the chart object field name with the SAP object type
                if (SAPChaObj.OrgObject.ObjectType == OrgObject.enObjectType.Unit)
                {
                    sFldName = FldName_ChaObj_Units;
                }
                else if (SAPChaObj.OrgObject.ObjectType == OrgObject.enObjectType.Position)
                {
                    sFldName = FldName_ChaObj_Poss;
                }
                else if (SAPChaObj.OrgObject.ObjectType == OrgObject.enObjectType.Person)
                {
                    sFldName = FldName_ChaObj_Pers;
                }
                else if (SAPChaObj.OrgObject.ObjectType == OrgObject.enObjectType.CostCenter)
                {
                    sFldName = FldName_ChaObj_CosCens;
                }
                else
                {
                    throw new Exception(ErrMsg_InvSAPObjTyp.Replace("%typ%", SAPChaObj.OrgObject.ObjectType.ToString()));
                }

                //--- Get the field and the items idents
                Fld      = GetSBMItemFieldByDatabaseName(ChaObjItem, sFldName);
                IdentLst = Fld.GetItemIdentValues();

                //--- Add the chart object item ident and set the item idents
                IdentLst.Add(new ItemIdent(OrgObjItem));
                Fld.SetItemIdentValues(IdentLst);

                /*
                 * //--- Set the lead position item if exists
                 * if (SAPLeadPos != null)
                 *  GetSBMItemFieldByDatabaseName(ChaObjItem, FldName_ChaObj_LeadPos).SetItemIdentValue(new ItemIdent((AuxiliaryItem)SAPChaObj.LeadPosition.Tag));
                 */

                //--- Set the item references
                SetChartObjects(SAPChaObj.ChartObjects, SAPChaObj.LeadPosition, OrgObjItem);
            }
        }
Example #11
0
        public override void Run()
        {
/*TEST
 * Library.Windows.Windows.Pause(20000);
 * return;
 */

            OrgChart      SAPOrgCha = null;
            OrgObject     SAPOrgObj = null;
            Table         Tab = null;
            AuxiliaryItem OrgChaItem = null, OrgObjItem = null;
            UserList      UsrLst = null;
            User          Usr    = null;
            Hashtable     UsrTab = null;
            ItemList
                OrgChaItemLst = null,
                UnitItemLst   = null,
                PosItemLst    = null,
                PerItemLst    = null,
                CosCenItemLst = null,
                OrgObjItemLst = null;
            int
                nPerNum  = Global.IntegerNull,
                nProgIdx = Global.IntegerNull,
                nAllCnt  = Global.IntegerNull;

            //--- Create a new start import message
            CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_StartImpSAPOrgCha);

            //--- Read the SAP org-chart
            SAPOrgCha = new OrgChart();
            SAPOrgCha = OrgChart.FromSAPFiles(ObjectFileWatcher.FileName, ReferenceFileWatcher.FileName);

            //--- Create a new read server users message
            CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_ReadOrgObjsSvr.Replace("%svr%", GetServer().ServerName));

            //--- Read the users
            UsrLst = ReadAllSBMUsers();

            //--- Init the user table and the AD user info
            UsrTab = new Hashtable();

            //--- Add the user to the user table
            for (int nIdx = 0; nIdx < UsrLst.Count; nIdx++)
            {
                //--- Get the user and the personnel number
                Usr     = UsrLst[nIdx];
                nPerNum = String.IsNullOrEmpty(Usr.GetEmailCC()) ? 0 : Convert.ToInt32(Usr.GetEmailCC());

                //--- Check personnel number not exists
                if (nPerNum == 0)
                {
                    continue;
                }
                //--- Check user exists in the user table
                else if (UsrTab[nPerNum] == null)
                {
                    UsrTab.Add(nPerNum, Usr);
                }
                else
                {
                    //--- Create a new start import message
                    CreateMessage
                    (
                        ProgressMessage.enMessageState.Warning,
                        ProgMsg_UsrPerNumExi
                        .Replace("%usr%", Usr.GetDisplayName())
                        .Replace("%num%", nPerNum.ToString())
                    );
                }
            }

            //--- Read the orag objects
            OrgChaItemLst = ReadSBMItems(TabName_OrgCha, SQLWhere_OrgCha_NumSky.Replace("%num%", FldVal_OrgCha_Num_Sky.ToString()));
            UnitItemLst   = ReadSBMItems(TabName_Unit);
            PosItemLst    = ReadSBMItems(TabName_Pos);
            PerItemLst    = ReadSBMItems(TabName_Per);
            CosCenItemLst = ReadSBMItems(TabName_CosCen);

            //--- Find the org-chart item wit the Sky number
            OrgChaItem = (AuxiliaryItem)OrgChaItemLst.FindByItemFieldValue(FldName_OrgCha_Num, FieldList.enFieldIdent.DatabaseName, FldVal_OrgCha_Num_Sky);

            //--- Check org-chart item exists
            if (OrgChaItem == null)
            {
                //--- Init the Sky org-chart and add to the org-chart items
                OrgChaItem = GetSBMTable(TabName_OrgCha).NewAuxiliaryItem();
                OrgChaItemLst.Add(OrgChaItem);

                //--- Tag the org-chart item for create
                OrgChaItem.Tag = enAction.Create;
            }
            //--- Tag the org-chart item for update
            else
            {
                OrgChaItem.Tag = enAction.Update;
            }

            //--- Update the org-chart item values
            GetSBMItemFieldByDatabaseName(OrgChaItem, FldName_OrgCha_Num).SetIntegerValue(FldVal_OrgCha_Num_Sky);
            OrgChaItem.SetActive(true);

            //--- Create a new read AD users message
            CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_ImpSAPOrgObjs);

            //--- Import the SAP org-objects
            for (int nIdx = 0; nIdx < SAPOrgCha.OrgObjects.Count; nIdx++)
            {
                //--- Get the SAP object and the table
                SAPOrgObj = SAPOrgCha.OrgObjects[nIdx];
                Tab       = GetOrgObjectTable(SAPOrgObj.ObjectType);

                //--- Get the table name dependend on the SAP object type
                if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Unit)
                {
                    OrgObjItemLst = UnitItemLst;
                }
                else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Position)
                {
                    OrgObjItemLst = PosItemLst;
                }
                else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Person)
                {
                    OrgObjItemLst = PerItemLst;
                }
                else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.CostCenter)
                {
                    OrgObjItemLst = CosCenItemLst;
                }
                else
                {
                    throw new Exception(ErrMsg_InvSAPObjTyp.Replace("%typ%", SAPOrgObj.ObjectType.ToString()));
                }

                //--- Find the orga object item
                OrgObjItem = (AuxiliaryItem)OrgObjItemLst.FindByItemFieldValue(FldName_OrgObj_Num, FieldList.enFieldIdent.DatabaseName, SAPOrgObj.ObjectNumber);

                //--- Check org-object item exists
                if (OrgObjItem == null)
                {
                    //--- Init the orga object and add to the org-object items
                    OrgObjItem = Tab.NewAuxiliaryItem();
                    OrgObjItemLst.Add(OrgObjItem);

                    //--- Tag the org-object item with the crsate action
                    OrgObjItem.Tag = enAction.Create;
                }
                //--- Tag the org-object item with the update action
                else
                {
                    OrgObjItem.Tag = enAction.Update;
                }

                //--- Set the values
                OrgObjItem.SetTitle(SAPOrgObj.LongName);
                OrgObjItem.SetActive(SAPOrgObj.IsActiveNow());
                GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_OrgObj_Num).SetIntegerValue(SAPOrgObj.ObjectNumber);
                SetOrgObjectItemDate(OrgObjItem, FldName_OrgObj_StartDat, SAPOrgObj.StartDate);
                SetOrgObjectItemDate(OrgObjItem, FldName_OrgObj_EndDat, SAPOrgObj.EndDate);

                //--- Check position obejct type
                if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Position)
                {
                    GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_Pos_JobID).SetTextValue(SAPOrgObj.ShortName);
                }
                //--- Check person object type
                else if (SAPOrgObj.ObjectType == OrgObject.enObjectType.Person)
                {
                    //--- Get the user
                    Usr = (User)UsrTab[SAPOrgObj.ObjectNumber];

                    //--- Set the user in the person item
                    if (Usr == null)
                    {
                        GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_Per_Usr).SetNullValue();
                    }
                    else
                    {
                        GetSBMItemFieldByDatabaseName(OrgObjItem, FldName_Per_Usr).SetRelationalID(Usr.GetID());
                    }

                    //--- Set the user active dependend if the user exists and is active
                    OrgObjItem.SetActive(Usr != null ? !Usr.IsDeleted() : false);
                }

                //--- Tag the SAP org-object with the org-object item
                SAPOrgObj.Tag = OrgObjItem;
            }

            //--- Set the chart objects of the org-chart
            SetChartObjects(SAPOrgCha.ChartObjects, null, OrgChaItem);

            //--- Activate and tag the item lists
            ActivateOrgObjectItems(UnitItemLst, false, enAction.Delete);
            ActivateOrgObjectItems(PosItemLst, false, enAction.Delete);
            ActivateOrgObjectItems(PerItemLst, false, enAction.Delete);
            ActivateOrgObjectItems(CosCenItemLst, true, enAction.None);

            //--- Create a new read AD users message
            CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_AddOrUpdSAPOrgObjs);

            //--- Init the progress index and calculate the all count
            nProgIdx = 0;
            nAllCnt  = OrgChaItemLst.Count + UnitItemLst.Count + PosItemLst.Count + PerItemLst.Count + CosCenItemLst.Count;

            //--- Add or update the org-objects
            AddOrUpdateOrgObjItems(OrgChaItemLst, ObjTypStr_OrgCha, ref nProgIdx, nAllCnt);
            AddOrUpdateOrgObjItems(UnitItemLst, OrgObject.enObjectType.Unit.ToString(), ref nProgIdx, nAllCnt);
            AddOrUpdateOrgObjItems(PosItemLst, OrgObject.enObjectType.Position.ToString(), ref nProgIdx, nAllCnt);
            AddOrUpdateOrgObjItems(PerItemLst, OrgObject.enObjectType.Person.ToString(), ref nProgIdx, nAllCnt);
            AddOrUpdateOrgObjItems(CosCenItemLst, OrgObject.enObjectType.CostCenter.ToString(), ref nProgIdx, nAllCnt);

            //--- Create a new message
            CreateMessage(ProgressMessage.enMessageState.Info, ProgMsg_FinImpADUsrs, nAllCnt, nAllCnt);
        }
 public SAPObject(AppObject Par, AuxiliaryItem Item)
     : base(Par, Item)
 {
 }
 public SAPObject(Application App, AuxiliaryItem Item)
     : base(App, Item)
 {
 }