From e1d1878131e926e536f466c94d767cb70c6cdbf4 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Mar 2021 12:33:58 +0100 Subject: [PATCH 1/9] Migliorato SimpleDialog --- .../integrywmsnative/MainActivity.java | 8 + .../MainApplicationModule.java | 2 +- .../integrywmsnative/SplashActivity.java | 17 +- .../core/context/AppContext.java | 7 - .../core/context/MainContext.java | 26 +- .../core/data_recover/ColliDataRecover.java | 6 +- .../data_recover/ColliDataRecoverService.java | 13 +- .../core/utility/UtilityContext.java | 11 + .../core/utility/UtilityExceptions.java | 7 +- .../MainAccettazioneFragment.java | 12 +- .../AccettazionePickingActivity.java | 39 +-- .../viewmodel/ContenutoBancaleViewModel.java | 10 +- .../gest/login/viewmodel/LoginViewModel.java | 14 +- .../OrdiniUscitaElencoFragment.java | 7 +- .../picking_libero/PickingLiberoFragment.java | 7 +- .../picking_resi/PickingResiActivity.java | 17 +- .../ProdOrdineProduzioneElencoFragment.java | 15 +- .../ProdRecuperoMaterialeViewModel.java | 12 +- .../core/ChooseOrdsLavFromListAdapter.java | 8 +- .../ProdVersamentoMaterialViewModel.java | 59 ++-- .../PVOrdineAcquistoEditActivity.java | 6 +- .../PVOrdiniAcquistoGrigliaFragment.java | 10 +- .../RettificaGiacenzeFragment.java | 24 +- .../gest/spedizione/SpedizioneActivity.java | 19 +- .../viewmodel/VersamentoMerceViewModel.java | 25 +- .../view/dialogs/DialogCommon.java | 34 +- .../base/DialogSimpleMessageHelper.java | 243 ------------- .../dialogs/base/DialogSimpleMessageView.java | 286 ++++++++++++++++ .../base/DialogSimpleMessageViewModel.java | 91 ----- .../DialogCameraBarcodeReader.java | 9 +- .../DialogInputQuantityV2View.java | 9 +- .../DialogScanOrCreateLU.java | 22 +- app/src/main/res/layout/dialog_base.xml | 324 +++++++++--------- 33 files changed, 708 insertions(+), 691 deletions(-) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageViewModel.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index 5570812b..01231fa9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; +import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; @@ -42,6 +43,7 @@ import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.update.UpdatesManager; +import it.integry.integrywmsnative.core.utility.UtilityContext; import it.integry.integrywmsnative.core.utility.UtilitySettings; import it.integry.integrywmsnative.databinding.ActivityMainBinding; import it.integry.integrywmsnative.gest.login.LoginActivity; @@ -59,6 +61,9 @@ public class MainActivity extends BaseActivity @Inject AppDatabase mAppDatabase; + @Inject + ColliDataRecoverService mColliDataRecoverService; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -68,10 +73,13 @@ public class MainActivity extends BaseActivity .create() .inject(this); + mColliDataRecoverService.init(this); + mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false); setContentView(mBinding.getRoot()); UpdatesManager.init(this); + UtilityContext.initMainActivity(this); setSupportActionBar(mBinding.appBarMain.toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index e57d8cf2..e15b89e4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -38,7 +38,7 @@ public class MainApplicationModule { @Provides @Singleton ColliDataRecoverService provideColliDataRecoverService() { - return new ColliDataRecoverService(mContext); + return new ColliDataRecoverService(); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java index da5608bf..d25bb38d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java @@ -6,22 +6,21 @@ import android.content.pm.PackageManager; import android.os.Bundle; import android.text.SpannableString; import android.view.LayoutInflater; -import android.widget.TextView; + +import androidx.databinding.DataBindingUtil; import java.util.ArrayList; import java.util.List; -import androidx.appcompat.app.AppCompatActivity; -import androidx.databinding.DataBindingUtil; - import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.PermissionsHelper; +import it.integry.integrywmsnative.core.utility.UtilityContext; import it.integry.integrywmsnative.databinding.ActivitySplashBinding; import it.integry.integrywmsnative.gest.login.LoginActivity; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class SplashActivity extends BaseActivity { @@ -39,6 +38,8 @@ public class SplashActivity extends BaseActivity { mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_splash, null, false); setContentView(mBinding.getRoot()); + UtilityContext.initMainActivity(this); + initAppVersion(); initPermissions(this::init); @@ -49,10 +50,10 @@ public class SplashActivity extends BaseActivity { onComplete.run(); }, permanentlyDenied -> { if(permanentlyDenied) { - DialogSimpleMessageHelper.makeErrorDialog(this, - new SpannableString(getText(R.string.permissions_permanently_denied)), null, () -> { + DialogSimpleMessageView.makeErrorDialog(new SpannableString(getText(R.string.permissions_permanently_denied)), null, () -> { this.finish(); - }).show(); + }) + .show(getSupportFragmentManager(), "tag"); } else { initPermissions(onComplete); } 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 8f752c4d..3498373e 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 @@ -9,7 +9,6 @@ import com.orhanobut.logger.Logger; import javax.inject.Inject; import it.integry.integrywmsnative.BuildConfig; -import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.Stash; @@ -41,8 +40,6 @@ public class AppContext { this.initCrashlytics(); this.initLogger(); - - this.initRecoverColli(); } @@ -77,9 +74,5 @@ public class AppContext { Logger.addLogAdapter(new AndroidLogAdapter()); } - private void initRecoverColli() { - ColliDataRecover.init(mContext); - } - } 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 8d425f15..63b81354 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 @@ -1,21 +1,25 @@ package it.integry.integrywmsnative.core.context; import android.content.Context; +import android.text.Html; import android.text.SpannableString; +import android.text.Spanned; import androidx.appcompat.app.AppCompatActivity; import java.lang.reflect.Method; +import java.net.ConnectException; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.class_router.ClassRouter; +import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilitySettings; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class MainContext { @@ -37,6 +41,8 @@ public class MainContext { this.initReflections(); this.initServerStatusChecker(); + + ColliDataRecover.init(mContext); } @@ -46,11 +52,23 @@ public class MainContext { private void initDBData(Runnable onComplete) { SettingsManager.loadDBVariables(onComplete, ex -> { - DialogSimpleMessageHelper.makeErrorDialog(mContext, - new SpannableString(ex.getMessage()), null, mContext::finish, R.string.logout, () -> { + + Spanned message = null; + + if (ex.getCause() != null && ex.getCause() instanceof ConnectException) { + message = Html.fromHtml("Impossibile collegarsi all'host " + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + ". Riprovare più tardi."); + } else if (ex.getMessage().startsWith("Status 404:")) { + message = Html.fromHtml("Errore 404. Non è stato possibile soddisfare la richiesta sull'host " + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + ". Riprovare più tardi."); + } else { + message = new SpannableString(ex.getMessage()); + } + + DialogSimpleMessageView.makeErrorDialog( + message, null, mContext::finish, R.string.logout, () -> { UtilitySettings.logout(); MainApplication.exit(); - }).show(); + }) + .show(mContext.getSupportFragmentManager(), "tag"); } ); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java index ea14d912..fadeef43 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_recover; import android.content.Context; +import androidx.appcompat.app.AppCompatActivity; + import com.annimon.stream.Optional; import com.annimon.stream.Stream; import com.google.android.gms.common.util.IOUtils; @@ -107,11 +109,11 @@ public class ColliDataRecover { } } - private static Context mContext; + private static AppCompatActivity mContext; private static List mtbColtsSessions = new ArrayList<>(); - public static void init(Context context) { + public static void init(AppCompatActivity context) { mContext = context; if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java index 6d14cd1c..ca313714 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_recover; import android.content.Context; +import androidx.appcompat.app.AppCompatActivity; + import com.annimon.stream.Optional; import com.annimon.stream.Stream; import com.google.android.gms.common.util.IOUtils; @@ -28,20 +30,21 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; public class ColliDataRecoverService { - private final Context mContext; + private AppCompatActivity mContext; private List mtbColtsSessions = new ArrayList<>(); @Inject - public ColliDataRecoverService(Context context) { - this.mContext = context; + public ColliDataRecoverService() { + } + + public void init(AppCompatActivity appCompatActivity) { + this.mContext = appCompatActivity; if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) { loadLocalFile(); } } - - public boolean thereIsAnExistantSession() { return mtbColtsSessions.size() > 0; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java index f1e73285..a7cc3a5c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java @@ -2,17 +2,28 @@ package it.integry.integrywmsnative.core.utility; import android.content.Context; +import androidx.appcompat.app.AppCompatActivity; + public class UtilityContext { private static Context mApplicationContext; + private static AppCompatActivity mMainActivity; public static void initApplicationContext(Context context) { mApplicationContext = context; } + public static void initMainActivity(AppCompatActivity mainActivity) { + mMainActivity = mainActivity; + } + public static Context getApplicationContext() { return mApplicationContext; } + public static AppCompatActivity getMainActivity() { + return mMainActivity; + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index 97b0d387..d529e95f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -9,7 +9,7 @@ import com.orhanobut.logger.Logger; import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.rest.CommonRESTException; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class UtilityExceptions { @@ -43,8 +43,9 @@ public class UtilityExceptions { if(ex.getCause() != null) errorMessage += "
" + ex.getCause().getMessage(); } - if(context != null) { - DialogSimpleMessageHelper.makeErrorDialog(context, new SpannableString(errorMessage), null, null).show(); + if(UtilityContext.getMainActivity() != null) { + DialogSimpleMessageView.makeErrorDialog(new SpannableString(errorMessage), null, null) + .show(UtilityContext.getMainActivity().getSupportFragmentManager(), "tag"); } if(!BuildConfig.DEBUG) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index 49744814..24c56ab8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -41,7 +41,7 @@ import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity; import it.integry.integrywmsnative.ui.ElevatedToolbar; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment { @@ -187,8 +187,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag .count(); - DialogSimpleMessageHelper.makeInfoDialog(getActivity(), - getText(R.string.orders).toString(), + DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(), Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter) + "

" + "" + artsCounter + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)), @@ -203,14 +202,17 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag myIntent.putExtra("keySitArts", cacheSitArtItemID); getActivity().startActivity(myIntent); - }).show(); + }).show(getActivity().getSupportFragmentManager(), "tag"); }, ex -> { progress.dismiss(); String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); + + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(errorMessage), null, null) + .show(getActivity().getSupportFragmentManager(), "tag"); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index 77621f8e..cb91bac0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -60,7 +60,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; @@ -245,7 +245,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc Num CNF BigDecimal numCnfEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -254,14 +254,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc qta col BigDecimal qtaEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getQtaCol) .reduce(BigDecimal.ZERO, BigDecimal::add); } - if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { accettazioneListModel.setQtaEvasa(numCnfEvasa); accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere()); @@ -308,7 +307,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc Num CNF BigDecimal numCnfEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -317,14 +316,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc qta col BigDecimal qtaEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getQtaCol) .reduce(BigDecimal.ZERO, BigDecimal::add); } - if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { accettazioneListModel.setQtaEvasa(numCnfEvasa); accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere()); @@ -371,7 +369,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc Num CNF BigDecimal numCnfEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -380,7 +378,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc qta col BigDecimal qtaEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getQtaCol) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -431,7 +429,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc Num CNF BigDecimal numCnfEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { numCnfEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -440,7 +438,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta //Calc qta col BigDecimal qtaEvasa = BigDecimal.ZERO; - if(x.getWithdrawMtbColrs().size() > 0) { + if (x.getWithdrawMtbColrs().size() > 0) { qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .map(MtbColr::getQtaCol) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -535,7 +533,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta public void startListaBancaliRegistratiActivity(ArrayList mtbColts) { Intent myIntent = ListaBancaliActivity.createIntent(this, - Stream.of(mtbColts).map(x -> (MtbColt)x).toList(), + Stream.of(mtbColts).map(x -> (MtbColt) x).toList(), input -> ((RecoverMtbColt) input).isFlagCanBeRecovered(), PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO)); @@ -546,7 +544,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta public void onLUSuccessullyPrinted() { Resources res = getResources(); String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(getSupportFragmentManager(), "tag"); } @Override @@ -556,13 +556,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta @Override public void onLUPrintError(Exception ex, Runnable onComplete) { this.closeProgress(); - DialogSimpleMessageHelper.makeErrorDialog( - this, + DialogSimpleMessageView.makeErrorDialog( new SpannableString(ex.getMessage()), null, null, R.string.button_ignore_print, - onComplete).show(); + onComplete) + .show(getSupportFragmentManager(), "tag"); } @Override @@ -599,7 +599,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta public void onError(Exception ex) { this.closeProgress(); - if(ex instanceof InvalidPesoKGException) { + if (ex instanceof InvalidPesoKGException) { UtilityToast.showToast(ex.getMessage()); } else { UtilityExceptions.defaultException(this, ex, mCurrentProgress); @@ -664,12 +664,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); - DialogSimpleMessageHelper.makeWarningDialog(this, - new SpannableString(text), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false) - ).show(); + ).show(getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java index 4cf28074..f4a5ab67 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java @@ -24,7 +24,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import static android.app.Activity.RESULT_OK; @@ -118,7 +118,9 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked Resources res = mContext.getResources(); String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - DialogSimpleMessageHelper.makeSuccessDialog(mContext, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(mContext.getSupportFragmentManager(), "tag"); }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); } catch (Exception ex) { @@ -128,7 +130,9 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked } else { progress.dismiss(); String errorMessage = "Nessuna stampante configurata"; - DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(errorMessage), null, null) + .show(mContext.getSupportFragmentManager(), "tag");; } }, ex -> { UtilityExceptions.defaultException(mContext, ex, progress); 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 91b797c0..ff43799c 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 @@ -28,7 +28,7 @@ import it.integry.integrywmsnative.gest.login.LoginActivity; import it.integry.integrywmsnative.gest.login.core.LoginHelper; import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO; import it.integry.integrywmsnative.gest.login.dto.LoginDTO; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class LoginViewModel { @@ -192,22 +192,22 @@ public class LoginViewModel { private void onLoginFailed(final Spanned message){ mProgress.dismiss(); loginButtonEnabled.set(true); - mActivity.runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog( - mActivity, + mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeErrorDialog( message, null, - null).show()); + null) + .show(mActivity.getSupportFragmentManager(), "tag")); } private void onLoginSuccess(final String title, final Spanned message, final String host, final int port, final List availableProfiles){ mProgress.dismiss(); - mActivity.runOnUiThread(() -> DialogSimpleMessageHelper.makeSuccessDialog( - mActivity, + mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog( title, message, null, - () -> showProfileDBSelectionDialog(host, port, availableProfiles)).show()); + () -> showProfileDBSelectionDialog(host, port, availableProfiles)) + .show(mActivity.getSupportFragmentManager(), "tag")); } private void showProfileDBSelectionDialog(final String host, final int port, final List availableProfiles){ diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 72acdc52..7dd3b647 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -53,7 +53,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaEl import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; import it.integry.integrywmsnative.ui.ElevatedToolbar; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener { @@ -315,8 +315,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF int alreadyRegisteredUL = alreadyRegisteredMtbColts.size(); - DialogSimpleMessageHelper.makeInfoDialog(getActivity(), - getText(R.string.orders).toString(), + DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(), Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size()) + "
" + "" + codMarts.size() + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size()) @@ -324,7 +323,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF "" + alreadyRegisteredUL + " " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), null, () -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol, MtbColr.Causale.DEFAULT, mDialogRowInfo) - ).show(); + ).show(getActivity().getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index bf6c709b..bad33b1e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -55,7 +55,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @@ -268,12 +268,11 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); - DialogSimpleMessageHelper.makeWarningDialog(getActivity(), - new SpannableString(text), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false) - ).show(); + ).show(getActivity().getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index 782fb055..8e9444a4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -49,7 +49,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; @@ -334,12 +334,11 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); - DialogSimpleMessageHelper.makeWarningDialog(this, - new SpannableString(text), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false) - ).show(); + ).show(getSupportFragmentManager(), "tag"); } @Override @@ -362,7 +361,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag public void onLUSuccessullyPrinted() { Resources res = getResources(); String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(getSupportFragmentManager(), "tag"); } @Override @@ -373,13 +374,13 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onLUPrintError(Exception ex, Runnable onComplete) { this.closeProgress(); - DialogSimpleMessageHelper.makeErrorDialog( - this, + DialogSimpleMessageView.makeErrorDialog( new SpannableString(ex.getMessage()), null, null, R.string.button_ignore_print, - onComplete).show(); + onComplete) + .show(getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java index 1cdc39ef..df721f6b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java @@ -41,7 +41,7 @@ import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.core.Or import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.core.OrdineProduzioneListAdapter; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; /** * A simple {@link Fragment} subclass. @@ -137,7 +137,9 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if (errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(errorMessage), null, null) + .show(getActivity().getSupportFragmentManager(), "tag"); } ); } @@ -197,8 +199,7 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) .count(); - DialogSimpleMessageHelper.makeInfoDialog(getActivity(), - getText(R.string.orders).toString(), + DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(), Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter) + "

" + "" + artsCounter + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)), @@ -213,7 +214,7 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit myIntent.putExtra("keySitArts", cacheSitArtItemID); getActivity().startActivity(myIntent); - }).show(); + }).show(getActivity().getSupportFragmentManager(), "tag"); }, @@ -224,7 +225,9 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if (errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(errorMessage), null, null) + .show(getActivity().getSupportFragmentManager(), "tag"); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java index 1f53fb66..917fadf0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java @@ -42,7 +42,7 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuper import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.dialogs.DialogCommon; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU; @@ -386,13 +386,13 @@ public class ProdRecuperoMaterialeViewModel { }, ex -> { progress.dismiss(); String errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog( - mContext, + DialogSimpleMessageView.makeErrorDialog( new SpannableString(errorMessage), null, null, R.string.button_ignore_print, - onComplete).show(); + onComplete) + .show(mContext.getSupportFragmentManager(), "tag"); }); } catch (Exception ex) { @@ -402,7 +402,9 @@ public class ProdRecuperoMaterialeViewModel { } else { progress.dismiss(); String errorMessage = "Nessuna stampante configurata"; - DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, onComplete).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(errorMessage), null, onComplete) + .show(mContext.getSupportFragmentManager(), "tag"); } }, ex -> { UtilityExceptions.defaultException(mContext, ex, progress); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java index 21bfaabd..9e729256 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java @@ -6,6 +6,7 @@ import android.text.SpannableString; import android.view.LayoutInflater; import android.view.ViewGroup; +import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.Observable; import androidx.recyclerview.widget.RecyclerView; @@ -32,7 +33,7 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentChooseOrdsLavFromListItemModelBinding; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter { @@ -57,11 +58,12 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter Per una corretta suddivisione delle quantità registra le risorse.")), null, () -> { itemModel.getChecked().set(false); - }).show(); + }) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); return; } if (!itemModel.isChecked()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java index 1a8a927c..ce53400b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java @@ -8,6 +8,7 @@ import android.text.SpannableString; import android.view.View; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.ObservableField; import androidx.recyclerview.widget.LinearLayoutManager; @@ -44,7 +45,7 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavo import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU; @@ -75,7 +76,7 @@ public class ProdVersamentoMaterialViewModel { mMtbColr = mtbColr; mBinding.descrArt.setText(mtbColr.getDescrizione()); mBinding.codArt.setText(mtbColr.getCodMart()); - mBinding.batch.setText(mtbColr.getPartitaMag() + ((mtbColr.getMtbPartitaMag() != null) ? " - "+ mtbColr.getMtbPartitaMag().getDescrizione() : "")); + mBinding.batch.setText(mtbColr.getPartitaMag() + ((mtbColr.getMtbPartitaMag() != null) ? " - " + mtbColr.getMtbPartitaMag().getDescrizione() : "")); if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) { String text = UtilityNumber.decimalToString(mtbColr.getQtaCol()); @@ -96,18 +97,20 @@ public class ProdVersamentoMaterialViewModel { } else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE || mtbColt.getGestioneEnum() == GestioneEnum.VENDITA) && mtbColt.getSegno().equals(+1)) { if (mtbColt.getMtbColr() == null || mtbColt.getMtbColr().size() == 0) { - DialogSimpleMessageHelper.makeWarningDialog(mContext, + DialogSimpleMessageView.makeWarningDialog( new SpannableString(Html.fromHtml("E' stata scansionata una UL già vuota")), - null, this::openLU).show(); + null, this::openLU) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } else { setMtbColt(mtbColt); choosePosition(); } } else { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")), - null, this::openLU).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")), + null, this::openLU) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } }).show(); } @@ -123,28 +126,36 @@ public class ProdVersamentoMaterialViewModel { createColloScarico(mtbDepoPosizione); } else { if (mtbColt == null || mtbColt.get() == null || mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size() <= 0) { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")), - null, this::openLU).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")), + null, this::openLU) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); return; } else if (mtbColt.get().getMtbColr().size() > 1) { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml("Il collo selezionato contiene più articoli, solo il primo verrà versato in questa sessione.
Per versare i colli restanti ripetere l'operazione di versamento.")), - null, () -> { - cyclicGetOrdiniLavByCollo(mtbColt.get().getMtbColr().iterator(), mtbDepoPosizione); - }).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml("Il collo selezionato contiene più articoli, solo il primo verrà versato in questa sessione.
Per versare i colli restanti ripetere l'operazione di versamento.")), + null, () -> { + cyclicGetOrdiniLavByCollo(mtbColt.get().getMtbColr().iterator(), mtbDepoPosizione); + }) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); return; } - MesRESTConsumer.getOrdiniLavorazioneMateriale(mtbDepoPosizione.getPosizione(), getIdMaterialeFromCollo(mtbColt.get()), ordini -> richiediOrdiniPerVersamento(ordini, mtbDepoPosizione), e -> DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml(e.getMessage())), - null, this::openLU).show()); + MesRESTConsumer.getOrdiniLavorazioneMateriale( + mtbDepoPosizione.getPosizione(), + getIdMaterialeFromCollo(mtbColt.get()), + ordini -> richiediOrdiniPerVersamento(ordini, mtbDepoPosizione), + e -> DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(e.getMessage())), + null, + this::openLU) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag")); } } else { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml("Si è verificato un errore. Riprovare")), - null, this::openLU).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml("Si è verificato un errore. Riprovare")), + null, this::openLU) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } } @@ -243,8 +254,8 @@ public class ProdVersamentoMaterialViewModel { richiediOrdiniPerVersamento(ordini, mtbDepoPosizione); } } - , e -> DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml(e.getMessage())), - null, this::openLU).show()); + , e -> DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(e.getMessage())), + null, this::openLU) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag")); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index 913f46dc..4da7c280 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -42,7 +42,7 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrd import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class PVOrdineAcquistoEditActivity extends BaseActivity { @@ -135,7 +135,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { private void deleteArticolo(ArticoloOrdine articoloOrdine) { String text = "Stai per eliminare l'articolo " + articoloOrdine.getDescrizione() + " dall'ordine,
sei sicuro?"; - DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> { + DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> { final Dialog progress = UtilityProgress.createDefaultProgressDialog(this); mhelper.removeArticoloFromOrdine(articoloOrdine, () -> { progress.dismiss(); @@ -146,7 +146,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { runOnUiThread(() -> UtilityExceptions.defaultException(this, e)); }); }), () -> { - }).show(); + }).show(getSupportFragmentManager(), "tag"); } private void handleException(Exception ex) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index 1b9f3b68..065c665c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -47,7 +47,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLis import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment { @@ -142,7 +142,9 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled }), (e) -> { progress.dismiss(); String errorMessage = e.getMessage(); - getActivity().runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show()); + getActivity().runOnUiThread(() -> DialogSimpleMessageView + .makeErrorDialog(new SpannableString(errorMessage), null, null) + .show(getActivity().getSupportFragmentManager(), "tag")); }); } @@ -198,7 +200,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled private void deleteOrdine(Ordine ordine) { String text = "Stai per eliminare un ordine sei sicuro?"; - DialogSimpleMessageHelper.makeWarningDialog(getActivity(), new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> { + DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> { final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); mHelper.deleteOrder(ordine, () -> { getActivity().runOnUiThread(() -> { @@ -211,7 +213,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e)); }); }), () -> { - }).show(); + }).show(getActivity().getSupportFragmentManager(), "tag"); } private void refreshRenderedOrdini(List ordini) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 610376c9..1366e3e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -60,7 +60,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; @@ -360,12 +360,12 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); - DialogSimpleMessageHelper.makeWarningDialog(getActivity(), - new SpannableString(text), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false) - ).show(); + ) + .show(getActivity().getSupportFragmentManager(), "tag"); } @Override @@ -471,29 +471,31 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme public void onLUSuccessullyPrinted() { Resources res = getResources(); String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - DialogSimpleMessageHelper.makeSuccessDialog(getActivity(), res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(getActivity().getSupportFragmentManager(), "tag"); } @Override public void onLUPrintRequest(RunnableArgs onComplete) { - DialogSimpleMessageHelper.makeInfoDialog( - getActivity(), + DialogSimpleMessageView.makeInfoDialog( getActivity().getResources().getString(R.string.action_print_ul), new SpannableString(getActivity().getResources().getString(R.string.ask_print_message)), null, () -> onComplete.run(true), - () -> onComplete.run(false)).show(); + () -> onComplete.run(false)) + .show(getActivity().getSupportFragmentManager(), "tag");; } @Override public void onLUPrintError(Exception ex, Runnable onComplete) { - DialogSimpleMessageHelper.makeErrorDialog( - getActivity(), + DialogSimpleMessageView.makeErrorDialog( new SpannableString(ex.getMessage()), null, null, R.string.button_ignore_print, - onComplete).show(); + onComplete) + .show(getActivity().getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 2aa9f89b..0af39985 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -67,7 +67,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.camera_barcode_reader.DialogCameraBarcodeReader; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; @@ -719,7 +719,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo public void onLUSuccessullyPrinted() { Resources res = getResources(); String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(getSupportFragmentManager(), "tag");; } @Override @@ -730,13 +732,14 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onLUPrintError(Exception ex, Runnable onComplete) { this.closeProgress(); - DialogSimpleMessageHelper.makeErrorDialog( - this, + DialogSimpleMessageView.makeErrorDialog( new SpannableString(ex.getMessage()), null, null, R.string.button_ignore_print, - onComplete).show(); + onComplete) + .show(getSupportFragmentManager(), "tag"); + ; } @Override @@ -754,12 +757,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onMtbColrDeleteRequest(RunnableArgs onComplete) { String text = getResources().getString(R.string.alert_delete_mtb_colr); - DialogSimpleMessageHelper.makeWarningDialog(this, - new SpannableString(text), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> onComplete.run(true), () -> onComplete.run(false) - ).show(); + ) + .show(getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java index b2a835fa..8c1ab989 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java @@ -40,7 +40,7 @@ import it.integry.integrywmsnative.databinding.FragmentMainVersamentoMerceBindin import it.integry.integrywmsnative.gest.versamento_merce.core.VersamentoMerceHelper; import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione; import it.integry.integrywmsnative.view.dialogs.DialogCommon; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; @@ -76,9 +76,10 @@ public class VersamentoMerceViewModel { } else if (mtbColt.getGestioneEnum() == GestioneEnum.VENDITA) { setMtbColt(mtbColt); } else { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")), - null, this::openLU).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")), + null, this::openLU) + .show(mContext.getSupportFragmentManager(), "tag");; } }).show(); } @@ -151,9 +152,10 @@ public class VersamentoMerceViewModel { } private void showTooMuchULFound() { - DialogSimpleMessageHelper.makeWarningDialog(mContext, + DialogSimpleMessageView.makeWarningDialog( new SpannableString(mContext.getResources().getText(R.string.too_much_lu_found_message_in_mono_lu)), - null, null).show(); + null, null) + .show(mContext.getSupportFragmentManager(), "tag"); } private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { @@ -429,18 +431,19 @@ public class VersamentoMerceViewModel { private void askULVenditaConfirm(RunnableArgs callback) { - DialogSimpleMessageHelper.makeWarningDialog( - mContext, + DialogSimpleMessageView.makeWarningDialog( new SpannableString(mContext.getResources().getString(R.string.lu_gest_v_loading_alert)), null, () -> callback.run(true), - () -> callback.run(false)).show(); + () -> callback.run(false)) + .show(mContext.getSupportFragmentManager(), "tag"); } private void showWrongGestioneUL() { - DialogSimpleMessageHelper.makeWarningDialog(mContext, + DialogSimpleMessageView.makeWarningDialog( new SpannableString(Html.fromHtml(mContext.getResources().getText(R.string.gestione_V_not_accepted_message).toString())), - null, null).show(); + null, null) + .show(mContext.getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogCommon.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogCommon.java index f2ed317e..e35f0e4b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogCommon.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogCommon.java @@ -3,48 +3,52 @@ package it.integry.integrywmsnative.view.dialogs; import android.content.Context; import android.text.SpannableString; +import androidx.appcompat.app.AppCompatActivity; + import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class DialogCommon { public static void showNoArtFoundDialog(@NotNull Context context, @Nullable Runnable onPositiveClick) { - DialogSimpleMessageHelper.makeWarningDialog(context, - new SpannableString(context.getResources().getText(R.string.no_result_from_barcode)), - null, onPositiveClick).show(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(context.getResources().getText(R.string.no_result_from_barcode)), + null, onPositiveClick) + .show(((AppCompatActivity) context).getSupportFragmentManager(), "tag"); } public static void showNoULFound(@NotNull Context context, @Nullable Runnable onPositiveClick) { - DialogSimpleMessageHelper.makeWarningDialog(context, - new SpannableString(context.getResources().getText(R.string.no_lu_found_message)), - null, onPositiveClick).show(); + DialogSimpleMessageView.makeWarningDialog(new SpannableString(context.getResources().getText(R.string.no_lu_found_message)), + null, onPositiveClick) + .show(((AppCompatActivity) context).getSupportFragmentManager(), "tag"); } public static void showNoOrderFound(@NotNull Context context, @Nullable Runnable onPositiveClick) { - DialogSimpleMessageHelper.makeWarningDialog(context, - new SpannableString(context.getResources().getText(R.string.no_orders_found_message)), - null, onPositiveClick).show(); + DialogSimpleMessageView.makeWarningDialog(new SpannableString(context.getResources().getText(R.string.no_orders_found_message)), + null, onPositiveClick) + .show(((AppCompatActivity) context).getSupportFragmentManager(), "tag");; } public static void showDataSaved(@NotNull Context context, @Nullable Runnable onPositiveClick) { - DialogSimpleMessageHelper.makeSuccessDialog( - context, + DialogSimpleMessageView.makeSuccessDialog( context.getResources().getString(R.string.completed), new SpannableString(context.getResources().getString(R.string.data_saved)), - null, onPositiveClick).show(); + null, onPositiveClick) + .show(((AppCompatActivity) context).getSupportFragmentManager(), "tag"); } public static void showRestError(@NotNull Context context, Exception ex, @Nullable Runnable onPositiveClick) { - DialogSimpleMessageHelper.makeErrorDialog(context, - new SpannableString(ex.getMessage()), null, onPositiveClick).show(); + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(ex.getMessage()), null, onPositiveClick) + .show(((AppCompatActivity) context).getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java deleted file mode 100644 index cae2d7b4..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java +++ /dev/null @@ -1,243 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.base; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.Color; -import android.graphics.Rect; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; -import android.text.SpannableString; -import android.text.Spanned; -import android.view.LayoutInflater; -import android.view.Window; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.annotation.StringRes; -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; -import androidx.databinding.DataBindingUtil; - -import java.util.HashMap; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.databinding.DialogBaseBinding; - -/** - * Created by GiuseppeS on 22/03/2018. - */ - -public class DialogSimpleMessageHelper { - - public enum TYPE { - INFO(1), - SUCCESS(2), - WARNING(3), - ERROR(4); - - private int value; - - TYPE(int value) { - this.value = value; - } - - public int getValue() { - return this.value; - } - - public static TYPE fromInt(int value) { - for (TYPE b : TYPE.values()) { - if (b.value == value) return b; - } - return null; - } - } - - private static Dialog makeBase(TYPE type, Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { - LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - int colorBackgroundTitle = -1; - Drawable titleIconRes = null; - - Dialog dialog = new Dialog(mContext); - - switch (type) { - case INFO: - colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300); - titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_info_78dp, null); - break; - - case SUCCESS: - colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.green_300); - titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_done_white_24dp, null); - break; - - case WARNING: - colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.yellow_600); - titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_warning_white_24dp, null); - break; - - case ERROR: - colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.red_300); - titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_mood_bad_24dp, null); - break; - } - - DialogSimpleMessageViewModel viewModel = new DialogSimpleMessageViewModel(dialog); - - viewModel - .setOnPositive(onPositiveClick) - .setOnNeutral(onNeutralClick) - .setOnNegative(onNegativeClick) - - .setPositiveButtonText(mContext.getText(R.string.ok).toString()) - .setNeutralButtonText(rNeutralButtonString != null && rNeutralButtonString != -1 ? mContext.getText(rNeutralButtonString).toString() : null) - .setNegativeButtonText(mContext.getText(R.string.no).toString()); - - - DialogBaseBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_base, null, false); - - mBinding.setViewmodel(viewModel); - - - Rect displayRectangle = new Rect(); - Window window = ((Activity) mContext).getWindow(); - window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle); - mBinding.titleContainer.setMinimumWidth((int) (displayRectangle.width() * 0.8f)); - - - //Title VIEW - mBinding.titleText.setText(titleText); - ColorStateList colorStateList = ColorStateList.valueOf(Color.WHITE); - mBinding.titleIcon.setImageTintList(colorStateList); - mBinding.titleIcon.setImageDrawable(titleIconRes); - - mBinding.titleContainer.setBackgroundColor(colorBackgroundTitle); - - //Content View - mBinding.descriptionText.setText(messageText); - - LinearLayout hashMapContainer = mBinding.dialogContentHashmap; - - if (hashmapContent != null) { - for (int i = 0; i < hashmapContent.keySet().size(); i++) { - String currentKey = hashmapContent.keySet().toArray()[i].toString(); - String currentValue = hashmapContent.get(currentKey); - - RelativeLayout singleMapContent = (RelativeLayout) inflater.inflate(R.layout.dialog_custom_content_hashmap_viewmodel, null); - ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey); - ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue); - - hashMapContainer.addView(singleMapContent); - } - } - - dialog.setCancelable(false); - dialog.setCanceledOnTouchOutside(false); - dialog.setContentView(mBinding.getRoot()); - dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - return dialog; - } - - - public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { - return makeBase(TYPE.INFO, - mContext, - titleText, - messageText, - hashmapContent, - onPositiveClick, - null, -1, null); - } - - - public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) { - return makeBase(TYPE.INFO, - mContext, - titleText, - messageText, - hashmapContent, - onPositiveClick, - onNegativeClick, -1, null); - } - - - public static Dialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { - return makeBase(TYPE.SUCCESS, - mContext, - titleText, - messageText, - hashmapContent, - onPositiveClick, - null, -1, null); - } - - - public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) { - return makeBase(TYPE.WARNING, - mContext, - mContext.getText(R.string.warning).toString(), - messageText, - hashmapContent, - onPositiveClick, - () -> { - if (onNegativeClick != null) onNegativeClick.run(); - }, -1, null); - } - - - public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { - return makeBase(TYPE.WARNING, - mContext, - mContext.getText(R.string.warning).toString(), - messageText, - hashmapContent, - onPositiveClick, - null, -1, null); - } - - public static void showSimpleWarningDialog(Context context, String message) { - makeErrorDialog( - context, - new SpannableString(message), - null, - null).show(); - } - - public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { - - return makeBase(TYPE.ERROR, - mContext, - mContext.getText(R.string.ops).toString(), - messageText, - hashmapContent, - onPositiveClick, - null, -1, null); - } - - public static void showSimpleErrorDialog(Context context, String message) { - makeErrorDialog( - context, - new SpannableString(message), - null, - null).show(); - } - - public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick) { - - return makeBase(TYPE.ERROR, - mContext, - mContext.getText(R.string.ops).toString(), - messageText, - hashmapContent, - onPositiveClick, - null, rNeutralButtonString, onNeutralClick); - - } - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java new file mode 100644 index 00000000..50edd5e8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java @@ -0,0 +1,286 @@ +package it.integry.integrywmsnative.view.dialogs.base; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.text.Spanned; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.appcompat.widget.LinearLayoutCompat; +import androidx.core.content.ContextCompat; +import androidx.core.content.res.ResourcesCompat; +import androidx.databinding.DataBindingUtil; + +import java.util.HashMap; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.databinding.DialogBaseBinding; + +/** + * Created by GiuseppeS on 22/03/2018. + */ + +public class DialogSimpleMessageView extends BaseDialogFragment { + + public enum TYPE { + INFO(1), + SUCCESS(2), + WARNING(3), + ERROR(4); + + private int value; + + TYPE(int value) { + this.value = value; + } + + public int getValue() { + return this.value; + } + + public static TYPE fromInt(int value) { + for (TYPE b : TYPE.values()) { + if (b.value == value) return b; + } + return null; + } + } + + + private final TYPE mType; + private final String mTitleText; + private final Spanned mMessageText; + private final HashMap mHashmapContent; + private final Runnable mOnPositiveClick; + private final Runnable mOnNegativeClick; + private final @StringRes Integer mRNeutralButtonString; + private final Runnable mOnNeutralClick; + + + private String positiveButtonText; + private String neutralButtonText; + private String negativeButtonText; + + + private DialogBaseBinding mBindings; + private Context mContext; + + public static DialogSimpleMessageView newInstance(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap hashmapContent , Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { + return new DialogSimpleMessageView(type, titleText, messageText, hashmapContent, onPositiveClick, onNegativeClick, rNeutralButtonString, onNeutralClick); + } + + private DialogSimpleMessageView(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap hashmapContent , Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { + super(); + + this.mType = type; + this.mTitleText = titleText; + this.mMessageText = messageText; + this.mHashmapContent = hashmapContent; + this.mOnPositiveClick = onPositiveClick; + this.mOnNegativeClick = onNegativeClick; + this.mRNeutralButtonString = rNeutralButtonString; + this.mOnNeutralClick = onNeutralClick; + } + + @Override + public void onStart() { + super.onStart(); + + UtilityDialog.setTo90PercentWidth(this.mContext, this); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + this.mContext = getActivity(); + + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_base, container, false); + + mBindings.setView(this); + mBindings.setLifecycleOwner(this); + + getDialog().setCanceledOnTouchOutside(false); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + int colorBackgroundTitle = -1; + Drawable titleIconRes = null; + + switch (mType) { + case INFO: + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300); + titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_info_78dp, null); + break; + + case SUCCESS: + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.green_300); + titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_done_white_24dp, null); + break; + + case WARNING: + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.yellow_600); + titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_warning_white_24dp, null); + break; + + case ERROR: + colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.red_300); + titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_mood_bad_24dp, null); + break; + } + + this.positiveButtonText = mContext.getText(R.string.ok).toString(); + this.negativeButtonText = mContext.getText(R.string.no).toString(); + + //Title VIEW + mBindings.titleText.setText(mTitleText); + ColorStateList colorStateList = ColorStateList.valueOf(Color.WHITE); + mBindings.titleIcon.setImageTintList(colorStateList); + mBindings.titleIcon.setImageDrawable(titleIconRes); + + mBindings.titleContainer.setBackgroundColor(colorBackgroundTitle); + + //Content View + mBindings.descriptionText.setText(mMessageText); + + LinearLayoutCompat hashMapContainer = mBindings.dialogContentHashmap; + + if (mHashmapContent != null) { + for (int i = 0; i < mHashmapContent.keySet().size(); i++) { + String currentKey = mHashmapContent.keySet().toArray()[i].toString(); + String currentValue = mHashmapContent.get(currentKey); + + RelativeLayout singleMapContent = (RelativeLayout) inflater.inflate(R.layout.dialog_custom_content_hashmap_viewmodel, null); + ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey); + ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue); + + hashMapContainer.addView(singleMapContent); + } + } + + return mBindings.getRoot(); + } + + + public boolean isPositiveVisible() { + return mOnPositiveClick != null; + } + + public boolean isNeutralVisible() { + return mOnNeutralClick != null; + } + + public boolean isNegativeVisible() { + return mOnNegativeClick != null; + } + + + public String getPositiveButtonText() { + return positiveButtonText; + } + + public String getNeutralButtonText() { + return mRNeutralButtonString != null && mRNeutralButtonString != -1 ? mContext.getText(mRNeutralButtonString).toString() : null; + } + + public String getNegativeButtonText() { + return negativeButtonText; + } + + public void onPositiveClick() { + if(mOnPositiveClick != null) mOnPositiveClick.run(); + } + + public void onNeutralClick() { + if(mOnNeutralClick != null) mOnNeutralClick.run(); + } + + public void onNegativeClick() { + if(mOnNegativeClick != null) mOnNegativeClick.run(); + } + + public static DialogSimpleMessageView makeInfoDialog(String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { + return newInstance(TYPE.INFO, + titleText, + messageText, + hashmapContent, + onPositiveClick, + null, -1, null); + } + + + public static DialogSimpleMessageView makeInfoDialog(String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) { + return newInstance(TYPE.INFO, + titleText, + messageText, + hashmapContent, + onPositiveClick, + onNegativeClick, -1, null); + } + + + public static DialogSimpleMessageView makeSuccessDialog(String titleText, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { + return newInstance(TYPE.SUCCESS, + titleText, + messageText, + hashmapContent, + onPositiveClick, + null, -1, null); + } + + + public static DialogSimpleMessageView makeWarningDialog(Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) { + return newInstance(TYPE.WARNING, + UtilityResources.getString(R.string.warning), + messageText, + hashmapContent, + onPositiveClick, + () -> { + if (onNegativeClick != null) onNegativeClick.run(); + }, -1, null); + } + + + public static DialogSimpleMessageView makeWarningDialog(Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { + return newInstance(TYPE.WARNING, + UtilityResources.getString(R.string.warning), + messageText, + hashmapContent, + onPositiveClick, + null, -1, null); + } + + public static DialogSimpleMessageView makeErrorDialog(Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick) { + + return newInstance(TYPE.ERROR, + UtilityResources.getString(R.string.ops), + messageText, + hashmapContent, + onPositiveClick, + null, -1, null); + } + + public static DialogSimpleMessageView makeErrorDialog(Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick) { + + return newInstance(TYPE.ERROR, + UtilityResources.getString(R.string.ops), + messageText, + hashmapContent, + onPositiveClick, + null, rNeutralButtonString, onNeutralClick); + + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageViewModel.java deleted file mode 100644 index 3a217b53..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageViewModel.java +++ /dev/null @@ -1,91 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.base; - -import android.app.Dialog; - -public class DialogSimpleMessageViewModel { - - - private Dialog mDialog; - - private Runnable onPositive; - private Runnable onNeutral; - private Runnable onNegative; - - private String positiveButtonText; - private String neutralButtonText; - private String negativeButtonText; - - public DialogSimpleMessageViewModel(Dialog dialog) { - mDialog = dialog; - } - - public DialogSimpleMessageViewModel setOnPositive(Runnable onPositive) { - this.onPositive = onPositive; - return this; - } - - public DialogSimpleMessageViewModel setOnNeutral(Runnable onNeutral) { - this.onNeutral = onNeutral; - return this; - } - - public DialogSimpleMessageViewModel setOnNegative(Runnable onNegative) { - this.onNegative = onNegative; - return this; - } - - - - public boolean isPositiveVisible() { - return onPositive != null; - } - - public boolean isNeutralVisible() { - return onNeutral != null; - } - - public boolean isNegativeVisible() { - return onNegative != null; - } - - - public String getPositiveButtonText() { - return positiveButtonText; - } - - public DialogSimpleMessageViewModel setPositiveButtonText(String positiveButtonText) { - this.positiveButtonText = positiveButtonText; - return this; - } - - public String getNeutralButtonText() { - return neutralButtonText; - } - - public DialogSimpleMessageViewModel setNeutralButtonText(String neutralButtonText) { - this.neutralButtonText = neutralButtonText; - return this; - } - - public String getNegativeButtonText() { - return negativeButtonText; - } - - public DialogSimpleMessageViewModel setNegativeButtonText(String negativeButtonText) { - this.negativeButtonText = negativeButtonText; - return this; - } - - public void onPositiveClick() { - mDialog.dismiss(); - if(onPositive != null) onPositive.run(); - } - public void onNeutralClick() { - mDialog.dismiss(); - if(onNeutral != null) onNeutral.run(); - } - public void onNegativeClick() { - mDialog.dismiss(); - if(onNegative != null) onNegative.run(); - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java index 09ffdd5a..785fe3e2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.view.dialogs.camera_barcode_reader; -import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; @@ -53,7 +52,6 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_camera_barcode_reader, container, false); - UtilityDialog.setTo95PercentWidth(mContext, this); getDialog().setCanceledOnTouchOutside(false); getDialog().setCancelable(false); @@ -68,6 +66,13 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode return mBindings.getRoot(); } + @Override + public void onStart() { + super.onStart(); + + UtilityDialog.setTo95PercentWidth(mContext, this); + } + @Override public void onStop() { super.onStop(); 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 fc527cb5..d115eb93 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 @@ -41,7 +41,7 @@ import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class DialogInputQuantityV2View extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener { @@ -66,7 +66,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public ObservableField enabledChangePartitaMag = new ObservableField<>(true); public ObservableField enabledLUCloseButton = new ObservableField<>(true); - public Context context; + private Context context; private DialogInputQuantityV2Binding mBindings; private boolean mEnableDataCallback = true; @@ -99,6 +99,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.context = getActivity(); mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_v2, container, false); + mBindings.setLifecycleOwner(this); mBindings.toolbar.setTitle("Inserimento articolo"); @@ -356,6 +357,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Override public void onError(Exception ex) { - DialogSimpleMessageHelper.makeErrorDialog(this.context, new SpannableString(Html.fromHtml(ex.getMessage())), null, null).show(); + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) + .show(getActivity().getSupportFragmentManager(), "tag");; } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java index 38bb45b4..fcb64c3b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java @@ -8,6 +8,7 @@ import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import com.annimon.stream.Stream; @@ -31,7 +32,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLU; public class DialogScanOrCreateLU { @@ -198,13 +199,13 @@ public class DialogScanOrCreateLU { } else { if(mtbColt.getCodDtip() != null && mShouldCheckIfExistDoc) { - DialogSimpleMessageHelper.makeWarningDialog(mContext, + DialogSimpleMessageView.makeWarningDialog( new SpannableString(mContext.getResources().getText(R.string.lu_already_attache_to_doc)), null, () -> { BarcodeManager.enable(); progressDialog.dismiss(); }) - .show(); + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } else { BarcodeManager.enable(); @@ -231,17 +232,15 @@ public class DialogScanOrCreateLU { if(mtbColt != null) { if(mtbColt.getCodDtip() != null && mShouldCheckIfExistDoc) { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(mContext.getResources().getText(R.string.lu_already_attache_to_doc)), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(mContext.getResources().getText(R.string.lu_already_attache_to_doc)), null, () -> { BarcodeManager.enable(); progressDialog.dismiss(); }) - .show(); + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } else { if(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1) { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(mContext.getResources().getText(R.string.lu_gest_v_loading_alert)), + DialogSimpleMessageView.makeWarningDialog(new SpannableString(mContext.getResources().getText(R.string.lu_gest_v_loading_alert)), null, () -> { BarcodeManager.enable(); sendMtbColt(mtbColt, progressDialog, false); @@ -249,7 +248,7 @@ public class DialogScanOrCreateLU { BarcodeManager.enable(); progressDialog.dismiss(); }) - .show(); + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } else { BarcodeManager.enable(); @@ -287,9 +286,10 @@ public class DialogScanOrCreateLU { private void showTooMuchULFound() { - DialogSimpleMessageHelper.makeWarningDialog(mContext, + DialogSimpleMessageView.makeWarningDialog( new SpannableString(mContext.getResources().getText(R.string.too_much_lu_found_message_in_mono_lu)), - null, null).show(); + null, null) + .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); } private void sendMtbColt(MtbColt mtbColtToSend, Dialog progressDialog, boolean created) { diff --git a/app/src/main/res/layout/dialog_base.xml b/app/src/main/res/layout/dialog_base.xml index 6b7ddd31..d9d9947b 100644 --- a/app/src/main/res/layout/dialog_base.xml +++ b/app/src/main/res/layout/dialog_base.xml @@ -7,22 +7,21 @@ + name="view" + type="it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView" /> - - @@ -38,207 +37,193 @@ android:id="@+id/title_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@drawable/ic_error_white_24dp" - android:layout_margin="24dp"/> + android:layout_margin="24dp" + android:src="@drawable/ic_error_white_24dp" /> - + android:paddingEnd="16dp" + android:paddingBottom="16dp"> - - - + + + + + - - - - + android:paddingLeft="12dp" + android:paddingRight="12dp"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:visibility="@{view.negativeVisible && !view.neutralVisible ? View.VISIBLE : View.GONE}"> + + + + + + + + + + + + + + + + + + + + + + + + + + app:layout_constraintGuide_percent="0.33" /> + app:layout_constraintGuide_percent="0.66" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="@id/left_buttons_guideline" + app:layout_constraintTop_toTopOf="parent" + app:strokeColor="@color/colorPrimary" /> + app:layout_constraintStart_toStartOf="@id/right_buttons_guideline" + app:layout_constraintTop_toTopOf="parent" /> @@ -247,50 +232,49 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:visibility="@{!viewmodel.negativeVisible && viewmodel.neutralVisible ? View.VISIBLE : View.GONE}"> + android:visibility="@{!view.negativeVisible && view.neutralVisible ? View.VISIBLE : View.GONE}"> + app:layout_constraintGuide_percent="0.5" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:strokeColor="@color/colorPrimary" /> + app:layout_constraintStart_toStartOf="@id/center_guideline2" + app:layout_constraintTop_toTopOf="parent" /> - - + - + From aa8a54547c2aa75c16c45a1f423b46ff3df9f591 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 10 Mar 2021 16:11:50 +0100 Subject: [PATCH 2/9] Implementato versamento in depositi diversi da quello dell'utente loggato --- .../consumers/ColliMagazzinoRESTConsumer.java | 4 ++- .../rest/consumers/PosizioniRESTConsumer.java | 29 ++++++++++++++++--- .../core/utility/UtilityBarcode.java | 9 ++++-- .../viewmodel/VersamentoMerceViewModel.java | 2 +- .../dialogs/base/DialogSimpleMessageView.java | 3 ++ 5 files changed, 39 insertions(+), 8 deletions(-) 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 052908a4..173231f7 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 @@ -549,7 +549,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { mtbColtToSaveClone.setMtbColr(new ObservableArrayList<>()); if (posizione == null) mtbColtToSaveClone.setPosizione(null); - else mtbColtToSaveClone.setPosizione(posizione.getPosizione()); + else mtbColtToSaveClone + .setPosizione(posizione.getPosizione()) + .setCodMdep(posizione.getCodMdep()); ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSaveClone, mtbColt -> { if (onComplete != null) onComplete.run(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java index d5fda18d..9964f933 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java @@ -8,12 +8,11 @@ import java.util.List; import javax.inject.Singleton; -import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; -import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.utility.UtilityDB; import retrofit2.Call; import retrofit2.Callback; @@ -28,8 +27,30 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{ this.mSystemRESTConsumer = systemRESTConsumer; } + public void getPosizioneFromString(String posizione, RunnableArgs onComplete, RunnableArgs onFailed) { + String sql = "SELECT TOP 1 mtb_depo_posizioni.*," + + " CASE WHEN jtb_fasi.cod_jfas IS NULL THEN 'N' ELSE 'S' END AS flag_linea_produzione " + + " FROM mtb_depo_posizioni " + + " LEFT OUTER JOIN jtb_fasi " + + " ON mtb_depo_posizioni.posizione = jtb_fasi.cod_jfas " + + " WHERE posizione = " + UtilityDB.valueToString(posizione); + + SystemRESTConsumer.processSqlStatic(sql, MtbDepoPosizione.class, new ISimpleOperationCallback() { + @Override + public void onSuccess(MtbDepoPosizione value) { + if(onComplete != null) onComplete.run(value); + } + + @Override + public void onFailed(Exception ex) { + if(onFailed != null) onFailed.run(ex); + } + }); + } + public static void getAvailablePosizioni(RunnableArgs> onComplete, RunnableArgs onFailed) { - String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); +// String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + String codMdep = null; PosizioniRESTConsumerService posizioniRESTConsumerService = RESTBuilder.getService(PosizioniRESTConsumerService.class); posizioniRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback>>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java index 7d6c8bc4..1148410b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java @@ -33,19 +33,24 @@ public class UtilityBarcode { } public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) { + return isEtichettaPosizione(barcodeScanDTO, true); + } + + public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, boolean enableCheckCodMdep) { + String currentCodMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + String barcode = barcodeScanDTO.getStringValue(); boolean isPosizione = false; if(SettingsManager.iDB().getAvailablePosizioni() != null) { Stream tmpStream = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) - .filter(x -> x.getPosizione().equalsIgnoreCase(barcode)); + .filter(x -> x.getPosizione().equalsIgnoreCase(barcode) && (!enableCheckCodMdep || currentCodMdep.equalsIgnoreCase(x.getCodMdep()))); if(tmpStream.count() > 0){ isPosizione = true; } } - return isPosizione; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java index 8c1ab989..f69551ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java @@ -97,7 +97,7 @@ public class VersamentoMerceViewModel { BarcodeManager.disable(); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - if (UtilityBarcode.isEtichettaPosizione(data)) { + if (UtilityBarcode.isEtichettaPosizione(data, false)) { progressDialog.show(); this.executeEtichettaPosizione(data, progressDialog); } else if (data.getType() == BarcodeType.EAN8 || data.getType() == BarcodeType.EAN13 || data.getType() == BarcodeType.UPCA) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java index 50edd5e8..3dc54c6b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java @@ -199,14 +199,17 @@ public class DialogSimpleMessageView extends BaseDialogFragment { } public void onPositiveClick() { + dismiss(); if(mOnPositiveClick != null) mOnPositiveClick.run(); } public void onNeutralClick() { + dismiss(); if(mOnNeutralClick != null) mOnNeutralClick.run(); } public void onNegativeClick() { + dismiss(); if(mOnNegativeClick != null) mOnNegativeClick.run(); } From ff448b36b9a5f823dc3e87e0b70c964f4a4f3e36 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 11 Mar 2021 13:11:06 +0100 Subject: [PATCH 3/9] Refactoring ultime consegne cliente --- .../MainApplicationComponent.java | 4 + .../view/ExtendedSectionedRecyclerView.java | 56 +++++ .../core/utility/UtilityExceptions.java | 15 +- .../core/utility/UtilityString.java | 4 +- .../OrdiniUscitaElencoFragment.java | 6 +- .../OrdiniUscitaElencoViewModel.java | 6 +- .../UltimeConsegneClienteComponent.java | 14 ++ .../UltimeConsegneClienteFragment.java | 212 ++++++++++++++++-- .../UltimeConsegneClienteModule.java | 29 +++ .../UltimeConsegneClienteViewModel.java | 193 ++++++++++++++++ .../UltimeConsegneMainListAdapter.java | 66 +----- .../UltimeConsegneClienteRESTConsumer.java | 77 ++++--- .../UltimeConsegneClienteViewModel.java | 146 ------------ .../fragment_main_ultime_consegne_cliente.xml | 18 +- 14 files changed, 567 insertions(+), 279 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java rename app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/{viewmodel => }/UltimeConsegneMainListAdapter.java (71%) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 4c9015d0..b1bc32eb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -27,6 +27,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent; @@ -44,6 +46,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule; RettificaGiacenzeModule.class, SpedizioneModule.class, AccettazionePickingModule.class, + UltimeConsegneClienteModule.class, PickingResiModule.class, OrdiniUscitaElencoModule.class, DialogInputQuantityV2Module.class, @@ -60,6 +63,7 @@ public interface MainApplicationComponent { RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); SpedizioneComponent.Factory spedizioneComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent(); + UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent(); PickingResiComponent.Factory pickingResiComponent(); OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java new file mode 100644 index 00000000..a4aeb37c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java @@ -0,0 +1,56 @@ +package it.integry.integrywmsnative.core.expansion.view; + +import android.view.View; + +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; +import androidx.recyclerview.widget.RecyclerView; + +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.util.ArrayList; + +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; + +public abstract class ExtendedSectionedRecyclerView + extends SectionedRecyclerViewAdapter { + + protected ArrayList mDataset = new ArrayList<>(); + private View mEmptyView; + + public ExtendedSectionedRecyclerView(ObservableArrayList myDataset) { + mDataset.addAll(myDataset); + + myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @Override + public void onChanged(ObservableList sender) { + mDataset.clear(); + mDataset.addAll(sender); + notifyDataSetChanged(); + notifyDataChanged(); + checkIfEmpty(); + } + }); + + checkIfEmpty(); + } + + public ExtendedSectionedRecyclerView setEmptyView(View emptyView) { + this.mEmptyView = emptyView; + this.checkIfEmpty(); + return this; + } + + @Override + public int getItemSize() { + return this.mDataset.size(); + } + + private void checkIfEmpty() { + if (mEmptyView != null) { + final boolean emptyViewVisible = getItemSize() == 0; + mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index d529e95f..7a602ae4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -4,6 +4,9 @@ import android.app.Dialog; import android.content.Context; import android.text.SpannableString; +import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; + import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.orhanobut.logger.Logger; @@ -43,9 +46,17 @@ public class UtilityExceptions { if(ex.getCause() != null) errorMessage += "
" + ex.getCause().getMessage(); } - if(UtilityContext.getMainActivity() != null) { + FragmentManager fm = null; + + if(context != null && context instanceof FragmentActivity) { + fm = ((FragmentActivity) context).getSupportFragmentManager(); + } else if(UtilityContext.getMainActivity() != null) { + fm = UtilityContext.getMainActivity().getSupportFragmentManager(); + } + + if(fm != null) { DialogSimpleMessageView.makeErrorDialog(new SpannableString(errorMessage), null, null) - .show(UtilityContext.getMainActivity().getSupportFragmentManager(), "tag"); + .show(fm, "tag"); } if(!BuildConfig.DEBUG) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java index 21b1f0c0..cbbeea5b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java @@ -68,11 +68,11 @@ public class UtilityString { } public static Spanned formatHtmlString(String format, String... params){ - return Html.fromHtml(String.format(format,params)); + return Html.fromHtml(String.format(format, (Object[]) params)); } public static Spanned formatHtmlStringFromResId(@StringRes int stringId, String... params){ - return Html.fromHtml(String.format(UtilityResources.getString(stringId),params)); + return Html.fromHtml(String.format(UtilityResources.getString(stringId), (Object[]) params)); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 7dd3b647..29a0307f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -7,8 +7,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; @@ -132,8 +130,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); + public void onStart() { + super.onStart(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java index 8e2ec39d..ac86b7d6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java @@ -18,6 +18,7 @@ import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneExceptio import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoOrderFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; @@ -282,10 +283,7 @@ public class OrdiniUscitaElencoViewModel { if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts); } - public interface Listener { - void onLoadingStarted(); - - void onLoadingEnded(); + public interface Listener extends ILoadingListener { void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java new file mode 100644 index 00000000..5b62e34f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; + +import dagger.Subcomponent; + +@Subcomponent +public interface UltimeConsegneClienteComponent { + + @Subcomponent.Factory + interface Factory{ + UltimeConsegneClienteComponent create(); + } + + void inject(UltimeConsegneClienteFragment ultimeConsegneClienteFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java index 084b8c01..3e209187 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java @@ -7,38 +7,62 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel; +import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; -public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { +public class UltimeConsegneClienteFragment extends BaseFragment implements UltimeConsegneClienteViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment { private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; - private UltimeConsegneClienteViewModel mViewModel; + private int barcodeScannerIstanceID = -1; + + private final ObservableArrayList mDocumentiMutableData = new ObservableArrayList<>(); + + @Inject + UltimeConsegneClienteViewModel mViewModel; + + private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel; + + private FragmentMainUltimeConsegneClienteBinding mBindings; public UltimeConsegneClienteFragment() { // Required empty public constructor } public static UltimeConsegneClienteFragment newInstance() { - UltimeConsegneClienteFragment fragment = new UltimeConsegneClienteFragment(); - Bundle args = new Bundle(); - - fragment.setArguments(args); - return fragment; + return new UltimeConsegneClienteFragment(); } @@ -46,21 +70,158 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false); + mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false); - mViewModel = new UltimeConsegneClienteViewModel(getActivity(), mBinding); + MainApplication.appComponent + .ultimeConsegneClienteComponent() + .create() + .inject(this); - mBinding.setViewmodel(mViewModel); + mViewModel.setListener(this); - mToolbar.setRecyclerView(mBinding.recyclerView); + mBindings.setLifecycleOwner(this); + mBindings.setView(this); + mBindings.setViewmodel(mViewModel); + + + this.initRecyclerView(); +// this.initBarcodeReader(); // Inflate the layout for this fragment - return mBinding.getRoot(); + return mBindings.getRoot(); } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep); + + this.mBindings.mainFab.hide(); + this.mBindings.mainFab.setOnClickListener(v -> { + dispatchConsegne(); + }); + + this.mViewModel.getDocuments().observe(this, this::refreshList); + + openFilterDialog(); + } + + + public void openFilterDialog() { + this.mViewModel.loadCodAnagClienti(gtbAnags -> { + DialogUltimeConsegneFiltroAvanzato.make(getActivity(), gtbAnags, mAppliedFilterViewModel, (filter) -> { + mAppliedFilterViewModel = filter; + refreshItems(); + }).show(); + }); + } + + + private void initRecyclerView() { + UltimeConsegneMainListAdapter mAdapter = + new UltimeConsegneMainListAdapter(getActivity(), mDocumentiMutableData); + mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged); + mAdapter.setEmptyView(mBindings.emptyView); + + mBindings.recyclerView.setHasFixedSize(true); + mBindings.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + mBindings.recyclerView.setAdapter(mAdapter); +// mBindings.fastscroll.setRecyclerView(mBindings.recyclerView); + + + if(mToolbar != null) + mToolbar.setRecyclerView(mBindings.recyclerView); + + } + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); + + BarcodeManager.enable(); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.mViewModel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + }); + }; + + private void refreshList(List documentList) { + this.mDocumentiMutableData.clear(); + this.mDocumentiMutableData.addAll(sort(documentList)); + } + + private void refreshItems() { + this.openProgress(); + + String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; + String currentCodAnagFilter = null; + + Optional singleGtbAnag = Stream.of(this.mViewModel.getGtbAnagClienti().getValue()) + .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter)) + .findSingle(); + + if (singleGtbAnag.isPresent()) { + currentCodAnagFilter = singleGtbAnag.get().getCodAnag(); + } + + this.mViewModel.loadConsegneClienti(currentCodAnagFilter, + null, + -1, + 548 + ); + + } + + private List sort(List dataset) { + List sortedDataset = Stream.of(dataset) + .sortBy(DocumentoResoDTO::getRagSoc) + .toList(); + + return sortedDataset; + } + + + private void onSingleSelectionChanged(DocumentoResoDTO dto) { + List selectedOrders = getSelectedItems(); + + if (dto.isSelected()) { + Stream.of(selectedOrders) + .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc())) + .forEach(x -> x.setSelected(false)); + } + + if (selectedOrders != null && selectedOrders.size() > 0) { + mBindings.mainFab.show(); + } else { + mBindings.mainFab.hide(); + } + } + + + private List getSelectedItems() { + return Stream.of(this.mDocumentiMutableData) + .filter(DocumentoResoDTO::isSelected) + .toList(); + } + + + private void dispatchConsegne() { + List selectedConsegne = getSelectedItems(); + + PickingResiActivity.startActivity(getActivity(), getActivity().getText(R.string.ultime_consegne_cliente_title).toString(), selectedConsegne, +1); + } + + @Override public void onDestroy() { - for(Runnable onPreDestroy : mOnPreDestroyList) { + for (Runnable onPreDestroy : mOnPreDestroyList) { onPreDestroy.run(); } super.onDestroy(); @@ -78,11 +239,30 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr @Override public void onFilterClick() { - mViewModel.openFilterDialog(); + openFilterDialog(); } @Override public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + + @Override + public void onLoadingStarted() { + BarcodeManager.disable(); + this.openProgress(); + } + + @Override + public void onLoadingEnded() { + this.closeProgress(); + BarcodeManager.enable(); + } + + @Override + public void onError(Exception ex) { + this.closeProgress(); + UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + BarcodeManager.enable(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java new file mode 100644 index 00000000..2af8378d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java @@ -0,0 +1,29 @@ +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; + +@Module(subcomponents = UltimeConsegneClienteComponent.class) +public class UltimeConsegneClienteModule { + + @Singleton + @Provides + UltimeConsegneClienteRESTConsumer providesUltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + return new UltimeConsegneClienteRESTConsumer(systemRESTConsumer); + } + + @Provides + UltimeConsegneClienteViewModel providesUltimeConsegneClienteViewModel( + UltimeConsegneClienteRESTConsumer ultimeConsegneClienteRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + return new UltimeConsegneClienteViewModel(ultimeConsegneClienteRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java new file mode 100644 index 00000000..95b8e331 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java @@ -0,0 +1,193 @@ +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.NoLUFoundException; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; + +public class UltimeConsegneClienteViewModel { + + + private final MutableLiveData> mGtbAnagClienti = new MutableLiveData<>(); + private final MutableLiveData> mDocuments = new MutableLiveData<>(); + + private final UltimeConsegneClienteRESTConsumer mUltimeConsegneClienteRESTConsumer; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + + private Listener mListener; + + private String mCodMdep; + + @Inject + public UltimeConsegneClienteViewModel( + UltimeConsegneClienteRESTConsumer ultimeConsegneClienteRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + this.mUltimeConsegneClienteRESTConsumer = ultimeConsegneClienteRESTConsumer; + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + } + + + public void init(String codMdep) { + this.mCodMdep = codMdep; + } + + public void loadCodAnagClienti(RunnableArgs> onComplete) { + this.sendOnLoadingStarted(); + + this.mUltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> { + mGtbAnagClienti.postValue(gtbAnags); + this.sendOnLoadingEnded(); + + onComplete.run(gtbAnags); + }, this::sendError); + } + + + public void loadConsegneClienti(String codAnag, String codMart, int limitDocsForCli, int limitDays) { + this.sendOnLoadingStarted(); + + this.mUltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays, documentList -> { + this.mDocuments.postValue(documentList); + this.sendOnLoadingEnded(); + }, this::sendError); + } + + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + this.sendOnLoadingStarted(); + + RunnableArgs> onBarcodeScanComplete = orderList -> { + onComplete.run(); + this.sendOnLoadingEnded(); + }; + + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete); + } else { + onComplete.run(); + } + } + + + private void executeEtichettaLU(String SSCC, RunnableArgs> onComplete) { + this.mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + + if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { + +// if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) { +// //GET BY COMMESSA COLLO +// this.mOrdiniUscitaElencoRESTConsumer.getOrdiniFromCommessaCollo(mCurrentCodMdep, mtbColt, orderList -> { +// +// if(orderList != null && orderList.size() > 0) { +// List numOrds = Stream.of(orderList) +// .map(DtbOrdt::getNumOrd) +// .toList(); +// +// List filteredOrders = Stream.of(mOrderList.getValue()) +// .filter(x -> numOrds.contains(x.getNumOrd())).toList(); +// +// onComplete.run(filteredOrders); +// } else { +// this.sendError(new NoOrderFoundException()); +// } +// +// }, this::sendError); +// +// } else { +// this.sendError(new InvalidLUGestioneException(GestioneEnum.VENDITA)); +// } +// + } else { + this.sendError(new NoLUFoundException()); + } + + }, this::sendError); + } + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, RunnableArgs> onComplete) { + this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + 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, onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + this.sendError(new NoLUFoundException()); + } + }, this::sendError); + } + + + public MutableLiveData> getGtbAnagClienti() { + return mGtbAnagClienti; + } + + public MutableLiveData> getDocuments() { + return mDocuments; + } + + public UltimeConsegneClienteViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + +// private void sendOnOrderFiltered(List filteredOrders) { +// if (this.mListener != null) mListener.onOrderFiltered(filteredOrders); +// } +// +// private void sendOnOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts) { +// if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts); +// } + + public interface Listener extends ILoadingListener { + void onError(Exception ex); + +// void onOrderFiltered(List filteredOrders); +// +// void onOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java similarity index 71% rename from app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java index 8ea28c19..86095e3f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java @@ -1,44 +1,34 @@ -package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel; +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.RecyclerView; -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - import java.util.ArrayList; import java.util.Calendar; -import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListHeaderBinding; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListSingleItemBinding; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; -public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { +public class UltimeConsegneMainListAdapter extends ExtendedSectionedRecyclerView { private Context mContext; - private List mDataset; private ArrayList mSectionTitleItems; private RunnableArgs mOnSelectionChanged; - @Override - public String getSectionTitle(int position) { - return mSectionTitleItems.get(position); - } static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -65,12 +55,9 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter< - public UltimeConsegneMainListAdapter(Context context, ArrayList dataset) { - super(); + public UltimeConsegneMainListAdapter(Context context, ObservableArrayList mutableDataSet) { + super(mutableDataSet); this.mContext = context; - this.mDataset = new ArrayList<>(); - - updateItems(sort(dataset)); } @@ -146,45 +133,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter< return false; } - @Override - public int getItemSize() { - return this.mDataset.size(); - } - - - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(sort(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List sort(List dataset) { - this.mSectionTitleItems = new ArrayList<>(); - - List sortedDataset = Stream.of(dataset) - .sortBy(DocumentoResoDTO::getRagSoc) - .toList(); - - - Stream.of(sortedDataset) - .map(DocumentoResoDTO::getRagSoc) - .distinct() - .forEach(x -> { - this.mSectionTitleItems.add(String.valueOf(x.charAt(0))); - - long count = Stream.of(dataset) - .filter(y -> y.getRagSoc().equalsIgnoreCase(x)) - .count(); - - - for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0))); - }); - - return sortedDataset; - } public void setOnSelectionChanged(RunnableArgs mSelectionChanged) { this.mOnSelectionChanged = mSelectionChanged; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java index 9a17b389..2a59a397 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.model.GtbAnag; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; @@ -20,65 +22,61 @@ import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +@Singleton public class UltimeConsegneClienteRESTConsumer { - public static void getAvailableCodAnagClienti(RunnableArgs> onComplete, RunnableArgs onFailed) { + private final SystemRESTConsumer systemRESTConsumer; + + public UltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + this.systemRESTConsumer = systemRESTConsumer; + } + + public void getAvailableCodAnagClienti(RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " + "FROM gtb_anag " + "INNER JOIN vtb_clie ON vtb_clie.cod_anag = gtb_anag.cod_anag " + "WHERE flag_stato = 'A'"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); }); } - public static void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT consegne.*, " + " rag_soc," + " dtb_doct.gestione " + "FROM WMS_GetUltimeConsegneClienti(" + - UtilityDB.valueToString(limitConsegnePerCli) + ", " + - UtilityDB.valueToString(codAnag) + ", " + - UtilityDB.valueToString(codMart) + ", " + - UtilityDB.valueToString(codMdep) + ", " + - UtilityDB.valueToString(limitDays) + ") consegne " + + UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " + + UtilityDB.valueToString(codAnag) + ", " + + UtilityDB.valueToString(codMart) + ", " + + UtilityDB.valueToString(codMdep) + ", " + + UtilityDB.valueToString(limitDays) + ") consegne " + "INNER JOIN dtb_doct ON consegne.num_doc = dtb_doct.num_doc AND consegne.data_doc = dtb_doct.data_doc AND consegne.cod_anag = dtb_doct.cod_anag AND consegne.cod_dtip = dtb_doct.cod_dtip AND consegne.ser_doc = dtb_doct.ser_doc " + "LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " + "ORDER BY rag_soc, " + " counter_consegna "; - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); }); } - public static void loadDocRowFromConsegna(List consegne, RunnableArgs> onComplete, RunnableArgs onFailed) { List> filterCond = new ArrayList<>(); - for(int i = 0; i < consegne.size(); i++) { + for (int i = 0; i < consegne.size(); i++) { HashMap filter = new HashMap<>(); filter.put("dtb_docr.data_doc", consegne.get(i).getDataDocD()); @@ -172,17 +170,18 @@ public class UltimeConsegneClienteRESTConsumer { " (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " + " dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" + " ( " + - UtilityQuery.concatFieldListInWhereCond(filterCond) + + UtilityQuery.concatFieldListInWhereCond(filterCond) + " ) " + "ORDER BY cod_mart"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList values) { - if(values != null && values.size() > 0){ + if (values != null && values.size() > 0) { List codMarts = Stream.of(values) .map(DtbDocr::getCodMart) .withoutNulls() @@ -191,7 +190,7 @@ public class UltimeConsegneClienteRESTConsumer { ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> { - if(arts != null && arts.size() > 0) { + if (arts != null && arts.size() > 0) { for (DtbDocr value : values) { MtbAart foundMtbAart = null; @@ -199,7 +198,7 @@ public class UltimeConsegneClienteRESTConsumer { List mtbAartStream = Stream.of(arts) .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); - if(mtbAartStream != null && mtbAartStream.size() > 0){ + if (mtbAartStream != null && mtbAartStream.size() > 0) { foundMtbAart = mtbAartStream.get(0); } @@ -207,19 +206,19 @@ public class UltimeConsegneClienteRESTConsumer { } - if(onComplete != null) onComplete.run(values); + if (onComplete != null) onComplete.run(values); } }, onFailed); } else { - if(onComplete != null) onComplete.run(values); + if (onComplete != null) onComplete.run(values); } } @Override public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java deleted file mode 100644 index c264dd79..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java +++ /dev/null @@ -1,146 +0,0 @@ -package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel; - -import android.app.Dialog; -import android.content.Context; -import android.view.View; - -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.annimon.stream.Optional; -import com.annimon.stream.Stream; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.model.GtbAnag; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; -import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; - -public class UltimeConsegneClienteViewModel { - - private Context mContext; - private FragmentMainUltimeConsegneClienteBinding mBinding; - - private UltimeConsegneMainListAdapter mAdapter; - private List mItems; - private List mRenderedItems = new ArrayList<>(); - - private List mAvailableGtbAnags = null; - - private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel; - - public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) { - this.mContext = context; - this.mBinding = binding; - - this.mBinding.mainFab.hide(); - this.mBinding.mainFab.setOnClickListener(v -> { - dispatchConsegne(); - }); - - openFilterDialog(); - } - - public void openFilterDialog() { - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - UltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> { - mAvailableGtbAnags = gtbAnags; - progressDialog.dismiss(); - - DialogUltimeConsegneFiltroAvanzato.make(mContext, gtbAnags, mAppliedFilterViewModel, (filter) -> { - mAppliedFilterViewModel = filter; - refreshItems(); - }).show(); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - }); - } - - private void initDataAdapter(ArrayList dataset) { - mAdapter = new UltimeConsegneMainListAdapter(mContext, dataset); - mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged); - - mBinding.recyclerView.setHasFixedSize(true); - mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); - mBinding.recyclerView.setAdapter(mAdapter); - mBinding.fastscroll.setRecyclerView(mBinding.recyclerView); - - } - - private void refreshItems(){ - - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; - String currentCodAnagFilter = null; - - Optional singleGtbAnag = Stream.of(mAvailableGtbAnags) - .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter)) - .findSingle(); - - if(singleGtbAnag.isPresent()) { - currentCodAnagFilter = singleGtbAnag.get().getCodAnag(); - } - - UltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti( - SettingsManager.i().getUserSession().getDepo().getCodMdep(), - currentCodAnagFilter, - null, - null, - 548, - consegne -> { - this.mItems = consegne; - - this.initDataAdapter(consegne); - mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE); - - mRenderedItems.clear(); - if(this.mItems != null) mRenderedItems.addAll(this.mItems); - mAdapter.updateItems(mRenderedItems); - - progressDialog.dismiss(); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - }); - } - - private void onSingleSelectionChanged(DocumentoResoDTO dto) { - List selectedOrders = getSelectedItems(); - - if(dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc())) - .forEach(x -> x.setSelected(false)); - } - - if(selectedOrders != null && selectedOrders.size() > 0) { - mBinding.mainFab.show(); - } - else { - mBinding.mainFab.hide(); - } - } - - private List getSelectedItems() { - return Stream.of(this.mItems) - .filter(DocumentoResoDTO::isSelected) - .toList(); - } - - - private void dispatchConsegne() { - List selectedConsegne = getSelectedItems(); - - PickingResiActivity.startActivity(mContext, mContext.getText(R.string.ultime_consegne_cliente_title).toString(), selectedConsegne, +1); - } - - -} diff --git a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml index 12a55f0e..b5a1066e 100644 --- a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml +++ b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml @@ -6,7 +6,11 @@ + type="it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteViewModel" /> + + @@ -29,12 +33,12 @@ android:scrollbars="none" android:paddingEnd="4dp"/> - + + + + + + Date: Thu, 11 Mar 2021 15:45:42 +0100 Subject: [PATCH 4/9] Refactoring ultimi arrivi fornitori --- .../MainApplicationComponent.java | 4 + .../UltimeConsegneClienteViewModel.java | 12 -- .../UltimeConsegneMainListAdapter.java | 3 - .../UltimiArriviFornitoreComponent.java | 15 ++ .../UltimiArriviFornitoreFragment.java | 189 ++++++++++++++++-- .../UltimiArriviFornitoreModule.java | 30 +++ .../UltimiArriviFornitoreListAdapter.java | 54 +---- .../core/UltimiArriviFornitoreViewModel.java | 185 +++++++---------- .../UltimiArriviFornitoreRESTConsumer.java | 59 +++--- .../fragment_ultimi_arrivi_fornitore.xml | 16 +- 10 files changed, 335 insertions(+), 232 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreModule.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index b1bc32eb..a502c910 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -29,6 +29,8 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbiso import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreComponent; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent; @@ -47,6 +49,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule; SpedizioneModule.class, AccettazionePickingModule.class, UltimeConsegneClienteModule.class, + UltimiArriviFornitoreModule.class, PickingResiModule.class, OrdiniUscitaElencoModule.class, DialogInputQuantityV2Module.class, @@ -64,6 +67,7 @@ public interface MainApplicationComponent { SpedizioneComponent.Factory spedizioneComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent(); UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent(); + UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent(); PickingResiComponent.Factory pickingResiComponent(); OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java index 95b8e331..7bb95f7d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java @@ -174,20 +174,8 @@ public class UltimeConsegneClienteViewModel { if (this.mListener != null) mListener.onError(ex); } -// private void sendOnOrderFiltered(List filteredOrders) { -// if (this.mListener != null) mListener.onOrderFiltered(filteredOrders); -// } -// -// private void sendOnOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts) { -// if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts); -// } - public interface Listener extends ILoadingListener { void onError(Exception ex); - -// void onOrderFiltered(List filteredOrders); -// -// void onOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java index 86095e3f..f3f68b3e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java @@ -9,7 +9,6 @@ import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.RecyclerView; -import java.util.ArrayList; import java.util.Calendar; import it.integry.integrywmsnative.R; @@ -25,8 +24,6 @@ import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneCliente public class UltimeConsegneMainListAdapter extends ExtendedSectionedRecyclerView { private Context mContext; - private ArrayList mSectionTitleItems; - private RunnableArgs mOnSelectionChanged; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreComponent.java new file mode 100644 index 00000000..e0211f75 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore; + +import dagger.Subcomponent; + +@Subcomponent +public interface UltimiArriviFornitoreComponent { + + @Subcomponent.Factory + interface Factory{ + UltimiArriviFornitoreComponent create(); + } + + void inject(UltimiArriviFornitoreFragment ultimiArriviFornitoreFragment); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java index a5716dd9..88ee83cd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java @@ -7,41 +7,64 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding; +import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; /** * A simple {@link Fragment} subclass. */ -public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { +public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, IFilterableFragment, UltimiArriviFornitoreViewModel.Listener { private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; - private UltimiArriviFornitoreViewModel mViewModel; + private int barcodeScannerIstanceID = -1; + + private final ObservableArrayList mDocumentiMutableData = new ObservableArrayList<>(); + + @Inject + UltimiArriviFornitoreViewModel mViewModel; + + private FragmentUltimiArriviFornitoreBinding mBindings; + private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel; public UltimiArriviFornitoreFragment() { // Required empty public constructor } public static UltimiArriviFornitoreFragment newInstance() { - UltimiArriviFornitoreFragment fragment = new UltimiArriviFornitoreFragment(); - Bundle args = new Bundle(); - - fragment.setArguments(args); - return fragment; + return new UltimiArriviFornitoreFragment(); } @@ -49,21 +72,137 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment - FragmentUltimiArriviFornitoreBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false); + mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false); - mViewModel = new UltimiArriviFornitoreViewModel(getActivity(), mBinding); + MainApplication.appComponent + .ultimiArriviFornitoreComponent() + .create() + .inject(this); - mBinding.setViewmodel(mViewModel); + mViewModel.setListener(this); - mToolbar.setRecyclerView(mBinding.recyclerView); + mBindings.setLifecycleOwner(this); + mBindings.setView(this); + mBindings.setViewmodel(mViewModel); + + this.initRecyclerView(); // Inflate the layout for this fragment - return mBinding.getRoot(); + return mBindings.getRoot(); } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep); + + this.mBindings.mainFab.hide(); + this.mBindings.mainFab.setOnClickListener(v -> { + dispatchConsegne(); + }); + + this.mViewModel.getDocuments().observe(this, this::refreshList); + + openFilterDialog(); + } + + + public void openFilterDialog() { + this.mViewModel.loadCodAnagFornitori(gtbAnags -> { + DialogUltimiArriviFornitoreFiltroAvanzato.make(getActivity(), gtbAnags, mAppliedFilterViewModel, (filter) -> { + mAppliedFilterViewModel = filter; + refreshItems(); + }).show(); + }); + } + + + private void initRecyclerView() { + UltimiArriviFornitoreListAdapter mAdapter = + new UltimiArriviFornitoreListAdapter(getActivity(), mDocumentiMutableData); + mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged); + mAdapter.setEmptyView(mBindings.emptyView); + + mBindings.recyclerView.setHasFixedSize(true); + mBindings.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + mBindings.recyclerView.setAdapter(mAdapter); +// mBindings.fastscroll.setRecyclerView(mBindings.recyclerView); + + + if (mToolbar != null) + mToolbar.setRecyclerView(mBindings.recyclerView); + + } + + private void refreshList(List documentList) { + this.mDocumentiMutableData.clear(); + this.mDocumentiMutableData.addAll(sort(documentList)); + } + + private void refreshItems() { + this.openProgress(); + + String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; + String currentCodAnagFilter = null; + + Optional singleGtbAnag = Stream.of(mViewModel.getGtbAnagClienti().getValue()) + .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter)) + .findSingle(); + + if (singleGtbAnag.isPresent()) { + currentCodAnagFilter = singleGtbAnag.get().getCodAnag(); + } + + this.mViewModel.loadArriviFornitori(currentCodAnagFilter, + null, + -1, + 365); + } + + private List sort(List dataset) { + List items = Stream.of(dataset) + .sortBy(DocumentoResoDTO::getRagSoc) + .toList(); + return items; + + } + + private void onSingleSelectionChanged(DocumentoResoDTO dto) { + List selectedOrders = getSelectedItems(); + + if(dto.isSelected()) { + Stream.of(selectedOrders) + .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc())) + .forEach(x -> x.setSelected(false)); + } + + if(selectedOrders != null && selectedOrders.size() > 0) { + mBindings.mainFab.show(); + } + else { + mBindings.mainFab.hide(); + } + } + + + private List getSelectedItems() { + return Stream.of(this.mDocumentiMutableData) + .filter(DocumentoResoDTO::isSelected) + .toList(); + } + + private void dispatchConsegne() { + List selectedConsegne = getSelectedItems(); + + PickingResiActivity.startActivity(getActivity(), getActivity().getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1); + } + + @Override public void onDestroy() { - for(Runnable onPreDestroy : mOnPreDestroyList) { + for (Runnable onPreDestroy : mOnPreDestroyList) { onPreDestroy.run(); } super.onDestroy(); @@ -80,12 +219,9 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr } - - - @Override public void onFilterClick() { - mViewModel.openFilterDialog(); + openFilterDialog(); } @@ -93,4 +229,23 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + + @Override + public void onLoadingStarted() { + BarcodeManager.disable(); + this.openProgress(); + } + + @Override + public void onLoadingEnded() { + this.closeProgress(); + BarcodeManager.enable(); + } + + @Override + public void onError(Exception ex) { + this.closeProgress(); + UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + BarcodeManager.enable(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreModule.java new file mode 100644 index 00000000..fcb4e8fa --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreModule.java @@ -0,0 +1,30 @@ +package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer; + +@Module(subcomponents = UltimiArriviFornitoreComponent.class) +public class UltimiArriviFornitoreModule { + + @Singleton + @Provides + UltimiArriviFornitoreRESTConsumer providesUltimiArriviFornitoreRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + return new UltimiArriviFornitoreRESTConsumer(systemRESTConsumer); + } + + @Provides + UltimiArriviFornitoreViewModel providesUltimiArriviFornitoreViewModel( + UltimiArriviFornitoreRESTConsumer ultimiArriviFornitoreRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + return new UltimiArriviFornitoreViewModel(ultimiArriviFornitoreRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java index a34152fe..8249b12e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java @@ -6,38 +6,29 @@ import android.view.View; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.RecyclerView; -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.ArrayList; import java.util.Calendar; import java.util.List; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListHeaderBinding; import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListSingleItemBinding; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; -public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { +public class UltimiArriviFornitoreListAdapter extends ExtendedSectionedRecyclerView { private Context mContext; - private List mDataset; - private ArrayList mSectionTitleItems; - private RunnableArgs mOnSelectionChanged; - @Override - public String getSectionTitle(int position) { - return mSectionTitleItems.get(position); - } - static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -64,13 +55,9 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt - public UltimiArriviFornitoreListAdapter(Context context, ArrayList dataset) { - super(); + public UltimiArriviFornitoreListAdapter(Context context, ObservableArrayList mutableDataSet) { + super(mutableDataSet); this.mContext = context; - this.mDataset = new ArrayList<>(); - this.mSectionTitleItems = new ArrayList<>(); - - mDataset.addAll(sort(dataset)); } @@ -152,7 +139,7 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt public void updateItems(List updatedDataset) { mDataset.clear(); - mDataset.addAll(sort(updatedDataset)); + mDataset.addAll(updatedDataset); notifyDataSetChanged(); notifyDataChanged(); } @@ -163,28 +150,5 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt } - private List sort(List dataset) { - List items = Stream.of(dataset) - .sortBy(DocumentoResoDTO::getRagSoc) - .toList(); - - - Stream.of(items) - .map(DocumentoResoDTO::getRagSoc) - .distinct() - .forEach(x -> { - this.mSectionTitleItems.add(String.valueOf(x.charAt(0))); - - long count = Stream.of(dataset) - .filter(y -> y.getRagSoc().equalsIgnoreCase(x)) - .count(); - - - for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0))); - }); - return items; - - } - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java index ad4787de..3217e6ff 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java @@ -1,154 +1,105 @@ package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core; -import android.app.Dialog; -import android.content.Context; -import android.view.View; +import androidx.lifecycle.MutableLiveData; -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.annimon.stream.Optional; -import com.annimon.stream.Stream; - -import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.R; +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding; -import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; -import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer; public class UltimiArriviFornitoreViewModel { - private Context mContext; - private FragmentUltimiArriviFornitoreBinding mBinding; + private final MutableLiveData> mGtbAnagClienti = new MutableLiveData<>(); + private final MutableLiveData> mDocuments = new MutableLiveData<>(); - private List mItems; - private List mRenderedItems = new ArrayList<>(); + private final UltimiArriviFornitoreRESTConsumer mUltimiArriviFornitoreRESTConsumer; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; - private List mAvailableGtbAnags = null; + private Listener mListener; - private UltimiArriviFornitoreListAdapter mAdapter; + private String mCodMdep; - private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel; + @Inject + public UltimiArriviFornitoreViewModel( + UltimiArriviFornitoreRESTConsumer ultimiArriviFornitoreRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + this.mUltimiArriviFornitoreRESTConsumer = ultimiArriviFornitoreRESTConsumer; + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + } - public UltimiArriviFornitoreViewModel(Context context, FragmentUltimiArriviFornitoreBinding binding) { - this.mContext = context; - this.mBinding = binding; - this.mBinding.mainFab.hide(); - this.mBinding.mainFab.setOnClickListener(v -> { - dispatchConsegne(); - }); + public void init(String codMdep) { + this.mCodMdep = codMdep; + } - openFilterDialog(); + + public void loadCodAnagFornitori(RunnableArgs> onComplete) { + this.sendOnLoadingStarted(); + + this.mUltimiArriviFornitoreRESTConsumer.getAvailableCodAnagFornitori(gtbAnags -> { + mGtbAnagClienti.postValue(gtbAnags); + this.sendOnLoadingEnded(); + + onComplete.run(gtbAnags); + }, this::sendError); + } + + public void loadArriviFornitori(String codAnag, String codMart, int limitDocsForCli, int limitDays) { + this.sendOnLoadingStarted(); + + this.mUltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays, documentList -> { + this.mDocuments.postValue(documentList); + this.sendOnLoadingEnded(); + }, this::sendError); } - private void initDataAdapter(ArrayList dataset) { - mAdapter = new UltimiArriviFornitoreListAdapter(mContext, dataset); - mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged); - mBinding.recyclerView.setHasFixedSize(true); - mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); - mBinding.recyclerView.setAdapter(mAdapter); - mBinding.fastscroll.setRecyclerView(mBinding.recyclerView); + + + + + + + + public MutableLiveData> getGtbAnagClienti() { + return mGtbAnagClienti; } - - public void openFilterDialog() { - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - UltimiArriviFornitoreRESTConsumer.getAvailableCodAnagFornitori(gtbAnags -> { - mAvailableGtbAnags = gtbAnags; - progressDialog.dismiss(); - - DialogUltimiArriviFornitoreFiltroAvanzato.make(mContext, mAvailableGtbAnags, mAppliedFilterViewModel, (filter) -> { - mAppliedFilterViewModel = filter; - refreshItems(); - }).show(); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - }); + public MutableLiveData> getDocuments() { + return mDocuments; } - - private void dispatchConsegne() { - List selectedConsegne = getSelectedItems(); - - PickingResiActivity.startActivity(mContext, mContext.getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1); + public UltimiArriviFornitoreViewModel setListener(UltimiArriviFornitoreViewModel.Listener listener) { + this.mListener = listener; + return this; } - private List getSelectedItems() { - return Stream.of(this.mItems) - .filter(DocumentoResoDTO::isSelected) - .toList(); + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); } - - private void refreshItems(){ - - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; - String currentCodAnagFilter = null; - - Optional singleGtbAnag = Stream.of(mAvailableGtbAnags) - .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter)) - .findSingle(); - - if(singleGtbAnag.isPresent()) { - currentCodAnagFilter = singleGtbAnag.get().getCodAnag(); - } - - - UltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori( - SettingsManager.i().getUserSession().getDepo().getCodMdep(), - currentCodAnagFilter, - null, - null, - 365, - consegne -> { - this.mItems = consegne; - - this.initDataAdapter(consegne); - - mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE); - - mRenderedItems.clear(); - if(this.mItems != null) mRenderedItems.addAll(this.mItems); - mAdapter.updateItems(mRenderedItems); - - progressDialog.dismiss(); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - }); - - + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); } + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } - private void onSingleSelectionChanged(DocumentoResoDTO dto) { - List selectedOrders = getSelectedItems(); - - if(dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc())) - .forEach(x -> x.setSelected(false)); - } - - if(selectedOrders != null && selectedOrders.size() > 0) { - mBinding.mainFab.show(); - } - else { - mBinding.mainFab.hide(); - } + public interface Listener extends ILoadingListener { + void onError(Exception ex); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java index 89bbaeeb..8a2d3663 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java @@ -6,42 +6,43 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.core.model.GtbAnag; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDB; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import javax.inject.Singleton; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.utility.UtilityDB; + +@Singleton public class UltimiArriviFornitoreRESTConsumer { - public static void getAvailableCodAnagFornitori(RunnableArgs> onComplete, RunnableArgs onFailed) { + private final SystemRESTConsumer systemRESTConsumer; + + public UltimiArriviFornitoreRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + this.systemRESTConsumer = systemRESTConsumer; + } + + public void getAvailableCodAnagFornitori(RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " + "FROM gtb_anag " + "INNER JOIN atb_forn ON atb_forn.cod_anag = gtb_anag.cod_anag " + "WHERE flag_stato = 'A'"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + this.systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); }); } - public static void getUltimeConsegneFornitori(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { - - + public void getUltimeConsegneFornitori(String codMdep, String codAnag, String codMart, int limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT consegne.*, " + " rag_soc " + "FROM WMS_GetUltimeConsegneFornitori(" + - UtilityDB.valueToString(limitConsegnePerCli) + ", " + + UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " + UtilityDB.valueToString(codAnag) + ", " + UtilityDB.valueToString(codMart) + ", " + UtilityDB.valueToString(codMdep) + ", " + @@ -52,16 +53,10 @@ public class UltimiArriviFornitoreRESTConsumer { Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } + this.systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); }); } diff --git a/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml index a5f6d06a..b5d13b56 100644 --- a/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml +++ b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml @@ -4,6 +4,10 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + + @@ -29,12 +33,12 @@ android:scrollbars="none" android:paddingEnd="4dp"/> - + + + + + + Date: Fri, 12 Mar 2021 13:33:54 +0100 Subject: [PATCH 5/9] Implementata lettura barcode pedane in gestione resi --- .../OrdiniUscitaElencoFragment.java | 12 +- .../picking_resi/PickingResiActivity.java | 31 +- .../picking_resi/PickingResiViewModel.java | 306 ++++++++++++++++-- .../core/PickingResiListAdapter.java | 9 +- .../core/PickingResiListModel.java | 11 + .../rest/WithdrawableDtbDocr.java | 34 +- .../UltimiArriviFornitoreFragment.java | 55 +++- .../core/UltimiArriviFornitoreViewModel.java | 91 +++++- .../UltimiArriviFornitoreRESTConsumer.java | 19 +- .../main/res/layout/activity_picking_resi.xml | 58 ++++ 10 files changed, 570 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 29a0307f..52f687d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -31,7 +31,6 @@ import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; -import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; @@ -53,7 +52,7 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRo import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener { +public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener { public BindableBoolean fabVisible = new BindableBoolean(false); @@ -139,6 +138,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF @Override public void onDestroy() { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + for (Runnable onPreDestroy : mOnPreDestroyList) { onPreDestroy.run(); } @@ -257,12 +258,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF .forEach(x -> x.getSelectedObservable().set(false)); } - @Override - public void onPreDestroy(Runnable onComplete) { - BarcodeManager.removeCallback(barcodeScannerIstanceID); - onComplete.run(); - } - @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.prod_ordine_lavorazione_title_fragment).toString()); @@ -276,7 +271,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF .toList(); this.mViewModel.loadPicking(selectedOrders); - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index 8e9444a4..ecdaf0ae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -35,6 +35,7 @@ import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityResources; @@ -50,8 +51,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener { @@ -179,9 +180,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag this.mBindings.mainList.setAdapter(pickingResiListAdapter); this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this)); - pickingResiListAdapter.setOnItemClicked(clickedItem -> { + pickingResiListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> { if (!noLUPresent.get()) { - this.mViewmodel.dispatchOrdineRow(clickedItem); + this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt); } }); } @@ -190,7 +191,11 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag private List convertDataModelToListModel(List dataList) { List pickingResiListModels = new ArrayList<>(); - Stream.of(dataList) + List tmpList = Stream.of(dataList) + .filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getQtaDoc(), BigDecimal.ZERO)) + .toList(); + + Stream.of(tmpList) .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga()) .forEach(x -> { @@ -251,6 +256,10 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag }); } + public void removeListFilter() { + this.mViewmodel.resetMatchedRows(); + } + @Override public void onMtbColrEdit(MtbColr mtbColr) { this.mViewmodel.dispatchRowEdit(mtbColr); @@ -321,11 +330,23 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag this.openProgress(); onComplete.run(pickedQuantityDTO, shouldCloseLU); }, () -> { -// this.mViewmodel.resetMatchedRows(); + this.mViewmodel.resetMatchedRows(); }) .show(getSupportFragmentManager(), "tag"); } + @Override + public void onFilterApplied(String newValue) { + this.mBindings.filteredArtsInListExpandableLayout.expand(true); + this.mBindings.descriptionFilterText.setText(!UtilityString.isNullOrEmpty(newValue) ? newValue : ""); + } + + @Override + public void onFilterRemoved() { + this.mBindings.filteredArtsInListExpandableLayout.collapse(true); + this.mBindings.descriptionFilterText.setText(""); + } + @Override public void onRowSaved() { FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index 84cd3e22..4c7a3f64 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -14,7 +14,11 @@ import java.util.List; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.exception.InvalidLUException; +import it.integry.integrywmsnative.core.exception.NoArtsFoundException; +import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; @@ -25,6 +29,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -39,6 +44,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException; import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; +import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; public class PickingResiViewModel { @@ -229,23 +235,26 @@ public class PickingResiViewModel { private void postCloseOperations(MtbColt mtbColt, Runnable onComplete) { this.mColliRegistrati.add(mtbColt); - Stream.of(this.mPickingList.getValue()) - .forEach(x -> { - List withdraws = x.getWithdrawRows(); + List tmpList = getPickingList().getValue(); - for (int k = 0; k < withdraws.size(); k++) { - MtbColr withdrawRow = withdraws.get(k); - x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol())); - } + for (int i = 0; i < tmpList.size(); i++) { + WithdrawableDtbDocr x = tmpList.get(i); + List withdraws = x.getWithdrawRows(); - x.getWithdrawRows().clear(); + for (int k = 0; k < withdraws.size(); k++) { + MtbColr withdrawRow = withdraws.get(k); + x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol())); + } - if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) { - this.mPickingList.getValue().remove(x); - } - }); + x.getWithdrawRows().clear(); - this.mPickingList.postValue(this.mPickingList.getValue()); + if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) { + tmpList.remove(x); + i--; + } + } + + this.mPickingList.postValue(tmpList); onComplete.run(); } @@ -259,41 +268,232 @@ public class PickingResiViewModel { //Se il collo non esiste allora lo creo associandolo a questa etichetta anonima //invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul //dell'etichetta anonima -// this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); + this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); } else { -// this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete); + this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete); } } else { if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { //Cerco gli articoli presenti nell'ul dell'etichetta anonima -// this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete); + this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete); } else { -// this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete); + this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete); } } } - public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr) { + private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + this.createNewLU( + null, + null, + () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete)); + } + + + private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) + this.executeEtichettaEan128(barcodeScanDTO, onComplete); + + + } else onComplete.run(); + } + + + private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + + if (mtbColt == null) { + + if (!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) { + this.sendError(new NotCurrentYearLUException()); + } else { + + this.createNewLU( + UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), + CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, onComplete); + } + } else { + + this.createNewLU( + null, + null, + () -> searchArtFromUL(mtbColt, onComplete) + ); + } + + }, this::sendError); + } + + private void executeEtichettaLU(String SSCC, Runnable onComplete) { + mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + + if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { + if (mtbColt.getSegno() != -1) { + searchArtFromUL(mtbColt, onComplete); + } else this.sendError(new InvalidLUException()); + } else { + this.sendError(new NoArtsFoundException()); + } + + }, this::sendError); + } + + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + + 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, onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + onComplete.run(); + } + }, this::sendError); + } + + private void searchArtFromUL(MtbColt scannedUL, Runnable onComplete) { + + final List pickingList = mPickingList.getValue(); + final List matchPickingObject = new ArrayList<>(); + + + //Controllo se nel collo ho degli articoli che corrispondono per codice / taglia / colore / lotto + Stream.of(scannedUL.getMtbColr()) + .filter(x -> !UtilityString.isNullOrEmpty(x.getCodMart())) + .forEach(x -> { + + for (WithdrawableDtbDocr pickingObject : pickingList) { + //Da verificare se il controllo per partita deve essere sempre effettuato + if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getCodMart()) && + UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getCodTagl()) && + UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getCodCol())) { + + if (!matchPickingObject.contains(pickingObject)) { + matchPickingObject.add(pickingObject); + } + + } + } + }); + + for (WithdrawableDtbDocr matchedObject : matchPickingObject) { + MtbColt cloneMtbColt = (MtbColt) scannedUL.clone(); + ObservableArrayList cloneMtbColrs = (ObservableArrayList) cloneMtbColt.getMtbColr().clone(); + + + Stream.of(cloneMtbColt.getMtbColr()) + .filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getCodMart()) && + UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getCodTagl()) && + UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getCodCol()))) + .forEach(cloneMtbColrs::remove); + + cloneMtbColt.setMtbColr(cloneMtbColrs); + + PickDataDTO tempPickData = new PickDataDTO() + .setSourceMtbColt(cloneMtbColt); + + matchedObject.setTempPickData(tempPickData); + } + + + this.loadMatchedRows(matchPickingObject); + onComplete.run(); + } + + + private void loadMatchedRows(List matchedRows) { + if (matchedRows == null || matchedRows.size() == 0) { + this.sendError(new NoArtsFoundException()); + } else if (matchedRows.size() == 1) { + WithdrawableDtbDocr matchedItem = matchedRows.get(0); + + if (matchedItem.getWithdrawRows() != null && matchedItem.getWithdrawRows().size() > 1) { + + List pickingList = mPickingList.getValue(); + + Stream.of(pickingList) + .filter(x -> x != matchedItem) + .forEach(x -> x.setHidden(true)); + + this.sendFilterApplied(null); + this.getPickingList().postValue(pickingList); + } else { + this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt()); + } + + } else { + List pickingList = mPickingList.getValue(); + + for (int i = 0; i < pickingList.size(); i++) { + if (!matchedRows.contains(pickingList.get(i))) { + pickingList.get(i).setHidden(true); + } + } + + this.sendFilterApplied(null); + this.getPickingList().postValue(pickingList); + + } + } + + + public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr, final MtbColt refMtbColt) { BigDecimal totalQtaDoc = withdrawableDtbDocr.getQtaDoc(); BigDecimal totalNumCnfDoc = withdrawableDtbDocr.getNumCnf(); BigDecimal qtaCnfDoc = withdrawableDtbDocr.getQtaCnf(); + //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta + MtbColr mtbColrToDispatch = withdrawableDtbDocr.getTempPickData() != null && + withdrawableDtbDocr.getTempPickData().getSourceMtbColt() != null && + withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr() != null && + withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ? + withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null; + + BigDecimal totalAvailableQtaCol; + BigDecimal totalAvailableQtaCnf; + BigDecimal totalAvailableNumCnf; + + if (mtbColrToDispatch != null) { + totalAvailableQtaCol = mtbColrToDispatch.getQtaCol(); + totalAvailableQtaCnf = mtbColrToDispatch.getQtaCnf(); + totalAvailableNumCnf = mtbColrToDispatch.getNumCnf(); + } else { + totalAvailableQtaCol = totalQtaDoc; + totalAvailableQtaCnf = qtaCnfDoc; + totalAvailableNumCnf = totalNumCnfDoc; + } this.sendOnItemDispatched( withdrawableDtbDocr.getMtbAart(), - totalNumCnfDoc, - qtaCnfDoc, - totalQtaDoc, - totalQtaDoc, - totalNumCnfDoc, - qtaCnfDoc, + totalAvailableNumCnf, + totalAvailableQtaCnf, + totalAvailableQtaCol, + totalAvailableQtaCol, + totalAvailableNumCnf, + totalAvailableQtaCnf, withdrawableDtbDocr.getPartitaMag(), withdrawableDtbDocr.getDataScadPartitaMagD(), (pickedQuantityDTO, shouldCloseLU) -> { this.saveNewRow(withdrawableDtbDocr, + refMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), @@ -328,7 +528,7 @@ public class PickingResiViewModel { } - public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { this.sendOnLoadingStarted(); final MtbColr mtbColr = new MtbColr() @@ -348,6 +548,39 @@ public class PickingResiViewModel { .setDataDoc(withdrawableDtbDocr.getDataDocS()) .setIdRigaDoc(withdrawableDtbDocr.getIdRiga()); + //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta + MtbColr mtbColrToDispatch = withdrawableDtbDocr.getTempPickData() != null && + withdrawableDtbDocr.getTempPickData().getSourceMtbColt() != null && + withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr() != null && + withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ? + withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null; + + if (mtbColrToDispatch != null) { + if (UtilityString.isNullOrEmpty(mCurrentMtbColt.getCodTcol())) + mCurrentMtbColt.setCodTcol(UtilityString.empty2null(withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getCodTcol())); + + mtbColr + .setCodJcom(UtilityString.empty2null(mtbColrToDispatch.getCodJcom())) + .setSerColloRif(UtilityString.empty2null(mtbColrToDispatch.getSerCollo())) + .setNumColloRif(mtbColrToDispatch.getNumCollo()) + .setGestioneRif(UtilityString.empty2null(mtbColrToDispatch.getGestione())) + .setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS())); + + + if (mtbColrToDispatch.getPesoNettoKg() != null) { + //Proporzione + BigDecimal pesoNettoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoNettoKg()), mtbColrToDispatch.getQtaCol()); + mtbColr.setPesoNettoKg(pesoNettoKg); + } + + if (mtbColrToDispatch.getPesoLordoKg() != null) { + //Proporzione + BigDecimal pesoLordoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoLordoKg()), mtbColrToDispatch.getQtaCol()); + mtbColr.setPesoLordoKg(pesoLordoKg); + } + } + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); @@ -482,6 +715,17 @@ public class PickingResiViewModel { }); } + public void resetMatchedRows() { + for (WithdrawableDtbDocr pickingObjectDTO : this.mPickingList.getValue()) { + pickingObjectDTO + .setTempPickData(null) + .setHidden(false); + } + + this.mPickingList.postValue(this.mPickingList.getValue()); + this.sendFilterRemoved(); + } + public MutableLiveData> getPickingList() { return mPickingList; @@ -549,6 +793,14 @@ public class PickingResiViewModel { if (this.mListener != null) mListener.onRowSaved(); } + private void sendFilterApplied(String newValue) { + if (this.mListener != null) mListener.onFilterApplied(newValue); + } + + private void sendFilterRemoved() { + if (this.mListener != null) mListener.onFilterRemoved(); + } + public PickingResiViewModel setListener(Listener listener) { this.mListener = listener; @@ -572,5 +824,9 @@ public class PickingResiViewModel { Date dataScad, RunnableArgss onComplete); + void onFilterApplied(String newValue); + + void onFilterRemoved(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java index 28a198ba..30459d32 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java @@ -20,7 +20,8 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding; @@ -31,7 +32,7 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter mDataset = new ArrayList<>(); - private RunnableArgs mOnItemClicked; + private RunnableArgss mOnItemClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { PickingResiMainListItemHeaderBinding mBinding; @@ -65,7 +66,7 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + public void setOnItemClicked(RunnableArgss onItemClicked) { this.mOnItemClicked = onItemClicked; } @@ -123,7 +124,7 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter { if (this.mOnItemClicked != null) - this.mOnItemClicked.run(pickingResiListModel.getOriginalModel()); + this.mOnItemClicked.run(pickingResiListModel.getOriginalModel(), pickingResiListModel.getSourceMtbColt()); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java index d5816c64..fe12ed1e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.picking_resi.core; import java.math.BigDecimal; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; public class PickingResiListModel { @@ -19,6 +20,7 @@ public class PickingResiListModel { private boolean active; private WithdrawableDtbDocr mOriginalModel; + private MtbColt mSourceMtbColt; public String getGroupTitle() { return groupTitle; @@ -100,4 +102,13 @@ public class PickingResiListModel { this.mOriginalModel = originalModel; return this; } + + public MtbColt getSourceMtbColt() { + return mSourceMtbColt; + } + + public PickingResiListModel setSourceMtbColt(MtbColt sourceMtbColt) { + this.mSourceMtbColt = sourceMtbColt; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java index 08fabdd5..b8a79a8a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java @@ -5,13 +5,18 @@ import java.util.List; import it.integry.integrywmsnative.core.model.DtbDocr; import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.dto.PickDataDTO; public class WithdrawableDtbDocr extends DtbDocr { private String gestione; - private List withdrawRows = new ArrayList<>(); + private PickDataDTO tempPickData; + private MtbColt refMtbColt; + private boolean hidden = false; + public WithdrawableDtbDocr() { super(); } @@ -33,4 +38,31 @@ public class WithdrawableDtbDocr extends DtbDocr { this.gestione = gestione; return this; } + + public MtbColt getRefMtbColt() { + return refMtbColt; + } + + public WithdrawableDtbDocr setRefMtbColt(MtbColt refMtbColt) { + this.refMtbColt = refMtbColt; + return this; + } + + public PickDataDTO getTempPickData() { + return tempPickData; + } + + public WithdrawableDtbDocr setTempPickData(PickDataDTO tempPickData) { + this.tempPickData = tempPickData; + return this; + } + + public boolean isHidden() { + return hidden; + } + + public WithdrawableDtbDocr setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java index 88ee83cd..6b008c8f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java @@ -12,7 +12,6 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; -import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import com.annimon.stream.Optional; @@ -23,14 +22,20 @@ import java.util.List; import javax.inject.Inject; +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -40,9 +45,10 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriv import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; /** - * A simple {@link Fragment} subclass. + * A simple {@link BaseFragment} subclass. */ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, IFilterableFragment, UltimiArriviFornitoreViewModel.Listener { @@ -86,6 +92,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl mBindings.setViewmodel(mViewModel); this.initRecyclerView(); + this.initBarcodeReader(); // Inflate the layout for this fragment return mBindings.getRoot(); @@ -103,7 +110,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl dispatchConsegne(); }); - this.mViewModel.getDocuments().observe(this, this::refreshList); + this.mViewModel.getDocuments().observe(this.getViewLifecycleOwner(), this::refreshList); openFilterDialog(); } @@ -113,7 +120,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl this.mViewModel.loadCodAnagFornitori(gtbAnags -> { DialogUltimiArriviFornitoreFiltroAvanzato.make(getActivity(), gtbAnags, mAppliedFilterViewModel, (filter) -> { mAppliedFilterViewModel = filter; - refreshItems(); + filterItems(null); }).show(); }); } @@ -130,18 +137,33 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl mBindings.recyclerView.setAdapter(mAdapter); // mBindings.fastscroll.setRecyclerView(mBindings.recyclerView); - if (mToolbar != null) mToolbar.setRecyclerView(mBindings.recyclerView); } + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); + + BarcodeManager.enable(); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.mViewModel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + }); + }; + private void refreshList(List documentList) { this.mDocumentiMutableData.clear(); this.mDocumentiMutableData.addAll(sort(documentList)); } - private void refreshItems() { + private void filterItems(List filteredMtbAarts) { this.openProgress(); String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; @@ -156,7 +178,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl } this.mViewModel.loadArriviFornitori(currentCodAnagFilter, - null, + filteredMtbAarts, -1, 365); } @@ -202,6 +224,8 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl @Override public void onDestroy() { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + for (Runnable onPreDestroy : mOnPreDestroyList) { onPreDestroy.run(); } @@ -248,4 +272,21 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); BarcodeManager.enable(); } + + @Override + public void onMtbColtScanned(MtbColt scannedMtbColt) { + + DialogChooseArtsFromListaArts + .make(getActivity(), scannedMtbColt.getMtbColr(), items -> { + + List mtbAarts = Stream.of(items) + .map(MtbColr::getMtbAart) + .toList(); + + filterItems(mtbAarts); + + }, null) + .show(); + + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java index 3217e6ff..7b17b4eb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java @@ -6,12 +6,19 @@ import java.util.List; import javax.inject.Inject; +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.InvalidLUException; +import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer; public class UltimiArriviFornitoreViewModel { @@ -54,18 +61,92 @@ public class UltimiArriviFornitoreViewModel { }, this::sendError); } - public void loadArriviFornitori(String codAnag, String codMart, int limitDocsForCli, int limitDays) { + public void loadArriviFornitori(String codAnag, List mtbAarts, int limitDocsForCli, int limitDays) { this.sendOnLoadingStarted(); - this.mUltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays, documentList -> { + this.mUltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(mCodMdep, codAnag, mtbAarts, limitDocsForCli, limitDays, documentList -> { this.mDocuments.postValue(documentList); this.sendOnLoadingEnded(); }, this::sendError); } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + this.sendOnLoadingStarted(); + + Runnable onBarcodeScanComplete = () -> { + onComplete.run(); + this.sendOnLoadingEnded(); + }; + + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete); + } else { + onComplete.run(); + } + } + private void executeEtichettaLU(String SSCC, Runnable onComplete) { + this.mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + + if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { + if(mtbColt.getSegno() > 0) { + + this.sendOnMtbColtScanned(mtbColt); + +// this.mOrdiniUscitaElencoRESTConsumer.getOrdiniFromCommessaCollo(mCurrentCodMdep, mtbColt, orderList -> { +// +// if(orderList != null && orderList.size() > 0) { +// List numOrds = Stream.of(orderList) +// .map(DtbOrdt::getNumOrd) +// .toList(); +// +// List filteredOrders = Stream.of(mOrderList.getValue()) +// .filter(x -> numOrds.contains(x.getNumOrd())).toList(); +// +// onComplete.run(filteredOrders); +// } else { +// this.sendError(new NoOrderFoundException()); +// } +// +// }, this::sendError); + } else { + this.sendError(new InvalidLUException()); + } + } else { + this.sendError(new NoLUFoundException()); + } + + }, this::sendError); + } + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + 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, onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + this.sendError(new NoLUFoundException()); + } + }, this::sendError); + } @@ -99,7 +180,13 @@ public class UltimiArriviFornitoreViewModel { if (this.mListener != null) mListener.onError(ex); } + private void sendOnMtbColtScanned(MtbColt scannedMtbColt) { + if (this.mListener != null) mListener.onMtbColtScanned(scannedMtbColt); + } + public interface Listener extends ILoadingListener { void onError(Exception ex); + + void onMtbColtScanned(MtbColt scannedMtbColt); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java index 8a2d3663..d53fd61c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java @@ -1,7 +1,10 @@ package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest; +import com.annimon.stream.Stream; import com.google.gson.reflect.TypeToken; +import org.apache.commons.lang3.StringUtils; + import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; @@ -10,6 +13,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.utility.UtilityDB; @@ -38,13 +42,21 @@ public class UltimiArriviFornitoreRESTConsumer { }); } - public void getUltimeConsegneFornitori(String codMdep, String codAnag, String codMart, int limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getUltimeConsegneFornitori(String codMdep, String codAnag, List mtbAarts, int limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { + String codMarts = null; + + if (mtbAarts != null && mtbAarts.size() > 0) { + codMarts = StringUtils.join(Stream.of(mtbAarts) + .map(MtbAart::getCodMart) + .toList(), "|"); + } + String sql = "SELECT consegne.*, " + " rag_soc " + "FROM WMS_GetUltimeConsegneFornitori(" + UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " + UtilityDB.valueToString(codAnag) + ", " + - UtilityDB.valueToString(codMart) + ", " + + UtilityDB.valueToString(codMarts) + ", " + UtilityDB.valueToString(codMdep) + ", " + UtilityDB.valueToString(limitDays) + ") consegne " + "LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " + @@ -52,7 +64,8 @@ public class UltimiArriviFornitoreRESTConsumer { " counter_consegna "; - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); this.systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { if (onComplete != null) onComplete.run(value); }, ex -> { diff --git a/app/src/main/res/layout/activity_picking_resi.xml b/app/src/main/res/layout/activity_picking_resi.xml index db600e6c..bb0ac519 100644 --- a/app/src/main/res/layout/activity_picking_resi.xml +++ b/app/src/main/res/layout/activity_picking_resi.xml @@ -63,6 +63,64 @@ android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + + + + + + + + + + + + + + + + + + + Date: Fri, 12 Mar 2021 17:05:20 +0100 Subject: [PATCH 6/9] Implementato flag per impostare automaticamente la qta ordinata in fase di picking per Spedizione. Migliorata gestione dell'update dei campi nel caso si scansiona un ean con peso in fase di inserimento qta. --- .../core/settings/DBSettingsModel.java | 10 +++++++++ .../core/settings/SettingsManager.java | 5 +++++ .../gest/spedizione/SpedizioneActivity.java | 4 +++- .../gest/spedizione/SpedizioneViewModel.java | 9 ++++++-- .../DialogInputQuantityV2ViewModel.java | 21 ++++++++++++++++--- 5 files changed, 43 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 080ec666..e639a508 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -33,6 +33,7 @@ public class DBSettingsModel { private boolean flagForceAllToColli; private boolean flagSpedizioneEnableManualPick; private boolean flagSpedizioneCanSelectMultipleOrders; + private boolean flagSpedizioneUseQtaOrd; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; @@ -234,6 +235,15 @@ public class DBSettingsModel { return this; } + public boolean isFlagSpedizioneUseQtaOrd() { + return flagSpedizioneUseQtaOrd; + } + + public DBSettingsModel setFlagSpedizioneUseQtaOrd(boolean flagSpedizioneUseQtaOrd) { + this.flagSpedizioneUseQtaOrd = flagSpedizioneUseQtaOrd; + return this; + } + public String getProduzioneDefaultCodAnag() { return produzioneDefaultCodAnag; } 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 0f4f626f..7c6472f6 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 @@ -258,6 +258,10 @@ public class SettingsManager { .setGestName("PICKING") .setSection("SPEDIZIONE") .setKeySection("REPORT_PACKING_LIST")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PICKING") + .setSection("SPEDIZIONE") + .setKeySection("FLAG_USE_QTA_ORD")); GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { @@ -281,6 +285,7 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); + dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); if(onComplete != null) onComplete.run(); }, onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 0af39985..a34f829d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -198,6 +198,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV(); boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione(); boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione(); + boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd(); if (mEnableGiacenza) this.openProgress(); mViewmodel.init( @@ -211,7 +212,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mColliRegistrati, reportNameSpedizioneChiudiOrdine, mGestioneCol, mSegnoCol, mDefaultCausaleUL, - mEnableQuantityReset); + mEnableQuantityReset, + useQtaOrd); } @Override 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 6d50da2d..8aea1110 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 @@ -95,6 +95,7 @@ public class SpedizioneViewModel { private String mReportNameSpedizioneChiudiOrdine; private boolean mIsNewLU; private boolean mEnableQuantityReset; + private boolean mUseQtaOrd; private MtbColt mCurrentMtbColt = null; @@ -137,7 +138,8 @@ public class SpedizioneViewModel { GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, - boolean enableQuantityReset) { + boolean enableQuantityReset, + boolean useQtaOrd) { this.sendOnLoadingStarted(); this.mDefaultCodMdep = codMdep; @@ -150,6 +152,7 @@ public class SpedizioneViewModel { this.mReportNameSpedizioneChiudiOrdine = reportNameSpedizioneChiudiOrdine; this.mDefaultCausaleOfUL = defaultCausaleUL; this.mEnableQuantityReset = enableQuantityReset; + this.mUseQtaOrd = useQtaOrd; if (enableGiacenza) { mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> { @@ -900,7 +903,9 @@ public class SpedizioneViewModel { this.sendOnItemDispatched( pickingObjectDTO, pickingObjectDTO.getMtbAart(), - null, null, null, + mUseQtaOrd ? numCnfDaPrelevare : null, + mUseQtaOrd ? qtaCnfDaPrelevare : null, + mUseQtaOrd ? qtaColDaPrelevare : null, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 0412ed7e..01e42d36 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -160,6 +160,9 @@ public class DialogInputQuantityV2ViewModel { this.setNumCnf(BigDecimal.ONE); this.setQtaCnf(UtilityBigDecimal.divide(this.getQtaTot(), this.getNumCnf())); } + + this.unlockNumCnf(); + this.unlockQtaCnf(); } this.mListener.onDataChanged(); @@ -289,10 +292,10 @@ public class DialogInputQuantityV2ViewModel { // return; } - if (!this.blockedQtaTot.get() && this.internalQtaCnf != null) - this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); - else if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalQtaTot != null) + if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalQtaTot != null) this.internalQtaCnf = UtilityBigDecimal.divide(newValue, internalQtaTot); + else if (!this.blockedQtaTot.get() && this.internalQtaCnf != null) + this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); this.mListener.onDataChanged(); } @@ -336,6 +339,18 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onDataChanged(); } + private void unlockNumCnf() { + this.blockedNumCnf.set(false); + } + + private void unlockQtaCnf() { + this.blockedQtaCnf.set(false); + } + + private void unlockQtaCol() { + this.blockedQtaTot.set(false); + } + public boolean validate() { if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { From cbf36ec9626e09d298410d527248ca64dcc1875c Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 15 Mar 2021 13:09:40 +0100 Subject: [PATCH 7/9] Fix su qta negative in accettazione --- .../AccettazionePickingViewModel.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index 9a238cc1..41097b74 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -98,10 +98,13 @@ public class AccettazionePickingViewModel { public void init(List orders, List sitArts, String codMdep) { this.mOrders = orders; - this.mSitArts = sitArts; this.mDefaultCodMdep = codMdep; - getEmptyPickingList(sitArts, pickingObjectList -> { + this.mSitArts = Stream.of(sitArts) + .filter(x -> UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) + .toList(); + + getEmptyPickingList(this.mSitArts, pickingObjectList -> { this.mPickingList.postValue(pickingObjectList); }); @@ -136,6 +139,7 @@ public class AccettazionePickingViewModel { } private void getEmptyPickingList(List sitArtOrdList, RunnableArgs> onComplete) { + List codMarts = Stream.of(sitArtOrdList) .map(SitArtOrdDTO::getCodMart) .toList(); From fef57622cfd2cd4f6bc411bc09e251bfab2cce1b Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 15 Mar 2021 15:43:39 +0100 Subject: [PATCH 8/9] Implementato blocco per scansione EAN128 nel caso non sia abilitato il Picking Manuale --- .../gest/spedizione/SpedizioneActivity.java | 7 +++-- .../gest/spedizione/SpedizioneViewModel.java | 10 +++++-- .../DialogInputQuantityV2DTO.java | 2 +- .../DialogInputQuantityV2View.java | 1 + .../DialogInputQuantityV2ViewModel.java | 29 ++++++++++++------- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index a34f829d..a613a931 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -267,7 +267,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo ((SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) || clickedItem.getTempPickData() != null)) { - this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt); + this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt, + SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()); } }); } @@ -798,6 +799,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo String partitaMag, Date dataScad, boolean canOverflowOrderQuantity, + boolean canPartitaMagBeChanged, RunnableArgss onComplete) { DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() .setMtbAart(mtbAart) @@ -816,7 +818,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo .setPartitaMag(partitaMag) .setDataScad(dataScad) .setCanOverflowOrderQuantity(canOverflowOrderQuantity) - .setCanLUBeClosed(true); + .setCanLUBeClosed(true) + .setCanPartitaMagBeChanged(canPartitaMagBeChanged); DialogInputQuantityV2View .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { 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 8aea1110..66e56442 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 @@ -364,6 +364,7 @@ public class SpedizioneViewModel { String partitaMag, Date dataScad, boolean canOverflowOrderQuantity, + boolean canBatchLotBeChanged, RunnableArgss onComplete) { if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, mtbAart, @@ -382,6 +383,7 @@ public class SpedizioneViewModel { partitaMag, dataScad, canOverflowOrderQuantity, + canBatchLotBeChanged, onComplete); } @@ -735,7 +737,7 @@ public class SpedizioneViewModel { this.sendFilterApplied(null); this.getPickingList().postValue(pickingList); } else { - this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt()); + this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt(), false); } } else { @@ -754,7 +756,7 @@ public class SpedizioneViewModel { } - public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, boolean canPartitaMagBeChanged) { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); @@ -918,6 +920,7 @@ public class SpedizioneViewModel { partitaMag, dataScad, mCanOverflowOrderQuantity, + canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { this.saveNewRow(pickingObjectDTO, finalRefMtbColt, @@ -1057,6 +1060,7 @@ public class SpedizioneViewModel { partitaMag, dataScad, mCanOverflowOrderQuantity, + true, (pickedQuantityDTO, shouldCloseLU) -> { this.saveNewRow(pickingObjectDTO, finalRefMtbColt, @@ -1193,6 +1197,7 @@ public class SpedizioneViewModel { partitaMag, dataScad, mCanOverflowOrderQuantity, + false, (pickedQuantityDTO, shouldCloseLU) -> { this.saveEditedRow(mtbColrToEdit, pickedQuantityDTO.getNumCnf(), @@ -1853,6 +1858,7 @@ public class SpedizioneViewModel { String partitaMag, Date dataScad, boolean canOverflowOrderQuantity, + boolean canBatchLotBeChanged, RunnableArgss onComplete); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index dff95e00..f6de4bc8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -25,7 +25,7 @@ public class DialogInputQuantityV2DTO { private BigDecimal totalNumCnfAvailable; private BigDecimal qtaCnfAvailable; - private boolean canPartitaMagBeChanged; + private boolean canPartitaMagBeChanged = true; private boolean canLUBeClosed; private String partitaMag; 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 d115eb93..d908afc4 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 @@ -319,6 +319,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia })); + this.mViewModel.setCanPartitaMagBeChanged(this.mDialogInputQuantityV2DTO.isCanPartitaMagBeChanged()); this.enabledChangePartitaMag.set(this.mDialogInputQuantityV2DTO.isCanPartitaMagBeChanged()); this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 01e42d36..72f7fa1c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -59,6 +59,7 @@ public class DialogInputQuantityV2ViewModel { private Date internalDataScad; private boolean canOverflowOrderQuantity; + private boolean canPartitaMagBeChanged; private Listener mListener; @@ -135,18 +136,21 @@ public class DialogInputQuantityV2ViewModel { return; } - if (!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { - this.setPartitaMag(ean128Model.BatchLot); - } + if(canPartitaMagBeChanged) { - try { - if (!UtilityString.isNullOrEmpty(ean128Model.BestBefore)) { - this.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore)); - } else if (!UtilityString.isNullOrEmpty(ean128Model.Expiry)) { - this.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry)); + if (!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { + this.setPartitaMag(ean128Model.BatchLot); + } + + try { + if (!UtilityString.isNullOrEmpty(ean128Model.BestBefore)) { + this.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore)); + } else if (!UtilityString.isNullOrEmpty(ean128Model.Expiry)) { + this.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry)); + } + } catch (Exception ex) { + this.mListener.onError(ex); } - } catch (Exception ex) { - this.mListener.onError(ex); } if (ean128Model.Count != null && ean128Model.Count > 0) { @@ -265,6 +269,11 @@ public class DialogInputQuantityV2ViewModel { return this; } + public DialogInputQuantityV2ViewModel setCanPartitaMagBeChanged(boolean canPartitaMagBeChanged) { + this.canPartitaMagBeChanged = canPartitaMagBeChanged; + return this; + } + public DialogInputQuantityV2ViewModel setPartitaMag(String internalPartitaMag) { this.internalPartitaMag = internalPartitaMag; return this; From 08b44cb45bbb875d21eed33dd4b640cd08f91cfb Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 15 Mar 2021 16:02:51 +0100 Subject: [PATCH 9/9] -> v1.16.116 (198) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ced10526..10937b3b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 197 - def appVersionName = '1.16.15' + def appVersionCode = 198 + def appVersionName = '1.16.16' signingConfigs { release {