Files
IntegryManagementSystem/ems-core/src/main/resources/rules/logistic.drl
GiuseppeS 5d77838838
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
Creata regola personalizzata per la generazione dei barcodeUl di OlioLevante
2025-09-16 15:58:57 +02:00

416 lines
13 KiB
Plaintext

package it.integry.rules
import it.integry.ems_model.entity.*
import it.integry.ems_model.types.OperationType
import it.integry.ems.rules.util.*
import it.integry.ems.rules.completing.*
import it.integry.ems.sync.MultiDBTransaction.Connection;
import java.util.Date
import java.math.BigDecimal
import java.math.RoundingMode
import java.util.*
import it.integry.ems_model.utility.UtilityString
import it.integry.ems_model.utility.UtilityDB
import it.integry.ems_model.entity.MtbCols
import it.integry.ems_model.entity.MtbColt
import it.integry.ems_model.entity.MtbColr
import java.time.LocalDate
import it.integry.ems_model.utility.UtilityLocalDate;
global Connection conn
global String username
global Boolean completeRulesEnabled
global Boolean checkRulesEnabled
global Boolean postRulesEnabled
//PACKAGES TESTATE
rule "completeCodVlis"
no-loop
salience 10
when
eval(completeRulesEnabled)
$packages: MtbColt(codVlis == null && codAnag != null && gestione == "V")
then
String codVlis = PackagesRules.completeCodVlis(conn, $packages.getCodAnag(), $packages.getCodVdes());
modify ( $packages ) { setCodVlis(codVlis) }
end
rule "completeDimesioneCollo"
no-loop
salience 10
when
eval(completeRulesEnabled)
$packages: MtbColt(codTcol != null && (altezzaCm == null || lunghezzaCm == null || larghezzaCm == null || altezzaCm == BigDecimal.ZERO || lunghezzaCm == BigDecimal.ZERO || larghezzaCm == BigDecimal.ZERO ))
then
HashMap<String, Object> dati = PackagesRules.completeDimensioniCollo(conn, $packages.getCodTcol());
modify ( $packages ) {
setAltezzaCm(QueryRules.<BigDecimal>getMapData(dati, $packages.getAltezzaCm(), "altezza_cm")),
setLunghezzaCm(QueryRules.<BigDecimal>getMapData(dati, $packages.getLunghezzaCm(), "lunghezza_cm")),
setLarghezzaCm(QueryRules.<BigDecimal>getMapData(dati, $packages.getLarghezzaCm(), "larghezza_cm"))
}
end
rule "completeSegno"
salience 10
when
eval(completeRulesEnabled)
$packages: MtbColt(segno == null && gestione != null)
then
Integer segno = PackagesRules.completeSegno($packages.getGestione());
modify ( $packages ) { setSegno(segno) }
end
rule "createMtbColsOnMtbColtInsert"
no-loop
when
eval(completeRulesEnabled)
$mtbColt: MtbColt((operation == OperationType.INSERT || operation == OperationType.INSERT_OR_UPDATE) && segno == 1)
then
PackagesRules.insertMtbCols($mtbColt, MtbCols.Causale.CREAZIONE);
end
rule "createMtbColsOnMtbColtPositionChanged"
no-loop
when
eval(completeRulesEnabled)
$mtbColt: MtbColt((operation == OperationType.INSERT_OR_UPDATE || operation == OperationType.UPDATE) && segno == 1)
eval(PackagesRules.isPositionChanged(conn, $mtbColt))
then
PackagesRules.insertMtbCols($mtbColt, MtbCols.Causale.POSIZIONAMENTO);
end
rule "completeFlagInsPartitaMag"
when
eval(completeRulesEnabled)
$packages: MtbColt(insPartitaMag == null)
then
String flagInsPartita = PackagesRules.completeFlagInsPartitaMag(conn, $packages.getGestione());
modify ( $packages ) { setInsPartitaMag(flagInsPartita) }
end
rule "completeSerCollo"
when
eval(completeRulesEnabled)
$packages: MtbColt(serCollo == null)
then
String serCollo = PackagesRules.getSerCollo(conn, $packages.getCodMdep());
modify ( $packages ) { setSerCollo(serCollo) }
end
rule "completeDataCollo"
when
eval(completeRulesEnabled)
$packages: MtbColt(dataCollo == null)
then
modify ( $packages ) { setDataCollo(UtilityLocalDate.getNow()) }
end
rule "completeNumCollo"
salience 9
when
eval(completeRulesEnabled)
$packages: MtbColt((numCollo == null || numCollo == 0) && serCollo != null && dataCollo != null && gestione != null)
then
Integer numCollo = PackagesRules.completeNumCollo(conn, $packages.getSerCollo(), $packages.getDataCollo(), $packages.getGestione());
modify ( $packages ) { setNumCollo(numCollo) }
end
rule "completePreparatoDa"
no-loop
when
eval(completeRulesEnabled)
$mtbColt : MtbColt(preparatoDa == null && operation != OperationType.DELETE)
then
modify($mtbColt){setPreparatoDa(username)}
end
//Set calcPeso
rule "setCalcPeso"
no-loop
when
eval(completeRulesEnabled)
$mtbColt : MtbColt(pesoKg != null && pesoKg != 0 && operation != OperationType.NO_OP && !updateColliFromDoc)
then
modify($mtbColt){
setCalcPeso(false),
setExecuteRecalc(true)
}
end
rule "setDatiOrdMtbColt"
no-loop
when
eval(completeRulesEnabled)
$mtbColt : MtbColt(dataOrd == null || numOrd == null || rifOrd == null)
then
PackagesRules.setDatiOrdMtbColt(conn, $mtbColt);
end
//PARTITA MAG
rule "completeQtaCnfPartitaMag"
when
eval(completeRulesEnabled)
$entity : MtbPartitaMag(qtaCnf == null && codMart != null)
then
String codMart = $entity.getCodMart();
String sql = "SELECT qta_cnf FROM mtb_aart WHERE cod_mart = " + UtilityDB.valueToString(codMart);
BigDecimal qtaCnf = (BigDecimal) QueryRules.getSingleValue(conn, sql);
if (qtaCnf == null) {
qtaCnf = BigDecimal.ONE;
}
modify ( $entity ) {
setQtaCnf(qtaCnf)
}
end
rule "completeCodDiviContPartitaMag"
no-loop
when
eval(completeRulesEnabled)
$partitaMag: MtbPartitaMag(codDiviCont == null || cambioDiviCont == null)
then
HashMap<String, Object> map = CommonRules.completeCodDivi(conn);
modify ( $partitaMag ) {
setCodDiviCont(UtilityHashMap.<String>getValueIfExists(map, "cod_divi_contab")),
setCambioDiviCont( new BigDecimal(QueryRules.<BigDecimal>getMapData(map, $partitaMag.getCambioDiviCont(), "cambio").toString()))
}
end
rule "completeRapConv2e3Partita"
no-loop
when
eval(completeRulesEnabled)
$entity: MtbPartitaMag((rapConv2 == null || rapConv3 == null) && codMart != null)
then
HashMap<String, Object> mapDati = PartitaMagRules.completeRapConv2e3(conn, $entity.getCodMart());
BigDecimal rapConv2 = QueryRules.<BigDecimal>getMapData(mapDati, $entity.getRapConv2(), "rap_conv2");
BigDecimal rapConv3 = QueryRules.<BigDecimal>getMapData(mapDati, $entity.getRapConv3(), "rap_conv3");
modify ( $entity ) {
setRapConv2(rapConv2),
setRapConv3(rapConv3)
}
end
rule "checkProgArt"
no-loop
when
eval(completeRulesEnabled)
$lotto: MtbPartitaMag(operation == OperationType.DELETE)
then
PartitaMagRules.deleteProgArt(conn,$lotto);
end
//PACKAGES RIGHE
rule "completeQtaCnfMtbColr"
when
eval(completeRulesEnabled)
$entity : MtbColr(qtaCnf == null && codMart != null)
then
BigDecimal qtaCnf = CommonRules.completeQtaCnf(conn, $entity);
modify ( $entity ) { setQtaCnf(qtaCnf) }
end
//PACKAGES RIGHE
rule "completeArtAPeso"
when
eval(completeRulesEnabled)
$entity : MtbColr(artAPeso == null && codMart != null )
then
String sql =
"SELECT CASE WHEN dbo.f_getTipoUntMis(mtb_aart.unt_mis) = 'KG' THEN 'S' ELSE 'N' END " +
" FROM mtb_aart WHERE cod_mart = " + UtilityDB.valueToString($entity.getCodMart());
String artAPeso = (String) QueryRules.getSingleValue(conn, sql);
if (artAPeso == null ) {
artAPeso = "N";
}
modify ( $entity ) { setArtAPeso(artAPeso) }
end
//PACKAGES RIGHE
rule "completeNumCnfMtbColr"
no-loop
when
eval(completeRulesEnabled)
$entity : MtbColr(numCnf == null && qtaCnf != null && codMart != null)
then
BigDecimal numCnf = PackagesRules.completeNumCnf(conn, $entity);
modify ( $entity ) { setNumCnf(numCnf) }
end
rule "completeQtaColMtbColr"
no-loop
when
eval(completeRulesEnabled)
$entity : MtbColr((qtaCol == null || qtaCol == 0) && qtaCnf != null && flagQtaCnfFissa == "S" && numCnf != null && codMart != null)
then
BigDecimal qtaCol = (BigDecimal) ($entity.getQtaCnf().compareTo(BigDecimal.ZERO) > 0? $entity.getQtaCnf().multiply($entity.getNumCnf()) :$entity.getNumCnf());
modify ( $entity ) { setQtaCol(qtaCol) }
end
rule "completeDescPartitaMag"
when
eval(completeRulesEnabled)
$row: MtbColr(mtbPartitaMag != null && mtbPartitaMag_descrizione != null)
then
PackagesRules.completeDescPartitaMag($row.getMtbPartitaMag(), $row.getMtbPartitaMag_descrizione());
end
rule "completePartitaMag4DataScad"
no-loop
when
eval(completeRulesEnabled)
$row: MtbColr(partitaMag == null && codMart != null && dataScadPartita != null)
then
String partitaMag = PackagesRules.completePartitaMag4DataScad(conn, $row.getCodMart(),$row.getDataScadPartita());
modify ( $row ) { setPartitaMag(partitaMag) }
end
rule "completePartitaMag"
no-loop
when
eval(completeRulesEnabled)
$row: MtbColr(mtbPartitaMag == null && (gestione != "V" || insPartitaMag == "S") && partitaMag != null && partitaMag != "[NULL]")
then
MtbPartitaMag mtbPartitaMag = PackagesRules.completeMtbPartitaMag(conn, $row);
modify ( $row ) { setMtbPartitaMag(mtbPartitaMag) }
end
rule "completeFlagQtaCnfFissa"
no-loop
when
eval(completeRulesEnabled)
$row: MtbColr(flagQtaCnfFissa == null && codMart != null)
then
String flagQtaCnfFissa = CommonRules.completeFlagQtaCnfFissa(conn, $row.getCodMart());
modify ( $row ) { setFlagQtaCnfFissa(flagQtaCnfFissa) }
end
rule "completeBarCodeColli"
no-loop
when
eval(completeRulesEnabled)
$row: MtbColr(codBarre == null && codMart != null)
then
String codBarre = CommonRules.completeCodBarre(conn, $row.getCodMart());
modify ( $row ) { setCodBarre(codBarre) }
end
rule "completeDatiTcol"
no-loop
when
eval(completeRulesEnabled)
$entity: MtbColt((pesoKg == null || pesoKg == 0) && codTcol != null)
then
String sql = "SELECT peso_kg, lunghezza_cm, larghezza_cm, altezza_cm FROM mtb_tcol WHERE cod_tcol = '" + $entity.getCodTcol() + "'";
HashMap<String, Object> mapDati = QueryRules.execSingleQuery(conn, sql);
modify ( $entity ) {
setPesoKg(QueryRules.<BigDecimal>getMapData(mapDati, $entity.getPesoKg(), "peso_kg")),
setLunghezzaCm(QueryRules.<BigDecimal>getMapData(mapDati, $entity.getLunghezzaCm(), "lunghezza_cm")),
setLarghezzaCm(QueryRules.<BigDecimal>getMapData(mapDati, $entity.getLarghezzaCm(), "larghezza_cm")),
setAltezzaCm(QueryRules.<BigDecimal>getMapData(mapDati, $entity.getAltezzaCm(), "altezza_cm"))
}
end
rule "completeCodJcomColli"
no-loop
when
eval(completeRulesEnabled)
$entity: MtbColr(codJcom == null && (gestione.equalsIgnoreCase("A") || gestione.equalsIgnoreCase("L")) && segno == 1 && dataOrd != null && numOrd != null && rigaOrd != null)
then
String codJcom = PackagesRules.completeCodJcom(conn, $entity);
modify ( $entity ) { setCodJcom(codJcom) }
end
rule "completDatiOrdineCollo"
no-loop
when
eval(completeRulesEnabled)
$entity: MtbColt((codAnag == null || codVdes == null || rifOrd ==null) && ((Objects.equals(gestione, "A") && segno == 1) || (Objects.equals(gestione, "L")) || (Objects.equals(gestione, "V") && segno == -1)) && dataOrd != null && numOrd != null && operation != OperationType.DELETE)
then
HashMap<String, Object>dati = PackagesRules.completeDatiOrdine(conn, $entity);
modify ( $entity ) {
setCodAnag(QueryRules.<String>getMapData(dati, $entity.getCodAnag(), "cod_anag")),
setCodVdes(QueryRules.<String>getMapData(dati, $entity.getCodVdes(), "cod_vdes")),
setRifOrd(QueryRules.<String>getMapData(dati, $entity.getRifOrd(), "rif_ord"))
}
end
rule "completePesoMtbColr"
no-loop
when
eval(completeRulesEnabled)
$entity: MtbColr((pesoNettoKg == null || pesoLordoKg == null) && qtaCol != null && numCnf != null && qtaCnf != null && operation != OperationType.DELETE)
then
HashMap<String, Object> dati = PackagesRules.calcPeso(conn, $entity);
modify ( $entity ) {
setPesoNettoKg(QueryRules.<BigDecimal>getMapData(dati, $entity.getPesoNettoKg(), "peso_netto")),
setPesoLordoKg(QueryRules.<BigDecimal>getMapData(dati, $entity.getPesoLordoKg(), "peso_lordo"))
}
end
rule "completeCodMartMtbColrTx"
salience 11
no-loop
when
eval(completeRulesEnabled)
$row: MtbColr(codMart == null && codBarre != null && !CommonRules.barCodeCheck(conn, codBarre) && applicationName == "TEXTILES" )
then
String sql ="SELECT cod_style as cod_mart, cod_col, cod_tagl FROM ttb_bar_code WHERE cod_barre = '" + $row.getCodBarre() + "'";
HashMap<String, Object> mapDati = QueryRules.execSingleQuery(conn, sql);
modify ( $row ) {
setCodMart(QueryRules.<String>getMapData(mapDati, $row.getCodMart(), "cod_mart")),
setCodCol(QueryRules.<String>getMapData(mapDati, $row.getCodCol(), "cod_col")),
setCodTagl(QueryRules.<String>getMapData(mapDati, $row.getCodTagl(), "cod_tagl"))
}
end
rule "completeDataInsDaColli"
no-loop
when
eval(completeRulesEnabled)
$mtbColt: MtbColt(dataIns == null && operation != OperationType.DELETE)
then
modify ( $mtbColt ) {
setDataIns($mtbColt.getDataIns()==null?new Date():$mtbColt.getDataIns())
}
end
rule "completeModificatoDaColli"
no-loop
when
eval(completeRulesEnabled)
$mtbColt: MtbColt(operation != OperationType.DELETE)
then
modify ( $mtbColt ) {
setModificatoDa( username ),
setDataUltMod(new Date())
}
end
rule "completeBarcodeUl"
no-loop
when
eval(completeRulesEnabled)
$mtbColt: MtbColt(barcodeUl == null && numCollo != null && (operation == OperationType.INSERT || operation == OperationType.INSERT_OR_UPDATE) )
then
String barcode = PackagesRules.completeBarcodeUl(conn, $mtbColt.getGestione(), $mtbColt.getDataCollo(), $mtbColt.getSerCollo(), $mtbColt.getNumCollo(), $mtbColt.getCodJfas(), null);
modify ( $mtbColt ) {
setBarcodeUl( barcode)
}
end