modifiche a variaizone data consegna su ordini di vendita, modificato controllo tagli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
import it.integry.ems_model.utility.Query;
|
||||
|
||||
public class Migration_20250609185006 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
String descrizione = "Questa setup indica i giorni di scadenza da controllore, è configurabile per tipo documento. Può contenere un numero oppure un json con questa struttura [{\"codMgrp\":\"02\",\"gg\":5}] per differenziare la setup per gruppo merceologico.";
|
||||
executeStatement(Query.format("update stb_gest_setup SET description = %S where gest_name = %S AND section = %S AND KEY_SECTION = %S",
|
||||
descrizione, "PVM","DOC_INTERNI","DAYS_TO_EXP"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,8 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -394,7 +396,7 @@ public class PvmController {
|
||||
}
|
||||
|
||||
try {
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocReso(docFromPickingDTO);
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocumentiInterni(docFromPickingDTO);
|
||||
if (anomalieResiDTOS == null || anomalieResiDTOS.isEmpty())
|
||||
return ServiceRestResponse.createEntityPositiveResponse(pvmServiceSave.saveDocFromPicking(docFromPickingDTO));
|
||||
else {
|
||||
@@ -418,7 +420,7 @@ public class PvmController {
|
||||
}
|
||||
|
||||
try {
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocReso(docFromPickingDTO);
|
||||
List<AnomalieResiDTO> anomalieResiDTOS = pvmService.checkDocumentiInterni(docFromPickingDTO);
|
||||
if (anomalieResiDTOS == null || anomalieResiDTOS.isEmpty())
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
else {
|
||||
@@ -809,4 +811,17 @@ public class PvmController {
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping(value = "pvm/updateDataCons", method = RequestMethod.POST)
|
||||
public @ResponseBody
|
||||
ServiceRestResponse updateDataCons(
|
||||
@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestParam String gestione,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataOrd ,
|
||||
@RequestParam Integer numOrd,
|
||||
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date dataCons) throws Exception {
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(pvmService.updateDataCons(gestione, dataOrd, numOrd, dataCons));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package it.integry.ems.retail.pvmRetail.dto;
|
||||
|
||||
public class CheckDocInterniShelfLifeDTO {
|
||||
private String codMgrp;
|
||||
private Integer gg;
|
||||
|
||||
public String getCodMgrp() {
|
||||
return codMgrp;
|
||||
}
|
||||
|
||||
public CheckDocInterniShelfLifeDTO setCodMgrp(String codMgrp) {
|
||||
this.codMgrp = codMgrp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getGg() {
|
||||
return gg;
|
||||
}
|
||||
|
||||
public CheckDocInterniShelfLifeDTO setGg(Integer gg) {
|
||||
this.gg = gg;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,6 @@ import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.system.service.SystemService;
|
||||
import it.integry.ems.user.UserSession;
|
||||
import it.integry.ems.utility.UtilityDebug;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.base.EntityBase;
|
||||
import it.integry.ems_model.coollection.Coollection;
|
||||
@@ -166,7 +165,7 @@ public class PvmService {
|
||||
" WHERE STB_GEST_SETUP_DEPO.citta_cons like '%" + citta + "%' " +
|
||||
" GROUP BY num_range, dstart, dEnd, num_cons_max, CITTA_CONS ";
|
||||
|
||||
List<OrdChkConsDTO> ordChkConsDTO = UtilityDB.executeSimpleQueryDTO(conn,sql, OrdChkConsDTO.class);
|
||||
List<OrdChkConsDTO> ordChkConsDTO = UtilityDB.executeSimpleQueryDTO(conn, sql, OrdChkConsDTO.class);
|
||||
|
||||
return ordChkConsDTO;
|
||||
|
||||
@@ -1675,8 +1674,8 @@ public class PvmService {
|
||||
row.setOperation(OperationType.SELECT_OBJECT);
|
||||
row.setOnlyPkMaster(false);
|
||||
|
||||
rows.add(row);
|
||||
}
|
||||
rows.add(row);
|
||||
}
|
||||
rsRows.close();
|
||||
psRows.close();
|
||||
|
||||
@@ -1910,7 +1909,7 @@ public class PvmService {
|
||||
return mtbColtsToReturn;
|
||||
}
|
||||
|
||||
public List<AnomalieResiDTO> checkDocReso(DocFromPickingDTO docFromPickingDTO) throws Exception {
|
||||
public List<AnomalieResiDTO> checkDocumentiInterni(DocFromPickingDTO docFromPickingDTO) throws Exception {
|
||||
List<AnomalieResiDTO> anomalieResiDTO = new ArrayList<>();
|
||||
|
||||
String codMdep = getCodMdep(requestDataDTO.getUsername());
|
||||
@@ -1958,12 +1957,21 @@ public class PvmService {
|
||||
if (chkTracciabilita) {
|
||||
List<HashMap<String, Object>> setupSectionDet = setupGest.getSetupSectionDet(multiDBTransactionManager.getPrimaryConnection(), "PVM", "DOC_INTERNI", "DAYS_TO_EXP", "dtb_tipi");
|
||||
|
||||
String gg ="";
|
||||
List<CheckDocInterniShelfLifeDTO> checkDocInterniShelfLifeDTOS = new ArrayList<>();
|
||||
Integer gg = null;
|
||||
if (setupSectionDet != null && !setupSectionDet.isEmpty()) {
|
||||
gg = setupSectionDet
|
||||
String ret = setupSectionDet
|
||||
.stream()
|
||||
.filter(x -> x.get("val_col_rif") != null && ((String) x.get("val_col_rif")).equalsIgnoreCase(codDtip))
|
||||
.findFirst().map(x -> (String) x.get("value")).orElse(null);
|
||||
.findFirst().map(x -> (String) x.get("value")).orElse(null);
|
||||
if (!UtilityString.isNullOrEmpty(ret) ) {
|
||||
try {
|
||||
gg = Integer.parseInt(ret);
|
||||
} catch (NumberFormatException ex) {
|
||||
checkDocInterniShelfLifeDTOS = Arrays.asList(jsonObjectMapper.readValue(ret, CheckDocInterniShelfLifeDTO[].class));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
sql =
|
||||
Query.format(
|
||||
@@ -2067,7 +2075,8 @@ public class PvmService {
|
||||
" movi.data_scad AS data_scad_acq,\n" +
|
||||
" movi.suddivisione,\n" +
|
||||
" mtb_aart.gg_scad_partita,\n" +
|
||||
" movi.data_doc\n" +
|
||||
" movi.data_doc,\n" +
|
||||
" mtb_aart.cod_mgrp\n " +
|
||||
"FROM colli\n" +
|
||||
" INNER JOIN mtb_aart ON colli.cod_mart = mtb_aart.cod_mart\n" +
|
||||
" LEFT OUTER JOIN setup ON mtb_aart.cod_mgrp = setup.cod_mgrp\n" +
|
||||
@@ -2081,6 +2090,14 @@ public class PvmService {
|
||||
for (HashMap<String, Object> lotto : partiteErrate) {
|
||||
String codMart = UtilityHashMap.getValueIfExists(lotto, "cod_mart");
|
||||
Date dataScad = UtilityHashMap.getValueIfExists(lotto, "data_scad");
|
||||
String codMgrp = UtilityHashMap.getValueIfExists(lotto, "cod_mgrp");
|
||||
|
||||
if (checkDocInterniShelfLifeDTOS != null && !checkDocInterniShelfLifeDTOS.isEmpty()) {
|
||||
gg = checkDocInterniShelfLifeDTOS
|
||||
.stream()
|
||||
.filter(x -> x.getCodMgrp().equalsIgnoreCase(codMgrp))
|
||||
.map(x -> x.getGg()).findFirst().orElse(null);
|
||||
}
|
||||
if (dataScad == null) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Inserire la data scadenza."));
|
||||
continue;
|
||||
@@ -2097,7 +2114,7 @@ public class PvmService {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(gg) && UtilityDate.DaysAfter(dataScad, UtilityDate.dateAdd(Calendar.DATE, Integer.parseInt(gg), UtilityDate.getTodayWithoutTime())) > 0) {
|
||||
if (gg != null && UtilityDate.DaysAfter(dataScad, UtilityDate.dateAdd(Calendar.DATE, gg, UtilityDate.getTodayWithoutTime())) > 0) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, "Impossibile effetture un reso di un articolo sotto scadenza."));
|
||||
continue;
|
||||
}
|
||||
@@ -2120,8 +2137,8 @@ public class PvmService {
|
||||
if (qtaAcq != null && UtilityBigDecimal.greaterThan(UtilityHashMap.getValueIfExists(lotto, "qta_col"), qtaAcq)) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, String.format("Quantità resa maggiore di quantità acquistata %s", qtaAcq)));
|
||||
}
|
||||
} else if (!UtilityString.isNullOrEmpty(gg)) {
|
||||
if (UtilityDate.DaysAfter(UtilityDate.getTodayWithoutTime(), dataScad) > Integer.parseInt(gg)) {
|
||||
} else if (gg != null && !gestioneDoc.equalsIgnoreCase("A")) {
|
||||
if (UtilityDate.DaysAfter(UtilityDate.getTodayWithoutTime(), dataScad) > gg) {
|
||||
anomalieResiDTO.add(setAnomalia(anomalieResiDTO, codMart, dataScad, String.format("Impossibile effetture un %S di un articolo con scadenza %s.", codDtip, UtilityDate.formatDate(dataScad, CommonConstants.DATE_FORMAT_DMY))));
|
||||
continue;
|
||||
}
|
||||
@@ -2317,7 +2334,7 @@ public class PvmService {
|
||||
Integer numOrd = inputValue.get("numOrd").asInt() != 0 ? inputValue.get("numOrd").asInt() : null;
|
||||
|
||||
if (numOrd == null) {
|
||||
dataOrd = new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).format(new Date());
|
||||
dataOrd = new SimpleDateFormat(DATE_FORMAT_YMD).format(new Date());
|
||||
}
|
||||
|
||||
String query = "SELECT mtb_depo.cod_anag, mtb_depo.cod_vdes " +
|
||||
@@ -2339,7 +2356,7 @@ public class PvmService {
|
||||
info.close();
|
||||
|
||||
wdtbOrdt.setGestione(gestione);
|
||||
wdtbOrdt.setDataOrd(new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdt.setDataOrd(new SimpleDateFormat(DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdt.setNumOrd(numOrd);
|
||||
wdtbOrdt.setSerie(serie);
|
||||
wdtbOrdt.setCodAnag(codAnag);
|
||||
@@ -2363,7 +2380,7 @@ public class PvmService {
|
||||
//Letta la riga ord direttamente dal db.
|
||||
query = "SELECT riga_ord "
|
||||
+ "FROM wdtb_ordr "
|
||||
+ "WHERE data_ord = " + UtilityDB.valueDateToString(new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).parse(dataOrd), CommonConstants.DATE_FORMAT_YMD) + " AND "
|
||||
+ "WHERE data_ord = " + UtilityDB.valueDateToString(new SimpleDateFormat(DATE_FORMAT_YMD).parse(dataOrd), DATE_FORMAT_YMD) + " AND "
|
||||
+ " num_ord = " + numOrd + " AND "
|
||||
+ " cod_mart = " + UtilityDB.valueToString(codStyle) + " AND "
|
||||
+ " cod_col = " + UtilityDB.valueToString(codCol) + " AND "
|
||||
@@ -2384,7 +2401,7 @@ public class PvmService {
|
||||
if (rigaOrd != null) {
|
||||
wdtbOrdr.setOperation(OperationType.DELETE);
|
||||
|
||||
wdtbOrdr.setDataOrd(new SimpleDateFormat(CommonConstants.DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdr.setDataOrd(new SimpleDateFormat(DATE_FORMAT_YMD).parse(dataOrd));
|
||||
wdtbOrdr.setNumOrd(numOrd);
|
||||
wdtbOrdr.setGestione(gestione);
|
||||
wdtbOrdr.setSerie(serie);
|
||||
@@ -2735,4 +2752,32 @@ public class PvmService {
|
||||
return null;
|
||||
return permessi.stream().collect(Collectors.groupingBy(PvmAuthorizationDTO::getUsername));
|
||||
}
|
||||
|
||||
public DtbOrdt updateDataCons(String gestione, Date dataOrd, Integer numOrd, Date dataCons) throws Exception {
|
||||
if (dataCons == null) {
|
||||
throw new Exception("Data di consegna non valida");
|
||||
}
|
||||
|
||||
String sql = Query.format("SELECT * FROM dtb_ordr WHERE gestione = %s AND data_ord = %s AND num_ord = %s",
|
||||
gestione, dataOrd, numOrd);
|
||||
|
||||
List<DtbOrdr> dtbOrdrList = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdr.class);
|
||||
|
||||
dtbOrdrList.stream().forEach(x -> {
|
||||
x.setDataCons(dataCons);
|
||||
x.setOperation(OperationType.UPDATE);
|
||||
}
|
||||
);
|
||||
|
||||
DtbOrdt dtbOrdt = new DtbOrdt()
|
||||
.setGestione(gestione)
|
||||
.setDataOrd(dataOrd)
|
||||
.setNumOrd(numOrd)
|
||||
.setDtbOrdr(dtbOrdrList);
|
||||
dtbOrdt.setOperation(OperationType.NO_OP);
|
||||
|
||||
entityProcessor.processEntity(dtbOrdt, multiDBTransactionManager);
|
||||
return dtbOrdt;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user