diff --git a/app/build.gradle b/app/build.gradle index dc4823cd..a0a35ab4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 369 - def appVersionName = '1.32.29' + def appVersionCode = 373 + def appVersionName = '1.33.02' signingConfigs { release { @@ -31,8 +31,6 @@ android { } } - compileSdkVersion 33 - defaultConfig { applicationId "it.integry.integrywmsnative" minSdkVersion 21 @@ -65,8 +63,8 @@ android { android.buildFeatures.buildConfig true compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 coreLibraryDesugaringEnabled true } @@ -90,8 +88,7 @@ android { abortOnError false } namespace 'it.integry.integrywmsnative' - - + compileSdk 33 } dependencies { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index dc1b35e6..51cf6110 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -89,8 +89,8 @@ public class MainApplicationModule { @Provides @Singleton - MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase) { - return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase); + MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { + return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java index af1314a3..5319ee25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -6,6 +6,8 @@ import android.text.SpannableString; import android.text.Spanned; import android.text.SpannedString; +import com.google.firebase.installations.FirebaseInstallations; + import java.net.ConnectException; import javax.inject.Singleton; @@ -13,6 +15,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.menu.MenuService; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityThread; @@ -23,13 +26,15 @@ public class MainContext { private final Context applicationContext; private final MenuService menuService; private final AppDatabase appDatabase; + private final SystemRESTConsumer systemRESTConsumer; private Listener mListener; - public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase) { + public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { this.applicationContext = applicationContext; this.menuService = menuService; this.appDatabase = appDatabase; + this.systemRESTConsumer = systemRESTConsumer; } public void init() { @@ -40,10 +45,13 @@ public class MainContext { exception.printStackTrace(); } - this.initDBData(() -> { - this.initMenu(() -> { - - if (mListener != null) mListener.onContextInitialized(); + + this.initDeviceId(() -> { + this.initDBData(() -> { + this.initMenu(() -> { + + if (mListener != null) mListener.onContextInitialized(); + }); }); }); @@ -52,6 +60,25 @@ public class MainContext { } + + private void initDeviceId(Runnable onComplete) { + if (SettingsManager.i().getUserSession().getDeviceId() != null) { + onComplete.run(); + return; + } + + + FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { + SettingsManager.i().getUserSession().setDeviceId(fid.getResult()); + SettingsManager.update(); + + systemRESTConsumer.registerDevice(onComplete, ex -> { + if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); + }); + }); + } + + public void logout(Runnable onLoggedOut) { menuService.invalidateCache(); UtilityThread.executeParallel(() -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java index bf145ddd..17f82459 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java @@ -22,6 +22,7 @@ public class HttpInterceptor implements Interceptor { final String PROFILE_DB = SettingsManager.i().getUserSession() == null ? null : SettingsManager.i().getUserSession().getProfileDB(); final String USERNAME = SettingsManager.i().getUser().getUsername(); final String PASSWORD = SettingsManager.i().getUser().getPassword(); + final String DEVICE_ID = SettingsManager.i().getUserSession().getDeviceId(); final Request request = chain.request(); final HttpUrl url = request.url().newBuilder() @@ -36,6 +37,7 @@ public class HttpInterceptor implements Interceptor { .addHeader("Accept", "*/*") .addHeader("username", USERNAME != null ? USERNAME : "") .addHeader("password", PASSWORD != null ? PASSWORD : "") + .addHeader("device_id", DEVICE_ID != null ? DEVICE_ID : "") .url(url).build(); return chain.proceed(newRequest); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index b1c0045d..a9deddfc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -29,6 +29,7 @@ import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -39,6 +40,27 @@ import retrofit2.Response; @Singleton public class SystemRESTConsumer extends _BaseRESTConsumer { + + public void registerDevice(final Runnable onSuccess, final RunnableArgs onFailed) { + RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO() + .setApp("WMS"); + + SystemRESTConsumerService systemRESTConsumerService = RESTBuilder.getService(SystemRESTConsumerService.class); + systemRESTConsumerService.registerDevice(registerDeviceRequestDTO) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + + } + public void processSql(String nativeSql, final Type clazz, final RunnableArgs onComplete, final RunnableArgs onFailed) { NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO(); nativeSqlDTO.nativeSql = nativeSql; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java index 5330f0d7..2ed64fbe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java @@ -6,6 +6,7 @@ import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -14,6 +15,9 @@ import retrofit2.http.Query; public interface SystemRESTConsumerService { + @POST("device/register") + Call> registerDevice(@Body RegisterDeviceRequestDTO registerDeviceRequestDTO); + @POST("processSql") Call> processSql(@Body NativeSqlRequestDTO nativeSqlDTO); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java new file mode 100644 index 00000000..c7b75a62 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.core.rest.model.system; + +public class RegisterDeviceRequestDTO { + + private String app; + + public String getApp() { + return app; + } + + public RegisterDeviceRequestDTO setApp(String app) { + this.app = app; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java index 12e499a2..40bfc937 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java @@ -95,10 +95,19 @@ public class SettingsModel { } public static class UserSession { + private String deviceId; private String profileDB; private AvailableCodMdepsDTO depo; private Integer defaultOrdinamentoPickingAccettazione = 0; + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + public String getProfileDB() { return profileDB; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java index 3044f791..6ffca0e4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java @@ -40,7 +40,6 @@ public class PermissionsHelper { } - String[] permissionArray = new String[permissionsToAsk.size()]; permissionsToAsk.toArray(permissionArray); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java index 6f54e867..18e36266 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java @@ -6,6 +6,8 @@ import android.text.Html; import androidx.appcompat.app.AlertDialog; import androidx.databinding.DataBindingUtil; +import com.google.firebase.installations.FirebaseInstallations; + import java.util.List; import javax.inject.Inject; @@ -16,6 +18,7 @@ import it.integry.integrywmsnative.SplashActivity; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseActivity; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityWindow; import it.integry.integrywmsnative.databinding.ActivityLoginBinding; @@ -29,6 +32,9 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen @Inject LoginViewModel mViewmodel; + @Inject + SystemRESTConsumer systemRESTConsumer; + public BindableString username = new BindableString(); public BindableString password = new BindableString(); @@ -119,9 +125,13 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen private void showProfileDBSelectionDialog(final String protocol, final String host, final int port, final List availableProfiles) { Runnable onComplete = () -> { - SettingsManager.update(); - startSplashActivity(); + FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { + SettingsManager.i().getUserSession().setDeviceId(fid.getResult()); + SettingsManager.update(); + + systemRESTConsumer.registerDevice(this::startSplashActivity, this::onError); + }); }; loginButtonEnabled.set(true); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index df9ce635..5a0d48ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -216,6 +216,7 @@ public class PVOrdineAcquistoEditViewModel { saveAction.run(); } } else { + articolo.setQtaOrd(articolo.getQtaOrd() > 0f ? articolo.getQtaOrd() : articolo.getQtaCnf()); this.sendOnItemDispatched(articolo, onSuccess); } @@ -249,7 +250,6 @@ public class PVOrdineAcquistoEditViewModel { articolo.setNewNoPromo(art.isNewNoPromo()); articolo.setSystemNote(art.generateSystemNote()); articolo.setQtaCnf(art.getQtaCnf() > 0f ? art.getQtaCnf() : 1); - articolo.setQtaOrd(art.getQtaOrd() > 0f ? art.getQtaOrd() : art.getQtaCnf()); articolo.setCodAlis(art.getCodAlis()); articolo.setCtMaxOrd(BigDecimal.valueOf(art.getCtMaxOrd())); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index f59ed2f5..acce8871 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -605,7 +605,9 @@ public class SpedizioneViewModel { final List magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>(); for (MtbAart selectedArt : selectedArts) { final PickingObjectDTO pickingObjectDTO = Stream.of(magazzinoAutomaticoPickableArts) - .filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(selectedArt.getCodMart())) + .filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(selectedArt.getCodMart()) && + x.getSitArtOrdDTO() != null && + UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaOrd(), BigDecimal.ZERO)) .findFirst() .orElse(null); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java index 6bf86844..1036456a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java @@ -158,8 +158,11 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen mBindings.listaArts.setHasFixedSize(true); this.mtbColrItemModels = Stream.of(this.inputMtbColrList) - .map(x -> new DialogChooseArtsFromMtbColrListItemModel() - .setMtbColr(x)) + .map(x -> { + x.setUntMis(x.getMtbAart() != null && x.getMtbAart().getFirstUntMis() != null ? x.getMtbAart().getFirstUntMis().getUntMis() : null); + return new DialogChooseArtsFromMtbColrListItemModel() + .setMtbColr(x); + }) .toList(); this.hiddenMtbColrItemModels.setValue(this.mtbColrItemModels); @@ -294,12 +297,12 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { - this.mBindings.mainSearch.setQuery(barcodeProd, false); + MtbAart articolo = mtbAartList.get(0); + this.mBindings.mainSearch.setQuery(articolo.getCodMart(), false); this.searchArtInList(mtbAartList.get(0), ean128Model); onLoadingEnded(); - } else { DialogCommon.showNoArtFoundDialog(mContext, this::onLoadingEnded); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index d2ae61cf..2881646d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -44,6 +44,7 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.core.utility.UtilityObservable; @@ -513,7 +514,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia BigDecimal taraTot = articolo.getTaraKg() != null ? this.mViewModel.getNumCnf().multiply(articolo.getTaraKg()) : BigDecimal.ZERO; this.currentTaraTot.set(taraTot); - this.currentPesoLordo.set(this.mViewModel.getQtaTot().add(taraTot)); + this.currentPesoLordo.set(UtilityBigDecimal.getGreaterBetween(this.mViewModel.getQtaTot(), BigDecimal.ZERO).add(taraTot)); this.flagShowCnfToTakeLabel.set(false); } diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index fbe4e9f6..d41806d2 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -19,8 +19,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false diff --git a/build.gradle b/build.gradle index f95f6121..18f81ef8 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.8.0' - agp_version = '8.1.0-alpha11' + agp_version = '8.0.0' } repositories { diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index c01e1383..6e5f1401 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -19,8 +19,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index 8e1a9520..444eef53 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -19,8 +19,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index e9e976b7..e58d620d 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -18,8 +18,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index c5a3a246..3390a937 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -18,8 +18,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false