diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java index 162a00c1..dc07ca34 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java @@ -114,7 +114,6 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements }); } - @Override public void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed){ ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java index cacf5a5e..0decfd3a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java @@ -264,22 +264,4 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C } }); } - - @Override - public void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed){ - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); - - colliAccettazioneRESTConsumerService.checkIfBarcodeUlAlreadyRegistered(barcodeUl) - .enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "accettazione/checkIfBarcodeUlAlreadyRegistered", onComplete, onFailed); - } - - @Override - public void onFailure(Call> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java index 962e077b..682f6ed0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.core.rest.consumers; +import androidx.annotation.NonNull; + import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -13,6 +15,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; @@ -113,4 +117,21 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } + public void duplicateUDSRow(DuplicateUDSRequestDTO duplicateUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + + colliSpedizioneRESTConsumerService.duplicateUDSRow(duplicateUDSRequestDTO) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + analyzeAnswer(response, "spedizione/duplicateUDSRow", onComplete, onFailed); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + onFailed.run(new Exception()); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java index 32f0b1fc..5492b609 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java @@ -6,6 +6,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; @@ -35,4 +37,7 @@ public interface ColliSpedizioneRESTConsumerService { @POST("wms/spedizione/deleteUDSRow") Call> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO); + @POST("wms/spedizione/duplicateUDSRow") + Call> duplicateUDSRow(@Body DuplicateUDSRequestDTO duplicateUDSRequestDTO); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java index 71db8839..30d87651 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java @@ -21,6 +21,4 @@ public interface ColliCaricoRESTConsumerInterface { void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed); void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRequestDTO, Runnable onComplete, RunnableArgs onFailed); - - void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java new file mode 100644 index 00000000..24c5bc0d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java @@ -0,0 +1,28 @@ +package it.integry.integrywmsnative.core.rest.model.uds; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class DuplicateUDSRequestDTO { + + private MtbColt mtbColt; + + private int numOfDuplicates; + + public MtbColt getMtbColt() { + return mtbColt; + } + + public DuplicateUDSRequestDTO setMtbColt(MtbColt mtbColt) { + this.mtbColt = mtbColt; + return this; + } + + public int getNumOfDuplicates() { + return numOfDuplicates; + } + + public DuplicateUDSRequestDTO setNumOfDuplicates(int numOfDuplicates) { + this.numOfDuplicates = numOfDuplicates; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java new file mode 100644 index 00000000..47d39930 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java @@ -0,0 +1,19 @@ +package it.integry.integrywmsnative.core.rest.model.uds; + +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class DuplicateUDSResponseDTO { + + private List mtbColtList; + + public List getMtbColtList() { + return mtbColtList; + } + + public DuplicateUDSResponseDTO setMtbColtList(List mtbColtList) { + this.mtbColtList = mtbColtList; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index efe86553..92760a91 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -79,6 +79,7 @@ public class DBSettingsModel { private boolean flagTracciamentoImballiCaricoEnabled = false; private boolean flagTracciamentoImballiScaricoEnabled = false; private boolean flagPickingLiberoEnableScanArt = false; + private boolean flagAskDuplicateUDSSpedizione = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -664,4 +665,13 @@ public class DBSettingsModel { this.flagPickingLiberoEnableScanArt = flagPickingLiberoEnableScanArt; return this; } + + public boolean isFlagAskDuplicateUDSSpedizione() { + return flagAskDuplicateUDSSpedizione; + } + + public DBSettingsModel setFlagAskDuplicateUDSSpedizione(boolean flagAskDuplicateUDSSpedizione) { + this.flagAskDuplicateUDSSpedizione = flagAskDuplicateUDSSpedizione; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 2402e061..d1ebd35a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -388,6 +388,11 @@ public class SettingsManager { .setSection("SPEDIZIONE") .setKeySection("FLAG_ASK_INFO_AGGIUNTIVE") .setSetter(dbSettingsModelIstance::setFlagAskInfoAggiuntiveSpedizione)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("SPEDIZIONE") + .setKeySection("FLAG_ASK_DUPLICATE_UDS") + .setSetter(dbSettingsModelIstance::setFlagAskDuplicateUDSSpedizione)); stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) .setGestName("PICKING") .setSection("SPEDIZIONE") 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 d2022ba4..d775ef0a 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 @@ -1072,4 +1072,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo DialogInfoAggiuntiveLUView.newInstance(mtbColt, onComplete, this::onLoadingEnded) .show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName()); } + + @Override + public void onInputDuplicate(RunnableArgs onComplete){ + DialogSimpleInputHelper.makeInputDialog(this, "Numero pedane da duplicare", inputValue -> { + try { + Integer num = Integer.parseInt(inputValue); + onComplete.run(num); + } catch (NumberFormatException ex) { + this.onError(new Exception("Inserire un numero di risorse valido")); + } + }, () -> {}).show(); + } } 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 f6dc1249..3780c29e 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 @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.gest.spedizione; +import androidx.annotation.IntegerRes; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; +import java.util.stream.Stream; import javax.inject.Inject; @@ -72,6 +74,7 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestOrderDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO; @@ -1549,31 +1552,35 @@ public class SpedizioneViewModel { this.closeLU(generatedMtbColts -> { - this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> { + this.duplicateUDS(generatedMtbColts, duplicatedMtbColts -> { - this.askPositionChange( - filledMtbColts, - positionedMtbColts -> { + generatedMtbColts.addAll(duplicatedMtbColts); - this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> { - positionedMtbColts.stream() - .filter(x -> !this.mColliRegistrati.contains(x)) - .forEach(x -> this.mColliRegistrati.add(x)); + this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> { - postCloseOperations(positionedMtbColts); + this.askPositionChange( + filledMtbColts, + positionedMtbColts -> { - this.mIsNewLU = false; + this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> { + positionedMtbColts.stream() + .filter(x -> !this.mColliRegistrati.contains(x)) + .forEach(x -> this.mColliRegistrati.add(x)); + + postCloseOperations(positionedMtbColts); + + this.mIsNewLU = false; + + this.resetMatchedRows(); + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); - this.resetMatchedRows(); - this.sendLUClosed(); - this.sendOnLoadingEnded(); }); - }); - - }, this::sendError); + }, this::sendError); + }); }); - }); }); }); @@ -1596,8 +1603,35 @@ public class SpedizioneViewModel { this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> { onComplete.run(closeResponse.getGeneratedMtbColts()); }, this::sendError); + } + private void duplicateUDS(List mtbColtList, RunnableArgs> onComplete) { + var clonedLu = (MtbColt) this.mCurrentMtbColt.clone(); + boolean noReference = clonedLu.getMtbColr().stream() + .allMatch( + x -> x.getGestioneRif() == null && + x.getDataColloRifD() == null && + x.getSerColloRif() == null && + x.getNumColloRif() == null + ); + + if (mtbColtList.size() > 1 || !noReference || !SettingsManager.iDB().isFlagAskDuplicateUDSSpedizione()) { + onComplete.run(new ArrayList<>()); + return; + } + + var savedMtbColt = mtbColtList.get(0); + + sendInputDuplicate(inputNumber -> { + var duplicateUDSRequestDTO = new DuplicateUDSRequestDTO() + .setMtbColt(savedMtbColt) + .setNumOfDuplicates(inputNumber); + + this.mColliSpedizioneRESTConsumer.duplicateUDSRow(duplicateUDSRequestDTO, data -> { + onComplete.run(data.getMtbColtList()); + }, this::sendError); + }); } private void checkIfShouldBeDeleted(Runnable onDeleted, Runnable onContinue) { @@ -1938,6 +1972,10 @@ public class SpedizioneViewModel { this.mDocumentRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError); } + private void sendInputDuplicate(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onInputDuplicate(onComplete); + } + public SpedizioneViewModel setListeners(Listener listener) { this.mListener = listener; return this; @@ -1970,6 +2008,8 @@ public class SpedizioneViewModel { void onChooseArtsRequest(List artsList, RunnableArgs> onComplete); void onOrderClosed(); + + void onInputDuplicate(RunnableArgs onComplete); } }