diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java new file mode 100644 index 00000000..82d3d8a4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java @@ -0,0 +1,10 @@ +package it.integry.integrywmsnative.core.exception; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityResources; + +public final class InvalidCodMdepException extends Exception { + public InvalidCodMdepException() { + super(UtilityResources.getString(R.string.invalid_codmdep)); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index de821f7b..2686d2b0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -213,10 +213,16 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab (recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA || recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) { + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + if(recoveredMtbColtDto.getTestateOrdini() != null && + !recoveredMtbColtDto.getTestateOrdini().isEmpty()){ + codMdep = recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep(); + } + var closeUDSRequestDto = new CloseUDSRequestDTO() .setMtbColt(recoveredMtbColt) //.setPrintSSCC(shouldPrint) - .setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep()); + .setOrderCodMdep(codMdep); RunnableArgs onRequestComplete = closeUDSResponseDto -> { colliDataRecoverService.closeSession(recoveredMtbColtID); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 6d727dbb..48c17530 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -13,6 +13,7 @@ import java.util.List; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; @@ -211,7 +212,14 @@ public class PickingLiberoViewModel { } } else if (mtbColtList.size() == 1) { this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { - pickMerceULtoUL(mtbColt, articolo, onComplete); + + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + pickMerceULtoUL(mtbColt, articolo, onComplete); + } else this.sendError(new InvalidCodMdepException()); + }, this::sendError); } else { this.sendError(new TooManyLUFoundInMonoLUPositionException()); @@ -235,7 +243,14 @@ public class PickingLiberoViewModel { if (mtbColtScanned == null) { this.sendError(new NoLUFoundException()); } else if ((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) { - pickMerceULtoUL(mtbColtScanned, onComplete); + + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColtScanned.getCodMdep())); + + if (codMdepIsValid) { + pickMerceULtoUL(mtbColtScanned, onComplete); + } else this.sendError(new InvalidCodMdepException()); + } else { this.sendError(new NoLUFoundException()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java index a1a320c1..2be22253 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java @@ -20,6 +20,7 @@ import com.ravikoradiya.liveadapter.Type; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -292,7 +293,19 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi .map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd().toString()) .toList()); - this.mViewModel.loadFabbisogno(ordini, codMdep, this::startPickingActivity); + Date dataInizio = Stream.of(mProdFabbisognoItemModel) + .filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get()) + .map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getDataOrdD()) + .min(Date::compareTo) + .orElse(null); + + Date dataFine = Stream.of(mProdFabbisognoItemModel) + .filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get()) + .map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getDataOrdD()) + .max(Date::compareTo) + .orElse(null); + + this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, this::startPickingActivity); } @@ -324,7 +337,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi SpedizioneActivity.startActivity(getActivity(), sitArtOrdDTOS, - null, + new ArrayList<>(), new ArrayList<>(), GestioneEnum.LAVORAZIONE, +1, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdViewModel.java index e5b5d1c5..a38f9453 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdViewModel.java @@ -66,11 +66,16 @@ public class ProdFabbisognoLineeProdViewModel { return ordiniList; } - public void loadFabbisogno(String ordini, String codMdep, RunnableArgs> onComplete) { + public void loadFabbisogno(String ordini, String codMdep, Date dataInizio, Date dataFine, RunnableArgs> onComplete) { this.sendOnLoadingStarted(); this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(ordini, codMdep, jtbFasi -> { if (jtbFasi != null) { + Stream.of(jtbFasi) + .forEach(x -> { + x.setDataInizio(dataInizio); + x.setDataFine(dataFine); + }); this.sendOnLoadingEnded(); onComplete.run(jtbFasi); } else { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java index 0a82e599..6aab6a26 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java @@ -14,6 +14,7 @@ import java.util.List; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; @@ -109,7 +110,14 @@ public class ProdVersamentoMaterialeViewModel { this.sendError(new NoLUFoundException()); } else if (mtbColtList.size() == 1) { this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { - this.onLUOpened(mtbColt); + + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + this.onLUOpened(mtbColt); + } else this.sendError(new InvalidCodMdepException()); + }, this::sendError); } else { this.sendError(new TooManyLUFoundInMonoLUPositionException()); @@ -122,7 +130,12 @@ public class ProdVersamentoMaterialeViewModel { private void executeEtichettaLU(String sscc) { this.mColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> { - this.onLUOpened(mtbColt); + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + this.onLUOpened(mtbColt); + } else this.sendError(new InvalidCodMdepException()); }, this::sendError); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index a0050f42..d4ccee63 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -168,7 +168,7 @@ public class RettificaGiacenzeViewModel { if (onComplete != null) onComplete.run(); if (mtbAartList != null && mtbAartList.size() > 0) { - this.dispatchArt(mtbAartList.get(0), pickData); + this.dispatchArts(mtbAartList); } else { this.sendError(new NoResultFromBarcodeException(barcodeProd)); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index dd7ab597..2666ee5d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -20,6 +20,7 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.exception.EmptyLUException; +import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.InvalidLUException; import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; @@ -158,7 +159,7 @@ public class SpedizioneViewModel { this.mEnableQuantityReset = enableQuantityReset; this.mUseQtaOrd = useQtaOrd; - if (testateOrdini != null) { + if (testateOrdini != null && testateOrdini.size() > 0) { this.mIsOrdTrasf = Stream.of(testateOrdini).map(OrdineUscitaInevasoDTO::isOrdTrasf).withoutNulls().distinctBy(x -> x).findFirst().get(); } @@ -238,19 +239,18 @@ public class SpedizioneViewModel { mDefaultFiltroOrdine.add(filtro); }); + } - if (mDefaultGestioneOfUL == GestioneEnum.VENDITA) { - mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer; + if (mDefaultGestioneOfUL == GestioneEnum.VENDITA) { + mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer; - } else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == -1) { - mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer; - - } else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1) { - mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer; - } else { - this.sendError(new NotImplementedException(String.format("Gestione %s e segno %d non gestito", mDefaultGestioneOfUL.getText(), mDefaultSegnoCol))); - } + } else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == -1) { + mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer; + } else if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == +1) { + mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer; + } else { + this.sendError(new NotImplementedException(String.format("Gestione %s e segno %d non gestito", mDefaultGestioneOfUL.getText(), mDefaultSegnoCol))); } } @@ -492,7 +492,13 @@ public class SpedizioneViewModel { } } else { - this.createNewLU(null, null, () -> searchArtFromUL(mtbColt, onComplete)); + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + this.createNewLU(null, null, () -> searchArtFromUL(mtbColt, onComplete)); + } else this.sendError(new InvalidCodMdepException()); + } }, this::sendError); @@ -530,7 +536,14 @@ public class SpedizioneViewModel { mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { - this.searchArtFromUL(mtbColt, onComplete); + + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + this.searchArtFromUL(mtbColt, onComplete); + } else this.sendError(new InvalidCodMdepException()); + } else { this.sendError(new EmptyLUException()); } @@ -546,8 +559,17 @@ public class SpedizioneViewModel { if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { if (mtbColt.getSegno() != -1) { - searchArtFromUL(mtbColt, onComplete); - } else this.sendError(new InvalidLUException()); + + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + searchArtFromUL(mtbColt, onComplete); + } else this.sendError(new InvalidCodMdepException()); + + } else { + this.sendError(new InvalidLUException()); + } } else { this.sendError(new EmptyLUException()); } @@ -773,7 +795,7 @@ public class SpedizioneViewModel { MtbColt refMtbColt = matchedItem.getRefMtbColt(); if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) { refMtbColt = matchedItem.getMtbColts().get(0); - } else if(matchedItem.getTempPickData().getSourceMtbColt() != null){ + } else if (matchedItem.getTempPickData().getSourceMtbColt() != null) { refMtbColt = matchedItem.getTempPickData().getSourceMtbColt(); } MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; @@ -862,8 +884,6 @@ public class SpedizioneViewModel { } else { dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged); } - - } private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) { @@ -1489,11 +1509,13 @@ public class SpedizioneViewModel { var clonedLuToClose = (MtbColt) this.mCurrentMtbColt.clone(); clonedLuToClose.setMtbColr(null); + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + if(mTestateOrdini != null && !mTestateOrdini.isEmpty()) codMdep = mTestateOrdini.get(0).getCodMdep(); + var closeUDSRequestDto = new CloseUDSRequestDTO() .setMtbColt(clonedLuToClose) //.setPrintSSCC(shouldPrint) - .setOrderCodMdep(mTestateOrdini.get(0).getCodMdep()); - + .setOrderCodMdep(codMdep); this.mColliSpedizioneRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> { onComplete.run(closeResponse.getGeneratedMtbColts()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java index 1e856162..3f2b20ef 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java @@ -14,6 +14,7 @@ import java.util.List; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException; import it.integry.integrywmsnative.core.exception.NoArtsInLUException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; @@ -135,7 +136,12 @@ public class VersamentoMerceViewModel { mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { //TAKE HERE - pickMerceULtoUL(mtbColt, onComplete); + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + pickMerceULtoUL(mtbColt, onComplete); + } else this.sendError(new InvalidCodMdepException()); }, this::sendError); } else { @@ -184,11 +190,23 @@ public class VersamentoMerceViewModel { if (mtbColt == null) { this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(sscc, GestioneEnum.LAVORAZIONE, mtbColtAnonimo -> { onComplete.run(); - pickMerceULtoUL(mtbColtAnonimo, onComplete); + + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + pickMerceULtoUL(mtbColtAnonimo, onComplete); + } else this.sendError(new InvalidCodMdepException()); + }, this::sendError); } else { - pickMerceULtoUL(mtbColt, onComplete); + boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) + .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); + + if (codMdepIsValid) { + pickMerceULtoUL(mtbColt, onComplete); + } else this.sendError(new InvalidCodMdepException()); } } diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ded9e2cf..02de1b79 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -143,6 +143,7 @@ %s non è valido. Controllalo e riprova]]> %s sulla porta %d non è al momento raggiungibile. Riprova più tardi]]> Nessun deposito trovato per l\'utente corrente + Impossibile utilizzare unità logistiche di altri depositi Seleziona un database Nessuna riga presente nell\'Unità Logistica diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c8083c22..1858e149 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -141,6 +141,7 @@ %s is not valid. Check and retry later]]> %s on port %d is not reachable. Retry later]]> No deposit available with current user + Unable to use logistics units from other depots Choose a database No rows found in LU