ItEr41S23CUImportarTraballoRealizadoPorSubcontrata: Added information about advance on order elements importation.
This commit is contained in:
parent
706ed0334c
commit
b83936d2ff
3 changed files with 98 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue