assegnazione automatica gruppo di equivalenza
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2024-11-12 09:33:15 +01:00
parent 9021e84e6d
commit 134585b8c2
5 changed files with 188 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241112092604 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("[suggestMtbArtEqui]", "CREATE FUNCTION [dbo].[suggestMtbArtEqui]\n" +
"( \n" +
" @jsonParm varchar(max)\n" +
")\n" +
"RETURNS TABLE \n" +
"AS\n" +
"RETURN \n" +
"\n" +
"(\n" +
"/*with tab_json as (\n" +
"select *\n" +
"from openJson(@jsonParm) \n" +
"WITH (\n" +
" cod_mgrp VARCHAR(5) '$.cod_mgrp',\n" +
" cod_msgr VARCHAR(5) '$.cod_msgr',\n" +
" cod_mtip VARCHAR(5) '$.cod_mtip',\n" +
" cod_mstp VARCHAR(5) '$.cod_mstp',\n" +
" cod_tcol_UI VARCHAR(100) '$.cod_tcol_UI',\n" +
" marchio VARCHAR(255) '$.marchio',\n" +
" qta_cnf FLOAT '$.qta_cnf',\n" +
" peso_kg FLOAT '$.peso_kg'\n" +
") )*/\n" +
" -- Add the SELECT statement with parameter references here\n" +
" SELECT CONVERT(varchar(25), null ) as id_art_equi, CONVERT(varchar(255), null ) as descrizione, 'N' as flag_equi_prezzo, 'N' as flag_equi_costo\n" +
" \n" +
")");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,73 @@
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_20241112092826 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if ( !isCustomer(IntegryCustomer.RossoGargano)) return;
createOrUpdateFunction("[suggestMtbArtEqui]", "CREATE FUNCTION [dbo].[suggestMtbArtEqui]\n" +
"( \n" +
" @jsonParm varchar(max)\n" +
")\n" +
"RETURNS TABLE \n" +
"AS\n" +
"RETURN \n" +
"(\n" +
" with tab_json as (\n" +
"select *\n" +
"from openJson(@jsonParm) \n" +
"WITH (\n" +
" cod_mgrp VARCHAR(5) '$.cod_mgrp',\n" +
" cod_msgr VARCHAR(5) '$.cod_msgr',\n" +
" cod_mtip VARCHAR(5) '$.cod_mtip',\n" +
" cod_mstp VARCHAR(5) '$.cod_mstp',\n" +
" cod_tcol_UI VARCHAR(100) '$.cod_tcol_UI',\n" +
" marchio VARCHAR(255) '$.marchio',\n" +
" qta_cnf FLOAT '$.qta_cnf',\n" +
" peso_kg FLOAT '$.peso_kg'\n" +
") )\n" +
",art as (\n" +
"SELECT distinct mtb_aart_equi.id_art_equi, IsNull(mtb_aart_equi.descrizione,\n" +
" CONCAT_WS(' ', mtb_tipi.descrizione, mtb_aart.cod_tcol_UI, CAST(mtb_aart.qta_cnf AS FLOAT), 'x',\n" +
" CAST(mtb_aart.peso_kg AS FLOAT), mtb_stip.descrizione, mtb_aart.marchio) ) as descrizione,\n" +
" IsNull(mtb_aart_equi.flag_equi_prezzo, 'T') as flag_equi_prezzo, IsNull(mtb_aart_equi.flag_equi_costo,'N') as flag_equi_costo \n" +
"FROM mtb_aart \n" +
"left outer join mtb_aart_equi on mtb_aart.id_art_equi = mtb_aart_equi.id_art_equi\n" +
"left outer join mtb_tipi on mtb_aart.cod_mtip = mtb_tipi.cod_mtip\n" +
"left outer join mtb_stip on mtb_aart.cod_mtip = mtb_stip.cod_mtip and mtb_aart.cod_mstp = mtb_stip.cod_mstp \n" +
"where exists (select *\n" +
"from tab_json where mtb_aart.cod_mgrp = tab_json.cod_mgrp and\n" +
"mtb_aart.cod_msgr = tab_json.cod_msgr and \n" +
"mtb_aart.qta_cnf = tab_json.qta_cnf and\n" +
"mtb_aart.peso_kg = tab_json.peso_kg and\n" +
"(IsNull(mtb_aart.marchio,'') = isNull(tab_json.marchio,'')) and\n" +
"(IsNull(mtb_aart.cod_mtip,'') = isNull(tab_json.cod_mtip,'')) and\n" +
"(IsNull(mtb_aart.cod_mstp, '') = isNull(tab_json.cod_mstp,'')) \n" +
"))\n" +
"\n" +
"select *\n" +
"from art \n" +
"union all\n" +
"select null as id_art_eqi, upper( CONCAT_WS(' ', mtb_tipi.descrizione, cod_tcol_UI, CAST(qta_cnf AS FLOAT), 'x',\n" +
" CAST(peso_kg AS FLOAT), mtb_stip.descrizione, marchio)), 'T' as flag_equi_prezzo, 'N' as flag_equi_costo \n" +
"from tab_json left outer join mtb_tipi on tab_json.cod_mtip = mtb_tipi.cod_mtip\n" +
"left outer join mtb_stip on tab_json.cod_mtip = mtb_stip.cod_mtip and tab_json.cod_mstp = mtb_stip.cod_mstp \n" +
"where exists(select * from tab_json)\n" +
")");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.rules.completing;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.fasterxml.jackson.databind.ObjectMapper;
import it.integry.common.var.CommonConstants;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.annotation.ReloadRow;
@@ -991,6 +992,38 @@ public class CommonRules extends QueryRules {
return mtbAartMarchio;
}
public static String getIdArtEqui(Connection conn, MtbAart entity) throws Exception {
Map<String, Object> data = new HashMap<>();
data.put("cod_mgrp", entity.getCodMgrp());
data.put("cod_msgr", entity.getCodMsgr());
data.put("cod_mtip", entity.getCodMtip());
data.put("qta_cnf", entity.getQtaCnf());
data.put("peso_kg", entity.getPesoKg());
data.put("cod_tcol_UI",entity.getCodTcolUi());
data.put("marchio", entity.getMarchio());
// Convertire in JSON
ObjectMapper objectMapper = new ObjectMapper();
String jsonParm = objectMapper.writeValueAsString(data).toLowerCase();
String sql =
String.format(
"SELECT * FROM dbo.suggestMtbArtEqui('%s') " ,
jsonParm);
MtbAartEqui mtbAartEqui = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, MtbAartEqui.class);
if (mtbAartEqui != null ) {
String idArtEqui =mtbAartEqui.getIdArtEqui();
if (UtilityString.isNullOrEmpty(mtbAartEqui.getIdArtEqui())) {
idArtEqui = entity.getCodMart();
mtbAartEqui.setIdArtEqui(idArtEqui)
.setFlagEquiPrezzo("T");
mtbAartEqui.setOperation(OperationType.INSERT_OR_UPDATE);
}
return idArtEqui;
}
return null;
}
public static MtbAartEqui insEqui(Connection conn, MtbAart entity) throws Exception {
String sql = "SELECT id_art_equi FROM mtb_aart_equi WHERE id_art_equi = " + UtilityDB.valueToString(entity.getIdArtEqui());
HashMap<String, Object> map = execSingleQuery(conn, sql);

View File

@@ -303,6 +303,8 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
@SqlField(value = "tipo_codice_imballo", maxLength = 10)
private String tipoCodiceImballo;
private Boolean setIdArtEqui;
@Priority(1)
private MtbAartMarchio mtbAartMarchio;
@@ -1184,6 +1186,15 @@ public class MtbAart extends EntityBase implements EquatableEntityInterface<MtbA
return this;
}
public Boolean getSetIdArtEqui() {
return setIdArtEqui;
}
public MtbAart setSetIdArtEqui(Boolean setIdArtEqui) {
this.setIdArtEqui = setIdArtEqui;
return this;
}
public List<MtbAartAnag> getMtbAartAnag() {
return mtbAartAnag;
}

View File

@@ -10,6 +10,7 @@ import it.integry.ems_model.types.OperationType
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.utility.UtilityFile
import it.integry.ems.exception.CheckConstraintException
import it.integry.ems_model.utility.UtilityDB
global Connection conn
global String username
@@ -126,6 +127,18 @@ then
}
end
rule "completeSetIdArtEquiAuto"
no-loop
when
eval(completeRulesEnabled)
$entity : MtbAart(idArtEqui == null && setIdArtEqui != null && setIdArtEqui && operation != OperationType.DELETE)
then
String idArtEqui = CommonRules.getIdArtEqui(conn, $entity);
modify($entity){
setIdArtEqui(idArtEqui)}
end
rule "completeInsEqui"
no-loop
when
@@ -190,6 +203,17 @@ then
modify ( $entity ) { setArticoloComposto("N") }
end
rule "completeSetIdArtEqui"
no-loop
when
eval(completeRulesEnabled)
$entity : MtbAart(setIdArtEqui == null)
then
String sql = "select CAst( case when dbo.getGestSetup( 'MTB_AART', 'ID_ART_EQUI', 'INSERT_AUTO') = 'N' THEN 0 ELSE 1 END as BIT)";
Boolean setSetIdArtEqui = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
modify ( $entity ) { setSetIdArtEqui(setSetIdArtEqui) }
end
rule "completeDescrEstesaArt"
when
eval(completeRulesEnabled)