ItEr59S04ValidacionEProbasFuncionaisItEr58S04 : [Bug #478] Fixing Bug.

shows the percentage, and the units if it is not of percentage type,
in the consolidated lines.
This commit is contained in:
Susana Montes Pedreira 2010-06-02 19:34:26 +02:00 committed by Javier Moran Rua
parent 945d8f40bf
commit 1efafd864b
5 changed files with 94 additions and 12 deletions

View file

@ -128,4 +128,9 @@ public class AdvanceConsolidationController extends GenericForwardComposer {
}
return "";
}
public boolean isUnitType() {
return advanceConsolidationModel.isUnitType();
}
}

View file

@ -21,12 +21,15 @@
package org.navalplanner.web.planner.consolidations;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import org.navalplanner.business.advance.entities.AdvanceAssignment;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.planner.entities.consolidations.ConsolidatedValue;
/**
@ -48,7 +51,9 @@ public class AdvanceConsolidationDTO {
private Date date;
private BigDecimal value;
private BigDecimal units;
private BigDecimal percentage;
private boolean consolidated;
@ -82,7 +87,8 @@ public class AdvanceConsolidationDTO {
this.setConsolidatedValue(consolidatedValue);
initConsolidated();
initDate();
initValue();
initPercentage();
initUnits();
}
private void initConsolidated() {
@ -99,11 +105,19 @@ public class AdvanceConsolidationDTO {
}
}
private void initValue() {
private void initPercentage() {
if (consolidatedValue != null) {
this.value = this.consolidatedValue.getValue();
this.percentage = this.consolidatedValue.getValue();
} else if (advanceMeasurement != null) {
this.value = this.advanceMeasurement.getValue();
this.percentage = calculatePercentageAdvanceMeasurement(advanceMeasurement);
}
}
private void initUnits(){
if (advanceMeasurement != null) {
this.units = advanceMeasurement.getValue();
} else {
this.units = BigDecimal.ZERO;
}
}
@ -174,8 +188,8 @@ public class AdvanceConsolidationDTO {
return date;
}
public BigDecimal getValue() {
return value;
public BigDecimal getPercentage() {
return percentage;
}
public static void setAllReadOnly(boolean allReadOnly) {
@ -186,4 +200,47 @@ public class AdvanceConsolidationDTO {
return allReadOnly;
}
private BigDecimal calculatePercentageAdvanceMeasurement(
AdvanceMeasurement advanceMeasurement) {
AdvanceAssignment assignment = advanceMeasurement
.getAdvanceAssignment();
if (assignment == null) {
return BigDecimal.ZERO;
}
BigDecimal maxValue = ((DirectAdvanceAssignment) assignment)
.getMaxValue();
if (maxValue.compareTo(BigDecimal.ZERO) <= 0) {
return BigDecimal.ZERO;
}
BigDecimal value = advanceMeasurement.getValue();
if (value == null) {
return BigDecimal.ZERO;
}
return value.setScale(2).divide(maxValue, RoundingMode.DOWN).multiply(
new BigDecimal(100));
}
public String getLabelPercentage() {
if (getPercentage() != null) {
return getPercentage().toString() + " %";
} else {
return (BigDecimal.ZERO).toString() + " %";
}
}
public BigDecimal getUnits() {
return units;
}
public String getLabelUnits() {
if (getUnits() != null) {
return getUnits().toString();
} else {
return (BigDecimal.ZERO).toString();
}
}
}

View file

@ -34,6 +34,7 @@ import org.joda.time.LocalDate;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment;
import org.navalplanner.business.orders.daos.IOrderElementDAO;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.planner.daos.ITaskElementDAO;
import org.navalplanner.business.planner.entities.DayAssignment;
@ -67,6 +68,9 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
@Autowired
private ITaskElementDAO taskElementDAO;
@Autowired
private IOrderElementDAO orderElementDAO;
private Task task;
private PlanningState planningState;
@ -77,6 +81,8 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
private DirectAdvanceAssignment spreadAdvance;
private boolean isUnitType = false;
private OrderElement orderElement;
private Date firstConsolidatedDate;
@ -261,11 +267,12 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
if (consolidation.isCalculated()) {
return CalculatedConsolidatedValue.create(LocalDate
.fromDateFields(dto.getDate()), dto.getValue(),
.fromDateFields(dto.getDate()), dto.getPercentage(),
LocalDate.fromDateFields(task.getEndDate()));
} else {
return NonCalculatedConsolidatedValue.create(LocalDate
.fromDateFields(dto.getDate()), dto.getValue(), dto
.fromDateFields(dto.getDate()), dto.getPercentage(),
dto
.getAdvanceMeasurement(), LocalDate.fromDateFields(task
.getEndDate()));
}
@ -354,13 +361,17 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
private void initAdvanceConsolidationsDTOs(Task task) {
orderElement = task.getOrderElement();
orderElementDAO.reattachUnmodifiedEntity(orderElement);
spreadAdvance = orderElement.getReportGlobalAdvanceAssignment();
consolidation = task.getConsolidation();
if (consolidation != null) {
consolidation.getConsolidatedValues().size();
}
if (spreadAdvance != null) {
isUnitType = (!spreadAdvance.getAdvanceType().getPercentage());
createAdvanceConsolidationDTOs();
initConsolidatedDates();
addNonConsolidatedAdvances();
@ -482,4 +493,8 @@ public class AdvanceConsolidationModel implements IAdvanceConsolidationModel {
AdvanceConsolidationDTO.setAllReadOnly(hasLimitingResourceAllocation());
}
public boolean isUnitType() {
return this.isUnitType;
}
}

View file

@ -49,6 +49,8 @@ public interface IAdvanceConsolidationModel {
boolean isVisibleMessages();
boolean isUnitType();
List<AdvanceConsolidationDTO> getConsolidationDTOs();
String infoMessages();

View file

@ -86,7 +86,7 @@
<window id="advanceWindow"
apply="${advanceController}"
title="${i18n:_('Advance consolidation')}" width="600px"
title="${i18n:_('Advance consolidation')}" width="700px"
closable="true" visible="false">
<vbox>
@ -110,13 +110,16 @@
fixedLayout="true"
sclass="@{advanceController.readOnlySclass}">
<columns>
<column label="${i18n:_('Value')}" width="150px" align="center"/>
<column label="${i18n:_('Value')}" width="150px" align="center" visible="@{advanceController.unitType}"/>
<column label="${i18n:_('Percentage')}" width="150px" align="center"/>
<column label="${i18n:_('Date')}" width="150px" align="center"/>
<column label="${i18n:_('Consolidated')}" width="150px" align="center"/>
</columns>
<rows>
<row self="@{each='advanceConsolidationDTO'}" value="@{advanceConsolidationDTO}">
<label value="@{advanceConsolidationDTO.value}" />
<label value="@{advanceConsolidationDTO.labelUnits}"
visible="@{advanceController.unitType}"/>
<label value="@{advanceConsolidationDTO.labelPercentage}" />
<label value="@{advanceConsolidationDTO.date,converter='org.navalplanner.web.common.typeconverters.DateConverter'}" />
<checkbox checked="@{advanceConsolidationDTO.consolidated}"
onCheck="advanceController.reloadAdvanceGrid();"