Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagegroovy
import com.deniz.jira.worklog.approval.*;
import com.atlassian.jira.component.ComponentAccessor;

//We need to load WorklogPRO classes differently using getOSGiComponentInstanceOfType
TimesheetApprovalService approvalService = ComponentAccessor.getOSGiComponentInstanceOfType(TimesheetApprovalService.class);

def approvalRequests = approvalService.getTsApprovalRequestsForUserAndPeriod(timesheetApprovalAction.userKey, timesheetApprovalAction.period.id);
if (approvalRequests.length == 0) {
  return "User hasn't submitted his/her timesheet yet!";
}

Don’t Allow Multiple Approval/Rejection for the Same Project and Period

Code Block
import com.deniz.jira.worklog.approval.*;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.project.*;
import com.atlassian.jira.*;
import com.atlassian.jira.user.util.*;

TimesheetApprovalService approvalService = ComponentAccessor.getOSGiComponentInstanceOfType(TimesheetApprovalService.class);
UserManager userManager = ComponentAccessor.getUserManager();
ProjectManager projectManager = ComponentAccessor.getProjectManager();

def user = userManager.getUserByKey(timesheetApprovalAction.userKey);
def project = projectManager.getProjectByCurrentKey(timesheetApprovalAction.projectKey);

def approvalStatus = approvalService.getTimesheetApprovalStatus(user.getKey(), timesheetApprovalAction.period.id, [project.id] as Set);

def projectApprovalStatus = approvalStatus.projectApproval.get(project.key);
if (projectApprovalStatus.approvalStatus != TimesheetApprovalStatus.SUBMITTED) {
  return "This timesheet is already approved/rejected or not submitted yet!"  
}

Require Explanation When Rejecting a Timesheet

...