Changed to BigDecimal units attribute in MaterialInfo class.
FEA: ItEr65S05DatabaseUpgradeItEr64S07
This commit is contained in:
parent
1cf39af380
commit
00fcf6f173
17 changed files with 76 additions and 60 deletions
|
|
@ -91,15 +91,15 @@ public class MaterialAssignment extends BaseEntity implements Comparable {
|
|||
getMaterialInfo().setMaterial(material);
|
||||
}
|
||||
|
||||
public Double getUnits() {
|
||||
public BigDecimal getUnits() {
|
||||
return getMaterialInfo().getUnits();
|
||||
}
|
||||
|
||||
public void setUnits(Double units) {
|
||||
public void setUnits(BigDecimal units) {
|
||||
getMaterialInfo().setUnits(units);
|
||||
}
|
||||
|
||||
public void setUnitsWithoutNullCheck(Double units) {
|
||||
public void setUnitsWithoutNullCheck(BigDecimal units) {
|
||||
this.materialInfo.setUnitsWithoutNullCheck(units);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -95,11 +95,11 @@ public class MaterialAssignmentTemplate extends BaseEntity implements
|
|||
getMaterialInfo().setMaterial(material);
|
||||
}
|
||||
|
||||
public Double getUnits() {
|
||||
public BigDecimal getUnits() {
|
||||
return getMaterialInfo().getUnits();
|
||||
}
|
||||
|
||||
public void setUnits(Double units) {
|
||||
public void setUnits(BigDecimal units) {
|
||||
getMaterialInfo().setUnits(units);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public class MaterialInfo {
|
|||
|
||||
private Material material;
|
||||
|
||||
private Double units = 0.0;
|
||||
private BigDecimal units = BigDecimal.ZERO;
|
||||
|
||||
private BigDecimal unitPrice = BigDecimal.ZERO;
|
||||
|
||||
|
|
@ -45,15 +45,15 @@ public class MaterialInfo {
|
|||
}
|
||||
|
||||
@NotNull(message = "units not specified")
|
||||
public Double getUnits() {
|
||||
public BigDecimal getUnits() {
|
||||
return units;
|
||||
}
|
||||
|
||||
public void setUnits(Double units) {
|
||||
this.units = units != null ? units : 0;
|
||||
public void setUnits(BigDecimal units) {
|
||||
this.units = units != null ? units : BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
public void setUnitsWithoutNullCheck(Double units) {
|
||||
public void setUnitsWithoutNullCheck(BigDecimal units) {
|
||||
this.units = units;
|
||||
}
|
||||
|
||||
|
|
@ -79,8 +79,7 @@ public class MaterialInfo {
|
|||
}
|
||||
|
||||
public BigDecimal getTotalPrice() {
|
||||
BigDecimal result = new BigDecimal(getUnits());
|
||||
return result.multiply(getUnitPrice());
|
||||
return getUnits().multiply(getUnitPrice());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -920,12 +920,12 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
materialAssignments.remove(materialAssignment);
|
||||
}
|
||||
|
||||
public double getTotalMaterialAssigmentUnits() {
|
||||
double result = 0;
|
||||
public BigDecimal getTotalMaterialAssigmentUnits() {
|
||||
BigDecimal result = BigDecimal.ZERO;
|
||||
|
||||
final Set<MaterialAssignment> materialAssigments = getMaterialAssignments();
|
||||
for (MaterialAssignment each: materialAssigments) {
|
||||
result += each.getUnits();
|
||||
result = result.add(each.getUnits());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public class TimeLineRequiredMaterialDTO{
|
|||
|
||||
private String name;
|
||||
|
||||
private Double units = 0.0;
|
||||
private BigDecimal units = BigDecimal.ZERO;
|
||||
|
||||
private BigDecimal unitPrice = BigDecimal.ZERO;
|
||||
|
||||
|
|
@ -145,11 +145,11 @@ public class TimeLineRequiredMaterialDTO{
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
public Double getUnits() {
|
||||
public BigDecimal getUnits() {
|
||||
return units;
|
||||
}
|
||||
|
||||
public void setUnits(Double units) {
|
||||
public void setUnits(BigDecimal units) {
|
||||
this.units = units;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -409,11 +409,11 @@ public abstract class OrderElementTemplate extends BaseEntity implements
|
|||
return result;
|
||||
}
|
||||
|
||||
public double getTotalMaterialAssigmentUnits() {
|
||||
double result = 0;
|
||||
public BigDecimal getTotalMaterialAssigmentUnits() {
|
||||
BigDecimal result = BigDecimal.ZERO;
|
||||
for (MaterialAssignmentTemplate each : materialAssignments) {
|
||||
if (each.getUnits() != null) {
|
||||
result += each.getUnits();
|
||||
result = result.add(each.getUnits());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -31,4 +31,16 @@
|
|||
</update>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="changed-type-of-units-in-material-info-to-big-decimal" author="mrego">
|
||||
<comment>MaterialInfo was using Double for units instead of BigDecimal</comment>
|
||||
<dropColumn tableName="material_assigment" columnName="units"/>
|
||||
<addColumn tableName="material_assigment">
|
||||
<column name="units" type="DECIMAL(19,2)"></column>
|
||||
</addColumn>
|
||||
<dropColumn tableName="material_assigment_template" columnName="units"/>
|
||||
<addColumn tableName="material_assigment_template">
|
||||
<column name="units" type="DECIMAL(19,2)"></column>
|
||||
</addColumn>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@ import org.zkoss.zk.ui.SuspendNotAllowedException;
|
|||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Doublebox;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Listbox;
|
||||
|
|
@ -60,6 +59,7 @@ import org.zkoss.zul.Treeitem;
|
|||
import org.zkoss.zul.TreeitemRenderer;
|
||||
import org.zkoss.zul.Treerow;
|
||||
import org.zkoss.zul.Vbox;
|
||||
import org.zkoss.zul.api.Decimalbox;
|
||||
import org.zkoss.zul.api.Textbox;
|
||||
import org.zkoss.zul.impl.MessageboxDlg;
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
|
|||
|
||||
public abstract TreeModel getAllMaterialCategories();
|
||||
|
||||
public abstract double getTotalUnits();
|
||||
public abstract BigDecimal getTotalUnits();
|
||||
|
||||
public abstract BigDecimal getTotalPrice();
|
||||
|
||||
|
|
@ -336,7 +336,7 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
|
|||
final MaterialCategory materialCategory = (MaterialCategory) node;
|
||||
|
||||
Label lblName = new Label(materialCategory.getName());
|
||||
Label lblUnits = new Label(new Double(getUnits(materialCategory)).toString());
|
||||
Label lblUnits = new Label(getUnits(materialCategory).toString());
|
||||
Label lblPrice = new Label(getPrice(materialCategory).toString());
|
||||
|
||||
Treerow tr = null;
|
||||
|
|
@ -365,7 +365,7 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
|
|||
cellPrice.setParent(tr);
|
||||
}
|
||||
|
||||
private double getUnits(MaterialCategory materialCategory) {
|
||||
private BigDecimal getUnits(MaterialCategory materialCategory) {
|
||||
return getModel().getUnits(materialCategory);
|
||||
}
|
||||
|
||||
|
|
@ -467,7 +467,8 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
|
|||
dialogSplitAssignment = (MessageboxDlg) Executions
|
||||
.createComponents("/orders/_splitMaterialAssignmentDlg.zul",
|
||||
self, args);
|
||||
Doublebox dbUnits = (Doublebox) dialogSplitAssignment.getFellowIfAny("dbUnits");
|
||||
Decimalbox dbUnits = (Decimalbox) dialogSplitAssignment
|
||||
.getFellowIfAny("dbUnits");
|
||||
dbUnits.setValue(getUnits(materialAssignment));
|
||||
try {
|
||||
dialogSplitAssignment.doModal();
|
||||
|
|
@ -491,14 +492,14 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
|
|||
* @param materialAssignment
|
||||
* @param units
|
||||
*/
|
||||
private void splitMaterialAssignment(A materialAssignment, double units) {
|
||||
private void splitMaterialAssignment(A materialAssignment, BigDecimal units) {
|
||||
A newAssignment = copyFrom(materialAssignment);
|
||||
double currentUnits = getUnits(materialAssignment);
|
||||
if (units > currentUnits) {
|
||||
BigDecimal currentUnits = getUnits(materialAssignment);
|
||||
if (units.compareTo(currentUnits) > 0) {
|
||||
units = currentUnits;
|
||||
currentUnits = 0;
|
||||
currentUnits = BigDecimal.ZERO;
|
||||
} else {
|
||||
currentUnits -= units;
|
||||
currentUnits = currentUnits.subtract(units);
|
||||
}
|
||||
setUnits(newAssignment, units);
|
||||
setUnits(materialAssignment, currentUnits);
|
||||
|
|
@ -506,11 +507,11 @@ public abstract class AssignedMaterialsController<T, A> extends GenericForwardCo
|
|||
reloadGridMaterials();
|
||||
}
|
||||
|
||||
protected abstract void setUnits(A assignment, double units);
|
||||
protected abstract void setUnits(A assignment, BigDecimal units);
|
||||
|
||||
protected abstract A copyFrom(A assignment);
|
||||
|
||||
protected abstract double getUnits(A assignment);
|
||||
protected abstract BigDecimal getUnits(A assignment);
|
||||
|
||||
private UnitTypeListRenderer unitTypeListRenderer = new UnitTypeListRenderer();
|
||||
|
||||
|
|
|
|||
|
|
@ -223,20 +223,21 @@ public abstract class AssignedMaterialsModel<T, A> implements
|
|||
}
|
||||
}
|
||||
|
||||
public double getUnits(MaterialCategory materialCategory) {
|
||||
double result = 0;
|
||||
@Override
|
||||
public BigDecimal getUnits(MaterialCategory materialCategory) {
|
||||
BigDecimal result = BigDecimal.ZERO;
|
||||
if (isInitialized()) {
|
||||
for (A each : getAssignments()) {
|
||||
final Material material = getMaterial(each);
|
||||
if (materialCategory.equals(material.getCategory())) {
|
||||
result += getUnits(each);
|
||||
result = result.add(getUnits(each));
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected abstract Double getUnits(A assigment);
|
||||
protected abstract BigDecimal getUnits(A assigment);
|
||||
|
||||
public BigDecimal getPrice(MaterialCategory category) {
|
||||
BigDecimal result = new BigDecimal(0);
|
||||
|
|
|
|||
|
|
@ -66,12 +66,13 @@ public class AssignedMaterialsToOrderElementController extends
|
|||
return assignedMaterialsToOrderElementModel.getAllMaterialCategories();
|
||||
}
|
||||
|
||||
public double getTotalUnits() {
|
||||
double result = 0;
|
||||
@Override
|
||||
public BigDecimal getTotalUnits() {
|
||||
BigDecimal result = BigDecimal.ZERO;
|
||||
|
||||
final OrderElement orderElement = getOrderElement();
|
||||
if (orderElement != null) {
|
||||
result = orderElement.getTotalMaterialAssigmentUnits();
|
||||
result = result.add(orderElement.getTotalMaterialAssigmentUnits());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -106,12 +107,11 @@ public class AssignedMaterialsToOrderElementController extends
|
|||
}
|
||||
|
||||
@Override
|
||||
protected double getUnits(MaterialAssignment assignment) {
|
||||
protected BigDecimal getUnits(MaterialAssignment assignment) {
|
||||
return assignment.getUnits();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUnits(MaterialAssignment assignment, double units) {
|
||||
protected void setUnits(MaterialAssignment assignment, BigDecimal units) {
|
||||
assignment.setUnits(units);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ public class AssignedMaterialsToOrderElementModel extends
|
|||
}
|
||||
|
||||
@Override
|
||||
protected Double getUnits(MaterialAssignment assigment) {
|
||||
protected BigDecimal getUnits(MaterialAssignment assigment) {
|
||||
return assigment.getUnits();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public interface IAssignedMaterialsModel<T, A> {
|
|||
|
||||
BigDecimal getPrice(MaterialCategory materialCategory);
|
||||
|
||||
double getUnits(MaterialCategory materialCategory);
|
||||
BigDecimal getUnits(MaterialCategory materialCategory);
|
||||
|
||||
void removeMaterialAssignment(A materialAssignment);
|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ public class AssignedMaterialsToOrderElementTemplateModel extends
|
|||
}
|
||||
|
||||
@Override
|
||||
protected Double getUnits(MaterialAssignmentTemplate assigment) {
|
||||
protected BigDecimal getUnits(MaterialAssignmentTemplate assigment) {
|
||||
return assigment.getUnits();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -91,19 +91,19 @@ public class TemplateMaterialsController extends
|
|||
}
|
||||
|
||||
@Override
|
||||
public double getTotalUnits() {
|
||||
public BigDecimal getTotalUnits() {
|
||||
OrderElementTemplate template = assignedMaterialsToOrderElementTemplateModel
|
||||
.getTemplate();
|
||||
if (template == null) {
|
||||
return 0;
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
return template.getTotalMaterialAssigmentUnits();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected double getUnits(MaterialAssignmentTemplate assignment) {
|
||||
protected BigDecimal getUnits(MaterialAssignmentTemplate assignment) {
|
||||
if (assignment.getUnits() == null) {
|
||||
return 0;
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
return assignment.getUnits();
|
||||
}
|
||||
|
|
@ -114,7 +114,8 @@ public class TemplateMaterialsController extends
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void setUnits(MaterialAssignmentTemplate assignment, double units) {
|
||||
protected void setUnits(MaterialAssignmentTemplate assignment,
|
||||
BigDecimal units) {
|
||||
assignment.setUnits(units);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class MaterialAssignmentDTO {
|
|||
public String materialCode;
|
||||
|
||||
@XmlAttribute
|
||||
public Double units;
|
||||
public BigDecimal units;
|
||||
|
||||
@XmlAttribute(name = "unit-price")
|
||||
public BigDecimal unitPrice;
|
||||
|
|
@ -49,7 +49,7 @@ public class MaterialAssignmentDTO {
|
|||
public MaterialAssignmentDTO() {
|
||||
}
|
||||
|
||||
public MaterialAssignmentDTO(String materialCode, Double units,
|
||||
public MaterialAssignmentDTO(String materialCode, BigDecimal units,
|
||||
BigDecimal unitPrice, XMLGregorianCalendar estimatedAvailability) {
|
||||
this.materialCode = materialCode;
|
||||
this.units = units;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<rows>
|
||||
<row>
|
||||
<label style="font-weight: bold" value="${i18n:_('Units')}:" width="150px" />
|
||||
<doublebox id="dbUnits" width="200px" />
|
||||
<decimalbox id="dbUnits" width="200px" />
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
|
|
|||
|
|
@ -629,7 +629,7 @@ public class OrderElementServiceTest {
|
|||
materialAssignmentDTO.materialCode = "material-code "
|
||||
+ UUID.randomUUID().toString();
|
||||
materialAssignmentDTO.unitPrice = BigDecimal.TEN;
|
||||
materialAssignmentDTO.units = 100.0;
|
||||
materialAssignmentDTO.units = BigDecimal.valueOf(100.0);
|
||||
orderDTO.materialAssignments.add(materialAssignmentDTO);
|
||||
|
||||
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
|
||||
|
|
@ -763,7 +763,7 @@ public class OrderElementServiceTest {
|
|||
orderDTO.initDate = DateConverter.toXMLGregorianCalendar(new Date());
|
||||
|
||||
MaterialAssignmentDTO materialAssignmentDTO = new MaterialAssignmentDTO(
|
||||
materialcode1, 100.0, BigDecimal.TEN, null);
|
||||
materialcode1, BigDecimal.valueOf(100.0), BigDecimal.TEN, null);
|
||||
orderDTO.materialAssignments.add(materialAssignmentDTO);
|
||||
|
||||
OrderListDTO orderListDTO = createOrderListDTO(orderDTO);
|
||||
|
|
@ -778,10 +778,11 @@ public class OrderElementServiceTest {
|
|||
orderElementDAO.flush();
|
||||
sessionFactory.getCurrentSession().evict(orderElement);
|
||||
|
||||
orderDTO.materialAssignments.iterator().next().units = 150.0;
|
||||
orderDTO.materialAssignments.iterator().next().units = BigDecimal
|
||||
.valueOf(150.0);
|
||||
|
||||
MaterialAssignmentDTO materialAssignmentDTO2 = new MaterialAssignmentDTO(
|
||||
materialcode2, 200.0, BigDecimal.ONE, null);
|
||||
materialcode2, BigDecimal.valueOf(200.0), BigDecimal.ONE, null);
|
||||
orderDTO.materialAssignments.add(materialAssignmentDTO);
|
||||
orderDTO.materialAssignments.add(materialAssignmentDTO2);
|
||||
|
||||
|
|
@ -797,8 +798,9 @@ public class OrderElementServiceTest {
|
|||
.getMaterialAssignments()) {
|
||||
assertThat(materialAssignment.getMaterial().getCode(), anyOf(
|
||||
equalTo(materialcode1), equalTo(materialcode2)));
|
||||
assertThat(materialAssignment.getUnits(), anyOf(equalTo(150.0),
|
||||
equalTo(200.0)));
|
||||
assertThat(materialAssignment.getUnits(), anyOf(equalTo(BigDecimal
|
||||
.valueOf(150.0).setScale(2)), equalTo(BigDecimal.valueOf(
|
||||
200.0).setScale(2))));
|
||||
assertThat(materialAssignment.getUnitPrice(), anyOf(
|
||||
equalTo(BigDecimal.TEN.setScale(2)), equalTo(BigDecimal.ONE
|
||||
.setScale(2))));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue