Fix recalc posizione viaggi ed aggiunto controllo ord L già creato in saveProductionPlan

This commit is contained in:
2024-07-23 16:26:18 +02:00
parent 8586308fde
commit 6fd6431f7e
2 changed files with 52 additions and 13 deletions

View File

@@ -852,19 +852,19 @@ public class SalesRules extends QueryRules {
Boolean ret = false; Boolean ret = false;
String query = String query =
Query.format( Query.format(
"SELECT TOP 1 cod_promo, " + "SELECT TOP 1 cod_promo, " +
"data_iniz, " + "data_iniz, " +
"data_fine, " + "data_fine, " +
"versione " + "versione " +
" FROM dbo.getPromozioneVendita( %s, %s, %s , null, %s) " + " FROM dbo.getPromozioneVendita( %s, %s, %s , null, %s) " +
" WHERE tipo_variazione <> 'D' AND" + " WHERE tipo_variazione <> 'D' AND" +
" versione <> %s", " versione <> %s",
entity.getDataIniz(), entity.getDataIniz(),
entity.getDataFine(), entity.getDataFine(),
entity.getCodVlis(), entity.getCodVlis(),
entity.getCodMart(), entity.getCodMart(),
entity.getVersione()==null?0:entity.getVersione() entity.getVersione() == null ? 0 : entity.getVersione()
); );
HashMap<String, Object> datiPromo = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query); HashMap<String, Object> datiPromo = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query);
if (UtilityHashMap.isPresent(datiPromo)) { if (UtilityHashMap.isPresent(datiPromo)) {
@@ -1175,11 +1175,29 @@ public class SalesRules extends QueryRules {
return; return;
} }
int indexOfLastPosizione = viaggiGiorno.indexOf(viaggiGiorno.stream() VtbViaggi lastDataViaggio = viaggiGiorno.stream()
.filter(viaggio -> !viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio()) && Objects.equals(viaggio.getPosizione(), vtbViaggi.getPosizione())).findFirst().orElse(null)); .filter(viaggio -> viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio()))
.findFirst().orElse(null);
if (indexOfLastPosizione != -1) { if (lastDataViaggio != null) {
viaggiGiorno.add(indexOfLastPosizione, vtbViaggi); viaggiGiorno.remove(lastDataViaggio);
}
int indexOfViaggioConNuovaPos = viaggiGiorno.indexOf(viaggiGiorno.stream()
.filter(viaggio -> viaggio.getPosizione().equals(vtbViaggi.getPosizione())).findFirst().orElse(null));
if (indexOfViaggioConNuovaPos != -1) {
if (lastDataViaggio != null && vtbViaggi.getPosizione() > lastDataViaggio.getPosizione()) {
indexOfViaggioConNuovaPos += 1;
}
viaggiGiorno.add(indexOfViaggioConNuovaPos, vtbViaggi);
} else {
viaggiGiorno.add(vtbViaggi);
viaggiGiorno = Stream.of(viaggiGiorno)
.sortBy(VtbViaggi::getPosizione)
.toList();
} }
Stream.of(viaggiGiorno) Stream.of(viaggiGiorno)

View File

@@ -302,6 +302,27 @@ public class ProductionPlanService {
} }
ordLavDTO.setPartite(saveProductionPlanDTO.getPartite()); ordLavDTO.setPartite(saveProductionPlanDTO.getPartite());
sql = Query.format(
"SELECT num_ord, qta_prod\n" +
"FROM dtb_ordt\n" +
"WHERE cod_jcom = %s\n" +
" AND cod_prod = %s",
saveProductionPlanDTO.getCodJcom(),
saveProductionPlanDTO.getCodProd()
);
if (numOrdL == null || numOrdL == 0) {
HashMap<String, Object> ordData = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql);
if (ordData != null) {
numOrdL = UtilityHashMap.getValueIfExists(ordData, "num_ord");
qtaProd = (qtaProd != null ? qtaProd : BigDecimal.ZERO)
.add(UtilityHashMap.getValueIfExists(ordData, "qta_prod"));
}
}
if (numOrdL == null || numOrdL == 0) { if (numOrdL == null || numOrdL == 0) {
operation = OperationType.INSERT; operation = OperationType.INSERT;