From a96078c9e650658615810c5f992fc7ddb7ed574b Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 11 Nov 2020 12:32:38 +0100 Subject: [PATCH] Risolto problema di picking diverso dal collo suggerito. --- .../gest/spedizione/SpedizioneActivity.java | 4 +- .../gest/spedizione/SpedizioneViewModel.java | 58 +++++++++++++------ .../core/SpedizioneListAdapter.java | 9 +-- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 8d289482..01826f58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -204,9 +204,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); - spedizioneListAdapter.setOnItemClicked((clickedItem) -> { + spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> { if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) { - this.mViewmodel.dispatchOrdineRow(clickedItem, clickedItem.getRefMtbColt()); + this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt); } }); } 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 5777f034..5e0fac25 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 @@ -588,7 +588,7 @@ public class SpedizioneViewModel { if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getSitArtOrdDTO().getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getSitArtOrdDTO().getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getSitArtOrdDTO().getCodCol()) && - (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getSitArtOrdDTO().getPartitaMag()))) { + (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(pickingObject.getSitArtOrdDTO().getPartitaMag()))) { if (!matchPickingObject.contains(pickingObject)) { matchPickingObject.add(pickingObject); @@ -701,28 +701,47 @@ public class SpedizioneViewModel { //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'รจ ne una che corrisponde con la partita richiesta - MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null && + MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ? pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null; - if (mtbColrToDispatch != null) { - if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere) || UtilityBigDecimal.equalsTo(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) { - numCnfDaPrelevare = mtbColrToDispatch.getNumCnf(); - qtaColDaPrelevare = mtbColrToDispatch.getQtaCol(); + if (refMtbColt == null && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() == 1) { + refMtbColt = pickingObjectDTO.getMtbColts().get(0); + } + + MtbColr refMtbColr = null; + + if(refMtbColt != null && refMtbColt.getMtbColr().size() > 0) { + Optional optionalMtbColr = Stream.of(refMtbColt.getMtbColr()) + .filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) && + UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) && + UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) && + (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag()))) + .findFirst(); + + if(optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get(); + } + + MtbColr mtbColrToUse = refMtbColr != null ? refMtbColr : scannedMtbColr; + + if (mtbColrToUse != null) { + if (UtilityBigDecimal.equalsOrLowerThan(mtbColrToUse.getQtaCol(), qtaDaEvadere)) { + numCnfDaPrelevare = mtbColrToUse.getNumCnf(); + qtaColDaPrelevare = mtbColrToUse.getQtaCol(); } else { numCnfDaPrelevare = numCnfDaEvadere; qtaColDaPrelevare = qtaDaEvadere; } - qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf(); + qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf(); - totalQtaAvailable = mtbColrToDispatch.getQtaCol(); - totalNumCnfAvailable = mtbColrToDispatch.getNumCnf(); - qtaCnfAvailable = mtbColrToDispatch.getQtaCnf(); + totalQtaAvailable = mtbColrToUse.getQtaCol(); + totalNumCnfAvailable = mtbColrToUse.getNumCnf(); + qtaCnfAvailable = mtbColrToUse.getQtaCnf(); if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO)) @@ -731,8 +750,8 @@ public class SpedizioneViewModel { if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO)) qtaColDaPrelevare = BigDecimal.ZERO; - partitaMag = mtbColrToDispatch.getPartitaMag(); - dataScad = mtbColrToDispatch.getDataScadPartitaD(); + partitaMag = scannedMtbColr.getPartitaMag(); + dataScad = scannedMtbColr.getDataScadPartitaD(); } else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) { //Oppure le info del barcode scansionato @@ -779,10 +798,6 @@ public class SpedizioneViewModel { } } - if(refMtbColt == null && pickingObjectDTO.getMtbColts().size() == 1) { - refMtbColt = pickingObjectDTO.getMtbColts().get(0); - } - MtbColt finalRefMtbColt = refMtbColt; this.sendOnItemDispatched( pickingObjectDTO, @@ -1185,7 +1200,16 @@ public class SpedizioneViewModel { .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) .setMtbAart(pickingObjectDTO.getMtbAart()); - mtbColr.setRefMtbColr(mtbColrToDispatch); + + mtbColr.setRefMtbColr(new MtbColr() + .setCodMart(mtbColr.getCodMart()) + .setPartitaMag(mtbColr.getPartitaMag()) + .setCodTagl(mtbColr.getCodTagl()) + .setCodCol(mtbColr.getCodCol()) + .setNumCollo(refMtbColt.getNumCollo()) + .setDataCollo(refMtbColt.getDataColloS()) + .setSerCollo(refMtbColt.getSerCollo()) + .setGestione(refMtbColt.getGestione())); pickingObjectDTO.getWithdrawMtbColrs().add(mtbColr); mCurrentMtbColt.getMtbColr().add(mtbColr); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java index bf2cd22f..07bfafec 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java @@ -20,7 +20,8 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding; @@ -32,7 +33,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter mDataset = new ArrayList<>(); - private RunnableArgs mOnItemClicked; + private RunnableArgss mOnItemClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -70,7 +71,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + public void setOnItemClicked(RunnableArgss onItemClicked) { this.mOnItemClicked = onItemClicked; } @@ -138,7 +139,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { if (this.mOnItemClicked != null) - this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel()); + this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt()); }); }