diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderElementDAO.java b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderElementDAO.java index 58d5fce81..570c238d2 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderElementDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/daos/OrderElementDAO.java @@ -520,13 +520,21 @@ public class OrderElementDAO extends IntegrationEntityDAO } private void updateIndirectChargedEffortWithMap( - Map relationOrderElementIdAndIndirectChargedEffort) + Map relationOrderElementIdAndIndirectChargedEffort, + boolean sum) throws InstanceNotFoundException { for (Long id : relationOrderElementIdAndIndirectChargedEffort.keySet()) { OrderElement orderElement = find(id); - orderElement.getSumChargedEffort().addIndirectChargedEffort( - relationOrderElementIdAndIndirectChargedEffort.get(id)); + if (sum) { + orderElement.getSumChargedEffort().addIndirectChargedEffort( + relationOrderElementIdAndIndirectChargedEffort.get(id)); + } else { + orderElement.getSumChargedEffort() + .subtractIndirectChargedEffort( + relationOrderElementIdAndIndirectChargedEffort + .get(id)); + } save(orderElement); } } @@ -540,7 +548,8 @@ public class OrderElementDAO extends IntegrationEntityDAO updateRelatedSumChargedEffortWithDeletedWorkReportLine(line, relationOrderElementIdAndIndirectChargedEffort); } - updateIndirectChargedEffortWithMap(relationOrderElementIdAndIndirectChargedEffort); + updateIndirectChargedEffortWithMap( + relationOrderElementIdAndIndirectChargedEffort, false); } @Override @@ -552,7 +561,8 @@ public class OrderElementDAO extends IntegrationEntityDAO updateRelatedSumChargedEffortWithWorkReportLine(line, relationOrderElementIdAndIndirectChargedEffort); } - updateIndirectChargedEffortWithMap(relationOrderElementIdAndIndirectChargedEffort); + updateIndirectChargedEffortWithMap( + relationOrderElementIdAndIndirectChargedEffort, true); } @SuppressWarnings("unchecked") diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/SumChargedEffort.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/SumChargedEffort.java index beebc893b..bbb782ec9 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/SumChargedEffort.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/SumChargedEffort.java @@ -62,6 +62,12 @@ public class SumChargedEffort extends BaseEntity { .plus(indirectChargedEffort); } + public void subtractIndirectChargedEffort( + EffortDuration indirectChargedEffort) { + this.indirectChargedEffort = this.indirectChargedEffort + .minus(indirectChargedEffort); + } + public EffortDuration getIndirectChargedEffort() { return indirectChargedEffort; }