In rientro merce aggiunto dialog di rischiesta cambio posizione ul
This commit is contained in:
@@ -37,8 +37,10 @@ import it.integry.integrywmsnative.core.exception.BluetoothConnectionException;
|
||||
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
|
||||
@@ -47,11 +49,14 @@ import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderDeta
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
|
||||
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
|
||||
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdView;
|
||||
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCView;
|
||||
import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
@@ -313,12 +318,31 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) {
|
||||
public void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) {
|
||||
DialogYesNoView.newInstance(null, "Vuoi cambiare la posizione della UL corrente?", result -> {
|
||||
switch (result) {
|
||||
case YES:
|
||||
DialogAskPositionOfLUView.newInstance(false, (status, mtbDepoPosizione) -> {
|
||||
if (status == DialogConsts.Results.ABORT) {
|
||||
onComplete.run(false, null);
|
||||
} else {
|
||||
onComplete.run(true, mtbDepoPosizione);
|
||||
}
|
||||
}).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
break;
|
||||
|
||||
case NO:
|
||||
onComplete.run(false, null);
|
||||
break;
|
||||
}
|
||||
}).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) {
|
||||
handler.post(() -> {
|
||||
DialogVersamentoAutomaticoULDoneView.newInstance(versamentoAutomaticoULResponseDTO, onComplete).show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void addULButtonClick() {
|
||||
|
||||
@@ -7,6 +7,7 @@ import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ProduzioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
@@ -29,8 +30,9 @@ public class ProdRientroMerceOrderDetailModule {
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
ArticoloRESTConsumer articoloRESTConsumer,
|
||||
SystemRESTConsumer systemRESTConsumer,
|
||||
PosizioniRESTConsumer posizioneRESTConsumer,
|
||||
ProduzioneRESTConsumer produzioneRESTConsumer) {
|
||||
return new ProdRientroMerceOrderDetailViewModel(executorService, prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, articoloRESTConsumer, systemRESTConsumer, produzioneRESTConsumer);
|
||||
return new ProdRientroMerceOrderDetailViewModel(executorService, prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, articoloRESTConsumer, systemRESTConsumer, posizioneRESTConsumer, produzioneRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
|
||||
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
@@ -10,20 +12,27 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.model.DtbOrdSteps;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.report.ReportType;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ProduzioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
@@ -50,6 +59,7 @@ public class ProdRientroMerceOrderDetailViewModel {
|
||||
private final ArticoloRESTConsumer articoloRESTConsumer;
|
||||
private final SystemRESTConsumer systemRESTConsumer;
|
||||
private final ProduzioneRESTConsumer produzioneRESTConsumer;
|
||||
private final PosizioniRESTConsumer posizioneRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
@@ -60,6 +70,7 @@ public class ProdRientroMerceOrderDetailViewModel {
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
ArticoloRESTConsumer articoloRESTConsumer,
|
||||
SystemRESTConsumer systemRESTConsumer,
|
||||
PosizioniRESTConsumer posizioneRESTConsumer,
|
||||
ProduzioneRESTConsumer produzioneRESTConsumer) {
|
||||
this.executorService = executorService;
|
||||
this.prodRientroMerceOrderDetailRESTConsumer = prodRientroMerceOrderDetailRESTConsumer;
|
||||
@@ -68,6 +79,7 @@ public class ProdRientroMerceOrderDetailViewModel {
|
||||
this.articoloRESTConsumer = articoloRESTConsumer;
|
||||
this.systemRESTConsumer = systemRESTConsumer;
|
||||
this.produzioneRESTConsumer = produzioneRESTConsumer;
|
||||
this.posizioneRESTConsumer = posizioneRESTConsumer;
|
||||
}
|
||||
|
||||
public void setOrder(OrdineLavorazioneDTO order) throws Exception {
|
||||
@@ -191,7 +203,9 @@ public class ProdRientroMerceOrderDetailViewModel {
|
||||
if (response) {
|
||||
versaAutomaticamenteUL(savedMtbColt, onVersamentoCompleted);
|
||||
} else {
|
||||
onVersamentoCompleted.run();
|
||||
this.sendLUPositionChangeRequest((status, mtbDepoPosizione) -> {
|
||||
changePosition(status, mtbDepoPosizione, savedMtbColt, onVersamentoCompleted);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -203,6 +217,47 @@ public class ProdRientroMerceOrderDetailViewModel {
|
||||
});
|
||||
}
|
||||
|
||||
private void changePosition(Boolean status, MtbDepoPosizione mtbDepoPosizione, MtbColt mtbColtToMove, Runnable onComplete) {
|
||||
if (status == null || !status) {
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (mtbDepoPosizione == null) throw new ScannedPositionNotExistException();
|
||||
|
||||
if (mtbDepoPosizione.isFlagMonoCollo()) {
|
||||
var barcodeUlInPosizioneList = posizioneRESTConsumer.getBancaliInPosizioneSynchronized(mtbDepoPosizione);
|
||||
|
||||
if (barcodeUlInPosizioneList == null || barcodeUlInPosizioneList.size() != 1) {
|
||||
//Nessuna UL trovata oppure più UL nella stessa posizione
|
||||
throw new NoLUFoundException();
|
||||
}
|
||||
|
||||
moveLUtoLU(mtbColtToMove, barcodeUlInPosizioneList.get(0));
|
||||
} else {
|
||||
updatePosizione(mtbColtToMove, mtbDepoPosizione);
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
} catch (Exception e) {
|
||||
this.sendError(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void moveLUtoLU(MtbColt mtbColtToMove, String destBarcodeUl) throws Exception {
|
||||
colliMagazzinoRESTConsumer.spostaArtsTraULSynchronized(
|
||||
mtbColtToMove, destBarcodeUl, false
|
||||
);
|
||||
}
|
||||
|
||||
private void updatePosizione(MtbColt mtbColtToMove, MtbDepoPosizione mtbDepoPosizione) throws Exception {
|
||||
colliMagazzinoRESTConsumer.updatePosizioneULSynchronized(
|
||||
mtbColtToMove.getBarcodeUl(), mtbDepoPosizione != null ?
|
||||
mtbDepoPosizione.getPosizione() : CommonModelConsts.ENTITY_NULL_STRING
|
||||
);
|
||||
}
|
||||
|
||||
private void versaAutomaticamenteUL(MtbColt mtbColt, Runnable onComplete) {
|
||||
if (mtbColt == null) return;
|
||||
|
||||
@@ -297,9 +352,15 @@ public class ProdRientroMerceOrderDetailViewModel {
|
||||
if (this.mListener != null) this.mListener.onVersamentoAutomaticoULRequest(onComplete);
|
||||
}
|
||||
|
||||
private void sendLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) {
|
||||
if (this.mListener != null) this.mListener.onLUPositionChangeRequest(onComplete);
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
void onVersamentoAutomaticoULRequest(RunnableArgs<Boolean> onComplete);
|
||||
|
||||
void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete);
|
||||
|
||||
void onDataSaved(MtbColt mtbColt);
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
Reference in New Issue
Block a user