[ROSSOGARGANO]

- corretta gestione scarichi teorici in nuovo servizio chiusura ordine
This commit is contained in:
2025-05-14 17:36:26 +02:00
parent 47633b826c
commit a7f3775343
2 changed files with 124 additions and 221 deletions

View File

@@ -27,6 +27,7 @@ import it.integry.ems_model.entity.*;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.josql.Query;
@@ -2938,6 +2939,10 @@ public class DocumentProdService {
documentiCarico.add(generaDocumentiCaricoDaTeorico(dto));
}
if (dto.isSalvaDocumenti()){
entityProcessor.processEntityList(documentiCarico,multiDBTransactionManager,true);
UtilityEntity.throwEntitiesException(documentiCarico);
}
return documentiCarico;
}
@@ -2945,14 +2950,24 @@ public class DocumentProdService {
List<DtbDoct> documentiScarico = new ArrayList<>();
ScaricoLavorazioneDTO dtoScarico = dto.getScaricoLavorazioneDTO();
if (dtoScarico.isScaricoDaCollo()) {
documentiScarico.addAll(generaDocumentiScaricoOrdineDaColli(dto));
List<DtbDoct> scarichiDaCollo =generaDocumentiScaricoOrdineDaColli(dto);
if (dto.isSalvaDocumenti()){
entityProcessor.processEntityList(scarichiDaCollo,multiDBTransactionManager,true);
UtilityEntity.throwEntitiesException(scarichiDaCollo);
}
documentiScarico.addAll(scarichiDaCollo);
}
//<editor-fold desc="Genera scarico materiali: se c'è stato uno scarico da collo di versamento allora scarica solo
// eventuali materiali restanti Se la data del documento non viene passata da fuori allora vuole dire che la generazione
// dei carichi/scarichi deve essere fatta utilizzando la data dei colli di versamento o carico">
for (ProduzioneOrdineDTO produzione : dto.getProduzioniOrdine()){
documentiScarico.addAll(generaDocumentiScaricoMateriali(dto, produzione));
for (ProduzioneOrdineDTO produzione : dto.getProduzioniOrdine()) {
List<DtbDoct> scarichi = generaDocumentiScaricoMateriali(dto, produzione);
if (dto.isSalvaDocumenti()){
entityProcessor.processEntityList(scarichi,multiDBTransactionManager,true);
UtilityEntity.throwEntitiesException(scarichi);
}
documentiScarico.addAll(scarichi);
}
// if (dto.getDataDoc() == null) {
// documentiScarico.addAll(generaDocumentiScaricoMaterialiDaDataCollo(dto));
@@ -2990,7 +3005,7 @@ public class DocumentProdService {
return produzioni;
}
BigDecimal qtaProdotta = produzioni.stream().map(ProduzioneOrdineDTO::getQuantita).reduce(BigDecimal.ZERO,BigDecimal::add);
BigDecimal qtaProdotta = produzioni.stream().map(ProduzioneOrdineDTO::getQuantita).reduce(BigDecimal.ZERO, BigDecimal::add);
produzioni.forEach(x ->
{
x.setPesoProduzione(BigDecimal.valueOf(100).multiply(x.getQuantita()).divide(qtaProdotta, 3, RoundingMode.HALF_EVEN));
@@ -3004,6 +3019,7 @@ public class DocumentProdService {
return generaTestataDocDaOrdineLav(ordineLav, codDtip, dataDoc, serDoc, codAnag, numDoc, codMdep, ordineLav.getPartitaMag());
}
public DtbDoct generaTestataDocDaOrdineLav(DtbOrdt ordineLav, String codDtip, Date dataDoc, String serDoc, String codAnag, Integer numDoc, String codMdep, String partitaMag) throws Exception {
DtbDoct docT = new DtbDoct();
@@ -3284,7 +3300,6 @@ public class DocumentProdService {
}
return documents;
}
@@ -3406,7 +3421,7 @@ public class DocumentProdService {
" dtb_doct.data_ord = " + UtilityDB.valueDateToString(ordine.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" dtb_doct.num_ord = " + UtilityDB.valueToString(ordine.getNumOrd());
if (UtilityString.hasContent(produzioneOrdine.getPartitaMag())) {
UtilityDB.addwhereCond(sql, it.integry.ems_model.utility.Query.format("partita_mag = {}",produzioneOrdine.getPartitaMag()),true);
UtilityDB.addwhereCond(sql, it.integry.ems_model.utility.Query.format("partita_mag = {}", produzioneOrdine.getPartitaMag()), true);
}
docT = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, DtbDoct.class);
@@ -3671,7 +3686,7 @@ public class DocumentProdService {
return docsList;
}
Date dataDoc = dataDocFromCollo != null ? dataDocFromCollo.getDataDocFromCollo() : null;
List<DtbDocr> righeScarico = getRigheScaricoDocumento(chiusuraLavorazioneDTO, listMateriali, dettaglioScaricoDTO,dataDoc , dataDocFromCollo.getQtaColForDate());
List<DtbDocr> righeScarico = getRigheScaricoDocumento(chiusuraLavorazioneDTO, listMateriali, dettaglioScaricoDTO, dataDoc, dataDocFromCollo.getQtaColForDate());
if (!righeScarico.isEmpty()) {
@@ -4066,195 +4081,85 @@ public class DocumentProdService {
/*Se si tratta di una materia prima di tipo IMBALLAGGIO ed è stata passata la quantità in confezioni dal servizio,
allora il rapporto deve essere calcolato in base al numero di confezioni realizzate */
if (materiale.getGruppoContoMp() != null && tipoImballaggi.compareTo(materiale.getGruppoContoMp()) == 0 && !UtilityBigDecimal.isNullOrZero(datiScarico.getNumCnf())) {
if (BigDecimal.ZERO.compareTo(dettaglioScaricoDTO.getNumCnf()) == 0) {
throw new Exception(String.format("Numero confezioni del piano di produzione è uguale a zero. Prodotto: %s ", ordine.getCodProd()));
}
rapporto = datiScarico.getNumCnf().divide(dettaglioScaricoDTO.getNumCnf(), 10, RoundingMode.HALF_UP);
} else {
rapporto = qtaProdUMMag.divide(materiale.getQtaProdOrd(), 10, RoundingMode.HALF_UP);
rapporto = qtaProdUMMag.divide(materiale.getQtaProdOrd(), 5, RoundingMode.HALF_UP);
}
}
// Gestione quantità da scaricare
if (UtilityString.isNullOrEmpty(materiale.getPartitaMag())) {
materiale.setQtaMate(materiale.getQtaMate().multiply(rapporto).setScale(5, RoundingMode.HALF_UP));
if ("S".equals(materiale.getFlagDig())) {
materiale.setQtaMate(materiale.getQtaMate().setScale(0, RoundingMode.CEILING));
}
RigaScaricoDTO riga = new RigaScaricoDTO();
riga.setQtaInevasa(materiale.getQtaMate());
riga.setRigaOrd(materiale.getRigaOrd());
righeScarichi.add(riga);
} else {
// Acquisizione quantità totale definita nell'ordine di lavorazione per l'articolo in questione
if (materialiProcessati.stream().noneMatch(x -> x.equalsIgnoreCase(materiale.getCodMart()))) {
materialiProcessati.add(materiale.getCodMart());
String sql =
" SELECT ISNULL(sum(qta_ord), 0) as qta_mate_tot " +
" FROM dtb_ordr " +
" WHERE dtb_ordr.gestione = " + UtilityDB.valueToString(ordine.getGestione()) + " AND " +
" dtb_ordr.data_ord = " + UtilityDB.valueDateToString(ordine.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" dtb_ordr.num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + " AND " +
" dtb_ordr.cod_mart = " + UtilityDB.valueToString(materiale.getCodMart()) + " AND " +
" dtb_ordr.flag_evaso <> 'A' AND " +
" dtb_ordr.partita_mag IS NOT NULL ";
BigDecimal qtaDaScaricareTot = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
// Quantità totale materiale proporzionato alla quantità di prodotto da realizzare
qtaDaScaricareTot = qtaDaScaricareTot.multiply(rapporto).setScale(5, RoundingMode.HALF_UP);
// Acquisizione dettaglio partite associate alla materia prima
sql =
" SELECT dtb_ordr.riga_ord, " +
" CASE WHEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa > 0 THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa ELSE mtb_part_dt.qta_esistente / dtb_ordr.rap_conv END as qta_inevasa, " +
" ISNULL(dtb_ordr.partita_mag, '') as partita_mag, " +
" mtb_part_dt.qta_esistente / dtb_ordr.rap_conv as giacenza" +
" FROM dtb_ordr LEFT OUTER JOIN mtb_part_dt ON dtb_ordr.cod_mart = mtb_part_dt.cod_mart AND " +
" dtb_ordr.partita_mag = mtb_part_dt.partita_mag AND " +
" dtb_ordr.cod_mdep = mtb_part_dt.cod_mdep " +
" WHERE dtb_ordr.gestione = " + UtilityDB.valueToString(ordine.getGestione()) + " AND " +
" dtb_ordr.data_ord = " + UtilityDB.valueDateToString(ordine.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" dtb_ordr.num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + " AND " +
" dtb_ordr.cod_mart = " + UtilityDB.valueToString(materiale.getCodMart()) + " AND " +
" dtb_ordr.flag_evaso <> 'A' AND " +
" dtb_ordr.qta_ord - dtb_ordr.qta_evasa <> 0 AND " +
" dtb_ordr.partita_mag IS NOT NULL " +
"ORDER BY dtb_ordr.riga_ord ";
List<RigaScaricoDTO> dettagliScarico = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, RigaScaricoDTO.class);
if (dettagliScarico == null) {
dettagliScarico = new ArrayList<>();
}
if (!dettagliScarico.isEmpty()) {
Iterator<RigaScaricoDTO> scaricoDTOIterator = dettagliScarico.iterator();
while (UtilityBigDecimal.greaterThan(qtaDaScaricareTot, BigDecimal.ZERO) && scaricoDTOIterator.hasNext()) {
RigaScaricoDTO dettaglioScarico = scaricoDTOIterator.next();
// Se la quantità da scaricare è minore della quantità inevasa sull'ordine allora la quantità viene assegnata ad un unica partita,
// se la quantita da scaricare è maggiore allora viene scaricata la quantità dell'ordine da una partita e la quantità residua da
// eventuale altra partita di magazzino se disponibile in caso constrario il sistema blocca lo scarico visualizzando un messaggio
BigDecimal qtaScarico = UtilityBigDecimal.getLowerBetween(qtaDaScaricareTot, dettaglioScarico.getQtaInevasa());
if ("S".equals(materiale.getFlagDig())) {
qtaScarico = qtaScarico.setScale(0, RoundingMode.CEILING);
}
qtaDaScaricareTot = qtaDaScaricareTot.subtract(qtaScarico);
RigaScaricoDTO riga = new RigaScaricoDTO();
riga.setQtaInevasa(qtaScarico);
riga.setRigaOrd(materiale.getRigaOrd());
riga.setPartitaMag(riga.getPartitaMag());
righeScarichi.add(riga);
if (!scaricoDTOIterator.hasNext()) {
qtaDaScaricareTot = BigDecimal.ZERO;
}
}
} else if (qtaDaScaricareTot.compareTo(BigDecimal.ZERO) != 0) {
// Se non ci sono righe di ordine inevase con relativa partita e la quantità residua da scaricare è diversa da 0
// allora viene presa l'ultima partita scaricata ed assegnata la quantità residua ad essa se la giacenza è
// sufficiente in caso contrario il programma blocca lo scarico
sql =
" SELECT TOP 1 dtb_ordr.riga_ord, " +
" mtb_part_dt.qta_esistente / dtb_ordr.rap_conv as giacenza, " +
" ISNULL(dtb_ordr.partita_mag, '') as partita_mag " +
" FROM dtb_ordr LEFT OUTER JOIN mtb_part_dt ON dtb_ordr.cod_mart = mtb_part_dt.cod_mart AND " +
" dtb_ordr.partita_mag = mtb_part_dt.partita_mag AND " +
" dtb_ordr.cod_mdep = mtb_part_dt.cod_mdep " +
" WHERE dtb_ordr.gestione = " + UtilityDB.valueToString(ordine.getGestione()) + " AND " +
" dtb_ordr.data_ord = " + UtilityDB.valueDateToString(ordine.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" dtb_ordr.num_ord = " + UtilityDB.valueToString(ordine.getNumOrd()) + " AND " +
" dtb_ordr.cod_mart = " + UtilityDB.valueToString(materiale.getCodMart()) + " AND " +
" dtb_ordr.flag_evaso <> 'A' " +
"ORDER BY dtb_ordr.riga_ord DESC ";
List<RigaScaricoDTO> lista = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, RigaScaricoDTO.class);
if (lista == null) {
lista = new ArrayList<>();
}
for (RigaScaricoDTO row : lista) {
if (row.getGiacenza().compareTo(BigDecimal.ZERO) == 0) {
throw new Exception("Impossibile procedure allo scarico della materia prima " + materiale.getCodMart() + " lotto " + row.getPartitaMag() + ". " +
"La partita non ha giacenza sufficiente per lo scarico: qtà da scaricare = " + qtaDaScaricareTot + " giacenza= " + row.getGiacenza());
}
if ("S".equals(materiale.getFlagDig())) {
qtaDaScaricareTot = qtaDaScaricareTot.setScale(0, RoundingMode.CEILING);
}
RigaScaricoDTO riga = new RigaScaricoDTO();
riga.setQtaInevasa(qtaDaScaricareTot);
riga.setRigaOrd(riga.getRigaOrd());
riga.setPartitaMag(riga.getPartitaMag());
righeScarichi.add(riga);
qtaDaScaricareTot = BigDecimal.ZERO;
}
}
} else {
continue;
}
BigDecimal qtaDaScaricare = materiale.getQtaMate().multiply(rapporto);
if (UtilityBigDecimal.equalsOrLowerThan(qtaDaScaricare, BigDecimal.ZERO)) {
// se la quantità da scaricare è zero o negativa passo al prossimo materiale
continue;
}
if ("S".equals(materiale.getFlagDig())) {
qtaDaScaricare = qtaDaScaricare.setScale(0, RoundingMode.CEILING);
}
String sql;
if (UtilityString.isNullOrEmpty(materiale.getPartitaMag()) && righeScarichi.isEmpty()) {
if ("S".equals(materiale.getFlagTracciabilita())) {
/*Verifica quantità totale per partita disponibile, se non sufficiente allora
boolean strictCheckPartita = UtilityString.hasContent(materiale.getPartitaMag());
String filtroPartite = UtilityString.isNull(materiale.getPartitaMag(), materiale.getSystemNote());
/*Verifica quantità totale per partita disponibile, se non sufficiente allora
va comunque scaricata la quantità mancante senza la partita*/
String order = setupGest.getSetupDepo(multiDBTransactionManager.getPrimaryConnection(), "CARICO_SCARICO_PF", "SETUP", "ORDINAMENTO_PARTITA", datiScarico.getCodMdep());
if (order == null) {
order = "ASC";
}
// Acquisizione tipo metodo assegnazione partite su articoli che prevedono tracciabilità
String tipoMetodo = "FIFO"; // Default
if (order.compareTo("ASC") == 0) {
tipoMetodo = "FIFO";
} else if (order.compareTo("DESC") == 0) {
tipoMetodo = "LIFO";
} else if (order.compareTo("FEFO") == 0) {
tipoMetodo = order;
} else {
tipoMetodo = "FIFO";
}
sql =
" select ISNULL(sum(qta),0) " +
" from dbo.getQtaXPartitaMag(" + UtilityDB.valueToString(datiScarico.getCodMdep()) + ", " + UtilityDB.valueToString(materiale.getCodMart()) + ", " + UtilityDB.valueToString(tipoMetodo) + "," + UtilityDB.valueToString(materiale.getQtaMate()) + ", 0, " + UtilityDB.valueToString(materiale.getSystemNote()) + ", " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + ", " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + ")";
BigDecimal qtaTot = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (UtilityString.hasContent(filtroPartite) || materiale.getFlagTracciabilita().equalsIgnoreCase("S")) {
BigDecimal qtaResidua = materiale.getQtaMate().subtract(qtaTot);
sql = "";
if (qtaResidua.setScale(0, RoundingMode.HALF_UP).compareTo(BigDecimal.ZERO) > 0) {
sql =
"select NULL as partita_mag, " +
" " + UtilityDB.valueToString(qtaResidua) + " as qta_inevasa, " +
UtilityDB.valueToString(materiale.getRigaOrd()) + " as riga_ord " +
"UNION ALL";
}
// Se non c'è partita di magazzino, ma la materia prima prevede tracciabilità allora l'assegnazione
// della partita verrà fatta utilizzando la tecnica stabilita per l'azienda (FIFO, LIFO, FEFO)
sql +=
" select partita_mag, " +
" qta as qta_inevasa, " +
UtilityDB.valueToString(materiale.getRigaOrd()) + " as riga_ord " +
" from dbo.getQtaXPartitaMag(" + UtilityDB.valueToString(datiScarico.getCodMdep()) + ", " + UtilityDB.valueToString(materiale.getCodMart()) + ", " + UtilityDB.valueToString(tipoMetodo) + "," + UtilityDB.valueToString(materiale.getQtaMate()) + ",0, " + UtilityDB.valueToString(materiale.getSystemNote()) + ", " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + ", " + UtilityDB.valueDateToString(dataDoc, CommonConstants.DATE_FORMAT_YMD) + ")";
} else {
// Se la partita non c'è e non è tracciabile allora non verrà fatta alcuna assegnazione di partita
sql = "SELECT null as partita_mag, " +
"CONVERT(numeric(20,5), " + UtilityDB.valueToString(materiale.getQtaMate()) + ") as qta_inevasa , " +
UtilityDB.valueToString(materiale.getRigaOrd()) + " as riga_ord";
String order = setupGest.getSetupDepo(multiDBTransactionManager.getPrimaryConnection(), "CARICO_SCARICO_PF", "SETUP", "ORDINAMENTO_PARTITA", datiScarico.getCodMdep());
if (order == null) {
order = "ASC";
}
righeScarichi = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, RigaScaricoDTO.class);
if (righeScarichi == null) {
righeScarichi = new ArrayList<>();
String ordineDiPrelievo;
switch (order) {
case "DESC":
ordineDiPrelievo = "LIFO";
break;
case "FEFO":
ordineDiPrelievo = order;
break;
case "ASC":
default:
ordineDiPrelievo = "FIFO";
break;
}
String sql = it.integry.ems_model.utility.Query.format("select partita_mag, qta as qta_inevasa, {} as riga_ord\n" +
"from dbo.getQtaXPartitaMag({},\n" +
" {},\n" +
" {},\n" +
" {},\n" +
" 0,\n" +
" {},\n" +
" {})",
materiale.getRigaOrd(),
datiScarico.getCodMdep(),
materiale.getCodMart(),
ordineDiPrelievo,
qtaDaScaricare,
materiale.getSystemNote(),
dataDoc, CommonConstants.DATE_FORMAT_YMD);
List<RigaScaricoDTO> partiteDisponibili = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, RigaScaricoDTO.class);
if (UtilityList.isNullOrEmpty(partiteDisponibili)) {
partiteDisponibili = new ArrayList<>();
}
List<String> partitePrioritarie = Arrays.asList(StringUtils.split(filtroPartite, "|"));
Iterator<RigaScaricoDTO> iteratorScarichi = partiteDisponibili.iterator();
while (iteratorScarichi.hasNext() && UtilityBigDecimal.greaterThan(qtaDaScaricare, BigDecimal.ZERO)) {
RigaScaricoDTO row = iteratorScarichi.next();
if (!partitePrioritarie.contains(row.getPartitaMag()) && strictCheckPartita) {
continue;
}
qtaDaScaricare = qtaDaScaricare.subtract(row.getQtaInevasa());
righeScarichi.add(row);
}
}
//se non ci sono più partite aggiungo una riga con partita a null e le quntità rimanenti
if (UtilityBigDecimal.greaterThan(qtaDaScaricare, BigDecimal.ZERO)) {
RigaScaricoDTO row = new RigaScaricoDTO();
row.setQtaInevasa(qtaDaScaricare)
.setRigaOrd(materiale.getRigaOrd());
righeScarichi.add(row);
}
for (RigaScaricoDTO row : righeScarichi) {

View File

@@ -787,8 +787,9 @@ public class ProductionService {
ordine.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(ordine, multiDBTransactionManager);
if (chiusuraLavorazioneDTO.isEffettuaCarico() || chiusuraLavorazioneDTO.isEffettuaScarico()) {
entityBaseList.addAll(documentProdService.generaDocumentiLavorazione(chiusuraLavorazioneDTO));
List<DtbDoct> documentiGenerati = (documentProdService.generaDocumentiLavorazione(chiusuraLavorazioneDTO));
}
if (chiusuraLavorazioneDTO.isChiudiOrdine()) {
boolean generateLotto = setupGest.getSetupBoolean(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "GENERA_LOTTO_PROD", "GENERA_LOTTO");
@@ -807,11 +808,8 @@ public class ProductionService {
entityBaseList.add(terminaLavorazioneLinea(ordine, chiusuraLavorazioneDTO.getCodJfas()));
}
if (chiusuraLavorazioneDTO.isSalvaDocumenti()) {
entityProcessor.processEntityList(entityBaseList, true);
UtilityEntity.throwEntitiesException(entityBaseList);
//distribuzioneMateriali();
}
entityProcessor.processEntityList(entityBaseList, true);
UtilityEntity.throwEntitiesException(entityBaseList);
String syncChiusuraOrdineLavorazione = String.format("SET NOCOUNT ON; EXEC MES_SyncChiusuraOrdineLavorazione %d, %s, %s; SET NOCOUNT OFF;",
ordine.getNumOrd(),
UtilityDB.valueToString(ordine.getDataOrd()),
@@ -847,7 +845,7 @@ public class ProductionService {
if (chiusuraLavorazioneDTO.getDataDoc() != null) {
dataDoc = chiusuraLavorazioneDTO.getDataDoc();
} else {
} else {
dataDoc = new Date();
}
@@ -971,7 +969,7 @@ public class ProductionService {
List<DtbOrdSteps> steps = UtilityDB.executeSimpleQueryDTO(conn, sql, DtbOrdSteps.class);
if (!UtilityList.isNullOrEmpty(steps)){
if (!UtilityList.isNullOrEmpty(steps)) {
ordineLav.getDtbOrdSteps().addAll(steps.stream().peek(step -> step.setOperation(OperationType.UPDATE)).collect(Collectors.toList()));
}
@@ -1659,29 +1657,29 @@ public class ProductionService {
// String partitaMagQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
//
// if (partitaMagQuery == null) {
// La partita per data scad non esiste, leggere l'ultima e creane una nuova
String sql = Query.format(
"SELECT MAX(partita_mag)\n" +
"FROM mtb_partita_mag\n" +
"WHERE cod_mart = %s\n" +
"AND partita_mag_prod = %s\n",
codMart,
partitaMag
);
// La partita per data scad non esiste, leggere l'ultima e creane una nuova
String sql = Query.format(
"SELECT MAX(partita_mag)\n" +
"FROM mtb_partita_mag\n" +
"WHERE cod_mart = %s\n" +
"AND partita_mag_prod = %s\n",
codMart,
partitaMag
);
String lastPartitaMag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
String lastPartitaMag = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
if (lastPartitaMag != null) {
char lastPartitaChar = lastPartitaMag.charAt(lastPartitaMag.length() - 1);
if (lastPartitaMag != null) {
char lastPartitaChar = lastPartitaMag.charAt(lastPartitaMag.length() - 1);
if (Character.isDigit(lastPartitaChar)) {
lastPartitaChar = 'A';
} else {
lastPartitaChar++;
}
partitaMag += lastPartitaChar;
if (Character.isDigit(lastPartitaChar)) {
lastPartitaChar = 'A';
} else {
lastPartitaChar++;
}
partitaMag += lastPartitaChar;
}
// } else {
// partitaMag = partitaMagQuery;
// }
@@ -1727,19 +1725,19 @@ public class ProductionService {
return entityBaseList;
}
public String getCodDtipCaricoLavorazione(boolean isOrdineInterno)throws Exception {
if (isOrdineInterno){
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"W_PORDI_RC","SETUP_DOCUMENTI","COD_DTIP_CAR");
}else {
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"DATI_AZIENDA","CONTO_LAVORO","COD_DTIP_CLAV");
public String getCodDtipCaricoLavorazione(boolean isOrdineInterno) throws Exception {
if (isOrdineInterno) {
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_CAR");
} else {
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "DATI_AZIENDA", "CONTO_LAVORO", "COD_DTIP_CLAV");
}
}
public String getCodDtipScaricoLavorazione(boolean isOrdineInterno)throws Exception {
if (isOrdineInterno){
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"W_PORDI_RC","SETUP_DOCUMENTI","COD_DTIP_SCAR");
}else {
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(),"DATI_AZIENDA","CONTO_LAVORO","COD_DTIP_SLAV");
public String getCodDtipScaricoLavorazione(boolean isOrdineInterno) throws Exception {
if (isOrdineInterno) {
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "W_PORDI_RC", "SETUP_DOCUMENTI", "COD_DTIP_SCAR");
} else {
return setupGest.getSetup(multiDBTransactionManager.getPrimaryConnection(), "DATI_AZIENDA", "CONTO_LAVORO", "COD_DTIP_SLAV");
}
}
}