diff --git a/build/Jenkinsfile.groovy b/build/Jenkinsfile.groovy index 186efa439c..d4d0d9958c 100644 --- a/build/Jenkinsfile.groovy +++ b/build/Jenkinsfile.groovy @@ -49,8 +49,8 @@ pipeline { steps { echo "Updating Tomcat9 from ${WORKSPACE}" powershell returnStdout: true, script: "build\\update_tomcat.ps1 -serviceName \"Tomcat9Backup\" -httpPort \"8082\" -updatedArtifactPath \"${WORKSPACE}\\ems-engine\\target\\ems-api.war\"" - bat 'curl -k https://devservices.studioml.it/ems-api/updateWMSApp' - bat 'curl -k https://devservices.studioml.it/ems-api/updateWMSApp?suffix=beta' + bat 'curl -k https://devservices.studioml.it/ems-api/updateWMSApp?overrideForced=false' + bat 'curl -k https://devservices.studioml.it/ems-api/updateWMSApp?overrideForced=false&suffix=beta' } } } @@ -83,8 +83,8 @@ sudo /usr/bin/systemctl start tomcat9backup /home/studioml/./wait_tomcat_startup.sh 8082 sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/tomcat9backup/webapps', remoteDirectorySDF: false, removePrefix: 'ems-engine/target/', sourceFiles: 'ems-engine/target/*.war*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) - bat 'curl -k https://services.studioml.it/ems-api/updateWMSApp' - bat 'curl -k https://services.studioml.it/ems-api/updateWMSApp?suffix=beta' + bat 'curl -k https://services.studioml.it/ems-api/updateWMSApp?overrideForced=false' + bat 'curl -k https://services.studioml.it/ems-api/updateWMSApp?overrideForced=false&suffix=beta' } } } diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617102219.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617102219.java new file mode 100644 index 0000000000..97fd89e056 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617102219.java @@ -0,0 +1,19 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250617102219 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + executeStatement("ALTER TABLE vtb_dest ADD stampa_doc_cons BIT NOT NULL DEFAULT 0"); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617132439.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617132439.java new file mode 100644 index 0000000000..d9d764f2d7 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617132439.java @@ -0,0 +1,28 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomer; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250617132439 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + createSetup("DTB_ORDT", "SETUP", "SERIE_SUDDIVISIONE", null, +"serie ordine utilizzata per riconoscere gli ordini di suddivisione", false, null, false, false, +false, false, false, null, false, null); + + if ( isCustomer(IntegryCustomer.Carelli)) { + updateSetupValue("DTB_ORDT", "SETUP", "SERIE_SUDDIVISIONE", "SU"); + } + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617161250.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617161250.java new file mode 100644 index 0000000000..c4d5e2cd11 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250617161250.java @@ -0,0 +1,25 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomer; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250617161250 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if (isCustomer(IntegryCustomer.Agricoper)) { + updateSetupValue("w_vordi_rc", "SETUP", "RIF_ORD_AUTOCOMP","S"); + } + + if (isWingest()) + updateSetupValue("w_tmcolt_rc","STAMPA_COLLO", "PRINT_AFTER_INS", "N"); + } + + @Override + public void down() throws Exception { + } +} \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250618145438.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250618145438.java new file mode 100644 index 0000000000..141d7dc4e3 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20250618145438.java @@ -0,0 +1,29 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.IntegryCustomer; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20250618145438 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'"); + createSetup("DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA", "SALVA_IBAN_FORN", "S", +"Salva l'iban nell'anagrafica del fornitore", false, "SI_NO", false, false, +false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'"); + + if (isCustomer(IntegryCustomer.Carelli)) { + updateSetupValue("DATI_AZIENDA", "FATTURAZIONE_ELETTRONICA", "SALVA_IBAN_FORN", "N"); + } + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java index 1fcfe612ea..0e0c8a87af 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/DocOrdCalTotaliRules.java @@ -651,13 +651,12 @@ public class DocOrdCalTotaliRules extends QueryRules { "Impossibile salvare l'ordine %s del %s n. %s, riga %s senza aliquota IVA", gestione, UtilityDate.formatDate(row.getDataOrd(), CommonConstants.DATE_FORMAT_DMY), row.getNumOrd(), riga)); } else { - riga = ((DtbBaseDocR) row).getIdRiga(); throw new Exception(String.format( - "Impossibile salvare il documento %s del %s n. %s/%s, riga %s senza aliquota IVA", + "Impossibile salvare il documento %s del %s n. %s/%s, articolo %s senza aliquota IVA", ((DtbBaseDocR) row).getCodDtip(), UtilityDate.formatDate(((DtbBaseDocR) row).getDataDoc(), CommonConstants.DATE_FORMAT_DMY), ((DtbBaseDocR) row).getSerDoc(), - ((DtbBaseDocR) row).getNumDoc(), riga + ((DtbBaseDocR) row).getNumDoc(), (codMart == null ? "" : codMart + " - ") + row.getDescrizione() )); } diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/OrderRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/OrderRules.java index c99831ce5d..57a50f9eb3 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/OrderRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/OrderRules.java @@ -3,6 +3,7 @@ package it.integry.ems.rules.completing; import it.integry.common.var.CommonConstants; import it.integry.ems.sync.MultiDBTransaction.Connection; +import it.integry.ems_model.config.EmsRestConstants; import it.integry.ems_model.entity.*; import it.integry.ems_model.entity.common.DtbDocOrdT; import it.integry.ems_model.entity.common.DtbOrdCommonR; @@ -246,7 +247,7 @@ public class OrderRules extends QueryRules { boolean generaCommessa = setupGest.getSetupBoolean(conn, "w_dordi_rc", "CREA_COMMESSA", "AUTO_GENERATE"); String descrizioneCommessa = null; - if (generaCommessa || ( dtbOrdt.getJtbComt() != null && (!UtilityString.isNullOrEmpty(dtbOrdt.getJtbComt().getCig()) || !UtilityString.isNullOrEmpty(dtbOrdt.getJtbComt().getCup()) ))) { + if (generaCommessa || (dtbOrdt.getJtbComt() != null && (!UtilityString.isNullOrEmpty(dtbOrdt.getJtbComt().getCig()) || !UtilityString.isNullOrEmpty(dtbOrdt.getJtbComt().getCup())))) { String destinazione = null; String formatoDescrizione = setupGest.getSetup(conn, "w_dordi_rc", "CREA_COMMESSA", "FORMATO_DESCRIZIONE"); jtbComt = new JtbComt(); @@ -306,27 +307,27 @@ public class OrderRules extends QueryRules { String codFirstMart = wdtbOrdt.getWdtbOrdr().get(0).getCodMart(); sql = Query.format( - "SELECT cast(COUNT(*) as bit)\n" + - "FROM wdtb_ordt t\n" + - " INNER JOIN tvvw_style_min_ord wr\n" + - " ON t.gestione = wr.gestione AND t.num_ord = wr.num_ord AND t.data_ord = wr.data_ord AND\n" + - " t.serie = wr.serie\n" + - " INNER JOIN ttb_style s ON wr.cod_mart = s.cod_style\n" + - " INNER JOIN ttb_line ON s.cod_line = ttb_line.cod_line\n" + - " INNER JOIN mtb_aart m ON wr.cod_mart = m.cod_mart\n" + - "WHERE dbo.md5_encode(LOWER(ISNULL(CONVERT(VARCHAR, num_ord_rif), '') + ISNULL(CONVERT(VARCHAR, data_ord_rif, 103), '') +\n" + - " ISNULL(rif_ord, ''))) = dbo.md5_encode(LOWER(ISNULL(CONVERT(VARCHAR, %s), '') + ISNULL(\n" + - " CONVERT(VARCHAR, CONVERT(DATETIME,%s, 111), 103), '') +\n" + - " ISNULL(%s, '')))\n" + - " AND t.cod_mdep = %s\n" + - " AND t.listino = %s\n" + - " AND t.cod_jcom = %s\n" + - " AND COALESCE(m.cod_dgrp_art, ttb_line.cod_dgrp_art, s.cod_line) =\n" + - " (SELECT COALESCE(mtb_aart.cod_dgrp_art, ttb_line.cod_dgrp_art, ttb_style.cod_line)\n" + - " FROM ttb_style\n" + - " INNER JOIN mtb_aart ON ttb_style.cod_style = mtb_aart.cod_mart\n" + - " INNER JOIN ttb_line ON ttb_style.cod_line = ttb_line.cod_line\n" + - " WHERE cod_style = %s)", + "SELECT cast(COUNT(*) as bit)\n" + + "FROM wdtb_ordt t\n" + + " INNER JOIN tvvw_style_min_ord wr\n" + + " ON t.gestione = wr.gestione AND t.num_ord = wr.num_ord AND t.data_ord = wr.data_ord AND\n" + + " t.serie = wr.serie\n" + + " INNER JOIN ttb_style s ON wr.cod_mart = s.cod_style\n" + + " INNER JOIN ttb_line ON s.cod_line = ttb_line.cod_line\n" + + " INNER JOIN mtb_aart m ON wr.cod_mart = m.cod_mart\n" + + "WHERE dbo.md5_encode(LOWER(ISNULL(CONVERT(VARCHAR, num_ord_rif), '') + ISNULL(CONVERT(VARCHAR, data_ord_rif, 103), '') +\n" + + " ISNULL(rif_ord, ''))) = dbo.md5_encode(LOWER(ISNULL(CONVERT(VARCHAR, %s), '') + ISNULL(\n" + + " CONVERT(VARCHAR, CONVERT(DATETIME,%s, 111), 103), '') +\n" + + " ISNULL(%s, '')))\n" + + " AND t.cod_mdep = %s\n" + + " AND t.listino = %s\n" + + " AND t.cod_jcom = %s\n" + + " AND COALESCE(m.cod_dgrp_art, ttb_line.cod_dgrp_art, s.cod_line) =\n" + + " (SELECT COALESCE(mtb_aart.cod_dgrp_art, ttb_line.cod_dgrp_art, ttb_style.cod_line)\n" + + " FROM ttb_style\n" + + " INNER JOIN mtb_aart ON ttb_style.cod_style = mtb_aart.cod_mart\n" + + " INNER JOIN ttb_line ON ttb_style.cod_line = ttb_line.cod_line\n" + + " WHERE cod_style = %s)", wdtbOrdt.getNumOrdRif(), wdtbOrdt.getDataOrdRif(), wdtbOrdt.getRifOrd(), wdtbOrdt.getCodMdep(), wdtbOrdt.getListino(), wdtbOrdt.getCodJcom(), codFirstMart); } else { @@ -482,12 +483,12 @@ public class OrderRules extends QueryRules { } public static void setCodVvetIdViaggio(Connection conn, DtbOrdt dtbOrdt) throws SQLException { - if ( dtbOrdt.getDtbOrdr() != null && !dtbOrdt.getDtbOrdr().isEmpty()){ + if (dtbOrdt.getDtbOrdr() != null && !dtbOrdt.getDtbOrdr().isEmpty()) { List listaIdViaggio = dtbOrdt.getDtbOrdr().stream() - .filter(x->x.getIdViaggio() != null) + .filter(x -> x.getIdViaggio() != null) .map( - DtbOrdr::getIdViaggio - ).distinct().collect(Collectors.toList()); + DtbOrdr::getIdViaggio + ).distinct().collect(Collectors.toList()); if (listaIdViaggio != null && !listaIdViaggio.isEmpty()) { String sql = @@ -502,4 +503,24 @@ public class OrderRules extends QueryRules { } } } + + public static void setRifOrd(Connection conn, DtbOrdt dtbOrdt) throws Exception { + Boolean completeRifOrd = setupGest.getSetupBoolean("w_vordi_rc", "SETUP", "RIF_ORD_AUTOCOMP"); + if (UtilityString.isNullOrEmpty(dtbOrdt.getRifOrd()) && completeRifOrd) { + String setupRifOrd = setupGest.getSetup("w_vordi_rc", "SETUP", "RIF_ORD_FORMATO"); + if (!UtilityString.isNullOrEmpty(setupRifOrd) && + dtbOrdt.getRifDataOrd() != null && !dtbOrdt.getRifDataOrd().equals(EmsRestConstants.DATE_NULL) && + dtbOrdt.getRifNumOrd() != null && dtbOrdt.getRifNumOrd() != EmsRestConstants.NULL) { + String rifOrd = setupRifOrd.replace("[NUM_ORD]", dtbOrdt.getRifNumOrd()); + String formatoData = setupRifOrd.substring(setupRifOrd.indexOf("DEL ") + 4); + String formato = formatoData + .replace("[", "") + .replace("]", "") + .replaceAll("D", "d") + .replaceAll("Y", "y"); + rifOrd = rifOrd.replace(formatoData, new SimpleDateFormat(formato).format(dtbOrdt.getRifDataOrd())); + dtbOrdt.setRifOrd(rifOrd); + } + } + } } \ No newline at end of file diff --git a/ems-core/src/main/java/it/integry/ems/service/codice_fiscale/service/CodiceFiscaleService.java b/ems-core/src/main/java/it/integry/ems/service/codice_fiscale/service/CodiceFiscaleService.java index 2a53348f22..40e4029083 100644 --- a/ems-core/src/main/java/it/integry/ems/service/codice_fiscale/service/CodiceFiscaleService.java +++ b/ems-core/src/main/java/it/integry/ems/service/codice_fiscale/service/CodiceFiscaleService.java @@ -619,6 +619,12 @@ public class CodiceFiscaleService { String codiceComune = codiceFiscale.substring(11, 15); if (!codiceComune.matches("^[A-Z]\\d{3}$")) throw new Exception("Codice catastale non valido nel codice fiscale"); + + char carattereControllo = calcolaCarattereControllo(codiceFiscale.substring(0, 15)); // Controllo carattere di controllo + + if (carattereControllo != codiceFiscale.charAt(15)) { + throw new Exception("Carattere di controllo non valido nel codice fiscale"); + } } } diff --git a/ems-core/src/main/java/it/integry/ems/sync/service/RemoteSynchronizationService.java b/ems-core/src/main/java/it/integry/ems/sync/service/RemoteSynchronizationService.java index e1b74762d4..b1a339588f 100644 --- a/ems-core/src/main/java/it/integry/ems/sync/service/RemoteSynchronizationService.java +++ b/ems-core/src/main/java/it/integry/ems/sync/service/RemoteSynchronizationService.java @@ -230,6 +230,8 @@ public class RemoteSynchronizationService { UtilityEntity.throwEntitiesException(entities); + multiDBTransactionManager.commitAll(); + return cloneSubscriptionItem.getLastTransactionIdImported(); } } diff --git a/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java b/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java index f070a3e1bb..f586cc5659 100644 --- a/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java +++ b/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java @@ -522,7 +522,7 @@ public class GeneraOrdLav { private static String generateActivity(Connection connect, DtbOrdr dtbOrdr, String codProd, String codJcom, String gestione, Date dataOrd, Integer numOrd, String userName, String activityID, Enum operationType, List activityCicloProd) throws Exception { Integer durataFasiPrec = 0; - Date dataIniz = null, dataFine = null, oraDataMod = new Date(); + Date dataIniz = null, dataFine = null; String classNameOrdProd = "W_PORDI_RC", activityIDRoot = null, activityTypeID = null, flagTipologia = null, sql; StbActivity activity = new StbActivity(); List activityList = new ArrayList(); @@ -581,7 +581,6 @@ public class GeneraOrdLav { activity.setActivityId(activityIDLav); activity.setCodJcom(codJcom); activity.setUserName(userName); - activity.setOraModAct(oraDataMod); activityList.add(activity); } rs.close(); @@ -629,7 +628,6 @@ public class GeneraOrdLav { activity.setEstimatedEnddate(dataFine); activity.setEstimatedTime(dataIniz); activity.setEstimatedEndtime(dataFine); - activity.setOraModAct(oraDataMod); activity.setGestione("L"); activity.setDataOrd(dataOrd); activity.setNumOrd(numOrd); @@ -686,7 +684,6 @@ public class GeneraOrdLav { activity.setEstimatedEnddate(dataFine); activity.setEstimatedTime(dataIniz); activity.setEstimatedEndtime(dataFine); - activity.setOraModAct(oraDataMod); activity.setGestione("L"); activity.setDataOrd(dataOrd); activity.setNumOrd(numOrd); @@ -735,7 +732,6 @@ public class GeneraOrdLav { activity.setEstimatedEnddate(dataFine); activity.setEstimatedTime(dataIniz); activity.setEstimatedEndtime(dataFine); - activity.setOraModAct(oraDataMod); activity.setUserName(userName); activity.setGestione("L"); activity.setDataOrd(dataOrd); diff --git a/ems-core/src/main/java/it/integry/ems_model/business_logic/ProductionBusinessLogic.java b/ems-core/src/main/java/it/integry/ems_model/business_logic/ProductionBusinessLogic.java index 0c16addd6e..81f407ff9f 100644 --- a/ems-core/src/main/java/it/integry/ems_model/business_logic/ProductionBusinessLogic.java +++ b/ems-core/src/main/java/it/integry/ems_model/business_logic/ProductionBusinessLogic.java @@ -101,7 +101,7 @@ public class ProductionBusinessLogic { private static String generateActivity(Connection connect, DtbOrdr dtbOrdr, String codProd, String codJcom, String gestione, Date dataOrd, Integer numOrd, String userName, String activityID, Enum operationType, List activityCicloProd) throws Exception { Integer durataFasiPrec = 0; - Date dataIniz = null, dataFine = null, oraDataMod = new Date(); + Date dataIniz = null, dataFine = null; String classNameOrdProd = "W_PORDI_RC", activityIDRoot = null, activityTypeID = null, flagTipologia = null, sql; StbActivity activity = new StbActivity(); List activityList = new ArrayList(); @@ -160,7 +160,6 @@ public class ProductionBusinessLogic { activity.setActivityId(activityIDLav); activity.setCodJcom(codJcom); activity.setUserName(userName); - activity.setOraModAct(oraDataMod); activityList.add(activity); } rs.close(); @@ -208,7 +207,6 @@ public class ProductionBusinessLogic { activity.setEstimatedEnddate(dataFine); activity.setEstimatedTime(dataIniz); activity.setEstimatedEndtime(dataFine); - activity.setOraModAct(oraDataMod); activity.setGestione("L"); activity.setDataOrd(dataOrd); activity.setNumOrd(numOrd); @@ -265,7 +263,6 @@ public class ProductionBusinessLogic { activity.setEstimatedEnddate(dataFine); activity.setEstimatedTime(dataIniz); activity.setEstimatedEndtime(dataFine); - activity.setOraModAct(oraDataMod); activity.setGestione("L"); activity.setDataOrd(dataOrd); activity.setNumOrd(numOrd); @@ -314,7 +311,6 @@ public class ProductionBusinessLogic { activity.setEstimatedEnddate(dataFine); activity.setEstimatedTime(dataIniz); activity.setEstimatedEndtime(dataFine); - activity.setOraModAct(oraDataMod); activity.setUserName(userName); activity.setGestione("L"); activity.setDataOrd(dataOrd); diff --git a/ems-core/src/main/java/it/integry/ems_model/entity/DtbDoct.java b/ems-core/src/main/java/it/integry/ems_model/entity/DtbDoct.java index 2b04e25d07..0a82ecf76e 100644 --- a/ems-core/src/main/java/it/integry/ems_model/entity/DtbDoct.java +++ b/ems-core/src/main/java/it/integry/ems_model/entity/DtbDoct.java @@ -1691,6 +1691,7 @@ public class DtbDoct extends DtbBaseDocT implements EquatableEntityInterface maxValue))) { - Date now = new Date(); List entityList = new ArrayList<>(); String sql = "SELECT activity_id " + @@ -308,7 +307,6 @@ public class SteUPService { StbActivity activityEntry = new StbActivity(); activityEntry.setActivityId(activityIdChild.toString()); activityEntry.setOperation(OperationType.UPDATE); - activityEntry.setOraModAct(now); activityEntry.setUserModifier(userName); // activityEntry.setIndiceGradimento(indiceGradimento!=null?indiceGradimento:"NULL"); //activityEntry.setIndiceGradimento(indiceGradimento); @@ -354,7 +352,6 @@ public class SteUPService { StbActivity activityIsp = new StbActivity() .setActivityId(activityId) - .setOraModAct(now) .setUserModifier(userName) .setEffectiveEnddate(now) .setEffectiveEndtime(now) @@ -499,7 +496,6 @@ public class SteUPService { .setActivityTypeId(activityTypeIdIspezione) .setDataInsAct(UtilityLocalDate.localDateToDate(now)) .setOraInsAct(UtilityLocalDate.localDateToDate(now)) - .setOraModAct(UtilityLocalDate.localDateToDate(now)) .setEffectiveDate(dataCreation) .setEffectiveTime(dataCreation); flag_isNewIspezione = true; @@ -511,8 +507,6 @@ public class SteUPService { } activityIsp.setActivityId(parentActivityId) - .setOraModAct(UtilityLocalDate.localDateToDate(now)) - .setOraModAct(UtilityLocalDate.localDateToDate(now)) .setUserModifier(userNameCreator); activityIsp.setOperation(OperationType.UPDATE); } @@ -531,8 +525,7 @@ public class SteUPService { .setUserModifier(userNameCreator) .setActivityTypeId(activityTypeId) .setDataInsAct(UtilityLocalDate.localDateToDate(now)) - .setOraInsAct(UtilityLocalDate.localDateToDate(now)) - .setOraModAct(UtilityLocalDate.localDateToDate(now)); + .setOraInsAct(UtilityLocalDate.localDateToDate(now)); activityItem.setOperation(OperationType.INSERT); if (!UtilityString.isNullOrEmpty(codCmac)) { @@ -760,7 +753,6 @@ public class SteUPService { .setActivityTypeId(activityTypeArt) .setDataInsAct(now) .setOraInsAct(now) - .setOraModAct(now) .setEffectiveDate(dataCreation) .setEffectiveTime(dataCreation) .setParentActivityId(activityId); @@ -1202,7 +1194,6 @@ public class SteUPService { activityToMove.setParentActivityId(parentActivity.getActivityId()); activityToMove.setUserName(usernamePv); activityToMove.setUserModifier(userNameCreator); - activityToMove.setOraModAct(new Date()); sql = "SELECT activity_id, " + UtilityDB.valueToString(usernamePv) + " as user_name " + diff --git a/ems-engine/src/main/java/it/integry/ems/document/Import/service/DocumentiWebImportService.java b/ems-engine/src/main/java/it/integry/ems/document/Import/service/DocumentiWebImportService.java index d3a21b27df..d8cd642126 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/Import/service/DocumentiWebImportService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/Import/service/DocumentiWebImportService.java @@ -13,6 +13,7 @@ import it.integry.ems_model.entity.DtbDoct; import it.integry.ems_model.entity.WdtbDoct; import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.types.OperationType; +import it.integry.ems_model.utility.Query; import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDate; import it.integry.ems_model.utility.UtilityString; @@ -35,8 +36,8 @@ public class DocumentiWebImportService { private SetupGest setupGest; public List importDocWeb(String type, String format, String whereCond, List anomalie) throws Exception { - List toBeProcessed = new ArrayList(); - List toBeUpdated = new ArrayList(); + List toBeProcessed = new ArrayList<>(); + List toBeUpdated = new ArrayList<>(); Connection connection = multiDBTransactionManager.getPrimaryDatasource().getConnection(); Map setup = setupGest.getImportSetupSection(connection, type, format); @@ -49,90 +50,83 @@ public class DocumentiWebImportService { throw new Exception("Condizione di ricerca non specificata"); } - String query = - "SELECT wdtb_doct.cod_anag, wdtb_doct.cod_dtip, wdtb_doct.data_doc, wdtb_doct.ser_doc, wdtb_doct.num_doc " + - "FROM wdtb_doct INNER JOIN wdtb_docr on wdtb_doct.cod_anag = wdtb_docr.cod_anag AND " + - "wdtb_doct.cod_dtip = wdtb_docr.cod_dtip AND " + - "wdtb_doct.data_doc = wdtb_docr.data_doc AND " + - "wdtb_doct.ser_doc = wdtb_docr.ser_doc AND " + - "wdtb_doct.num_doc = wdtb_docr.num_doc " + - "WHERE wdtb_doct.flag_elaborato <> 'S' " + - "GROUP BY wdtb_doct.cod_anag, wdtb_doct.cod_dtip, wdtb_doct.data_doc, wdtb_doct.ser_doc, wdtb_doct.num_doc " + - "HAVING count(*) > 0 " + - "ORDER BY wdtb_doct.data_doc "; - query = UtilityDB.addwhereCond(query, whereCond, true); - PreparedStatement ps = connection.prepareStatement(query); - ResultSet rs = ps.executeQuery(); + String queryTestata = + "SELECT wdtb_doct.gestione,\n" + + " wdtb_doct.cod_anag,\n" + + " wdtb_doct.cod_dtip,\n" + + " wdtb_doct.data_doc,\n" + + " wdtb_doct.ser_doc,\n" + + " wdtb_doct.num_doc,\n" + + " wdtb_doct.data_reg,\n" + + " wdtb_doct.gestione,\n" + + " wdtb_doct.tipo_anag,\n" + + " wdtb_doct.data_ord,\n" + + " wdtb_doct.num_ord,\n" + + " wdtb_doct.rif_ord,\n" + + " wdtb_doct.cod_mdep,\n" + + " wdtb_doct.listino,\n" + + " wdtb_doct.cod_vdes,\n" + + " wdtb_doct.porto,\n" + + " wdtb_doct.mezzo,\n" + + " wdtb_doct.cod_auto,\n" + + " wdtb_doct.causale_trasp,\n" + + " wdtb_doct.aspetto_beni,\n" + + " wdtb_doct.num_colli,\n" + + " wdtb_doct.peso,\n" + + " wdtb_doct.data_iniz_trasp,\n" + + " wdtb_doct.ora_iniz_trasp,\n" + + " wdtb_doct.annotazioni,\n" + + " wdtb_doct.cod_paga,\n" + + " wdtb_doct.cod_banc,\n" + + " wdtb_doct.cod_vage,\n" + + " wdtb_doct.sconto1,\n" + + " wdtb_doct.sconto2,\n" + + " wdtb_doct.sconto3,\n" + + " wdtb_doct.sconto4,\n" + + " wdtb_doct.compilato_da,\n" + + " wdtb_doct.modificato_da,\n" + + " wdtb_doct.annotazioni,\n" + + " wdtb_doct.user_name\n" + + "FROM wdtb_doct\n" + + " INNER JOIN dtb_tipi ON wdtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" + + "WHERE wdtb_doct.flag_elaborato <> 'S'\n" + + " AND EXISTS(SELECT *\n" + + " FROM wdtb_docr\n" + + " WHERE wdtb_doct.cod_anag = wdtb_docr.cod_anag\n" + + " AND wdtb_doct.cod_dtip = wdtb_docr.cod_dtip\n" + + " AND wdtb_doct.data_doc = wdtb_docr.data_doc\n" + + " AND wdtb_doct.ser_doc = wdtb_docr.ser_doc\n" + + " AND wdtb_doct.num_doc = wdtb_docr.num_doc)\n" + + "ORDER BY wdtb_doct.data_doc"; - while (rs.next()) { - String codAnag = rs.getString("cod_anag"); - String codDtip = rs.getString("cod_dtip"); - Date dataDoc = rs.getDate("data_doc"); - String serDoc = rs.getString("ser_doc"); - int numDoc = rs.getInt("num_doc"); + List dtbDocts = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), queryTestata, DtbDoct.class); + + for (DtbDoct dtbDoct : dtbDocts) { String chkExist = + Query.format( "SELECT count(*) " + " FROM dtb_doct " + " WHERE dtb_doct.cod_dtip in ( " + "SELECT cod_dtip " + " FROM dtb_tipi " + - " WHERE cod_dtip = " + UtilityDB.valueToString(codDtip) + + " WHERE cod_dtip = %s \n " + " UNION " + " SELECT value_string as cod_dtip" + " FROM dbo.ParseStringIntoArray(" + UtilityDB.valueToString(setup.get("COD_DTIP_CHK")) + ", '|')) AND " + - " dtb_doct.cod_anag = " + UtilityDB.valueToString(codAnag) + " AND " + - " dtb_doct.data_doc = " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + " AND " + - " dtb_doct.ser_doc = " + UtilityDB.valueToString(serDoc) + " AND " + - " dtb_doct.num_doc = " + UtilityDB.valueToString(numDoc); + " dtb_doct.cod_anag = %s AND " + + " dtb_doct.data_doc = %s AND " + + " dtb_doct.ser_doc = %s AND " + + " dtb_doct.num_doc = %s ", + dtbDoct.getCodDtip(), + dtbDoct.getCodAnag(), + dtbDoct.getDataDoc(), + dtbDoct.getSerDoc(), + dtbDoct.getNumDoc()); Integer countDoc = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), chkExist); if (countDoc == 0) { - - String condDoc = String.format("wdtb_doct.cod_anag = '%s' AND wdtb_doct.cod_dtip = '%s' AND wdtb_doct.data_doc = %s AND wdtb_doct.ser_doc = '%s' AND wdtb_doct.num_doc = %d", - codAnag, codDtip, UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD), serDoc, numDoc); - String queryTestata = - "SELECT Wdtb_doct.gestione, " + - " wdtb_doct.cod_anag, " + - " wdtb_doct.cod_dtip, " + - " wdtb_doct.data_doc, " + - " wdtb_doct.ser_doc, " + - " wdtb_doct.num_doc, " + - " wdtb_doct.data_reg, " + - " wdtb_doct.gestione, " + - " wdtb_doct.tipo_anag, " + - " wdtb_doct.data_ord, " + - " wdtb_doct.num_ord, " + - " wdtb_doct.rif_ord, " + - " wdtb_doct.cod_mdep, " + - " wdtb_doct.listino, " + - " wdtb_doct.cod_vdes, " + - " wdtb_doct.porto, " + - " wdtb_doct.mezzo, " + - " wdtb_doct.cod_auto, " + - " wdtb_doct.causale_trasp, " + - " wdtb_doct.aspetto_beni, " + - " wdtb_doct.num_colli, " + - " wdtb_doct.peso, " + - " wdtb_doct.data_iniz_trasp, " + - " wdtb_doct.ora_iniz_trasp, " + - " wdtb_doct.annotazioni, " + - " wdtb_doct.cod_paga, " + - " wdtb_doct.cod_banc, " + - " wdtb_doct.cod_vage, " + - " wdtb_doct.sconto1, " + - " wdtb_doct.sconto2, " + - " wdtb_doct.sconto3, " + - " wdtb_doct.sconto4, " + - " wdtb_doct.compilato_da, " + - " wdtb_doct.modificato_da, " + - " wdtb_doct.annotazioni, " + - " wdtb_doct.user_name " + - " FROM Wdtb_doct INNER JOIN dtb_tipi ON Wdtb_doct.cod_dtip = dtb_tipi.cod_dtip "; - - queryTestata = UtilityDB.addwhereCond(queryTestata, condDoc, true); - ResultSetMapper dtbDoctResultSetMapper = new ResultSetMapper(); - DtbDoct dtbDoct = dtbDoctResultSetMapper.mapQueryToObject(multiDBTransactionManager.getPrimaryConnection(), queryTestata, DtbDoct.class, OperationType.INSERT); + dtbDoct.setOperation(OperationType.INSERT); String queryRighe = "WITH griglia AS ( " + @@ -200,9 +194,12 @@ public class DocumentiWebImportService { " Wdtb_docr.num_ord IS NULL and" + " Wdtb_docr.riga_ord IS NULL " + "ORDER BY dtb_ordt.data_ord desc, dtb_ordr.num_ord desc ) ordini " + - " WHERE 1 = 1 "; + " WHERE wdtb_docr.cod_nang = " + UtilityDB.valueToString(dtbDoct.getCodAnag()) + " AND " + + " wdtb_docr.cod_dtip = " + UtilityDB.valueToString(dtbDoct.getCodDtip()) + " AND " + + " wdtb_docr.data_doc = " + UtilityDB.valueToString(dtbDoct.getDataDoc()) + " AND " + + " wdtb_docr.ser_doc = " + UtilityDB.valueToString(dtbDoct.getSerDoc()) + " AND " + + " wdtb_docr.num_doc = " + UtilityDB.valueToString(dtbDoct.getNumDoc()); - queryRighe = UtilityDB.addwhereCond(queryRighe, condDoc, true); ResultSetMapper dtbDocrResultSetMapper = new ResultSetMapper(); List dtbDocrList = dtbDocrResultSetMapper.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), queryRighe, DtbDocr.class, OperationType.INSERT); @@ -225,19 +222,16 @@ public class DocumentiWebImportService { } else { WdtbDoct wdtbDoct = new WdtbDoct(); wdtbDoct.setOperation(OperationType.UPDATE); - wdtbDoct.setCodAnag(codAnag); - wdtbDoct.setCodDtip(codDtip); - wdtbDoct.setDataDoc(dataDoc); - wdtbDoct.setSerDoc(serDoc); - wdtbDoct.setNumDoc(numDoc); + wdtbDoct.setCodAnag(dtbDoct.getCodAnag()); + wdtbDoct.setCodDtip(dtbDoct.getCodDtip()); + wdtbDoct.setDataDoc(dtbDoct.getDataDoc()); + wdtbDoct.setSerDoc(dtbDoct.getSerDoc()); + wdtbDoct.setNumDoc(dtbDoct.getNumDoc()); wdtbDoct.setFlagElaborato("S"); toBeUpdated.add(wdtbDoct); } } - rs.close(); - ps.close(); - List objects = null; if (!toBeProcessed.isEmpty()) { objects = entityProcessor.processEntityList(toBeProcessed, true, false, false); diff --git a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentService.java b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentService.java index 2b41b87491..02897af703 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentService.java @@ -2115,6 +2115,20 @@ public class DocumentService { } String sql = it.integry.ems_model.utility.Query.format( + "SELECT cod_vdes\n" + + "FROM dtb_doct\n" + + "WHERE cod_anag = %s\n" + + " AND cod_dtip = %s\n" + + " AND data_doc = %s\n" + + " AND ser_doc = %s\n" + + " AND num_doc = %s", + printDocumentRequest.getCodAnag(), codDtip, printDocumentRequest.getDataDoc(), + printDocumentRequest.getSerDoc(), printDocumentRequest.getNumDoc() + ); + String codVdes = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); + + + sql = it.integry.ems_model.utility.Query.format( "SELECT archiviazione_elettronica\n" + "FROM vtb_vett\n" + " INNER JOIN dtb_doct ON vtb_vett.cod_vvet = dtb_doct.cod_vvet\n" + @@ -2129,6 +2143,17 @@ public class DocumentService { Boolean archiviazioneElettronica = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); if (archiviazioneElettronica == null) archiviazioneElettronica = false; + if ( archiviazioneElettronica && !UtilityString.isNullOrEmpty(codVdes)){ + sql = it.integry.ems_model.utility.Query.format( + "SELECT stampa_doc_cons FROM vtb_dest WHERE cod_anag= %s AND cod_vdes = %s", + printDocumentRequest.getCodAnag(), codVdes + ); + Boolean stampaDocCons = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); + if (stampaDocCons != null && stampaDocCons) { + archiviazioneElettronica = false; + } + } + List listPdf = new ArrayList<>(); if (dtbTipi.getNumCopie() == null ) { dtbTipi.setNumCopie(1); @@ -2156,19 +2181,6 @@ public class DocumentService { boolean stampaImmediata = setupGest.getSetupBoolean("W_VDIFF_BOLLE_DLG", "SETUP", "STAMPA_IMMEDIATA"); if (printDocumentRequest.isSendEmail() || stampaImmediata) { - sql = it.integry.ems_model.utility.Query.format( - "SELECT cod_vdes\n" + - "FROM dtb_doct\n" + - "WHERE cod_anag = %s\n" + - " AND cod_dtip = %s\n" + - " AND data_doc = %s\n" + - " AND ser_doc = %s\n" + - " AND num_doc = %s", - printDocumentRequest.getCodAnag(), codDtip, printDocumentRequest.getDataDoc(), - printDocumentRequest.getSerDoc(), printDocumentRequest.getNumDoc() - ); - String codVdes = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql); - sql = it.integry.ems_model.utility.Query.format( "SELECT e_mail\n" + "FROM vtb_clie_pers_rif\n" + diff --git a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java index 96e8590e88..fb550e110b 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentiDirettiService.java @@ -75,14 +75,15 @@ public class DocumentiDirettiService { boolean salvaImballiAttiva = setupGest.getSetupBoolean("DTB_DOCT", "FATTURA_PEDANE", "ATTIVA"); - if (UtilityHashMap.getValueIfExists(datiTipoDoc, "gestione").equalsIgnoreCase("V") && + String gestione = UtilityHashMap.getValueIfExists(datiTipoDoc, "gestione"); + if (gestione.equalsIgnoreCase("V") && TipoEmissione.valueOf(UtilityHashMap.getValueIfExists(datiTipoDoc, "tipo_emissione")) == TipoEmissione.DIRETTA && !dtbDoct.getDtbDocImb().isEmpty() && salvaImballiAttiva) { saveDocImballi(dtbDoct, entityList, isInsert); } //controllo packingList documento per eventuali trasferimenti - if (dtbDoct.getGestione().equalsIgnoreCase("V")) { + if (gestione.equalsIgnoreCase("V")) { checkUDSForTransfer(dtbDoct, entityList, isInsert); } @@ -112,7 +113,7 @@ public class DocumentiDirettiService { entityRet.add(e); } - if (UtilityString.equalsIgnoreCase((String) datiTipoDoc.get("gestione"), "A")) { + if (UtilityString.equalsIgnoreCase(gestione, "A")) { List mtbLisaCostoData = documentService.popolaTabellaCosti(dtbDoct.getCodAnag(), dtbDoct.getCodDtip(), dtbDoct.getDataDoc(), diff --git a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportApuliaPromoService.java b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportApuliaPromoService.java index 7b0f11743a..3db1231ebc 100644 --- a/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportApuliaPromoService.java +++ b/ems-engine/src/main/java/it/integry/ems/product/importaz/service/ImportApuliaPromoService.java @@ -44,7 +44,6 @@ public class ImportApuliaPromoService { throw new Exception("Nessun csv da importare."); } - final CsvMapper mapper = new CsvMapper<>(); List promozioni = mapper.deserialize(request.getRawContent(), PromoDto.class, ";"); @@ -61,20 +60,31 @@ public class ImportApuliaPromoService { promozioni = Stream.of(promozioni).filterNot(x -> listiniDaEscludere.contains(x.getPartIva())).toList(); } + String codAlis = null; + if ( !UtilityString.isNullOrEmpty(request.getWhereCond())) { + codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn( + connection, + UtilityDB.addwhereCond("select cod_alis from atb_list", request.getWhereCond(), true, false)); + + } + List entityList = new ArrayList<>(); List mtbLisaDataList = new ArrayList<>(); for (PromoDto promozione : promozioni) { try { - String partitaIva = promozione.getPartIva(); - partitaIva = UtilityString.FillString(partitaIva, '0', 11, "L"); - String codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, - String.format("select cod_alis from atb_list where part_iva_forn = '%s'", partitaIva) - ); - if (codAlis == null) { - codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, - String.format("select cod_alis from gtb_anag inner join atb_forn on gtb_anag.cod_anag = atb_forn.cod_anag where atb_forn.flag_stato = 'A' AND gtb_anag.part_iva = '%s'", partitaIva) - ); + String partitaIva = promozione.getPartIva(); + if (UtilityString.isNullOrEmpty(codAlis)) { + partitaIva = UtilityString.FillString(partitaIva, '0', 11, "L"); + String sql = + Query.format("select cod_alis from atb_list where part_iva_forn = %s", partitaIva); + codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql); + + if (codAlis == null) { + codAlis = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, + String.format("select cod_alis from gtb_anag inner join atb_forn on gtb_anag.cod_anag = atb_forn.cod_anag where atb_forn.flag_stato = 'A' AND gtb_anag.part_iva = '%s'", partitaIva) + ); + } } if (codAlis == null) { diff --git a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java index 9d13cf772f..4abd12b2d8 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/service/ProductionOrdersLifecycleService.java @@ -405,7 +405,7 @@ public class ProductionOrdersLifecycleService { if (UtilityString.equalsIgnoreCase(ripianificaOrdineLavRequestDTO.getCodJfasNew(), ripianificaOrdineLavRequestDTO.getCodJfasOld())) { sql = Query.format( - "SELECT * FROM dtb_ords WHERE gestione = %s AND data_ord = %s AND num_ord = %s ORDER BY data_fine desc", + "SELECT * FROM dtb_ord_steps WHERE gestione = %s AND data_ord = %s AND num_ord = %s ORDER BY data_fine desc", ripianificaOrdineLavRequestDTO.getGestione(), ripianificaOrdineLavRequestDTO.getDataOrd(), ripianificaOrdineLavRequestDTO.getNumOrd()); diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSGenericController.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSGenericController.java index ca0c1fbc9f..6d88c5927d 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSGenericController.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/generic/controller/WMSGenericController.java @@ -1,9 +1,9 @@ package it.integry.ems.retail.wms.generic.controller; +import com.gentlyweb.utils.IOUtils; import it.integry.common.var.CommonConstants; import it.integry.ems.Import.dto.AnomalieDTO; import it.integry.ems.javabeans.RequestDataDTO; -import it.integry.ems.properties.EmsProperties; import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.retail.dto.PrintOrderCloseDTO; import it.integry.ems.retail.pvmRetail.dto.GiacenzaColliInMagDTO; @@ -104,7 +104,8 @@ public class WMSGenericController { } @GetMapping(value = "updateWMSApp") - public ServiceRestResponse updateWMSApp(@RequestParam(required = false) String suffix) throws Exception { + public ServiceRestResponse updateWMSApp(@RequestParam(required = false) String suffix, + @RequestParam(required = false, defaultValue = "null") Boolean overrideForced) throws Exception { String baseDownloadUrl = "https://jnxuo98bbuecrmbkciijvpkg.file.core.windows.net/storage-ci/wms/"; String azureToken = "?sv=2022-11-02&ss=bf&srt=sco&sp=r&se=2030-11-04T17:45:57Z&st=2024-11-04T09:45:57Z&spr=https&sig=CGxbbC08xuvAz%2B6k2C6HDq6e9UGitb0lnbbsWeRG%2FiU%3D"; @@ -120,6 +121,13 @@ public class WMSGenericController { String androidAppVersionFilePath = Paths.get(UtilityDirs.getWebAppPath(), "wms", "version" + suffix + ".txt").toString(); HttpRestWrapper.downloadFile(baseDownloadUrl + "version" + suffix + ".txt" + azureToken, androidAppVersionFilePath); + if(overrideForced != null ) { + File versionFile = new File(androidAppVersionFilePath); + String versionFileContent = IOUtils.getFile(versionFile); + versionFileContent = versionFileContent.replaceAll("forced=true", "forced=" + overrideForced); + IOUtils.writeStringToFile(versionFile, versionFileContent, false); + } + return ServiceRestResponse.createPositiveResponse(); }