Compare commits

...

7 Commits

Author SHA1 Message Date
43a2b90b16 Fix loading in versamento merce 2025-12-12 10:13:31 +01:00
efe84528da Importate migliorie da branch RefactoringGestioneColli 2025-12-11 10:41:28 +01:00
ab230425c3 Finish v1.50.04(553) 2025-12-10 18:51:26 +01:00
2f54b375b9 Finish v1.50.04(553)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-10 18:51:24 +01:00
9aa9b9121f -> v1.50.04 (553) 2025-12-10 18:51:16 +01:00
268ce9fce9 Sistemato dialog caricamento in accettazione merce 2025-12-10 18:49:56 +01:00
4861d53031 Finish v1.50.03(552) 2025-12-10 13:38:02 +01:00
32 changed files with 654 additions and 555 deletions

View File

@@ -11,8 +11,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 552 def appVersionCode = 553
def appVersionName = '1.50.03' def appVersionName = '1.50.04'
signingConfigs { signingConfigs {
release { release {

View File

@@ -312,8 +312,8 @@ public class MainApplicationModule {
@Provides @Provides
@Singleton @Singleton
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(RESTBuilder restBuilder) { ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
return new ColliAccettazioneRESTConsumer(restBuilder); return new ColliAccettazioneRESTConsumer(executorService, restBuilder);
} }
@Provides @Provides

View File

@@ -351,13 +351,10 @@ public class MtbColr extends EntityBase {
} }
public String getDatetimeRowS() { public String getDatetimeRow() {
return datetimeRow; return datetimeRow;
} }
public Date getDatetimeRowD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDatetimeRowS());
}
public MtbColr setDatetimeRow(String datetimeRow) { public MtbColr setDatetimeRow(String datetimeRow) {
this.datetimeRow = datetimeRow; this.datetimeRow = datetimeRow;

View File

@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -14,112 +16,133 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCResponseDTO; import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCResponseDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCResponseDTO;
import it.integry.integrywmsnative.core.rest.model.udc.DeleteUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.DeleteUDCRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.EditUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.EditUDCRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.EditUDCRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowResponseDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Response; import retrofit2.Response;
@Singleton @Singleton
public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements ColliCaricoRESTConsumerInterface { public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements ColliCaricoRESTConsumerInterface {
private final ExecutorService executorService;
private final RESTBuilder restBuilder; private final RESTBuilder restBuilder;
public ColliAccettazioneRESTConsumer(RESTBuilder restBuilder) { public ColliAccettazioneRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
this.executorService = executorService;
this.restBuilder = restBuilder; this.restBuilder = restBuilder;
} }
public void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { @Override
public MtbColt createUDCSynchronized(CreateUDCRequestDTO createUDCRequestDTO) throws Exception {
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class);
colliAccettazioneRESTConsumerService.createUDC(createUDCRequestDTO) var response = colliAccettazioneRESTConsumerService.createUDC(createUDCRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<CreateUDCResponseDTO>> call, Response<ServiceRESTResponse<CreateUDCResponseDTO>> response) {
analyzeAnswer(response, "accettazione/createUDC", data -> onComplete.run(data.getMtbColt()), onFailed);
}
@Override var data = analyzeAnswer(response, "accettazione/createUDC");
public void onFailure(Call<ServiceRESTResponse<CreateUDCResponseDTO>> call, @NonNull final Exception e) { return data.getMtbColt();
onFailed.run(e); }
}
});
@Override
public void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
MtbColt result = createUDCSynchronized(createUDCRequestDTO);
onComplete.run(result);
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public CloseUDCResponseDTO synchronousCloseUDC(CloseUDCRequestDTO closeUDCRequestDTO) throws Exception {
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class);
var response = colliAccettazioneRESTConsumerService.closeUDC(closeUDCRequestDTO)
.execute();
return analyzeAnswer(response, "accettazione/closeUDC");
} }
@Override @Override
public void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs<CloseUDCResponseDTO> onComplete, RunnableArgs<Exception> onFailed) { public void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs<CloseUDCResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
CloseUDCResponseDTO result = synchronousCloseUDC(closeUDCRequestDTO);
onComplete.run(result);
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public MtbColr synchronousInsertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO) throws Exception {
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class);
colliAccettazioneRESTConsumerService.closeUDC(closeUDCRequestDTO) var response = colliAccettazioneRESTConsumerService.insertUDCRow(insertUDCRowRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<CloseUDCResponseDTO>> call, Response<ServiceRESTResponse<CloseUDCResponseDTO>> response) {
analyzeAnswer(response, "accettazione/closeUDC", onComplete, onFailed);
}
@Override var data = analyzeAnswer(response, "accettazione/insertUDCRow");
public void onFailure(Call<ServiceRESTResponse<CloseUDCResponseDTO>> call, @NonNull final Exception e) {
onFailed.run(e); return data.getSavedMtbColr();
}
});
} }
@Override @Override
public void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) { public void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
onComplete.run(synchronousInsertUDCRow(insertUDCRowRequestDTO));
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public MtbColr synchronousEditUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO) throws Exception {
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class);
colliAccettazioneRESTConsumerService.insertUDCRow(insertUDCRowRequestDTO) var response = colliAccettazioneRESTConsumerService.editUDCRow(editUDCRowRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<InsertUDCRowResponseDTO>> call, Response<ServiceRESTResponse<InsertUDCRowResponseDTO>> response) {
analyzeAnswer(response, "accettazione/insertUDCRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override var data = analyzeAnswer(response, "accettazione/editUDCRow");
public void onFailure(Call<ServiceRESTResponse<InsertUDCRowResponseDTO>> call, @NonNull final Exception e) { return data.getSavedMtbColr();
onFailed.run(e);
}
});
} }
@Override @Override
public void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) { public void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
onComplete.run(synchronousEditUDCRow(editUDCRowRequestDTO));
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public void synchronousDeleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO) throws Exception {
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class);
colliAccettazioneRESTConsumerService.editUDCRow(editUDCRowRequestDTO) var response = colliAccettazioneRESTConsumerService.deleteUDCRow(deleteUDCRowRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<EditUDCRowResponseDTO>> call, Response<ServiceRESTResponse<EditUDCRowResponseDTO>> response) {
analyzeAnswer(response, "accettazione/editUDCRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override analyzeAnswer(response, "accettazione/deleteUDCRow");
public void onFailure(Call<ServiceRESTResponse<EditUDCRowResponseDTO>> call, @NonNull final Exception e) {
onFailed.run(e);
}
});
} }
@Override @Override
public void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = restBuilder.getService(ColliAccettazioneRESTConsumerService.class); executorService.execute(() -> {
try {
colliAccettazioneRESTConsumerService.deleteUDCRow(deleteUDCRowRequestDTO) synchronousDeleteUDCRow(deleteUDCRowRequestDTO);
.enqueue(new ManagedErrorCallback<>() { onComplete.run();
@Override } catch (Exception e) {
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) { onFailed.run(e);
analyzeAnswer(response, "accettazione/deleteUDCRow", data -> onComplete.run(), onFailed); }
} });
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, @NonNull final Exception e) {
onFailed.run(e);
}
});
} }
public void checkBarcodeUl(String barcodeUl, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed){ public void checkBarcodeUl(String barcodeUl, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed){

View File

@@ -20,10 +20,8 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCResponseDTO; import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCResponseDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCResponseDTO;
import it.integry.integrywmsnative.core.rest.model.udc.DeleteUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.DeleteUDCRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.EditUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.udc.EditUDCRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.EditUDCRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSFromArtRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSFromArtRequestDTO;
@@ -31,7 +29,6 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@@ -53,75 +50,93 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C
} }
@Override @Override
public void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public MtbColt createUDCSynchronized(CreateUDCRequestDTO createUDCRequestDTO) throws Exception {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.createUDC(createUDCRequestDTO) var response = colliLavorazioneRESTConsumerService.createUDC(createUDCRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<CreateUDCResponseDTO>> call, Response<ServiceRESTResponse<CreateUDCResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/createUDC", data -> onComplete.run(data.getMtbColt()), onFailed);
}
@Override var data = analyzeAnswer(response, "lavorazione/createUDC");
public void onFailure(Call<ServiceRESTResponse<CreateUDCResponseDTO>> call, @NonNull final Exception e) { return data.getMtbColt();
onFailed.run(e); }
}
}); @Override
public void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
MtbColt result = createUDCSynchronized(createUDCRequestDTO);
onComplete.run(result);
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public CloseUDCResponseDTO synchronousCloseUDC(CloseUDCRequestDTO closeUDCRequestDTO) throws Exception {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class);
var response = colliLavorazioneRESTConsumerService.closeUDC(closeUDCRequestDTO)
.execute();
return analyzeAnswer(response, "lavorazione/closeUDC");
} }
@Override @Override
public void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs<CloseUDCResponseDTO> onComplete, RunnableArgs<Exception> onFailed) { public void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs<CloseUDCResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
CloseUDCResponseDTO result = synchronousCloseUDC(closeUDCRequestDTO);
onComplete.run(result);
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public MtbColr synchronousInsertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO) throws Exception {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.closeUDC(closeUDCRequestDTO) var response = colliLavorazioneRESTConsumerService.insertUDCRow(insertUDCRowRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<CloseUDCResponseDTO>> call, Response<ServiceRESTResponse<CloseUDCResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/closeUDC", onComplete, onFailed);
}
@Override var data = analyzeAnswer(response, "lavorazione/insertUDCRow");
public void onFailure(Call<ServiceRESTResponse<CloseUDCResponseDTO>> call, @NonNull final Exception e) {
onFailed.run(e); return data.getSavedMtbColr();
}
});
} }
@Override @Override
public void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) { public void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> {
try {
onComplete.run(synchronousInsertUDCRow(insertUDCRowRequestDTO));
} catch (Exception e) {
onFailed.run(e);
}
});
}
@Override
public MtbColr synchronousEditUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO) throws Exception {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.insertUDCRow(insertUDCRowRequestDTO) var response = colliLavorazioneRESTConsumerService.editUDCRow(editUDCRowRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<InsertUDCRowResponseDTO>> call, Response<ServiceRESTResponse<InsertUDCRowResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/insertUDCRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override var data = analyzeAnswer(response, "lavorazione/editUDCRow");
public void onFailure(Call<ServiceRESTResponse<InsertUDCRowResponseDTO>> call, @NonNull final Exception e) { return data.getSavedMtbColr();
onFailed.run(e);
}
});
} }
@Override @Override
public void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) { public void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); executorService.execute(() -> {
try {
colliLavorazioneRESTConsumerService.editUDCRow(editUDCRowRequestDTO) onComplete.run(synchronousEditUDCRow(editUDCRowRequestDTO));
.enqueue(new ManagedErrorCallback<>() { } catch (Exception e) {
@Override onFailed.run(e);
public void onResponse(Call<ServiceRESTResponse<EditUDCRowResponseDTO>> call, Response<ServiceRESTResponse<EditUDCRowResponseDTO>> response) { }
analyzeAnswer(response, "lavorazione/editUDCRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed); });
}
@Override
public void onFailure(Call<ServiceRESTResponse<EditUDCRowResponseDTO>> call, @NonNull final Exception e) {
onFailed.run(e);
}
});
} }
public MtbColt createUDSSynchronized(CreateUDSRequestDTO createUDSRequestDTO) throws Exception { public MtbColt createUDSSynchronized(CreateUDSRequestDTO createUDSRequestDTO) throws Exception {
@@ -231,22 +246,26 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C
}); });
} }
@Override @Override
public void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void synchronousDeleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO) throws Exception {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class); ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = restBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.deleteUDCRow(deleteUDCRowRequestDTO) var response = colliLavorazioneRESTConsumerService.deleteUDCRow(deleteUDCRowRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "lavorazione/deleteUDCRow", data -> onComplete.run(), onFailed);
}
@Override analyzeAnswer(response, "lavorazione/deleteUDCRow");
public void onFailure(Call<ServiceRESTResponse<Void>> call, @NonNull final Exception e) { }
onFailed.run(e); @Override
} public void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
}); executorService.execute(() -> {
try {
synchronousDeleteUDCRow(deleteUDCRowRequestDTO);
onComplete.run();
} catch (Exception e) {
onFailed.run(e);
}
});
} }

View File

@@ -17,13 +17,13 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -245,10 +245,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
saveCollo(newMtbColt, onComplete, onFailed); saveCollo(newMtbColt, onComplete, onFailed);
} }
public void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed);
}
public void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt mtbColtToCreate = new MtbColt() MtbColt mtbColtToCreate = new MtbColt()
@@ -310,6 +306,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public List<MtbColr> fillMtbAartsOfMtbColrsSynchronized(List<MtbColr> mtbColrs) throws Exception { public List<MtbColr> fillMtbAartsOfMtbColrsSynchronized(List<MtbColr> mtbColrs) throws Exception {
List<String> codMarts = new ArrayList<>(mtbColrs.stream() List<String> codMarts = new ArrayList<>(mtbColrs.stream()
@@ -351,23 +348,18 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.collect(Collectors.toList())); .collect(Collectors.toList()));
} }
List<MtbAart> mtbAarts = mArticoloRESTConsumer.getByCodMartsSynchronized(codMarts); List<MtbAart> artList = mArticoloRESTConsumer.getByCodMartsSynchronized(codMarts);
if (artList == null)
artList = new ArrayList<>();
Map<String, MtbAart> mtbAartsMap = artList.parallelStream()
.collect(Collectors.toMap(mtbAart -> mtbAart.getCodMart().toUpperCase(), x -> x));
for (MtbColt mtbColt : mtbColts) { for (MtbColt mtbColt : mtbColts) {
for (MtbColr mtbColr : mtbColt.getMtbColr()) { for (MtbColr mtbColr : mtbColt.getMtbColr()) {
if (mtbAarts != null && !mtbAarts.isEmpty()) { if (mtbAartsMap.containsKey(mtbColr.getCodMart().toUpperCase())) {
MtbAart foundMtbAart = null; mtbColr.setMtbAart(mtbAartsMap.get(mtbColr.getCodMart().toUpperCase()));
List<MtbAart> mtbAartStream = mtbAarts.parallelStream()
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()))
.collect(Collectors.toList());
if (!mtbAartStream.isEmpty()) {
foundMtbAart = mtbAartStream.get(0);
}
mtbColr.setMtbAart(foundMtbAart);
} }
mtbColr.setGestione(mtbColt.getGestione()); mtbColr.setGestione(mtbColt.getGestione());
@@ -456,7 +448,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void spostaUlSynchronized(MtbColt mtbColtToMove, String codMdep, String posizione, boolean createDocAutomatically) throws Exception { public void spostaUlSynchronized(MtbColt mtbColtToMove, String codMdep, String posizione, boolean createDocAutomatically, boolean enableDocumentDailyGrouping) throws Exception {
MtbColt mtbColtToMoveClone = (MtbColt) mtbColtToMove.clone(); MtbColt mtbColtToMoveClone = (MtbColt) mtbColtToMove.clone();
for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) {
@@ -479,11 +471,19 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
analyzeAnswer(response, "spostaUL"); analyzeAnswer(response, "spostaUL");
} }
public void spostaUlSynchronized(MtbColt mtbColtToMove, MtbDepoPosizione posizione, boolean enableDocumentDailyGrouping) throws Exception {
public void spostaUL(MtbColt mtbColtToMove, String codMdep, String posizione, boolean createDocAutomatically, Runnable onComplete, RunnableArgs<Exception> onFailed) { String codMdep = posizione.getCodMdep();
String posizioneString = posizione.getPosizione();
spostaUlSynchronized(mtbColtToMove, codMdep, posizioneString, true, enableDocumentDailyGrouping);
}
public void spostaUL(MtbColt mtbColtToMove, String codMdep, String posizione, boolean createDocAutomatically, boolean enableDocumentDailyGrouping, Runnable onComplete, RunnableArgs<Exception> onFailed) {
executorService.execute(() -> { executorService.execute(() -> {
try { try {
spostaUlSynchronized(mtbColtToMove, codMdep, posizione, createDocAutomatically); spostaUlSynchronized(mtbColtToMove, codMdep, posizione, createDocAutomatically, enableDocumentDailyGrouping);
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();
} catch (Exception ex) { } catch (Exception ex) {
if (onFailed != null) onFailed.run(ex); if (onFailed != null) onFailed.run(ex);
@@ -491,14 +491,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void spostaUL(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) {
String codMdep = posizione.getCodMdep();
String posizioneString = posizione.getPosizione();
spostaUL(mtbColtToMove, codMdep, posizioneString, true, onComplete, onFailed);
}
public void updateTipoULSynchronized(MtbColt mtbColt, String codTcol) throws Exception { public void updateTipoULSynchronized(MtbColt mtbColt, String codTcol) throws Exception {
MtbColt mtbColtClone = (MtbColt) mtbColt.clone(); MtbColt mtbColtClone = (MtbColt) mtbColt.clone();

View File

@@ -1,7 +1,5 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -9,12 +7,8 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.handler.ManagedErrorCallback;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO;
import retrofit2.Call;
import retrofit2.Response;
@Singleton @Singleton
public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer { public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer {
@@ -49,20 +43,12 @@ public class MagazzinoAutomaticoRESTConsumer extends _BaseRESTConsumer {
} }
public void putItems(MtbDepoPosizione posizione, MagazzinoAutomaticoPutItemsRequestDTO magazzinoAutomaticoPutItemsRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void makeSynchronousPutItemsRequest(MtbDepoPosizione posizione, MagazzinoAutomaticoPutItemsRequestDTO magazzinoAutomaticoPutItemsRequestDTO) throws Exception {
MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = restBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class); MagazzinoAutomaticoRESTConsumerService magazzinoAutomaticoRESTConsumerService = restBuilder.getService(MagazzinoAutomaticoRESTConsumerService.class);
magazzinoAutomaticoRESTConsumerService.putItems(posizione.getPosizione(), magazzinoAutomaticoPutItemsRequestDTO) var response = magazzinoAutomaticoRESTConsumerService.putItems(posizione.getPosizione(), magazzinoAutomaticoPutItemsRequestDTO)
.enqueue(new ManagedErrorCallback<>() { .execute();
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "magazzino-automatico/putItems", data -> onComplete.run(), onFailed);
}
@Override var data = analyzeAnswer(response, "magazzino-automatico/putItems");
public void onFailure(Call<ServiceRESTResponse<Void>> call, @NonNull final Exception e) {
onFailed.run(e);
}
});
} }
} }

View File

@@ -15,9 +15,9 @@ import java.util.concurrent.ExecutorService;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.handler.ManagedErrorCallback; import it.integry.integrywmsnative.core.rest.handler.ManagedErrorCallback;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
@@ -82,22 +82,22 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public List<AvailableCodMdepsDTO> getAvailableCodMdepsSynchronized() throws Exception { public List<MtbDepo> getAvailableCodMdepsSynchronized() throws Exception {
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class); SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
var response = service.getAvailableCodMdeps().execute(); var response = service.getAvailableCodMdeps().execute();
return analyzeAnswer(response, "CodMdepsAvailable"); return analyzeAnswer(response, "CodMdepsAvailable");
} }
public void getAvailableCodMdeps(final RunnableArgs<List<AvailableCodMdepsDTO>> onSuccess, RunnableArgs<Exception> onFailed) { public void getAvailableCodMdeps(final RunnableArgs<List<MtbDepo>> onSuccess, RunnableArgs<Exception> onFailed) {
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class); SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
service.getAvailableCodMdeps().enqueue(new ManagedErrorCallback<>() { service.getAvailableCodMdeps().enqueue(new ManagedErrorCallback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, Response<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> response) { public void onResponse(Call<ServiceRESTResponse<List<MtbDepo>>> call, Response<ServiceRESTResponse<List<MtbDepo>>> response) {
analyzeAnswer(response, "CodMdepsAvailable", onSuccess, onFailed); analyzeAnswer(response, "CodMdepsAvailable", onSuccess, onFailed);
} }
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, @NonNull final Exception e) { public void onFailure(Call<ServiceRESTResponse<List<MtbDepo>>> call, @NonNull final Exception e) {
onFailed.run(e); onFailed.run(e);
} }
}); });

View File

@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
@@ -25,7 +25,7 @@ public interface SystemRESTConsumerService {
Call<ServiceRESTResponse<List<String>>> getAvailableProfiles(@Query("username") String username, @Query("password") String password); Call<ServiceRESTResponse<List<String>>> getAvailableProfiles(@Query("username") String username, @Query("password") String password);
@GET("getAvailableCodMdepsForUser") @GET("getAvailableCodMdepsForUser")
Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> getAvailableCodMdeps(); Call<ServiceRESTResponse<List<MtbDepo>>> getAvailableCodMdeps();
@POST("sendEmail") @POST("sendEmail")
Call<ServiceRESTResponse<Void>> sendMail(@Body MailRequestDTO mailDto); Call<ServiceRESTResponse<Void>> sendMail(@Body MailRequestDTO mailDto);

View File

@@ -91,34 +91,40 @@ public abstract class _BaseRESTConsumer {
} }
public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) { public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) {
try {
var dataList = analyzeAnswerList(response, logTitle);
onComplete.run(dataList);
} catch (Exception e) {
onFailed.run(e);
}
}
public static <T> List<T> analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle) throws Exception {
if (response.isSuccessful()) { if (response.isSuccessful()) {
if (response.body() != null) { if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) { if (response.body().getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
onFailed.run(new Exception(response.body().getErrorMessage())); throw new Exception(response.body().getErrorMessage());
} else { } else {
return response.body().getEntityList();
List<T> dataObj = response.body().getEntityList();
onComplete.run(dataObj);
} }
} else { } else {
Log.e(logTitle, response.body().getErrorMessage()); Log.e(logTitle, response.body().getErrorMessage());
onFailed.run(CommonRESTException.tryRecognizeException(response.body().getErrorMessage())); throw CommonRESTException.tryRecognizeException(response.body().getErrorMessage());
} }
} else { } else {
Log.e(logTitle, response.message()); Log.e(logTitle, response.message());
onFailed.run(new Exception(response.message())); throw new Exception(response.message());
} }
} else { } else {
if (response.code() == 404) { if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata"); Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); throw new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")");
} else if (response.code() == 550) } else if (response.code() == 550)
onFailed.run(new InvalidLicenseException()); throw new InvalidLicenseException();
else { else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message()); Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); throw new Exception("Status " + response.code() + ": " + response.message());
} }
} }
} }

View File

@@ -12,13 +12,18 @@ import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO;
public interface ColliCaricoRESTConsumerInterface { public interface ColliCaricoRESTConsumerInterface {
MtbColt createUDCSynchronized(CreateUDCRequestDTO createUDCRequestDTO) throws Exception;
void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed); void createUDC(CreateUDCRequestDTO createUDCRequestDTO, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed);
CloseUDCResponseDTO synchronousCloseUDC(CloseUDCRequestDTO closeUDCRequestDTO) throws Exception;
void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs<CloseUDCResponseDTO> onComplete, RunnableArgs<Exception> onFailed); void closeUDC(CloseUDCRequestDTO closeUDCRequestDTO, RunnableArgs<CloseUDCResponseDTO> onComplete, RunnableArgs<Exception> onFailed);
MtbColr synchronousInsertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO) throws Exception;
void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed); void insertUDCRow(InsertUDCRowRequestDTO insertUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed);
MtbColr synchronousEditUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO) throws Exception;
void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed); void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed);
void synchronousDeleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRowRequestDTO) throws Exception;
void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed); void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed);
} }

View File

@@ -1,28 +0,0 @@
package it.integry.integrywmsnative.core.rest.model;
import com.google.gson.annotations.SerializedName;
public class AvailableCodMdepsDTO {
@SerializedName("codMdep")
private String codMdep;
@SerializedName("descrizione")
private String descrizione;
public String getCodMdep() {
return codMdep;
}
public String getDescrizione() {
return descrizione;
}
@Override
public boolean equals(Object obj) {
if((obj) != null) {
return ((AvailableCodMdepsDTO) obj).codMdep.equalsIgnoreCase(codMdep);
}
return false;
}
}

View File

@@ -7,15 +7,15 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
public class DBSettingsModel { public class DBSettingsModel {
private List<String> availableProfiles = null; private List<String> availableProfiles = null;
private List<AvailableCodMdepsDTO> availableCodMdep = null; private List<MtbDepo> availableDepos = null;
private List<MtbDepoPosizione> availablePosizioni = null; private List<MtbDepoPosizione> availablePosizioni = null;
private Azienda datiAzienda = null; private Azienda datiAzienda = null;
@@ -101,6 +101,7 @@ public class DBSettingsModel {
private boolean flagViewSwitchDepoButton = true; private boolean flagViewSwitchDepoButton = true;
private boolean flagProduzioneSkipAskVersamentoAutomatico; private boolean flagProduzioneSkipAskVersamentoAutomatico;
private boolean flagAccettazioneViewLotto = false; private boolean flagAccettazioneViewLotto = false;
private boolean flagSpedizioneUnderflowQuantityWarning = false;
private boolean flagAccettazioneBollaMarkReceived = false; private boolean flagAccettazioneBollaMarkReceived = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
@@ -157,12 +158,12 @@ public class DBSettingsModel {
return this; return this;
} }
public List<AvailableCodMdepsDTO> getAvailableCodMdep() { public List<MtbDepo> getAvailableDepos() {
return availableCodMdep; return availableDepos;
} }
public void setAvailableCodMdep(List<AvailableCodMdepsDTO> availableCodMdep) { public void setAvailableDepos(List<MtbDepo> availableDepos) {
this.availableCodMdep = availableCodMdep; this.availableDepos = availableDepos;
} }
public boolean isEnableCheckPartitaMagCheckPickingV() { public boolean isEnableCheckPartitaMagCheckPickingV() {
@@ -855,6 +856,15 @@ public class DBSettingsModel {
return this; return this;
} }
public boolean isFlagSpedizioneUnderflowQuantityWarning() {
return flagSpedizioneUnderflowQuantityWarning;
}
public DBSettingsModel setFlagSpedizioneUnderflowQuantityWarning(boolean flagSpedizioneUnderflowQuantityWarning) {
this.flagSpedizioneUnderflowQuantityWarning = flagSpedizioneUnderflowQuantityWarning;
return this;
}
public boolean isFlagAccettazioneBollaMarkReceived() { public boolean isFlagAccettazioneBollaMarkReceived() {
return flagAccettazioneBollaMarkReceived; return flagAccettazioneBollaMarkReceived;
} }

View File

@@ -18,6 +18,7 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
@@ -26,7 +27,6 @@ import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.utility.UtilityFirebase; import it.integry.integrywmsnative.core.utility.UtilityFirebase;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -170,7 +170,7 @@ public class SettingsManager {
private static void loadAvailableCodMdeps() throws Exception { private static void loadAvailableCodMdeps() throws Exception {
var availableCodMdeps = mSystemRESTConsumer.getAvailableCodMdepsSynchronized(); var availableCodMdeps = mSystemRESTConsumer.getAvailableCodMdepsSynchronized();
dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps); dbSettingsModelIstance.setAvailableDepos(availableCodMdeps);
if (availableCodMdeps == null || availableCodMdeps.isEmpty()) { if (availableCodMdeps == null || availableCodMdeps.isEmpty()) {
throw new Exception(mContext.getText(R.string.no_codmdep_available).toString()); throw new Exception(mContext.getText(R.string.no_codmdep_available).toString());
@@ -179,7 +179,7 @@ public class SettingsManager {
boolean codMdepExistsAnymore = false; boolean codMdepExistsAnymore = false;
if (settingsModelIstance.getUserSession().getDepo() != null) { if (settingsModelIstance.getUserSession().getDepo() != null) {
for (AvailableCodMdepsDTO availableCodMdepDTO : availableCodMdeps) { for (MtbDepo availableCodMdepDTO : availableCodMdeps) {
//Controllo se il codMdep salvato esiste ancora //Controllo se il codMdep salvato esiste ancora
if (availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) { if (availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) {
codMdepExistsAnymore = true; codMdepExistsAnymore = true;
@@ -264,6 +264,11 @@ public class SettingsManager {
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
.setKeySection("FLAG_CAN_ADD_EXTRA_QUANTITY") .setKeySection("FLAG_CAN_ADD_EXTRA_QUANTITY")
.setSetter(dbSettingsModelIstance::setFlagCanAddExtraQuantitySpedizione)); .setSetter(dbSettingsModelIstance::setFlagCanAddExtraQuantitySpedizione));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_UNDERFLOW_QUANTITY_WARNING")
.setSetter(dbSettingsModelIstance::setFlagSpedizioneUnderflowQuantityWarning));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")

View File

@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.settings;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.model.MtbDepo;
public class SettingsModel { public class SettingsModel {
@@ -85,7 +85,7 @@ public class SettingsModel {
private LocalDateTime refreshTokenExpiryDate; private LocalDateTime refreshTokenExpiryDate;
private String deviceId; private String deviceId;
private String profileDB; private String profileDB;
private AvailableCodMdepsDTO depo; private MtbDepo depo;
private Integer defaultOrdinamentoPickingAccettazione = 0; private Integer defaultOrdinamentoPickingAccettazione = 0;
private Integer defaultOrdinamentoPickingAccettazioneBolle = 0; private Integer defaultOrdinamentoPickingAccettazioneBolle = 0;
@@ -134,11 +134,11 @@ public class SettingsModel {
return this; return this;
} }
public AvailableCodMdepsDTO getDepo() { public MtbDepo getDepo() {
return depo; return depo;
} }
public UserSession setDepo(AvailableCodMdepsDTO depo) { public UserSession setDepo(MtbDepo depo) {
this.depo = depo; this.depo = depo;
return this; return this;
} }

View File

@@ -78,7 +78,6 @@ public class MainAccettazioneOrdiniElencoFragment extends BaseFragment implement
@Override @Override
public void onSaveInstanceState(@NonNull Bundle outState) { public void onSaveInstanceState(@NonNull Bundle outState) {
onLoadingEnded();
outState.putString("mToolbar", DataCache.addItem(mToolbar)); outState.putString("mToolbar", DataCache.addItem(mToolbar));
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);

View File

@@ -11,7 +11,6 @@ import android.view.Gravity;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu; import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
@@ -158,7 +157,17 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd(); boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
mViewModel.setListeners(this); mViewModel.setListeners(this);
mViewModel.init(mOrders, mSitArts, useQtaOrd);
this.onLoadingStarted();
executorService.execute(() -> {
try {
mViewModel.init(mOrders, mSitArts, useQtaOrd);
this.onLoadingEnded();
} catch (Exception e) {
this.onError(e);
}
});
} }
private void initFab() { private void initFab() {
@@ -370,7 +379,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
private void refreshList() { private void refreshList() {
runOnUiThread(() -> { handler.post(() -> {
List<PickingObjectDTO> tmpList; List<PickingObjectDTO> tmpList;
if (mAppliedFilterViewModel != null) { if (mAppliedFilterViewModel != null) {
@@ -778,7 +787,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onWarning(String warningText, Runnable action) { public void onWarning(String warningText, Runnable action) {
this.runOnUiThread(() -> { handler.post(() -> {
this.onLoadingEnded(); this.onLoadingEnded();
DialogSimpleMessageView DialogSimpleMessageView
.makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action) .makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action)
@@ -806,7 +815,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onRowSaved() { public void onRowSaved() {
runOnUiThread(() -> { handler.post(() -> {
Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT)
.setBackgroundTint(getResources().getColor(R.color.green_500)) .setBackgroundTint(getResources().getColor(R.color.green_500))
.show(); .show();
@@ -815,7 +824,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onFilterCodMartApplied(String codMartToFilter) { public void onFilterCodMartApplied(String codMartToFilter) {
runOnUiThread(() -> { handler.post(() -> {
var codMarts = new ArrayList<String>(); var codMarts = new ArrayList<String>();
codMarts.add(codMartToFilter); codMarts.add(codMartToFilter);
@@ -825,7 +834,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onFilterPosizioneApplied(String posizioneToFilter) { public void onFilterPosizioneApplied(String posizioneToFilter) {
runOnUiThread(() -> { handler.post(() -> {
var posizioni = new ArrayList<String>(); var posizioni = new ArrayList<String>();
posizioni.add(posizioneToFilter); posizioni.add(posizioneToFilter);
@@ -836,7 +845,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) { public void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) {
runOnUiThread(() -> { handler.post(() -> {
DialogVersamentoAutomaticoULDoneView.newInstance(versamentoAutomaticoULResponseDTO, onComplete).show(getSupportFragmentManager(), "tag"); DialogVersamentoAutomaticoULDoneView.newInstance(versamentoAutomaticoULResponseDTO, onComplete).show(getSupportFragmentManager(), "tag");
}); });
@@ -844,7 +853,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) { public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
runOnUiThread(() -> { handler.post(() -> {
String text = getResources().getString(R.string.alert_delete_mtb_colr); String text = getResources().getString(R.string.alert_delete_mtb_colr);
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false)).show(getSupportFragmentManager(), "tag"); DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false)).show(getSupportFragmentManager(), "tag");
}); });
@@ -852,7 +861,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
@Override @Override
public void onLUOpened(MtbColt mtbColt) { public void onLUOpened(MtbColt mtbColt) {
runOnUiThread(() -> { handler.post(() -> {
noLUPresent.set(false); noLUPresent.set(false);
Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT) Snackbar.make(mBindings.getRoot(), R.string.data_saved, Snackbar.LENGTH_SHORT)
.setBackgroundTint(getResources().getColor(R.color.green_500)) .setBackgroundTint(getResources().getColor(R.color.green_500))

View File

@@ -1,50 +1,9 @@
package it.integry.integrywmsnative.gest.accettazione_ordini_picking; package it.integry.integrywmsnative.gest.accettazione_ordini_picking;
import dagger.Module; import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.ean128.Ean128Service;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.rest.AccettazioneOrdiniPickingRESTConsumer;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
@Module(subcomponents = AccettazioneOrdiniPickingComponent.class) @Module(subcomponents = AccettazioneOrdiniPickingComponent.class)
public class AccettazioneOrdiniPickingModule { public class AccettazioneOrdiniPickingModule {
@Provides
AccettazioneOrdiniPickingRESTConsumer providesAccettazionePickingRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
return new AccettazioneOrdiniPickingRESTConsumer(restBuilder, systemRESTConsumer);
}
@Provides
BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() {
return new BottomSheetFragmentLUContentViewModel();
}
@Provides
AccettazioneOrdiniPickingViewModel providesAccettazioneViewModel(
ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
Ean128Service ean128Service,
ImballiRESTConsumer imballiRESTConsumer) {
return new AccettazioneOrdiniPickingViewModel(articoloRESTConsumer,
barcodeRESTConsumer,
colliMagazzinoRESTConsumer,
accettazioneOrdiniPickingRESTConsumer,
colliAccettazioneRESTConsumer,
colliLavorazioneRESTConsumer,
ean128Service,
imballiRESTConsumer);
}
} }

View File

@@ -1,5 +1,7 @@
package it.integry.integrywmsnative.gest.accettazione_ordini_picking; package it.integry.integrywmsnative.gest.accettazione_ordini_picking;
import android.os.Handler;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
@@ -11,6 +13,8 @@ import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
@@ -72,6 +76,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.Tracciament
public class AccettazioneOrdiniPickingViewModel { public class AccettazioneOrdiniPickingViewModel {
private final ExecutorService executorService;
private final Handler handler;
private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
@@ -96,7 +102,9 @@ public class AccettazioneOrdiniPickingViewModel {
private final List<HistoryMtbAartDTO> mHistoryUsedAarts = new ArrayList<>(); private final List<HistoryMtbAartDTO> mHistoryUsedAarts = new ArrayList<>();
@Inject @Inject
public AccettazioneOrdiniPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer, public AccettazioneOrdiniPickingViewModel(Handler handler,
ExecutorService executorService,
ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer, AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer,
@@ -104,6 +112,8 @@ public class AccettazioneOrdiniPickingViewModel {
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
Ean128Service ean128Service, Ean128Service ean128Service,
ImballiRESTConsumer imballiRESTConsumer) { ImballiRESTConsumer imballiRESTConsumer) {
this.handler = handler;
this.executorService = executorService;
this.mArticoloRESTConsumer = articoloRESTConsumer; this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
@@ -115,23 +125,24 @@ public class AccettazioneOrdiniPickingViewModel {
} }
public void init(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, boolean useQtaOrd) { public void init(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, boolean useQtaOrd) throws Exception {
this.mOrders = orders; this.mOrders = orders;
this.mUseQtaOrd = useQtaOrd; this.mUseQtaOrd = useQtaOrd;
List<SitArtOrdDTO> mSitArts = Stream.of(sitArts) List<SitArtOrdDTO> mSitArts = sitArts.stream()
.filter(x -> .filter(x ->
UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) &&
UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO))
.toList(); .toList();
getEmptyPickingList(mSitArts, this.mPickingList::postValue); var pickingList = getEmptyPickingList(mSitArts);
this.mPickingList.postValue(pickingList);
//Definizione della gestione collo di default //Definizione della gestione collo di default
Boolean isOrdTrasf = Stream.of(mOrders) Boolean isOrdTrasf = mOrders.stream()
.map(OrdineAccettazioneInevasoDTO::isOrdTrasf) .map(OrdineAccettazioneInevasoDTO::isOrdTrasf)
.withoutNulls() .filter(Objects::nonNull)
.distinctBy(x -> x) .distinct()
.findFirst() .findFirst()
.get(); .get();
@@ -145,10 +156,10 @@ public class AccettazioneOrdiniPickingViewModel {
//Definizione della gestione collo di default //Definizione della gestione collo di default
List<GestioneEnum> foundGestioni = Stream.of(mOrders) List<GestioneEnum> foundGestioni = mOrders.stream()
.map(OrdineAccettazioneInevasoDTO::getGestioneEnum) .map(OrdineAccettazioneInevasoDTO::getGestioneEnum)
.withoutNulls() .filter(Objects::nonNull)
.distinctBy(x -> x) .distinct()
.toList(); .toList();
if (foundGestioni.size() == 1) { if (foundGestioni.size() == 1) {
@@ -157,7 +168,7 @@ public class AccettazioneOrdiniPickingViewModel {
} else } else
defaultGestioneOfUL = foundGestioni.get(0) == GestioneEnum.PRODUZIONE ? GestioneEnum.LAVORAZIONE : foundGestioni.get(0); defaultGestioneOfUL = foundGestioni.get(0) == GestioneEnum.PRODUZIONE ? GestioneEnum.LAVORAZIONE : foundGestioni.get(0);
} else { } else {
this.sendError(new InvalidLUMultiGestioneException()); throw new InvalidLUMultiGestioneException();
} }
switch (defaultGestioneOfUL) { switch (defaultGestioneOfUL) {
@@ -166,32 +177,31 @@ public class AccettazioneOrdiniPickingViewModel {
} }
} }
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) { private List<PickingObjectDTO> getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList) throws Exception {
List<String> codMarts = Stream.of(sitArtOrdList) List<String> codMarts = sitArtOrdList.stream()
.map(SitArtOrdDTO::getCodMart) .map(SitArtOrdDTO::getCodMart)
.toList(); .collect(Collectors.toList());
this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> { var listMtbAarts = this.mArticoloRESTConsumer.getByCodMartsSynchronized(codMarts);
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList) List<PickingObjectDTO> pickingList = sitArtOrdList.stream()
.map(sitArtOrdDTO -> { .map(sitArtOrdDTO -> {
MtbAart mtbAart = null; MtbAart mtbAart = null;
for (MtbAart mtbAartItem : listMtbAarts) { for (MtbAart mtbAartItem : listMtbAarts) {
if (mtbAartItem.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart())) { if (mtbAartItem.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart())) {
mtbAart = mtbAartItem; mtbAart = mtbAartItem;
break; break;
}
} }
}
return new PickingObjectDTO() return new PickingObjectDTO()
.setSitArtOrdDTO(sitArtOrdDTO) .setSitArtOrdDTO(sitArtOrdDTO)
.setMtbAart(mtbAart); .setMtbAart(mtbAart);
}) })
.toList(); .collect(Collectors.toList());
onComplete.run(pickingList); return pickingList;
}, this::sendError);
} }
public MutableLiveData<List<PickingObjectDTO>> getPickingList() { public MutableLiveData<List<PickingObjectDTO>> getPickingList() {
@@ -654,8 +664,10 @@ public class AccettazioneOrdiniPickingViewModel {
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) .setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
.setMtbAart(pickingObjectDTO.getMtbAart()); .setMtbAart(pickingObjectDTO.getMtbAart());
pickingObjectDTO.getWithdrawMtbColrs().add(insertedMtbColr); handler.post(() -> {
mCurrentMtbColt.getMtbColr().add(insertedMtbColr); pickingObjectDTO.getWithdrawMtbColrs().add(insertedMtbColr);
mCurrentMtbColt.getMtbColr().add(insertedMtbColr);
});
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
resetMatchedRows(); resetMatchedRows();
@@ -771,7 +783,9 @@ public class AccettazioneOrdiniPickingViewModel {
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete);
} }
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); handler.post(() -> {
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
});
this.resetMatchedRows(); this.resetMatchedRows();
this.sendOnRowSaved(); this.sendOnRowSaved();

View File

@@ -123,7 +123,7 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
} }
private void initColloInfo() { private void initColloInfo() {
SettingsManager.iDB().getAvailableCodMdep().stream() SettingsManager.iDB().getAvailableDepos().stream()
.filter(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.get().getCodMdep())) .filter(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.get().getCodMdep()))
.findFirst() .findFirst()
.ifPresent(x -> descrizioneDepo.set("(" + x.getDescrizione() + ")")); .ifPresent(x -> descrizioneDepo.set("(" + x.getDescrizione() + ")"));

View File

@@ -158,7 +158,7 @@ public class LoginViewModel {
public void loadDepo(Runnable onComplete) { public void loadDepo(Runnable onComplete) {
this.mSystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> { this.mSystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> {
SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps); SettingsManager.iDB().setAvailableDepos(availableCodMdeps);
if (availableCodMdeps == null || availableCodMdeps.isEmpty()) { if (availableCodMdeps == null || availableCodMdeps.isEmpty()) {
this.sendError(new InvalidUserDepositException()); this.sendError(new InvalidUserDepositException());

View File

@@ -33,11 +33,11 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; 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.MtbDepo;
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.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.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
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;
@@ -158,7 +158,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
initRecuperoCollo(); initRecuperoCollo();
mBindings.switchDepoButton.setVisibility(SettingsManager.iDB().getAvailableCodMdep().size() > 1 ? View.VISIBLE : View.GONE); mBindings.switchDepoButton.setVisibility(SettingsManager.iDB().getAvailableDepos().size() > 1 ? View.VISIBLE : View.GONE);
} }
private void initSessionData() { private void initSessionData() {
@@ -339,11 +339,11 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
} }
public void changeUserDepo() { public void changeUserDepo() {
DialogSwitchUserDepoView.newInstance(SettingsManager.iDB().getAvailableCodMdep(), this::onUserDepoChanged) DialogSwitchUserDepoView.newInstance(SettingsManager.iDB().getAvailableDepos(), this::onUserDepoChanged)
.show(getParentFragmentManager(), "switch-user-depo"); .show(getParentFragmentManager(), "switch-user-depo");
} }
private void onUserDepoChanged(AvailableCodMdepsDTO newDepo) { private void onUserDepoChanged(MtbDepo newDepo) {
SettingsManager.i().getUserSession().setDepo(newDepo); SettingsManager.i().getUserSession().setDepo(newDepo);
initSessionData(); initSessionData();
} }

View File

@@ -243,7 +243,7 @@ public class PickingLiberoViewModel {
} else if (mtbColtList.size() == 1) { } else if (mtbColtList.size() == 1) {
var mtbColt = this.mColliMagazzinoRESTConsumer.getByTestataSynchronized(mtbColtList.get(0), true, false); var mtbColt = this.mColliMagazzinoRESTConsumer.getByTestataSynchronized(mtbColtList.get(0), true, false);
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableDepos())
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) { if (codMdepIsValid) {
@@ -269,7 +269,7 @@ public class PickingLiberoViewModel {
} else if ((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) { } else if ((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) {
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream() boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColtScanned.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColtScanned.getCodMdep()));
if (codMdepIsValid) { if (codMdepIsValid) {
@@ -657,7 +657,7 @@ public class PickingLiberoViewModel {
String newCodMdep = shouldChangeCodMdep ? refMtbColt.getCodMdep() : null; String newCodMdep = shouldChangeCodMdep ? refMtbColt.getCodMdep() : null;
if (shouldChangeCodMdep) { if (shouldChangeCodMdep) {
mColliMagazzinoRESTConsumer.spostaUlSynchronized(mCurrentMtbColt, newCodMdep, null, false); mColliMagazzinoRESTConsumer.spostaUlSynchronized(mCurrentMtbColt, newCodMdep, null, false, false);
mCurrentMtbColt.setCodMdep(newCodMdep); mCurrentMtbColt.setCodMdep(newCodMdep);
} }
} }

View File

@@ -143,7 +143,7 @@ public class ProdRiposizionamentoDaProdViewModel {
this.sendError(new ScannedPositionNotExistException()); this.sendError(new ScannedPositionNotExistException());
} else { } else {
if (mtbColt != null) { if (mtbColt != null) {
mColliMagazzinoRESTConsumer.spostaUL(mtbColt, mtbDepoPosizione, () -> { mColliMagazzinoRESTConsumer.spostaUL(mtbColt, mtbDepoPosizione.getCodMdep(), mtbDepoPosizione.getPosizione(), true, false, () -> {
List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioList = mMvwSitArtUdcDetInventarioLiveData.getValue(); List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioList = mMvwSitArtUdcDetInventarioLiveData.getValue();
if (mvwSitArtUdcDetInventarioList != null) { if (mvwSitArtUdcDetInventarioList != null) {

View File

@@ -117,7 +117,7 @@ public class ProdVersamentoMaterialeViewModel {
} else if (mtbColtList.size() == 1) { } else if (mtbColtList.size() == 1) {
var mtbColt = this.mColliMagazzinoRESTConsumer.getByTestataSynchronized(mtbColtList.get(0), true, false); var mtbColt = this.mColliMagazzinoRESTConsumer.getByTestataSynchronized(mtbColtList.get(0), true, false);
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream() boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) { if (codMdepIsValid) {
@@ -133,7 +133,7 @@ public class ProdVersamentoMaterialeViewModel {
private void executeEtichettaLU(String sscc) throws Exception { private void executeEtichettaLU(String sscc) throws Exception {
var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(sscc, true, false); var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(sscc, true, false);
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream() boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) { if (codMdepIsValid) {

View File

@@ -667,7 +667,7 @@ public class SpedizioneViewModel {
} }
} else { } else {
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep() boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos()
.stream() .stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
@@ -710,7 +710,7 @@ public class SpedizioneViewModel {
if (mtbColt != null && mtbColt.getMtbColr() != null && !mtbColt.getMtbColr().isEmpty()) { if (mtbColt != null && mtbColt.getMtbColr() != null && !mtbColt.getMtbColr().isEmpty()) {
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream() boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) { if (codMdepIsValid) {
@@ -729,7 +729,7 @@ public class SpedizioneViewModel {
if (mtbColt.getSegno() != -1) { if (mtbColt.getSegno() != -1) {
boolean codMdepMatchPreviousPick = mCurrentMtbColt == null || mCurrentMtbColt.getMtbColr().isEmpty() || mCurrentMtbColt.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()); boolean codMdepMatchPreviousPick = mCurrentMtbColt == null || mCurrentMtbColt.getMtbColr().isEmpty() || mCurrentMtbColt.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep());
boolean codMdepIsValid = SettingsManager.iDB().getAvailableCodMdep().stream() boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid && codMdepMatchPreviousPick) { if (codMdepIsValid && codMdepMatchPreviousPick) {
@@ -1632,7 +1632,7 @@ public class SpedizioneViewModel {
String newCodMdep = shouldChangeCodMdep ? refMtbColt.getCodMdep() : null; String newCodMdep = shouldChangeCodMdep ? refMtbColt.getCodMdep() : null;
if (shouldChangeCodMdep) { if (shouldChangeCodMdep) {
mColliMagazzinoRESTConsumer.spostaUlSynchronized(mCurrentMtbColt, newCodMdep, null, false); mColliMagazzinoRESTConsumer.spostaUlSynchronized(mCurrentMtbColt, newCodMdep, null, false, false);
mCurrentMtbColt.setCodMdep(newCodMdep); mCurrentMtbColt.setCodMdep(newCodMdep);
} }
} }

View File

@@ -10,12 +10,12 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch;
import javax.inject.Inject; import javax.inject.Inject;
@@ -76,7 +76,7 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main_versamento_merce, container, false); mBindings = FragmentMainVersamentoMerceBinding.inflate(inflater, container, false);
MainApplication.appComponent MainApplication.appComponent
.versamentoMerceComponent() .versamentoMerceComponent()
@@ -112,9 +112,9 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
if (mtbColt == null) { if (mtbColt == null) {
((IPoppableActivity) getActivity()).pop(); ((IPoppableActivity) getActivity()).pop();
} else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)) { } else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)) {
this.mViewModel.getCurrentMtbColt().postValue(mtbColt); this.mViewModel.initUL(mtbColt);
} else if (mtbColt.getGestioneEnum() == GestioneEnum.VENDITA) { } else if (mtbColt.getGestioneEnum() == GestioneEnum.VENDITA) {
this.mViewModel.getCurrentMtbColt().postValue(mtbColt); this.mViewModel.initUL(mtbColt);
} else { } else {
DialogSimpleMessageView DialogSimpleMessageView
.makeWarningDialog(new SpannableString(Html.fromHtml("Sono accettate solamente UL di <b>Acquisto</b> o <b>Lavorazione</b> di <b>CARICO</b>")), .makeWarningDialog(new SpannableString(Html.fromHtml("Sono accettate solamente UL di <b>Acquisto</b> o <b>Lavorazione</b> di <b>CARICO</b>")),
@@ -136,8 +136,13 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
this.onLoadingStarted(); this.onLoadingStarted();
this.mViewModel.processBarcodeDTO(data, () -> { executorService.execute(() -> {
this.onLoadingEnded(); try {
this.mViewModel.processBarcodeDTO(data);
this.onLoadingEnded();
} catch (Exception e) {
this.onError(e);
}
}); });
}; };
@@ -213,12 +218,12 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
.setCanLUBeClosed(false); .setCanLUBeClosed(false);
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
this.requireActivity().runOnUiThread(() -> { handler.post(() -> {
mDialogInputQuantityV2View mDialogInputQuantityV2View
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
.setOnComplete(resultDTO -> { .setOnComplete(resultDTO -> {
if(resultDTO == null || resultDTO.isAborted()) { if (resultDTO == null || resultDTO.isAborted()) {
this.onLoadingEnded(); this.onLoadingEnded();
return; return;
} }
@@ -233,7 +238,6 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
onComplete.run(pickedQuantityDTO); onComplete.run(pickedQuantityDTO);
}) })
.setOnAbort(this::onLoadingEnded)
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
}); });
else this.onLoadingEnded(); else this.onLoadingEnded();
@@ -241,8 +245,22 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
@Override @Override
public void onDataSaved() { public void onDataSaved() {
this.requireActivity().runOnUiThread(() -> { CountDownLatch countDownLatch = new CountDownLatch(1);
DialogCommon.showDataSaved(requireActivity(), this::popMe);
handler.post(() -> {
DialogCommon.showDataSaved(requireActivity(), () -> {
countDownLatch.countDown();
});
}); });
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
mViewModel.resetAll();
this.openLU();
} }
} }

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.versamento_merce;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
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.MagazzinoAutomaticoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@@ -11,11 +12,12 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
public class VersamentoMerceModule { public class VersamentoMerceModule {
@Provides @Provides
VersamentoMerceViewModel providesVersamentoMerceViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, VersamentoMerceViewModel providesVersamentoMerceViewModel(ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer) { MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer) {
return new VersamentoMerceViewModel(colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, magazzinoAutomaticoRESTConsumer); return new VersamentoMerceViewModel(colliLavorazioneRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, magazzinoAutomaticoRESTConsumer);
} }
} }

View File

@@ -8,12 +8,15 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import javax.inject.Inject; 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.CommonConst;
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException; import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
import it.integry.integrywmsnative.core.exception.NoArtsInLUException; import it.integry.integrywmsnative.core.exception.NoArtsInLUException;
@@ -28,12 +31,15 @@ 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.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
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.MagazzinoAutomaticoRESTConsumer; 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.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CreateUDCRequestDTO;
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.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -45,228 +51,226 @@ public class VersamentoMerceViewModel {
private Listener mListener; private Listener mListener;
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
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 MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer; private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
@Inject @Inject
public VersamentoMerceViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) { public VersamentoMerceViewModel(ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer; this.mPosizioniRESTConsumer = posizioniRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer; this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
} }
public void initUL(MtbColt response) {
this.mCurrentMtbColt.postValue(response);
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) throws Exception {
if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO, false)) { if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO, false)) {
this.executeEtichettaPosizione(barcodeScanDTO, onComplete); this.executeEtichettaPosizione(barcodeScanDTO);
} else if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { } else if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), true, onComplete); this.executeEtichettaLU(barcodeScanDTO.getStringValue(), true);
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeEtichettaEan128(barcodeScanDTO, onComplete); this.executeEtichettaEan128(barcodeScanDTO);
} else {
onComplete.run();
} }
} }
private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) throws Exception {
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) MtbDepoPosizione foundPosizione = SettingsManager.iDB().getAvailablePosizioni().stream()
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single(); .findFirst()
.orElse(null);
if (foundPosizione == null) { if (foundPosizione == null) {
//Nessuna posizione trovata con questo barcode //Nessuna posizione trovata con questo barcode
this.sendError(new ScannedPositionNotExistException()); throw new ScannedPositionNotExistException();
return;
} }
if (foundPosizione.isMagazzinoAutomatico()) { this.executePosizione(foundPosizione);
//La posizione è di un magazzino automatico }
this.executePosizioneMagazzinoAutomatico(foundPosizione, onComplete);
} else if (foundPosizione.isFlagMonoCollo()) {
this.executePosizioneMonocollo(onComplete, foundPosizione); public void executePosizione(MtbDepoPosizione mtbDepoPosizione) throws Exception {
if (mtbDepoPosizione.isMagazzinoAutomatico()) {
//La posizione è di un magazzino automatico
this.executePosizioneMagazzinoAutomatico(mtbDepoPosizione);
} else if (mtbDepoPosizione.isFlagMonoCollo()) {
this.executePosizioneMonocollo(mtbDepoPosizione);
} else { } else {
if (!UtilityString.equalsIgnoreCase(mCurrentMtbColt.getValue().getCodMdep(), foundPosizione.getCodMdep())) { boolean canContinue = true;
this.sendOnSpostamentoTraDepConfirmRequired(mCurrentMtbColt.getValue().getCodMdep(), foundPosizione.getCodMdep(), canContinue -> {
onComplete.run(); if (!UtilityString.equalsIgnoreCase(mCurrentMtbColt.getValue().getCodMdep(), mtbDepoPosizione.getCodMdep())) {
if (canContinue) { canContinue = this.sendOnSpostamentoTraDepConfirmRequired(mCurrentMtbColt.getValue().getCodMdep(), mtbDepoPosizione.getCodMdep());
if (UtilityPosizione.isPosizioneWithLivello(foundPosizione)) {
askLivelloPosizione(foundPosizione); }
} else {
updatePosizione(foundPosizione); if (canContinue) {
} if (UtilityPosizione.isPosizioneWithLivello(mtbDepoPosizione)) {
} askLivelloPosizione(mtbDepoPosizione);
});
} else {
onComplete.run();
if (UtilityPosizione.isPosizioneWithLivello(foundPosizione)) {
askLivelloPosizione(foundPosizione);
} else { } else {
updatePosizione(foundPosizione); updatePosizione(mtbDepoPosizione);
} }
} }
} }
} }
private void executePosizioneMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione) throws Exception {
private void executePosizioneMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPutItemsRequestDTO() var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPutItemsRequestDTO()
.setInputMtbColt(this.mCurrentMtbColt.getValue()); .setInputMtbColt(this.mCurrentMtbColt.getValue());
mMagazzinoAutomaticoRESTConsumer.putItems(mtbDepoPosizione, mMagazzinoAutomaticoRESTConsumer.makeSynchronousPutItemsRequest(mtbDepoPosizione, magazzinoAutomaticoPickRequest);
magazzinoAutomaticoPickRequest, () -> {
onComplete.run(); this.sendOnDataSaved();
this.sendOnDataSaved();
}, this::sendError);
} }
private void executePosizioneMonocollo(Runnable onComplete, MtbDepoPosizione foundPosizione) { private void executePosizioneMonocollo(MtbDepoPosizione foundPosizione) throws Exception {
this.mPosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { var barcodeUlInPosizioneList = this.mPosizioniRESTConsumer.getBancaliInPosizioneSynchronized(foundPosizione);
if (mtbColtList == null || mtbColtList.isEmpty()) { if (barcodeUlInPosizioneList == null || barcodeUlInPosizioneList.isEmpty()) {
this.sendError(new NoLUFoundException()); throw new NoLUFoundException();
} else if (mtbColtList.size() == 1) { } else if (barcodeUlInPosizioneList.size() == 1) {
mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { var mtbColt = mColliMagazzinoRESTConsumer.getByTestataSynchronized(
barcodeUlInPosizioneList.get(0), true, false
);
//TAKE HERE //TAKE HERE
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep()) boolean codMdepIsValid = SettingsManager.iDB().getAvailableDepos().stream()
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep())); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) { if (codMdepIsValid) {
pickMerceULtoUL(mtbColt, onComplete); pickMerceULtoUL(mtbColt);
} else this.sendError(new InvalidCodMdepException()); } else throw new InvalidCodMdepException();
} else {
throw new TooManyLUFoundInMonoLUPositionException();
}
}
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO) throws Exception {
var ean128Model = this.mBarcodeRESTConsumer.decodeEan128Synchronized(barcodeScanDTO);
String barcodeProd = null;
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
barcodeProd = ean128Model.Content;
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
this.executeEtichettaLU(ean128Model.Sscc, false);
}, this::sendError);
} else { } else {
this.sendError(new TooManyLUFoundInMonoLUPositionException()); throw new NoLUFoundException();
} }
}, this::sendError);
}
} }
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onBarcodeScanComplete) { private void executeEtichettaLU(String sscc, boolean isAnonima) throws Exception {
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { var mtbColt = this.mColliMagazzinoRESTConsumer.getBySsccSynchronized(
sscc, true, false
);
String barcodeProd = null; if (mtbColt == null && !isAnonima) {
throw new NoLUFoundException();
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc; } else if (mtbColt != null && (/*mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO ||*/ mtbColt.getGestioneEnum() == GestioneEnum.VENDITA)) {
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin; throw new InvalidLUGestioneException(GestioneEnum.VENDITA);
if (!UtilityString.isNullOrEmpty(ean128Model.Content)) } else {
barcodeProd = ean128Model.Content; if (mtbColt == null) {
int numCollo = -1;
try {
if (!UtilityString.isNullOrEmpty(barcodeProd)) { numCollo = UtilityBarcode.getNumColloFromULAnonima(sscc);
} catch (Exception e) {
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { throw new RuntimeException(e);
this.executeEtichettaLU(ean128Model.Sscc, false, onBarcodeScanComplete);
} else {
this.sendError(new NoLUFoundException());
} }
var createUDCRequestDTO = new CreateUDCRequestDTO()
.setNumCollo(numCollo)
.setSerCollo(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE)
.setBarcodeUl(sscc);
var mtbColtAnonimo = this.mColliLavorazioneRESTConsumer.createUDCSynchronized(createUDCRequestDTO);
pickMerceULtoUL(mtbColtAnonimo);
} else { } else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableDepos())
onBarcodeScanComplete.run(); .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) {
pickMerceULtoUL(mtbColt);
} else throw new InvalidCodMdepException();
} }
}, this::sendError); }
} }
private void executeEtichettaLU(String sscc, boolean isAnonima, Runnable onComplete) { private void pickMerceULtoUL(MtbColt destMtbColt) throws Exception {
this.mColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> {
if (mtbColt == null && !isAnonima) {
this.sendError(new NoLUFoundException());
} else if (mtbColt != null && (/*mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO ||*/ mtbColt.getGestioneEnum() == GestioneEnum.VENDITA)) {
this.sendError(new InvalidLUGestioneException(GestioneEnum.VENDITA));
} else {
if (mtbColt == null) {
this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(sscc, GestioneEnum.LAVORAZIONE, mtbColtAnonimo -> {
pickMerceULtoUL(mtbColtAnonimo, onComplete);
}, this::sendError);
} else {
boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
.anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
if (codMdepIsValid) {
pickMerceULtoUL(mtbColt, onComplete);
} else this.sendError(new InvalidCodMdepException());
}
}
}, this::sendError);
}
private void pickMerceULtoUL(MtbColt destMtbColt, Runnable onComplete) {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
MtbColt sourceMtbColt = mCurrentMtbColt.getValue(); MtbColt sourceMtbColt = mCurrentMtbColt.getValue();
if (!UtilityString.equalsIgnoreCase(sourceMtbColt.getCodMdep(), destMtbColt.getCodMdep())) { if (!UtilityString.equalsIgnoreCase(sourceMtbColt.getCodMdep(), destMtbColt.getCodMdep()))
this.sendError(new Exception("Impossibile spostare la merce tra UL di due depositi differenti")); throw new Exception("Impossibile spostare la merce tra UL di due depositi differenti");
return;
}
List<MtbColr> mtbColrsToPick = Stream.of(sourceMtbColt.getMtbColr()) List<MtbColr> mtbColrsToPick = sourceMtbColt.getMtbColr().stream()
.filter(x -> x.getQtaCol().floatValue() > 0) .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaCol(), BigDecimal.ZERO))
.toList(); .collect(Collectors.toList());
if (mtbColrsToPick.isEmpty()) { if (mtbColrsToPick.isEmpty()) {
this.sendError(new NoArtsInLUException()); throw new NoArtsInLUException();
return;
} }
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
this.sendOnArtsChooseRequired(mtbColrsToPick, pickedAarts -> { var pickedAarts = this.sendOnArtsChooseRequired(mtbColrsToPick);
List<MtbColr> destNewMtbColr = new ArrayList<>();
askQuantities(pickedAarts.iterator(), destNewMtbColr, () -> { if (pickedAarts == null || pickedAarts.isEmpty()) {
this.sendOnLoadingStarted(); // User aborted the picking
return;
MtbColt clonedSourceTestata = (MtbColt) sourceMtbColt.clone();
clonedSourceTestata.setMtbColr(new ObservableArrayList<>());
clonedSourceTestata.getMtbColr().addAll(destNewMtbColr);
this.mColliMagazzinoRESTConsumer.spostaArtsTraUL(
clonedSourceTestata,
destMtbColt,
false,
(generatedMtbColrs) -> {
this.sendOnDataSaved();
onComplete.run();
},
this::sendError
);
}, this::sendOnLoadingEnded);
}, this::sendOnLoadingEnded);
}
private void askQuantities(Iterator<MtbColr> sourceMtbColrs, List<MtbColr> destMtbColr, Runnable onComplete, Runnable onAbort) {
if (sourceMtbColrs.hasNext()) {
askSingleQuantity(sourceMtbColrs.next(), mtbColr -> {
destMtbColr.add(mtbColr);
askQuantities(sourceMtbColrs, destMtbColr, onComplete, onAbort);
}, onAbort);
} else {
onComplete.run();
} }
List<MtbColr> destNewMtbColr = new ArrayList<>();
for (MtbColr pickedMtbColr : pickedAarts) {
var mtbColr = askSingleQuantity(pickedMtbColr);
destNewMtbColr.add(mtbColr);
}
this.sendOnLoadingStarted();
MtbColt clonedSourceTestata = (MtbColt) sourceMtbColt.clone();
clonedSourceTestata.setMtbColr(new ObservableArrayList<>());
clonedSourceTestata.getMtbColr().addAll(destNewMtbColr);
var generatedMtbColrs = this.mColliMagazzinoRESTConsumer.spostaArtsTraULSynchronized(
clonedSourceTestata,
destMtbColt,
false);
this.sendOnLoadingEnded();
this.sendOnDataSaved();
} }
private void askSingleQuantity(MtbColr mtbColr, RunnableArgs<MtbColr> onComplete, Runnable onAbort) { private MtbColr askSingleQuantity(MtbColr mtbColr) {
this.sendOnItemDispatched(mtbColr.getMtbAart(), var pickedQuantity = this.sendOnItemDispatched(mtbColr.getMtbAart(),
mtbColr.getNumCnf(), mtbColr.getNumCnf(),
mtbColr.getQtaCnf(), mtbColr.getQtaCnf(),
mtbColr.getQtaCol(), mtbColr.getQtaCol(),
@@ -276,40 +280,42 @@ public class VersamentoMerceViewModel {
mtbColr.getPartitaMag(), mtbColr.getPartitaMag(),
mtbColr.getDataScadPartita(), mtbColr.getDataScadPartita(),
false, false,
false, false);
pickedQuantity -> {
mtbColr
.setQtaCol(pickedQuantity.getQtaTot())
.setQtaCnf(pickedQuantity.getQtaCnf())
.setNumCnf(pickedQuantity.getNumCnf())
.setDatetimeRow(UtilityDate.getDateInstance());
onComplete.run(mtbColr); mtbColr
.setQtaCol(pickedQuantity.getQtaTot())
.setQtaCnf(pickedQuantity.getQtaCnf())
.setNumCnf(pickedQuantity.getNumCnf())
.setDatetimeRow(UtilityDate.toDateTime(UtilityDate.getNowTime()));
}); return mtbColr;
} }
public void askLivelloPosizione(MtbDepoPosizione mtbDepoPosizione) { public void askLivelloPosizione(MtbDepoPosizione mtbDepoPosizione) throws Exception {
this.sendOnLivelloPosizioneRequired(mtbDepoPosizione, newPosizione -> { var newPosizione = this.sendOnLivelloPosizioneRequired(mtbDepoPosizione);
if (newPosizione == null) {
askLivelloPosizione(mtbDepoPosizione); if (newPosizione == null) {
} else { askLivelloPosizione(mtbDepoPosizione);
updatePosizione(newPosizione); } else {
} updatePosizione(newPosizione);
}
});
} }
public void updatePosizione(MtbDepoPosizione mtbDepoPosizione) { public void updatePosizione(MtbDepoPosizione mtbDepoPosizione) throws Exception {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
mColliMagazzinoRESTConsumer.spostaUL(mCurrentMtbColt.getValue(), mtbDepoPosizione, () -> { mColliMagazzinoRESTConsumer.spostaUlSynchronized(mCurrentMtbColt.getValue(), mtbDepoPosizione, true);
this.sendOnLoadingEnded();
this.sendOnDataSaved(); this.sendOnLoadingEnded();
}, this::sendError); this.sendOnDataSaved();
} }
public void resetAll() {
this.mCurrentMtbColt.postValue(null);
}
public MutableLiveData<MtbColt> getCurrentMtbColt() { public MutableLiveData<MtbColt> getCurrentMtbColt() {
return mCurrentMtbColt; return mCurrentMtbColt;
} }
@@ -323,33 +329,97 @@ public class VersamentoMerceViewModel {
if (this.mListener != null) mListener.onDataSaved(); if (this.mListener != null) mListener.onDataSaved();
} }
private void sendOnLivelloPosizioneRequired(MtbDepoPosizione posizione, RunnableArgs<MtbDepoPosizione> onComplete) { private MtbDepoPosizione sendOnLivelloPosizioneRequired(MtbDepoPosizione posizione) {
CountDownLatch countDownLatch = new CountDownLatch(1);
AtomicReference<MtbDepoPosizione> result = new AtomicReference<>();
if (this.mListener != null) if (this.mListener != null)
mListener.onLivelloPosizioneRequired(posizione, onComplete); mListener.onLivelloPosizioneRequired(posizione, data -> {
if (data != null) {
result.set(data);
}
countDownLatch.countDown();
});
else {
// If no listener is set, we complete immediately with an empty list
result.set(null);
countDownLatch.countDown();
}
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return result.get();
} }
private void sendOnArtsChooseRequired(List<MtbColr> mtbColrList, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) { private List<MtbColr> sendOnArtsChooseRequired(List<MtbColr> mtbColrList) {
CountDownLatch countDownLatch = new CountDownLatch(1);
AtomicReference<List<MtbColr>> result = new AtomicReference<>();
if (this.mListener != null) if (this.mListener != null)
mListener.onArtsChooseRequired(mtbColrList, onComplete, onAbort); mListener.onArtsChooseRequired(mtbColrList, data -> {
if (data != null) {
result.set(data);
}
countDownLatch.countDown();
}, countDownLatch::countDown);
else {
// If no listener is set, we complete immediately with an empty list
result.set(null);
countDownLatch.countDown();
}
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return result.get();
} }
private void sendOnSpostamentoTraDepConfirmRequired(String sourceCodMdep, String destinationCodMdep, RunnableArgs<Boolean> onComplete) { private Boolean sendOnSpostamentoTraDepConfirmRequired(String sourceCodMdep, String destinationCodMdep) {
CountDownLatch countDownLatch = new CountDownLatch(1);
AtomicReference<Boolean> result = new AtomicReference<>();
if (this.mListener != null) if (this.mListener != null)
mListener.onSpostamentoTraDepConfirmRequired(sourceCodMdep, destinationCodMdep, onComplete); mListener.onSpostamentoTraDepConfirmRequired(sourceCodMdep, destinationCodMdep, data -> {
result.set(data);
countDownLatch.countDown();
});
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return result.get();
} }
private void sendOnItemDispatched(MtbAart mtbAart, private PickedQuantityDTO sendOnItemDispatched(MtbAart mtbAart,
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaAvailable, BigDecimal totalQtaAvailable,
BigDecimal totalNumCnfAvailable, BigDecimal totalNumCnfAvailable,
BigDecimal qtaCnfAvailable, BigDecimal qtaCnfAvailable,
String partitaMag, String partitaMag,
LocalDate dataScad, LocalDate dataScad,
boolean canOverflowOrderQuantity, boolean canOverflowOrderQuantity,
boolean canBatchLotBeChanged, boolean canBatchLotBeChanged) {
RunnableArgs<PickedQuantityDTO> onComplete) {
CountDownLatch countDownLatch = new CountDownLatch(1);
AtomicReference<PickedQuantityDTO> result = new AtomicReference<>();
if (this.mListener != null) mListener.onItemDispatched( if (this.mListener != null) mListener.onItemDispatched(
mtbAart, mtbAart,
initialNumCnf, initialNumCnf,
@@ -362,7 +432,20 @@ public class VersamentoMerceViewModel {
dataScad, dataScad,
canOverflowOrderQuantity, canOverflowOrderQuantity,
canBatchLotBeChanged, canBatchLotBeChanged,
onComplete); pickedQuantityDTO -> {
if (pickedQuantityDTO != null) {
result.set(pickedQuantityDTO);
}
countDownLatch.countDown();
});
try {
countDownLatch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return result.get();
} }
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {

View File

@@ -8,8 +8,8 @@ import androidx.lifecycle.MutableLiveData;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidCodMdepBarcodeException; import it.integry.integrywmsnative.core.exception.InvalidCodMdepBarcodeException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
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.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -47,12 +47,12 @@ public class DialogAskDepositoViewModel {
throw new InvalidCodMdepBarcodeException(barcodeScanDTO.getStringValue()); throw new InvalidCodMdepBarcodeException(barcodeScanDTO.getStringValue());
} }
AvailableCodMdepsDTO availableCodMdepsDTO = SettingsManager.iDB().getAvailableCodMdep().stream() MtbDepo availableDepo = SettingsManager.iDB().getAvailableDepos().stream()
.filter(x -> x.getCodMdep().equalsIgnoreCase(ean128Model.Internal4)) .filter(x -> x.getCodMdep().equalsIgnoreCase(ean128Model.Internal4))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
if (availableCodMdepsDTO == null) { if (availableDepo == null) {
throw new InvalidCodMdepBarcodeException(ean128Model.Internal4); throw new InvalidCodMdepBarcodeException(ean128Model.Internal4);
} }

View File

@@ -23,7 +23,7 @@ import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinder;
import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinderBase; import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinderBase;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.databinding.DialogSwitchUserDepoBinding; import it.integry.integrywmsnative.databinding.DialogSwitchUserDepoBinding;
public class DialogSwitchUserDepoView extends BaseDialogFragment { public class DialogSwitchUserDepoView extends BaseDialogFragment {
@@ -34,15 +34,15 @@ public class DialogSwitchUserDepoView extends BaseDialogFragment {
private DialogSwitchUserDepoBinding mBindings; private DialogSwitchUserDepoBinding mBindings;
private Context mContext; private Context mContext;
private final List<AvailableCodMdepsDTO> availableCodMdeps; private final List<MtbDepo> availableCodMdeps;
private final RunnableArgs<AvailableCodMdepsDTO> onComplete; private final RunnableArgs<MtbDepo> onComplete;
//Pass here all external parameters //Pass here all external parameters
public static DialogSwitchUserDepoView newInstance(List<AvailableCodMdepsDTO> availableCodMdeps, RunnableArgs<AvailableCodMdepsDTO> onComplete) { public static DialogSwitchUserDepoView newInstance(List<MtbDepo> availableCodMdeps, RunnableArgs<MtbDepo> onComplete) {
return new DialogSwitchUserDepoView(availableCodMdeps, onComplete); return new DialogSwitchUserDepoView(availableCodMdeps, onComplete);
} }
private DialogSwitchUserDepoView(List<AvailableCodMdepsDTO> availableCodMdeps, RunnableArgs<AvailableCodMdepsDTO> onComplete) { private DialogSwitchUserDepoView(List<MtbDepo> availableCodMdeps, RunnableArgs<MtbDepo> onComplete) {
super(); super();
this.availableCodMdeps = availableCodMdeps; this.availableCodMdeps = availableCodMdeps;
@@ -80,9 +80,9 @@ public class DialogSwitchUserDepoView extends BaseDialogFragment {
public void onInit(DialogInterface dialogInterface) { public void onInit(DialogInterface dialogInterface) {
super.onInit(dialogInterface); super.onInit(dialogInterface);
ItemBinder<AvailableCodMdepsDTO> itemBinder = new ItemBinderBase<>(BR.item, R.layout.dialog_switch_user_depo__list_item); ItemBinder<MtbDepo> itemBinder = new ItemBinderBase<>(BR.item, R.layout.dialog_switch_user_depo__list_item);
BindingRecyclerViewAdapter<AvailableCodMdepsDTO> adapter = new BindingRecyclerViewAdapter<>(itemBinder, availableCodMdeps); BindingRecyclerViewAdapter<MtbDepo> adapter = new BindingRecyclerViewAdapter<>(itemBinder, availableCodMdeps);
adapter.setClickHandler(data -> { adapter.setClickHandler(data -> {
onComplete.run(data); onComplete.run(data);
dismiss(); dismiss();

View File

@@ -6,7 +6,7 @@
<data> <data>
<variable <variable
name="item" name="item"
type="it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO" /> type="it.integry.integrywmsnative.core.model.MtbDepo" />
</data> </data>
<RelativeLayout <RelativeLayout