ItEr46S16CUCalculoAvancesConFormularioCalidadeItEr45S22: Reporting advances from quality forms.
This commit is contained in:
parent
208b6b0c71
commit
f85fc260af
18 changed files with 335 additions and 39 deletions
|
|
@ -29,19 +29,24 @@ import org.navalplanner.business.common.Registry;
|
|||
|
||||
public enum PredefinedAdvancedTypes {
|
||||
|
||||
CHILDREN(_("children"), new BigDecimal(100), new BigDecimal(0.01), true), PERCENTAGE(
|
||||
_("percentage"), new BigDecimal(100), new BigDecimal(0.01), true), UNITS(
|
||||
_("units"), new BigDecimal(Integer.MAX_VALUE), new BigDecimal(1),
|
||||
false), SUBCONTRACTOR(_("subcontractor"), new BigDecimal(100),
|
||||
new BigDecimal(0.01), true);
|
||||
CHILDREN(_("children"), new BigDecimal(100), new BigDecimal(0.01), true,
|
||||
false),
|
||||
PERCENTAGE(_("percentage"), new BigDecimal(100),
|
||||
new BigDecimal(0.01), true, false),
|
||||
UNITS(_("units"),
|
||||
new BigDecimal(Integer.MAX_VALUE), new BigDecimal(1), false, false),
|
||||
SUBCONTRACTOR(
|
||||
_("subcontractor"), new BigDecimal(100), new BigDecimal(0.01),
|
||||
true, false);
|
||||
|
||||
private PredefinedAdvancedTypes(String name, BigDecimal defaultMaxValue,
|
||||
BigDecimal precision, boolean percentage) {
|
||||
BigDecimal precision, boolean percentage, boolean qualityForm) {
|
||||
this.name = name;
|
||||
this.defaultMaxValue = defaultMaxValue.setScale(4,
|
||||
BigDecimal.ROUND_HALF_UP);
|
||||
this.unitPrecision = precision.setScale(4, BigDecimal.ROUND_HALF_UP);
|
||||
this.percentage = percentage;
|
||||
this.qualityForm = qualityForm;
|
||||
}
|
||||
|
||||
private final String name;
|
||||
|
|
@ -52,9 +57,11 @@ public enum PredefinedAdvancedTypes {
|
|||
|
||||
private final boolean percentage;
|
||||
|
||||
private final boolean qualityForm;
|
||||
|
||||
public AdvanceType createType() {
|
||||
return AdvanceType.create(name, defaultMaxValue, false, unitPrecision,
|
||||
true, percentage);
|
||||
true, percentage, qualityForm);
|
||||
}
|
||||
|
||||
public String getTypeName() {
|
||||
|
|
|
|||
|
|
@ -20,8 +20,12 @@
|
|||
|
||||
package org.navalplanner.business.advance.entities;
|
||||
|
||||
import static org.navalplanner.business.i18n.I18nHelper._;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.apache.commons.lang.BooleanUtils;
|
||||
import org.hibernate.validator.AssertTrue;
|
||||
import org.hibernate.validator.NotEmpty;
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
|
|
@ -42,10 +46,16 @@ public class AdvanceType extends BaseEntity {
|
|||
public static AdvanceType create(String unitName,
|
||||
BigDecimal defaultMaxValue, boolean updatable,
|
||||
BigDecimal unitPrecision, boolean active, boolean percentage) {
|
||||
AdvanceType advanceType = new AdvanceType(unitName, defaultMaxValue, updatable,
|
||||
unitPrecision, active, percentage);
|
||||
advanceType.setNewObject(true);
|
||||
return advanceType;
|
||||
return create(unitName, defaultMaxValue, updatable, unitPrecision,
|
||||
active, percentage, false);
|
||||
}
|
||||
|
||||
public static AdvanceType create(String unitName,
|
||||
BigDecimal defaultMaxValue, boolean updatable,
|
||||
BigDecimal unitPrecision, boolean active, boolean percentage,
|
||||
boolean qualityForm) {
|
||||
return create(new AdvanceType(unitName, defaultMaxValue, updatable,
|
||||
unitPrecision, active, percentage, qualityForm));
|
||||
}
|
||||
|
||||
@NotEmpty
|
||||
|
|
@ -66,6 +76,8 @@ public class AdvanceType extends BaseEntity {
|
|||
@NotNull
|
||||
private boolean percentage = false;
|
||||
|
||||
private Boolean qualityForm = false;
|
||||
|
||||
/**
|
||||
* Constructor for hibernate. Do not use!
|
||||
*/
|
||||
|
|
@ -75,7 +87,7 @@ public class AdvanceType extends BaseEntity {
|
|||
|
||||
private AdvanceType(String unitName, BigDecimal defaultMaxValue,
|
||||
boolean updatable, BigDecimal unitPrecision, boolean active,
|
||||
boolean percentage) {
|
||||
boolean percentage, boolean qualityForm) {
|
||||
this.unitName = unitName;
|
||||
this.percentage = percentage;
|
||||
setDefaultMaxValue(defaultMaxValue);
|
||||
|
|
@ -84,6 +96,7 @@ public class AdvanceType extends BaseEntity {
|
|||
this.unitPrecision = unitPrecision;
|
||||
this.unitPrecision.setScale(4, BigDecimal.ROUND_HALF_UP);
|
||||
this.active = active;
|
||||
this.qualityForm = qualityForm;
|
||||
}
|
||||
|
||||
public void setUnitName(String unitName) {
|
||||
|
|
@ -140,9 +153,12 @@ public class AdvanceType extends BaseEntity {
|
|||
|
||||
public String getType() {
|
||||
if (isUpdatable()) {
|
||||
return "De Usuario";
|
||||
return _("User");
|
||||
}
|
||||
return "Predefinido";
|
||||
if (isQualityForm()) {
|
||||
return _("Quality form");
|
||||
}
|
||||
return _("Predefined");
|
||||
}
|
||||
|
||||
public void doPropagateAdvaceToParent(OrderElement orderElement) {
|
||||
|
|
@ -185,4 +201,23 @@ public class AdvanceType extends BaseEntity {
|
|||
return percentage;
|
||||
}
|
||||
|
||||
@NotNull(message = "quality form not specified")
|
||||
public Boolean isQualityForm() {
|
||||
return BooleanUtils.toBoolean(qualityForm);
|
||||
}
|
||||
|
||||
public void setQualityForm(Boolean qualityForm) {
|
||||
this.qualityForm = BooleanUtils.toBoolean(qualityForm);
|
||||
}
|
||||
|
||||
@AssertTrue(message = "advance type marked as quality form but is updatable")
|
||||
public boolean checkConstraintIfIsQualityFormIsNotUpdatable() {
|
||||
if (isQualityForm()) {
|
||||
if (isUpdatable()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -348,6 +348,16 @@ public abstract class OrderElement extends BaseEntity implements
|
|||
|
||||
public abstract DirectAdvanceAssignment getAdvanceAssignmentByType(AdvanceType type);
|
||||
|
||||
public DirectAdvanceAssignment getDirectAdvanceAssignmentByType(
|
||||
AdvanceType advanceType) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : getDirectAdvanceAssignments()) {
|
||||
if (directAdvanceAssignment.getAdvanceType().equals(advanceType)) {
|
||||
return directAdvanceAssignment;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Set<DirectAdvanceAssignment> getDirectAdvanceAssignments() {
|
||||
return Collections.unmodifiableSet(directAdvanceAssignments);
|
||||
}
|
||||
|
|
@ -1035,4 +1045,5 @@ public abstract class OrderElement extends BaseEntity implements
|
|||
.multiply(new BigDecimal(100)));
|
||||
return (measuredProgress.compareTo(new BigDecimal(100)) == 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -505,12 +505,7 @@ public class OrderLine extends OrderElement {
|
|||
|
||||
@Override
|
||||
public DirectAdvanceAssignment getAdvanceAssignmentByType(AdvanceType type) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : getDirectAdvanceAssignments()) {
|
||||
if (directAdvanceAssignment.getAdvanceType().equals(type)) {
|
||||
return directAdvanceAssignment;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return getDirectAdvanceAssignmentByType(type);
|
||||
}
|
||||
|
||||
public void incrementLastHoursGroupSequenceCode() {
|
||||
|
|
|
|||
|
|
@ -755,10 +755,9 @@ public class OrderLineGroup extends OrderElement implements
|
|||
}
|
||||
|
||||
public DirectAdvanceAssignment getAdvanceAssignmentByType(AdvanceType type) {
|
||||
for (DirectAdvanceAssignment each : getDirectAdvanceAssignments()) {
|
||||
if (type != null && each.getAdvanceType().getId().equals(type.getId())) {
|
||||
return each;
|
||||
}
|
||||
DirectAdvanceAssignment result = getDirectAdvanceAssignmentByType(type);
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
|
||||
for (IndirectAdvanceAssignment each : getIndirectAdvanceAssignments()) {
|
||||
|
|
|
|||
|
|
@ -20,16 +20,21 @@
|
|||
|
||||
package org.navalplanner.business.qualityforms.daos;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.NonUniqueResultException;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.navalplanner.business.advance.daos.IAdvanceTypeDAO;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.common.daos.GenericDAOHibernate;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityFormType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
|
@ -46,6 +51,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
public class QualityFormDAO extends GenericDAOHibernate<QualityForm, Long>
|
||||
implements IQualityFormDAO {
|
||||
|
||||
@Autowired
|
||||
private IAdvanceTypeDAO advanceTypeDAO;
|
||||
|
||||
@Override
|
||||
public List<QualityForm> getAll() {
|
||||
return list(QualityForm.class);
|
||||
|
|
@ -120,4 +128,25 @@ public class QualityFormDAO extends GenericDAOHibernate<QualityForm, Long>
|
|||
return existsOtherWorkReportTypeByName(qualityForm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(QualityForm entity) throws ValidationException {
|
||||
if (entity.isReportAdvance()) {
|
||||
String name = QualityForm.ADVANCE_TYPE_PREFIX + entity.getName();
|
||||
|
||||
AdvanceType advanceType = entity.getAdvanceType();
|
||||
if (advanceType != null) {
|
||||
advanceTypeDAO.save(advanceType);
|
||||
advanceType.setUnitName(name);
|
||||
} else {
|
||||
advanceType = AdvanceType.create(name, new BigDecimal(100),
|
||||
false, new BigDecimal(0.01), true, true, true);
|
||||
advanceTypeDAO.save(advanceType);
|
||||
|
||||
entity.setAdvanceType(advanceType);
|
||||
}
|
||||
}
|
||||
|
||||
super.save(entity);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,12 +28,14 @@ import java.util.ArrayList;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.BooleanUtils;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.NonUniqueResultException;
|
||||
import org.hibernate.validator.AssertTrue;
|
||||
import org.hibernate.validator.NotEmpty;
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.hibernate.validator.Valid;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.common.BaseEntity;
|
||||
import org.navalplanner.business.common.Registry;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
|
|
@ -41,6 +43,8 @@ import org.navalplanner.business.qualityforms.daos.IQualityFormDAO;
|
|||
|
||||
public class QualityForm extends BaseEntity {
|
||||
|
||||
public static final String ADVANCE_TYPE_PREFIX = "QF: ";
|
||||
|
||||
public static QualityForm create() {
|
||||
QualityForm qualityForm = new QualityForm();
|
||||
qualityForm.setNewObject(true);
|
||||
|
|
@ -70,6 +74,10 @@ public class QualityForm extends BaseEntity {
|
|||
|
||||
private List<QualityFormItem> qualityFormItems = new ArrayList<QualityFormItem>();
|
||||
|
||||
private Boolean reportAdvance = false;
|
||||
|
||||
private AdvanceType advanceType;
|
||||
|
||||
@NotEmpty(message = "quality form name not specified")
|
||||
public String getName() {
|
||||
return name;
|
||||
|
|
@ -375,4 +383,30 @@ public class QualityForm extends BaseEntity {
|
|||
return (position >= 0 && position < qualityFormItems.size());
|
||||
}
|
||||
|
||||
@NotNull(message = "report advance not specified")
|
||||
public Boolean isReportAdvance() {
|
||||
return BooleanUtils.toBoolean(reportAdvance);
|
||||
}
|
||||
|
||||
public void setReportAdvance(Boolean reportAdvance) {
|
||||
this.reportAdvance = BooleanUtils.toBoolean(reportAdvance);
|
||||
}
|
||||
|
||||
public AdvanceType getAdvanceType() {
|
||||
return advanceType;
|
||||
}
|
||||
|
||||
public void setAdvanceType(AdvanceType advanceType) {
|
||||
this.advanceType = advanceType;
|
||||
}
|
||||
|
||||
@AssertTrue(message = "advance type should not be null if report advance")
|
||||
public boolean checkConstraintAdvanceTypeIsNotNullIfReportAdvance() {
|
||||
if (advanceType == null) {
|
||||
return !isReportAdvance();
|
||||
} else {
|
||||
return isReportAdvance();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import java.util.Collections;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.BooleanUtils;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.validator.AssertTrue;
|
||||
import org.hibernate.validator.NotNull;
|
||||
|
|
@ -16,10 +17,7 @@ public class TaskQualityForm extends BaseEntity {
|
|||
|
||||
public static TaskQualityForm create(OrderElement orderElement,
|
||||
QualityForm qualityForm) {
|
||||
TaskQualityForm taskQualityForm = new TaskQualityForm(orderElement,
|
||||
qualityForm);
|
||||
taskQualityForm.setNewObject(true);
|
||||
return taskQualityForm;
|
||||
return create(new TaskQualityForm(orderElement, qualityForm));
|
||||
}
|
||||
|
||||
protected TaskQualityForm() {
|
||||
|
|
@ -38,6 +36,8 @@ public class TaskQualityForm extends BaseEntity {
|
|||
|
||||
private List<TaskQualityFormItem> taskQualityFormItems = new ArrayList<TaskQualityFormItem>();
|
||||
|
||||
private Boolean reportAdvance = false;
|
||||
|
||||
@Valid
|
||||
public List<TaskQualityFormItem> getTaskQualityFormItems() {
|
||||
return Collections.unmodifiableList(taskQualityFormItems);
|
||||
|
|
@ -146,4 +146,14 @@ public class TaskQualityForm extends BaseEntity {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull(message = "report advance not specified")
|
||||
public Boolean isReportAdvance() {
|
||||
return BooleanUtils.toBoolean(reportAdvance);
|
||||
}
|
||||
|
||||
public void setReportAdvance(Boolean reportAdvance) {
|
||||
this.reportAdvance = BooleanUtils.toBoolean(reportAdvance);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
<property name="unitPrecision" access="field" scale="4"/>
|
||||
<property name="active" access="field"/>
|
||||
<property name="percentage" access="field"/>
|
||||
<property name="qualityForm" access="field"/>
|
||||
|
||||
</class>
|
||||
|
||||
<!-- AdvanceAssignment -->
|
||||
|
|
|
|||
|
|
@ -29,6 +29,12 @@
|
|||
<property name="position" access="field"/>
|
||||
</composite-element>
|
||||
</list>
|
||||
|
||||
<property name="reportAdvance" access="field" />
|
||||
|
||||
<many-to-one name="advanceType" column="ADVANCE_TYPE_ID"
|
||||
class="org.navalplanner.business.advance.entities.AdvanceType" />
|
||||
|
||||
</class>
|
||||
|
||||
<!-- TaskQualityForm -->
|
||||
|
|
@ -55,6 +61,9 @@
|
|||
<property name="date" access="field"/>
|
||||
</composite-element>
|
||||
</list>
|
||||
|
||||
<property name="reportAdvance" access="field" />
|
||||
|
||||
</class>
|
||||
|
||||
</hibernate-mapping>
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import java.util.List;
|
|||
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
|
|
@ -266,8 +268,50 @@ public class AssignedTaskQualityFormsToOrderElementController extends
|
|||
appendNewLabel(row, taskQualityForm.getQualityForm().getName());
|
||||
appendNewLabel(row, taskQualityForm.getQualityForm()
|
||||
.getQualityFormType().toString());
|
||||
appendCheckboxReportAdvance(row, taskQualityForm);
|
||||
appendOperations(row);
|
||||
}
|
||||
|
||||
private void appendCheckboxReportAdvance(Row row,
|
||||
final TaskQualityForm taskQualityForm) {
|
||||
final Checkbox tmpCheckbox = new Checkbox();
|
||||
Checkbox checkbox = Util.bind(tmpCheckbox,
|
||||
new Util.Getter<Boolean>() {
|
||||
@Override
|
||||
public Boolean get() {
|
||||
return taskQualityForm.isReportAdvance();
|
||||
}
|
||||
}, new Util.Setter<Boolean>() {
|
||||
@Override
|
||||
public void set(Boolean value) {
|
||||
try {
|
||||
if (value) {
|
||||
assignedTaskQualityFormsToOrderElementModel
|
||||
.addAdvanceAssignmentIfNeeded(taskQualityForm);
|
||||
} else {
|
||||
assignedTaskQualityFormsToOrderElementModel
|
||||
.removeAdvanceAssignmentIfNeeded(taskQualityForm);
|
||||
}
|
||||
|
||||
taskQualityForm.setReportAdvance(value);
|
||||
} catch (DuplicateValueTrueReportGlobalAdvanceException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (DuplicateAdvanceAssignmentForOrderElementException e) {
|
||||
messages
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
_("Another order element in the same branch is already reporting advance for this quality form"));
|
||||
tmpCheckbox.setChecked(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!taskQualityForm.getQualityForm().isReportAdvance()) {
|
||||
checkbox.setDisabled(true);
|
||||
}
|
||||
|
||||
row.appendChild(checkbox);
|
||||
}
|
||||
}
|
||||
|
||||
private void appendDetails(Row row, TaskQualityForm taskQualityForm) {
|
||||
|
|
@ -477,6 +521,7 @@ public class AssignedTaskQualityFormsToOrderElementController extends
|
|||
// Operations to confirm and validate
|
||||
|
||||
public boolean confirm() {
|
||||
assignedTaskQualityFormsToOrderElementModel.updateAdvancesIfNeeded();
|
||||
validateConstraints();
|
||||
return validate();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,11 +22,20 @@ package org.navalplanner.web.orders;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.advance.daos.IAdvanceTypeDAO;
|
||||
import org.navalplanner.business.advance.entities.AdvanceAssignment;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
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.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
|
|
@ -58,6 +67,9 @@ public class AssignedTaskQualityFormsToOrderElementModel implements
|
|||
|
||||
private IOrderModel orderModel;
|
||||
|
||||
@Autowired
|
||||
private IAdvanceTypeDAO advanceTypeDAO;
|
||||
|
||||
@Override
|
||||
public OrderElement getOrderElement() {
|
||||
return orderElement;
|
||||
|
|
@ -257,4 +269,71 @@ public class AssignedTaskQualityFormsToOrderElementModel implements
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void addAdvanceAssignmentIfNeeded(TaskQualityForm taskQualityForm)
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
AdvanceType advanceType = taskQualityForm.getQualityForm()
|
||||
.getAdvanceType();
|
||||
advanceTypeDAO.reattach(advanceType);
|
||||
AdvanceAssignment advanceAssignment = taskQualityForm.getOrderElement()
|
||||
.getDirectAdvanceAssignmentByType(advanceType);
|
||||
|
||||
if (advanceAssignment == null) {
|
||||
DirectAdvanceAssignment newAdvanceAssignment = DirectAdvanceAssignment
|
||||
.create(false, new BigDecimal(100));
|
||||
newAdvanceAssignment.setAdvanceType(advanceType);
|
||||
taskQualityForm.getOrderElement().addAdvanceAssignment(
|
||||
newAdvanceAssignment);
|
||||
addAdvanceMeasurements(taskQualityForm, newAdvanceAssignment);
|
||||
}
|
||||
}
|
||||
|
||||
private void addAdvanceMeasurements(TaskQualityForm taskQualityForm,
|
||||
DirectAdvanceAssignment newAdvanceAssignment) {
|
||||
for (TaskQualityFormItem taskQualityFormItem : taskQualityForm
|
||||
.getTaskQualityFormItems()) {
|
||||
if (taskQualityFormItem.getPassed()
|
||||
&& (taskQualityFormItem.getDate() != null)) {
|
||||
LocalDate date = LocalDate
|
||||
.fromDateFields(taskQualityFormItem.getDate());
|
||||
BigDecimal value = taskQualityFormItem.getPercentage();
|
||||
newAdvanceAssignment
|
||||
.addAdvanceMeasurements(AdvanceMeasurement
|
||||
.create(date, value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void removeAdvanceAssignmentIfNeeded(TaskQualityForm taskQualityForm) {
|
||||
AdvanceType advanceType = taskQualityForm.getQualityForm()
|
||||
.getAdvanceType();
|
||||
advanceTypeDAO.reattach(advanceType);
|
||||
AdvanceAssignment advanceAssignment = taskQualityForm.getOrderElement()
|
||||
.getDirectAdvanceAssignmentByType(advanceType);
|
||||
|
||||
if (advanceAssignment != null) {
|
||||
taskQualityForm.getOrderElement().removeAdvanceAssignment(
|
||||
advanceAssignment);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAdvancesIfNeeded() {
|
||||
if (orderElement != null) {
|
||||
for (TaskQualityForm taskQualityForm : getTaskQualityForms()) {
|
||||
if (taskQualityForm.isReportAdvance()) {
|
||||
DirectAdvanceAssignment advanceAssignment = orderElement
|
||||
.getAdvanceAssignmentByType(taskQualityForm
|
||||
.getQualityForm().getAdvanceType());
|
||||
advanceAssignment.getAdvanceMeasurements().clear();
|
||||
addAdvanceMeasurements(taskQualityForm, advanceAssignment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ package org.navalplanner.web.orders;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityForm;
|
||||
import org.navalplanner.business.qualityforms.entities.QualityFormItem;
|
||||
|
|
@ -123,4 +125,13 @@ public interface IAssignedTaskQualityFormsToOrderElementModel {
|
|||
* @param
|
||||
*/
|
||||
void validate();
|
||||
|
||||
void addAdvanceAssignmentIfNeeded(TaskQualityForm taskQualityForm)
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException;
|
||||
|
||||
void removeAdvanceAssignmentIfNeeded(TaskQualityForm taskQualityForm);
|
||||
|
||||
void updateAdvancesIfNeeded();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,4 +96,6 @@ public interface IManageOrderElementAdvancesModel {
|
|||
|
||||
public void refreshChangesFromOrderElement();
|
||||
|
||||
public boolean isQualityForm(AdvanceAssignment advance);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -237,14 +237,21 @@ public class ManageOrderElementAdvancesController extends
|
|||
listItem.setDraggable("true");
|
||||
listItem.setDroppable("true");
|
||||
|
||||
boolean isQualityForm = false;
|
||||
if (advance.getAdvanceType() != null) {
|
||||
isQualityForm = manageOrderElementAdvancesModel
|
||||
.isQualityForm(advance);
|
||||
}
|
||||
|
||||
if ((advance instanceof DirectAdvanceAssignment)
|
||||
&& ((DirectAdvanceAssignment) advance)
|
||||
.getAdvanceMeasurements().isEmpty()) {
|
||||
.getAdvanceMeasurements().isEmpty()
|
||||
&& !isQualityForm) {
|
||||
appendComboboxAdvancType(listItem);
|
||||
} else {
|
||||
appendLabelAdvanceType(listItem);
|
||||
}
|
||||
appendDecimalBoxMaxValue(listItem);
|
||||
appendDecimalBoxMaxValue(listItem, isQualityForm);
|
||||
appendDecimalBoxValue(listItem);
|
||||
appendLabelPercentage(listItem);
|
||||
appendDateBoxDate(listItem);
|
||||
|
|
@ -263,7 +270,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
.getPossibleAdvanceTypes(advance);
|
||||
for(AdvanceType advanceType : listAdvanceType){
|
||||
if (!advanceType.getUnitName().equals(
|
||||
PredefinedAdvancedTypes.CHILDREN.getTypeName())) {
|
||||
PredefinedAdvancedTypes.CHILDREN.getTypeName())
|
||||
&& !advanceType.isQualityForm()) {
|
||||
Comboitem comboItem = new Comboitem();
|
||||
comboItem.setValue(advanceType);
|
||||
comboItem.setLabel(advanceType.getUnitName());
|
||||
|
|
@ -324,15 +332,19 @@ public class ManageOrderElementAdvancesController extends
|
|||
listItem.appendChild(listCell);
|
||||
}
|
||||
|
||||
private void appendDecimalBoxMaxValue(final Listitem listItem){
|
||||
private void appendDecimalBoxMaxValue(final Listitem listItem,
|
||||
boolean isQualityForm) {
|
||||
AdvanceAssignment advanceAssignment = (AdvanceAssignment) listItem
|
||||
.getValue();
|
||||
Decimalbox maxValue = new Decimalbox();
|
||||
maxValue.setScale(2);
|
||||
|
||||
final DirectAdvanceAssignment directAdvanceAssignment;
|
||||
if (advanceAssignment instanceof IndirectAdvanceAssignment) {
|
||||
if ((advanceAssignment instanceof IndirectAdvanceAssignment)
|
||||
|| isQualityForm) {
|
||||
maxValue.setDisabled(true);
|
||||
}
|
||||
if (advanceAssignment instanceof IndirectAdvanceAssignment) {
|
||||
directAdvanceAssignment = manageOrderElementAdvancesModel
|
||||
.calculateFakeDirectAdvanceAssignment((IndirectAdvanceAssignment) advanceAssignment);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -136,12 +136,7 @@ public class ManageOrderElementAdvancesModel implements
|
|||
|
||||
@Override
|
||||
public void refreshChangesFromOrderElement() {
|
||||
for (IndirectAdvanceAssignment each : orderElement
|
||||
.getIndirectAdvanceAssignments()) {
|
||||
if (!listAdvanceAssignments.contains(each)) {
|
||||
listAdvanceAssignments.add(each);
|
||||
}
|
||||
}
|
||||
fillVariables();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -288,6 +283,14 @@ public class ManageOrderElementAdvancesModel implements
|
|||
if (this.advanceAssignment == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
AdvanceType advanceType = this.advanceAssignment.getAdvanceType();
|
||||
if (advanceType != null) {
|
||||
if (advanceType.isQualityForm()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return this.isIndirectAdvanceAssignment;
|
||||
}
|
||||
|
||||
|
|
@ -551,4 +554,12 @@ public class ManageOrderElementAdvancesModel implements
|
|||
return xymodel;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public boolean isQualityForm(AdvanceAssignment advance) {
|
||||
AdvanceType advanceType = advance.getAdvanceType();
|
||||
advanceTypeDAO.reattach(advanceType);
|
||||
return advanceType.isQualityForm();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
<column width="25px"/>
|
||||
<column label="${i18n:_('Task quality form name')}" sort="auto(qualityForm.name)" sortDirection="descending"/>
|
||||
<column label="${i18n:_('Type')}" />
|
||||
<column label="${i18n:_('Report advance')}" />
|
||||
<column label="${i18n:_('Operations')}" />
|
||||
</columns>
|
||||
</grid>
|
||||
|
|
|
|||
|
|
@ -55,6 +55,10 @@
|
|||
onSelect="controller.changeQualityFormType();"
|
||||
selectedItem="@{controller.qualityForm.qualityFormType}"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Report advance')}" />
|
||||
<checkbox checked="@{controller.qualityForm.reportAdvance}" />
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</vbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue