コード例 #1
0
        public virtual void EPCompanyTreeMaster_RowDeleting(PXCache cache, PXRowDeletingEventArgs e)
        {
            EPCompanyTreeMaster row = (EPCompanyTreeMaster)e.Row;

            if (row == null)
            {
                return;
            }

            EPAssignmentRoute route = PXSelect <EPAssignmentRoute,
                                                Where <EPAssignmentRoute.workgroupID, Equal <Required <EPCompanyTreeMaster.workGroupID> > > > .
                                      Select(this, row.WorkGroupID);

            if (route != null)
            {
                EPAssignmentMap map = PXSelect <EPAssignmentMap,
                                                Where <EPAssignmentMap.assignmentMapID, Equal <Required <EPAssignmentRoute.assignmentMapID> > > > .
                                      Select(this, route.AssignmentMapID);

                if (map == null)
                {
                    throw new PXException(Objects.EP.Messages.WorkgroupIsInUse);
                }
                throw new PXException(Objects.EP.Messages.WorkgroupIsInUseAtAssignmentMap, map.Name);
            }
        }
コード例 #2
0
        public virtual IEnumerable Right(PXAdapter adapter)
        {
            EPCompanyTreeMaster current = Item.SelectWindowed(0, 1, CurrentSelected.FolderID);

            if (current != null)
            {
                int currentItemIndex;
                PXResultset <EPCompanyTreeMaster> items =
                    SelectSiblings(current.ParentWGID, current.WorkGroupID, out currentItemIndex);
                if (currentItemIndex > 0)
                {
                    EPCompanyTreeMaster prev = items[currentItemIndex - 1];
                    items = SelectSiblings(prev.WorkGroupID);
                    int index = 1;
                    if (items.Count > 0)
                    {
                        EPCompanyTreeMaster last = items[items.Count - 1];
                        index = (last.SortOrder ?? 0) + 1;
                    }
                    current            = (EPCompanyTreeMaster)Items.Cache.CreateCopy(current);
                    current.ParentWGID = prev.WorkGroupID;
                    current.SortOrder  = index;
                    Items.Update(current);
                }
            }
            return(adapter.Get());
        }
コード例 #3
0
        private bool VerifyForUsing(EPCompanyTreeMaster row)
        {
            string res = "";

            foreach (EPAssignmentMap map in PXSelectJoin <EPAssignmentMap,
                                                          InnerJoin <EPRule, On <EPRule.assignmentMapID, Equal <EPAssignmentMap.assignmentMapID> > >,
                                                          Where <EPRule.workgroupID, Equal <Required <EPRule.workgroupID> > > > .
                     Select(this, row.WorkGroupID))
            {
                if (map == null)
                {
                    throw new PXException(Objects.EP.Messages.WorkgroupIsInUse);
                }

                string MapType = "";
                if (map.MapType == EPMapType.Assignment)
                {
                    MapType = Objects.EP.Messages.Assignment;
                }
                else
                {
                    MapType = Objects.EP.Messages.Approval;
                }
                res = res + string.Format(Objects.EP.Messages.WorkgroupIsInUseAtAssignmentMap, row.Description, MapType, map.Name) + "\n";
            }
            if (!String.IsNullOrEmpty(res))
            {
                throw new PXException(res);
            }

            return(true);
        }
コード例 #4
0
        private void insertHRecords(EPCompanyTreeMaster record)
        {
            int level = -1;

            foreach (EPCompanyTreeH item in parents.Select(record.ParentWGID))
            {
                if (level == -1)
                {
                    level = item.WorkGroupLevel.GetValueOrDefault() + 1;
                }
                EPCompanyTreeH ins = (EPCompanyTreeH)treeH.Cache.CreateCopy(item);
                ins.WorkGroupID    = record.WorkGroupID;
                ins.WorkGroupLevel = level;
                ins.WaitTime      += record.WaitTime;
                treeH.Cache.Insert(ins);
            }
            EPCompanyTreeH self = new EPCompanyTreeH();

            self.WorkGroupID    = record.WorkGroupID;
            self.WorkGroupLevel = level;
            self.ParentWGID     = record.WorkGroupID;
            self.ParentWGLevel  = level;
            self.WaitTime       = 0;
            treeH.Cache.Insert(self);
        }
コード例 #5
0
        protected virtual void EPCompanyTreeMaster_RowInserted(PXCache cache, PXRowInsertedEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster;

            if (row == null)
            {
                return;
            }
            insertHRecords(row);
        }
コード例 #6
0
        protected virtual void EPCompanyTreeMaster_ParentWGID_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster;

            if (row == null)
            {
                return;
            }
            e.NewValue = this.CurrentSelected.FolderID ?? 0;
            e.Cancel   = true;
        }
コード例 #7
0
        protected virtual void EPCompanyTreeMaster_Description_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
        {
            EPCompanyTreeMaster item = PXSelect
                                       <EPCompanyTreeMaster, Where <EPCompanyTreeMaster.description, Equal <Required <EPCompanyTreeMaster.description> > > > .
                                       SelectWindowed(this, 0, 1, e.NewValue);

            if (item != null)
            {
                throw new PXSetPropertyException(ErrorMessages.DuplicateEntryAdded, "Description");
            }
        }
コード例 #8
0
        protected virtual void EPCompanyTreeMaster_RowDeleted(PXCache cache, PXRowDeletedEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster;

            if (row == null || row.WorkGroupID == null)
            {
                return;
            }

            deleteHRecords(row.WorkGroupID);
            deleteRecurring(row);
        }
コード例 #9
0
        protected virtual void EPCompanyTreeMaster_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster;

            if (row == null)
            {
                return;
            }
            PXUIFieldAttribute.SetEnabled <EPCompanyTree.waitTime>(sender, row,
                                                                   row.BypassEscalation != true && row.ParentWGID != 0);
            PXUIFieldAttribute.SetEnabled <EPCompanyTree.bypassEscalation>(sender, row, row.ParentWGID != 0);
        }
コード例 #10
0
        protected virtual void EPCompanyTreeMaster_BypassEscalation_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster;

            if (row == null)
            {
                return;
            }
            if (row.BypassEscalation == true)
            {
                row.WaitTime = 0;
            }
        }
コード例 #11
0
 private bool VerifyRecurringBeforeDelete(EPCompanyTreeMaster map)
 {
     if (map != null)
     {
         foreach (EPCompanyTreeMaster child in PXSelect <EPCompanyTreeMaster,
                                                         Where <EPCompanyTreeMaster.parentWGID, Equal <Required <EPCompanyTreeMaster.parentWGID> > > >
                  .Select(this, map.WorkGroupID))
         {
             VerifyRecurringBeforeDelete(child);
         }
     }
     return(VerifyForUsing(map));
 }
コード例 #12
0
        protected virtual void EPCompanyTreeMaster_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster, oldRow = e.OldRow as EPCompanyTreeMaster;

            if (row == null || oldRow == null)
            {
                return;
            }
            if (row.ParentWGID != oldRow.ParentWGID)
            {
                updateHRecordParent(row);
            }
        }
コード例 #13
0
 private void deleteRecurring(EPCompanyTreeMaster map)
 {
     if (map != null)
     {
         foreach (EPCompanyTreeMaster child in PXSelect <EPCompanyTreeMaster,
                                                         Where <EPCompanyTreeMaster.parentWGID,
                                                                Equal <Required <EPCompanyTreeMaster.workGroupID> > > > .Select(this, map.WorkGroupID))
         {
             deleteRecurring(child);
         }
         Items.Cache.Delete(map);
     }
 }
コード例 #14
0
        private void updateHRecordParent(EPCompanyTreeMaster item)
        {
            PXResultset <EPCompanyTreeH> newParents = parents.Select(item.ParentWGID);
            int parentLevel = -1;

            if (newParents.Count > 0)
            {
                EPCompanyTreeH newParent = newParents[newParents.Count - 1];
                parentLevel = newParent.WorkGroupLevel.GetValueOrDefault();
            }

            int            levelDelta = 0;
            EPCompanyTreeH root       = null;

            foreach (EPCompanyTreeH child in childrens.Select(item.WorkGroupID))
            {
                if (root == null)
                {
                    root       = (EPCompanyTreeH)treeH.Cache.CreateCopy(child);
                    levelDelta = parentLevel + 1 - child.WorkGroupLevel.GetValueOrDefault();
                }

                foreach (EPCompanyTreeH parent in parents.Select(child.WorkGroupID))
                {
                    if (parent.WorkGroupID != parent.ParentWGID &&
                        parent.ParentWGLevel < root.WorkGroupLevel)
                    {
                        treeH.Cache.Delete(parent);
                    }
                    else
                    {
                        EPCompanyTreeH upd = (EPCompanyTreeH)treeH.Cache.CreateCopy(parent);
                        upd.WorkGroupLevel += levelDelta;
                        upd.ParentWGLevel  += levelDelta;
                        treeH.Cache.Update(upd);
                    }
                }

                foreach (EPCompanyTreeH parent in newParents)
                {
                    EPCompanyTreeH ins = (EPCompanyTreeH)treeH.Cache.CreateCopy(parent);
                    ins.WorkGroupID    = child.WorkGroupID;
                    ins.WorkGroupLevel = child.WorkGroupLevel;
                    ins.WaitTime      += child.WaitTime + item.WaitTime;
                    treeH.Cache.Insert(ins);
                }
            }
        }
コード例 #15
0
        public virtual IEnumerable Up(PXAdapter adapter)
        {
            EPCompanyTreeMaster curr = Folders.Current;
            EPCompanyTreeMaster prev = PXSelect <EPCompanyTreeMaster,
                                                 Where <EPCompanyTreeMaster.parentWGID, Equal <Required <EPCompanyTreeMaster.parentWGID> >,
                                                        And <EPCompanyTreeMaster.sortOrder, Less <Required <EPCompanyTreeMaster.parentWGID> > > >,
                                                 OrderBy <Desc <EPCompanyTreeMaster.sortOrder> > > .SelectSingleBound(this, null, Folders.Current.ParentWGID,
                                                                                                                      Folders.Current.SortOrder);

            if (prev != null && curr != null)
            {
                int temp = (int)curr.SortOrder;
                curr.SortOrder = prev.SortOrder;
                prev.SortOrder = temp;
                Caches[typeof(EPCompanyTreeMaster)].Update(prev);
                Caches[typeof(EPCompanyTreeMaster)].Update(curr);
            }
            return(adapter.Get());
        }
コード例 #16
0
        public virtual IEnumerable Down(PXAdapter adapter)
        {
            EPCompanyTreeMaster curr = Folders.Current;
            EPCompanyTreeMaster next = PXSelect <EPCompanyTreeMaster,
                                                 Where <EPCompanyTreeMaster.parentWGID, Equal <Required <EPCompanyTreeMaster.parentWGID> >,
                                                        And <EPCompanyTreeMaster.sortOrder, Greater <Required <EPCompanyTreeMaster.parentWGID> > > >,
                                                 OrderBy <Asc <EPCompanyTreeMaster.sortOrder> > > .SelectSingleBound(this, null, Folders.Current.ParentWGID,
                                                                                                                     Folders.Current.SortOrder);

            if (next != null && curr != null)
            {
                int temp = (int)curr.SortOrder;
                curr.SortOrder = next.SortOrder;
                next.SortOrder = temp;
                Caches[typeof(EPCompanyTreeMaster)].Update(next);
                Caches[typeof(EPCompanyTreeMaster)].Update(curr);
            }
            return(adapter.Get());
        }
コード例 #17
0
        public virtual IEnumerable Up(PXAdapter adapter)
        {
            int currentItemIndex;
            PXResultset <EPCompanyTreeMaster> items =
                SelectSiblings(CurrentSelected.FolderID, CurrentSelected.WorkGroupID, out currentItemIndex);

            if (currentItemIndex > 0)
            {
                EPCompanyTreeMaster current = items[currentItemIndex];
                EPCompanyTreeMaster prev    = items[currentItemIndex - 1];

                current.SortOrder -= 1;
                prev.SortOrder    += 1;

                Items.Update(current);
                Items.Update(prev);
            }
            return(adapter.Get());
        }
コード例 #18
0
        public virtual IEnumerable Down(PXAdapter adapter)
        {
            int currentItemIndex;
            PXResultset <EPCompanyTreeMaster> items =
                SelectSiblings(CurrentSelected.FolderID, CurrentSelected.WorkGroupID, out currentItemIndex);

            if (currentItemIndex >= 0 && currentItemIndex < items.Count - 1)
            {
                EPCompanyTreeMaster current = items[currentItemIndex];
                EPCompanyTreeMaster next    = items[currentItemIndex + 1];

                current.SortOrder += 1;
                next.SortOrder    -= 1;

                Items.Update(current);
                Items.Update(next);
            }
            return(adapter.Get());
        }
コード例 #19
0
        public virtual IEnumerable moveWorkGroup(PXAdapter adapter)
        {
            EPCompanyTreeMaster cur = Caches[typeof(EPCompanyTreeMaster)].Current as EPCompanyTreeMaster;

            SelectedFolders.Current.WorkGroupID = Folders.Current.WorkGroupID;
            if (cur != null)
            {
                if (SelectedParentFolders.View.Answer == WebDialogResult.None)
                {
                    SelectedParentFolders.Current.WorkGroupID = cur.ParentWGID;
                }
                if (SelectedParentFolders.AskExt() == WebDialogResult.OK)
                {
                    cur.ParentWGID   = SelectedParentFolders.Current.WorkGroupID;
                    cur.TempParentID = SelectedParentFolders.Current.WorkGroupID;


                    EPCompanyTreeMaster previous = PXSelect <EPCompanyTreeMaster,
                                                             Where <EPCompanyTreeMaster.parentWGID, Equal <Required <EPCompanyTreeMaster.parentWGID> > >,
                                                             OrderBy <Desc <EPCompanyTreeMaster.sortOrder> > > .SelectSingleBound(this, null, SelectedParentFolders.Current.WorkGroupID);

                    if (previous != null)
                    {
                        int sortOrder = (int)previous.SortOrder;
                        cur.SortOrder = sortOrder + 1;
                    }
                    else
                    {
                        cur.SortOrder = 1;
                    }
                    cur = Caches[typeof(EPCompanyTreeMaster)].Update(cur) as EPCompanyTreeMaster;
                    PXSelect <EPCompanyTreeMaster,
                              Where <EPCompanyTreeMaster.parentWGID,
                                     Equal <Required <EPCompanyTreeMaster.parentWGID> > >,
                              OrderBy <Asc <EPCompanyTreeMaster.sortOrder> > > .Clear(this);

                    Folders.Cache.ActiveRow = cur;
                    Folders.View.RequestRefresh();
                }
            }

            return(adapter.Get());
        }
コード例 #20
0
        protected virtual void EPCompanyTreeMaster_SortOrder_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
        {
            EPCompanyTreeMaster row = (EPCompanyTreeMaster)e.Row;

            if (row == null)
            {
                return;
            }

            e.NewValue = 1;
            e.Cancel   = true;

            PXResultset <EPCompanyTreeMaster> list = Items.Select(row.ParentWGID);

            if (list.Count > 0)
            {
                EPCompanyTreeMaster last = list[list.Count - 1];
                e.NewValue = last.SortOrder + 1;
            }
        }
コード例 #21
0
        public virtual IEnumerable Left(PXAdapter adapter)
        {
            EPCompanyTreeMaster current = Item.SelectWindowed(0, 1, CurrentSelected.FolderID);

            if (current != null && current.ParentWGID != 0)
            {
                EPCompanyTreeMaster parent = Item.SelectWindowed(0, 1, current.ParentWGID);
                if (parent != null)
                {
                    int parentIndex;
                    PXResultset <EPCompanyTreeMaster> items = SelectSiblings(parent.ParentWGID, parent.WorkGroupID, out parentIndex);
                    if (parentIndex >= 0)
                    {
                        EPCompanyTreeMaster last = items[items.Count - 1];
                        current            = (EPCompanyTreeMaster)Items.Cache.CreateCopy(current);
                        current.ParentWGID = parent.ParentWGID;
                        current.SortOrder  = last.SortOrder + 1;
                        Items.Update(current);
                    }
                }
            }
            return(adapter.Get());
        }
コード例 #22
0
        public virtual void EPCompanyTreeMaster_RowDeleting(PXCache cache, PXRowDeletingEventArgs e)
        {
            EPCompanyTreeMaster row = (EPCompanyTreeMaster)e.Row;

            if (row == null)
            {
                return;
            }

            string res = "";

            foreach (EPAssignmentMap map in PXSelectJoin <EPAssignmentMap,
                                                          InnerJoin <EPRule, On <EPRule.assignmentMapID, Equal <EPAssignmentMap.assignmentMapID> > >,
                                                          Where <EPRule.workgroupID, Equal <Required <EPRule.workgroupID> > > > .
                     Select(this, row.WorkGroupID))
            {
                if (map == null)
                {
                    throw new PXException(Objects.EP.Messages.WorkgroupIsInUse);
                }

                string MapType = "";
                if (map.MapType == EPMapType.Assignment)
                {
                    MapType = Objects.EP.Messages.Assignment;
                }
                else
                {
                    MapType = Objects.EP.Messages.Approval;
                }
                res = res + string.Format(Objects.EP.Messages.WorkgroupIsInUseAtAssignmentMap, row.Description, MapType, map.Name) + "\n";
            }
            if (!String.IsNullOrEmpty(res))
            {
                throw new PXException(res);
            }
        }
コード例 #23
0
        public virtual IEnumerable addWorkGroup(PXAdapter adapter)
        {
            EPCompanyTreeMaster current = Folders.Current;

            if (current == null)
            {
                current = Folders.Select();
            }
            if (current != null)
            {
                int ParentID = (int)current.WorkGroupID;
                EPCompanyTreeMaster inserted = (EPCompanyTreeMaster)Caches[typeof(EPCompanyTreeMaster)].CreateInstance();
                inserted.Description = PX.Objects.CR.Messages.New;
                inserted.ParentWGID  = ParentID;

                inserted = Caches[typeof(EPCompanyTreeMaster)].Insert(inserted) as EPCompanyTreeMaster;
                if (inserted != null)
                {
                    inserted.TempChildID  = inserted.WorkGroupID;
                    inserted.TempParentID = ParentID;
                    EPCompanyTreeMaster previous = PXSelect <EPCompanyTreeMaster,
                                                             Where <EPCompanyTreeMaster.parentWGID, Equal <Required <EPCompanyTreeMaster.parentWGID> > >,
                                                             OrderBy <Desc <EPCompanyTreeMaster.sortOrder> > > .SelectSingleBound(this, null, ParentID);

                    int sortOrder = (int)previous.SortOrder;
                    sortOrder          = sortOrder + 1;
                    inserted.SortOrder = previous != null ? sortOrder : 1;

                    Folders.Cache.ActiveRow = inserted;

                    PXSelect <EPCompanyTreeMaster,
                              Where <EPCompanyTreeMaster.parentWGID, Equal <Required <EPCompanyTreeMaster.parentWGID> > >,
                              OrderBy <Desc <EPCompanyTreeMaster.sortOrder> > > .Clear(this);
                }
            }
            return(adapter.Get());
        }
コード例 #24
0
        protected virtual void EPCompanyTreeMaster_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e)
        {
            EPCompanyTreeMaster row = e.Row as EPCompanyTreeMaster, oldRow = e.OldRow as EPCompanyTreeMaster;

            if (row == null || oldRow == null)
            {
                return;
            }

            if (row.ParentWGID == 0 || row.BypassEscalation == true)
            {
                row.WaitTime = 0;
            }

            if (row.ParentWGID != oldRow.ParentWGID)
            {
                updateHRecordParent(row);
            }
            else if (row.WaitTime != oldRow.WaitTime)
            {
                updateHRecordTime(row.WorkGroupID,
                                  row.WaitTime.GetValueOrDefault() - oldRow.WaitTime.GetValueOrDefault());
            }
        }