From dc2f8889e43fd68b4e87c7f1821d7b618705b2d8 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 25 Jan 2012 17:41:13 +0100 Subject: [PATCH] Bug #1366: Fix issue subtracting the value when you are removing work report lines FEA: ItEr76S04BugFixing --- .../business/orders/daos/OrderElementDAO.java | 20 ++++++++++++++----- .../orders/entities/SumChargedEffort.java | 6 ++++++ 2 files changed, 21 insertions(+), 5 deletions(-) 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; }