Fix ricalcolo numCnf nelle regole dei doc nel caso in cui sia una UM di tipo imballo

This commit is contained in:
2024-10-07 13:23:02 +02:00
parent ff678bd97f
commit aab5f154b4
2 changed files with 19 additions and 9 deletions

View File

@@ -35,6 +35,7 @@ public class DocOrdUntMisRules extends QueryRules {
BigDecimal qta1 = entity.getQta(); BigDecimal qta1 = entity.getQta();
String untMis1 = entity.getUntMis(); String untMis1 = entity.getUntMis();
final String finalUntMis1 = untMis1;
BigDecimal qtaCnf = entity.getQtaCnf(); BigDecimal qtaCnf = entity.getQtaCnf();
if (mtbAart == null) { if (mtbAart == null) {
@@ -46,6 +47,10 @@ public class DocOrdUntMisRules extends QueryRules {
List<MtbUntMis> mtbUntMisArt = getUmArticolo(connection, codMart); List<MtbUntMis> mtbUntMisArt = getUmArticolo(connection, codMart);
boolean isEntityUMOfTipoImballo = mtbUntMisArt.stream()
.anyMatch(x -> x.getUntMis().equalsIgnoreCase(finalUntMis1) && x.getTipoUm() == MtbUntMis.TipoUM.UI);
if (UtilityString.isNullOrEmpty(untMis1)) { if (UtilityString.isNullOrEmpty(untMis1)) {
untMis1 = mtbAart.getUntMis(); untMis1 = mtbAart.getUntMis();
} }
@@ -74,7 +79,10 @@ public class DocOrdUntMisRules extends QueryRules {
} else { } else {
cifreDec = 0; cifreDec = 0;
} }
if (!UtilityBigDecimal.isNullOrZero(qtaCnf) && !UtilityBigDecimal.isNullOrZero(qta1)) {
if (isEntityUMOfTipoImballo && numCnf == null) {
numCnf = qta1;
} else if (!UtilityBigDecimal.isNullOrZero(qtaCnf) && !UtilityBigDecimal.isNullOrZero(qta1)) {
numCnf = qta1.divide(qtaCnf, cifreDec, RoundingMode.CEILING); numCnf = qta1.divide(qtaCnf, cifreDec, RoundingMode.CEILING);
} else { } else {
numCnf = BigDecimal.ZERO; numCnf = BigDecimal.ZERO;
@@ -82,7 +90,6 @@ public class DocOrdUntMisRules extends QueryRules {
} }
final String finalUntMis1 = untMis1;
Optional<MtbUntMis> optUM = Stream.of(mtbUntMisArt) Optional<MtbUntMis> optUM = Stream.of(mtbUntMisArt)
.filter(mtbUntMis -> mtbUntMis.getUntMis().equalsIgnoreCase(finalUntMis1)).findFirst(); .filter(mtbUntMis -> mtbUntMis.getUntMis().equalsIgnoreCase(finalUntMis1)).findFirst();
@@ -109,7 +116,7 @@ public class DocOrdUntMisRules extends QueryRules {
String untMis2 = null, untMis3 = null; String untMis2 = null, untMis3 = null;
BigDecimal qta2 = BigDecimal.ZERO, qta3 = BigDecimal.ZERO; BigDecimal qta2 = BigDecimal.ZERO, qta3 = BigDecimal.ZERO;
if (mtbUntMisList.size() > 0) { if (!mtbUntMisList.isEmpty()) {
if (mtbUntMisList.get(0).getOrdinamento() == 1) { if (mtbUntMisList.get(0).getOrdinamento() == 1) {
mtbUntMisList = Stream.of(mtbUntMisList).sorted(Comparator.comparingInt(MtbUntMis::getOrdinamento)).toList(); mtbUntMisList = Stream.of(mtbUntMisList).sorted(Comparator.comparingInt(MtbUntMis::getOrdinamento)).toList();
} }

View File

@@ -124,6 +124,9 @@ public class ExchangeDocumentImportService {
dataCount.addAndGet(allTestateData.size()); dataCount.addAndGet(allTestateData.size());
// allTestateData = allTestateData.stream()
// .filter(x -> ((DtbDoct)x).getNumDoc() == 2428 && ((DtbDoct)x).getSerDoc().equalsIgnoreCase("A1"))
// .collect(Collectors.toList());
for (EquatableEntityInterface dataToSave : allTestateData) { for (EquatableEntityInterface dataToSave : allTestateData) {
DtbDoct document = (DtbDoct) dataToSave; DtbDoct document = (DtbDoct) dataToSave;