Compare commits

...

16 Commits

Author SHA1 Message Date
a8aaf69c57 Finish v1.34.04(388) 2023-07-11 09:29:51 +02:00
9c86598f03 -> v1.34.04 (388) 2023-07-11 09:29:45 +02:00
031cbc8d0a IDE 2023-07-11 09:28:44 +02:00
df63fbe4af In rientro merce rimossi tutti gli ordini con stato = PROGRAMMATO 2023-07-05 18:04:13 +02:00
1372e831f7 [CARELLI - INVENTARIO]
- incrementato timeout salvataggio inventario
2023-07-05 13:29:24 +02:00
c31700d9cb Modificati in POST i servizi di ricerca in Rettifica Giacenze.
Implementato nuovo servizio di retrieve articolo by codMart.
2023-07-05 10:54:37 +02:00
e6ecebd49a Nuovi servizi in rettigica giacenze 2023-07-03 17:59:30 +02:00
dfec2f2bd3 Finish v1.34.03(387) 2023-07-03 17:47:00 +02:00
3d425b6b02 Finish v1.34.03(387) 2023-07-03 17:47:00 +02:00
318a8f645e -> v1.34.03 (387) 2023-07-03 17:46:53 +02:00
8ec314044f Cambiata lettura barcode in dettaglio linee 2023-06-30 17:01:53 +02:00
2965b18a5f Finish v1.34.02(386) 2023-06-29 18:47:51 +02:00
24f6341ff6 Finish v1.34.02(386) 2023-06-29 18:47:51 +02:00
589a179a1b -> v1.34.02 (386) 2023-06-29 18:47:46 +02:00
afc2aef691 Implementato flag per abilitare/disabilitare cache degli inventari 2023-06-29 18:47:10 +02:00
19e4a14c95 Finish v1.34.01(385) 2023-06-16 12:17:28 +02:00
24 changed files with 370 additions and 161 deletions

10
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="app">
<State />
</entry>
</value>
</component>
</project>

10
.idea/migrations.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 385
def appVersionName = '1.34.01'
def appVersionCode = 388
def appVersionName = '1.34.04'
signingConfigs {
release {

View File

@@ -21,6 +21,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.model.MtbInvent;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLiveData;
public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> {
@@ -73,7 +74,8 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
(remoteItem, localItem) -> {
remoteItem.setRemoteSyncDate(localItem.getRemoteSyncDate());
remoteItem.setNew(false);
}, () -> handler.post(onComplete), ex -> handler.post(() -> onError.run(ex)));
}, () -> handler.post(onComplete), ex -> handler.post(() -> onError.run(ex)),
SettingsManager.iDB().isFlagIsInventarioCacheEnabled());
} catch (Exception e) {

View File

@@ -35,7 +35,8 @@ public abstract class _BaseRepository<
RunnableArgssWithReturn<B, B, Boolean> keyComparator,
RunnableArgss<B, B> dataCopy,
Runnable onComplete,
RunnableArgs<Exception> onError) {
RunnableArgs<Exception> onError,
boolean isCacheEnabled) {
List<B> finalRemoteData = dataMapper.mapRestsToRooms(remoteData);
if (localData == null) localData = new ArrayList<>();
@@ -53,12 +54,14 @@ public abstract class _BaseRepository<
}
var dataToUpdate = finalRemoteData.stream()
.filter(x -> x.getId() != null && finalLocalData.stream().noneMatch(x::equals))
.collect(Collectors.toList());
var dataToDelete = finalLocalData.stream()
.filter(x -> x.isSyncronized() && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
.filter(x -> (!isCacheEnabled || x.isSyncronized()) && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
.collect(Collectors.toList());
var dataToInsert = finalRemoteData.stream()

View File

@@ -1,15 +0,0 @@
package it.integry.integrywmsnative.core.model;
public class MtbAartWithFornitore extends MtbAart {
private String codArtFor;
public String getCodArtFor() {
return codArtFor;
}
public MtbAartWithFornitore setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
}

View File

@@ -1,6 +1,5 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
@@ -19,6 +18,7 @@ import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import retrofit2.Call;
import retrofit2.Callback;
@@ -59,26 +59,28 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public static void getByCodMartsStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String joinedCods = Stream.of(codMartToFind)
var codMarts = Stream.of(codMartToFind)
.withoutNulls()
.distinct()
.collect(Collectors.joining(","));
.distinct().toList();
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(joinedCods).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
onComplete.run(response.body().getEntityList());
}, onFailed);
}
articoloRESTConsumer
.getByCodMart(new RetrieveArticoloByCodMartRequestDTO()
.setCodMarts(codMarts))
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
onComplete.run(response.body().getEntityList());
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@@ -103,22 +105,25 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(codMartToFind).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
onComplete.run(response.body().getEntityList().get(0));
} else onComplete.run(null);
articoloRESTConsumer.getByCodMart(
new RetrieveArticoloByCodMartRequestDTO()
.setCodMarts(Collections.singletonList(codMartToFind)))
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
onComplete.run(response.body().getEntityList().get(0));
} else onComplete.run(null);
}, onFailed);
}
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}

View File

@@ -5,7 +5,9 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
@@ -16,8 +18,8 @@ public interface ArticoloRESTConsumerService {
@POST("SM2getArticoloByBarcode")
Call<ServiceRESTResponse<MtbAart>> getByBarcodeProd(@Query("barcode") String barcodeProd);
@GET("SM2getArticoloByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Query("codMart") String barcodeProd);
@POST("wms/articolo/retrieveByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
@GET("getProductLotStatus")
Call<ServiceRESTResponse<List<StatoArticoloDTO>>> getStatoPartita(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag);

View File

@@ -58,7 +58,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void saveCollo(MtbColt mtbColtToSave, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone();
mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
mtbColtToSaveClone.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
mtbColtToSaveClone.setOnlyPkMaster(false);
mtbColtToSaveClone.setMtbColr(new ObservableArrayList<>());

View File

@@ -70,7 +70,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer {
var request = new InsertInventarioRequestDTO()
.setMtbInvent(inventarioToInsert);
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120);
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 300);
inventarioRESTConsumerService
.insert(inventarioToInsert.getIdInventario(), request)
.enqueue(new Callback<>() {

View File

@@ -313,7 +313,7 @@ public class Ean128Model {
public String InternalPart;
///<summary>Informazioni interne</summary>
public String Internal1;
public String Internal1; //USED FOR COD_MART
///<summary>Informazioni interne</summary>
public String Internal2;

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.rest.model.articolo;
import java.util.List;
public class RetrieveArticoloByCodMartRequestDTO {
private List<String> codMarts;
public List<String> getCodMarts() {
return codMarts;
}
public RetrieveArticoloByCodMartRequestDTO setCodMarts(List<String> codMarts) {
this.codMarts = codMarts;
return this;
}
}

View File

@@ -61,6 +61,7 @@ public class DBSettingsModel {
private boolean flagShouldAskToCreateOrUpdateRowInventario = false;
private String commessaMagazzino;
private boolean flagGeneraDocumentoSpedizione = false;
private boolean flagIsInventarioCacheEnabled = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -476,4 +477,13 @@ public class DBSettingsModel {
this.flagGeneraDocumentoSpedizione = flagGeneraDocumentoSpedizione;
return this;
}
public boolean isFlagIsInventarioCacheEnabled() {
return flagIsInventarioCacheEnabled;
}
public DBSettingsModel setFlagIsInventarioCacheEnabled(boolean flagIsInventarioCacheEnabled) {
this.flagIsInventarioCacheEnabled = flagIsInventarioCacheEnabled;
return this;
}
}

View File

@@ -376,6 +376,10 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("INVENTARIO")
.setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("INVENTARIO")
.setKeySection("ENABLE_OFFLINE_CACHE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SETUP")
@@ -424,6 +428,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagShouldAskToCreateOrUpdateRowInventario(getValueFromList(list, "INVENTARIO", "FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW", Boolean.class, Boolean.FALSE));
dbSettingsModelIstance.setCommessaMagazzino(getValueFromList(list, "SETUP", "COMMESSA_MAGAZZINO", String.class, CommonConst.Config.COMMESSA_MAG));
dbSettingsModelIstance.setFlagGeneraDocumentoSpedizione(getValueFromList(list, "SPEDIZIONE", "GENERA_DOC", Boolean.class, Boolean.FALSE));
dbSettingsModelIstance.setFlagIsInventarioCacheEnabled(getValueFromList(list, "INVENTARIO", "ENABLE_OFFLINE_CACHE", Boolean.class, Boolean.FALSE));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null)

View File

@@ -178,7 +178,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
v -> initBottomSheetDialogFilter(filterChipDTO));
switch (filterChipDTO.getID()) {
case AccettazionePickingBindings.COD_ART_FILTER_ID:
case AccettazionePickingBindings.COD_ART_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentCodArtPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@@ -199,8 +199,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentCodArtPredicate().set(null));
break;
case AccettazionePickingBindings.DESCR_FILTER_ID:
}
case AccettazionePickingBindings.DESCR_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@@ -221,8 +221,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDescrPredicate().set(null));
break;
case AccettazionePickingBindings.POS_FILTER_ID:
}
case AccettazionePickingBindings.POS_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentPosPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@@ -243,7 +243,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentPosPredicate().set(null));
break;
}
}
this.mBindings.filterChipsGroup.addView(filterChipView);
@@ -262,43 +262,39 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
.getFilterLayoutView();
switch (filterChipDTO.getID()) {
case AccettazionePickingBindings.COD_ART_FILTER_ID:
((FilterCodArtLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllCodArts())
.setAvailable(mAppliedFilterViewModel.getAvailableCodArts())
.setOnFilterApplied(mAppliedFilterViewModel::setCodArtFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentCodArtPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentCodArtPredicate().get())
.map(x -> x.getSitArtOrdDTO().getCodMart())
.toList());
break;
case AccettazionePickingBindings.DESCR_FILTER_ID:
((FilterDescrLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllDescrs())
.setAvailable(mAppliedFilterViewModel.getAvailableDescrs())
.setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentDescrPredicate().get())
.map(x -> x.getSitArtOrdDTO().getDescrizioneEstesaArt())
.toList());
break;
case AccettazionePickingBindings.POS_FILTER_ID:
((FilterPosizioneLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllPos())
.setAvailable(mAppliedFilterViewModel.getAvailablePos())
.setOnFilterApplied(mAppliedFilterViewModel::setPosFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentPosPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentPosPredicate().get())
.map(x -> x.getMtbAart().getPosizione())
.toList());
break;
case AccettazionePickingBindings.COD_ART_FILTER_ID ->
((FilterCodArtLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllCodArts())
.setAvailable(mAppliedFilterViewModel.getAvailableCodArts())
.setOnFilterApplied(mAppliedFilterViewModel::setCodArtFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentCodArtPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentCodArtPredicate().get())
.map(x -> x.getSitArtOrdDTO().getCodMart())
.toList());
case AccettazionePickingBindings.DESCR_FILTER_ID ->
((FilterDescrLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllDescrs())
.setAvailable(mAppliedFilterViewModel.getAvailableDescrs())
.setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentDescrPredicate().get())
.map(x -> x.getSitArtOrdDTO().getDescrizioneEstesaArt())
.toList());
case AccettazionePickingBindings.POS_FILTER_ID ->
((FilterPosizioneLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllPos())
.setAvailable(mAppliedFilterViewModel.getAvailablePos())
.setOnFilterApplied(mAppliedFilterViewModel::setPosFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentPosPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentPosPredicate().get())
.map(x -> x.getMtbAart().getPosizione())
.toList());
}
if (!filterLayoutView.isAdded())
@@ -373,9 +369,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
}
private void refreshList() {
//this.onLoadingStarted();
//new Thread(() -> {
runOnUiThread(() -> {
List<PickingObjectDTO> tmpList;
@@ -393,7 +386,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
this.mAccettazioneMutableData.addAll(list);
this.noItemsToPick.set(!isThereAnyItemToPick(tmpList));
//this.onLoadingEnded();
});
}
@@ -402,21 +394,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
.filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaDaEvadere(), BigDecimal.ZERO))
.toList();
List<AccettazioneListModel> sortedList = null;
switch (mCurrentOrderBy) {
case COD_ART_FOR:
sortedList = convertDataModelToListModel__CodArtForn(tmpList);
break;
case DESCR_ART:
sortedList = convertDataModelToListModel__DescrArt(tmpList);
break;
case RAG_SOC_COM:
sortedList = convertDataModelToListModel__RagSocCom(tmpList);
break;
}
return sortedList;
return switch (mCurrentOrderBy) {
case COD_ART_FOR -> convertDataModelToListModel__CodArtForn(tmpList);
case DESCR_ART -> convertDataModelToListModel__DescrArt(tmpList);
case RAG_SOC_COM -> convertDataModelToListModel__RagSocCom(tmpList);
};
}
private List<AccettazioneListModel> convertDataModelToListModel__CodArtForn(List<PickingObjectDTO> dataList) {

View File

@@ -172,14 +172,20 @@ public class ProdDettaglioLineaViewModel {
public void checkBarcodeAndStartOrdine(BarcodeScanDTO dto) {
this.sendOnLoadingStarted();
ProdLineStatusDTO prodLine = lineaProd.getValue();
mBarcodeRESTConsumer.decodeEan128(dto, (ean128) -> {
String codMart = ean128.Content;
String codMart = ean128.Internal1;
String partitaMag = ean128.BatchLot;
if (!prodLine.isStarted()) {
if(prodLine == null) {
this.sendError(new Exception("Impossibile leggere lo stato della linea"));
} else if (!prodLine.isStarted()) {
this.sendError(new Exception("Impossibile avviare una produzione su una linea ferma!"));
} else if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) {
this.startProduction(codMart, partitaMag);
} else {
this.mListener.confirmOrderClose(() -> {
this.startProduction(codMart, partitaMag);

View File

@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import java.util.List;
import javax.inject.Inject;
@@ -11,6 +13,7 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.IOrdersLo
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneStatoEnum;
import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException;
public class ProdRientroMerceViewModel {
@@ -32,7 +35,14 @@ public class ProdRientroMerceViewModel {
String codAnag = SettingsManager.iDB().getFilterFornitoreProd();
this.mMesRESTConsumer.getOrdiniLavorazione("I", null, codAnag, ordiniLavorazioneList -> {
this.mOrdiniLavorazioneAperti.postValue(ordiniLavorazioneList);
List<OrdineLavorazioneDTO> filteredList = null;
if(ordiniLavorazioneList != null)
filteredList = Stream.of(ordiniLavorazioneList)
.filter(x -> x.getStatoEnum() != OrdineLavorazioneStatoEnum.PROGRAMMATO)
.toList();
this.mOrdiniLavorazioneAperti.postValue(filteredList);
this.sendOnOrdersLoadingEnded();
}, ex -> this.sendError(new OrdersLoadException(ex)));
}

View File

@@ -183,7 +183,13 @@ public class RettificaGiacenzeViewModel {
mRettificaGiacenzeRESTConsumer.searchArtForn(codAlis, queryText, listaArts -> {
this.sendOnLoadingEnded();
List<MtbAart> mtbAarts = Stream.of(listaArts).map(x -> (MtbAart) x).toList();
List<MtbAart> mtbAarts = null;
if (listaArts != null)
mtbAarts = Stream.of(listaArts)
.map(x -> (MtbAart) x.getMtbAart())
.toList();
dispatchArts(mtbAarts);
}, this::sendError);
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
public class SearchArticoloByBarcodeOrCodMartRequestDTO {
private String codMartOrBarcode;
public String getCodMartOrBarcode() {
return codMartOrBarcode;
}
public SearchArticoloByBarcodeOrCodMartRequestDTO setCodMartOrBarcode(String codMartOrBarcode) {
this.codMartOrBarcode = codMartOrBarcode;
return this;
}
}

View File

@@ -0,0 +1,60 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.model.MtbAart;
public class SearchArticoloByBarcodeOrCodMartResponseDTO {
private MtbAart mtbAart;
private BigDecimal qtaEsistente;
private BigDecimal qtaImpegnata;
private BigDecimal numCnfEsistente;
private BigDecimal numCnfImpegnata;
public MtbAart getMtbAart() {
return mtbAart;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public BigDecimal getQtaEsistente() {
return qtaEsistente;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setQtaEsistente(BigDecimal qtaEsistente) {
this.qtaEsistente = qtaEsistente;
return this;
}
public BigDecimal getQtaImpegnata() {
return qtaImpegnata;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setQtaImpegnata(BigDecimal qtaImpegnata) {
this.qtaImpegnata = qtaImpegnata;
return this;
}
public BigDecimal getNumCnfEsistente() {
return numCnfEsistente;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setNumCnfEsistente(BigDecimal numCnfEsistente) {
this.numCnfEsistente = numCnfEsistente;
return this;
}
public BigDecimal getNumCnfImpegnata() {
return numCnfImpegnata;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setNumCnfImpegnata(BigDecimal numCnfImpegnata) {
this.numCnfImpegnata = numCnfImpegnata;
return this;
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
public class SearchArticoloByCodArtFornOrDescrizioneRequestDTO {
private String codAlis;
private String codArtFornOrDescrizione;
public String getCodAlis() {
return codAlis;
}
public SearchArticoloByCodArtFornOrDescrizioneRequestDTO setCodAlis(String codAlis) {
this.codAlis = codAlis;
return this;
}
public String getCodArtFornOrDescrizione() {
return codArtFornOrDescrizione;
}
public SearchArticoloByCodArtFornOrDescrizioneRequestDTO setCodArtFornOrDescrizione(String codArtFornOrDescrizione) {
this.codArtFornOrDescrizione = codArtFornOrDescrizione;
return this;
}
}

View File

@@ -0,0 +1,28 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
import it.integry.integrywmsnative.core.model.MtbAart;
public class SearchArticoloByCodArtFornOrDescrizioneResponseDTO {
private MtbAart mtbAart;
private String codArtFor;
public MtbAart getMtbAart() {
return mtbAart;
}
public SearchArticoloByCodArtFornOrDescrizioneResponseDTO setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public String getCodArtFor() {
return codArtFor;
}
public SearchArticoloByCodArtFornOrDescrizioneResponseDTO setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
}

View File

@@ -1,25 +1,28 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.rest;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartResponseDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneResponseDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -45,49 +48,56 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
}
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<MtbAartWithFornitore>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " +
" WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) +
" AND mtb_lisa.cod_mart = mtb_aart.cod_mart " +
" AND mtb_lisa.cod_mart = mtb_part.cod_mart " +
" AND mtb_part.cod_mdep = '" + SettingsManager.i().getUserSession().getDepo().getCodMdep() + "' " +
" AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " +
" ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa";
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>> onComplete, RunnableArgs<Exception> onError) {
final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class);
service.searchByCodArtFornOrDescrizione(new SearchArticoloByCodArtFornOrDescrizioneRequestDTO()
.setCodAlis(codAlis)
.setCodArtFornOrDescrizione(codArtForOrDescr))
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> call,
Response<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> response) {
analyzeAnswer(response, "searchByCodArtFornOrDescrizione", onComplete, onError);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> call, Throwable t) {
onError.run(new Exception(t));
}
});
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {
}.getType();
mSystemRestConsumer.<ArrayList<MtbAartWithFornitore>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}, onFailed);
}
public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<ArrayList<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT DISTINCT mtb_aart.*," +
" qta_esistente, " +
" qta_imp_cli + qta_imp_lav AS qta_impegnata, " +
" num_esistente AS num_cnf_esistente, " +
" num_imp_cli + num_imp_lav AS num_cnf_impegnata " +
" FROM mtb_aart " +
" LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " +
" LEFT OUTER JOIN mtb_part mp on mtb_aart.cod_mart = mp.cod_mart " +
" AND mp.cod_mdep = '" + SettingsManager.i().getUserSession().getDepo().getCodMdep() + "'" +
" WHERE CASE" +
" WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " +
" ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " +
" END LIKE '%' + CASE " +
" WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " +
" ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" +
" END " +
"OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " +
"OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'";
public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onError) {
final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class);
service.searchByCodMartOrBarcode(new SearchArticoloByBarcodeOrCodMartRequestDTO()
.setCodMartOrBarcode(codMartOrBarcodeOrDescr))
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> call,
Response<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> response) {
analyzeAnswer(response, "searchByCodMartOrBarcode", data -> {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {
}.getType();
mSystemRestConsumer.<ArrayList<MtbAart>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}, onFailed);
var listToReturn = Stream.of(data)
.map(x -> x.getMtbAart()
.setQtaEsistente(x.getQtaEsistente())
.setQtaImpegnata(x.getQtaImpegnata())
.setNumCnfEsistente(x.getNumCnfEsistente())
.setNumCnfImpegnata(x.getNumCnfImpegnata()))
.toList();
onComplete.run(listToReturn);
}, onError);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> call, Throwable t) {
onError.run(new Exception(t));
}
});
}

View File

@@ -1,7 +1,13 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.rest;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartResponseDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneResponseDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
@@ -9,6 +15,14 @@ import retrofit2.http.POST;
public interface RettificaGiacenzeRESTConsumerService {
@POST("wms/articolo/searchByCodArtFornOrDescrizione")
Call<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> searchByCodArtFornOrDescrizione(
@Body SearchArticoloByCodArtFornOrDescrizioneRequestDTO searchArticoloByCodArtFornOrDescrizioneRequest);
@POST("wms/articolo/searchByCodMartOrBarcode")
Call<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> searchByCodMartOrBarcode(
@Body SearchArticoloByBarcodeOrCodMartRequestDTO searchArticoloByBarcodeOrCodMartRequest);
@POST("saveDocFromPickingPvm")
Call<ServiceRESTResponse<Void>> saveDocFromPickingPvm(@Body SaveDocFromPickingRequestDTO saveDocFromPickingRequestDTO);