diff --git a/ems-core/src/main/java/it/integry/ems_model/base/EntityBase.java b/ems-core/src/main/java/it/integry/ems_model/base/EntityBase.java index e6f98774e0..a6c9edc322 100644 --- a/ems-core/src/main/java/it/integry/ems_model/base/EntityBase.java +++ b/ems-core/src/main/java/it/integry/ems_model/base/EntityBase.java @@ -937,6 +937,7 @@ public abstract class EntityBase implements Serializable, Cloneable, EntityInter final List childs = entityHolder.getEntityChildrenFields(getClass()); for (Field entityChildField : childs) { + entityChildField.setAccessible(true); Object entityChildRef = entityChildField.get(clonedEntity); if (entityChildRef instanceof List) { for (EntityBase entityChild : (List) entityChildRef) { diff --git a/ems-engine/src/main/java/it/integry/ems/order/Import/OrdiniImporter.java b/ems-engine/src/main/java/it/integry/ems/order/Import/OrdiniImporter.java index 5db0feb0c2..5126395e37 100644 --- a/ems-engine/src/main/java/it/integry/ems/order/Import/OrdiniImporter.java +++ b/ems-engine/src/main/java/it/integry/ems/order/Import/OrdiniImporter.java @@ -82,6 +82,9 @@ public class OrdiniImporter extends BaseEntityImporter> impleme case GSE: result = getContextBean(OrdiniImportService.class).importGSEOrder(type, format, requestDto); break; + case TOSCA: + result = getContextBean(OrdiniImportService.class).importOrdiniToscaExcel(type, format, requestDto); + break; default: throw new Exception("Tipo " + format + " non supportato"); @@ -111,7 +114,8 @@ public class OrdiniImporter extends BaseEntityImporter> impleme MAGENTO("MAGENTO"), EURITMO("EURITMO"), GS("GS"), - GSE("GSE"); + GSE("GSE"), + TOSCA("TOSCA"); private String text; diff --git a/ems-engine/src/main/java/it/integry/ems/order/Import/service/OrdiniImportService.java b/ems-engine/src/main/java/it/integry/ems/order/Import/service/OrdiniImportService.java index 9f5b03937a..fc45b7cf15 100644 --- a/ems-engine/src/main/java/it/integry/ems/order/Import/service/OrdiniImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/order/Import/service/OrdiniImportService.java @@ -275,4 +275,10 @@ public class OrdiniImportService { return entityBases; } + + public List importOrdiniToscaExcel(String type, String format, ImportRequestDTO requestDTO) throws Exception { + Connection conn = multiDBTransactionManager.getPrimaryConnection(); + HashMap setup = setupGest.getImportSetupSection(conn, type, format); + return new ArrayList<>(); + } } diff --git a/ems-engine/src/main/java/it/integry/ems/production/controller/ProductionController.java b/ems-engine/src/main/java/it/integry/ems/production/controller/ProductionController.java index 9e4c98d7ca..36c170ff0e 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/controller/ProductionController.java +++ b/ems-engine/src/main/java/it/integry/ems/production/controller/ProductionController.java @@ -78,10 +78,10 @@ public class ProductionController { return ServiceRestResponse.createPositiveResponse(productionService.chiudiOrdineLavorazione(chiusuraLavorazioneDTO)); } - @RequestMapping(value = "/creaOrdineProd", method = RequestMethod.POST) + @RequestMapping(value = "/saveOrdineProd", method = RequestMethod.POST) public @ResponseBody - ServiceRestResponse creaOrdineProd(@RequestBody CreaOrdineProdDTO creaOrdineProdDTO) throws Exception { - return ServiceRestResponse.createPositiveResponse(productionService.creaOrdineProd(creaOrdineProdDTO)); + ServiceRestResponse saveOrdineProd(@RequestBody CreaOrdineProdDTO creaOrdineProdDTO) throws Exception { + return ServiceRestResponse.createPositiveResponse(productionService.saveOrdineProd(creaOrdineProdDTO)); } @RequestMapping(value = "/getArtsProdByCodMart", method = RequestMethod.GET) diff --git a/ems-engine/src/main/java/it/integry/ems/production/dto/CreaOrdineProdDTO.java b/ems-engine/src/main/java/it/integry/ems/production/dto/CreaOrdineProdDTO.java index 3547e10a80..bf70e388d5 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/dto/CreaOrdineProdDTO.java +++ b/ems-engine/src/main/java/it/integry/ems/production/dto/CreaOrdineProdDTO.java @@ -7,6 +7,7 @@ import java.util.List; public class CreaOrdineProdDTO { private LocalDate dataOrd; + private Integer numOrd; private String codAnag; private String codVdes; private String codMdep; @@ -15,6 +16,7 @@ public class CreaOrdineProdDTO { private BigDecimal numCnf; private BigDecimal valUnt; private BigDecimal colliPedana; + private BigDecimal qtaOrd; private String untOrd; private List modificheDistinta = new ArrayList<>(); private String descrizionePartita; @@ -28,6 +30,15 @@ public class CreaOrdineProdDTO { return this; } + public Integer getNumOrd() { + return numOrd; + } + + public CreaOrdineProdDTO setNumOrd(Integer numOrd) { + this.numOrd = numOrd; + return this; + } + public String getCodAnag() { return codAnag; } @@ -126,4 +137,13 @@ public class CreaOrdineProdDTO { this.descrizionePartita = descrizionePartita; return this; } + + public BigDecimal getQtaOrd() { + return qtaOrd; + } + + public CreaOrdineProdDTO setQtaOrd(BigDecimal qtaOrd) { + this.qtaOrd = qtaOrd; + return this; + } } diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/OrtoFruttaProductionService.java b/ems-engine/src/main/java/it/integry/ems/production/service/OrtoFruttaProductionService.java index 3d4a2b422d..96ffa57b1d 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/OrtoFruttaProductionService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/OrtoFruttaProductionService.java @@ -142,13 +142,14 @@ public class OrtoFruttaProductionService { List datiPartita; MtbPartitaMagCarat lottoProd = new MtbPartitaMagCarat(); MtbPartitaMagCarat modalitaRaccolta = new MtbPartitaMagCarat(); + MtbPartitaMagCarat varietaRaccolta = new MtbPartitaMagCarat(); String caratLottoProd = "Lotto Produttore"; String caratModalitaRaccolta = "Modalita Raccolta"; String caratVarietaRaccolta = "Varieta"; if (dto.getOriginal() != null) { datiPartita = UtilityDB.executeSimpleQueryDTO( multiDBTransactionManager.getPrimaryConnection(), - Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta), + Query.format("SELECT * from mtb_partita_mag_carat where cod_mart = {} and partita_mag = {} and carat in ({},{},{})", dto.getCodMart(), dto.getPartitaRaccolta(), caratLottoProd, caratModalitaRaccolta,caratVarietaRaccolta), MtbPartitaMagCarat.class); if (!UtilityList.isNullOrEmpty(datiPartita)) { if (!UtilityString.streNull(dto.getOriginal().getLottoProduttore()).equalsIgnoreCase(UtilityString.streNull(dto.getLottoProduttore()))) { @@ -158,6 +159,9 @@ public class OrtoFruttaProductionService { if (!UtilityString.streNull(dto.getOriginal().getModalitaRaccolta()).equalsIgnoreCase(UtilityString.streNull(dto.getModalitaRaccolta()))) { modalitaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratModalitaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat()); } + if (!UtilityString.streNull(dto.getOriginal().getModalitaRaccolta()).equalsIgnoreCase(UtilityString.streNull(dto.getModalitaRaccolta()))) { + varietaRaccolta = datiPartita.stream().filter(x -> x.getCarat().equalsIgnoreCase(caratVarietaRaccolta)).findFirst().orElse(new MtbPartitaMagCarat()); + } } } lottoProd @@ -173,7 +177,7 @@ public class OrtoFruttaProductionService { .setActivityId(activityId) .setDataRilevazione(LocalDateTime.now()) .setOperation(OperationType.INSERT_OR_UPDATE); - modalitaRaccolta + varietaRaccolta .setCarat(caratVarietaRaccolta) .setValCarat(dto.getVarieta()) .setActivityId(activityId) @@ -182,6 +186,7 @@ public class OrtoFruttaProductionService { datiPartita = new ArrayList<>(); datiPartita.add(lottoProd); datiPartita.add(modalitaRaccolta); + datiPartita.add(varietaRaccolta); MtbPartitaMag part = new MtbPartitaMag(); part diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java index ed4dae57de..c905657fc8 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionService.java @@ -10,8 +10,6 @@ import it.integry.ems.exception.PrimaryDatabaseNotPresentException; import it.integry.ems.production.dto.*; import it.integry.ems.rules.businessLogic.LoadColliService; import it.integry.ems.rules.businessLogic.dto.LoadColliDTO; -import it.integry.ems.rules.completing.PartitaMagRules; -import it.integry.ems.rules.completing.dto.DatiPartitaMagDTO; import it.integry.ems.service.EntityProcessor; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityEntity; @@ -965,7 +963,7 @@ public class ProductionService { return ordineLav; } - public DtbOrdt creaOrdineProd(CreaOrdineProdDTO creaOrdineProdDTO) throws Exception { + public DtbOrdt saveOrdineProd(CreaOrdineProdDTO creaOrdineProdDTO) throws Exception { if (ObjectUtils.anyNull( creaOrdineProdDTO.getDataOrd(), creaOrdineProdDTO.getCodAnag(), @@ -979,26 +977,31 @@ public class ProductionService { Date dataOrd = Date.from(creaOrdineProdDTO.getDataOrd().atStartOfDay(ZoneId.systemDefault()).toInstant()); - DtbOrdr rigaOrdProd = new DtbOrdr() - .setCodMart(creaOrdineProdDTO.getCodMart()) + DtbOrdr rigaOrdProd = getRigaOrdProdFromOrdLav(dataOrd, creaOrdineProdDTO.getNumOrd()); + if (rigaOrdProd == null) { + rigaOrdProd = new DtbOrdr(); + } + rigaOrdProd.setCodMart(creaOrdineProdDTO.getCodMart()) .setPartitaMag(creaOrdineProdDTO.getPartitaMag()) .setValUnt(creaOrdineProdDTO.getValUnt()) .setNumCnf(creaOrdineProdDTO.getNumCnf()) + .setQtaOrd(creaOrdineProdDTO.getQtaOrd()) .setColliPedana(creaOrdineProdDTO.getColliPedana()) - .setUntOrd(creaOrdineProdDTO.getUntOrd()); + .setUntOrd(creaOrdineProdDTO.getUntOrd()) + .setOperation(creaOrdineProdDTO.getNumOrd() != null ? OperationType.UPDATE : OperationType.INSERT_OR_UPDATE); - rigaOrdProd.setOperation(OperationType.INSERT); DtbOrdt testataOrdProd = new DtbOrdt() - .setGestione("A") + .setGestione(UtilityString.isNull(rigaOrdProd.getGestione(), "A")) .setGestioneRif("A") .setDataOrd(dataOrd) + .setNumOrd(rigaOrdProd.getNumOrd()) .setCodAnag(creaOrdineProdDTO.getCodAnag()) .setCodVdes(creaOrdineProdDTO.getCodVdes()) .setCodMdep(creaOrdineProdDTO.getCodMdep()) .addDtbOrdr(rigaOrdProd); - testataOrdProd.setOperation(OperationType.INSERT); + testataOrdProd.setOperation(creaOrdineProdDTO.getNumOrd() != null ? OperationType.UPDATE : OperationType.INSERT_OR_UPDATE); entityProcessor.processEntity(testataOrdProd, multiDBTransactionManager); UtilityEntity.throwEntityException(testataOrdProd); @@ -1036,6 +1039,22 @@ public class ProductionService { return testataOrdProd; } + private DtbOrdr getRigaOrdProdFromOrdLav(Date dataOrd, Integer numOrd) throws Exception { + String sql = Query.format( + "SELECT rowProd.*\n" + + "FROM dtb_ordr rowProd\n" + + " INNER JOIN dtb_ordt ordLav ON\n" + + " ordLav.data_ord_rif = rowProd.data_ord\n" + + " AND ordLav.num_ord_rif = rowProd.num_ord\n" + + " AND rowProd.gestione = 'A'\n" + + " AND ordLav.gestione = 'L'\n" + + " AND ordLav.riga_ord_rif = rowProd.riga_ord\n" + + "WHERE ordLav.data_ord = %s and ordLav.num_ord = %s", + UtilityDate.formatDate(dataOrd, CommonConstants.DATE_FORMAT_YMD), numOrd); + + return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class); + } + public List getArtsProdByCodMart(String codMart) throws SQLException, IOException, PrimaryDatabaseNotPresentException, DataConverterNotFoundException, InstantiationException, IllegalAccessException { String sql = Query.format( "SELECT cod_prod AS cod_mart,\n" + diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java index 8ee6f75793..86a9db7c4e 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/service/WMSGenericService.java @@ -28,6 +28,7 @@ import it.integry.ems.service.PrinterService; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.user.UserSession; import it.integry.ems.utility.UtilityEntity; +import it.integry.ems.utility.UtilityLogger; import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.db.ResultSetMapper; import it.integry.ems_model.entity.*; @@ -2182,9 +2183,11 @@ public class WMSGenericService { } if (!UtilityBigDecimal.equalsTo(qtaScaricata, qtaDaScaricare)) { - anomalieList.add(AnomalieDTO.warning("Non è stato possibile scaricare tutta la quantita di materia prima richiesta dalla posizione " + scaricoMateriaPrimaDTO.getPosizione() + + String warning = "Non è stato possibile scaricare tutta la quantita di materia prima richiesta dalla posizione " + scaricoMateriaPrimaDTO.getPosizione() + " dell'articolo " + giacInPosizioneMapByCodMart.getKey() + ". " + - "E' stata richiesta una quantità di " + UtilityBigDecimal.round(qtaDaScaricare, 3) + " e non è stato possibile scaricarne " + UtilityBigDecimal.round(qtaDaScaricare.subtract(qtaScaricata), 3))); + "E' stata richiesta una quantità di " + UtilityBigDecimal.round(qtaDaScaricare, 3) + " e non è stato possibile scaricarne " + UtilityBigDecimal.round(qtaDaScaricare.subtract(qtaScaricata), 3); + logger.error(warning); + anomalieList.add(AnomalieDTO.warning(warning)); } } diff --git a/ems-engine/src/main/java/it/integry/ems/system/service/SystemService.java b/ems-engine/src/main/java/it/integry/ems/system/service/SystemService.java index f9e8e80718..d79e680524 100644 --- a/ems-engine/src/main/java/it/integry/ems/system/service/SystemService.java +++ b/ems-engine/src/main/java/it/integry/ems/system/service/SystemService.java @@ -200,6 +200,7 @@ public class SystemService { " stb_user.password_endtime," + " stb_user.e_mail," + " stb_user.Last_access_datetime," + + " stb_user.cod_lang," + " stb_user.flag_password_expiring," + " CASE WHEN stb_user.key_group = '3' AND stb_user.user_code IS NULL THEN wtb_clie.cod_anag ELSE stb_user.user_code END AS user_code," + " wtb_depo.cod_mdep," +