diff --git a/IntegryManagementSystem.ipr b/IntegryManagementSystem.ipr
index 9a0bed07d6..1bcf9bc02d 100644
--- a/IntegryManagementSystem.ipr
+++ b/IntegryManagementSystem.ipr
@@ -549,7 +549,6 @@
-
@@ -900,6 +899,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java b/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java
index f2d20fb4b2..5eea7ea123 100644
--- a/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java
+++ b/ems-core/src/main/java/it/integry/ems/migration/_base/BaseMigration.java
@@ -5,7 +5,9 @@ import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.utility.UtilityDebug;
+import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
+import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import org.apache.logging.log4j.LogManager;
@@ -67,6 +69,11 @@ public abstract class BaseMigration implements MigrationModelInterface {
return val != null && val == 1;
}
+ protected void renameColumn(Connection connection, String tableName, String oldColumnname, String newColumnName) throws SQLException {
+ String sql = "exec sp_rename 'dbo." + tableName + "." + oldColumnname + "', " + newColumnName + ", 'COLUMN'";
+ executeStatement(connection, sql);
+ }
+
protected boolean existsTable(Connection connection, String tableName) throws SQLException {
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) AS exist FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N%s", tableName);
@@ -102,4 +109,34 @@ public abstract class BaseMigration implements MigrationModelInterface {
String dropSql = "DROP TABLE " + tableName;
executeStatement(connection, dropSql);
}
+
+
+
+
+
+ protected void createSetup(Connection connection, String gestName, String section, String keySection, String value, String description, String codQuery) throws Exception {
+ StbGestSetup stbGestSetup = new StbGestSetup()
+ .setGestName(gestName)
+ .setSection(section)
+ .setKeySection(keySection)
+ .setValue(value)
+ .setDescription(description)
+ .setQueryDefault(codQuery);
+
+ stbGestSetup.setOperation(OperationType.INSERT);
+
+ stbGestSetup.manageWithParentConnection(connection);
+ }
+
+
+
+ protected void deleteSetup(Connection connection, String gestName, String section, String keySection) throws Exception {
+ StbGestSetup stbGestSetup = new StbGestSetup()
+ .setGestName(gestName)
+ .setSection(section)
+ .setKeySection(keySection);
+
+ stbGestSetup.setOperation(OperationType.DELETE);
+ stbGestSetup.manageWithParentConnection(connection);
+ }
}
diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240219094933.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240219094933.java
new file mode 100644
index 0000000000..b7c058bff3
--- /dev/null
+++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240219094933.java
@@ -0,0 +1,24 @@
+package it.integry.ems.migration.model;
+
+import it.integry.ems.migration._base.BaseMigration;
+import it.integry.ems.migration._base.MigrationModelInterface;
+
+public class Migration_20240219094933 extends BaseMigration implements MigrationModelInterface {
+
+ @Override
+ public void up() throws Exception {
+ if (isHistoryDB())
+ return;
+
+ String sql = "ALTER TABLE mtb_colt\n" +
+ " ADD barcode_ul VARCHAR(20)";
+
+ executeStatement(advancedDataSource.getConnection(), sql);
+ }
+
+ @Override
+ public void down() throws Exception {
+
+ }
+
+}
diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240219103840.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240219103840.java
new file mode 100644
index 0000000000..671f5011b6
--- /dev/null
+++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240219103840.java
@@ -0,0 +1,23 @@
+package it.integry.ems.migration.model;
+
+import it.integry.ems.migration._base.BaseMigration;
+import it.integry.ems.migration._base.MigrationModelInterface;
+
+public class Migration_20240219103840 extends BaseMigration implements MigrationModelInterface {
+
+ @Override
+ public void up() throws Exception {
+ if (isHistoryDB())
+ return;
+
+ createSetup(advancedDataSource.getConnection(),
+ "PICKING", "ACCETTAZIONE", "FLAG_ALLOW_BARCODE_FORNITORE", "N",
+ "Abilita la possibilità di effettuare l'accettazione merci utilizzando direttamente l'SSCC del fornitore (salvato poi nella colonna barcode_pedana)",
+ "SI_NO");
+ }
+
+ @Override
+ public void down() throws Exception {
+
+ }
+}
diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java
index 223796d469..916a821dde 100644
--- a/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java
+++ b/ems-core/src/main/java/it/integry/ems_model/entity/MtbColt.java
@@ -8,7 +8,6 @@ import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString;
-import org.apache.commons.lang3.StringUtils;
import org.kie.api.definition.type.PropertyReactive;
import java.math.BigDecimal;
@@ -162,6 +161,9 @@ public class MtbColt extends EntityBase {
@SqlField("id_lotto")
private Integer idLotto;
+ @SqlField(value = "barcode_ul", nullable = true, maxLength = 20)
+ private String barcodeUl;
+
private String insPartitaMag;
private transient String stpPrz;
@@ -610,6 +612,15 @@ public class MtbColt extends EntityBase {
return this;
}
+ public String getBarcodeUl() {
+ return barcodeUl;
+ }
+
+ public MtbColt setBarcodeUl(String barcodeUl) {
+ this.barcodeUl = barcodeUl;
+ return this;
+ }
+
public List getMtbColr() {
return mtbColr;
}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/controller/PvmController.java b/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/controller/PvmController.java
index 13777a2994..4883136eb9 100644
--- a/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/controller/PvmController.java
+++ b/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/controller/PvmController.java
@@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.JsonNode;
import it.integry.common.var.CommonConstants;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.product.dto.TipoCosto;
-import it.integry.ems.report.dto.ReportTypeDTO;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.FileItem;
import it.integry.ems.response.ServiceRestResponse;
@@ -20,7 +19,6 @@ import it.integry.ems.user.UserSession;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.config.EmsRestConstants;
-import it.integry.ems_model.entity.DtbOrdt;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.entity.NtbRapr;
import it.integry.ems_model.entity._enum.GestioneEnum;
@@ -493,9 +491,9 @@ public class PvmController {
@RequestParam(value = "codProd", required = false) String codProd,
@RequestParam(value = "dataValidita", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataValidita,
@RequestParam(value = "codVlis", required = false) String codVlis) throws Exception {
- if (dataValidita == null) {
+
+ if (dataValidita == null)
dataValidita = new Date();
- }
return ServiceRestResponse.createPositiveResponse(pvmService.getCostoProdottoDatiCommerciali(codProd, dataValidita.toInstant(), codVlis));
}
@@ -507,19 +505,11 @@ public class PvmController {
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam String codBarreCollo,
@RequestParam(required = false, defaultValue = "false") boolean onlyResiduo,
- @RequestParam(required = false, defaultValue = "true") boolean throwExcIfNull) {
- ServiceRestResponse response;
- try {
- MtbColt collo = pvmService.getColloByBarcode(codBarreCollo, onlyResiduo);
+ @RequestParam(required = false, defaultValue = "true") boolean throwExcIfNull) throws Exception {
- if (collo == null && throwExcIfNull) throw new Exception("Nessun bancale trovato");
-
- response = ServiceRestResponse.createPositiveResponse((Object) collo);
- } catch (Exception e) {
- logger.error(request.getRequestURI(), e);
- response = new ServiceRestResponse(EsitoType.KO, configuration, e);
- }
- return response;
+ MtbColt collo = pvmService.getColloByBarcode(codBarreCollo, onlyResiduo);
+ if (collo == null && throwExcIfNull) throw new Exception("Nessun bancale trovato");
+ return ServiceRestResponse.createPositiveResponse(collo);
}
@RequestMapping(value = EmsRestConstants.PATH_GET_COLLO_IN_GIAC, method = RequestMethod.POST)
@@ -529,20 +519,12 @@ public class PvmController {
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam(required = false, defaultValue = "false") boolean onlyResiduo,
@RequestParam(required = false, defaultValue = "true") boolean throwExcIfNull,
- @RequestBody MtbColt mtbColt) {
+ @RequestBody MtbColt mtbColt) throws Exception {
- ServiceRestResponse response;
- try {
- MtbColt collo = pvmService.getColloInGiac(mtbColt, onlyResiduo);
+ MtbColt collo = pvmService.getColloInGiac(mtbColt, onlyResiduo);
+ if (collo == null && throwExcIfNull) throw new Exception("Nessun bancale trovato");
- if (collo == null && throwExcIfNull) throw new Exception("Nessun bancale trovato");
-
- response = ServiceRestResponse.createPositiveResponse((Object) collo);
- } catch (Exception e) {
- logger.error(request.getRequestURI(), e);
- response = new ServiceRestResponse(EsitoType.KO, configuration, e);
- }
- return response;
+ return ServiceRestResponse.createPositiveResponse(collo);
}
@RequestMapping(value = EmsRestConstants.PATH_GET_COLLI_IN_BASKET, method = RequestMethod.GET)
@@ -550,15 +532,9 @@ public class PvmController {
ServiceRestResponse getColliInBasket(
HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
- @RequestParam(required = false) String codMdep) {
- ServiceRestResponse response;
- try {
- response = ServiceRestResponse.createPositiveResponse(pvmService.getColliInBasket(codMdep));
- } catch (Exception e) {
- logger.error(request.getRequestURI(), e);
- response = new ServiceRestResponse(EsitoType.KO, configuration, e);
- }
- return response;
+ @RequestParam(required = false) String codMdep) throws Exception {
+
+ return ServiceRestResponse.createPositiveResponse(pvmService.getColliInBasket(codMdep));
}
@RequestMapping(value = EmsRestConstants.PATH_CREA_RAPPORTINO_FG_PVM, method = RequestMethod.POST)
@@ -566,12 +542,11 @@ public class PvmController {
List creaRapportinoFgPvm(HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam("dataRapp") Date dataRapp,
- @RequestParam("codMdep") String codMdep
- ) {
+ @RequestParam("codMdep") String codMdep) {
List listResponse = new ArrayList();
try {
List entityList = pvmRapportiniFgService.creaRappParziali(dataRapp, codMdep);
- if (entityList != null && entityList.size() > 0) {
+ if (entityList != null && !entityList.isEmpty()) {
listResponse = UtilityEntity.toServiceRestResponse(entityList);
} else {
listResponse.add(new ServiceRestResponse(EsitoType.OK));
@@ -776,7 +751,7 @@ public class PvmController {
@RequestMapping(value = "popolaGiancezaDaInventario", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse popolaGiancezaDaInventario(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
- @RequestParam (required = false) String codMdep) throws Exception {
+ @RequestParam(required = false) String codMdep) throws Exception {
try {
giacenzaService.popolaGiancezaDaInventario(codMdep);
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java b/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java
index 42efb857a3..80e5dd3a2e 100644
--- a/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java
+++ b/ems-engine/src/main/java/it/integry/ems/retail/pvmRetail/service/PvmService.java
@@ -2247,91 +2247,95 @@ public class PvmService {
public MtbColt getColloByBarcode(String codBarreCollo, boolean onlyResiduo) throws Exception {
- HashMap datiCollo = new HashMap<>();
- if (codBarreCollo.startsWith("U")) {
- datiCollo.put("gestione", null);
- datiCollo.put("anno", Integer.parseInt(codBarreCollo.substring(1, 3)));
- datiCollo.put("num", Integer.parseInt(codBarreCollo.substring(3, 10)));
+ MtbColt mtbColt = getColloByExternalBarcode(codBarreCollo);
- if (codBarreCollo.length() > 10) {
- datiCollo.put("serie", codBarreCollo.substring(10));
- } else {
- datiCollo.put("serie", "UL");
- }
+ if(mtbColt == null) {
+ HashMap datiCollo = new HashMap<>();
+ if (codBarreCollo.startsWith("U")) {
+ datiCollo.put("gestione", null);
+ datiCollo.put("anno", Integer.parseInt(codBarreCollo.substring(1, 3)));
+ datiCollo.put("num", Integer.parseInt(codBarreCollo.substring(3, 10)));
- } else {
- datiCollo = new HashMap<>();
-
- codBarreCollo = codBarreCollo.substring(0, codBarreCollo.length() - 1); //Rimuovo il check digit finale
-
- datiCollo.put("num", Integer.parseInt(codBarreCollo.substring(codBarreCollo.length() - 5, codBarreCollo.length())));
- datiCollo.put("anno", Integer.parseInt(codBarreCollo.substring(codBarreCollo.length() - 7, codBarreCollo.length() - 5)));
- int gestioneInt = Integer.parseInt("" + codBarreCollo.charAt(codBarreCollo.length() - 8));
-
- int numMultiplier = 0;
- if (codBarreCollo.length() >= 9) {
- numMultiplier = Integer.parseInt("" + codBarreCollo.charAt(codBarreCollo.length() - 9)) * 100000;
- }
-
-
- datiCollo.put("num", ((Integer) datiCollo.get("num")) + numMultiplier);
-
- String gestione;
-
- try {
- switch (gestioneInt) {
- case 1:
- gestione = "A";
- break;
- case 2:
- gestione = "L";
- break;
- case 3:
- gestione = "V";
- break;
- default:
- throw new Exception("Il collo letto ha un errore nella gestione");
+ if (codBarreCollo.length() > 10) {
+ datiCollo.put("serie", codBarreCollo.substring(10));
+ } else {
+ datiCollo.put("serie", "UL");
}
- } catch (Exception ex) {
- throw new Exception("Il collo letto ha un errore nella gestione");
+
+
+ } else {
+ datiCollo = new HashMap<>();
+
+ codBarreCollo = codBarreCollo.substring(0, codBarreCollo.length() - 1); //Rimuovo il check digit finale
+
+ datiCollo.put("num", Integer.parseInt(codBarreCollo.substring(codBarreCollo.length() - 5, codBarreCollo.length())));
+ datiCollo.put("anno", Integer.parseInt(codBarreCollo.substring(codBarreCollo.length() - 7, codBarreCollo.length() - 5)));
+ int gestioneInt = Integer.parseInt("" + codBarreCollo.charAt(codBarreCollo.length() - 8));
+
+ int numMultiplier = 0;
+ if (codBarreCollo.length() >= 9) {
+ numMultiplier = Integer.parseInt("" + codBarreCollo.charAt(codBarreCollo.length() - 9)) * 100000;
+ }
+
+
+ datiCollo.put("num", ((Integer) datiCollo.get("num")) + numMultiplier);
+
+ String gestione;
+
+ try {
+ switch (gestioneInt) {
+ case 1:
+ gestione = "A";
+ break;
+ case 2:
+ gestione = "L";
+ break;
+ case 3:
+ gestione = "V";
+ break;
+ default:
+ throw new Exception("Il collo letto ha un errore nella gestione");
+ }
+ } catch (Exception ex) {
+ throw new Exception("Il collo letto ha un errore nella gestione");
+ }
+
+ datiCollo.put("gestione", gestione);
+ datiCollo.put("serie", "/");
}
- datiCollo.put("gestione", gestione);
- datiCollo.put("serie", "/");
+ String query;
+
+ String whereCondGestione = "";
+
+ if (datiCollo.containsKey("gestione") && datiCollo.get("gestione") != null) {
+ whereCondGestione = " gestione = " + UtilityDB.valueToString(datiCollo.get("gestione")) + " AND ";
+ }
+
+ query = "SELECT * "
+ + "FROM mtb_colt "
+ + "WHERE "
+ + whereCondGestione
+ + " num_collo = " + UtilityDB.valueToString(datiCollo.get("num")) + " AND "
+ + " RIGHT(YEAR(data_collo), 2) = " + UtilityDB.valueToString(datiCollo.get("anno")) + " AND "
+ + " ser_collo = " + UtilityDB.valueToString(datiCollo.get("serie"));
+
+
+ mtbColt = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbColt.class);
}
- MtbColt mtbColt;
- String query;
-
- String whereCondGestione = "";
-
- if (datiCollo.containsKey("gestione") && datiCollo.get("gestione") != null) {
- whereCondGestione = " gestione = " + UtilityDB.valueToString(datiCollo.get("gestione")) + " AND ";
- }
-
- query = "SELECT * "
- + "FROM mtb_colt "
- + "WHERE "
- + whereCondGestione
- + " num_collo = " + UtilityDB.valueToString(datiCollo.get("num")) + " AND "
- + " RIGHT(YEAR(data_collo), 2) = " + UtilityDB.valueToString(datiCollo.get("anno")) + " AND "
- + " ser_collo = " + UtilityDB.valueToString(datiCollo.get("serie"));
-
- PreparedStatement ps = multiDBTransactionManager.getPrimaryDatasource().getConnection().prepareStatement(query);
- ResultSet rs = ps.executeQuery();
-
- ResultSetMapper rsMapper = new ResultSetMapper();
- mtbColt = rsMapper.mapResultSetToObject(rs, MtbColt.class);
-
- rs.close();
- ps.close();
-
- if (mtbColt == null) return mtbColt;
+ if (mtbColt == null) return null;
else return getColloInGiac(mtbColt, onlyResiduo);
}
+ private MtbColt getColloByExternalBarcode(String barcode) throws Exception {
+ String sql = Query.format("SELECT * FROM " + MtbColt.ENTITY +
+ " WHERE barcode_ul = %s", barcode);
+
+ return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbColt.class);
+ }
public MtbColt getColloInGiac(MtbColt mtbColt, boolean onlyResiduo) throws Exception {
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/service/WMSAccettazioneService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/service/WMSAccettazioneService.java
index c458f85027..3bb7dc15ee 100644
--- a/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/service/WMSAccettazioneService.java
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/accettazione/service/WMSAccettazioneService.java
@@ -94,6 +94,7 @@ public class WMSAccettazioneService {
.setPosizione(UtilityString.isNullOrEmpty(createUDCRequestDTO.getPosizione()) ? defaultPosizioneColliAccettazione : createUDCRequestDTO.getPosizione())
.setCodTcol(createUDCRequestDTO.getCodTcol())
.setAnnotazioni(createUDCRequestDTO.getAnnotazioni())
+ .setBarcodeUl(createUDCRequestDTO.getBarcodeUl())
.setSegno(1);
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/dto/CreateUDCRequestDTO.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/dto/CreateUDCRequestDTO.java
index 2a273c9a71..e6737b5ea7 100644
--- a/ems-engine/src/main/java/it/integry/ems/retail/wms/dto/CreateUDCRequestDTO.java
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/dto/CreateUDCRequestDTO.java
@@ -14,6 +14,8 @@ public class CreateUDCRequestDTO {
private String annotazioni;
+ private String barcodeUl;
+
private List orders;
@@ -71,6 +73,15 @@ public class CreateUDCRequestDTO {
return this;
}
+ public String getBarcodeUl() {
+ return barcodeUl;
+ }
+
+ public CreateUDCRequestDTO setBarcodeUl(String barcodeUl) {
+ this.barcodeUl = barcodeUl;
+ return this;
+ }
+
public List getOrders() {
return orders;
}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java
index f692988653..dc028fa20d 100644
--- a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java
@@ -469,6 +469,7 @@ public class WMSLavorazioneService {
.setPosizione(UtilityString.isNull(createUDCRequestDTO.getPosizione(), defaultPosizioneColliAccettazione))
.setCodTcol(createUDCRequestDTO.getCodTcol())
.setAnnotazioni(createUDCRequestDTO.getAnnotazioni())
+ .setBarcodeUl(createUDCRequestDTO.getBarcodeUl())
.setSegno(1);