Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void SaveAssignedPercentage()
- {
- string errorSavingAssignmentsMessage = '';
- try
- {
- List<Team_Member_Projects__c> tmpList = new List<Team_Member_Projects__c>();
- List<Team_Member_Projects__c> tmpListToDelete = new List<Team_Member_Projects__c>();
- if(AssignByRoleModifiedTeamMemberIds != '' && AssignByRoleModifiedTeamMemberIds != null)
- {
- Set<string> tmIds = new Set<string>(AssignByRoleModifiedTeamMemberIds.split(','));
- Map<Id,Team_Member_Projects__c> oldRecordMap
- = new Map<Id,Team_Member_Projects__c>(
- [select Team_Member__c, Opportunity__c, Assigned__c, Id
- from Team_Member_Projects__c
- where Team_Member__c in :tmIds
- and Assignment_End_Date__c = null]);
- //ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(oldRecordMap)));
- //return;
- Map<string,decimal> totalAssignmentsMap = new Map<string,decimal>();
- Set<string> existingAssignments = new Set<string>();
- if(oldRecordMap != null)
- {
- for(Team_Member_Projects__c tmp : oldRecordMap.values())
- {
- string tmId = tmp.Team_Member__c;
- if(totalAssignmentsMap.get(tmId) == null)
- totalAssignmentsMap.put(tmId, 0);
- decimal totalAssignment = totalAssignmentsMap.get(tmId);
- totalAssignment += tmp.Assigned__c;
- totalAssignmentsMap.put(tmId, totalAssignment);
- existingAssignments.add(tmId+tmp.Opportunity__c);
- }
- }
- for(string tmId : tmIds)
- {
- List<Team_Member_Projects__c> tmAssignedProjects = new List<Team_Member_Projects__c>();
- if(TmpMap.get(tmId) != null)
- tmAssignedProjects = TmpMap.get(tmId);
- decimal totalAssignment = 0;
- if(totalAssignmentsMap.containsKey(tmId))
- totalAssignment = totalAssignmentsMap.get(tmId);
- for(Team_Member_Projects__c tmpObj : tmAssignedProjects)
- {
- boolean wrongAssignmentValue = false;
- if(tmpObj.Id != null)
- {
- Team_Member_Projects__c oldTmpObj = oldRecordMap.get(tmpObj.Id);
- boolean projectWasChanged = tmpObj.Opportunity__c != oldTmpObj.Opportunity__c;
- ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(tmpObj)));
- return;
- if(projectWasChanged)
- {
- if(existingAssignments.contains(tmId+tmpObj.Opportunity__c))
- {
- errorSavingAssignmentsMessage = 'Save Failed. Team member can only be assigned once to each the project.';
- projectWasChanged = false;
- }
- else
- {
- Team_Member_Projects__c newAssignment = new Team_Member_Projects__c();
- newAssignment.Assigned__c = tmpObj.Assigned__c;
- newAssignment.Opportunity__c = tmpObj.Opportunity__c;
- newAssignment.Team_Member__c = tmId;
- tmpList.add(newAssignment);
- }
- }
- else if(tmpObj.Assigned__c == 0
- || tmpObj.Assigned__c == null
- ||tmpObj.Opportunity__c == null
- || projectWasChanged)
- {
- tmpObj = oldTmpObj;
- tmpObj.Assignment_End_Date__c = system.now();
- }
- if(tmpObj.Assigned__c != null)
- {
- if(oldTmpObj.Assigned__c != tmpObj.Assigned__c)
- {
- if(tmpObj.Assigned__c < 0 || tmpObj.Assigned__c > 100)
- {
- wrongAssignmentValue = true;
- }
- else
- {
- totalAssignment -= oldTmpObj.Assigned__c;
- totalAssignment += tmpObj.Assigned__c;
- }
- }
- }
- }
- else
- { if(tmpObj.Assigned__c == null)
- {
- tmpObj.Assigned__c = 0;
- if(tmpObj.Opportunity__c != null)
- totalAssignment += tmpObj.Assigned__c;
- }
- else if(tmpObj.Assigned__c <= 0
- || tmpObj.Assigned__c > 100)
- {
- if(tmpObj.Opportunity__c != null)
- wrongAssignmentValue = true;
- }
- else
- {
- if(tmpObj.Opportunity__c == null)
- errorSavingAssignmentsMessage = 'Save Failed. Please assign a project to the team member.';
- else
- totalAssignment += tmpObj.Assigned__c;
- }
- }
- //change
- //ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(tmpObj)));
- //return;
- if(wrongAssignmentValue)
- errorSavingAssignmentsMessage = 'Save Failed. Team members' assignments should be between 1% and 100%.';
- if(totalAssignment > 100)
- errorSavingAssignmentsMessage = 'Save Failed. Team members' assignments should not exceed 100%.';
- if(errorSavingAssignmentsMessage != '')
- break;
- if(tmpObj.Assigned__c == null)
- tmpObj.Assigned__c = 0;
- ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, string.valueof(tmpObj)));
- return;
- if(tmpObj.Assigned__c != null && tmpObj.Opportunity__c != null)
- tmpList.add(tmpObj);
- }
- }
- }
- if(errorSavingAssignmentsMessage != '')
- {
- ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, errorSavingAssignmentsMessage));
- return;
- }
- upsert tmpList;
- update teamMemberList;
- }
- catch(Exception ex)
- {
- ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, ex.getMessage()));
- if(ex.getMessage().contains('entity is deleted'))
- ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'There was a problem updating the changes. One of the opportunities being modified has already been deleted.'));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement