diff --git a/.idea/jenkinsSettings.xml b/.idea/jenkinsSettings.xml
new file mode 100644
index 0000000000..53b279ca7d
--- /dev/null
+++ b/.idea/jenkinsSettings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240419120149.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240419120149.java
new file mode 100644
index 0000000000..5e1fc00751
--- /dev/null
+++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240419120149.java
@@ -0,0 +1,25 @@
+package it.integry.ems.migration.model;
+
+import it.integry.ems.migration._base.BaseMigration;
+import it.integry.ems.migration._base.MigrationModelInterface;
+
+public class Migration_20240419120149 extends BaseMigration implements MigrationModelInterface {
+
+ @Override
+ public void up() throws Exception {
+ if (isHistoryDB())
+ return;
+
+
+ createSetupQuery("COD_DTIP", "COD_DTIP", "SELECT COD_DTIP FROM DTB_TIPI ORDER BY 1", false);
+ createSetup("PICKING", "IMBALLI", "COD_DTIP_CARICO", null, "Codice documento che identifica il carico degli imballi", false, "COD_DTIP", false, false, false, false, false, null, false, "SELECT COD_DTIP FROM DTB_TIPI ORDER BY 1");
+ createSetupQuery("COD_DTIP", "COD_DTIP", "SELECT COD_DTIP FROM DTB_TIPI ORDER BY 1", false);
+ createSetup("PICKING", "IMBALLI", "COD_DTIP_SCARICO", null, "Codice documento che identifica lo scarico degli imballi", false, "COD_DTIP", false, false, false, false, false, null, false, "SELECT COD_DTIP FROM DTB_TIPI ORDER BY 1");
+ }
+
+ @Override
+ public void down() throws Exception {
+
+ }
+
+}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSImballiService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSImballiService.java
deleted file mode 100644
index 12434d78ed..0000000000
--- a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSImballiService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package it.integry.ems.retail.wms.generic.service;
-
-
-import it.integry.ems.retail.wms.generic.dto.AvailableCodMdepDTO;
-import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
-import it.integry.ems_model.entity.MtbTcol;
-import it.integry.ems_model.utility.UtilityDB;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@Scope("request")
-public class WMSImballiService {
-
-
- private final Logger logger = LogManager.getLogger();
-
- @Autowired
- private MultiDBTransactionManager multiDBTransactionManager;
-
- public List retrieveAvailableTipiCollo() throws Exception {
- String query = "SELECT * FROM " + MtbTcol.ENTITY + " WHERE flag_UI_UL = 'UL'";
-
- return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbTcol.class);
- }
-
- public List retrieveAvailableTipiImballi() throws Exception {
- String query = "SELECT * FROM " + MtbTcol.ENTITY + " WHERE flag_UI_UL = 'UI'";
-
- return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbTcol.class);
- }
-
-}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSImballiController.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/controller/WMSImballiController.java
similarity index 56%
rename from ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSImballiController.java
rename to ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/controller/WMSImballiController.java
index 1879a1bdb9..9dc3e3f2f2 100644
--- a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSImballiController.java
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/controller/WMSImballiController.java
@@ -1,9 +1,10 @@
-package it.integry.ems.retail.wms.generic.controller;
+package it.integry.ems.retail.wms.imballi.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.response.ServiceRestResponse;
-import it.integry.ems.retail.wms.generic.service.WMSImballiService;
+import it.integry.ems.retail.wms.imballi.dto.RegistraCaricoImballiRequestDTO;
+import it.integry.ems.retail.wms.imballi.service.WMSImballiService;
import it.integry.ems_model.utility.UtilityString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
@@ -11,31 +12,39 @@ import org.springframework.web.bind.annotation.*;
@RestController
@Scope("request")
-@RequestMapping("wms/tipo-collo")
+@RequestMapping("wms/imballi")
public class WMSImballiController {
-
@Autowired
private WMSImballiService wmsImballiService;
-
-
@RequestMapping(value = "retrieve/{tipo}", method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse retrieve(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
@PathVariable String tipo) throws Exception {
- if(UtilityString.isNullOrEmpty(tipo))
+ if (UtilityString.isNullOrEmpty(tipo))
throw new Exception("Tipo non riconosciuto");
- if(tipo.equalsIgnoreCase("UI"))
+ if (tipo.equalsIgnoreCase("UI"))
return ServiceRestResponse.createPositiveResponse(wmsImballiService.retrieveAvailableTipiImballi());
- else if(tipo.equalsIgnoreCase("UL"))
+ else if (tipo.equalsIgnoreCase("UL"))
return ServiceRestResponse.createPositiveResponse(wmsImballiService.retrieveAvailableTipiCollo());
return ServiceRestResponse.createPositiveResponse();
}
+
+ @RequestMapping(value = "registraCarico", method = RequestMethod.POST)
+ public @ResponseBody
+ ServiceRestResponse registraCarico(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
+ @RequestBody RegistraCaricoImballiRequestDTO registraUsageImballiRequest) throws Exception {
+
+ wmsImballiService.registraCarico(registraUsageImballiRequest.getUsedImballi());
+ return ServiceRestResponse.createPositiveResponse();
+ }
+
+
}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/dto/ImballoQuantityDTO.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/dto/ImballoQuantityDTO.java
new file mode 100644
index 0000000000..13ae5fbcdf
--- /dev/null
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/dto/ImballoQuantityDTO.java
@@ -0,0 +1,25 @@
+package it.integry.ems.retail.wms.imballi.dto;
+
+public class ImballoQuantityDTO {
+
+ private String codMart;
+ private Integer qta;
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public ImballoQuantityDTO setCodMart(String codMart) {
+ this.codMart = codMart;
+ return this;
+ }
+
+ public Integer getQta() {
+ return qta;
+ }
+
+ public ImballoQuantityDTO setQta(Integer qta) {
+ this.qta = qta;
+ return this;
+ }
+}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/dto/RegistraCaricoImballiRequestDTO.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/dto/RegistraCaricoImballiRequestDTO.java
new file mode 100644
index 0000000000..9a6ad60511
--- /dev/null
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/dto/RegistraCaricoImballiRequestDTO.java
@@ -0,0 +1,17 @@
+package it.integry.ems.retail.wms.imballi.dto;
+
+import java.util.List;
+
+public class RegistraCaricoImballiRequestDTO {
+
+ private List usedImballi;
+
+ public List getUsedImballi() {
+ return usedImballi;
+ }
+
+ public RegistraCaricoImballiRequestDTO setUsedImballi(List usedImballi) {
+ this.usedImballi = usedImballi;
+ return this;
+ }
+}
diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/service/WMSImballiService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/service/WMSImballiService.java
new file mode 100644
index 0000000000..cd7821f037
--- /dev/null
+++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/imballi/service/WMSImballiService.java
@@ -0,0 +1,89 @@
+package it.integry.ems.retail.wms.imballi.service;
+
+
+import it.integry.ems.retail.wms.imballi.dto.ImballoQuantityDTO;
+import it.integry.ems.service.EntityProcessor;
+import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
+import it.integry.ems.user.UserSession;
+import it.integry.ems_model.entity.DtbDocr;
+import it.integry.ems_model.entity.DtbDoct;
+import it.integry.ems_model.entity.MtbDepo;
+import it.integry.ems_model.entity.MtbTcol;
+import it.integry.ems_model.service.SetupGest;
+import it.integry.ems_model.types.OperationType;
+import it.integry.ems_model.utility.UtilityDB;
+import it.integry.ems_model.utility.UtilityString;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Service
+@Scope("request")
+public class WMSImballiService {
+
+
+ private final Logger logger = LogManager.getLogger();
+
+ @Autowired
+ private SetupGest setupGest;
+
+ @Autowired
+ private EntityProcessor entityProcessor;
+
+ @Autowired
+ private MultiDBTransactionManager multiDBTransactionManager;
+
+ @Autowired
+ private UserSession userSession;
+
+ public List retrieveAvailableTipiCollo() throws Exception {
+ String query = "SELECT * FROM " + MtbTcol.ENTITY + " WHERE flag_UI_UL = 'UL'";
+
+ return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbTcol.class);
+ }
+
+ public List retrieveAvailableTipiImballi() throws Exception {
+ String query = "SELECT * FROM " + MtbTcol.ENTITY + " WHERE flag_UI_UL = 'UI'";
+
+ return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), query, MtbTcol.class);
+ }
+
+
+ public void registraCarico(List imballiToRegister) throws Exception {
+
+ final String codDtip = setupGest.getSetup("PICKING", "IMBALLI", "COD_DTIP_CARICO");
+
+ if(UtilityString.isNullOrEmpty(codDtip))
+ throw new Exception("E' necessario specificare un codice documento nelle configurazioni per poter procedere");
+
+ MtbDepo userDepo = userSession.getDefaultDepo();
+
+ DtbDoct documentoCarico = new DtbDoct()
+ .setCodAnag(userDepo.getCodAnag())
+ .setCodDtip(codDtip)
+ .setCodMdep(userDepo.getCodMdep())
+ .setDataDoc(new Date());
+
+ documentoCarico.setOperation(OperationType.INSERT);
+
+ for (ImballoQuantityDTO imballoQuantity : imballiToRegister) {
+ DtbDocr documentRow = new DtbDocr()
+ .setCodMart(imballoQuantity.getCodMart())
+ .setQtaDoc(BigDecimal.valueOf(imballoQuantity.getQta()));
+
+ documentRow.setOperation(OperationType.INSERT);
+
+ documentoCarico.getDtbDocr().add(documentRow);
+ }
+
+ entityProcessor.processEntity(documentoCarico, multiDBTransactionManager);
+ }
+
+
+}