ItEr41S23CUImportarTraballoRealizadoPorSubcontrata: Added information about advance on order elements importation.

This commit is contained in:
Manuel Rego Casasnovas 2009-12-30 21:18:51 +01:00 committed by Javier Moran Rua
parent 706ed0334c
commit b83936d2ff
3 changed files with 98 additions and 0 deletions

View file

@ -134,4 +134,23 @@ public class DirectAdvanceAssignment extends AdvanceAssignment {
RoundingMode.DOWN);
}
public void addAdvanceMeasurements(AdvanceMeasurement advanceMeasurement) {
this.advanceMeasurements.add(advanceMeasurement);
advanceMeasurement.setAdvanceAssignment(this);
}
public AdvanceMeasurement getAdvanceMeasurementAtExactDate(LocalDate date) {
if (advanceMeasurements.isEmpty()) {
return null;
}
for (AdvanceMeasurement advanceMeasurement : advanceMeasurements) {
if (advanceMeasurement.getDate().equals(date)) {
return advanceMeasurement;
}
}
return null;
}
}

View file

@ -36,6 +36,7 @@ import org.hibernate.validator.InvalidValue;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.Valid;
import org.joda.time.LocalDate;
import org.navalplanner.business.advance.bootstrap.PredefinedAdvancedTypes;
import org.navalplanner.business.advance.entities.AdvanceAssignment;
import org.navalplanner.business.advance.entities.AdvanceType;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
@ -885,4 +886,32 @@ public abstract class OrderElement extends BaseEntity {
return null;
}
public DirectAdvanceAssignment getDirectAdvanceAssignmentSubcontractor() {
for (DirectAdvanceAssignment directAdvanceAssignment : directAdvanceAssignments) {
if (directAdvanceAssignment.getAdvanceType().getUnitName().equals(
PredefinedAdvancedTypes.SUBCONTRACTOR.getTypeName())) {
return directAdvanceAssignment;
}
}
return null;
}
public DirectAdvanceAssignment addSubcontractorAdvanceAssignment()
throws DuplicateValueTrueReportGlobalAdvanceException,
DuplicateAdvanceAssignmentForOrderElementException {
boolean reportGlobalAdvance = false;
if (getReportGlobalAdvanceAssignment() == null) {
reportGlobalAdvance = true;
}
DirectAdvanceAssignment directAdvanceAssignment = DirectAdvanceAssignment
.create(reportGlobalAdvance, new BigDecimal(100));
directAdvanceAssignment
.setAdvanceType(PredefinedAdvancedTypes.SUBCONTRACTOR.getType());
addAdvanceAssignment(directAdvanceAssignment);
return directAdvanceAssignment;
}
}

View file

@ -31,8 +31,11 @@ import java.util.List;
import java.util.Set;
import org.hibernate.NonUniqueResultException;
import org.joda.time.LocalDate;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.Registry;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
@ -232,6 +235,8 @@ public final class OrderElementConverter {
orderElement.addMaterialAssignment(toEntity(materialAssignmentDTO));
}
addAdvanceMeasurements(orderElement, orderElementDTO);
return orderElement;
}
@ -375,6 +380,8 @@ public final class OrderElementConverter {
}
}
addAdvanceMeasurements(orderElement, orderElementDTO);
if (orderElementDTO.name != null) {
orderElement.setName(orderElementDTO.name);
}
@ -429,4 +436,47 @@ public final class OrderElementConverter {
}
}
private static void addAdvanceMeasurements(OrderElement orderElement,
OrderElementDTO orderElementDTO) {
if (!orderElementDTO.advanceMeasurements.isEmpty()) {
DirectAdvanceAssignment directAdvanceAssignment = getDirectAdvanceAssignmentSubcontractor(orderElement);
for (AdvanceMeasurementDTO advanceMeasurementDTO : orderElementDTO.advanceMeasurements) {
AdvanceMeasurement advanceMeasurement = null;
LocalDate date = null;
if (advanceMeasurementDTO.date != null) {
date = new LocalDate(advanceMeasurementDTO.date);
advanceMeasurement = directAdvanceAssignment
.getAdvanceMeasurementAtExactDate(date);
}
if (advanceMeasurement == null) {
advanceMeasurement = AdvanceMeasurement.create(date,
advanceMeasurementDTO.value);
directAdvanceAssignment
.addAdvanceMeasurements(advanceMeasurement);
} else {
advanceMeasurement.setValue(advanceMeasurementDTO.value);
}
}
}
}
private static DirectAdvanceAssignment getDirectAdvanceAssignmentSubcontractor(
OrderElement orderElement) {
DirectAdvanceAssignment directAdvanceAssignment = orderElement
.getDirectAdvanceAssignmentSubcontractor();
if (directAdvanceAssignment == null) {
try {
directAdvanceAssignment = orderElement
.addSubcontractorAdvanceAssignment();
} catch (DuplicateValueTrueReportGlobalAdvanceException e) {
throw new RuntimeException(e);
} catch (DuplicateAdvanceAssignmentForOrderElementException e) {
throw new RuntimeException(e);
}
}
return directAdvanceAssignment;
}
}