diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/OrdiniVenditaInterface.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/OrdiniVenditaInterface.java index 092cdb80..00a7c5f9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/OrdiniVenditaInterface.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/OrdiniVenditaInterface.java @@ -2,15 +2,10 @@ package it.integry.integrywmsnative.core.class_router.interfaces; import java.util.List; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; public interface OrdiniVenditaInterface { boolean isTrasfOrder(List testateOrdini); - @Deprecated - void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed); - } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java index 25262c8d..1a49d7c4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java @@ -270,4 +270,23 @@ public class MvwSitArtUdcDetInventario { this.mtbAart = mtbAart; return this; } + + + public MtbColr toMtbColr() { + return new MtbColr() + .setCodJcom(getCodJcom()) + .setCodMart(getCodMart()) + .setDataCollo(getDataCollo()) + .setNumCollo(getNumCollo()) + .setSerCollo(getSerCollo()) + .setGestione(getGestione()) + .setMtbAart(getMtbAart()) + .setNumCnf(getNumCnf()) + .setQtaCnf(getQtaCnf()) + .setQtaCol(getQtaCol()) + .setPartitaMag(getPartitaMag()) + .setPesoNettoKg(getPesoNettoKg()) + .setPesoLordoKg(getPesoLordoKg()) + .setUntMis(getUntMis()); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index 8a245f2e..aaf83cdf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -4,8 +4,6 @@ import androidx.databinding.ObservableArrayList; import com.annimon.stream.Optional; import com.annimon.stream.Stream; -import com.google.gson.Gson; -import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import org.jetbrains.annotations.NotNull; @@ -29,7 +27,6 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; @@ -280,48 +277,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { if (onComplete != null) onComplete.run(); }, onFailed); } - - public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs> onComplete, RunnableArgs onFailed) { - - DistribuzioneColloDTO distribuzioneColloDTO = new DistribuzioneColloDTO() - .setCriterioDistribuzione(criterioDistribuzione) - .setDataCollo(mtbColtToDistribute.getDataColloS()) - .setNumCollo(mtbColtToDistribute.getNumCollo()) - .setGestione(mtbColtToDistribute.getGestione()) - .setSerCollo(mtbColtToDistribute.getSerCollo()); - - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); - colliMagazzinoRESTConsumerService.distribuisciCollo(distribuzioneColloDTO) - .enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswerList(response, "DistribuzioneCollo", obj -> { - - Gson gson = new Gson(); - List jsons = response.body().getEntityList(); - - List newList = new ArrayList<>(); - - if (jsons != null) { - for (int i = 0; i < jsons.size(); i++) { - JsonObject jsonTmp = jsons.get(i); - - newList.add(gson.fromJson(jsonTmp, MtbColt.class)); - } - } - - onComplete.run(newList); - }, onFailed); - } - - @Override - public void onFailure(Call> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); - - } - public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java index d784d61c..a7f7ad85 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java @@ -2,11 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers; import com.annimon.stream.Optional; import com.annimon.stream.Stream; -import com.google.gson.reflect.TypeToken; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import javax.inject.Singleton; @@ -15,7 +11,11 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; -import it.integry.integrywmsnative.core.utility.UtilityQuery; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; @Singleton public class GiacenzaRESTConsumer extends _BaseRESTConsumer { @@ -30,39 +30,41 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { } public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs> onComplete, RunnableArgs onFailed) { + GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + giacenzaRESTConsumerService.retrieveAvailableItems(posizione.getPosizione()).enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getGiacenzeInPosizione", inventarioList -> { - HashMap params = new HashMap<>(); - params.put("posizione", posizione.getPosizione()); - String whereCond = UtilityQuery.concatFieldsInWhereCond(params); - String query = "SELECT * from mvw_sitart_udc_det_inventario" + - " WHERE " + whereCond; + List codMarts = Stream.of(inventarioList) + .map(x -> x.getCodMart().trim()) + .toList(); + mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + for (var row : inventarioList) { - Type typeOfObjectsList = new TypeToken>() { - }.getType(); - this.mSystemRESTConsumer.>processSql(query, typeOfObjectsList, inventarioList -> { - List codMarts = Stream.of(inventarioList) - .map(x -> x.getCodMart().trim()) - .toList(); + MtbAart foundMtbAart = null; + Optional mtbAartOpt = Stream.of(mtbAarts) + .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart())) + .findFirst(); - mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { - for (var row : inventarioList) { + if (mtbAartOpt.isPresent()) { + foundMtbAart = mtbAartOpt.get(); + } - MtbAart foundMtbAart = null; - Optional mtbAartOpt = Stream.of(mtbAarts) - .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart())) - .findFirst(); + row.setMtbAart(foundMtbAart); + } - if (mtbAartOpt.isPresent()) { - foundMtbAart = mtbAartOpt.get(); - } + onComplete.run(inventarioList); + }, onFailed); + }, onFailed); + } - row.setMtbAart(foundMtbAart); - } - - onComplete.run(inventarioList); - }, onFailed); - }, 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/GiacenzaRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java index 17d3460c..e0097132 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java @@ -1,4 +1,17 @@ package it.integry.integrywmsnative.core.rest.consumers; +import java.util.List; + +import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + public interface GiacenzaRESTConsumerService { + + @GET("wms/giacenza/availableItems") + Call>> retrieveAvailableItems( + @Query("posizione") String posizione); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java index dff77381..95c4db19 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumer.java @@ -13,11 +13,10 @@ import retrofit2.Response; @Singleton public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer { - - public void pickItems(MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO, Runnable onComplete, RunnableArgs onFailed) { + public void pickItems(String posizione, MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO, Runnable onComplete, RunnableArgs onFailed) { MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class); - magazzinoAutomaticoRESTConsumerService.pickItems(magazzinoAutomaticoPickItemsRequestDTO) + magazzinoAutomaticoRESTConsumerService.pickItems(posizione, magazzinoAutomaticoPickItemsRequestDTO) .enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumerService.java index a2d37c39..d294f943 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoAutomaticoRESTConsumerService.java @@ -5,9 +5,12 @@ import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.Magazzin import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.POST; +import retrofit2.http.Path; public interface MagazzinoAutomaticoRESTConsumerService { - @POST("wms/magazzino-automatico/pickItems") - Call> pickItems(@Body MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO); + @POST("wms/magazzino-automatico/{posizione}/pickItems") + Call> pickItems( + @Path("posizione") String posizione, + @Body MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 030fd92b..78674f6b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -40,13 +40,16 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +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.model.uds.CloseUDSRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDimension; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityResources; -import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainBinding; import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding; import it.integry.integrywmsnative.ui.ElevatedToolbar; @@ -61,6 +64,13 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab @Inject ColliDataRecoverService colliDataRecoverService; + @Inject + ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer; + + @Inject + ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer; + + @Inject MenuService menuService; @@ -189,36 +199,50 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab cyclicRecover(sessionsIterator, onComplete, onFailed); }; - if (sessionsIterator.hasNext()) { - Integer recoveredMtbColtID = sessionsIterator.next(); - ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID); - MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt(); + if (!sessionsIterator.hasNext()) { + onComplete.run(); + return; + } - if (recoveredMtbColt != null && (recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA || recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) { + Integer recoveredMtbColtID = sessionsIterator.next(); + ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID); + MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt(); - OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); + if (recoveredMtbColt != null && + (recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA || + recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) { - this.colliMagazzinoRESTConsumer.updateDataFine(recoveredMtbColt, () -> { - ordiniVendita.distribuisciCollo(recoveredMtbColt, recoveredMtbColtDto.getTestateOrdini(), - mtbColts -> { - colliDataRecoverService.closeSession(recoveredMtbColtID); + OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); + boolean isTransferLogicEnabled = ordiniVendita != null && ordiniVendita.isTrasfOrder(recoveredMtbColtDto.getTestateOrdini()); - cyclicRecover(sessionsIterator, onComplete, onFailed); - }, ex -> { - tmpOnFailed.run(ex, recoveredMtbColtID); - } - ); - }, ex -> { - tmpOnFailed.run(ex, recoveredMtbColtID); - }); - } else { + var closeUDSRequestDto = new CloseUDSRequestDTO() + .setMtbColt(recoveredMtbColt) + //.setPrintSSCC(shouldPrint) + .setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep()) + .setEnableTransferLogic(isTransferLogicEnabled); + + RunnableArgs onRequestComplete = closeUDSResponseDto -> { colliDataRecoverService.closeSession(recoveredMtbColtID); cyclicRecover(sessionsIterator, onComplete, onFailed); - } + }; + switch (recoveredMtbColt.getGestioneEnum()) { + case LAVORAZIONE: + colliLavorazioneRESTConsumer.closeUDS(closeUDSRequestDto, onRequestComplete, ex -> { + tmpOnFailed.run(ex, recoveredMtbColtID); + }); + break; + case VENDITA: + colliSpedizioneRESTConsumer.closeUDS(closeUDSRequestDto, onRequestComplete, ex -> { + tmpOnFailed.run(ex, recoveredMtbColtID); + }); + break; + } } else { - onComplete.run(); + colliDataRecoverService.closeSession(recoveredMtbColtID); + cyclicRecover(sessionsIterator, onComplete, onFailed); } + } private void collapseNoConnectionLayout() { @@ -314,7 +338,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab public void toggleEasterEggMode() { - easterEggToggle =! easterEggToggle; + easterEggToggle = !easterEggToggle; int rootBgStart, rootBgEnd; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java index 5e57fc58..16da74c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java @@ -7,6 +7,8 @@ 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.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; @Module(subcomponents = {PickingLiberoComponent.class}) @@ -17,8 +19,10 @@ public class PickingLiberoModule { PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, - PosizioniRESTConsumer posizioniRESTConsumer + PosizioniRESTConsumer posizioniRESTConsumer, + GiacenzaRESTConsumer giacenzaRESTConsumer, + MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer ) { - return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer); + return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, giacenzaRESTConsumer, magazzinoAutomaticoRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 7b02c7c9..83b937e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -15,6 +15,7 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; +import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; @@ -25,15 +26,20 @@ 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.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.VtbDest; 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.ColliMagazzinoRESTConsumer; +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.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.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -53,6 +59,8 @@ public class PickingLiberoViewModel { private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final PosizioniRESTConsumer mPosizioniRESTConsumer; + private final GiacenzaRESTConsumer mGiacenzaRESTConsumer; + private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer; private boolean mFlagAskCliente; @@ -66,12 +74,15 @@ public class PickingLiberoViewModel { public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, - PosizioniRESTConsumer posizioniRESTConsumer - ) { + PosizioniRESTConsumer posizioniRESTConsumer, + GiacenzaRESTConsumer giacenzaRESTConsumer, + MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mPosizioniRESTConsumer = posizioniRESTConsumer; + this.mGiacenzaRESTConsumer = giacenzaRESTConsumer; + this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer; } @@ -120,7 +131,52 @@ public class PickingLiberoViewModel { MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) .single(); - this.executePosizione(foundPosizione, null, onComplete); + + if (foundPosizione == null) { + //Nessuna posizione trovata con questo barcode + this.sendError(new ScannedPositionNotExistException()); + return; + } + + if (foundPosizione.isMagazzinoAutomatico()) { + //Eseguo picking da magazzino automatico + this.executeMagazzinoAutomatico(foundPosizione, onComplete); + } else { + this.executePosizione(foundPosizione, null, onComplete); + } + + } + + private void executeMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) { + mGiacenzaRESTConsumer.getGiacenzeInPosizione(mtbDepoPosizione, availableItems -> { + + var mtbColrs = Stream.of(availableItems) + .map(MvwSitArtUdcDetInventario::toMtbColr) + .toList(); + + this.sendArtSelectionRequest(mtbColrs, null, selectedMtbColrs -> { + + final List magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>(); + for (MtbColr selectedArt : selectedMtbColrs) { + MagazzinoAutomaticoPickItemRequestDTO itemDto = new MagazzinoAutomaticoPickItemRequestDTO(selectedArt.getCodMart()) + .setQtaTot(selectedArt.getQtaCol()) + .setNumCnf(selectedArt.getNumCnf()) + .setUntMis(selectedArt.getUntMis()); + + magazzinoAutomaticoPickItemRequestDTOList.add(itemDto); + } + + var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPickItemsRequestDTO() + .setShouldCreateUDS(true) + .setDefaultGestioneOfNewUDS(mDefaultGestione.getText()) + .setItemsToPick(magazzinoAutomaticoPickItemRequestDTOList); + + mMagazzinoAutomaticoRESTConsumer.pickItems(mtbDepoPosizione.getPosizione(), + magazzinoAutomaticoPickRequest, onComplete, this::sendError); + }, this::sendOnLoadingEnded); + + }, this::sendError); + } 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 c4f86cfb..14e704df 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 @@ -632,7 +632,8 @@ public class SpedizioneViewModel { .setOrdersOfNewUDS(orders) .setItemsToPick(magazzinoAutomaticoPickItemRequestDTOList); - mMagazzinoAutomaticoRESTConsumer.pickItems(magazzinoAutomaticoPickRequest, onComplete, this::sendError); + mMagazzinoAutomaticoRESTConsumer.pickItems(mtbDepoPosizione.getPosizione(), + magazzinoAutomaticoPickRequest, onComplete, this::sendError); }); } diff --git a/build.gradle b/build.gradle index d9edf287..601c1e2e 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.0' + classpath 'com.android.tools.build:gradle:7.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.15' diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 4ec9cb0f..62bafe5e 100644 --- a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -3,11 +3,7 @@ package it.integry.wms.dynamic_customization.extensions; import java.util.List; import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; public class OrdiniVendita implements OrdiniVenditaInterface { @@ -17,13 +13,4 @@ public class OrdiniVendita implements OrdiniVenditaInterface { return false; } - @Override - @Deprecated - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { -// UtilityToast.showToast("Avviato metodo in BaseFeature"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } } diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index c45ed15f..825a141b 100644 --- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -3,10 +3,6 @@ package it.integry.wms.dynamic_customization.extensions; import java.util.List; import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -22,31 +18,4 @@ public class OrdiniVendita implements OrdiniVenditaInterface { return !UtilityString.isNullOrEmpty(codMdepOrder) && !codMdepOrder.equalsIgnoreCase(SettingsManager.i().getUserSession().getDepo().getCodMdep()); } - - @Override - @Deprecated - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { - - String codMdepOrder = testateOrdini.get(0).getCodMdep(); - - //Se il deposito del collo รจ diverso dal deposito dell'utente allora sto "evadendo" la merce - // per una vendita presente su un altro deposito - if(!UtilityString.isNullOrEmpty(codMdepOrder) && - !codMdepOrder.equalsIgnoreCase(SettingsManager.i().getUserSession().getDepo().getCodMdep())) { - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, - DistribuzioneColloDTO.CriterioDistribuzione.UPDATE, - onComplete, - onFailed); - - } else { - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, - SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } - - - } }