ItEr45S14CUActualizarTraballoExportadoPorSubcontrataItEr44S20: Added company NIF to information sent with advances in order to check if it is a registered subcontractor or not.

This commit is contained in:
Manuel Rego Casasnovas 2010-01-25 17:23:30 +01:00 committed by Javier Moran Rua
parent 80160d1af3
commit 39ec3afdbc
5 changed files with 70 additions and 7 deletions

View file

@ -39,6 +39,7 @@ import org.navalplanner.business.advance.bootstrap.PredefinedAdvancedTypes;
import org.navalplanner.business.advance.daos.IAdvanceAssignmentDAO;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
import org.navalplanner.business.orders.daos.IOrderElementDAO;
import org.navalplanner.business.orders.entities.Order;
@ -76,6 +77,9 @@ public class ReportAdvancesModel implements IReportAdvancesModel {
@Autowired
private IAdvanceAssignmentDAO advanceAssignmentDAO;
@Autowired
private IConfigurationDAO configurationDAO;
@Override
@Transactional(readOnly = true)
public List<Order> getOrdersWithExternalCodeInAnyOrderElement() {
@ -260,8 +264,12 @@ public class ReportAdvancesModel implements IReportAdvancesModel {
}
}
return new OrderElementWithAdvanceMeasurementsListDTO(
return new OrderElementWithAdvanceMeasurementsListDTO(getCompanyCode(),
orderElementWithAdvanceMeasurementsDTOs);
}
private String getCompanyCode() {
return configurationDAO.getConfiguration().getCompanyCode();
}
}

View file

@ -23,6 +23,7 @@ package org.navalplanner.ws.subcontract.api;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@ -36,14 +37,18 @@ import org.navalplanner.business.orders.entities.OrderElement;
@XmlRootElement(name = "order-element-list")
public class OrderElementWithAdvanceMeasurementsListDTO {
@XmlAttribute(name = "external-company-nif")
public String externalCompanyNif;
@XmlElement(name = "order-element")
public List<OrderElementWithAdvanceMeasurementsDTO> orderElements = new ArrayList<OrderElementWithAdvanceMeasurementsDTO>();
public OrderElementWithAdvanceMeasurementsListDTO() {
}
public OrderElementWithAdvanceMeasurementsListDTO(
public OrderElementWithAdvanceMeasurementsListDTO(String externalCompanyNif,
List<OrderElementWithAdvanceMeasurementsDTO> orderElements) {
this.externalCompanyNif = externalCompanyNif;
this.orderElements = orderElements;
}

View file

@ -30,6 +30,7 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import org.apache.commons.lang.StringUtils;
import org.joda.time.LocalDate;
import org.navalplanner.business.advance.bootstrap.PredefinedAdvancedTypes;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
@ -38,6 +39,8 @@ import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentFo
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
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.OrderElement;
import org.navalplanner.ws.common.api.AdvanceMeasurementDTO;
@ -66,6 +69,9 @@ public class ReportAdvancesServiceREST implements IReportAdvancesService {
@Autowired
private IOrderElementDAO orderElementDAO;
@Autowired
private IExternalCompanyDAO externalCompanyDAO;
private InstanceConstraintViolationsListDTO getErrorMessage(String code,
String message) {
// FIXME review errors returned
@ -84,6 +90,27 @@ public class ReportAdvancesServiceREST implements IReportAdvancesService {
InstanceConstraintViolationsDTO instanceConstraintViolationsDTO = null;
if (StringUtils
.isEmpty(orderElementWithAdvanceMeasurementsListDTO.externalCompanyNif)) {
return getErrorMessage("", "external company nif not specified");
}
ExternalCompany externalCompany;
try {
externalCompany = externalCompanyDAO
.findUniqueByNif(orderElementWithAdvanceMeasurementsListDTO.externalCompanyNif);
} catch (InstanceNotFoundException e1) {
return getErrorMessage(
orderElementWithAdvanceMeasurementsListDTO.externalCompanyNif,
"external company not found");
}
if (!externalCompany.isSubcontractor()) {
return getErrorMessage(
orderElementWithAdvanceMeasurementsListDTO.externalCompanyNif,
"external company is not registered as subcontractor");
}
List<OrderElementWithAdvanceMeasurementsDTO> orderElements = orderElementWithAdvanceMeasurementsListDTO.orderElements;
for (OrderElementWithAdvanceMeasurementsDTO orderElementWithAdvanceMeasurementsDTO : orderElements) {
try {

View file

@ -38,6 +38,7 @@ import java.util.UUID;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.joda.time.LocalDate;
import org.junit.Before;
import org.junit.Test;
@ -46,6 +47,8 @@ import org.navalplanner.business.IDataBootstrap;
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.common.daos.IConfigurationDAO;
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.entities.Order;
import org.navalplanner.business.orders.entities.OrderElement;
@ -92,6 +95,26 @@ public class ReportAdvancesServiceTest {
@Autowired
private IConfigurationDAO configurationDAO;
@Autowired
private IExternalCompanyDAO externalCompanyDAO;
@Autowired
private SessionFactory sessionFactory;
private ExternalCompany getSubcontractorExternalCompanySaved(String name,
String nif) {
ExternalCompany externalCompany = ExternalCompany.create(name, nif);
externalCompany.setSubcontractor(true);
externalCompanyDAO.save(externalCompany);
externalCompanyDAO.flush();
sessionFactory.getCurrentSession().evict(externalCompany);
externalCompany.dontPoseAsTransientObjectAnymore();
return externalCompany;
}
@Test
public void validAdvancesReport() {
Order order = givenValidOrderAlreadyStored();
@ -135,7 +158,11 @@ public class ReportAdvancesServiceTest {
advanceMeasurementDTOs.add(new AdvanceMeasurementDTO(date, value));
orderElementWithAdvanceMeasurementsDTO.advanceMeasurements = advanceMeasurementDTOs;
return new OrderElementWithAdvanceMeasurementsListDTO(Arrays
ExternalCompany externalCompany = getSubcontractorExternalCompanySaved(
"Company", "company-nif");
return new OrderElementWithAdvanceMeasurementsListDTO(externalCompany
.getNif(), Arrays
.asList(orderElementWithAdvanceMeasurementsDTO));
}

View file

@ -40,7 +40,6 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.navalplanner.business.IDataBootstrap;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.externalcompanies.daos.IExternalCompanyDAO;
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
import org.navalplanner.business.orders.daos.IOrderDAO;
@ -94,9 +93,6 @@ public class SubcontractServiceTest {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private IConfigurationDAO configurationDAO;
private OrderLineDTO givenBasicOrderLineDTO(String orderLineCode) {
OrderLineDTO orderLineDTO = new OrderLineDTO();
orderLineDTO.name = "Test";