Corretto calcolo qtaCnf in versamento diretto

This commit is contained in:
Valerio Castellana 2020-01-09 11:33:09 +01:00
parent 177958f114
commit 5fa7fa772d

View File

@ -95,7 +95,8 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
MtbColr mtbColr = mMtbColt.getMtbColr().get(0); MtbColr mtbColr = mMtbColt.getMtbColr().get(0);
BigDecimal residuoCol = mtbColr.getQtaCol(); BigDecimal residuoCol = mtbColr.getQtaCol();
BigDecimal residuoCnf = mtbColr.getNumCnf(); BigDecimal residuoCnf = mtbColr.getNumCnf();
BigDecimal offset = BigDecimal.ZERO.add(residuoCol); BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol);
BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf);
mtbColr.setQtaCnf(mtbColr.getQtaCol().divide(mtbColr.getNumCnf(),5,BigDecimal.ROUND_HALF_UP)); mtbColr.setQtaCnf(mtbColr.getQtaCol().divide(mtbColr.getNumCnf(),5,BigDecimal.ROUND_HALF_UP));
List<CheckableOrdineLavoro> ordiniSelezionati = getSelectedData(); List<CheckableOrdineLavoro> ordiniSelezionati = getSelectedData();
@ -103,23 +104,40 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
for (CheckableOrdineLavoro c : ordiniSelezionati) { for (CheckableOrdineLavoro c : ordiniSelezionati) {
BigDecimal usedCol, usedCnf; BigDecimal usedCol, usedCnf;
float perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr; float perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr;
if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissa())) { if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissa()) ){
usedCnf = residuoCnf.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_CEILING); usedCnf = residuoCnf.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
if (usedCnf.compareTo(BigDecimal.ZERO) <= 0 && offsetCnf.compareTo(BigDecimal.ZERO) > 0){
usedCnf = BigDecimal.ONE;
}
usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR); usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR);
} else { } else {
usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR); usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(0, BigDecimal.ROUND_CEILING); if (usedCol.compareTo(BigDecimal.ZERO) <= 0 && offsetCol.compareTo(BigDecimal.ZERO) > 0){
usedCol = BigDecimal.ONE;
}
usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(3, BigDecimal.ROUND_FLOOR);
} }
offset = offset.subtract(usedCol); offsetCol = offsetCol.subtract(usedCol);
offsetCnf = offsetCnf.subtract(usedCnf);
c.setQtaCol(usedCol.floatValue()); c.setQtaCol(usedCol.floatValue());
c.setNumCnf(usedCnf.floatValue()); c.setNumCnf(usedCnf.floatValue());
} }
if (ordiniSelezionati.size() > 0 && offset.floatValue() != 0) { if (ordiniSelezionati.size() > 0) {
CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get(); CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get();
if (majorOrder == null) { if (majorOrder == null) {
majorOrder = ordiniSelezionati.get(0); majorOrder = ordiniSelezionati.get(0);
} }
majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offset.floatValue()); if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){
if ( SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissa())) {
majorOrder.setNumCnf(majorOrder.getNumCnf().get() + offsetCnf.floatValue());
majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue());
} else {
majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue());
majorOrder.setNumCnf(majorOrder.getQtaCol().get() / mtbColr.getQtaCnf().floatValue());
}
}
} }
} }