diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 785afc55..2b51460c 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index a2401f8c..b6a4512c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,10 +14,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'com.google.gms.google-services' + android { - def appVersionCode = 18 - def appVersionName = '1.0.15' + def appVersionCode = 19 + def appVersionName = '1.0.16' signingConfigs { release { @@ -27,6 +28,13 @@ android { storePassword 'inpmiy' } } + + applicationVariants.all { variant -> + variant.outputs.all { output -> + output.outputFileName = "android-release_v2.apk" + } + } + compileSdkVersion 28 buildToolsVersion '28.0.3' defaultConfig { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index e23493ee..58830068 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -226,23 +226,15 @@ public class MainActivity extends AppCompatActivity private void init(){ - if(BarcodeManager.getCurrentBarcodeInterface() != null) { -// DialogSimpleMessageHelper.makeInfoDialog(this, -// "Lettore barcode", -// new SpannableString("Trovato adattatore " + BarcodeManager.getCurrentBarcodeInterface().getAdapterName() + " installato nel sistema"), -// null, null).show(); - } - //Preload done in splashPage - onDBLoaded(); + initSessionData(); ServerStatusChecker.getIstance().addCallback(value -> { if(value && (!mIsOnline || firstCheckExecution)){ - SettingsManager.reloadDBVariables(() -> { + SettingsManager.loadDBVariables(() -> { mIsOnline = true; firstCheckExecution = false; - onDBLoaded(); }, ex -> { //mNoConnectionLayout.expand(true); if(!mIsOnline) mIsOnline = false; @@ -257,14 +249,18 @@ public class MainActivity extends AppCompatActivity } - private void onDBLoaded() { + private void initSessionData() { LinearLayout headerLayout = (LinearLayout) mBinding.navView.getHeaderView(0); - ((TextView) headerLayout.findViewById(R.id.drawer_username)).setText(SettingsManager.i().user.fullname); - ((TextView) headerLayout.findViewById(R.id.drawer_deposito)).setText(SettingsManager.i().userSession.depo.getCodMdep() + " - " + SettingsManager.i().userSession.depo.getDescrizione()); + TextView textViewUsername = headerLayout.findViewById(R.id.drawer_username); + textViewUsername.setText(SettingsManager.i().user.fullname); + + TextView textViewDeposito = headerLayout.findViewById(R.id.drawer_deposito); + textViewDeposito.setText(String.format("%s - %s", SettingsManager.i().userSession.depo.getCodMdep(), SettingsManager.i().userSession.depo.getDescrizione())); if(SettingsManager.iDB().getDatiAzienda() != null && SettingsManager.iDB().getDatiAzienda().isLogoAvailable()) { - ((ImageView) headerLayout.findViewById(R.id.drawer_logoAzienda)).setImageBitmap(SettingsManager.iDB().getDatiAzienda().getLogo()); + ImageView imageViewLogoAzienda = headerLayout.findViewById(R.id.drawer_logoAzienda); + imageViewLogoAzienda.setImageBitmap(SettingsManager.iDB().getDatiAzienda().getLogo()); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java index df67d6b7..9b14b7f8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java @@ -15,6 +15,7 @@ import com.orhanobut.logger.Logger; import io.fabric.sdk.android.Fabric; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.exception.ExceptionsHandler; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.Stash; @@ -28,7 +29,8 @@ import it.integry.integrywmsnative.view.dialogs.exception.DialogException; public class MainApplication extends Application { public static Resources res; - public static Context Context; + + private AppContext appContext = new AppContext(this); // Called when the application is starting, before any other application objects have been created. @@ -37,39 +39,11 @@ public class MainApplication extends Application { public void onCreate() { super.onCreate(); - if(!BuildConfig.DEBUG) { - Fabric.with(this, new Crashlytics()); + appContext.init(); - if(SettingsManager.i() != null && - (SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) && - (SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) { - - Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname); - Crashlytics.setString("profile_db", SettingsManager.i().userSession.profileDB); - } - } else { - if(SettingsManager.i() != null && - (SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) && - (SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) { - - Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname); - Crashlytics.setString("profile_db", "[DEBUG] " + SettingsManager.i().userSession.profileDB); - } - } - - Stash.init(this); - - SettingsManager.init(this); - ServerStatusChecker.init(); - BarcodeManager.init(this); - -// UtilityExceptions.init(this); - UtilityResources.init(this); - - Logger.addLogAdapter(new AndroidLogAdapter()); + //Stash.init(this); res = getResources(); - Context = this; } // Called by the system when the device configuration changes while your component is running. diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java index 8077d93b..9321c9db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java @@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity; import butterknife.BindView; import butterknife.ButterKnife; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; +import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -26,6 +27,8 @@ public class SplashActivity extends AppCompatActivity { @BindView(R.id.app_version_textview) TextView appVersionTextView; + private MainContext mainContext = new MainContext(this); + private RunnableArgsss> onRequestPermissionResult; @Override @@ -38,8 +41,6 @@ public class SplashActivity extends AppCompatActivity { initAppVersion(); initPermissions(this::init); - - } private void initPermissions(Runnable onComplete) { @@ -62,29 +63,25 @@ public class SplashActivity extends AppCompatActivity { try { PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); String version = pInfo.versionName; - appVersionTextView.setText("v" + version); + + String debugText = ""; + + if(BuildConfig.DEBUG) debugText += "\n[DEBUG VERSION]"; + + appVersionTextView.setText("v" + version + debugText); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } } private void init() { - if(SettingsManager.i().user.username == null && SettingsManager.i().user.password == null){ + if(!SettingsManager.i().isUserLoggedIn()){ startLoginActivity(); } else { - initFirstData(this::startMainActivity); + mainContext.init(this::startMainActivity); } } - private void initFirstData(Runnable onComplete) { - - SettingsManager.reloadDBVariables(onComplete, ex -> { - DialogSimpleMessageHelper.makeErrorDialog(this, - new SpannableString(ex.getMessage()), null, this::finish).show(); - } - ); - } - diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java index 25af3c1a..e78dc715 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java @@ -1,9 +1,11 @@ package it.integry.integrywmsnative.core.REST.consumers; import com.annimon.stream.Stream; +import com.google.gson.Gson; import com.google.gson.JsonObject; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -178,7 +180,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ } - public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, Runnable onComplete, RunnableArgs onFailed) { + public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs> onComplete, RunnableArgs onFailed) { DistribuzioneColloDTO distribuzioneColloDTO = new DistribuzioneColloDTO() .setCriterioDistribuzione(criterioDistribuzione) @@ -192,7 +194,24 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ .enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "DistribuzioneCollo", obj -> onComplete.run(), onFailed); + analyzeAnswerList(response, "DistribuzioneCollo", obj -> { + + Gson gson = new Gson(); + List jsons = response.body().getEntityList(); + + List newList = new ArrayList<>(); + + if(jsons != null) { + for (int i = 0; i < jsons.size(); i ++){ + JsonObject jsonTmp = jsons.get(i); + + newList.add(gson.fromJson(jsonTmp, MtbColt.class)); + } + } + + + onComplete.run(newList); + }, onFailed); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/_BaseRESTConsumer.java index b1f2761f..3fbe4344 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/_BaseRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/_BaseRESTConsumer.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.REST.consumers; import android.util.Log; +import java.util.List; + import it.integry.integrywmsnative.core.REST.model.EsitoType; import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -17,7 +19,14 @@ public class _BaseRESTConsumer { if(response.body().getEsito() == EsitoType.OK) { if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){ callback.onFailed(new Exception(response.body().getErrorMessage())); - } else callback.onSuccess(response.body().getDto()); + } else { + + T dataObj = response.body().getDto() != null ? + response.body().getDto() : + response.body().getEntity(); + + callback.onSuccess(dataObj); + } } else { Log.e(logTitle, response.body().getErrorMessage()); callback.onFailed(new Exception(response.body().getErrorMessage())); @@ -46,4 +55,45 @@ public class _BaseRESTConsumer { }); } + + public static void analyzeAnswerList(Response> response, String logTitle, final ISimpleOperationCallback> callback){ + if(response.isSuccessful()) { + if(response.body() != null) { + if(response.body().getEsito() == EsitoType.OK) { + if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){ + callback.onFailed(new Exception(response.body().getErrorMessage())); + } else { + + List dataObj = response.body().getEntityList(); + + callback.onSuccess(dataObj); + } + } else { + Log.e(logTitle, response.body().getErrorMessage()); + callback.onFailed(new Exception(response.body().getErrorMessage())); + } + } else { + Log.e(logTitle, response.message()); + callback.onFailed(new Exception(response.message())); + } + } else { + Log.e(logTitle, "Status " + response.code() + ": " + response.message()); + callback.onFailed(new Exception("Status " + response.code() + ": " + response.message())); + } + } + + public static void analyzeAnswerList(Response> response, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed){ + analyzeAnswerList(response, logTitle, new ISimpleOperationCallback>() { + @Override + public void onSuccess(List value) { + onComplete.run(value); + } + + @Override + public void onFailed(Exception ex) { + onFailed.run(ex); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index 8343e531..03496fa8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -1,9 +1,81 @@ package it.integry.integrywmsnative.core.context; +import android.content.Context; + +import com.crashlytics.android.Crashlytics; +import com.orhanobut.logger.AndroidLogAdapter; +import com.orhanobut.logger.Logger; + +import io.fabric.sdk.android.Fabric; +import it.integry.integrywmsnative.BuildConfig; +import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.settings.Stash; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.core.utility.UtilityToast; + public class AppContext { - public AppContext() { + //Note: this is the Application Context NOT the Activity Context + private final Context mContext; + public AppContext(Context context) { + this.mContext = context; + } + + + + public void init() { + this.initSettings(); + + this.initCrashlytics(); + + this.initServerStatusChecker(); + + this.initBarcode(); + + this.initUtilities(); + + this.initLogger(); + } + + + private void initSettings() { + Stash.init(mContext); + SettingsManager.init(mContext); + } + + private void initCrashlytics() { + if(!BuildConfig.DEBUG) { + Fabric.with(mContext, new Crashlytics()); + + if( SettingsManager.isInstanceAvailable() && + (SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) && + (SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) { + + Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname); + Crashlytics.setString("profile_db", SettingsManager.i().userSession.profileDB); + } + } + } + + private void initServerStatusChecker() { + ServerStatusChecker.init(); + } + + private void initBarcode() { + BarcodeManager.init(mContext); + } + + private void initUtilities() { + UtilityResources.init(mContext); + UtilityToast.init(mContext); + } + + private void initLogger() { + Logger.addLogAdapter(new AndroidLogAdapter()); } 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 new file mode 100644 index 00000000..5d159429 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -0,0 +1,33 @@ +package it.integry.integrywmsnative.core.context; + +import android.text.SpannableString; + +import androidx.appcompat.app.AppCompatActivity; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; + +public class MainContext { + + private final AppCompatActivity mContext; + + public MainContext(AppCompatActivity context) { + this.mContext = context; + } + + + public void init(Runnable onContextInitialized) { + this.initDBData(() -> { + onContextInitialized.run(); + }); + } + + + private void initDBData(Runnable onComplete) { + SettingsManager.loadDBVariables(onComplete, ex -> { + DialogSimpleMessageHelper.makeErrorDialog(mContext, + new SpannableString(ex.getMessage()), null, mContext::finish).show(); + } + ); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 685178d9..e7b01525 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -57,6 +57,9 @@ public class SettingsManager { public static boolean isFirstStart(){ return firstStart; } + public static boolean isInstanceAvailable(){ + return i() != null; + } public static void update(){ Stash.put(TAG, settingsModelIstance); @@ -68,10 +71,10 @@ public class SettingsManager { - public static void reloadDBVariables(Runnable onComplete, RunnableArgs onFailed){ + public static void loadDBVariables(Runnable onComplete, RunnableArgs onFailed){ dbSettingsModelIstance = new DBSettingsModel(); - Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_reload_vars"); + Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_vars"); perfTrace.start(); Runnable tmpOnComplete = () -> { 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 aeda9a75..e60fed84 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 @@ -8,6 +8,15 @@ public class SettingsModel { public User user; public UserSession userSession; + public boolean isUserLoggedIn() { + return user != null; + } + + public void createUserSession() { + this.user = new User(); + this.userSession = new UserSession(); + } + public static class Server { public String codAzienda; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java index 68e0a7b4..6806a004 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java @@ -7,9 +7,14 @@ import java.util.Locale; public class UtilityNumber { + public static String decimalToString(Float bigDecimal){ + if(bigDecimal == null) return "0"; + return decimalToString(bigDecimal, 3); + } + public static String decimalToString(BigDecimal bigDecimal){ if(bigDecimal == null) return "0"; - return decimalToString(bigDecimal, 2); + return decimalToString(bigDecimal, 3); } public static String decimalToString(BigDecimal bigDecimal, int decimal){ diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java index 1eabf0df..7c41cb75 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java @@ -7,8 +7,8 @@ public class UtilitySettings { public static void logout(){ - SettingsManager.i().user = new SettingsModel.User(); - SettingsManager.i().userSession = new SettingsModel.UserSession(); + SettingsManager.i().user = null; + SettingsManager.i().userSession = null; SettingsManager.update(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java index 1987e54a..785dbebd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java @@ -1,13 +1,20 @@ package it.integry.integrywmsnative.core.utility; +import android.content.Context; import android.widget.Toast; import it.integry.integrywmsnative.MainApplication; public class UtilityToast { + private static Context context; + + public static void init(Context context) { + UtilityToast.context = context; + } + public static void showToast(String message) { - Toast.makeText(MainApplication.Context, message, Toast.LENGTH_LONG).show(); + Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java index 56b2395d..18136fc5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java @@ -89,8 +89,8 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl private void init(){ mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); - mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(() -> this.refreshOrderBy(false)); - mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(() -> this.refreshOrderBy(false)); + mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback((deletedItem) -> this.refreshOrderBy(false)); + mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback((originalItem, editedItem) -> this.refreshOrderBy(false)); groupedOrdini = new ArrayList<>(); for (OrdineAccettazioneDTO ordine : mOrders){ 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 9ceffa58..4ee41cf6 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 @@ -5,12 +5,14 @@ import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.utility.UtilityWindow; import it.integry.integrywmsnative.databinding.ActivityLoginBinding; import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel; public class LoginActivity extends AppCompatActivity { + private MainContext mainContext = new MainContext(this); @Override protected void onCreate(Bundle savedInstanceState) { @@ -18,7 +20,7 @@ public class LoginActivity extends AppCompatActivity { UtilityWindow.maximizeToFullScreen(this); ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login); - LoginViewModel loginViewModel = new LoginViewModel(this); + LoginViewModel loginViewModel = new LoginViewModel(this, mainContext); binding.setLoginViewModel(loginViewModel); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index 1e04530a..4afbe27c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -16,6 +16,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO; +import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -28,7 +29,6 @@ import it.integry.integrywmsnative.gest.login.dto.LoginDTO; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; public class LoginViewModel { - private static final String TAG = LoginViewModel.class.getSimpleName(); public BindableString username = new BindableString(); public BindableString password = new BindableString(); @@ -47,11 +47,13 @@ public class LoginViewModel { private LoginActivity mActivity; + private MainContext mMainContext; private ProgressDialog mProgress; - public LoginViewModel(LoginActivity activity) { + public LoginViewModel(LoginActivity activity, MainContext mainContext) { this.mActivity = activity; + this.mMainContext = mainContext; loginButtonEnabled.set(true); @@ -115,6 +117,8 @@ public class LoginViewModel { public void onSuccess(final LoginDTO loginDTO) { SettingsManager.iDB().setAvailableProfiles(loginDTO.availableProfiles); + + SettingsManager.i().createUserSession(); SettingsManager.i().user.fullname = loginDTO.full_name; @@ -237,19 +241,14 @@ public class LoginViewModel { SettingsManager.update(); ProgressDialog loadingProgress = UtilityProgress.createDefaultProgressDialog(mActivity); - SettingsManager.reloadDBVariables(() -> { + mMainContext.init(() -> { loadingProgress.dismiss(); - mActivity.finish(); + mActivity.finish(); - Intent myIntent = new Intent(mActivity, MainActivity.class); - mActivity.startActivity(myIntent); + Intent myIntent = new Intent(mActivity, MainActivity.class); + mActivity.startActivity(myIntent); + }); - },ex -> { - loadingProgress.dismiss(); - DialogSimpleMessageHelper.makeErrorDialog(mActivity, - new SpannableString(ex.getMessage()), null, null).show(); - } - ); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java index 7b358468..6768e4bf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java @@ -228,6 +228,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { //Cerco tramite etichetta ean 128 (che può indicarmi una UL) this.executeEtichettaEan128(data, progressDialog); } else { + progressDialog.dismiss(); BarcodeManager.enable(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java index e4f5e192..acbe9f66 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java @@ -78,11 +78,17 @@ public class RettificaGiacenzeHelper { public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT DISTINCT mtb_aart.* " + - "FROM mtb_aart, mvw_barcode " + - "WHERE (case when len(mvw_barcode.cod_barre) > 13 " + - "then mvw_barcode.cod_barre " + - "else Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre end LIKE '%' + case when len('" + codMartOrBarcodeOrDescr + "') > 13 then '" + codMartOrBarcodeOrDescr + "' else Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" + - "end OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%') AND mtb_aart.cod_mart = mvw_barcode.cod_mart"; + "FROM mtb_aart " + + "LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " + + "WHERE CASE" + + " WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " + + " ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " + + "END LIKE '%' + CASE " + + " WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " + + " ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" + + " END " + + "OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " + + "OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'"; Type typeOfObjectsList = new TypeToken>() {}.getType(); SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 9e26aee9..9638c762 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -91,8 +91,16 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO private void init(){ mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); - mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(() -> this.refreshOrderBy(false)); - mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(() -> this.refreshOrderBy(false)); + + mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback((deletedItem) -> { + this.onRowItemDeleted(deletedItem); + this.refreshOrderBy(false); + }); + + mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback((originalItem, editedItem) -> { + this.onRowItemEdited(originalItem, editedItem); + this.refreshOrderBy(false); + }); mHelper = new VenditaOrdineInevasoHelper(mActivity); @@ -203,6 +211,37 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } } + + private void onRowItemEdited(MtbColr originalItem, MtbColr editedItem) { + + for(int i = 0; i < mPickingList.size(); i++) { + + int foundIndex = mPickingList.get(i).getWithdrawRows().indexOf(originalItem); + + if(foundIndex >= 0){ + mPickingList.get(i).getWithdrawRows().set(foundIndex, editedItem); + + break; + } + + } + } + + private void onRowItemDeleted(MtbColr deletedItem) { + + for(int i = 0; i < mPickingList.size(); i++) { + + int foundIndex = mPickingList.get(i).getWithdrawRows().indexOf(deletedItem); + + if(foundIndex >= 0){ + mPickingList.get(i).getWithdrawRows().remove(foundIndex); + + break; + } + + } + } + public void refreshOrderBy(boolean forceHiddenCheck){ try { @@ -656,7 +695,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO progress.show(); if(thereIsAnyRowInUL()) { - updateDataFine(progress, () -> distribuisciCollo(progress, () -> printCollo(progress))); + updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress))); } else { deleteCollo(progress); } @@ -685,17 +724,16 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } - private void distribuisciCollo(ProgressDialog progress, Runnable onComplete) { + private void distribuisciCollo(ProgressDialog progress, RunnableArgs> onComplete) { MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); - ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE, onComplete, + ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.SPLIT_ORDINE, onComplete, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)); } private void printCollo(ProgressDialog progress) { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARY,new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java index c8a46db5..d60d31e5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java @@ -24,6 +24,7 @@ import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -48,8 +49,8 @@ public class ArticoliInColloBottomSheetViewModel { private BottomSheetBehavior mBottomSheetBehavior; - private Runnable mOnItemDeletedCallback; - private Runnable mOnItemEditedCallback; + private RunnableArgs mOnItemDeletedCallback; + private RunnableArgss mOnItemEditedCallback; public ArticoliInColloBottomSheetViewModel(AppCompatActivity context, final FragmentArticoliInColloBottomSheetBinding bindings){ @@ -86,11 +87,11 @@ public class ArticoliInColloBottomSheetViewModel { initBottomSheetActions(); } - public void setOnItemEditedCallback(Runnable onItemEditedCallback) { + public void setOnItemEditedCallback(RunnableArgss onItemEditedCallback) { this.mOnItemEditedCallback = onItemEditedCallback; } - public void setOnItemDeletedCallback(Runnable onItemDeletedCallback) { + public void setOnItemDeletedCallback(RunnableArgs onItemDeletedCallback) { this.mOnItemDeletedCallback = onItemDeletedCallback; } @@ -156,6 +157,9 @@ public class ArticoliInColloBottomSheetViewModel { MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position); + MtbColr originalItem = (MtbColr) itemToEdit.clone(); + + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() @@ -180,7 +184,7 @@ public class ArticoliInColloBottomSheetViewModel { progress.dismiss(); mtbColt.get().getMtbColr().set(position, itemToEdit); - if(mOnItemEditedCallback != null) mOnItemEditedCallback.run(); + if(mOnItemEditedCallback != null) mOnItemEditedCallback.run(originalItem, itemToEdit); }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); @@ -205,7 +209,7 @@ public class ArticoliInColloBottomSheetViewModel { progress.dismiss(); mtbColt.get().getMtbColr().remove(position); - if(this.mOnItemDeletedCallback != null) this.mOnItemDeletedCallback.run(); + if(this.mOnItemDeletedCallback != null) this.mOnItemDeletedCallback.run(itemToDelete); }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); }, null).show(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index 06d1b561..c8d65cee 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -553,7 +553,7 @@ public class DialogInputQuantity { if(isError){ textInputLayout.setErrorEnabled(true); textInputLayout.setError(" "); - textInputLayout.getEditText().setTextColor(ContextCompat.getColor(MainApplication.Context, R.color.red_600)); + textInputLayout.getEditText().setTextColor(ContextCompat.getColor(currentContext, R.color.red_600)); textInputLayout.setHintTextAppearance(R.style.ErrorFloatingLabel); if (textInputLayout.getChildCount() == 2) { diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index 670fa5fe..071e1444 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -64,6 +64,7 @@ android:id="@+id/app_version_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:gravity="center_horizontal" tools:text="v 1.0.0" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/dialog_input_quantity_articolo.xml b/app/src/main/res/layout/dialog_input_quantity_articolo.xml index 158cdae9..d49c7438 100644 --- a/app/src/main/res/layout/dialog_input_quantity_articolo.xml +++ b/app/src/main/res/layout/dialog_input_quantity_articolo.xml @@ -23,6 +23,7 @@ + @@ -114,15 +115,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="@{viewmodel.qtaOrd == null ? View.GONE : View.VISIBLE}" - android:text="@string/ordered" - android:textSize="16sp" - tools:text="Ordinati" /> + android:text="@string/ordered_abbr" + android:textSize="16sp" /> + android:visibility="@{quantityViewModel.qtaEvasa.get() == 0 ? View.GONE : View.VISIBLE}" /> + android:text="@string/to_dispatch_abbr" + android:textSize="16sp" /> + android:text="@string/available_abbr" + android:textSize="16sp" /> - - - + + + + + + + + + + + + + + + + - diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b810c791..af5fbf02 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -24,7 +24,7 @@ OK Annulla Resetta - Evasi + Evasi Questi permessi sono necessari al funzionamento dell\'app @@ -97,9 +97,9 @@ Qtà - Ordinati - Da evadere - Disponibile + Ord + Da ev + Disp Lotto %s]]> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1d73875e..f4102b16 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,7 +31,7 @@ OK Abort Reset - Dispatched + Dspch No description Description Stock @@ -96,9 +96,9 @@ Qty - Ordered - To dispatch - Available + Ord + To disp + Avbl Batch lot Level