2017-12-12 1 views
0

'프로젝트 별 할당 실행'프로세스 관련 - 할당 프로세스에 조건을 추가하여 해당 조건이 실행되지 않는 한 실행하지 못하도록하는 사용자 정의가 있습니다. 만났다. '할당 규칙'화면 (PM207500)에 확인란 상자 사용자 필드를 추가했으며 해당 필드를 다른 조건과 함께 사용하여 해당 PMTask 행에 대한 할당을 실제로 실행할지 여부를 결정합니다. .프로젝트 할당 프로세스를 재정의하는 가장 좋은 방법은 무엇입니까

다음과 같이 PMAllocator.Execute 메서드를 재정의했지만 올바르게 작동하지 않는 것 같습니다. 여기가 PMAllocator 그래프의 확장에 함께 왔어요 코드입니다 :

[PXOverride] 
    public virtual void Execute(List<PMTask> tasks) 
    { 
     Base.PreselectAccountGroups(); 
     if (Base.PreSelectTasksTransactions(tasks)) 
     { 
      foreach (PMTask task in tasks) 
      { 
       //Get the allocation id for the task... 
       var pmalloc = (PMAllocation)PXSelect<PMAllocation, 
              Where<PMAllocation.allocationID, Equal<Required<PMAllocation.allocationID>>>>.Select(Base, task.AllocationID); 
       //if (pmalloc == null) return; 

       //Get the cache extension/user field... 
       var pmallocext = PXCache<PMAllocation>.GetExtension<PMAllocationExt>(pmalloc); 

       if (pmallocext.UsrRunAfterProjectCompletion == true) 
       { 
        //Get the project... 
        var pmproj = (PMProject)PXSelect<PMProject, 
              Where<PMProject.contractID, Equal<Required<PMProject.contractID>>>>.Select(Base, task.ProjectID); 

        if (pmproj.ExpireDate > DateTime.Today || pmproj.ExpireDate == null) 
        { 
         //do nothing.. 
        } 
        else 
        { 
         Base.Execute(task, false); 
        } 

       } 
       else 
       { 
        Base.Execute(task, false); 
       } 
      } 
     } 
    } 

하지만이 그것을 할 수있는 올바른 방법인지 확실하지 않다. 그것은 여분의 할당 라인을 추가하는 것 같습니다. 명시 적으로 여기서 호출하지 않으면 기본 실행 메서드가 호출되지 않는지 확실하지 않습니다.

누군가가이 작업을 수행하는 가장 좋은 방법을 지적 할 수 있습니까?

답변

0

[PXOverride] 만 사용하면 기본 실행 (...) 메소드가 호출되기 전에 실행됩니다. 기본 메서드를 바꾸려면 추가 매개 변수 (대리자)를 지정해야합니다. 귀하의 경우 그것은 그렇게 될 수 있습니다 :

public delegate void ExecuteDelegate(List<PMTask> tasks); 
[PXOverride] 
public virtual void Execute(List<PMTask> tasks, ExecuteDelegate BaseExecute) 
{ 
... your code 
} 
+0

그래서 할 일이 발생하지 않도록 base.execute 방지하기 위해 뭔가를해야합니까? 아니면 기본 메서드가 실행되지 않도록 매개 변수/인수에 대리자를 추가하는 것입니까? – pmfith

+0

대리자를 매개 변수로 추가하는 것만으로 기본 메서드가 실행되지 못하도록 할 수 있습니다. –

+0

감사합니다. 일리아! – pmfith

관련 문제