Completati controlli anomalie ul

This commit is contained in:
2025-12-09 13:09:22 +01:00
parent cc89441f0a
commit ade18170ee
5 changed files with 57 additions and 19 deletions

View File

@@ -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<VtbDest, String> onComplete, Runnable onAbort) {
DialogAskClienteView.newInstance(onComplete, onAbort)

View File

@@ -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<VtbDest, String> onComplete, Runnable onAbort);
void onLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort);

View File

@@ -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)

View File

@@ -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;

View File

@@ -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<MtbColt> getMtbColtMutableLiveData() {
return mtbColtMutableLiveData;