[Bug #627] it sends the subcontracted advance notification correctly.
FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04
This commit is contained in:
parent
dadac02180
commit
149b293001
7 changed files with 76 additions and 29 deletions
|
|
@ -30,8 +30,8 @@ import java.util.HashMap;
|
|||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.validator.AssertTrue;
|
||||
|
|
@ -1259,4 +1259,14 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
return sumChargedHours;
|
||||
}
|
||||
|
||||
public void updateAdvancePercentageTaskElement() {
|
||||
BigDecimal advancePercentage = this.getAdvancePercentage();
|
||||
if (this.getTaskSource() != null) {
|
||||
if (this.getTaskSource().getTask() != null) {
|
||||
this.getTaskSource().getTask().setAdvancePercentage(
|
||||
advancePercentage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -544,10 +544,6 @@ public class OrderElementTest {
|
|||
new BigDecimal(1000), two, new BigDecimal(100), three,
|
||||
new BigDecimal(350), four, new BigDecimal(400));
|
||||
|
||||
System.out.println("advance " + orderElement.getAdvancePercentage());
|
||||
System.out.println("otro "
|
||||
+ new BigDecimal(4333).divide(new BigDecimal(10000))
|
||||
.setScale(4));
|
||||
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
|
||||
4333).divide(new BigDecimal(10000)).setScale(4)));
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import java.util.Collection;
|
|||
import java.util.ConcurrentModificationException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
|
@ -89,7 +88,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.zkoss.ganttz.IPredicate;
|
||||
import org.zkoss.zul.Messagebox;
|
||||
|
|
@ -567,13 +565,7 @@ public class OrderModel implements IOrderModel {
|
|||
}
|
||||
|
||||
private void calculateAdvancePercentage(OrderElement orderElement) {
|
||||
BigDecimal advancePercentage = orderElement.getAdvancePercentage();
|
||||
if (orderElement.getTaskSource() != null) {
|
||||
if (orderElement.getTaskSource().getTask() != null) {
|
||||
orderElement.getTaskSource().getTask().setAdvancePercentage(
|
||||
advancePercentage);
|
||||
}
|
||||
}
|
||||
orderElement.updateAdvancePercentageTaskElement();
|
||||
}
|
||||
|
||||
private void createAndSaveNewOrderVersion(Scenario currentScenario,
|
||||
|
|
|
|||
|
|
@ -247,8 +247,12 @@ public class TaskElementAdapter implements ITaskElementAdapter {
|
|||
@Override
|
||||
public Date getHoursAdvanceEndDate() {
|
||||
OrderElement orderElement = taskElement.getOrderElement();
|
||||
Integer assignedHours =
|
||||
orderElement.getSumChargedHours().getTotalChargedHours();
|
||||
|
||||
Integer assignedHours = 0;
|
||||
if (orderElement.getSumChargedHours() != null) {
|
||||
assignedHours = orderElement.getSumChargedHours()
|
||||
.getTotalChargedHours();
|
||||
}
|
||||
|
||||
LocalDate date = calculateLimitDate(assignedHours);
|
||||
if (date == null) {
|
||||
|
|
|
|||
|
|
@ -21,8 +21,6 @@
|
|||
package org.navalplanner.web.planner.advances;
|
||||
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.navalplanner.business.advance.entities.AdvanceAssignment;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
|
||||
|
|
@ -76,7 +74,6 @@ public class AdvanceAssignmentPlanningModel implements
|
|||
calculateAdvancePercentage(parent);
|
||||
parent = parent.getParent();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -151,13 +148,7 @@ public class AdvanceAssignmentPlanningModel implements
|
|||
}
|
||||
|
||||
private void calculateAdvancePercentage(OrderElement orderElement) {
|
||||
BigDecimal advancePercentage = orderElement.getAdvancePercentage();
|
||||
if (orderElement.getTaskSource() != null) {
|
||||
if (orderElement.getTaskSource().getTask() != null) {
|
||||
orderElement.getTaskSource().getTask().setAdvancePercentage(
|
||||
advancePercentage);
|
||||
}
|
||||
}
|
||||
orderElement.updateAdvancePercentageTaskElement();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import javax.ws.rs.Produces;
|
|||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.navalplanner.business.advance.bootstrap.PredefinedAdvancedTypes;
|
||||
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.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
|
|
@ -41,7 +42,11 @@ import org.navalplanner.business.common.exceptions.ValidationException;
|
|||
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
|
||||
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.scenarios.bootstrap.PredefinedScenarios;
|
||||
import org.navalplanner.business.scenarios.entities.OrderVersion;
|
||||
import org.navalplanner.business.scenarios.entities.Scenario;
|
||||
import org.navalplanner.ws.common.api.AdvanceMeasurementDTO;
|
||||
import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO;
|
||||
import org.navalplanner.ws.common.api.InstanceConstraintViolationsListDTO;
|
||||
|
|
@ -119,6 +124,7 @@ public class ReportAdvancesServiceREST implements IReportAdvancesService {
|
|||
|
||||
DirectAdvanceAssignment advanceAssignmentSubcontractor = orderElement
|
||||
.getDirectAdvanceAssignmentSubcontractor();
|
||||
|
||||
if (advanceAssignmentSubcontractor == null) {
|
||||
DirectAdvanceAssignment reportGlobal = orderElement
|
||||
.getReportGlobalAdvanceAssignment();
|
||||
|
|
@ -160,6 +166,24 @@ public class ReportAdvancesServiceREST implements IReportAdvancesService {
|
|||
}
|
||||
}
|
||||
|
||||
// set the advance assingment subcontractor like spread
|
||||
AdvanceAssignment spreadAdvance = orderElement
|
||||
.getReportGlobalAdvanceAssignment();
|
||||
if (spreadAdvance != null
|
||||
&& !spreadAdvance
|
||||
.equals(advanceAssignmentSubcontractor)) {
|
||||
spreadAdvance.setReportGlobalAdvance(false);
|
||||
advanceAssignmentSubcontractor.setReportGlobalAdvance(true);
|
||||
}
|
||||
// update the advance percentage in its related task
|
||||
Scenario scenarioMaster = PredefinedScenarios.MASTER
|
||||
.getScenario();
|
||||
Order order = orderElementDAO
|
||||
.loadOrderAvoidingProxyFor(orderElement);
|
||||
OrderVersion orderVersion = order.getScenarios().get(
|
||||
scenarioMaster);
|
||||
updateAdvancePercentage(orderVersion, orderElement);
|
||||
|
||||
orderElement.validate();
|
||||
orderElementDAO.save(orderElement);
|
||||
} catch (ValidationException e) {
|
||||
|
|
@ -183,4 +207,15 @@ public class ReportAdvancesServiceREST implements IReportAdvancesService {
|
|||
instanceConstraintViolationsList);
|
||||
}
|
||||
|
||||
private void updateAdvancePercentage(OrderVersion orderVersion,
|
||||
OrderElement orderElement) {
|
||||
orderElement.useSchedulingDataFor(orderVersion);
|
||||
orderElement.updateAdvancePercentageTaskElement();
|
||||
OrderElement parent = orderElement.getParent();
|
||||
while (parent != null) {
|
||||
parent.useSchedulingDataFor(orderVersion);
|
||||
parent.updateAdvancePercentageTaskElement();
|
||||
parent = parent.getParent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,9 +50,11 @@ import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
|
|||
import org.navalplanner.business.common.IAdHocTransactionService;
|
||||
import org.navalplanner.business.common.IOnTransaction;
|
||||
import org.navalplanner.business.common.daos.IConfigurationDAO;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
|
||||
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.orders.entities.OrderLine;
|
||||
|
|
@ -117,6 +119,9 @@ public class ReportAdvancesServiceTest {
|
|||
@Autowired
|
||||
private IOrderDAO orderDAO;
|
||||
|
||||
@Autowired
|
||||
private IOrderElementDAO orderElementDAO;
|
||||
|
||||
@Autowired
|
||||
private IConfigurationDAO configurationDAO;
|
||||
|
||||
|
|
@ -145,7 +150,7 @@ public class ReportAdvancesServiceTest {
|
|||
|
||||
@Test
|
||||
public void validAdvancesReport() {
|
||||
Order order = givenValidOrderAlreadyStored();
|
||||
Order order = givenOrder();
|
||||
String orderElementCode = order.getChildren().get(0).getCode();
|
||||
|
||||
Date date = new Date();
|
||||
|
|
@ -195,6 +200,16 @@ public class ReportAdvancesServiceTest {
|
|||
.asList(orderElementWithAdvanceMeasurementsDTO));
|
||||
}
|
||||
|
||||
private Order givenOrder() {
|
||||
return transactionService
|
||||
.runOnAnotherTransaction(new IOnTransaction<Order>() {
|
||||
@Override
|
||||
public Order execute() {
|
||||
return givenValidOrderAlreadyStored();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Order givenValidOrderAlreadyStored() {
|
||||
Order order = Order.create();
|
||||
order.setCode(UUID.randomUUID().toString());
|
||||
|
|
@ -212,8 +227,12 @@ public class ReportAdvancesServiceTest {
|
|||
orderLine.setName("Order line name");
|
||||
|
||||
orderDAO.save(order);
|
||||
|
||||
return order;
|
||||
orderDAO.flush();
|
||||
try {
|
||||
return orderDAO.find(order.getId());
|
||||
} catch (InstanceNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue