ItEr26S06RFControlAvancesIncompatiblesEnUnidadesTraballoItEr25S06: Removed DTOs not needed with the new approach of calculate advancements on OrderGorupLines.
This commit is contained in:
parent
eec3c01b8e
commit
6a49e776ab
12 changed files with 451 additions and 1074 deletions
|
|
@ -8,9 +8,9 @@ import org.navalplanner.business.common.BaseEntity;
|
|||
|
||||
public class AdvanceMeasurement extends BaseEntity {
|
||||
|
||||
public static AdvanceMeasurement create(Date date, BigDecimal value, int numIndirectSons) {
|
||||
public static AdvanceMeasurement create(Date date, BigDecimal value) {
|
||||
AdvanceMeasurement advanceMeasurement = new AdvanceMeasurement(date,
|
||||
value, numIndirectSons);
|
||||
value);
|
||||
advanceMeasurement.setNewObject(true);
|
||||
return advanceMeasurement;
|
||||
}
|
||||
|
|
@ -30,17 +30,13 @@ public class AdvanceMeasurement extends BaseEntity {
|
|||
@NotNull
|
||||
private AdvanceAssigment advanceAssigment;
|
||||
|
||||
private int numIndirectSons;
|
||||
|
||||
public AdvanceMeasurement() {
|
||||
this.numIndirectSons = 0;
|
||||
}
|
||||
|
||||
private AdvanceMeasurement(Date date, BigDecimal value , int numIndirectSons) {
|
||||
private AdvanceMeasurement(Date date, BigDecimal value) {
|
||||
this.date = date;
|
||||
this.value = value;
|
||||
this.value.setScale(2,BigDecimal.ROUND_HALF_UP);
|
||||
this.numIndirectSons = numIndirectSons;
|
||||
}
|
||||
|
||||
public void setDate(Date date) {
|
||||
|
|
@ -68,19 +64,4 @@ public class AdvanceMeasurement extends BaseEntity {
|
|||
return this.advanceAssigment;
|
||||
}
|
||||
|
||||
public int getNumIndirectSons() {
|
||||
return numIndirectSons;
|
||||
}
|
||||
|
||||
public void setNumIndirectSons(int numIndirectSons) {
|
||||
this.numIndirectSons = numIndirectSons;
|
||||
}
|
||||
|
||||
public void incrementNumIndirectSons() {
|
||||
this.numIndirectSons = this.numIndirectSons + 1;
|
||||
}
|
||||
|
||||
public void decrementNumIndirectSons() {
|
||||
this.numIndirectSons = this.numIndirectSons - 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,12 @@ public class AdvanceMeasurementComparator implements Comparator<AdvanceMeasureme
|
|||
|
||||
@Override
|
||||
public int compare(AdvanceMeasurement arg0, AdvanceMeasurement arg1) {
|
||||
if (arg0.getDate() == null) {
|
||||
return -1;
|
||||
}
|
||||
if (arg1.getDate() == null) {
|
||||
return 1;
|
||||
}
|
||||
return arg1.getDate().compareTo(arg0.getDate());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@
|
|||
<version name="version" access="property" type="long" />
|
||||
<property name="date"/>
|
||||
<property name="value" scale="2"/>
|
||||
<property name="numIndirectSons"/>
|
||||
<many-to-one name="advanceAssigment" class="AdvanceAssigment" column="ADVANCE_ASSIGMENT_ID" />
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONF
|
|||
import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.junit.Test;
|
||||
|
|
@ -94,7 +94,7 @@ public class AddAdvanceAssigmentsToOrderElementTest {
|
|||
|
||||
private AdvanceMeasurement createValidAdvanceMeasurement() {
|
||||
AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create(
|
||||
new Date(), new BigDecimal(0),0);
|
||||
new Date(), new BigDecimal(0));
|
||||
return advanceMeasurement;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,153 +0,0 @@
|
|||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package org.navalplanner.web.orders;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.TreeSet;
|
||||
import java.util.SortedSet;
|
||||
import org.navalplanner.business.advance.entities.AdvanceAssigment;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurementComparator;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.util.ListSorter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
|
||||
*/
|
||||
public class AdvanceAssigmentDTO {
|
||||
|
||||
private AdvanceType advanceType;
|
||||
|
||||
private String unitName;
|
||||
|
||||
private SortedSet<AdvanceMeasurement> advanceMeasurements =
|
||||
new TreeSet<AdvanceMeasurement>(new AdvanceMeasurementComparator());
|
||||
|
||||
private ListSorter<AdvanceMeasurementDTO> advanceMeasurementDTOs =
|
||||
ListSorter.create(new ArrayList<AdvanceMeasurementDTO>(), new AdvanceMeasurementDTOComparator());
|
||||
|
||||
private AdvanceAssigment advanceAssigment;
|
||||
|
||||
private BigDecimal maxValue;
|
||||
|
||||
private boolean reportGlobalAdvance;
|
||||
|
||||
private AdvanceAssigment.Type type;
|
||||
|
||||
private boolean isNewObject = true;
|
||||
|
||||
private boolean isNewDTO = true;
|
||||
|
||||
private boolean selectedRemove = false;
|
||||
|
||||
public AdvanceAssigmentDTO() {
|
||||
this.reportGlobalAdvance = false;
|
||||
this.isNewDTO = true;
|
||||
this.isNewObject = false;
|
||||
this.type = AdvanceAssigment.Type.DIRECT;
|
||||
}
|
||||
|
||||
public AdvanceAssigmentDTO(AdvanceType advanceType,
|
||||
AdvanceAssigment advanceAssigment,
|
||||
SortedSet<AdvanceMeasurement> advanceMeasurements) {
|
||||
this.advanceType = advanceType;
|
||||
this.unitName = advanceType.getUnitName();
|
||||
this.advanceMeasurements = advanceMeasurements;
|
||||
this.advanceAssigment = advanceAssigment;
|
||||
|
||||
this.maxValue = advanceAssigment.getMaxValue();
|
||||
this.reportGlobalAdvance = advanceAssigment.getReportGlobalAdvance();
|
||||
this.type = advanceAssigment.getType();
|
||||
|
||||
this.isNewDTO = false;
|
||||
if(advanceAssigment.getVersion()==null){
|
||||
this.isNewObject = true;
|
||||
}else{
|
||||
this.isNewObject = false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getIsNewObject() {
|
||||
return this.isNewObject;
|
||||
}
|
||||
|
||||
public boolean getIsNewDTO() {
|
||||
return this.isNewDTO;
|
||||
}
|
||||
|
||||
public void setAdvanceType(AdvanceType advanceType){
|
||||
this.advanceType = advanceType;
|
||||
}
|
||||
|
||||
public AdvanceType getAdvanceType() {
|
||||
return this.advanceType;
|
||||
}
|
||||
|
||||
public AdvanceAssigment getAdvanceAssigment() {
|
||||
return this.advanceAssigment;
|
||||
}
|
||||
|
||||
public void setAdvanceAssigment(AdvanceAssigment advanceAssigment) {
|
||||
this.advanceAssigment = advanceAssigment;
|
||||
}
|
||||
|
||||
public SortedSet<AdvanceMeasurement> getAdvanceMeasurements() {
|
||||
return this.advanceMeasurements;
|
||||
}
|
||||
|
||||
public void setAdvanceMeasurements(SortedSet<AdvanceMeasurement> advanceMeasurements) {
|
||||
this.advanceMeasurements = advanceMeasurements;
|
||||
}
|
||||
|
||||
public ListSorter<AdvanceMeasurementDTO> getAdvanceMeasurementDTOs() {
|
||||
return this.advanceMeasurementDTOs;
|
||||
}
|
||||
|
||||
public void setAdvanceMeasurementDTOs(ListSorter<AdvanceMeasurementDTO> advanceMeasurementDTOs) {
|
||||
this.advanceMeasurementDTOs = advanceMeasurementDTOs;
|
||||
}
|
||||
|
||||
public void setReportGlobalAdvance(boolean reportGlobalAdvance) {
|
||||
this.reportGlobalAdvance = reportGlobalAdvance;
|
||||
}
|
||||
|
||||
public boolean getReportGlobalAdvance() {
|
||||
return this.reportGlobalAdvance;
|
||||
}
|
||||
|
||||
public BigDecimal getMaxValue(){
|
||||
return this.maxValue;
|
||||
}
|
||||
|
||||
public void setMaxValue(BigDecimal maxValue) {
|
||||
this.maxValue = maxValue;
|
||||
}
|
||||
|
||||
public AdvanceAssigment.Type getType(){
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public void setType(AdvanceAssigment.Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public boolean isSelectedForRemove(){
|
||||
return this.selectedRemove;
|
||||
}
|
||||
|
||||
public void setSelectedForRemove(boolean selectedRemove){
|
||||
this.selectedRemove = selectedRemove;
|
||||
}
|
||||
|
||||
public void setUnitName(String unitName) {
|
||||
this.unitName = unitName;
|
||||
}
|
||||
|
||||
public String getUnitName() {
|
||||
return unitName;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
package org.navalplanner.web.orders;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
|
||||
public class AdvanceMeasurementDTO{
|
||||
|
||||
private AdvanceMeasurement advanceMeasurement;
|
||||
|
||||
private AdvanceAssigmentDTO advanceAssigmentDTO;
|
||||
|
||||
private Date date;
|
||||
|
||||
private BigDecimal value;
|
||||
|
||||
private boolean isNewObject = true;
|
||||
|
||||
private boolean isNewDTO = true;
|
||||
|
||||
private boolean selectedRemove = false;
|
||||
|
||||
private BigDecimal percentage;
|
||||
|
||||
public AdvanceMeasurementDTO() {
|
||||
this.date = new Date();
|
||||
this.percentage = new BigDecimal(0);
|
||||
this.isNewDTO = true;
|
||||
this.isNewObject = false;
|
||||
}
|
||||
|
||||
public AdvanceMeasurementDTO(AdvanceMeasurement advanceMeasurement){
|
||||
|
||||
this.advanceMeasurement = advanceMeasurement;
|
||||
this.date = advanceMeasurement.getDate();
|
||||
this.value = advanceMeasurement.getValue();
|
||||
|
||||
this.percentage = new BigDecimal(0);
|
||||
this.isNewDTO = false;
|
||||
if(advanceMeasurement.getVersion()==null){
|
||||
this.isNewObject = true;
|
||||
}else{
|
||||
this.isNewObject = false;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getIsNewObject(){
|
||||
return this.isNewObject;
|
||||
}
|
||||
|
||||
public boolean getIsNewDTO() {
|
||||
return this.isNewDTO;
|
||||
}
|
||||
|
||||
public AdvanceAssigmentDTO getAdvanceAssigmentDTO() {
|
||||
return this.advanceAssigmentDTO;
|
||||
}
|
||||
|
||||
public void setAdvanceAssigmentDTO(AdvanceAssigmentDTO advanceAssigmentDTO) {
|
||||
this.advanceAssigmentDTO = advanceAssigmentDTO;
|
||||
}
|
||||
|
||||
public AdvanceMeasurement getAdvanceMeasurement() {
|
||||
return this.advanceMeasurement;
|
||||
}
|
||||
|
||||
public void setAdvanceMeasurement(AdvanceMeasurement advanceMeasurement) {
|
||||
this.advanceMeasurement = advanceMeasurement;
|
||||
}
|
||||
|
||||
public void setPercentage(BigDecimal percentage) {
|
||||
this.percentage = percentage;
|
||||
}
|
||||
|
||||
public BigDecimal getPercentage() {
|
||||
if(advanceAssigmentDTO == null) return new BigDecimal(0);
|
||||
if(value == null) return new BigDecimal(0);
|
||||
if(advanceAssigmentDTO.getMaxValue() != null){
|
||||
BigDecimal maxValue = advanceAssigmentDTO.getMaxValue();
|
||||
BigDecimal _percentage = new BigDecimal(0);
|
||||
BigDecimal division = (value.divide(maxValue,4,RoundingMode.HALF_UP));
|
||||
division.setScale(2, RoundingMode.HALF_UP);
|
||||
_percentage = division.multiply(new BigDecimal(100));
|
||||
this.percentage = _percentage.setScale(2, RoundingMode.HALF_UP);
|
||||
return this.percentage;
|
||||
}
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
|
||||
public String getPercentage_() {
|
||||
getPercentage();
|
||||
return (this.percentage.toString() + " %");
|
||||
}
|
||||
|
||||
public void setDate(Date date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return this.date;
|
||||
}
|
||||
|
||||
public void setValue(BigDecimal value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public BigDecimal getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public boolean isSelectedForRemove(){
|
||||
return this.selectedRemove;
|
||||
}
|
||||
|
||||
public void setSelectedForRemove(boolean selectedRemove){
|
||||
this.selectedRemove = selectedRemove;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
package org.navalplanner.web.orders;
|
||||
import java.util.Comparator;
|
||||
/**
|
||||
*
|
||||
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
|
||||
*/
|
||||
public class AdvanceMeasurementDTOComparator implements Comparator<AdvanceMeasurementDTO> {
|
||||
|
||||
public AdvanceMeasurementDTOComparator(){
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(AdvanceMeasurementDTO arg0, AdvanceMeasurementDTO arg1) {
|
||||
if((arg1.getDate() == null) && (arg0.getDate() == null))
|
||||
return 0;
|
||||
if(arg1.getDate() == null) return 1;
|
||||
if(arg0.getDate() == null) return -1;
|
||||
return arg1.getDate().compareTo(arg0.getDate());
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,8 @@ import java.math.BigDecimal;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.advance.entities.AdvanceAssigment;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssigmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
|
|
@ -15,11 +17,11 @@ import org.navalplanner.business.orders.entities.OrderElement;
|
|||
*/
|
||||
public interface IManageOrderElementAdvancesModel {
|
||||
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssigmentDTO advanceAssigmentDTO);
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssigment advanceAssigment);
|
||||
|
||||
public List<AdvanceMeasurementDTO> getAdvanceMeasurementDTOs();
|
||||
public List<AdvanceMeasurement> getAdvanceMeasurements();
|
||||
|
||||
public List<AdvanceAssigmentDTO> getAdvanceAssigmentDTOs();
|
||||
public List<AdvanceAssigment> getAdvanceAssigments();
|
||||
|
||||
public void init(OrderElement orderElement);
|
||||
|
||||
|
|
@ -27,13 +29,13 @@ public interface IManageOrderElementAdvancesModel {
|
|||
|
||||
public void addNewLineAdvaceMeasurement();
|
||||
|
||||
public void removeLineAdvanceAssigment(AdvanceAssigmentDTO advanceDTO);
|
||||
public void removeLineAdvanceAssigment(AdvanceAssigment advance);
|
||||
|
||||
public void removeLineAdvanceMeasurement(AdvanceMeasurementDTO advanceDTO);
|
||||
public void removeLineAdvanceMeasurement(AdvanceMeasurement advance);
|
||||
|
||||
public List<AdvanceType> getActivesAdvanceTypes();
|
||||
|
||||
public boolean isReadOnlyAdvanceMeasurementDTOs();
|
||||
public boolean isReadOnlyAdvanceMeasurements();
|
||||
|
||||
public void cleanAdvance();
|
||||
|
||||
|
|
@ -41,17 +43,23 @@ public interface IManageOrderElementAdvancesModel {
|
|||
|
||||
public boolean greatThanMaxValue(BigDecimal value);
|
||||
|
||||
public boolean isDistinctValidDate(Date value,AdvanceMeasurementDTO newAdvanceMeasurementDTO);
|
||||
public boolean isDistinctValidDate(Date value,
|
||||
AdvanceMeasurement newAdvanceMeasurement);
|
||||
|
||||
public BigDecimal getUnitPrecision();
|
||||
|
||||
public AdvanceMeasurementDTO getFirstAdvanceMeasurement(AdvanceAssigmentDTO advanceAssigmentDTO);
|
||||
public AdvanceMeasurement getFirstAdvanceMeasurement(
|
||||
AdvanceAssigment advanceAssigment);
|
||||
|
||||
public void modifyListAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO);
|
||||
public void sortListAdvanceMeasurement();
|
||||
|
||||
public String getInfoAdvanceAssigment();
|
||||
|
||||
public void accept()throws InstanceNotFoundException,
|
||||
DuplicateAdvanceAssigmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException;
|
||||
|
||||
public BigDecimal getPercentageAdvanceMeasurement(
|
||||
AdvanceMeasurement advanceMeasurement);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.advance.entities.AdvanceAssigment;
|
||||
import org.navalplanner.business.advance.entities.AdvanceMeasurement;
|
||||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssigmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
|
|
@ -53,6 +54,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
|
||||
private AdvanceTypeListRenderer advanceTypeListRenderer = new AdvanceTypeListRenderer();
|
||||
|
||||
private AdvanceMeasurementRenderer advanceMeasurementRenderer = new AdvanceMeasurementRenderer();
|
||||
|
||||
@Override
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
super.doAfterCompose(comp.getFellow("listOrderElementAdvances"));
|
||||
|
|
@ -61,12 +64,12 @@ public class ManageOrderElementAdvancesController extends
|
|||
messagesForUser = new MessagesForUser(window.getFellow("listOrderElementAdvances"));
|
||||
}
|
||||
|
||||
public List<AdvanceMeasurementDTO> getAdvanceMeasurementDTOs() {
|
||||
return manageOrderElementAdvancesModel.getAdvanceMeasurementDTOs();
|
||||
public List<AdvanceMeasurement> getAdvanceMeasurements() {
|
||||
return manageOrderElementAdvancesModel.getAdvanceMeasurements();
|
||||
}
|
||||
|
||||
public List<AdvanceAssigmentDTO> getAdvanceAssigmentDTOs() {
|
||||
return manageOrderElementAdvancesModel.getAdvanceAssigmentDTOs();
|
||||
public List<AdvanceAssigment> getAdvanceAssigments() {
|
||||
return manageOrderElementAdvancesModel.getAdvanceAssigments();
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
|
|
@ -107,8 +110,9 @@ public class ManageOrderElementAdvancesController extends
|
|||
Util.reloadBindings(window);
|
||||
}
|
||||
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssigmentDTO advanceAssigmentDTO){
|
||||
manageOrderElementAdvancesModel.prepareEditAdvanceMeasurements(advanceAssigmentDTO);
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssigment advanceAssigment) {
|
||||
manageOrderElementAdvancesModel
|
||||
.prepareEditAdvanceMeasurements(advanceAssigment);
|
||||
Listbox listAdvances = ((Listbox) window.getFellow("editAdvances"));
|
||||
this.indexSelectedItem = listAdvances.getIndexOfItem(listAdvances.getSelectedItem());
|
||||
Util.reloadBindings(window);
|
||||
|
|
@ -131,8 +135,10 @@ public class ManageOrderElementAdvancesController extends
|
|||
Listitem listItem = listAdvances.getItemAtIndex(indexSelectedItem);
|
||||
if(listItem != null){
|
||||
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO) listItem.getValue();
|
||||
manageOrderElementAdvancesModel.removeLineAdvanceAssigment(advanceAssigmentDTO);
|
||||
AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
manageOrderElementAdvancesModel
|
||||
.removeLineAdvanceAssigment(advanceAssigment);
|
||||
Util.reloadBindings(window);
|
||||
}
|
||||
}
|
||||
|
|
@ -141,9 +147,11 @@ public class ManageOrderElementAdvancesController extends
|
|||
Listbox listAdvancesMeasurement = (Listbox)window.getFellow("editAdvancesMeasurement");
|
||||
Listitem selectedItem = listAdvancesMeasurement.getSelectedItem();
|
||||
if(selectedItem != null){
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO = (AdvanceMeasurementDTO) selectedItem.getValue();
|
||||
if(advanceMeasurementDTO != null){
|
||||
manageOrderElementAdvancesModel.removeLineAdvanceMeasurement(advanceMeasurementDTO);
|
||||
AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) selectedItem
|
||||
.getValue();
|
||||
if (advanceMeasurement != null) {
|
||||
manageOrderElementAdvancesModel
|
||||
.removeLineAdvanceMeasurement(advanceMeasurement);
|
||||
Util.reloadBindings(window);
|
||||
}
|
||||
}
|
||||
|
|
@ -157,8 +165,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
return manageOrderElementAdvancesModel.getActivesAdvanceTypes();
|
||||
}
|
||||
|
||||
public boolean isReadOnlyAdvanceMeasurementDTOs(){
|
||||
return manageOrderElementAdvancesModel.isReadOnlyAdvanceMeasurementDTOs();
|
||||
public boolean isReadOnlyAdvanceMeasurements() {
|
||||
return manageOrderElementAdvancesModel.isReadOnlyAdvanceMeasurements();
|
||||
}
|
||||
|
||||
public AdvanceTypeListRenderer getAdvancesRenderer() {
|
||||
|
|
@ -175,13 +183,12 @@ public class ManageOrderElementAdvancesController extends
|
|||
public class AdvanceTypeListRenderer implements ListitemRenderer {
|
||||
@Override
|
||||
public void render(Listitem listItem, Object data) throws Exception {
|
||||
final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO) data;
|
||||
listItem.setValue(advanceDTO);
|
||||
final AdvanceAssigment advance = (AdvanceAssigment) data;
|
||||
listItem.setValue(advance);
|
||||
listItem.setDraggable("true");
|
||||
listItem.setDroppable("true");
|
||||
|
||||
if((advanceDTO.getType().equals(AdvanceAssigment.Type.DIRECT))
|
||||
&& ((advanceDTO.getIsNewObject())||(advanceDTO.getIsNewDTO()))){
|
||||
if (advance.getType().equals(AdvanceAssigment.Type.DIRECT)) {
|
||||
appendComboboxAdvancType(listItem);
|
||||
} else {
|
||||
appendLabelAdvanceType(listItem);
|
||||
|
|
@ -196,7 +203,7 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendComboboxAdvancType(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advance = (AdvanceAssigment) listItem.getValue();
|
||||
final Combobox comboAdvanceTypes = new Combobox();
|
||||
final List<AdvanceType> listAdvanceType = manageOrderElementAdvancesModel
|
||||
.getActivesAdvanceTypes();
|
||||
|
|
@ -206,8 +213,9 @@ public class ManageOrderElementAdvancesController extends
|
|||
comboItem.setLabel(advanceType.getUnitName());
|
||||
comboItem.setParent(comboAdvanceTypes);
|
||||
|
||||
if((advanceDTO.getAdvanceType()!=null)&&
|
||||
(advanceDTO.getAdvanceType().getId().equals(advanceType.getId())))
|
||||
if ((advance.getAdvanceType() != null)
|
||||
&& (advance.getAdvanceType().getId().equals(advanceType
|
||||
.getId())))
|
||||
comboAdvanceTypes.setSelectedItem(comboItem);
|
||||
}
|
||||
comboAdvanceTypes.addEventListener(Events.ON_SELECT,
|
||||
|
|
@ -232,9 +240,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
if(((comboItem!=null))&&(comboItem.getValue() != null)&&
|
||||
(comboItem.getValue() instanceof AdvanceType)){
|
||||
AdvanceType advanceType = (AdvanceType)comboItem.getValue();
|
||||
advanceDTO.setAdvanceType(advanceType);
|
||||
advanceDTO.setUnitName(advanceType.getUnitName());
|
||||
advanceDTO.setMaxValue(advanceType.getDefaultMaxValue());
|
||||
advance.setAdvanceType(advanceType);
|
||||
advance.setMaxValue(advanceType.getDefaultMaxValue());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -244,32 +251,33 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendLabelAdvanceType(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
Label unitName = new Label(advanceDTO.getUnitName());
|
||||
final AdvanceAssigment advance = (AdvanceAssigment) listItem.getValue();
|
||||
Label unitName = new Label(advance.getAdvanceType().getUnitName());
|
||||
Listcell listCell = new Listcell();
|
||||
listCell.appendChild(unitName);
|
||||
listItem.appendChild(listCell);
|
||||
}
|
||||
|
||||
private void appendDecimalBoxMaxValue(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
Decimalbox maxValue = new Decimalbox();
|
||||
maxValue.setScale(2);
|
||||
|
||||
if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.CALCULATED))
|
||||
if(advanceAssigment.getType().equals(AdvanceAssigment.Type.CALCULATED))
|
||||
maxValue.setDisabled(true);
|
||||
|
||||
Util.bind(maxValue,
|
||||
new Util.Getter<BigDecimal>() {
|
||||
@Override
|
||||
public BigDecimal get() {
|
||||
return advanceAssigmentDTO.getMaxValue();
|
||||
return advanceAssigment.getMaxValue();
|
||||
}
|
||||
}, new Util.Setter<BigDecimal>() {
|
||||
|
||||
@Override
|
||||
public void set(BigDecimal value) {
|
||||
advanceAssigmentDTO.setMaxValue(value);
|
||||
advanceAssigment.setMaxValue(value);
|
||||
}
|
||||
});
|
||||
maxValue.addEventListener(Events.ON_CHANGE,
|
||||
|
|
@ -287,24 +295,25 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendDecimalBoxValue(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
Decimalbox value = new Decimalbox();
|
||||
value.setScale(2);
|
||||
value.setDisabled(true);
|
||||
|
||||
final AdvanceMeasurementDTO advanceMeasurementDTO =
|
||||
this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO);
|
||||
if(advanceMeasurementDTO != null){
|
||||
final AdvanceMeasurement advanceMeasurement = this.manageOrderElementAdvancesModel
|
||||
.getFirstAdvanceMeasurement(advanceAssigment);
|
||||
if (advanceMeasurement != null) {
|
||||
Util.bind(value, new Util.Getter<BigDecimal>() {
|
||||
@Override
|
||||
public BigDecimal get() {
|
||||
return advanceMeasurementDTO.getValue();
|
||||
}
|
||||
}, new Util.Setter<BigDecimal>() {
|
||||
@Override
|
||||
public BigDecimal get() {
|
||||
return advanceMeasurement.getValue();
|
||||
}
|
||||
}, new Util.Setter<BigDecimal>() {
|
||||
|
||||
@Override
|
||||
public void set(BigDecimal value) {
|
||||
advanceMeasurementDTO.setValue(value);
|
||||
advanceMeasurement.setValue(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -314,13 +323,18 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendLabelPercentage(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
Label percentage = new Label();
|
||||
|
||||
final AdvanceMeasurementDTO advanceMeasurementDTO =
|
||||
this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO);
|
||||
if(advanceMeasurementDTO != null){
|
||||
percentage.setValue(advanceMeasurementDTO.getPercentage_());
|
||||
final AdvanceMeasurement advanceMeasurement = this.manageOrderElementAdvancesModel
|
||||
.getFirstAdvanceMeasurement(advanceAssigment);
|
||||
if (advanceMeasurement != null) {
|
||||
percentage
|
||||
.setValue(this.manageOrderElementAdvancesModel
|
||||
.getPercentageAdvanceMeasurement(advanceMeasurement)
|
||||
.toString()
|
||||
+ " %");
|
||||
}
|
||||
|
||||
Listcell listCell = new Listcell();
|
||||
|
|
@ -329,24 +343,25 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendDateBoxDate(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
Datebox date = new Datebox();
|
||||
date.setDisabled(true);
|
||||
|
||||
final AdvanceMeasurementDTO advanceMeasurementDTO =
|
||||
this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO);
|
||||
if(advanceMeasurementDTO != null){
|
||||
final AdvanceMeasurement advanceMeasurement = this.manageOrderElementAdvancesModel
|
||||
.getFirstAdvanceMeasurement(advanceAssigment);
|
||||
if (advanceMeasurement != null) {
|
||||
|
||||
Util.bind(date, new Util.Getter<Date>() {
|
||||
@Override
|
||||
public Date get() {
|
||||
return advanceMeasurementDTO.getDate();
|
||||
return advanceMeasurement.getDate();
|
||||
}
|
||||
}, new Util.Setter<Date>() {
|
||||
}, new Util.Setter<Date>() {
|
||||
|
||||
@Override
|
||||
public void set(Date value) {
|
||||
advanceMeasurementDTO.setDate(value);
|
||||
advanceMeasurement.setDate(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -356,11 +371,13 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendRadioSpread(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
Radio reportGlobalAdvance = new Radio();
|
||||
reportGlobalAdvance.setChecked(advanceAssigmentDTO.getReportGlobalAdvance());
|
||||
reportGlobalAdvance.setChecked(advanceAssigment
|
||||
.getReportGlobalAdvance());
|
||||
|
||||
if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.CALCULATED))
|
||||
if (advanceAssigment.getType().equals(AdvanceAssigment.Type.CALCULATED))
|
||||
reportGlobalAdvance.setDisabled(true);
|
||||
|
||||
reportGlobalAdvance.addEventListener(Events.ON_CHECK,
|
||||
|
|
@ -376,9 +393,10 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
|
||||
private void appendCalculatedCheckbox(final Listitem listItem){
|
||||
final AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)listItem.getValue();
|
||||
final AdvanceAssigment advance = (AdvanceAssigment) listItem.getValue();
|
||||
Checkbox calculated = new Checkbox();
|
||||
boolean isCalculated = advanceDTO.getType().equals(AdvanceAssigment.Type.CALCULATED);
|
||||
boolean isCalculated = advance.getType().equals(
|
||||
AdvanceAssigment.Type.CALCULATED);
|
||||
calculated.setChecked(isCalculated);
|
||||
calculated.setDisabled(true);
|
||||
|
||||
|
|
@ -394,8 +412,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
if(selectedItem != null){
|
||||
AdvanceType advanceType = ((AdvanceType) selectedItem.getValue());
|
||||
if(advanceType != null){
|
||||
AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO)item.getValue();
|
||||
advanceDTO.setMaxValue(advanceType.getDefaultMaxValue());
|
||||
AdvanceAssigment advance = (AdvanceAssigment) item.getValue();
|
||||
advance.setMaxValue(advanceType.getDefaultMaxValue());
|
||||
miBox.setValue(advanceType.getDefaultMaxValue());
|
||||
}
|
||||
}
|
||||
|
|
@ -406,15 +424,19 @@ public class ManageOrderElementAdvancesController extends
|
|||
if ((this.indexSelectedItem < listAdvances.getItemCount())
|
||||
&& (this.indexSelectedItem >= 0)) {
|
||||
Listitem selectedItem = listAdvances.getItemAtIndex(indexSelectedItem);
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO =
|
||||
(AdvanceAssigmentDTO) selectedItem.getValue();
|
||||
AdvanceAssigment advanceAssigment = (AdvanceAssigment) selectedItem
|
||||
.getValue();
|
||||
|
||||
final AdvanceMeasurementDTO greatAdvanceMeasurementDTO =
|
||||
this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO);
|
||||
if(greatAdvanceMeasurementDTO != null){
|
||||
final AdvanceMeasurement greatAdvanceMeasurement = this.manageOrderElementAdvancesModel
|
||||
.getFirstAdvanceMeasurement(advanceAssigment);
|
||||
if (greatAdvanceMeasurement != null) {
|
||||
Listcell percentage = (Listcell) selectedItem.getChildren()
|
||||
.get(3);
|
||||
((Label)percentage.getFirstChild()).setValue(greatAdvanceMeasurementDTO.getPercentage_());
|
||||
((Label) percentage.getFirstChild())
|
||||
.setValue(this.manageOrderElementAdvancesModel
|
||||
.getPercentageAdvanceMeasurement(
|
||||
greatAdvanceMeasurement).toString()
|
||||
+ " %");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -423,21 +445,21 @@ public class ManageOrderElementAdvancesController extends
|
|||
if(this.indexSelectedItem >= 0){
|
||||
Listbox listAdvances = ((Listbox) window.getFellow("editAdvances"));
|
||||
Listitem selectedItem = listAdvances.getItemAtIndex(indexSelectedItem);
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO =
|
||||
(AdvanceAssigmentDTO) selectedItem.getValue();
|
||||
final AdvanceMeasurementDTO greatAdvanceMeasurementDTO =
|
||||
this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO);
|
||||
if(greatAdvanceMeasurementDTO != null){
|
||||
AdvanceAssigment advanceAssigment = (AdvanceAssigment) selectedItem
|
||||
.getValue();
|
||||
final AdvanceMeasurement greatAdvanceMeasurement = this.manageOrderElementAdvancesModel
|
||||
.getFirstAdvanceMeasurement(advanceAssigment);
|
||||
if (greatAdvanceMeasurement != null) {
|
||||
Listcell value = (Listcell)selectedItem.getChildren().get(2);
|
||||
((Decimalbox)value.getFirstChild()).setValue(greatAdvanceMeasurementDTO.getValue());
|
||||
((Decimalbox) value.getFirstChild())
|
||||
.setValue(greatAdvanceMeasurement.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setCurrentDate(Listitem item){
|
||||
this.manageOrderElementAdvancesModel.modifyListAdvanceMeasurement(
|
||||
(AdvanceMeasurementDTO)item.getValue());
|
||||
this.manageOrderElementAdvancesModel.sortListAdvanceMeasurement();
|
||||
Util.reloadBindings(window.getFellow("editAdvancesMeasurement"));
|
||||
|
||||
this.setCurrentDate();
|
||||
|
|
@ -449,20 +471,23 @@ public class ManageOrderElementAdvancesController extends
|
|||
if(this.indexSelectedItem >= 0){
|
||||
Listbox listAdvances = ((Listbox) window.getFellow("editAdvances"));
|
||||
Listitem selectedItem = listAdvances.getItemAtIndex(indexSelectedItem);
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO =
|
||||
(AdvanceAssigmentDTO) selectedItem.getValue();
|
||||
final AdvanceMeasurementDTO greatAdvanceMeasurementDTO =
|
||||
this.manageOrderElementAdvancesModel.getFirstAdvanceMeasurement(advanceAssigmentDTO);
|
||||
if(greatAdvanceMeasurementDTO != null){
|
||||
Listcell date = (Listcell)selectedItem.getChildren().get(4);
|
||||
((Datebox)date.getFirstChild()).setValue(greatAdvanceMeasurementDTO.getDate());
|
||||
AdvanceAssigment advanceAssigment = (AdvanceAssigment) selectedItem
|
||||
.getValue();
|
||||
final AdvanceMeasurement greatAdvanceMeasurement =
|
||||
this.manageOrderElementAdvancesModel
|
||||
.getFirstAdvanceMeasurement(advanceAssigment);
|
||||
if(greatAdvanceMeasurement != null){
|
||||
Listcell date = (Listcell) selectedItem.getChildren().get(4);
|
||||
((Datebox) date.getFirstChild())
|
||||
.setValue(greatAdvanceMeasurement.getDate());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanDate(final Listitem item){
|
||||
final AdvanceMeasurementDTO advanceMeasurementDTO = (AdvanceMeasurementDTO) item.getValue();
|
||||
advanceMeasurementDTO.setDate(null);
|
||||
final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) item
|
||||
.getValue();
|
||||
advanceMeasurement.setDate(null);
|
||||
Listcell celdaDate = (Listcell)item.getChildren().get(2);
|
||||
((Datebox)celdaDate.getFirstChild()).setValue(null);
|
||||
}
|
||||
|
|
@ -481,58 +506,17 @@ public class ManageOrderElementAdvancesController extends
|
|||
Radio radioSpread = ((Radio)celdaSpread.getFirstChild());
|
||||
if(!radioSpread.isDisabled()){
|
||||
radioSpread.setChecked(false);
|
||||
((AdvanceAssigmentDTO)listItem.getValue()).setReportGlobalAdvance(false);
|
||||
((AdvanceAssigment) listItem.getValue())
|
||||
.setReportGlobalAdvance(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
Listcell celdaSpread = (Listcell) item.getChildren().get(5);
|
||||
((Radio)celdaSpread.getFirstChild()).setChecked(true);
|
||||
((AdvanceAssigmentDTO)item.getValue()).setReportGlobalAdvance(true);
|
||||
((AdvanceAssigment) item.getValue()).setReportGlobalAdvance(true);
|
||||
}
|
||||
|
||||
|
||||
public Constraint checkValidValue() {
|
||||
Constraint newConstraint = new Constraint() {
|
||||
@Override
|
||||
public void validate(Component comp, Object value)
|
||||
throws WrongValueException {
|
||||
if (((BigDecimal) value) != null){
|
||||
if(manageOrderElementAdvancesModel.greatThanMaxValue((BigDecimal)value)){
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("Value is not valid, the current value must be less than max value"));
|
||||
}
|
||||
if (!(manageOrderElementAdvancesModel.isPrecisionValid((BigDecimal)value))) {
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("Value is not valid, the Precision value must be exact "
|
||||
+manageOrderElementAdvancesModel.getUnitPrecision()));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
return newConstraint;
|
||||
}
|
||||
|
||||
public Constraint checkValidDate() {
|
||||
Constraint newConstraint = new Constraint() {
|
||||
@Override
|
||||
public void validate(Component comp, Object value)
|
||||
throws WrongValueException {
|
||||
if (((Date) value) != null) {
|
||||
Listitem listitem = (Listitem)comp.getParent().getParent();
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO =(AdvanceMeasurementDTO) listitem.getValue();
|
||||
if(!manageOrderElementAdvancesModel.isDistinctValidDate((Date)value,advanceMeasurementDTO)){
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("The date is not valid, the date must be unique for this advance assigment"));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
return newConstraint;
|
||||
}
|
||||
|
||||
private boolean validateDataForm(){
|
||||
return ((validateListAdvanceAssigment())
|
||||
&&(validateListAdvanceMeasurement()));
|
||||
|
|
@ -543,9 +527,12 @@ public class ManageOrderElementAdvancesController extends
|
|||
for(int i=0; i< listAdvances.getChildren().size(); i++){
|
||||
if(listAdvances.getChildren().get(i) instanceof Listitem){
|
||||
Listitem listItem = (Listitem) listAdvances.getChildren().get(i);
|
||||
AdvanceAssigmentDTO advanceDTO = (AdvanceAssigmentDTO) listItem.getValue();
|
||||
if(advanceDTO.getAdvanceType() == null)return false;
|
||||
if(advanceDTO.getMaxValue() == null)return false;
|
||||
AdvanceAssigment advance = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
if (advance.getAdvanceType() == null)
|
||||
return false;
|
||||
if (advance.getMaxValue() == null)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
@ -556,9 +543,12 @@ public class ManageOrderElementAdvancesController extends
|
|||
for(int i=0; i< listAdvances.getChildren().size(); i++){
|
||||
if(listAdvances.getChildren().get(i) instanceof Listitem){
|
||||
Listitem listItem = (Listitem) listAdvances.getChildren().get(i);
|
||||
AdvanceMeasurementDTO advanceDTO = (AdvanceMeasurementDTO) listItem.getValue();
|
||||
if(advanceDTO.getValue() == null)return false;
|
||||
if(advanceDTO.getDate() == null)return false;
|
||||
AdvanceMeasurement advance = (AdvanceMeasurement) listItem
|
||||
.getValue();
|
||||
if (advance.getValue() == null)
|
||||
return false;
|
||||
if (advance.getDate() == null)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
@ -570,10 +560,12 @@ public class ManageOrderElementAdvancesController extends
|
|||
for(int i=0; i< listAdvances.getChildren().size(); i++){
|
||||
if(listAdvances.getChildren().get(i) instanceof Listitem){
|
||||
Listitem listItem = (Listitem) listAdvances.getChildren().get(i);
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO = (AdvanceAssigmentDTO) listItem.getValue();
|
||||
if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.DIRECT)){
|
||||
AdvanceAssigment advanceAssigment = (AdvanceAssigment) listItem
|
||||
.getValue();
|
||||
if (advanceAssigment.getType().equals(
|
||||
AdvanceAssigment.Type.DIRECT)) {
|
||||
existItems = true;
|
||||
if(advanceAssigmentDTO.getReportGlobalAdvance()){
|
||||
if (advanceAssigment.getReportGlobalAdvance()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -582,4 +574,155 @@ public class ManageOrderElementAdvancesController extends
|
|||
if(!existItems) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public AdvanceMeasurementRenderer getAdvanceMeasurementRenderer() {
|
||||
return advanceMeasurementRenderer;
|
||||
}
|
||||
|
||||
private class AdvanceMeasurementRenderer implements ListitemRenderer {
|
||||
|
||||
@Override
|
||||
public void render(Listitem item, Object data) throws Exception {
|
||||
AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) data;
|
||||
|
||||
item.setValue(advanceMeasurement);
|
||||
|
||||
appendDecimalBoxValue(item);
|
||||
appendLabelPercentage(item);
|
||||
appendDateboxDate(item);
|
||||
}
|
||||
|
||||
private void appendDecimalBoxValue(final Listitem listitem) {
|
||||
final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem
|
||||
.getValue();
|
||||
final Decimalbox value = new Decimalbox();
|
||||
|
||||
Listcell listcell = new Listcell();
|
||||
listcell.appendChild(value);
|
||||
listitem.appendChild(listcell);
|
||||
|
||||
value.setScale(2);
|
||||
value.setDisabled(isReadOnlyAdvanceMeasurements());
|
||||
value.addEventListener(Events.ON_CHANGE, new EventListener() {
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
updatesValue(value);
|
||||
}
|
||||
});
|
||||
value.setConstraint(checkValidValue());
|
||||
|
||||
Util.bind(value, new Util.Getter<BigDecimal>() {
|
||||
|
||||
@Override
|
||||
public BigDecimal get() {
|
||||
return advanceMeasurement.getValue();
|
||||
}
|
||||
}, new Util.Setter<BigDecimal>() {
|
||||
|
||||
@Override
|
||||
public void set(BigDecimal value) {
|
||||
advanceMeasurement.setValue(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void appendLabelPercentage(final Listitem listitem) {
|
||||
final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem
|
||||
.getValue();
|
||||
|
||||
BigDecimal percentage = manageOrderElementAdvancesModel
|
||||
.getPercentageAdvanceMeasurement(advanceMeasurement);
|
||||
Label percentageLabel = new Label(percentage.toString() + " %");
|
||||
|
||||
Listcell listcell = new Listcell();
|
||||
listcell.appendChild(percentageLabel);
|
||||
listitem.appendChild(listcell);
|
||||
}
|
||||
|
||||
private void appendDateboxDate(final Listitem listitem) {
|
||||
final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem
|
||||
.getValue();
|
||||
Datebox date = new Datebox();
|
||||
|
||||
Listcell listcell = new Listcell();
|
||||
listcell.appendChild(date);
|
||||
listitem.appendChild(listcell);
|
||||
|
||||
date.setDisabled(isReadOnlyAdvanceMeasurements());
|
||||
date.addEventListener(Events.ON_CHANGE, new EventListener() {
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
setCurrentDate(listitem);
|
||||
}
|
||||
});
|
||||
date.setConstraint(checkValidDate());
|
||||
|
||||
Util.bind(date, new Util.Getter<Date>() {
|
||||
|
||||
@Override
|
||||
public Date get() {
|
||||
return advanceMeasurement.getDate();
|
||||
}
|
||||
}, new Util.Setter<Date>() {
|
||||
|
||||
@Override
|
||||
public void set(Date value) {
|
||||
advanceMeasurement.setDate(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Constraint checkValidValue() {
|
||||
Constraint newConstraint = new Constraint() {
|
||||
@Override
|
||||
public void validate(Component comp, Object value)
|
||||
throws WrongValueException {
|
||||
if (((BigDecimal) value) != null) {
|
||||
if (manageOrderElementAdvancesModel
|
||||
.greatThanMaxValue((BigDecimal) value)) {
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("Value is not valid, the current value must be less than max value"));
|
||||
}
|
||||
if (!(manageOrderElementAdvancesModel
|
||||
.isPrecisionValid((BigDecimal) value))) {
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("Value is not valid, the Precision value must be exact "
|
||||
+ manageOrderElementAdvancesModel
|
||||
.getUnitPrecision()));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
return newConstraint;
|
||||
}
|
||||
|
||||
private Constraint checkValidDate() {
|
||||
Constraint newConstraint = new Constraint() {
|
||||
@Override
|
||||
public void validate(Component comp, Object value)
|
||||
throws WrongValueException {
|
||||
if (((Date) value) != null) {
|
||||
Listitem listitem = (Listitem) comp.getParent()
|
||||
.getParent();
|
||||
AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listitem
|
||||
.getValue();
|
||||
if (!manageOrderElementAdvancesModel
|
||||
.isDistinctValidDate((Date) value,
|
||||
advanceMeasurement)) {
|
||||
throw new WrongValueException(
|
||||
comp,
|
||||
_("The date is not valid, the date must be unique for this advance assigment"));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
return newConstraint;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import static org.navalplanner.web.I18nHelper._;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
|
|
@ -45,9 +46,7 @@ public class ManageOrderElementAdvancesModel implements
|
|||
|
||||
private OrderElement orderElement;
|
||||
|
||||
private AdvanceAssigmentDTO advanceAssigmentDTO;
|
||||
|
||||
private List<AdvanceAssigmentDTO> advanceAssigmentDTOs;
|
||||
private AdvanceAssigment advanceAssigment;
|
||||
|
||||
private List<AdvanceAssigment> listAdvanceAssigments;
|
||||
|
||||
|
|
@ -68,51 +67,60 @@ public class ManageOrderElementAdvancesModel implements
|
|||
|
||||
@Override
|
||||
public String getInfoAdvanceAssigment(){
|
||||
if((this.advanceAssigmentDTO == null) ||
|
||||
if ((this.advanceAssigment == null) ||
|
||||
(this.orderElement == null)) {
|
||||
return "";
|
||||
}
|
||||
if((this.advanceAssigmentDTO.getUnitName() == null) ||
|
||||
this.advanceAssigmentDTO.getMaxValue() == null){
|
||||
if ((this.advanceAssigment.getAdvanceType() == null)
|
||||
|| this.advanceAssigment.getMaxValue() == null) {
|
||||
return "";
|
||||
}
|
||||
return " "+this.advanceAssigmentDTO.getUnitName()+_(". Max value: ")+
|
||||
this.advanceAssigmentDTO.getMaxValue();
|
||||
return " " + this.advanceAssigment.getAdvanceType().getUnitName()
|
||||
+ _(". Max value: ") + this.advanceAssigment.getMaxValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<AdvanceMeasurementDTO> getAdvanceMeasurementDTOs() {
|
||||
if((this.advanceAssigmentDTO == null) ||
|
||||
public List<AdvanceMeasurement> getAdvanceMeasurements() {
|
||||
if ((this.advanceAssigment == null) ||
|
||||
(this.orderElement == null)) {
|
||||
return new ArrayList<AdvanceMeasurementDTO>();
|
||||
return new ArrayList<AdvanceMeasurement>();
|
||||
}
|
||||
return this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView();
|
||||
return new ArrayList<AdvanceMeasurement>(this.advanceAssigment
|
||||
.getAdvanceMeasurements());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<AdvanceAssigmentDTO> getAdvanceAssigmentDTOs(){
|
||||
if(this.orderElement == null){
|
||||
return new ArrayList<AdvanceAssigmentDTO>();
|
||||
public List<AdvanceAssigment> getAdvanceAssigments() {
|
||||
if (orderElement == null) {
|
||||
return new ArrayList<AdvanceAssigment>();
|
||||
}
|
||||
return this.advanceAssigmentDTOs;
|
||||
return listAdvanceAssigments;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssigmentDTO advanceAssigmentDTO){
|
||||
this.advanceAssigmentDTO = advanceAssigmentDTO;
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssigment advanceAssigment) {
|
||||
this.advanceAssigment = advanceAssigment;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void init(OrderElement orderElement) {
|
||||
this.orderElement = orderElement;
|
||||
this.advanceAssigmentDTO = null;
|
||||
this.advanceAssigment = null;
|
||||
if (orderElement != null){
|
||||
loadAdvanceTypes();
|
||||
reattachmentOrderElement();
|
||||
createAdvanceDTOs();
|
||||
forceLoadAdvanceAssigmentsAndMeasurements();
|
||||
fillVariables();
|
||||
}
|
||||
}
|
||||
|
||||
private void forceLoadAdvanceAssigmentsAndMeasurements() {
|
||||
for (AdvanceAssigment advanceAssigment : orderElement
|
||||
.getAdvanceAssigments()) {
|
||||
advanceAssigment.getAdvanceMeasurements().size();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -120,54 +128,48 @@ public class ManageOrderElementAdvancesModel implements
|
|||
orderElementDAO.save(orderElement);
|
||||
}
|
||||
|
||||
public void createAdvanceDTOs() {
|
||||
this.advanceAssigmentDTOs = new ArrayList<AdvanceAssigmentDTO>();
|
||||
private void fillVariables() {
|
||||
this.listAdvanceAssigments = new ArrayList<AdvanceAssigment>();
|
||||
this.listAdvanceMeasurements = new TreeSet<AdvanceMeasurement>(new AdvanceMeasurementComparator());
|
||||
this.listAdvanceMeasurements = new TreeSet<AdvanceMeasurement>(
|
||||
new AdvanceMeasurementComparator());
|
||||
for (AdvanceAssigment advanceAssigment : this.orderElement
|
||||
.getAdvanceAssigments()) {
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO = new AdvanceAssigmentDTO(
|
||||
advanceAssigment.getAdvanceType(), advanceAssigment,
|
||||
advanceAssigment.getAdvanceMeasurements());
|
||||
|
||||
for (AdvanceMeasurement advanceMeasurement : advanceAssigment.
|
||||
getAdvanceMeasurements()) {
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO = new AdvanceMeasurementDTO(
|
||||
advanceMeasurement);
|
||||
|
||||
advanceAssigmentDTO.getAdvanceMeasurementDTOs().add(advanceMeasurementDTO);
|
||||
advanceMeasurementDTO.setAdvanceAssigmentDTO(advanceAssigmentDTO);
|
||||
.getAdvanceAssigments()) {
|
||||
this.listAdvanceAssigments.add(advanceAssigment);
|
||||
for (AdvanceMeasurement advanceMeasurement : advanceAssigment
|
||||
.getAdvanceMeasurements()) {
|
||||
this.listAdvanceMeasurements.add(advanceMeasurement);
|
||||
}
|
||||
this.advanceAssigmentDTOs.add(advanceAssigmentDTO);
|
||||
this.listAdvanceAssigments.add(advanceAssigment);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addNewLineAdvaceAssigment() {
|
||||
AdvanceAssigmentDTO newAdvance = new AdvanceAssigmentDTO();
|
||||
this.advanceAssigmentDTOs.add(newAdvance);
|
||||
AdvanceAssigment newAdvance = AdvanceAssigment.create();
|
||||
newAdvance.setType(AdvanceAssigment.Type.DIRECT);
|
||||
newAdvance.setOrderElement(this.orderElement);
|
||||
|
||||
listAdvanceAssigments.add(newAdvance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addNewLineAdvaceMeasurement() {
|
||||
if(this.advanceAssigmentDTO != null){
|
||||
AdvanceMeasurementDTO newAdvance = new AdvanceMeasurementDTO();
|
||||
newAdvance.setAdvanceAssigmentDTO(advanceAssigmentDTO);
|
||||
this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().add(newAdvance);
|
||||
if (this.advanceAssigment != null) {
|
||||
AdvanceMeasurement newMeasurement = AdvanceMeasurement.create();
|
||||
newMeasurement.setDate(new Date());
|
||||
newMeasurement.setAdvanceAssigment(this.advanceAssigment);
|
||||
this.advanceAssigment.getAdvanceMeasurements().add(newMeasurement);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeLineAdvanceAssigment(AdvanceAssigmentDTO advanceDTO) {
|
||||
this.advanceAssigmentDTOs.remove(advanceDTO);
|
||||
this.advanceAssigmentDTO = null;
|
||||
public void removeLineAdvanceAssigment(AdvanceAssigment advance) {
|
||||
this.listAdvanceAssigments.remove(advance);
|
||||
this.advanceAssigment = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeLineAdvanceMeasurement(AdvanceMeasurementDTO advanceDTO) {
|
||||
this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().remove(advanceDTO);
|
||||
public void removeLineAdvanceMeasurement(AdvanceMeasurement advance) {
|
||||
this.advanceAssigment.getAdvanceMeasurements().remove(advance);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -184,20 +186,22 @@ public class ManageOrderElementAdvancesModel implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnlyAdvanceMeasurementDTOs(){
|
||||
if(this.advanceAssigmentDTO == null) return true;
|
||||
return this.advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.CALCULATED);
|
||||
public boolean isReadOnlyAdvanceMeasurements(){
|
||||
if (this.advanceAssigment == null)
|
||||
return true;
|
||||
return this.advanceAssigment.getType().equals(
|
||||
AdvanceAssigment.Type.CALCULATED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanAdvance(){
|
||||
if(this.advanceAssigmentDTO != null){
|
||||
this.advanceAssigmentDTO.setReportGlobalAdvance(false);
|
||||
List<AdvanceMeasurementDTO> listAdvanceMeasurementDTOs =
|
||||
this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView();
|
||||
for(AdvanceMeasurementDTO advanceMeasurementDTO : listAdvanceMeasurementDTOs){
|
||||
advanceMeasurementDTO.setValue(BigDecimal.ZERO);
|
||||
advanceMeasurementDTO.setDate(null);
|
||||
if (this.advanceAssigment != null) {
|
||||
this.advanceAssigment.setReportGlobalAdvance(false);
|
||||
List<AdvanceMeasurement> listAdvanceMeasurements = new ArrayList<AdvanceMeasurement>(
|
||||
this.advanceAssigment.getAdvanceMeasurements());
|
||||
for (AdvanceMeasurement advanceMeasurement : listAdvanceMeasurements) {
|
||||
advanceMeasurement.setValue(BigDecimal.ZERO);
|
||||
advanceMeasurement.setDate(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -216,23 +220,20 @@ public class ManageOrderElementAdvancesModel implements
|
|||
DuplicateAdvanceAssigmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException{
|
||||
updateRemoveAdvances();
|
||||
for(AdvanceAssigmentDTO advanceAssigmentDTO : this.advanceAssigmentDTOs){
|
||||
if(advanceAssigmentDTO.getType().equals(AdvanceAssigment.Type.DIRECT))
|
||||
validateBasicData(advanceAssigmentDTO);
|
||||
for (AdvanceAssigment advanceAssigment : this.listAdvanceAssigments) {
|
||||
if(advanceAssigment.getType().equals(AdvanceAssigment.Type.DIRECT))
|
||||
validateBasicData(advanceAssigment);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateRemoveAdvances(){
|
||||
for(AdvanceAssigment advanceAssigment : this.listAdvanceAssigments){
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO = yetExistAdvanceAssigment(advanceAssigment);
|
||||
if(advanceAssigmentDTO == null){
|
||||
updateRemoveCalculatedAdvanceAssigment(orderElement,advanceAssigment);
|
||||
removeAdvanceAssigment(advanceAssigment);
|
||||
AdvanceAssigment advance = yetExistAdvanceAssigment(advanceAssigment);
|
||||
if (advance == null) {
|
||||
removeAdvanceAssigment(advance);
|
||||
}else{
|
||||
for(AdvanceMeasurement advanceMeasurement : this.listAdvanceMeasurements){
|
||||
if(!yetExistAdvanceMeasurement(advanceAssigmentDTO,advanceMeasurement)){
|
||||
updateRemoveCalculatedAdvanceMeasurement(orderElement,
|
||||
advanceAssigment,advanceMeasurement);
|
||||
if (!yetExistAdvanceMeasurement(advance, advanceMeasurement)) {
|
||||
removeAdvanceMeasurement(advanceMeasurement);
|
||||
}
|
||||
}
|
||||
|
|
@ -240,118 +241,40 @@ public class ManageOrderElementAdvancesModel implements
|
|||
}
|
||||
}
|
||||
|
||||
private void validateBasicData(AdvanceAssigmentDTO advanceAssigmentDTO)
|
||||
private void validateBasicData(AdvanceAssigment advanceAssigment)
|
||||
throws InstanceNotFoundException,DuplicateAdvanceAssigmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException{
|
||||
if(advanceAssigmentDTO.getIsNewDTO()){
|
||||
AdvanceAssigment newAdvanceAssigment = createNewAdvance(advanceAssigmentDTO);
|
||||
addCalculatedAdvanceAssigmentToAncestors(this.orderElement,
|
||||
advanceAssigmentDTO,newAdvanceAssigment);
|
||||
addAdvanceAssigment(newAdvanceAssigment);
|
||||
}else{
|
||||
AdvanceAssigment newAdvanceAssigment = advanceAssigmentDTO.getAdvanceAssigment();
|
||||
addCalculatedAdvanceAssigmentToAncestors(this.orderElement,
|
||||
advanceAssigmentDTO,newAdvanceAssigment);
|
||||
updateAdvanceAssigment(advanceAssigmentDTO);
|
||||
if (advanceAssigment.getVersion() == null) {
|
||||
addAdvanceAssigment(advanceAssigment);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateAdvanceAssigment(AdvanceAssigmentDTO advanceAssigmentDTO){
|
||||
//Removed the advance and add a new advanceAssigment
|
||||
AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment();
|
||||
for(AdvanceMeasurementDTO advanceMeasurementDTO :
|
||||
advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){
|
||||
if(advanceMeasurementDTO.getIsNewDTO()){
|
||||
AdvanceMeasurement newAdvanceMeasurement =
|
||||
createAdvanceMeasurement(advanceMeasurementDTO);
|
||||
advanceAssigment.getAdvanceMeasurements().add(newAdvanceMeasurement);
|
||||
}else{
|
||||
AdvanceMeasurement newAdvanceMeasurement =
|
||||
createAdvanceMeasurement(advanceMeasurementDTO);
|
||||
removeAdvanceMeasurement(advanceMeasurementDTO.getAdvanceMeasurement());
|
||||
advanceAssigment.getAdvanceMeasurements().add(newAdvanceMeasurement);
|
||||
}
|
||||
}
|
||||
//Update changes in AdvanceAssigment
|
||||
advanceAssigment.setReportGlobalAdvance(advanceAssigmentDTO.getReportGlobalAdvance());
|
||||
advanceAssigment.setMaxValue(advanceAssigmentDTO.getMaxValue());
|
||||
advanceAssigment.setAdvanceType(advanceAssigmentDTO.getAdvanceType());
|
||||
}
|
||||
|
||||
private AdvanceMeasurement createAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO){
|
||||
AdvanceMeasurement newAdvanceMeasurement = AdvanceMeasurement.create(
|
||||
advanceMeasurementDTO.getDate(),advanceMeasurementDTO.getValue(),0);
|
||||
AdvanceAssigment advanceAssigment = advanceMeasurementDTO.getAdvanceAssigmentDTO().
|
||||
getAdvanceAssigment();
|
||||
newAdvanceMeasurement.setAdvanceAssigment(advanceAssigment);
|
||||
return newAdvanceMeasurement;
|
||||
}
|
||||
|
||||
private AdvanceAssigmentDTO yetExistAdvanceAssigment(AdvanceAssigment advanceAssigment){
|
||||
for(AdvanceAssigmentDTO advanceDTO : this.advanceAssigmentDTOs){
|
||||
if((!advanceDTO.getIsNewDTO()) &&
|
||||
(advanceDTO.getAdvanceAssigment().getId() == advanceAssigment.getId()))
|
||||
return advanceDTO;
|
||||
private AdvanceAssigment yetExistAdvanceAssigment(
|
||||
AdvanceAssigment advanceAssigment) {
|
||||
for (AdvanceAssigment advance : this.orderElement
|
||||
.getAdvanceAssigments()) {
|
||||
if ((advance.getId() == advanceAssigment.getId()))
|
||||
return advance;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean yetExistAdvanceMeasurement(AdvanceAssigmentDTO advanceAssigmentDTO,
|
||||
private boolean yetExistAdvanceMeasurement(AdvanceAssigment advanceAssigment,
|
||||
AdvanceMeasurement advanceMeasurement){
|
||||
if(belongsToAdvanceAssigment(advanceAssigmentDTO,advanceMeasurement)){
|
||||
for(AdvanceMeasurementDTO advanceDTO :
|
||||
advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){
|
||||
if((!advanceDTO.getIsNewDTO()) &&
|
||||
(advanceDTO.getAdvanceMeasurement().getId() == advanceMeasurement.getId())){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean belongsToAdvanceAssigment(AdvanceAssigmentDTO advanceAssigmentDTO,
|
||||
AdvanceMeasurement advanceMeasurement){
|
||||
AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment();
|
||||
if(advanceAssigment != null){
|
||||
if(advanceAssigment.getId() == advanceMeasurement.getAdvanceAssigment().getId())
|
||||
for (AdvanceMeasurement advance : advanceAssigment
|
||||
.getAdvanceMeasurements()) {
|
||||
if (advance.getId() == advanceMeasurement.getId()) {
|
||||
return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
private AdvanceAssigment createNewAdvance(AdvanceAssigmentDTO advanceAssigmentDTO)
|
||||
throws InstanceNotFoundException{
|
||||
//create AdvanceAssigment
|
||||
AdvanceAssigment newAdvanceAssigment = AdvanceAssigment.create(
|
||||
advanceAssigmentDTO.getReportGlobalAdvance(),
|
||||
advanceAssigmentDTO.getMaxValue());
|
||||
newAdvanceAssigment.setAdvanceType(advanceAssigmentDTO.getAdvanceType());
|
||||
newAdvanceAssigment.setOrderElement(this.orderElement);
|
||||
newAdvanceAssigment.setType(AdvanceAssigment.Type.DIRECT);
|
||||
|
||||
//create AdvanceMeasurement
|
||||
for(AdvanceMeasurementDTO advanceMeasurementDTO
|
||||
:advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){
|
||||
AdvanceMeasurement newAdvanceMeasurement = AdvanceMeasurement.create(
|
||||
advanceMeasurementDTO.getDate(),advanceMeasurementDTO.getValue(),0);
|
||||
|
||||
//link AdvanceMeasurement to AdvanceAssigment
|
||||
newAdvanceMeasurement.setAdvanceAssigment(newAdvanceAssigment);
|
||||
newAdvanceAssigment.getAdvanceMeasurements().add(newAdvanceMeasurement);
|
||||
}
|
||||
advanceAssigmentDTO.setAdvanceAssigment(newAdvanceAssigment);
|
||||
return newAdvanceAssigment;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
private void addAdvanceAssigment(AdvanceAssigment newAdvanceAssigment)
|
||||
throws DuplicateAdvanceAssigmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException{
|
||||
this.orderElement.addAdvanceAssigment(newAdvanceAssigment);
|
||||
this.orderElement.addAdvanceAssigment(newAdvanceAssigment);
|
||||
}
|
||||
|
||||
private void removeAdvanceAssigment(AdvanceAssigment advanceAssigment){
|
||||
|
|
@ -363,410 +286,12 @@ public class ManageOrderElementAdvancesModel implements
|
|||
advanceAssigment.getAdvanceMeasurements().remove(advanceMeasurement);
|
||||
}
|
||||
|
||||
private void updateRemoveCalculatedAdvanceAssigment(OrderElement orderElement,
|
||||
AdvanceAssigment advanceAssigment){
|
||||
OrderElement parent = orderElement.getParent();
|
||||
if(parent != null){
|
||||
removeCalculatedAdvanceAssigment(parent,advanceAssigment);
|
||||
updateRemoveCalculatedAdvanceAssigment(parent,advanceAssigment);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateRemoveCalculatedAdvanceMeasurement(OrderElement orderElement,
|
||||
AdvanceAssigment advanceAssigment,AdvanceMeasurement advanceMeasurement){
|
||||
OrderElement parent = orderElement.getParent();
|
||||
if(parent != null){
|
||||
AdvanceAssigment indirectAdvanceAssigment =
|
||||
findCalculatedAdvanceInParent(parent,advanceAssigment.getAdvanceType().getId());
|
||||
if(indirectAdvanceAssigment != null){
|
||||
removeCalculatedAdvanceMeasurement(advanceMeasurement,indirectAdvanceAssigment);
|
||||
updateRemoveCalculatedAdvanceMeasurement(parent,advanceAssigment,advanceMeasurement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addCalculatedAdvanceAssigmentToAncestors(OrderElement orderElement,
|
||||
AdvanceAssigmentDTO newAdvanceAssigmentDTO,AdvanceAssigment newAdvanceAssigment)
|
||||
throws DuplicateAdvanceAssigmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException{
|
||||
|
||||
if (orderElement.getParent() != null) {
|
||||
OrderElement parent = orderElement.getParent();
|
||||
if(checkChangeTheAdvanceType(newAdvanceAssigmentDTO)){
|
||||
removeCalculatedAdvanceAssigment(parent,newAdvanceAssigment);
|
||||
}
|
||||
|
||||
AdvanceAssigment indirectAdvanceAssigment =
|
||||
findCalculatedAdvanceInParent(parent,newAdvanceAssigmentDTO.getAdvanceType().getId());
|
||||
if(indirectAdvanceAssigment == null){
|
||||
indirectAdvanceAssigment = initNewCalculatedAdvanceAssigment(parent,newAdvanceAssigmentDTO);
|
||||
parent.addAdvanceAssigment(indirectAdvanceAssigment);
|
||||
}
|
||||
addIncrementMaxValueToAdvanceAssigment(newAdvanceAssigmentDTO,indirectAdvanceAssigment);
|
||||
addCalculatedAdvanceMeasurements(newAdvanceAssigmentDTO,indirectAdvanceAssigment);
|
||||
addCalculatedAdvanceAssigmentToAncestors(parent,newAdvanceAssigmentDTO,newAdvanceAssigment);
|
||||
}
|
||||
}
|
||||
|
||||
private void addIncrementMaxValueToAdvanceAssigment(
|
||||
AdvanceAssigmentDTO newAdvanceAssigmentDTO,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
BigDecimal incrementMaxValue = getIncrementMaxValue(newAdvanceAssigmentDTO);
|
||||
BigDecimal currentMaxValue = indirectAdvanceAssigment.getMaxValue().add(incrementMaxValue);
|
||||
indirectAdvanceAssigment.setMaxValue(currentMaxValue);
|
||||
}
|
||||
|
||||
private void addCalculatedAdvanceMeasurements(
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO, AdvanceAssigment indirectAdvanceAssigment){
|
||||
for(AdvanceMeasurementDTO advanceMeasurementDTO
|
||||
:advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){
|
||||
if((advanceMeasurementDTO.getIsNewDTO())
|
||||
|| (checkChangeTheAdvanceType(advanceAssigmentDTO))){
|
||||
addNewCalculatedAdvanceMeasurement(advanceMeasurementDTO,indirectAdvanceAssigment);
|
||||
}else{
|
||||
_removeCalculatedAdvanceMeasurement(advanceMeasurementDTO,indirectAdvanceAssigment);
|
||||
addNewCalculatedAdvanceMeasurement(advanceMeasurementDTO,indirectAdvanceAssigment);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addNewCalculatedAdvanceMeasurement(
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
|
||||
AdvanceMeasurementDTO greatNeighbor = this.getGreatNeighborDTO(advanceMeasurementDTO);
|
||||
AdvanceMeasurement lessNeighbor = this.getLessNeighbor(advanceMeasurementDTO);
|
||||
|
||||
incrementLaterCalculatedAdvances(lessNeighbor,greatNeighbor,
|
||||
advanceMeasurementDTO,indirectAdvanceAssigment);
|
||||
|
||||
AdvanceMeasurement previousAdvanceMeasurement =
|
||||
findPreviousIndirectAdvanceMeasurement(
|
||||
advanceMeasurementDTO.getDate(),indirectAdvanceAssigment);
|
||||
if(previousAdvanceMeasurement == null){
|
||||
//create and add a new indirect AdvanceMeasurement
|
||||
AdvanceMeasurement newIndirectAdvanceMeasurement = AdvanceMeasurement.create(
|
||||
advanceMeasurementDTO.getDate(),advanceMeasurementDTO.getValue(),0);
|
||||
newIndirectAdvanceMeasurement.setAdvanceAssigment(indirectAdvanceAssigment);
|
||||
newIndirectAdvanceMeasurement.incrementNumIndirectSons();
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements().add(newIndirectAdvanceMeasurement);
|
||||
}else{
|
||||
if(previousAdvanceMeasurement.getDate().compareTo(advanceMeasurementDTO.getDate()) < 0){
|
||||
//create and add a new indirect AdvanceMeasurement
|
||||
BigDecimal incrementValue = calculateIncrementValue(lessNeighbor,advanceMeasurementDTO);
|
||||
BigDecimal currentValue = previousAdvanceMeasurement.getValue().add(incrementValue);
|
||||
AdvanceMeasurement newIndirectAdvanceMeasurement = AdvanceMeasurement.create(
|
||||
advanceMeasurementDTO.getDate(),currentValue,0);
|
||||
newIndirectAdvanceMeasurement.setAdvanceAssigment(indirectAdvanceAssigment);
|
||||
newIndirectAdvanceMeasurement.incrementNumIndirectSons();
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements().add(newIndirectAdvanceMeasurement);
|
||||
}
|
||||
if(previousAdvanceMeasurement.getDate().compareTo(advanceMeasurementDTO.getDate()) == 0){
|
||||
previousAdvanceMeasurement.incrementNumIndirectSons();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void removeCalculatedAdvanceMeasurement(AdvanceMeasurement advanceMeasurement,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
//find the indirect advanceMeasurement
|
||||
AdvanceMeasurement indirectAdvanceMeasurement =
|
||||
findIndirectAdvanceMeasurement(advanceMeasurement.getDate(),indirectAdvanceAssigment);
|
||||
//check if the indirect advanceMeasurement is the adding of several sons.
|
||||
indirectAdvanceMeasurement.decrementNumIndirectSons();
|
||||
if(indirectAdvanceMeasurement.getNumIndirectSons() == 0){
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements().remove(indirectAdvanceMeasurement);
|
||||
}
|
||||
//update post indirect advanceMeasurement (substract the increment)
|
||||
AdvanceMeasurement[] neighbors = getOldNeighborsAdvanceMeasurement(advanceMeasurement);
|
||||
decrementLaterCalculatedAdvances(neighbors,advanceMeasurement,indirectAdvanceAssigment);
|
||||
}
|
||||
|
||||
private void _removeCalculatedAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
//find the indirect advanceMeasurement
|
||||
AdvanceMeasurement advanceMeasurement = advanceMeasurementDTO.getAdvanceMeasurement();
|
||||
AdvanceMeasurement indirectAdvanceMeasurement =
|
||||
findIndirectAdvanceMeasurement(advanceMeasurement.getDate(),indirectAdvanceAssigment);
|
||||
//check if the indirect advanceMeasurement is the adding of several sons.
|
||||
indirectAdvanceMeasurement.decrementNumIndirectSons();
|
||||
if(indirectAdvanceMeasurement.getNumIndirectSons() == 0){
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements().remove(indirectAdvanceMeasurement);
|
||||
}
|
||||
//update post indirect advanceMeasurement (substract the increment)
|
||||
AdvanceMeasurement lessNeighbor = getLessNeighbor(advanceMeasurementDTO);
|
||||
AdvanceMeasurementDTO greatNeighbor = getGreatNeighborDTO(advanceMeasurementDTO);
|
||||
_decrementLaterCalculatedAdvances(lessNeighbor,greatNeighbor,advanceMeasurement,indirectAdvanceAssigment);
|
||||
}
|
||||
|
||||
private void removeCalculatedAdvanceAssigment(OrderElement parent,
|
||||
AdvanceAssigment newAdvanceAssigment){
|
||||
AdvanceAssigment indirectAdvanceAssigment =
|
||||
findCalculatedAdvanceInParent(parent,newAdvanceAssigment.getAdvanceType().getId());
|
||||
if(indirectAdvanceAssigment != null){
|
||||
if(decrementMaxValue(newAdvanceAssigment,indirectAdvanceAssigment)){
|
||||
parent.removeAdvanceAssigment(indirectAdvanceAssigment);
|
||||
}else{
|
||||
for(AdvanceMeasurement advanceMeasurement :
|
||||
newAdvanceAssigment.getAdvanceMeasurements()){
|
||||
removeCalculatedAdvanceMeasurement(advanceMeasurement,indirectAdvanceAssigment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean decrementMaxValue(AdvanceAssigment newAdvanceAssigment,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
BigDecimal maxValue = newAdvanceAssigment.getMaxValue();
|
||||
BigDecimal currentMaxValue = indirectAdvanceAssigment.getMaxValue().subtract(maxValue);
|
||||
indirectAdvanceAssigment.setMaxValue(currentMaxValue);
|
||||
if(currentMaxValue.compareTo(new BigDecimal(0)) == 0){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isAddingOfSeveralSons(AdvanceMeasurement previousAdvanceMeasurement){
|
||||
previousAdvanceMeasurement.decrementNumIndirectSons();
|
||||
if(previousAdvanceMeasurement.getNumIndirectSons() == 0)
|
||||
return false;
|
||||
else return true;
|
||||
}
|
||||
|
||||
private AdvanceMeasurementDTO getGreatNeighborDTO(
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO){
|
||||
AdvanceMeasurementDTO neighbor = null;
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO =
|
||||
advanceMeasurementDTO.getAdvanceAssigmentDTO();
|
||||
List<AdvanceMeasurementDTO> advanceMeasurementDTOs =
|
||||
advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView();
|
||||
|
||||
for(int i=0; i < advanceMeasurementDTOs.size() ; i++){
|
||||
AdvanceMeasurementDTO advance =
|
||||
(AdvanceMeasurementDTO) advanceMeasurementDTOs.get(i);
|
||||
if(advance.equals(advanceMeasurementDTO)){
|
||||
if(i > 0){
|
||||
neighbor =((AdvanceMeasurementDTO)
|
||||
advanceMeasurementDTOs.get(i-1));
|
||||
}
|
||||
return neighbor;
|
||||
}
|
||||
}
|
||||
return neighbor;
|
||||
}
|
||||
|
||||
private AdvanceMeasurement getLessNeighbor(
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO){
|
||||
AdvanceMeasurement neighbor = null;
|
||||
|
||||
AdvanceAssigmentDTO advanceAssigmentDTO = advanceMeasurementDTO.getAdvanceAssigmentDTO();
|
||||
AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment();
|
||||
if((advanceAssigment == null) || (advanceAssigmentDTO.getIsNewDTO())) return neighbor;
|
||||
|
||||
Object[] advanceMeasurements = advanceAssigment.getAdvanceMeasurements().toArray();
|
||||
for(int i=0; i < advanceMeasurements.length;i++){
|
||||
AdvanceMeasurement advance = (AdvanceMeasurement) advanceMeasurements[i];
|
||||
if(advance.getDate().compareTo(advanceMeasurementDTO.getDate()) < 0){
|
||||
neighbor=advance;
|
||||
return neighbor;
|
||||
}
|
||||
}
|
||||
return neighbor;
|
||||
}
|
||||
|
||||
private AdvanceMeasurement[] getOldNeighborsAdvanceMeasurement(
|
||||
AdvanceMeasurement advanceMeasurement){
|
||||
AdvanceMeasurement neighbors[] = {null,null};
|
||||
AdvanceAssigment advanceAssigment = advanceMeasurement.getAdvanceAssigment();
|
||||
Object[] advanceMeasurements = advanceAssigment.getAdvanceMeasurements().toArray();
|
||||
|
||||
for(int i=0; i < advanceMeasurements.length;i++){
|
||||
AdvanceMeasurement advance = (AdvanceMeasurement) advanceMeasurements[i];
|
||||
if(advance.equals(advanceMeasurement)){
|
||||
if(i > 0){
|
||||
neighbors[1]=((AdvanceMeasurement) advanceMeasurements[i-1]);
|
||||
}
|
||||
if(i < advanceMeasurements.length-1){
|
||||
neighbors[0]=((AdvanceMeasurement) advanceMeasurements[i+1]);
|
||||
}
|
||||
return neighbors;
|
||||
}
|
||||
}
|
||||
return neighbors;
|
||||
}
|
||||
|
||||
private void incrementLaterCalculatedAdvances(AdvanceMeasurement lessNeighbor,
|
||||
AdvanceMeasurementDTO greatNeighbor,
|
||||
AdvanceMeasurementDTO advanceMeasurementDTO,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
|
||||
BigDecimal incrementValue = calculateIncrementValue(lessNeighbor,advanceMeasurementDTO);
|
||||
|
||||
Date dateIni = advanceMeasurementDTO.getDate();
|
||||
Date dateFin = advanceMeasurementDTO.getDate();
|
||||
|
||||
for(AdvanceMeasurement indirectAdvanceMeasurement :
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements()){
|
||||
if((indirectAdvanceMeasurement.getDate().compareTo(dateIni) >= 0)
|
||||
&& (isIntoIntervalDateFin(greatNeighbor,dateFin,indirectAdvanceMeasurement))){
|
||||
indirectAdvanceMeasurement.setValue(indirectAdvanceMeasurement.
|
||||
getValue().add(incrementValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _decrementLaterCalculatedAdvances(AdvanceMeasurement lessNeighbor,
|
||||
AdvanceMeasurementDTO greatNeighbor,
|
||||
AdvanceMeasurement advanceMeasurement,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
|
||||
BigDecimal decrementValue = calculateDecrementValue(lessNeighbor,advanceMeasurement);
|
||||
|
||||
Date dateFin = advanceMeasurement.getDate();
|
||||
Date dateIni = advanceMeasurement.getDate();
|
||||
|
||||
for(AdvanceMeasurement indirectAdvanceMeasurement :
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements()){
|
||||
if((indirectAdvanceMeasurement.getDate().compareTo(dateIni) >= 0)
|
||||
&& (isIntoIntervalDateFin(greatNeighbor,dateFin,indirectAdvanceMeasurement))){
|
||||
indirectAdvanceMeasurement.setValue(
|
||||
indirectAdvanceMeasurement.getValue().subtract(decrementValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void decrementLaterCalculatedAdvances(AdvanceMeasurement[] neighbors
|
||||
,AdvanceMeasurement advanceMeasurement,
|
||||
AdvanceAssigment indirectAdvanceAssigment){
|
||||
|
||||
BigDecimal decrementValue = calculateDecrementValue(neighbors[0],advanceMeasurement);
|
||||
|
||||
Date dateFin = advanceMeasurement.getDate();
|
||||
Date dateIni = advanceMeasurement.getDate();
|
||||
|
||||
for(AdvanceMeasurement indirectAdvanceMeasurement :
|
||||
indirectAdvanceAssigment.getAdvanceMeasurements()){
|
||||
if((indirectAdvanceMeasurement.getDate().compareTo(dateIni) >= 0)
|
||||
&& (isIntoIntervalDateFin(neighbors[1],dateFin,indirectAdvanceMeasurement))){
|
||||
indirectAdvanceMeasurement.setValue(indirectAdvanceMeasurement.getValue().subtract(decrementValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isIntoIntervalDateFin(AdvanceMeasurementDTO neighbor,
|
||||
Date dateFin,AdvanceMeasurement advanceMeasurement){
|
||||
if(neighbor != null){
|
||||
dateFin = neighbor.getDate();
|
||||
if(advanceMeasurement.getDate().compareTo(dateFin) < 0) return true;
|
||||
else return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean isIntoIntervalDateFin(AdvanceMeasurement neighbor,
|
||||
Date dateFin,AdvanceMeasurement advanceMeasurement){
|
||||
if(neighbor != null){
|
||||
dateFin = neighbor.getDate();
|
||||
if(advanceMeasurement.getDate().compareTo(dateFin) < 0) return true;
|
||||
else return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private BigDecimal calculateIncrementValue(AdvanceMeasurement neighbor
|
||||
,AdvanceMeasurementDTO advanceMeasurementDTO){
|
||||
//Calculate the increment value
|
||||
BigDecimal incrementValue = advanceMeasurementDTO.getValue();
|
||||
if(neighbor != null){
|
||||
BigDecimal previousValue = neighbor.getValue();
|
||||
incrementValue = incrementValue.subtract(previousValue);
|
||||
}
|
||||
return incrementValue;
|
||||
}
|
||||
|
||||
private BigDecimal calculateDecrementValue(AdvanceMeasurement neighbor
|
||||
,AdvanceMeasurement advanceMeasurement){
|
||||
//Calculate the decrement value
|
||||
BigDecimal decrementValue = advanceMeasurement.getValue();
|
||||
if(neighbor != null){
|
||||
BigDecimal previousValue = neighbor.getValue();
|
||||
decrementValue = decrementValue.subtract(previousValue);
|
||||
}
|
||||
return decrementValue;
|
||||
|
||||
}
|
||||
|
||||
private BigDecimal getIncrementMaxValue(AdvanceAssigmentDTO advanceAssigmentDTO){
|
||||
BigDecimal incrementMaxValue= new BigDecimal(0);
|
||||
if((advanceAssigmentDTO.getIsNewDTO())
|
||||
|| (checkChangeTheAdvanceType(advanceAssigmentDTO))){
|
||||
incrementMaxValue = advanceAssigmentDTO.getMaxValue();
|
||||
}else{
|
||||
AdvanceAssigment advanceAssigment = advanceAssigmentDTO.getAdvanceAssigment();
|
||||
incrementMaxValue = advanceAssigmentDTO.getMaxValue().subtract(advanceAssigment.getMaxValue());
|
||||
}
|
||||
return incrementMaxValue;
|
||||
}
|
||||
|
||||
private AdvanceAssigment initNewCalculatedAdvanceAssigment(
|
||||
OrderElement orderElement,AdvanceAssigmentDTO advanceAssigmentDTO){
|
||||
//create AdvanceAssigment
|
||||
AdvanceAssigment newAdvanceAssigment = AdvanceAssigment.create(
|
||||
advanceAssigmentDTO.getReportGlobalAdvance(),new BigDecimal(0));
|
||||
newAdvanceAssigment.setAdvanceType(advanceAssigmentDTO.getAdvanceType());
|
||||
newAdvanceAssigment.setOrderElement(orderElement);
|
||||
newAdvanceAssigment.setType(AdvanceAssigment.Type.CALCULATED);
|
||||
|
||||
return newAdvanceAssigment;
|
||||
}
|
||||
|
||||
private AdvanceMeasurement findPreviousIndirectAdvanceMeasurement(
|
||||
Date date,AdvanceAssigment indirectAdvanceAssigment){
|
||||
Object[] arrayAdvanceMeasurements = indirectAdvanceAssigment.getAdvanceMeasurements().toArray();
|
||||
for(int i=0; i < arrayAdvanceMeasurements.length; i++){
|
||||
AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement)arrayAdvanceMeasurements[i];
|
||||
if(advanceMeasurement.getDate().compareTo(date) <= 0){
|
||||
return advanceMeasurement;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private AdvanceMeasurement findIndirectAdvanceMeasurement(
|
||||
Date date,AdvanceAssigment indirectAdvanceAssigment){
|
||||
Object[] arrayAdvanceMeasurements = indirectAdvanceAssigment.getAdvanceMeasurements().toArray();
|
||||
for(int i=0; i < arrayAdvanceMeasurements.length; i++){
|
||||
AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement)arrayAdvanceMeasurements[i];
|
||||
if(advanceMeasurement.getDate().compareTo(date) == 0){
|
||||
return advanceMeasurement;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private AdvanceAssigment findCalculatedAdvanceInParent(
|
||||
OrderElement orderElement, Long id){
|
||||
for(AdvanceAssigment oldAdvanceAssigment : orderElement.getAdvanceAssigments()){
|
||||
if(oldAdvanceAssigment.getAdvanceType().getId().equals(id))
|
||||
return oldAdvanceAssigment;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean checkChangeTheAdvanceType(AdvanceAssigmentDTO newAdvanceAssigmentDTO){
|
||||
AdvanceAssigment advanceAssigment = newAdvanceAssigmentDTO.getAdvanceAssigment();
|
||||
AdvanceType advanceType = advanceAssigment.getAdvanceType();
|
||||
AdvanceType advanceTypeDTO = newAdvanceAssigmentDTO.getAdvanceType();
|
||||
if((newAdvanceAssigmentDTO.getIsNewObject())
|
||||
&& (!advanceType.equals(advanceTypeDTO))) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPrecisionValid(BigDecimal value){
|
||||
if((this.advanceAssigmentDTO != null)
|
||||
&& (this.advanceAssigmentDTO.getAdvanceType() != null)){
|
||||
BigDecimal precision = this.advanceAssigmentDTO.getAdvanceType().getUnitPrecision();
|
||||
if ((this.advanceAssigment != null)
|
||||
&& (this.advanceAssigment.getAdvanceType() != null)) {
|
||||
BigDecimal precision = this.advanceAssigment.getAdvanceType()
|
||||
.getUnitPrecision();
|
||||
BigDecimal result[] = value.divideAndRemainder(precision);
|
||||
if(result[1].compareTo(BigDecimal.ZERO) == 0) return true;
|
||||
return false;
|
||||
|
|
@ -776,50 +301,42 @@ public class ManageOrderElementAdvancesModel implements
|
|||
|
||||
@Override
|
||||
public boolean greatThanMaxValue(BigDecimal value){
|
||||
if((this.advanceAssigmentDTO == null)
|
||||
||(this.advanceAssigmentDTO.getMaxValue() == null))
|
||||
if ((this.advanceAssigment == null)
|
||||
|| (this.advanceAssigment.getMaxValue() == null))
|
||||
return false;
|
||||
if(value.compareTo(this.advanceAssigmentDTO.getMaxValue())>0)
|
||||
if (value.compareTo(this.advanceAssigment.getMaxValue()) > 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDistinctValidDate(Date value,AdvanceMeasurementDTO newAdvanceMeasurementDTO){
|
||||
if(this.advanceAssigmentDTO == null) return true;
|
||||
int equalsDates = 0;
|
||||
for(AdvanceMeasurementDTO advanceMeasurementDTO
|
||||
: advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView()){
|
||||
Date oldDate = advanceMeasurementDTO.getDate();
|
||||
if((oldDate != null) && (!newAdvanceMeasurementDTO.equals(advanceMeasurementDTO))
|
||||
&& (oldDate.compareTo(value) == 0))
|
||||
return false;
|
||||
public boolean isDistinctValidDate(Date value,
|
||||
AdvanceMeasurement newAdvanceMeasurement) {
|
||||
if (this.advanceAssigment == null)
|
||||
return true;
|
||||
for (AdvanceMeasurement advanceMeasurement : advanceAssigment
|
||||
.getAdvanceMeasurements()) {
|
||||
Date oldDate = advanceMeasurement.getDate();
|
||||
if ((oldDate != null)
|
||||
&& (!newAdvanceMeasurement.equals(advanceMeasurement))
|
||||
&& (oldDate.compareTo(value) == 0))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getUnitPrecision(){
|
||||
if(this.advanceAssigmentDTO == null){
|
||||
if (this.advanceAssigment == null) {
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
return this.advanceAssigmentDTO.getAdvanceType().getUnitPrecision();
|
||||
return this.advanceAssigment.getAdvanceType().getUnitPrecision();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdvanceMeasurementDTO getFirstAdvanceMeasurement(AdvanceAssigmentDTO advanceAssigmentDTO){
|
||||
if((advanceAssigmentDTO != null) &&
|
||||
(advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView().size()>0)){
|
||||
final AdvanceMeasurementDTO advanceMeasurementDTO =
|
||||
(AdvanceMeasurementDTO) advanceAssigmentDTO.getAdvanceMeasurementDTOs().toListView().get(0);
|
||||
return advanceMeasurementDTO;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public AdvanceMeasurement getFirstAdvanceMeasurement(AdvanceAssigment advanceAssigment){
|
||||
if((advanceAssigment != null) &&
|
||||
(advanceAssigmentDTO.getAdvanceMeasurements().size()>0)){
|
||||
(advanceAssigment.getAdvanceMeasurements().size() > 0)) {
|
||||
SortedSet<AdvanceMeasurement> listAM = (SortedSet<AdvanceMeasurement>) advanceAssigment.getAdvanceMeasurements();
|
||||
final AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) listAM.first();
|
||||
return advanceMeasurement;
|
||||
|
|
@ -828,7 +345,37 @@ public class ManageOrderElementAdvancesModel implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public void modifyListAdvanceMeasurement(AdvanceMeasurementDTO advanceMeasurementDTO){
|
||||
this.advanceAssigmentDTO.getAdvanceMeasurementDTOs().modified(advanceMeasurementDTO);
|
||||
public void sortListAdvanceMeasurement() {
|
||||
ArrayList<AdvanceMeasurement> advanceMeasurements = new ArrayList<AdvanceMeasurement>(
|
||||
this.advanceAssigment.getAdvanceMeasurements());
|
||||
Collections.sort(advanceMeasurements,
|
||||
new AdvanceMeasurementComparator());
|
||||
TreeSet<AdvanceMeasurement> measurements = new TreeSet<AdvanceMeasurement>(
|
||||
new AdvanceMeasurementComparator());
|
||||
measurements.addAll(advanceMeasurements);
|
||||
this.advanceAssigment
|
||||
.setAdvanceMeasurements(measurements);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getPercentageAdvanceMeasurement(
|
||||
AdvanceMeasurement advanceMeasurement) {
|
||||
if (advanceMeasurement.getAdvanceAssigment() == null) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
BigDecimal maxValue = advanceMeasurement.getAdvanceAssigment()
|
||||
.getMaxValue();
|
||||
if (maxValue.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
BigDecimal value = advanceMeasurement.getValue();
|
||||
if (value == null) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
return value.divide(maxValue).multiply(new BigDecimal(100));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package org.navalplanner.web.orders;
|
||||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -32,8 +34,6 @@ import org.springframework.context.annotation.Scope;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
/**
|
||||
* Model for UI operations related to {@link Order}. <br />
|
||||
*
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
</button>
|
||||
<button label="${i18n:_('Remove')}"
|
||||
onClick="manageOrderElementAdvancesController.goToRemoveLineAdvanceAssigment();"
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurementDTOs}">
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurements}">
|
||||
</button>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<listbox id="editAdvances"
|
||||
model="@{manageOrderElementAdvancesController.advanceAssigmentDTOs}"
|
||||
model="@{manageOrderElementAdvancesController.advanceAssigments}"
|
||||
itemRenderer="@{manageOrderElementAdvancesController.advancesRenderer}" mold="paging"
|
||||
onSelect="manageOrderElementAdvancesController.prepareEditAdvanceMeasurements(self.selectedItem.value);"
|
||||
pageSize="10">
|
||||
|
|
@ -37,38 +37,23 @@
|
|||
<hbox>
|
||||
<button label="${i18n:_('Add new advance measurement')}"
|
||||
onClick="manageOrderElementAdvancesController.goToCreateLineAdvanceMeasurement();"
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurementDTOs}">
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurements}">
|
||||
</button>
|
||||
<button label="${i18n:_('Remove')}"
|
||||
onClick="manageOrderElementAdvancesController.goToRemoveLineAdvanceMeasurement();"
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurementDTOs}">
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurements}">
|
||||
</button>
|
||||
</hbox>
|
||||
<hbox>
|
||||
<listbox id="editAdvancesMeasurement"
|
||||
model="@{manageOrderElementAdvancesController.advanceMeasurementDTOs}"
|
||||
model="@{manageOrderElementAdvancesController.advanceMeasurements}"
|
||||
itemRenderer="@{manageOrderElementAdvancesController.advanceMeasurementRenderer}"
|
||||
mold="paging" pageSize="10">
|
||||
<listhead sizable="true">
|
||||
<listheader label="${i18n:_('Current value')}"/>
|
||||
<listheader label="${i18n:_('Percentage')}"/>
|
||||
<listheader label="${i18n:_('Date')}"/>
|
||||
</listhead>
|
||||
<listitem self="@{each='advanceMeasurementDTO'}" value="@{advanceMeasurementDTO}">
|
||||
<listcell>
|
||||
<decimalbox value="@{advanceMeasurementDTO.value, save-when='self.onChange'}"
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurementDTOs}"
|
||||
scale="2"
|
||||
onChange = "manageOrderElementAdvancesController.updatesValue(self);"
|
||||
constraint = "@{manageOrderElementAdvancesController.checkValidValue}"/>
|
||||
</listcell>
|
||||
<listcell label="@{advanceMeasurementDTO.percentage}" />
|
||||
<listcell>
|
||||
<datebox value="@{advanceMeasurementDTO.date, save-when='self.onChange'}"
|
||||
disabled = "@{manageOrderElementAdvancesController.isReadOnlyAdvanceMeasurementDTOs}"
|
||||
onChange = "manageOrderElementAdvancesController.setCurrentDate(self.parent.parent);"
|
||||
constraint = "@{manageOrderElementAdvancesController.checkValidDate}"/>
|
||||
</listcell>
|
||||
</listitem>
|
||||
</listbox>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue