dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #34740
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17816: Approvals: include lower levels in user approval levels.
------------------------------------------------------------
revno: 17816
committer: jimgrace@xxxxxxxxx
branch nick: dhis2
timestamp: Sun 2014-12-28 19:23:53 -0500
message:
Approvals: include lower levels in user approval levels.
modified:
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java 2014-12-20 09:10:25 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataapproval/DefaultDataApprovalLevelService.java 2014-12-29 00:23:53 +0000
@@ -262,12 +262,19 @@
{
Set<Integer> userOrgUnitLevels = new HashSet<>();
+ int lowestNumberOrgUnitLevel = 99999999;
+
for ( OrganisationUnit orgUnit : user.getOrganisationUnits() )
{
int orgUnitLevel = orgUnit.hasLevel() ?
orgUnit.getLevel() : organisationUnitService.getLevelOfOrganisationUnit( orgUnit.getId() );
userOrgUnitLevels.add( orgUnitLevel );
+
+ if ( orgUnitLevel < lowestNumberOrgUnitLevel )
+ {
+ lowestNumberOrgUnitLevel = orgUnitLevel;
+ }
}
boolean assignedAtLevel = false;
@@ -304,7 +311,8 @@
// Get new values of assignedAtLevel and approvableAtLevel for the current approval level.
- assignedAtLevel = canReadThisLevel && userOrgUnitLevels.contains( approvalLevel.getOrgUnitLevel() );
+ assignedAtLevel = canReadThisLevel && ( userOrgUnitLevels.contains( approvalLevel.getOrgUnitLevel() )
+ || ( ( mayApproveAtLowerLevels || mayAcceptAtLowerLevels ) && approvalLevel.getOrgUnitLevel() > lowestNumberOrgUnitLevel ) );
approvableAtLevel = canReadThisLevel && ( ( mayApprove && assignedAtLevel ) || approvableAtAllLowerLevels );