Completata implementazione del magazzino automatico in Picking Libero
This commit is contained in:
parent
7b913e607e
commit
7990f38c37
@ -2,15 +2,10 @@ package it.integry.integrywmsnative.core.class_router.interfaces;
|
|||||||
|
|
||||||
import java.util.List;
|
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;
|
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||||
|
|
||||||
public interface OrdiniVenditaInterface {
|
public interface OrdiniVenditaInterface {
|
||||||
|
|
||||||
boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini);
|
boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini);
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -270,4 +270,23 @@ public class MvwSitArtUdcDetInventario {
|
|||||||
this.mtbAart = mtbAart;
|
this.mtbAart = mtbAart;
|
||||||
return this;
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,8 +4,6 @@ import androidx.databinding.ObservableArrayList;
|
|||||||
|
|
||||||
import com.annimon.stream.Optional;
|
import com.annimon.stream.Optional;
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
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.MtbDepoPosizione;
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
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.RettificaULDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO;
|
import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO;
|
||||||
@ -280,48 +277,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
if (onComplete != null) onComplete.run();
|
if (onComplete != null) onComplete.run();
|
||||||
}, onFailed);
|
}, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> 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<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) {
|
|
||||||
analyzeAnswerList(response, "DistribuzioneCollo", obj -> {
|
|
||||||
|
|
||||||
Gson gson = new Gson();
|
|
||||||
List<JsonObject> jsons = response.body().getEntityList();
|
|
||||||
|
|
||||||
List<MtbColt> 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<ServiceRESTResponse<JsonObject>> call, Throwable t) {
|
|
||||||
onFailed.run(new Exception(t));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
|
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
|
||||||
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() {
|
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() {
|
||||||
|
|||||||
@ -2,11 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
|||||||
|
|
||||||
import com.annimon.stream.Optional;
|
import com.annimon.stream.Optional;
|
||||||
import com.annimon.stream.Stream;
|
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 java.util.List;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
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.MtbAart;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||||
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
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
|
@Singleton
|
||||||
public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
||||||
@ -30,17 +30,12 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) {
|
public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
|
||||||
|
giacenzaRESTConsumerService.retrieveAvailableItems(posizione.getPosizione()).enqueue(new Callback<>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Response<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> response) {
|
||||||
|
analyzeAnswer(response, "getGiacenzeInPosizione", inventarioList -> {
|
||||||
|
|
||||||
HashMap<String, Object> params = new HashMap<>();
|
|
||||||
params.put("posizione", posizione.getPosizione());
|
|
||||||
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
|
|
||||||
String query = "SELECT * from mvw_sitart_udc_det_inventario" +
|
|
||||||
" WHERE " + whereCond;
|
|
||||||
|
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<MvwSitArtUdcDetInventario>>() {
|
|
||||||
}.getType();
|
|
||||||
this.mSystemRESTConsumer.<ArrayList<MvwSitArtUdcDetInventario>>processSql(query, typeOfObjectsList, inventarioList -> {
|
|
||||||
List<String> codMarts = Stream.of(inventarioList)
|
List<String> codMarts = Stream.of(inventarioList)
|
||||||
.map(x -> x.getCodMart().trim())
|
.map(x -> x.getCodMart().trim())
|
||||||
.toList();
|
.toList();
|
||||||
@ -65,5 +60,12 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
|
|||||||
}, onFailed);
|
}, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Throwable t) {
|
||||||
|
onFailed.run(new Exception(t));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,17 @@
|
|||||||
package it.integry.integrywmsnative.core.rest.consumers;
|
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 {
|
public interface GiacenzaRESTConsumerService {
|
||||||
|
|
||||||
|
@GET("wms/giacenza/availableItems")
|
||||||
|
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItems(
|
||||||
|
@Query("posizione") String posizione);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,11 +13,10 @@ import retrofit2.Response;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer {
|
public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer {
|
||||||
|
|
||||||
|
public void pickItems(String posizione, MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
public void pickItems(MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
|
||||||
MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class);
|
MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = RESTBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class);
|
||||||
|
|
||||||
magazzinoAutomaticoRESTConsumerService.pickItems(magazzinoAutomaticoPickItemsRequestDTO)
|
magazzinoAutomaticoRESTConsumerService.pickItems(posizione, magazzinoAutomaticoPickItemsRequestDTO)
|
||||||
.enqueue(new Callback<>() {
|
.enqueue(new Callback<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
|
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
|
||||||
|
|||||||
@ -5,9 +5,12 @@ import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.Magazzin
|
|||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
|
import retrofit2.http.Path;
|
||||||
|
|
||||||
public interface MagazzinoAutomaticoRESTConsumerService {
|
public interface MagazzinoAutomaticoRESTConsumerService {
|
||||||
|
|
||||||
@POST("wms/magazzino-automatico/pickItems")
|
@POST("wms/magazzino-automatico/{posizione}/pickItems")
|
||||||
Call<ServiceRESTResponse<Void>> pickItems(@Body MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO);
|
Call<ServiceRESTResponse<Void>> pickItems(
|
||||||
|
@Path("posizione") String posizione,
|
||||||
|
@Body MagazzinoAutomaticoPickItemsRequestDTO magazzinoAutomaticoPickItemsRequestDTO);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,13 +40,16 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
|||||||
import it.integry.integrywmsnative.core.menu.MenuService;
|
import it.integry.integrywmsnative.core.menu.MenuService;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
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.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.rest.watcher.ServerStatusChecker;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDimension;
|
import it.integry.integrywmsnative.core.utility.UtilityDimension;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
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.FragmentMainBinding;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding;
|
import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding;
|
||||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||||
@ -61,6 +64,13 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
@Inject
|
@Inject
|
||||||
ColliDataRecoverService colliDataRecoverService;
|
ColliDataRecoverService colliDataRecoverService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
MenuService menuService;
|
MenuService menuService;
|
||||||
|
|
||||||
@ -189,36 +199,50 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (sessionsIterator.hasNext()) {
|
if (!sessionsIterator.hasNext()) {
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Integer recoveredMtbColtID = sessionsIterator.next();
|
Integer recoveredMtbColtID = sessionsIterator.next();
|
||||||
ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID);
|
ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID);
|
||||||
MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt();
|
MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt();
|
||||||
|
|
||||||
if (recoveredMtbColt != null && (recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA || recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) {
|
if (recoveredMtbColt != null &&
|
||||||
|
(recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA ||
|
||||||
|
recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) {
|
||||||
|
|
||||||
OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
|
OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
|
||||||
|
boolean isTransferLogicEnabled = ordiniVendita != null && ordiniVendita.isTrasfOrder(recoveredMtbColtDto.getTestateOrdini());
|
||||||
|
|
||||||
this.colliMagazzinoRESTConsumer.updateDataFine(recoveredMtbColt, () -> {
|
var closeUDSRequestDto = new CloseUDSRequestDTO()
|
||||||
ordiniVendita.distribuisciCollo(recoveredMtbColt, recoveredMtbColtDto.getTestateOrdini(),
|
.setMtbColt(recoveredMtbColt)
|
||||||
mtbColts -> {
|
//.setPrintSSCC(shouldPrint)
|
||||||
|
.setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep())
|
||||||
|
.setEnableTransferLogic(isTransferLogicEnabled);
|
||||||
|
|
||||||
|
RunnableArgs<CloseUDSResponseDTO> onRequestComplete = closeUDSResponseDto -> {
|
||||||
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
||||||
|
|
||||||
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
||||||
}, ex -> {
|
};
|
||||||
tmpOnFailed.run(ex, recoveredMtbColtID);
|
|
||||||
}
|
switch (recoveredMtbColt.getGestioneEnum()) {
|
||||||
);
|
case LAVORAZIONE:
|
||||||
}, ex -> {
|
colliLavorazioneRESTConsumer.closeUDS(closeUDSRequestDto, onRequestComplete, ex -> {
|
||||||
tmpOnFailed.run(ex, recoveredMtbColtID);
|
tmpOnFailed.run(ex, recoveredMtbColtID);
|
||||||
});
|
});
|
||||||
|
break;
|
||||||
|
case VENDITA:
|
||||||
|
colliSpedizioneRESTConsumer.closeUDS(closeUDSRequestDto, onRequestComplete, ex -> {
|
||||||
|
tmpOnFailed.run(ex, recoveredMtbColtID);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
colliDataRecoverService.closeSession(recoveredMtbColtID);
|
||||||
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
onComplete.run();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void collapseNoConnectionLayout() {
|
private void collapseNoConnectionLayout() {
|
||||||
|
|||||||
@ -7,6 +7,8 @@ import dagger.Provides;
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
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.consumers.PosizioniRESTConsumer;
|
||||||
|
|
||||||
@Module(subcomponents = {PickingLiberoComponent.class})
|
@Module(subcomponents = {PickingLiberoComponent.class})
|
||||||
@ -17,8 +19,10 @@ public class PickingLiberoModule {
|
|||||||
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import javax.inject.Inject;
|
|||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
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.exception.TooManyLUFoundInMonoLUPositionException;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
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.MtbColr;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
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.VtbDest;
|
||||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
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.consumers.PosizioniRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
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.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
@ -53,6 +59,8 @@ public class PickingLiberoViewModel {
|
|||||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||||
private final PosizioniRESTConsumer mPosizioniRESTConsumer;
|
private final PosizioniRESTConsumer mPosizioniRESTConsumer;
|
||||||
|
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
|
||||||
|
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
|
||||||
|
|
||||||
|
|
||||||
private boolean mFlagAskCliente;
|
private boolean mFlagAskCliente;
|
||||||
@ -66,12 +74,15 @@ public class PickingLiberoViewModel {
|
|||||||
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||||
PosizioniRESTConsumer posizioniRESTConsumer
|
PosizioniRESTConsumer posizioniRESTConsumer,
|
||||||
) {
|
GiacenzaRESTConsumer giacenzaRESTConsumer,
|
||||||
|
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
|
||||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
this.mPosizioniRESTConsumer = posizioniRESTConsumer;
|
this.mPosizioniRESTConsumer = posizioniRESTConsumer;
|
||||||
|
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
|
||||||
|
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -120,7 +131,52 @@ public class PickingLiberoViewModel {
|
|||||||
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
|
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
|
||||||
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
|
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
|
||||||
.single();
|
.single();
|
||||||
|
|
||||||
|
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);
|
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<MagazzinoAutomaticoPickItemRequestDTO> 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);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -632,7 +632,8 @@ public class SpedizioneViewModel {
|
|||||||
.setOrdersOfNewUDS(orders)
|
.setOrdersOfNewUDS(orders)
|
||||||
.setItemsToPick(magazzinoAutomaticoPickItemRequestDTOList);
|
.setItemsToPick(magazzinoAutomaticoPickItemRequestDTOList);
|
||||||
|
|
||||||
mMagazzinoAutomaticoRESTConsumer.pickItems(magazzinoAutomaticoPickRequest, onComplete, this::sendError);
|
mMagazzinoAutomaticoRESTConsumer.pickItems(mtbDepoPosizione.getPosizione(),
|
||||||
|
magazzinoAutomaticoPickRequest, onComplete, this::sendError);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
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 "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.3.15'
|
classpath 'com.google.gms:google-services:4.3.15'
|
||||||
|
|
||||||
|
|||||||
@ -3,11 +3,7 @@ package it.integry.wms.dynamic_customization.extensions;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
|
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.rest.model.OrdineUscitaInevasoDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|
||||||
|
|
||||||
public class OrdiniVendita implements OrdiniVenditaInterface {
|
public class OrdiniVendita implements OrdiniVenditaInterface {
|
||||||
|
|
||||||
@ -17,13 +13,4 @@ public class OrdiniVendita implements OrdiniVenditaInterface {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
|
||||||
// UtilityToast.showToast("Avviato metodo in BaseFeature");
|
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
|
|
||||||
onComplete,
|
|
||||||
onFailed);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,6 @@ package it.integry.wms.dynamic_customization.extensions;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
|
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.rest.model.OrdineUscitaInevasoDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
@ -22,31 +18,4 @@ public class OrdiniVendita implements OrdiniVenditaInterface {
|
|||||||
return !UtilityString.isNullOrEmpty(codMdepOrder) &&
|
return !UtilityString.isNullOrEmpty(codMdepOrder) &&
|
||||||
!codMdepOrder.equalsIgnoreCase(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
!codMdepOrder.equalsIgnoreCase(SettingsManager.i().getUserSession().getDepo().getCodMdep());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Deprecated
|
|
||||||
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user