Implementate nuove logiche picking libero per scarichi di lavorazione

This commit is contained in:
2023-12-01 17:00:20 +01:00
parent 27577d10cf
commit a73ecc1e81
15 changed files with 472 additions and 34 deletions

View File

@@ -42,7 +42,6 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.VtbDest;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
@@ -54,6 +53,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
@@ -86,16 +86,20 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
private int barcodeScannerIstanceID = -1;
private GestioneEnum mCurrentGestione;
private boolean mAskCliente;
private boolean mAskLineaProd;
public PickingLiberoFragment() {
// Required empty public constructor
}
public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum) {
public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) {
PickingLiberoFragment fragment = new PickingLiberoFragment();
Bundle args = new Bundle();
args.putString("gestione", gestioneEnum.getText());
args.putBoolean("askCliente", askCliente);
args.putBoolean("askLineaProd", askLineaProd);
fragment.setArguments(args);
return fragment;
@@ -113,6 +117,8 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
setRetainInstance(true);
mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione"));
mAskCliente = getArguments().getBoolean("askCliente");
mAskLineaProd = getArguments().getBoolean("askLineaProd");
}
@@ -139,8 +145,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
this.initRecyclerView();
boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero();
mViewModel.init(flagAskCliente, mCurrentGestione);
mViewModel.init(mAskCliente, mAskLineaProd, mCurrentGestione);
return mBindings.getRoot();
}
@@ -263,7 +268,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
null,
() -> onComplete.run(true),
() -> onComplete.run(false)
).show(requireActivity().getSupportFragmentManager(), "tag");
).show(requireActivity().getSupportFragmentManager(), DialogSimpleMessageView.class.getName());
}
@Override
@@ -284,7 +289,13 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
@Override
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
DialogAskClienteView.newInstance(onComplete, onAbort)
.show(requireActivity().getSupportFragmentManager(), "tag");
.show(requireActivity().getSupportFragmentManager(), DialogAskClienteView.class.getName());
}
@Override
public void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
DialogAskLineaProdView.newInstance(onComplete, onAbort)
.show(getParentFragmentManager(), DialogAskLineaProdView.class.getName());
}
@Override
@@ -294,7 +305,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
onAbort.run();
BarcodeManager.enable();
})
.show(requireActivity().getSupportFragmentManager(), "tag");
.show(requireActivity().getSupportFragmentManager(), DialogChooseArtsFromMtbColrList.class.getName());
}
@Override

View File

@@ -6,7 +6,9 @@ import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@@ -21,8 +23,17 @@ public class PickingLiberoModule {
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer
) {
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, giacenzaRESTConsumer, magazzinoAutomaticoRESTConsumer);
return new PickingLiberoViewModel(articoloRESTConsumer,
colliMagazzinoRESTConsumer,
barcodeRESTConsumer,
posizioniRESTConsumer,
giacenzaRESTConsumer,
magazzinoAutomaticoRESTConsumer,
colliLavorazioneRESTConsumer,
colliSpedizioneRESTConsumer);
}
}

View File

@@ -32,14 +32,18 @@ import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
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.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
@@ -63,8 +67,12 @@ public class PickingLiberoViewModel {
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
private final ColliSpedizioneRESTConsumer mColliSpedizioneRESTConsumer;
private boolean mFlagAskCliente;
private boolean mFlagAskLineaProd;
private GestioneEnum mDefaultGestione;
@@ -77,19 +85,30 @@ public class PickingLiberoViewModel {
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer,
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer;
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
this.mColliSpedizioneRESTConsumer = colliSpedizioneRESTConsumer;
}
public void init(boolean flagAskCliente, GestioneEnum defaultGestione) {
public void init(boolean flagAskCliente, boolean flagAskLineaProd, GestioneEnum defaultGestione) {
this.mFlagAskCliente = defaultGestione == GestioneEnum.VENDITA && flagAskCliente;
this.mFlagAskLineaProd = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskLineaProd;
this.mDefaultGestione = defaultGestione;
switch (mDefaultGestione) {
case LAVORAZIONE -> this.mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
case VENDITA -> this.mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer;
}
}
@@ -279,46 +298,57 @@ public class PickingLiberoViewModel {
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
if (this.mFlagAskCliente) {
this.sendLUClienteRequired((vtbDest, codJcom) -> {
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
}, () -> {
});
} else {
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, null, onComplete);
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete);
}
}
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJcom, Runnable onComplete) {
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
if (this.mFlagAskLineaProd) {
this.sendLULineaProdRequired(codJfas -> {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, codJfas, onComplete);
}, () -> {
});
} else {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, onComplete);
}
}
private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Runnable onComplete) {
this.sendOnLoadingStarted();
MtbColt mtbColt = new MtbColt();
mtbColt.initDefaultFields(mDefaultGestione)
var createUDSRequest = new CreateUDSRequestDTO()
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
// .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag())
.setSegno(-1)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
.setOrderRequired(mFlagAskLineaProd);
if (customNumCollo != null) {
mtbColt.setNumCollo(customNumCollo);
createUDSRequest.setNumCollo(customNumCollo);
}
if (!UtilityString.isNullOrEmpty(customSerCollo)) {
mtbColt.setSerCollo(customSerCollo);
createUDSRequest.setSerCollo(customSerCollo);
}
if (!UtilityString.isNullOrEmpty(codJfas)) {
createUDSRequest.setCodJfas(codJfas);
}
if (vtbDest != null) {
mtbColt.setCodAnag(vtbDest.getCodAnag());
mtbColt.setCodVdes(vtbDest.getCodVdes());
createUDSRequest.setCodAnag(vtbDest.getCodAnag());
createUDSRequest.setCodVdes(vtbDest.getCodVdes());
}
if (!UtilityString.isNullOrEmpty(codJcom)) {
mtbColt.setCodJcom(codJcom);
}
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
mColliScaricoRESTConsumer.createUDS(createUDSRequest, mtbColt -> {
mtbColt
.setNumCollo(value.getNumCollo())
.setDataCollo(value.getDataColloS())
.setMtbColr(new ObservableArrayList<>());
this.mCurrentMtbColt = mtbColt;
@@ -328,6 +358,43 @@ public class PickingLiberoViewModel {
if (onComplete != null) onComplete.run();
this.sendLUOpened(mtbColt);
}, this::sendError);
// MtbColt mtbColt = new MtbColt();
// mtbColt.initDefaultFields(mDefaultGestione)
// .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
// .setSegno(-1)
// .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
//
// if (customNumCollo != null) {
// mtbColt.setNumCollo(customNumCollo);
// }
//
// if (!UtilityString.isNullOrEmpty(customSerCollo)) {
// mtbColt.setSerCollo(customSerCollo);
// }
//
// if (vtbDest != null) {
// mtbColt.setCodAnag(vtbDest.getCodAnag());
// mtbColt.setCodVdes(vtbDest.getCodVdes());
// }
//
// if (!UtilityString.isNullOrEmpty(codJcom)) {
// mtbColt.setCodJcom(codJcom);
// }
// mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
// mtbColt
// .setNumCollo(value.getNumCollo())
// .setDataCollo(value.getDataColloS())
// .setMtbColr(new ObservableArrayList<>());
//
// this.mCurrentMtbColt = mtbColt;
//
// this.sendOnLoadingEnded();
//
// if (onComplete != null) onComplete.run();
// this.sendLUOpened(mtbColt);
// }, this::sendError);
}
private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model) {
@@ -868,6 +935,10 @@ public class PickingLiberoViewModel {
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
}
private void sendLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort);
}
private void sendArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) {
if (this.mListener != null)
mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort);
@@ -924,6 +995,8 @@ public class PickingLiberoViewModel {
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort);
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
void onItemDispatched(PickingObjectDTO pickingObjectDTO,