diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index a263e597..370c5276 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -4,6 +4,7 @@ package it.integry.integrywmsnative.gest.picking_libero; import android.content.Context; import android.os.Bundle; import android.os.Handler; +import android.text.Html; import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; @@ -325,6 +326,15 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme }); } + @Override + public void onWarning(String warningText, Runnable action) { + handler.post(() -> { + DialogSimpleMessageView + .makeWarningDialog(getContext(), new SpannableString(Html.fromHtml(warningText)), null, action) + .show(); + }); + } + @Override public void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort) { DialogAskClienteView.newInstance(onComplete, onAbort) 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 850d6047..168f796e 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 @@ -20,6 +20,7 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.exception.AnomaliaUlException; import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.InvalidPositionException; import it.integry.integrywmsnative.core.exception.NoArtsFoundException; @@ -53,6 +54,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.rest.model.giacenza.GetColloInGiacResponseDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; @@ -190,7 +192,7 @@ public class PickingLiberoViewModel { if (foundPosizione.isMagazzinoAutomatico()) { //Eseguo picking da magazzino automatico this.executeMagazzinoAutomatico(foundPosizione); - } else if(foundPosizione.isFlagMonoCollo()) { + } else if (foundPosizione.isFlagMonoCollo()) { this.executePosizioneMonoUL(foundPosizione, null); } else throw new InvalidPositionException("impossibile gestire una posizione non MONO-UL in fase di picking"); @@ -243,7 +245,9 @@ public class PickingLiberoViewModel { throw new NoLUFoundException(); } } else if (barcodeUlInPosizione.size() == 1) { - var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(barcodeUlInPosizione.get(0), true, false); + var response = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(barcodeUlInPosizione.get(0), true, false); + this.checkAnomalieUl(response); + var mtbColt = response.getMtbColt(); boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableDepos()) .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); @@ -264,7 +268,9 @@ public class PickingLiberoViewModel { } private void executeEtichettaLU(String sscc) throws Exception { - var mtbColtScanned = mColliMagazzinoRESTConsumer.getBySsccSynchronized(sscc, true, false); + var response = mColliMagazzinoRESTConsumer.getBySsccSynchronized(sscc, true, false); + this.checkAnomalieUl(response); + var mtbColtScanned = response.getMtbColt(); if (mtbColtScanned == null) { throw new NoLUFoundException(); @@ -694,12 +700,9 @@ public class PickingLiberoViewModel { !UtilityString.isNullOrEmpty(mtbColr.getDataColloRifS()) && mtbColr.getNumColloRif() != null) { - MtbColt mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized( - mtbColr.getBarcodeUlOut(), - true, - false); - - return mtbColt; + return mColliMagazzinoRESTConsumer.getBySsccSynchronized( + mtbColr.getBarcodeUlOut(), true, false + ).getMtbColt(); } return null; @@ -894,6 +897,16 @@ public class PickingLiberoViewModel { this.mCurrentMtbColt = null; } + private void checkAnomalieUl(GetColloInGiacResponseDTO colloInGiac) { + if (colloInGiac.getEscludiPickingVendita() && mDefaultGestione == GestioneEnum.VENDITA) { + this.sendError(new AnomaliaUlException(colloInGiac)); + } else if (colloInGiac.getEscludiPickingLavorazione() && mDefaultGestione == GestioneEnum.LAVORAZIONE) { + this.sendError(new AnomaliaUlException(colloInGiac)); + } else { + this.onWarning(colloInGiac.getMessageAnomalia(), () -> { + }); + } + } private void sendOnLoadingStarted() { if (this.mListener != null) mListener.onLoadingStarted(); @@ -1042,15 +1055,20 @@ public class PickingLiberoViewModel { if (this.mListener != null) mListener.onRowSaved(); } + private void onWarning(String warningText, Runnable action) { + if (this.mListener != null) mListener.onWarning(warningText, action); + } + public PickingLiberoViewModel setListener(Listener listener) { this.mListener = listener; return this; } public interface Listener extends ILoadingListener, ILUBaseOperationsListener { - void onError(Exception ex); + void onWarning(String warningText, Runnable action); + void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort); void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index a2598125..daa5c5d7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -304,7 +304,7 @@ public class PickingResiViewModel { private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO) throws Exception { - var mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized(barcodeScanDTO.getStringValue(), true, false); + var mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized(barcodeScanDTO.getStringValue(), true, false).getMtbColt(); if (mtbColt == null) { if (!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) { @@ -328,9 +328,7 @@ public class PickingResiViewModel { } private void executeEtichettaLU(String SSCC) throws Exception { - MtbColt mtbColt = null; - - mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized(SSCC, true, false); + var mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized(SSCC, true, false).getMtbColt(); if (mTipologiaReso == Tipologia.VENDITA) { //Leggere i colli in cui ho barcode_ul_out uguale a SSCC scansionato (nel caso di reso da cliente) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java index cc5be005..8a35f87e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java @@ -89,7 +89,7 @@ public class ProdRecuperoMaterialeViewModel { this.sendOnLoadingStarted(); Ean128Model ean128Model = this.mBarcodeRESTConsumer.decodeEan128Synchronized(barcodeScanDTO); - var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(ean128Model.Sscc, true, false); + var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(ean128Model.Sscc, true, false).getMtbColt(); this.sendOnLoadingEnded(); @@ -147,8 +147,6 @@ public class ProdRecuperoMaterialeViewModel { } public void onItemDispatched(HistoryVersamentoProdULDTO item, PickedQuantityDTO pickedQuantityDTO, MtbColt sourceMtbColt) { - - mExecutorService.execute(() -> { MtbColt mtbColt = sourceMtbColt; 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 524cc0d6..6dd590d7 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 @@ -16,6 +16,7 @@ import java.util.concurrent.atomic.AtomicReference; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.AnomaliaUlException; import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; @@ -35,6 +36,7 @@ import it.integry.integrywmsnative.core.rest.consumers.MaterialiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean128Model; +import it.integry.integrywmsnative.core.rest.model.giacenza.GetColloInGiacResponseDTO; import it.integry.integrywmsnative.core.rest.model.materiali.VersaMaterialiRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; @@ -115,7 +117,9 @@ public class ProdVersamentoMaterialeViewModel { if (barcodeUlInPosizioneList == null || barcodeUlInPosizioneList.isEmpty()) { throw new NoLUFoundException(); } else if (barcodeUlInPosizioneList.size() == 1) { - var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(barcodeUlInPosizioneList.get(0), true, false); + var response = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(barcodeUlInPosizioneList.get(0), true, false); + this.checkAnomaliaUl(response); + var mtbColt = response.getMtbColt(); boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream() .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); @@ -131,7 +135,9 @@ public class ProdVersamentoMaterialeViewModel { private void executeEtichettaLU(String sscc) throws Exception { - var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(sscc, true, false); + var response = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(sscc, true, false); + this.checkAnomaliaUl(response); + var mtbColt = response.getMtbColt(); boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream() .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); @@ -419,6 +425,14 @@ public class ProdVersamentoMaterialeViewModel { }, this::sendError); } + private void checkAnomaliaUl(GetColloInGiacResponseDTO colloInGiac) { + if (colloInGiac.getEscludiPickingLavorazione()) { + this.sendError(new AnomaliaUlException(colloInGiac)); + } else { + this.sendWarning(colloInGiac.getMessageAnomalia(), () -> { + }); + } + } public MutableLiveData getMtbColtMutableLiveData() { return mtbColtMutableLiveData;