varie: steup, invio variazioni, controllo resi

This commit is contained in:
2024-10-22 17:38:07 +02:00
parent e659810e39
commit ea0c71b4b1
6 changed files with 233 additions and 174 deletions

View File

@@ -0,0 +1,27 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241022134530 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM", "DOC_INTERNI", "DAYS_TO_EXP", null,
"Giorni da utilizzare per considerare l'articolo scaduto", false, null, false, false,
false, false, false, null, false, null);
if (isCustomerDb(IntegryCustomerDB.Carelli_Carelli) || isCustomerDb(IntegryCustomerDB.Carelli_GestFood) || isCustomerDb(IntegryCustomerDB.Carelli_Panimal))
updateSetupValue("PVM", "DOC_INTERNI", "DAYS_TO_EXP", "5");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241022151650 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
deleteSetup("w_marti_rc", "SETUP", "RICHIEDI_DATA_VAR");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -853,7 +853,8 @@ public class SteUPService {
sql = UtilityDB.addwhereCond(sql, whereCond, false);
} else if (activityTypeId.equalsIgnoreCase(tipoAttivitaRotturaStock)) {
if (repartiFreschi.contains(codJfas)) {
sql = "Select cod_mart,descrizione,bar_code as barcode,cod_msgr from steup_getGrigliaVendita(" + UtilityDB.valueToString(codMdep) + "," + UtilityDB.valueToString(codJfas) + ")";
sql = "Select cod_mart,descrizione,bar_code as barcode,cod_msgr " +
" from steup_getGrigliaVendita(" + UtilityDB.valueToString(codMdep) + "," + UtilityDB.valueToString(codJfas) + ") order by descrizione";
} else if (chkRotturaStock) {
sql = "SELECT cod_mart,descrizione,bar_code as barcode,cod_msgr\n" +
"FROM steup_getAssortimento(" + UtilityDB.valueToString(codMdep) + "," + UtilityDB.valueToString(codJfas) + ", " + UtilityDB.valueToString(dataCreation) +") art\n" +

View File

@@ -90,188 +90,190 @@ public class OlioProductionService {
Short segnoDoc = (Short) datiDoc.get("segno_doc");
List<DtbDocr> righeDoc = new ArrayList<>();
for (OlioProductionDTO.RigaMov riga : olioProductionDTO.getRigaMov()) {
String posizione = riga.getPosturaFine().getPosizione();
if ( olioProductionDTO.getRigaMov() != null && !olioProductionDTO.getRigaMov().isEmpty() ) {
for (OlioProductionDTO.RigaMov riga : olioProductionDTO.getRigaMov()) {
String posizione = riga.getPosturaFine().getPosizione();
if (UtilityString.isNullOrEmpty(posizione)) {
throw new Exception("Attenzione non è stata definita la posizione sulla movimentaizone dell'articolo " + riga.getPosturaFine().getCodMart() + ".");
}
DtbDocr dtbDocr = (DtbDocr) riga.getPosturaDa().clone();
if (UtilityString.isNullOrEmpty(dtbDocr.getPosizione())) {
dtbDocr.setPosizione(posizione);
}
String partitaMagDoc = dtbDocr.getPartitaMag();
if (UtilityString.isNullOrEmpty(partitaMagDoc)) {
String descrPartita = null;
if (setDescrPartita) {
descrPartita =
UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),
Query.format(
"SELECT rag_soc FROM gtb_anag WHERE cod_anag = %s",
dtbDoct.getCodAnag()));
if (UtilityString.isNullOrEmpty(posizione)) {
throw new Exception("Attenzione non è stata definita la posizione sulla movimentaizone dell'articolo " + riga.getPosturaFine().getCodMart() + ".");
}
Optional<MtbPartitaMag> optP =
Stream.of(entityList)
.filter(x -> x instanceof MtbPartitaMag)
.map(x -> new MtbPartitaMag().setCodMart(((MtbPartitaMag) x).getCodMart())
.setPartitaMag(((MtbPartitaMag) x).getPartitaMag())
).filter(x -> x.getCodMart().equalsIgnoreCase(dtbDocr.getCodMart())).findFirst();
if (optP.isEmpty()) {
DatiPartitaMagDTO partitaMagDto =
new DatiPartitaMagDTO()
.setCodAnag(codAnag)
.setCodMart(dtbDocr.getCodMart())
.setGestione(gestione);
partitaMagDoc = PartitaMagRules.suggestCodePartitaMag(multiDBTransactionManager.getPrimaryConnection(), partitaMagDto);
MtbPartitaMag mtbPartitaMag =
new MtbPartitaMag()
.setCodMart(dtbDocr.getCodMart())
.setPartitaMag(partitaMagDoc)
.setDataIns(dtbDoct.getDataReg())
.setDescrizione(descrPartita);
mtbPartitaMag.setOperation(OperationType.INSERT);
entityList.add(mtbPartitaMag);
} else {
partitaMagDoc = optP.get().getPartitaMag();
DtbDocr dtbDocr = (DtbDocr) riga.getPosturaDa().clone();
if (UtilityString.isNullOrEmpty(dtbDocr.getPosizione())) {
dtbDocr.setPosizione(posizione);
}
dtbDocr.setPartitaMag(partitaMagDoc);
String partitaMagDoc = dtbDocr.getPartitaMag();
if (UtilityString.isNullOrEmpty(partitaMagDoc)) {
String descrPartita = null;
if (setDescrPartita) {
descrPartita =
UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(),
Query.format(
"SELECT rag_soc FROM gtb_anag WHERE cod_anag = %s",
dtbDoct.getCodAnag()));
}
Optional<MtbPartitaMag> optP =
Stream.of(entityList)
.filter(x -> x instanceof MtbPartitaMag)
.map(x -> new MtbPartitaMag().setCodMart(((MtbPartitaMag) x).getCodMart())
.setPartitaMag(((MtbPartitaMag) x).getPartitaMag())
).filter(x -> x.getCodMart().equalsIgnoreCase(dtbDocr.getCodMart())).findFirst();
} else if (UtilityString.isNullOrEmpty(partitaMagDoc)) {
throw new Exception("Attenzione inserire la partita di magazzino sull'articolo " + dtbDocr.getCodMart());
}
if (optP.isEmpty()) {
DatiPartitaMagDTO partitaMagDto =
new DatiPartitaMagDTO()
.setCodAnag(codAnag)
.setCodMart(dtbDocr.getCodMart())
.setGestione(gestione);
partitaMagDoc = PartitaMagRules.suggestCodePartitaMag(multiDBTransactionManager.getPrimaryConnection(), partitaMagDto);
MtbPartitaMag mtbPartitaMag =
new MtbPartitaMag()
.setCodMart(dtbDocr.getCodMart())
.setPartitaMag(partitaMagDoc)
.setDataIns(dtbDoct.getDataReg())
.setDescrizione(descrPartita);
mtbPartitaMag.setOperation(OperationType.INSERT);
dtbDocr.setOperation(OperationType.INSERT);
righeDoc.add(dtbDocr);
String partitaMagNew = riga.getPosturaFine().getPartitaMag();
if (UtilityString.isNullOrEmpty(partitaMagNew)) {
Optional<MtbPartitaMag> optPartitaPosizione =
Stream.of(entityList)
.filter(x -> x instanceof MtbPartitaMag)
.map(x -> {
MtbPartitaMag partita = new MtbPartitaMag()
.setCodMart(((MtbPartitaMag) x).getCodMart())
.setPartitaMag(((MtbPartitaMag) x).getPartitaMag())
.setPosizione(((MtbPartitaMag) x).getPosizione());
return partita;
}
)
.filter(x -> UtilityString.equalsIgnoreCase(x.getPosizione(), riga.getPosturaFine().getPosizione()))
.findFirst();
if (optPartitaPosizione.isEmpty()) {
String codMartIniz = null, partitaMagIniz = null;
if (riga.getPosturaA() != null) {
codMartIniz = riga.getPosturaA().getCodMart();
entityList.add(mtbPartitaMag);
} else {
codMartIniz = null;
partitaMagDoc = optP.get().getPartitaMag();
}
dtbDocr.setPartitaMag(partitaMagDoc);
} else if (UtilityString.isNullOrEmpty(partitaMagDoc)) {
throw new Exception("Attenzione inserire la partita di magazzino sull'articolo " + dtbDocr.getCodMart());
}
dtbDocr.setOperation(OperationType.INSERT);
righeDoc.add(dtbDocr);
String partitaMagNew = riga.getPosturaFine().getPartitaMag();
if (UtilityString.isNullOrEmpty(partitaMagNew)) {
Optional<MtbPartitaMag> optPartitaPosizione =
Stream.of(entityList)
.filter(x -> x instanceof MtbPartitaMag)
.map(x -> {
MtbPartitaMag partita = new MtbPartitaMag()
.setCodMart(((MtbPartitaMag) x).getCodMart())
.setPartitaMag(((MtbPartitaMag) x).getPartitaMag())
.setPosizione(((MtbPartitaMag) x).getPosizione());
return partita;
}
)
.filter(x -> UtilityString.equalsIgnoreCase(x.getPosizione(), riga.getPosturaFine().getPosizione()))
.findFirst();
if (optPartitaPosizione.isEmpty()) {
String codMartIniz = null, partitaMagIniz = null;
if (riga.getPosturaA() != null) {
codMartIniz = riga.getPosturaA().getCodMart();
} else {
codMartIniz = null;
}
if (riga.getPosturaA() != null) {
partitaMagIniz = riga.getPosturaA().getPartitaMag();
} else {
partitaMagIniz = null;
}
MtbPartitaMag mtbPartitaMag = checkPartitaMag(codMartIniz,
partitaMagIniz,
riga.getPosturaFine().getCodMart(),
dtbDocr.getPosizione(),
dtbDoct.getDataReg(),
assegneLottoNuovo,
segnoDoc);
partitaMagNew = mtbPartitaMag.getPartitaMag();
sql =
"SELECT * " +
" FROM mtb_partita_mag_carat " +
" WHERE cod_mart = " + UtilityDB.valueToString(dtbDocr.getCodMart()) + " AND " +
"partita_mag = " + UtilityDB.valueToString(dtbDocr.getPartitaMag());
ResultSetMapper mapperCarat = new ResultSetMapper();
List<MtbPartitaMagCarat> carat = mapperCarat.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbPartitaMagCarat.class);
mtbPartitaMag.setMtbPartitaMagCarat(carat);
entityList.add(mtbPartitaMag);
} else {
partitaMagNew = optPartitaPosizione.get().getPartitaMag();
}
}
//CREAZIONE DOCUMENTO DI SCARICO VECCHIO ARTICOLI LOTTO
StbActivity stbActivityRow = createStbAcvitity(setup.get("TIPO_ATTIVITA_MOV"), idAttivita);
String idAttivitaRow = stbActivityRow.getActivityId();
entityList.add(stbActivityRow);
dtbDocr.setActivityIdRow(idAttivitaRow);
sql =
"SELECT Cast(case when olvw_caratteristiche.Confezionato = 'S' THEN 1 ELSE 0 END as bit ) " +
" FROM olvw_caratteristiche " +
" WHERE olvw_caratteristiche.cod_mart = " + UtilityDB.valueToString(dtbDocr.getCodMart());
Boolean isConfezionato = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
BigDecimal qtaDoc = riga.getPosturaFine().getQtaDoc();
if (isConfezionato) {
qtaDoc = riga.getPosturaFine().getQtaDoc().subtract(riga.getPosturaA().getQtaDoc());
}
if (riga.getPosturaA() != null || segnoDoc > 0) {
String codDtipScar = getCodDtipScar(setup);
DtbDoct dtbDoctScar = new DtbDoct();
dtbDoctScar.setActivityId(idAttivitaRow);
dtbDoctScar.setDataReg(dtbDoct.getDataReg());
dtbDoctScar.setDataDoc(dtbDoct.getDataReg());
dtbDoctScar.setCodDtip(codDtipScar);
dtbDoctScar.setCodAnag(codAnag);
dtbDoctScar.setCodVdes(codVdes);
dtbDoctScar.setCodMdep(dtbDoct.getCodMdep());
dtbDoctScar.setCodProd(riga.getPosturaFine().getCodMart());
dtbDoctScar.setPartitaMag(partitaMagNew);
dtbDoctScar.setQtaProd(qtaDoc);
dtbDoctScar.setOperation(OperationType.INSERT);
DtbDocr dtbDocrScar = null;
if (segnoDoc > 0) {
dtbDocrScar = (DtbDocr) riga.getPosturaDa().clone();
dtbDocrScar.setPartitaMag(partitaMagDoc);
dtbDoctScar.getDtbDocr().add(dtbDocrScar);
}
if (riga.getPosturaA() != null) {
partitaMagIniz = riga.getPosturaA().getPartitaMag();
} else {
partitaMagIniz = null;
dtbDocrScar = (DtbDocr) riga.getPosturaA().clone();
dtbDoctScar.getDtbDocr().add(dtbDocrScar);
}
MtbPartitaMag mtbPartitaMag = checkPartitaMag(codMartIniz,
partitaMagIniz,
riga.getPosturaFine().getCodMart(),
dtbDocr.getPosizione(),
dtbDoct.getDataReg(),
assegneLottoNuovo,
segnoDoc);
partitaMagNew = mtbPartitaMag.getPartitaMag();
entityList.add(dtbDoctScar);
sql =
"SELECT * " +
" FROM mtb_partita_mag_carat " +
" WHERE cod_mart = " + UtilityDB.valueToString(dtbDocr.getCodMart()) + " AND " +
"partita_mag = " + UtilityDB.valueToString(dtbDocr.getPartitaMag());
ResultSetMapper mapperCarat = new ResultSetMapper();
List<MtbPartitaMagCarat> carat = mapperCarat.mapQuerySetToList(multiDBTransactionManager.getPrimaryConnection(), sql, MtbPartitaMagCarat.class);
mtbPartitaMag.setMtbPartitaMagCarat(carat);
entityList.add(mtbPartitaMag);
} else {
partitaMagNew = optPartitaPosizione.get().getPartitaMag();
}
//CREAZIONE DOCUMENTO DI CARICO NUOVO ARTICOLO LOTTO
String codDtipCar = getCodDtipCar(setup);
DtbDoct dtbDoctCar = new DtbDoct();
dtbDoctCar.setActivityId(idAttivitaRow);
dtbDoctCar.setDataReg(dtbDoct.getDataReg());
dtbDoctCar.setDataDoc(dtbDoct.getDataReg());
dtbDoctCar.setCodDtip(codDtipCar);
dtbDoctCar.setCodAnag(codAnag);
dtbDoctCar.setCodVdes(codVdes);
dtbDoctCar.setCodMdep(dtbDoct.getCodMdep());
dtbDoctCar.setCodProd(riga.getPosturaFine().getCodMart());
dtbDoctCar.setPartitaMag(partitaMagNew);
dtbDoctCar.setQtaProd(qtaDoc);
dtbDoctCar.setOperation(OperationType.INSERT);
DtbDocr dtbDocrCar = (DtbDocr) riga.getPosturaFine().clone();
dtbDocrCar.setPartitaMag(partitaMagNew);
dtbDoctCar.getDtbDocr().add(dtbDocrCar);
entityList.add(dtbDoctCar);
}
//CREAZIONE DOCUMENTO DI SCARICO VECCHIO ARTICOLI LOTTO
StbActivity stbActivityRow = createStbAcvitity(setup.get("TIPO_ATTIVITA_MOV"), idAttivita);
String idAttivitaRow = stbActivityRow.getActivityId();
entityList.add(stbActivityRow);
dtbDocr.setActivityIdRow(idAttivitaRow);
sql =
"SELECT Cast(case when olvw_caratteristiche.Confezionato = 'S' THEN 1 ELSE 0 END as bit ) " +
" FROM olvw_caratteristiche " +
" WHERE olvw_caratteristiche.cod_mart = " + UtilityDB.valueToString(dtbDocr.getCodMart());
Boolean isConfezionato = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
BigDecimal qtaDoc = riga.getPosturaFine().getQtaDoc();
if (isConfezionato) {
qtaDoc = riga.getPosturaFine().getQtaDoc().subtract(riga.getPosturaA().getQtaDoc());
}
if (riga.getPosturaA() != null || segnoDoc > 0) {
String codDtipScar = getCodDtipScar(setup);
DtbDoct dtbDoctScar = new DtbDoct();
dtbDoctScar.setActivityId(idAttivitaRow);
dtbDoctScar.setDataReg(dtbDoct.getDataReg());
dtbDoctScar.setDataDoc(dtbDoct.getDataReg());
dtbDoctScar.setCodDtip(codDtipScar);
dtbDoctScar.setCodAnag(codAnag);
dtbDoctScar.setCodVdes(codVdes);
dtbDoctScar.setCodMdep(dtbDoct.getCodMdep());
dtbDoctScar.setCodProd(riga.getPosturaFine().getCodMart());
dtbDoctScar.setPartitaMag(partitaMagNew);
dtbDoctScar.setQtaProd(qtaDoc);
dtbDoctScar.setOperation(OperationType.INSERT);
DtbDocr dtbDocrScar = null;
if (segnoDoc > 0) {
dtbDocrScar = (DtbDocr) riga.getPosturaDa().clone();
dtbDocrScar.setPartitaMag(partitaMagDoc);
dtbDoctScar.getDtbDocr().add(dtbDocrScar);
}
if (riga.getPosturaA() != null) {
dtbDocrScar = (DtbDocr) riga.getPosturaA().clone();
dtbDoctScar.getDtbDocr().add(dtbDocrScar);
}
entityList.add(dtbDoctScar);
}
//CREAZIONE DOCUMENTO DI CARICO NUOVO ARTICOLO LOTTO
String codDtipCar = getCodDtipCar(setup);
DtbDoct dtbDoctCar = new DtbDoct();
dtbDoctCar.setActivityId(idAttivitaRow);
dtbDoctCar.setDataReg(dtbDoct.getDataReg());
dtbDoctCar.setDataDoc(dtbDoct.getDataReg());
dtbDoctCar.setCodDtip(codDtipCar);
dtbDoctCar.setCodAnag(codAnag);
dtbDoctCar.setCodVdes(codVdes);
dtbDoctCar.setCodMdep(dtbDoct.getCodMdep());
dtbDoctCar.setCodProd(riga.getPosturaFine().getCodMart());
dtbDoctCar.setPartitaMag(partitaMagNew);
dtbDoctCar.setQtaProd(qtaDoc);
dtbDoctCar.setOperation(OperationType.INSERT);
DtbDocr dtbDocrCar = (DtbDocr) riga.getPosturaFine().clone();
dtbDocrCar.setPartitaMag(partitaMagNew);
dtbDoctCar.getDtbDocr().add(dtbDocrCar);
entityList.add(dtbDoctCar);
dtbDoct.setDtbDocr(righeDoc);
}
dtbDoct.setDtbDocr(righeDoc);
entityList.add(dtbDoct);
} else {
String whereCondDoc =

View File

@@ -726,19 +726,19 @@ public class VariazioniPvService {
" 'A' AS tipo_variazione,\n" +
" CONVERT(VARCHAR(15), NULL) AS cod_mart_new\n" +
" FROM mtb_aart\n" +
" WHERE mtb_aart.data_ult_var = '[DATA_VALIDITA]'\n" +
" WHERE mtb_aart.data_ult_var BETWEEN dateAdd( day, -1, '[DATA_VALIDITA]') AND '[DATA_VALIDITA]'\n" +
" UNION\n" +
" SELECT jtb_cicl.cod_prod,\n" +
" 'A' AS tipo_variazione,\n" +
" CONVERT(VARCHAR(15), NULL) AS cod_mart_new\n" +
" FROM jtb_cicl\n" +
" WHERE jtb_cicl.data_ult_var = '[DATA_VALIDITA]'\n" +
" WHERE jtb_cicl.data_ult_var BETWEEN dateAdd( day, -1, '[DATA_VALIDITA]') AND '[DATA_VALIDITA]'\n" +
" UNION\n" +
" SELECT mtb_cambio_art.codice_nuovo,\n" +
" 'C' AS tipo_variazione,\n" +
" mtb_cambio_art.codice_vecchio\n" +
" FROM mtb_cambio_art\n" +
" WHERE CAST(mtb_cambio_art.dataora_cambio AS DATE) = '[DATA_VALIDITA]') art\n" +
" WHERE CAST(mtb_cambio_art.dataora_cambio AS DATE) BETWEEN dateAdd( day, -1, '[DATA_VALIDITA]') AND '[DATA_VALIDITA]') art\n" +
" INNER JOIN (SELECT vtb_list.cod_vlis AS cod_vlis,\n" +
" mtb_lisv.cod_mart\n" +
" FROM vtb_list\n" +
@@ -813,7 +813,6 @@ public class VariazioniPvService {
"Convert(varchar(1), max(assortimento.fine_promo)) as fine_promo\n " +
" FROM (\n" + queryAssortimento + "\n) assortimento inner join mtb_aart on assortimento.cod_mart = mtb_aart.cod_mart\n " +
" WHERE mtb_aart.flag_incl_listino = 'S' AND\n " +
"mtb_aart.flag_stato = 'A' AND\n " +
" EXISTS ( SELECT cod_barre from mvw_barcode WHERE mvw_barcode.cod_mart = mtb_aart.cod_mart )\n " +
(UtilityString.isNullOrEmpty(whereCond) ? "" : " AND " + whereCond) +
(UtilityString.isNullOrEmpty(filtroMenu) ? "" : " AND " + filtroMenu) +

View File

@@ -2684,6 +2684,8 @@ public class PvmService {
}
if (chkTracciabilita) {
String gg = setupGest.getSetup("PVM", "DOC_INTERNI", "DAYS_TO_EXP");
sql =
Query.format(
"WITH " +
@@ -2810,9 +2812,16 @@ public class PvmService {
continue;
}
/*valutare se creare una setup per riconoscere DDTEC*/
if (UtilityDate.DaysAfter(dataScad, UtilityDate.getTodayWithoutTime()) > 0 && codDtip.equalsIgnoreCase("DDTEC")) {
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Impossibile effetture un reso di in articolo già scaduto."));
continue;
if (codDtip.equalsIgnoreCase("DDTEC")) {
if (UtilityDate.DaysAfter(dataScad, UtilityDate.getTodayWithoutTime()) > 0 ) {
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Impossibile effetture un reso di un articolo già scaduto."));
continue;
}
if (!UtilityString.isNullOrEmpty(gg) && UtilityDate.DaysAfter(dataScad, UtilityDate.dateAdd(Calendar.DATE, Integer.parseInt(gg), UtilityDate.getTodayWithoutTime())) > 0 ) {
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Impossibile effetture un reso di un articolo sotto scadenza."));
continue;
}
}
if (UtilityDate.DaysAfter(dataScad, UtilityDate.getTodayWithoutTime()) > 15) {