diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index e497da99..00000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app_agricoper.xml b/.idea/runConfigurations/app_agricoper.xml deleted file mode 100644 index 5736eb4f..00000000 --- a/.idea/runConfigurations/app_agricoper.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app_frudis.xml b/.idea/runConfigurations/app_frudis.xml deleted file mode 100644 index 802d974d..00000000 --- a/.idea/runConfigurations/app_frudis.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app_gramm.xml b/.idea/runConfigurations/app_gramm.xml deleted file mode 100644 index 1438cfb0..00000000 --- a/.idea/runConfigurations/app_gramm.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app_ime.xml b/.idea/runConfigurations/app_ime.xml deleted file mode 100644 index 4665b87a..00000000 --- a/.idea/runConfigurations/app_ime.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app_saporiveri.xml b/.idea/runConfigurations/app_saporiveri.xml deleted file mode 100644 index 969d5409..00000000 --- a/.idea/runConfigurations/app_saporiveri.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/app_saporiveri_pv.xml b/.idea/runConfigurations/app_saporiveri_pv.xml deleted file mode 100644 index 8c8e7471..00000000 --- a/.idea/runConfigurations/app_saporiveri_pv.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 30fcbe9b..9156ab11 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 229 - def appVersionName = '1.17.9' + def appVersionCode = 230 + def appVersionName = '1.18.0' signingConfigs { release { @@ -53,8 +53,9 @@ android { android.buildFeatures.dataBinding true compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } productFlavors { } @@ -77,7 +78,7 @@ android { abortOnError false } - dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri", ':dynamic_gramm', ':dynamic_agricoper'] + dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"] } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7da50e84..245da2b4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:screenOrientation="portrait" android:theme="@style/Light" /> diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java index 00bfc562..b7ea2ff2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java @@ -4,6 +4,8 @@ import android.app.Application; import android.content.res.Configuration; import android.content.res.Resources; +import javax.inject.Inject; + import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.data_store.db.RoomModule; @@ -17,7 +19,8 @@ public class MainApplication extends Application { public static MainApplicationModule appModule; public static RoomModule roomModule; - private AppContext appContext = new AppContext(this); + @Inject + AppContext appContext; @@ -27,16 +30,15 @@ public class MainApplication extends Application { public void onCreate() { super.onCreate(); - appModule = new MainApplicationModule(MainApplication.this, this); + appModule = new MainApplicationModule(this); roomModule = new RoomModule(this); appComponent = DaggerMainApplicationComponent.builder() .mainApplicationModule(appModule) .roomModule(roomModule) .build(); - appComponent.inject(appContext); + appComponent.inject(this); - appContext.init(); res = getResources(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 32d0c3ca..bc0fed50 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -5,24 +5,40 @@ import javax.inject.Singleton; import dagger.Component; import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.data_store.db.RoomModule; +import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent; +import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule; +import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent; +import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule; +import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent; +import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule; +import it.integry.integrywmsnative.gest.main.MainActivityComponent; +import it.integry.integrywmsnative.gest.main.MainActivityModule; +import it.integry.integrywmsnative.gest.main.MainFragmentComponent; +import it.integry.integrywmsnative.gest.main.MainFragmentModule; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoComponent; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoModule; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule; import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent; import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoComponent; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoModule; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeComponent; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule; import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent; import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailComponent; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeComponent; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaModule; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; @@ -35,6 +51,8 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviForn import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule; +import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent; +import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent; @@ -49,10 +67,15 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr // Definition of the Application graph @Singleton @Component(modules = { - MainApplicationModule.class, RoomModule.class, + SplashActivityModule.class, + MainApplicationModule.class, MainActivityModule.class, - PVOrdineAcquistoGrigliaModule.class, + MainFragmentModule.class, + MainAccettazioneModule.class, + ListaBancaliModule.class, + ContenutoBancaleModule.class, + PVOrdiniAcquistoGrigliaModule.class, PVOrdineAcquistoEditModule.class, PickingLiberoModule.class, RettificaGiacenzeModule.class, @@ -70,11 +93,21 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr VersamentoMerceModule.class, DialogAskMagazzinoProssimitaModule.class, DialogChooseBatchLotModule.class, - DialogRowInfoProdFabbisognoLineeProdModule.class}) + DialogRowInfoProdFabbisognoLineeProdModule.class, + ProdOrdineProduzioneElencoModule.class, + ProdRecuperoMaterialeModule.class, + ProdVersamentoMaterialeModule.class, + DialogChooseArtsFromListaArtsModule.class +}) public interface MainApplicationComponent { + SplashActivityComponent.Factory splashActivityComponent(); MainActivityComponent.Factory mainActivityComponent(); - PVOrdineAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); + MainFragmentComponent.Factory mainFragmentComponent(); + MainAccettazioneComponent.Factory mainAccettazioneComponent(); + ListaBancaliComponent.Factory listaBancaliComponent(); + ContenutoBancaleComponent.Factory contenutoBancaleComponent(); + PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); PickingLiberoComponent.Factory pickingLiberoComponent(); RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); @@ -95,8 +128,13 @@ public interface MainApplicationComponent { DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent(); ProdRientroMerceComponent.Factory prodRientroMerceComponent(); ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent(); + ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent(); + ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent(); + ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent(); + DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent(); - void inject(AppContext appContext); + void inject(MainApplication mainApplication); + void inject(AppContext mainApplication); } diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 1bfcc0c1..4bb1cddb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -1,16 +1,22 @@ package it.integry.integrywmsnative; import android.app.Application; -import android.content.Context; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.context.AppContext; +import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.data_store.db.AppDatabase; +import it.integry.integrywmsnative.core.menu.MenuRESTConsumer; +import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; @@ -23,11 +29,9 @@ import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabb @Module public class MainApplicationModule { - private final Context mContext; private final Application mApplication; - public MainApplicationModule(Context context, Application application) { - this.mContext = context; + public MainApplicationModule(Application application) { this.mApplication = application; } @@ -39,14 +43,34 @@ public class MainApplicationModule { @Provides @Singleton - ColliDataRecoverService provideColliDataRecoverService() { - return new ColliDataRecoverService(); + AppContext providesAppContext() { + return new AppContext(mApplication); } @Provides @Singleton - OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new OrdiniRESTConsumer(systemRESTConsumer); + MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase) { + return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase); + } + + @Provides + @Singleton + ColliDataRecoverService provideColliDataRecoverService() { + ColliDataRecoverService colliDataRecoverService = new ColliDataRecoverService(mApplication.getApplicationContext()); + colliDataRecoverService.init(); + return colliDataRecoverService; + } + + @Provides + @Singleton + MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) { + return new MenuService(menuRESTConsumer); + } + + @Provides + @Singleton + OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { + return new OrdiniRESTConsumer(systemRESTConsumer, entityRESTConsumer); } @Provides @@ -61,6 +85,18 @@ public class MainApplicationModule { return new ArticoloRESTConsumer(); } + @Provides + @Singleton + DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) { + return new DepositoRESTConsumer(entityRESTConsumer); + } + + @Provides + @Singleton + MenuRESTConsumer provideMenuRESTConsumer() { + return new MenuRESTConsumer(); + } + @Provides @Singleton MagazzinoRESTConsumer provideMagazzinoRESTConsumer() { @@ -75,8 +111,14 @@ public class MainApplicationModule { @Provides @Singleton - ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) { - return new ColliMagazzinoRESTConsumer(articoloRESTConsumer); + EntityRESTConsumer provideEntityRESTConsumer() { + return new EntityRESTConsumer(); + } + + @Provides + @Singleton + ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer, EntityRESTConsumer entityRESTConsumer) { + return new ColliMagazzinoRESTConsumer(systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer); } @Provides @@ -110,5 +152,4 @@ public class MainApplicationModule { } - } diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java index 7397d141..8b870565 100644 --- a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java @@ -5,6 +5,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.text.SpannableString; +import android.text.Spanned; import android.view.LayoutInflater; import androidx.databinding.DataBindingUtil; @@ -12,6 +13,8 @@ import androidx.databinding.DataBindingUtil; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; @@ -20,14 +23,18 @@ 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.gest.main.MainActivity; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -public class SplashActivity extends BaseActivity { +public class SplashActivity extends BaseActivity implements MainContext.Listener { private ActivitySplashBinding mBinding; - private MainContext mainContext = new MainContext(this); +// private MainContext mainContext = new MainContext(this); + + @Inject + MainContext mainContext; private RunnableArgsss> onRequestPermissionResult; @@ -35,32 +42,23 @@ public class SplashActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + MainApplication.appComponent + .splashActivityComponent() + .create() + .inject(this); + + mainContext.setListener(this); + mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_splash, null, false); setContentView(mBinding.getRoot()); UtilityContext.initMainActivity(this); - initAppVersion(); + initAppVersion(); initPermissions(this::init); } - private void initPermissions(Runnable onComplete) { - PermissionsHelper.askPermissions(this, () -> { - onComplete.run(); - }, permanentlyDenied -> { - if(permanentlyDenied) { - DialogSimpleMessageView.makeErrorDialog(new SpannableString(getText(R.string.permissions_permanently_denied)), null, () -> { - this.finish(); - }) - .show(getSupportFragmentManager(), "tag"); - } else { - initPermissions(onComplete); - } - }); - } - - private void initAppVersion() { try { PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); @@ -68,7 +66,7 @@ public class SplashActivity extends BaseActivity { String debugText = ""; - if(BuildConfig.DEBUG) debugText += "\n[DEBUG VERSION]"; + if (BuildConfig.DEBUG) debugText += "\n[DEBUG VERSION]"; mBinding.appVersionTextview.setText("v" + version + debugText); } catch (PackageManager.NameNotFoundException e) { @@ -76,15 +74,39 @@ public class SplashActivity extends BaseActivity { } } + private void initPermissions(Runnable onComplete) { + PermissionsHelper.askPermissions(this, onComplete, permanentlyDenied -> { + if (permanentlyDenied) { + onError(new SpannableString(getText(R.string.permissions_permanently_denied))); + + } else { + initPermissions(onComplete); + } + }); + } + private void init() { - if(!SettingsManager.i().isUserLoggedIn()){ + if (!SettingsManager.i().isUserLoggedIn()) { startLoginActivity(); } else { - mainContext.init(this::startMainActivity); + mainContext.init(); } } + @Override + public void onDBDataLoading(String item) { + mBinding.loadingInfoTextview.setText("Caricamento " + item); + } + @Override + public void onMenuLoading() { + mBinding.loadingInfoTextview.setText("Caricamento menĂ¹"); + } + + @Override + public void onContextInitialized() { + startMainActivity(); + } public void setOnRequestPermissionsResult(RunnableArgsss> onRequestPermissionResult) { @@ -95,9 +117,9 @@ public class SplashActivity extends BaseActivity { @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if(this.onRequestPermissionResult != null) { + if (this.onRequestPermissionResult != null) { List grantResultsList = new ArrayList<>(); - for(int i = 0; i < grantResults.length; i++) { + for (int i = 0; i < grantResults.length; i++) { grantResultsList.add(grantResults[i]); } @@ -106,20 +128,26 @@ public class SplashActivity extends BaseActivity { } - - - - private void startLoginActivity(){ + private void startLoginActivity() { this.finish(); Intent myIntent = new Intent(this, LoginActivity.class); startActivity(myIntent); } - private void startMainActivity(){ + private void startMainActivity() { this.finish(); Intent myIntent = new Intent(this, MainActivity.class); startActivity(myIntent); } + @Override + public void onError(Spanned message) { + + DialogSimpleMessageView.makeErrorDialog( + message, null, this::finish, R.string.logout, () -> { + this.mainContext.logout(MainApplication::exit); + }) + .show(this.getSupportFragmentManager(), "tag"); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivityComponent.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivityComponent.java new file mode 100644 index 00000000..a5d85b45 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivityComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative; + +import dagger.Subcomponent; + +@Subcomponent +public interface SplashActivityComponent { + + @Subcomponent.Factory + interface Factory { + + SplashActivityComponent create(); + } + + void inject(SplashActivity mainActivity); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivityModule.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivityModule.java new file mode 100644 index 00000000..923dabb8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivityModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative; + +import dagger.Module; + +@Module(subcomponents = SplashActivityComponent.class) +public class SplashActivityModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java index cb83f66f..85924b83 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java @@ -1,33 +1,27 @@ package it.integry.integrywmsnative.core.barcode_reader; +import android.content.Context; import android.view.KeyEvent; -import androidx.appcompat.app.AppCompatActivity; - import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.List; -import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader; import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader; import it.integry.zebrascannerlibrary.ZebraBarcodeReader; public class BarcodeManager { - private static AppCompatActivity context; - private static BarcodeReaderInterface mCurrentBarcodeInterface; - private static List mBarcodeCallbacksStacktrace = new ArrayList<>(); + private static final List mBarcodeCallbacksStacktrace = new ArrayList<>(); private static boolean mEnabled = true; - private static Class[] registeredBarcodeReaderInterfaces = new Class[]{ + private static final Class[] registeredBarcodeReaderInterfaces = new Class[]{ PointMobileBarcodeReader.class, ZebraBarcodeReader.class, HoneyWellBarcodeReader.class, @@ -35,73 +29,60 @@ public class BarcodeManager { }; - public static void init(AppCompatActivity context) { - BarcodeManager.context = context; + public static void init(Context applicationContext) throws Exception { - initBarcodeReader(); + initBarcodeReader(applicationContext); } - private static void initBarcodeReader() { + private static void initBarcodeReader(Context applicationContext) throws Exception { - for (Class readerInterface : registeredBarcodeReaderInterfaces){ + for (Class readerInterface : registeredBarcodeReaderInterfaces) { - Constructor cons = null; - try { - cons = Class.forName(readerInterface.getName()).getConstructors()[0]; - BarcodeReaderInterface object = (BarcodeReaderInterface) cons.newInstance(context); + Constructor cons = Class.forName(readerInterface.getName()).getConstructors()[0]; + BarcodeReaderInterface object = (BarcodeReaderInterface) cons.newInstance(applicationContext); - if(object.isRightAdapter()) { - mCurrentBarcodeInterface = object; - break; - } - - - } catch (Exception e) { - UtilityExceptions.defaultException(context,e); + if (object.isRightAdapter()) { + mCurrentBarcodeInterface = object; + break; } + + } - if(mCurrentBarcodeInterface != null) { + if (mCurrentBarcodeInterface != null) { - try { - mCurrentBarcodeInterface.init(() -> { - - mCurrentBarcodeInterface.register(data -> { - BarcodeCallbackDTO callback = getValidCallback(); - if(callback != null && mEnabled) { - callback.getOnScanSuccessfull().run(data); - } - }, ex -> { - BarcodeCallbackDTO callback = getValidCallback(); - if(callback != null && mEnabled) { - callback.getOnScanFailed().run(ex); - } - }); + mCurrentBarcodeInterface.init(() -> { + mCurrentBarcodeInterface.register(data -> { + BarcodeCallbackDTO callback = getValidCallback(); + if (callback != null && mEnabled) { + callback.getOnScanSuccessfull().run(data); + } + }, ex -> { + BarcodeCallbackDTO callback = getValidCallback(); + if (callback != null && mEnabled) { + callback.getOnScanFailed().run(ex); + } }); - } catch (BarcodeAdapterNotFoundException ex) { - UtilityExceptions.defaultException(context, ex); - } - + }); } - } private static BarcodeCallbackDTO getValidCallback() { - if(mBarcodeCallbacksStacktrace.size() > 0) { - return mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() -1); + if (mBarcodeCallbacksStacktrace.size() > 0) { + return mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() - 1); } else { return null; } } - public static boolean onKeyDown(int keyCode, KeyEvent keyEvent){ + public static boolean onKeyDown(int keyCode, KeyEvent keyEvent) { if (mCurrentBarcodeInterface != null) - mCurrentBarcodeInterface.onKeyEvent(keyEvent); + mCurrentBarcodeInterface.onKeyEvent(keyEvent); return true; } @@ -113,8 +94,8 @@ public class BarcodeManager { int newID = -1; - if(mBarcodeCallbacksStacktrace.size() > 0) { - newID = mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() -1).getID() + 1; + if (mBarcodeCallbacksStacktrace.size() > 0) { + newID = mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() - 1).getID() + 1; } else { newID = 1; } @@ -131,7 +112,7 @@ public class BarcodeManager { //Rimuovo la callback con l'ID trovato e tutte quelle con >ID in modo che rimuovo tutte le call aggiunte successivamente for (int i = 0; i < mBarcodeCallbacksStacktrace.size(); i++) { - if(mBarcodeCallbacksStacktrace.get(i).getID() == ID || callbackObjFound) { + if (mBarcodeCallbacksStacktrace.get(i).getID() == ID || callbackObjFound) { mBarcodeCallbacksStacktrace.remove(i); callbackObjFound = true; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java index bf917c1f..d234cebb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java @@ -6,8 +6,6 @@ import android.util.Pair; import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.core.class_router.exceptions.MethodPathNotRegisteredException; - public class ClassRouter { public enum PATH { @@ -21,8 +19,8 @@ public class ClassRouter { private static List> mRouteClasses = new ArrayList<>(); - public static void init(Context context) { - ClassRouter.context = context; + public static void init() { +// ClassRouter.context = context; } private static boolean checkIClassExists(PATH path) { @@ -51,9 +49,7 @@ public class ClassRouter { try { mRouteClasses.add(new Pair<>(path, clazz.newInstance())); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { + } catch (IllegalAccessException | InstantiationException e) { e.printStackTrace(); } } @@ -69,15 +65,15 @@ public class ClassRouter { try { if (!checkIClassExists(path)) { - throw new MethodPathNotRegisteredException(path); +// throw new MethodPathNotRegisteredException(path); } Object instance = mRouteClasses.get(getClassIndex(path)).second; return (T)instance; - } catch (MethodPathNotRegisteredException ex) { - // UtilityExceptions.defaultException(null, ex, true); + } catch (Exception ex) { +// UtilityExceptions.defaultException(null, ex, true); } return null; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java index d082f900..b4bace12 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java @@ -32,6 +32,8 @@ public class BaseMenuConfiguration { @IdRes private int mGroupId; + private String codMenu; + private List mItems = new ArrayList<>(); public @IdRes int getGroupId() { @@ -52,6 +54,15 @@ public class BaseMenuConfiguration { return this; } + public String getCodMenu() { + return codMenu; + } + + public MenuGroup setCodMenu(String codMenu) { + this.codMenu = codMenu; + return this; + } + public List getItems() { return mItems; } @@ -67,6 +78,7 @@ public class BaseMenuConfiguration { @StringRes private int mTitleText; @DrawableRes private int mTitleIcon; @DrawableRes private int mDrawerIcon; + private String codMenu; private RunnableWithReturn fragmentFactory; public int getID() { @@ -105,6 +117,15 @@ public class BaseMenuConfiguration { return this; } + public String getCodMenu() { + return codMenu; + } + + public MenuItem setCodMenu(String codMenu) { + this.codMenu = codMenu; + return this; + } + public RunnableWithReturn getFragmentFactory() { return fragmentFactory; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 457c5833..fcec5faa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -9,6 +9,7 @@ import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrd import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; @@ -24,9 +25,11 @@ public class MenuConfiguration extends BaseMenuConfiguration { new MenuGroup() .setGroupText(R.string.purchase) .setGroupId(R.id.nav_group_acquisto) + .setCodMenu("MM008") .addItem(new MenuItem() .setID(R.id.nav_accettazione) + .setCodMenu("MG044") .setTitleText(R.string.accettazione_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_accettazione) .setDrawerIcon(R.drawable.ic_black_download) @@ -34,6 +37,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_resi_fornitore) + .setCodMenu("MG045") .setTitleText(R.string.fragment_ultime_arrivi_fornitore_title) .setTitleIcon(R.drawable.ic_latest_delivery) .setDrawerIcon(R.drawable.ic_black_latest_delivery) @@ -42,9 +46,11 @@ public class MenuConfiguration extends BaseMenuConfiguration { new MenuGroup() .setGroupText(R.string.checkout) .setGroupId(R.id.nav_group_spedizione) + .setCodMenu("MM010") .addItem(new MenuItem() .setID(R.id.nav_spedizione) + .setCodMenu("MG046") .setTitleText(R.string.vendita_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_spedizione) .setDrawerIcon(R.drawable.ic_black_upload) @@ -52,6 +58,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_free_picking) + .setCodMenu("MG047") .setTitleText(R.string.free_picking) .setTitleIcon(R.drawable.ic_dashboard_picking_libero) .setDrawerIcon(R.drawable.ic_black_barcode_scanner) @@ -59,6 +66,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_resi_cliente) + .setCodMenu("MG048") .setTitleText(R.string.fragment_ultime_consegne_cliente_title) .setTitleIcon(R.drawable.ic_latest_delivery_customer) .setDrawerIcon(R.drawable.ic_black_latest_delivery) @@ -66,9 +74,11 @@ public class MenuConfiguration extends BaseMenuConfiguration { ).addGroup(new MenuGroup() .setGroupText(R.string.manufacture) .setGroupId(R.id.nav_group_produzione) + .setCodMenu("MM009") .addItem(new MenuItem() .setID(R.id.nav_prod_ordine_produzione) + .setCodMenu("MG049") .setTitleText(R.string.prod_ordine_produzione_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione) .setDrawerIcon(R.drawable.ic_black_external) @@ -76,6 +86,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_prod_ordine_lavorazione) + .setCodMenu("MG050") .setTitleText(R.string.prod_ordine_lavorazione_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione) .setDrawerIcon(R.drawable.ic_black_external) @@ -83,6 +94,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_free_lav_picking) + .setCodMenu("MG051") .setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) @@ -90,6 +102,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_prod_posizionamento_da_ord) + .setCodMenu("MG052") .setTitleText(R.string.prod_fabbisogno_linee_prod_title) .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) @@ -97,6 +110,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_prod_versamento_materiale) + .setCodMenu("MG053") .setTitleText(R.string.prod_versamento_materiale_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale) .setDrawerIcon(R.drawable.ic_black_external) @@ -104,32 +118,55 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_prod_recupero_materiale) + .setCodMenu("MG054") .setTitleText(R.string.prod_recupero_materiale_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale) .setDrawerIcon(R.drawable.ic_black_external) .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) - ) - .addGroup( - new MenuGroup() - .setGroupText(R.string.internal_handling) - .setGroupId(R.id.nav_group_movimentazione_interna) + ).addGroup( + new MenuGroup() + .setGroupText(R.string.internal_handling) + .setGroupId(R.id.nav_group_movimentazione_interna) + .setCodMenu("MM011") - .addItem(new MenuItem() - .setID(R.id.nav_versamento_merce) - .setTitleText(R.string.versamento_merce_fragment_title) - .setTitleIcon(R.drawable.ic_dashboard_versamento_merce) - .setDrawerIcon(R.drawable.ic_black_load_shelf) - .setFragmentFactory(VersamentoMerceFragment::newInstance)) + .addItem(new MenuItem() + .setID(R.id.nav_versamento_merce) + .setCodMenu("MG055") + .setTitleText(R.string.versamento_merce_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_versamento_merce) + .setDrawerIcon(R.drawable.ic_black_load_shelf) + .setFragmentFactory(VersamentoMerceFragment::newInstance)) - .addItem(new MenuItem() - .setID(R.id.nav_rettifica_giacenze) - .setTitleText(R.string.rettifica_giacenze_fragment_title) - .setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze) - .setDrawerIcon(R.drawable.ic_black_empty_box) - .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) + .addItem(new MenuItem() + .setID(R.id.nav_rettifica_giacenze) + .setCodMenu("MG056") + .setTitleText(R.string.rettifica_giacenze_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze) + .setDrawerIcon(R.drawable.ic_black_empty_box) + .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) - ); + ).addGroup( + new MenuGroup() + .setCodMenu("MM012") + .setGroupText(it.integry.integrywmsnative.R.string.punto_vendita) + .setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita) + + .addItem(new MenuItem() + .setCodMenu("MG057") + .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto) + .setTitleText(it.integry.integrywmsnative.R.string.generate_orders) + .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) + .setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance)) + +// .addItem(new MenuItem() +// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) +// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders) +// .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) +// .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) +// .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance())) + ); } 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 3498373e..b50df297 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 @@ -7,31 +7,38 @@ import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.Logger; import javax.inject.Inject; +import javax.inject.Singleton; import it.integry.integrywmsnative.BuildConfig; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.Stash; import it.integry.integrywmsnative.core.utility.UtilityContext; import it.integry.integrywmsnative.core.utility.UtilityResources; -import it.integry.integrywmsnative.core.utility.UtilitySettings; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; +@Singleton public class AppContext { //Note: this is the Application Context NOT the Activity Context - private final Context mContext; + private final Context mApplicationContext; @Inject AppDatabase mAppDatabase; public AppContext(Context context) { - this.mContext = context; + this.mApplicationContext = context; + + MainApplication.appComponent + .inject(this); } + + @Inject public void init() { this.initUtilities(); @@ -45,8 +52,8 @@ public class AppContext { private void initSettings() { - Stash.init(mContext); - SettingsManager.init(mContext); + Stash.init(mApplicationContext); + SettingsManager.init(mApplicationContext); } private void initCrashlytics() { @@ -64,10 +71,9 @@ public class AppContext { } private void initUtilities() { - UtilityContext.initApplicationContext(mContext); - UtilityResources.init(mContext); - UtilityToast.init(mContext); - UtilitySettings.init(mAppDatabase); + UtilityContext.initApplicationContext(mApplicationContext); + UtilityResources.init(mApplicationContext); + UtilityToast.init(mApplicationContext); } private void initLogger() { 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 63b81354..8b13a429 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 @@ -4,54 +4,80 @@ import android.content.Context; import android.text.Html; import android.text.SpannableString; import android.text.Spanned; - -import androidx.appcompat.app.AppCompatActivity; +import android.text.SpannedString; import java.lang.reflect.Method; import java.net.ConnectException; -import it.integry.integrywmsnative.MainApplication; -import it.integry.integrywmsnative.R; +import javax.inject.Singleton; + 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.data_store.db.AppDatabase; +import it.integry.integrywmsnative.core.menu.MenuService; 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.DialogSimpleMessageView; +import it.integry.integrywmsnative.core.utility.UtilityThread; +@Singleton public class MainContext { - private final AppCompatActivity mContext; + private final Context applicationContext; + private final MenuService menuService; + private final AppDatabase appDatabase; - public MainContext(AppCompatActivity context) { - this.mContext = context; + private Listener mListener; + + public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase) { + this.applicationContext = applicationContext; + this.menuService = menuService; + this.appDatabase = appDatabase; } + public void init() { - public void init(Runnable onContextInitialized) { + try { + BarcodeManager.init(applicationContext); + } catch (Exception exception) { - BarcodeManager.init(mContext); + } this.initDBData(() -> { - onContextInitialized.run(); + this.initMenu(() -> { + + this.initReflections(); + if (mListener != null) mListener.onContextInitialized(); + }); }); - this.initReflections(); this.initServerStatusChecker(); - ColliDataRecover.init(mContext); } + public void logout(Runnable onLoggedOut) { + UtilityThread.executeParallel(() -> { + SettingsManager.i().setUser(null); + SettingsManager.i().setUserSession(null); + SettingsManager.update(); + appDatabase.clearAllTables(); + + onLoggedOut.run(); + }, true); + } private void initServerStatusChecker() { ServerStatusChecker.init(); } private void initDBData(Runnable onComplete) { - SettingsManager.loadDBVariables(onComplete, ex -> { + + + SettingsManager.loadDBVariables(item -> { + if (mListener != null) mListener.onDBDataLoading(item); + }, + onComplete, + ex -> { Spanned message = null; @@ -63,18 +89,21 @@ public class MainContext { message = new SpannableString(ex.getMessage()); } - DialogSimpleMessageView.makeErrorDialog( - message, null, mContext::finish, R.string.logout, () -> { - UtilitySettings.logout(); - MainApplication.exit(); - }) - .show(mContext.getSupportFragmentManager(), "tag"); + if (mListener != null) mListener.onError(message); + } ); } + private void initMenu(Runnable onComplete) { + if (mListener != null) mListener.onMenuLoading(); + this.menuService.init(onComplete, ex -> { + if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); + }); + } + private void initReflections() { - ClassRouter.init(mContext); + ClassRouter.init(); try { String initMethod = "init"; @@ -87,14 +116,29 @@ public class MainContext { // for static methods we can use null as instance of class final Object newInstance = dynamicContextClass.newInstance(); - m.invoke(newInstance, (Context) mContext); + m.invoke(newInstance, applicationContext); break; } } } catch (Exception e) { - UtilityExceptions.defaultException(mContext, e, true); +// UtilityExceptions.defaultException(mContext, e, true); } } + + public MainContext setListener(Listener listener) { + this.mListener = listener; + return this; + } + + public interface Listener { + void onDBDataLoading(String item); + + void onMenuLoading(); + + void onContextInitialized(); + + void onError(Spanned message); + } } 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 deleted file mode 100644 index 3c5a7ba2..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java +++ /dev/null @@ -1,235 +0,0 @@ -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.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import it.integry.integrywmsnative.core.CommonConst; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; - -public class ColliDataRecover { - - public static class RecoverDTO { - private int id; - private int numCollo; - private String serCollo; - private String dataCollo; - private String gestioneCollo; - private String filtro; - - private List testateOrdini; - - public int getId() { - return id; - } - - public RecoverDTO setId(int id) { - this.id = id; - return this; - } - - public int getNumCollo() { - return numCollo; - } - - public RecoverDTO setNumCollo(int numCollo) { - this.numCollo = numCollo; - return this; - } - - public String getSerCollo() { - return serCollo; - } - - public RecoverDTO setSerCollo(String serCollo) { - this.serCollo = serCollo; - return this; - } - - public String getDataCollo() { - return dataCollo; - } - - public RecoverDTO setDataCollo(String dataCollo) { - this.dataCollo = dataCollo; - return this; - } - - public String getGestioneCollo() { - return gestioneCollo; - } - - public RecoverDTO setGestioneCollo(String gestioneCollo) { - this.gestioneCollo = gestioneCollo; - return this; - } - - public String getFiltro() { - return filtro; - } - - public RecoverDTO setFiltro(String filtro) { - this.filtro = filtro; - return this; - } - - public List getTestateOrdini() { - return testateOrdini; - } - - public RecoverDTO setTestateOrdini(List testateOrdini) { - this.testateOrdini = testateOrdini; - return this; - } - - - public MtbColt getMtbColt() { - return new MtbColt() - .setNumCollo(getNumCollo()) - .setSerCollo(getSerCollo()) - .setGestione(getGestioneCollo()) - .setDataCollo(getDataCollo()) - .setFiltroOrdini(getFiltro()); - } - } - - private static AppCompatActivity mContext; - - private static List mtbColtsSessions = new ArrayList<>(); - - public static void init(AppCompatActivity context) { - mContext = context; - - if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) { - loadLocalFile(); - } - } - - public static boolean thereIsAnExistantSession() { - return mtbColtsSessions != null && mtbColtsSessions.size() > 0; - } - - public static List getAllSessionIDs() { - if(thereIsAnExistantSession()) { - - return Stream.of(mtbColtsSessions) - .map(RecoverDTO::getId) - .toList(); - - } else return null; - } - - public static RecoverDTO getSession(Integer sessionID) { - - if(sessionID == null) return null; - - return getIfExists(sessionID); - } - - private static RecoverDTO getIfExists(int id) { - Optional recoverDTOOptional = Stream.of(mtbColtsSessions) - .filter(x -> x.getId() == id) - .findSingle(); - - - return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null; - } - - public static int startNewSession(MtbColt mtbColtSession, List testateOrdini) { - Integer newId = null; - - while(newId == null) { - int randomId = new Random().nextInt(1000); - RecoverDTO dto = getIfExists(randomId); - if(dto == null) newId = randomId; - } - - - RecoverDTO recoverDTO = new RecoverDTO() - .setId(newId) - .setDataCollo(mtbColtSession.getDataColloS()) - .setNumCollo(mtbColtSession.getNumCollo()) - .setSerCollo(mtbColtSession.getSerCollo()) - .setGestioneCollo(mtbColtSession.getGestione()) - .setFiltro(mtbColtSession.getFiltroOrdini()) - .setTestateOrdini(testateOrdini); - - mtbColtsSessions.add(recoverDTO); - updateLocalFile(); - return newId; - } - - public static void closeSession(int ID) { - RecoverDTO dto = getIfExists(ID); - - if(dto != null) { - mtbColtsSessions.remove(dto); - updateLocalFile(); - } - } - - - private static void loadLocalFile() { - InputStream inputStream; - - Gson gson = new Gson(); - - try { - inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE); - - byte[] bytes = new byte[inputStream.available()]; - inputStream.read(bytes); - inputStream.close(); - - String jsonString = new String(bytes); - - Type listType = new TypeToken>(){}.getType(); - mtbColtsSessions = gson.fromJson(jsonString, listType); - - if(mtbColtsSessions == null) mtbColtsSessions = new ArrayList<>(); - } catch (Exception e) { - e.printStackTrace(); - UtilityExceptions.defaultException(mContext, e); - } - } - - - private static void updateLocalFile() { - FileOutputStream outputStream; - - Gson gson = new Gson(); - String jsonText = gson.toJson(mtbColtsSessions); - - try { - outputStream = mContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE); - outputStream.write(jsonText.getBytes()); - outputStream.close(); - } catch (Exception e) { - e.printStackTrace(); - UtilityExceptions.defaultException(mContext, e); - } - } - - private static boolean isFilePresent(String fileName) { - String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName; - File file = new File(path); - return file.exists(); - } - - -} 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 ca313714..c19968d8 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,8 +2,6 @@ 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; @@ -24,22 +22,20 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; @Singleton public class ColliDataRecoverService { - private AppCompatActivity mContext; + private final Context mApplicationContext; private List mtbColtsSessions = new ArrayList<>(); - @Inject - public ColliDataRecoverService() { + public ColliDataRecoverService(Context applicationContext) { + this.mApplicationContext = applicationContext; } - public void init(AppCompatActivity appCompatActivity) { - this.mContext = appCompatActivity; - + @Inject + public void init() { if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) { loadLocalFile(); } @@ -114,7 +110,7 @@ public class ColliDataRecoverService { Gson gson = new Gson(); try { - inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE); + inputStream = mApplicationContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE); byte[] bytes = IOUtils.readInputStreamFully(inputStream); String jsonString = new String(bytes); @@ -125,7 +121,7 @@ public class ColliDataRecoverService { inputStream.close(); } catch (Exception e) { e.printStackTrace(); - UtilityExceptions.defaultException(mContext, e); +// UtilityExceptions.defaultException(mContext, e); } } @@ -137,17 +133,17 @@ public class ColliDataRecoverService { String jsonText = gson.toJson(mtbColtsSessions); try { - outputStream = mContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE); + outputStream = mApplicationContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE); outputStream.write(jsonText.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); - UtilityExceptions.defaultException(mContext, e); +// UtilityExceptions.defaultException(mContext, e); } } private boolean isFilePresent(String fileName) { - String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName; + String path = mApplicationContext.getFilesDir().getAbsolutePath() + "/" + fileName; File file = new File(path); return file.exists(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBigDecimal.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBigDecimal.java new file mode 100644 index 00000000..7ee35f86 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBigDecimal.java @@ -0,0 +1,110 @@ +package it.integry.integrywmsnative.core.di; + +import androidx.annotation.NonNull; +import androidx.databinding.Bindable; +import androidx.databinding.Observable; +import androidx.databinding.PropertyChangeRegistry; + +import java.math.BigDecimal; + +public class BindableBigDecimal implements Observable { + + BigDecimal mValue; + + private transient PropertyChangeRegistry mCallbacks; + + public BindableBigDecimal() { + } + + public BindableBigDecimal(BigDecimal startValue) { + this.mValue = startValue; + } + + + @Override + public void addOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) { + synchronized (this) { + if (mCallbacks == null) { + mCallbacks = new PropertyChangeRegistry(); + } + } + mCallbacks.add(callback); + } + + public void addOnPropertyChangedCallback(@NonNull Runnable callback) { + synchronized (this) { + if (mCallbacks == null) { + mCallbacks = new PropertyChangeRegistry(); + } + } + mCallbacks.add(new OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + callback.run(); + } + }); + } + + @Override + public void removeOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) { + synchronized (this) { + if (mCallbacks == null) { + return; + } + } + mCallbacks.remove(callback); + } + + public void resetOnPropertyChangedCallback() { + synchronized (this) { + if (mCallbacks == null) { + return; + } + } + mCallbacks.clear(); + mCallbacks = null; + } + + /** + * Notifies listeners that all properties of this instance have changed. + */ + public void notifyChange() { + synchronized (this) { + if (mCallbacks == null) { + return; + } + } + mCallbacks.notifyCallbacks(this, 0, null); + } + + /** + * Notifies listeners that a specific property has changed. The getter for the property + * that changes should be marked with {@link Bindable} to generate a field in + * BR to be used as fieldId. + * + * @param fieldId The generated BR id for the Bindable field. + */ + public void notifyPropertyChanged(int fieldId) { + synchronized (this) { + if (mCallbacks == null) { + return; + } + } + mCallbacks.notifyCallbacks(this, fieldId, null); + } + + public BigDecimal get() { + return mValue; + } + + public void set(BigDecimal value) { + this.set(value, false); + } + + public void set(BigDecimal value, boolean forceRefresh) { + if (!mValue.equals(value) || forceRefresh) { + this.mValue = value; + notifyChange(); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java index f82a1b33..b32ac914 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java @@ -1,12 +1,11 @@ package it.integry.integrywmsnative.core.di; import androidx.annotation.NonNull; -import androidx.databinding.BaseObservable; import androidx.databinding.Bindable; import androidx.databinding.Observable; import androidx.databinding.PropertyChangeRegistry; -public class BindableBoolean implements Observable { +public class BindableBoolean implements Observable { boolean mValue; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java index 089702ba..d36e21a0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di; import android.app.DatePickerDialog; import android.content.res.ColorStateList; +import android.text.SpannableString; import android.util.Log; import android.view.View; import android.widget.AutoCompleteTextView; @@ -37,11 +38,13 @@ import java.util.Locale; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class Converters { @@ -244,8 +247,8 @@ public class Converters { } } - @BindingAdapter({"binding"}) - public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField observableDate) { + @BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false) + public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) { Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); if (pair == null || pair.first != observableDate) { if (pair != null) { @@ -274,8 +277,20 @@ public class Converters { DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(), (cView, year, month, day) -> { Date resultDate = new GregorianCalendar(year, month, day).getTime(); - view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - observableDate.set(resultDate); + + if(parentFragment != null && warningOnOldDates && resultDate.before(new Date())) { + DialogSimpleMessageView + .makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> { + view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + observableDate.set(resultDate); + }, () -> { + + }) + .show(parentFragment.requireActivity().getSupportFragmentManager(), "tag"); + } else { + view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + observableDate.set(resultDate); + } }, mYear, mMonth, mDay); datePickerDialog.show(); }; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java index 4bb3dc50..89bb6199 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java @@ -6,6 +6,7 @@ import android.view.KeyEvent; import androidx.appcompat.app.AppCompatActivity; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; public class BaseActivity extends AppCompatActivity { @@ -38,19 +39,45 @@ public class BaseActivity extends AppCompatActivity { } - protected void openProgress() { - BarcodeManager.disable(); - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); - } + runOnUiThread(() -> { + BarcodeManager.disable(); + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + } + }); } protected void closeProgress() { - BarcodeManager.enable(); - if (mCurrentProgress != null) { - mCurrentProgress.dismiss(); - mCurrentProgress = null; - } + runOnUiThread(() -> { + BarcodeManager.enable(); + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + }); + } + + + public void onLoadingStarted() { + new Thread(() -> { + BarcodeManager.disable(); + this.openProgress(); + }).start(); + } + + public void onLoadingEnded() { + new Thread(() -> { + this.closeProgress(); + BarcodeManager.enable(); + }).start(); + } + + public void onError(Exception ex) { + this.runOnUiThread(() -> { + this.closeProgress(); + UtilityExceptions.defaultException(this, ex, mCurrentProgress); + BarcodeManager.enable(); + }); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java index 3f283249..7ede3676 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java @@ -2,14 +2,18 @@ package it.integry.integrywmsnative.core.expansion; import android.app.Dialog; import android.os.Bundle; +import android.util.Log; import android.view.KeyEvent; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; public class BaseDialogFragment extends DialogFragment { @@ -22,6 +26,17 @@ public class BaseDialogFragment extends DialogFragment { } + @Override + public void show(FragmentManager manager, String tag) { + try { + FragmentTransaction ft = manager.beginTransaction(); + ft.add(this, tag); + ft.commit(); + } catch (IllegalStateException e) { + Log.d("ABSDIALOGFRAG", "Exception", e); + } + } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -65,7 +80,7 @@ public class BaseDialogFragment extends DialogFragment { protected void openProgress() { // new Thread(() -> { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { if (this.mCurrentProgress == null) { this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); } @@ -75,7 +90,7 @@ public class BaseDialogFragment extends DialogFragment { protected void closeProgress() { // new Thread(() -> { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { if (mCurrentProgress != null) { mCurrentProgress.dismiss(); mCurrentProgress = null; @@ -83,4 +98,12 @@ public class BaseDialogFragment extends DialogFragment { }); // }).start(); } + + + public void onError(Exception ex) { + requireActivity().runOnUiThread(() -> { + this.closeProgress(); + UtilityExceptions.defaultException(requireActivity(), ex); + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java index 74dd8c0d..6f19b3a2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java @@ -4,38 +4,40 @@ import android.app.Dialog; import androidx.fragment.app.Fragment; +import java.util.ArrayList; +import java.util.List; + import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.ui.ElevatedToolbar; -public class BaseFragment extends Fragment { +public abstract class BaseFragment extends Fragment { protected Dialog mCurrentProgress; + protected ElevatedToolbar mToolbar; - protected void openProgress() { + protected final List mOnPreDestroyList = new ArrayList<>(); -// new Thread(() -> { - getActivity().runOnUiThread(() -> { - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); - } - }); -// }).start(); + + + + public void setScrollToolbar(ElevatedToolbar toolbar) { + mToolbar = toolbar; } - protected void closeProgress() { -// new Thread(() -> { - getActivity().runOnUiThread(() -> { - if (mCurrentProgress != null) { - mCurrentProgress.dismiss(); - mCurrentProgress = null; - } - }); -// }).start(); + + public void addOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); } + + + + public void onLoadingStarted() { new Thread(() -> { BarcodeManager.disable(); @@ -57,4 +59,35 @@ public class BaseFragment extends Fragment { BarcodeManager.enable(); }); } + + + @Override + public void onDestroy() { + super.onDestroy(); + + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + } + + protected void openProgress() { + getActivity().runOnUiThread(() -> { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + }); + } + + protected void closeProgress() { + getActivity().runOnUiThread(() -> { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + }); + } + + protected void popMe() { + ((IPoppableActivity) requireActivity()).pop(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java new file mode 100644 index 00000000..6ed857c3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java @@ -0,0 +1,34 @@ +package it.integry.integrywmsnative.core.menu; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.StbMenu; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +@Singleton +public class MenuRESTConsumer extends _BaseRESTConsumer { + + public void retrieveMenu(String rootCodOpz, RunnableArgs onComplete, RunnableArgs onFailed) { + MenuRESTConsumerService menuRESTConsumerService = RESTBuilder.getService(MenuRESTConsumerService.class); + menuRESTConsumerService.retrieveMenuConfig(rootCodOpz).enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "retrieveMenu", (m) -> { + onComplete.run(response.body().getEntity()); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumerService.java new file mode 100644 index 00000000..5013008d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumerService.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.core.menu; + +import it.integry.integrywmsnative.core.model.StbMenu; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface MenuRESTConsumerService { + + @GET("retrieveMenuConfig") + Call> retrieveMenuConfig(@Query("rootCodOpz") String rootCodOpz); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java new file mode 100644 index 00000000..bdc1f118 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/MenuService.java @@ -0,0 +1,76 @@ +package it.integry.integrywmsnative.core.menu; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; +import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.menu.exception.MenuNotFoundException; +import it.integry.integrywmsnative.core.model.StbMenu; + +@Singleton +public class MenuService { + + private static final String MENU_COD_OPZ = "MM007"; + + private final MenuRESTConsumer menuRESTConsumer; + + private List mInternalCachedMenu; + private List mInternalCachedFlatMenu; + + @Inject + public MenuService(MenuRESTConsumer menuRESTConsumer) { + this.menuRESTConsumer = menuRESTConsumer; + } + + public void init(Runnable onMenuInitialized, RunnableArgs onFailed) { + menuRESTConsumer.retrieveMenu(MENU_COD_OPZ, menu -> { + if(menu != null) { + this.mInternalCachedMenu = menu.getStbMenuChildren(); + this.mInternalCachedFlatMenu = new ArrayList<>(); + flattenMenu(this.mInternalCachedMenu); + } + + onMenuInitialized.run(); + }, onFailed); + } + + public List getMenu() throws Exception { + if(mInternalCachedMenu == null) throw new MenuNotFoundException(); + + return mInternalCachedMenu; + } + + + public boolean isGroupEnabled(MenuConfiguration.MenuGroup androidMenuGroup) throws Exception { + List dbMenu = getMenu(); + + return Stream.of(this.mInternalCachedFlatMenu) + .anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuGroup.getCodMenu())); + } + + + public boolean isItemEnabled(BaseMenuConfiguration.MenuItem androidMenuItem) throws Exception { + List dbMenu = getMenu(); + + return Stream.of(this.mInternalCachedFlatMenu) + .anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuItem.getCodMenu())); + } + + private void flattenMenu(List menu) { + for(StbMenu stbMenu : menu) { + this.mInternalCachedFlatMenu.add(stbMenu); + + if(stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) { + flattenMenu(stbMenu.getStbMenuChildren()); + } + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java new file mode 100644 index 00000000..c631fefd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/menu/exception/MenuNotFoundException.java @@ -0,0 +1,8 @@ +package it.integry.integrywmsnative.core.menu.exception; + +public class MenuNotFoundException extends Exception{ + + public MenuNotFoundException() { + super("Non è stato possibile caricare il menĂ¹"); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java b/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java deleted file mode 100644 index a5ca465c..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java +++ /dev/null @@ -1,73 +0,0 @@ -package it.integry.integrywmsnative.core.model; - -import androidx.databinding.Observable; - -import java.util.List; - -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.di.BindableFloat; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListItemModel; - -public class CheckableOrdineLavoro { - - - private ChooseOrdsLavFromListItemModel item; - private BindableBoolean checked = new BindableBoolean(false); - - private String testata; - - public CheckableOrdineLavoro(ChooseOrdsLavFromListItemModel item) { - this.item = item; - } - - public ChooseOrdsLavFromListItemModel getItem() { - return item; - } - - public CheckableOrdineLavoro setItem(ChooseOrdsLavFromListItemModel item) { - this.item = item; - - return this; - } - - public BindableBoolean getChecked() { - return checked; - } - - public CheckableOrdineLavoro setChecked(BindableBoolean checked) { - this.checked = checked; - return this; - } - - public BindableFloat getQtaCol() { - return item.getOrdineLav().getQtaColVersamento(); - } - - public void setQtaCol(float qtaCnf) { - this.item.getOrdineLav().setQtaColVersamento(qtaCnf); - } - - public void toggleCheck() { - this.checked.set(!this.checked.get()); - } - - public boolean isChecked() { - return checked.get(); - } - - public String getTestata() { - return testata; - } - - public void setTestata(String testata) { - this.testata = testata; - } - - public BindableFloat getNumCnf() { - return item.getOrdineLav().getNumCnfVersamento(); - } - - public void setNumCnf(float numCnf) { - this.item.getOrdineLav().setNumCnfVersamento(numCnf); - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java index 673b0e2d..a73a097f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java @@ -53,6 +53,8 @@ public class MtbColr extends EntityBase { private MtbAart mtbAart; private MtbPartitaMag mtbPartitaMag; + + private transient int id; private transient MtbColr refMtbColr; public MtbColr() { @@ -516,6 +518,15 @@ public class MtbColr extends EntityBase { return this; } + public int getId() { + return id; + } + + public MtbColr setId(int id) { + this.id = id; + return this; + } + public MtbColr getRefMtbColr() { return refMtbColr; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbPartitaMag.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbPartitaMag.java index d54a04a2..f677fc1b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbPartitaMag.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbPartitaMag.java @@ -5,7 +5,7 @@ import java.util.Date; import it.integry.integrywmsnative.core.utility.UtilityDate; -public class MtbPartitaMag { +public class MtbPartitaMag extends EntityBase{ private String codMart; private String partitaMag; @@ -30,6 +30,10 @@ public class MtbPartitaMag { private String partitaMagSec; private BigDecimal qtaAttesa; + public MtbPartitaMag() { + this.type = "mtb_partita_mag"; + } + public String getCodMart() { return codMart; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/StbMenu.java b/app/src/main/java/it/integry/integrywmsnative/core/model/StbMenu.java new file mode 100644 index 00000000..f1b39678 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/StbMenu.java @@ -0,0 +1,217 @@ +package it.integry.integrywmsnative.core.model; + +import java.util.ArrayList; +import java.util.List; + +public class StbMenu extends EntityBase { + + public StbMenu() { + this.type = "stb_menu"; + } + + private String codOpz; + private String codParent; + private String tipoAzienda; + private String descrizione; + private String descrizioneEstesa; + private String entityName; + private String flagAttivo; + private String flagPrinterSetup; + private String gestName; + private String note; + private String objectType; + private String openType; + private String parameter; + private String pictureMenu; + private String pictureSelect; + private Integer pos; + private Integer posCliente; + private Integer posTipoAzienda; + private String urlDescrizione; + + private final List stbMenuChildren = new ArrayList<>(); + + public String getCodOpz() { + return codOpz; + } + + public StbMenu setCodOpz(String codOpz) { + this.codOpz = codOpz; + return this; + } + + public String getCodParent() { + return codParent; + } + + public StbMenu setCodParent(String codParent) { + this.codParent = codParent; + return this; + } + + public String getTipoAzienda() { + return tipoAzienda; + } + + public StbMenu setTipoAzienda(String tipoAzienda) { + this.tipoAzienda = tipoAzienda; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public StbMenu setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getDescrizioneEstesa() { + return descrizioneEstesa; + } + + public StbMenu setDescrizioneEstesa(String descrizioneEstesa) { + this.descrizioneEstesa = descrizioneEstesa; + return this; + } + + public String getEntityName() { + return entityName; + } + + public StbMenu setEntityName(String entityName) { + this.entityName = entityName; + return this; + } + + public String getFlagAttivo() { + return flagAttivo; + } + + public StbMenu setFlagAttivo(String flagAttivo) { + this.flagAttivo = flagAttivo; + return this; + } + + public String getFlagPrinterSetup() { + return flagPrinterSetup; + } + + public StbMenu setFlagPrinterSetup(String flagPrinterSetup) { + this.flagPrinterSetup = flagPrinterSetup; + return this; + } + + public String getGestName() { + return gestName; + } + + public StbMenu setGestName(String gestName) { + this.gestName = gestName; + return this; + } + + public String getNote() { + return note; + } + + public StbMenu setNote(String note) { + this.note = note; + return this; + } + + public String getObjectType() { + return objectType; + } + + public StbMenu setObjectType(String objectType) { + this.objectType = objectType; + return this; + } + + public String getOpenType() { + return openType; + } + + public StbMenu setOpenType(String openType) { + this.openType = openType; + return this; + } + + public String getParameter() { + return parameter; + } + + public StbMenu setParameter(String parameter) { + this.parameter = parameter; + return this; + } + + public String getPictureMenu() { + return pictureMenu; + } + + public StbMenu setPictureMenu(String pictureMenu) { + this.pictureMenu = pictureMenu; + return this; + } + + public String getPictureSelect() { + return pictureSelect; + } + + public StbMenu setPictureSelect(String pictureSelect) { + this.pictureSelect = pictureSelect; + return this; + } + + public Integer getPos() { + return pos; + } + + public StbMenu setPos(Integer pos) { + this.pos = pos; + return this; + } + + public Integer getPosCliente() { + return posCliente; + } + + public StbMenu setPosCliente(Integer posCliente) { + this.posCliente = posCliente; + return this; + } + + public Integer getPosTipoAzienda() { + return posTipoAzienda; + } + + public StbMenu setPosTipoAzienda(Integer posTipoAzienda) { + this.posTipoAzienda = posTipoAzienda; + return this; + } + + public String getType() { + return type; + } + + public StbMenu setType(String type) { + this.type = type; + return this; + } + + public String getUrlDescrizione() { + return urlDescrizione; + } + + public StbMenu setUrlDescrizione(String urlDescrizione) { + this.urlDescrizione = urlDescrizione; + return this; + } + + public List getStbMenuChildren() { + return stbMenuChildren; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java index d3af8845..e3678e0a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java @@ -17,12 +17,10 @@ import retrofit2.converter.gson.GsonConverterFactory; public class RESTBuilder { public static T getService(final Class service) { -// return getService(service, "192.168.2.13", 8080); return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true); } public static T getService(final Class service, int timeout) { -// return getService(service, "192.168.2.13", 8080); return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout); } @@ -54,17 +52,12 @@ public class RESTBuilder { .setDateFormat("dd/MM/yyyy HH:mm:ss") .create(); - - - Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create(gson)) .baseUrl(endpoint) .client(client) .build(); - - return retrofit.create(service); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index c1f4e2a4..185de530 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -18,7 +18,8 @@ import retrofit2.Response; @Singleton public class ArticoloRESTConsumer extends _BaseRESTConsumer { - public static void getByBarcodeProdStatic(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) { + + public void getByBarcodeProd(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) { ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class); articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback>() { @Override @@ -35,10 +36,6 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { }); } - public void getByBarcodeProd(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) { - getByBarcodeProdStatic(barcodeProd, onComplete, onFailed); - } - public void getByCodMarts(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) { getByCodMartsStatic(codMartToFind, onComplete, onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java index 31ab699a..c03668da 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java @@ -16,7 +16,7 @@ import retrofit2.Response; @Singleton public class BarcodeRESTConsumer extends _BaseRESTConsumer { - public static void decodeEan128Static(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) { + public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) { IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION); @@ -42,8 +42,4 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer { } }); } - - public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) { - BarcodeRESTConsumer.decodeEan128Static(barcodeObj, onComplete, onFailed); - } } 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 e1ab5b2e..c9bf2a9e 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 @@ -45,30 +45,19 @@ import retrofit2.Response; @Singleton public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { - private ArticoloRESTConsumer mArticoloRESTConsumer; + private final SystemRESTConsumer mSystemRESTConsumer; + private final ArticoloRESTConsumer mArticoloRESTConsumer; + private final EntityRESTConsumer mEntityRESTConsumer; - public ColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) { + public ColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer, + ArticoloRESTConsumer articoloRESTConsumer, + EntityRESTConsumer entityRESTConsumer) { + this.mSystemRESTConsumer = systemRESTConsumer; this.mArticoloRESTConsumer = articoloRESTConsumer; - } - - - public static void saveColloStatic(MtbColt mtbColtToSave, final ISimpleOperationCallback callback) { - - for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) { - mtbColtToSave.getMtbColr().get(i) - .setMtbAart(null) - .setMtbPartitaMag(null); - } - - EntityRESTConsumer.processEntity(mtbColtToSave, callback, MtbColt.class); - + this.mEntityRESTConsumer = entityRESTConsumer; } public void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSave, onComplete, onFailed); - } - - public static void saveColloStatic(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone(); mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); @@ -81,7 +70,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null)); } - EntityRESTConsumer.processEntity(mtbColtToSaveClone, new ISimpleOperationCallback() { + this.mEntityRESTConsumer.processEntity(mtbColtToSaveClone, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(value); @@ -96,10 +85,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void saveColli(List mtbColtsToSave, RunnableArgs> onComplete, RunnableArgs onFailed) { - saveColliStatic(mtbColtsToSave, onComplete, onFailed); - } - - public static void saveColliStatic(List mtbColtsToSave, RunnableArgs> onComplete, RunnableArgs onFailed) { for (MtbColt mtbColt : mtbColtsToSave) { mtbColt.setMtbCols(null); @@ -111,17 +96,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } } - EntityRESTConsumer.processEntityList(mtbColtsToSave, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { - if (onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if (onFailed != null) onFailed.run(ex); - } - }, true, MtbColt.class); + this.mEntityRESTConsumer.processEntityList(mtbColtsToSave, true, MtbColt.class, onComplete, onFailed); } @@ -143,7 +118,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public static void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs onComplete, RunnableArgs onFailed) { + public void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt newMtbColt = new MtbColt() .initDefaultFields() @@ -193,20 +168,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - saveColloStatic(newMtbColt, new ISimpleOperationCallback() { - @Override - public void onSuccess(MtbColt value) { - if (onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if (onFailed != null) onFailed.run(ex); - } - }); + saveCollo(newMtbColt, onComplete, onFailed); } - public static void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List ordini, RunnableArgs onComplete, RunnableArgs onFailed) { + public void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List ordini, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt newMtbColt = new MtbColt() .initDefaultFields() @@ -214,8 +179,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setGestione(GestioneEnum.LAVORAZIONE) .setSegno(-1) .setCodTcol(sourceMtbColt.getCodTcol()) - .setPesoKg(sourceMtbColt.getPesoKg()) - .setPesoNettoKg(sourceMtbColt.getPesoNettoKg()) +// .setPesoKg(sourceMtbColt.getPesoKg()) +// .setPesoNettoKg(sourceMtbColt.getPesoNettoKg()) .setLarghezzaCm(sourceMtbColt.getLarghezzaCm()) .setLunghezzaCm(sourceMtbColt.getLunghezzaCm()) .setAltezzaCm(sourceMtbColt.getAltezzaCm()) @@ -269,18 +234,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - - saveColloStatic(newMtbColt, new ISimpleOperationCallback() { - @Override - public void onSuccess(MtbColt value) { - if (onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if (onFailed != null) onFailed.run(ex); - } - }); + saveCollo(newMtbColt, onComplete, onFailed); } @@ -314,11 +268,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { mtbColtToCreate .setOperation(CommonModelConsts.OPERATION.INSERT); - saveCollo(mtbColtToCreate, value -> { - if (onComplete != null) onComplete.run(value); - }, ex -> { - if (onFailed != null) onFailed.run(ex); - }); + saveCollo(mtbColtToCreate, onComplete, onFailed); } public void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) { @@ -327,9 +277,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { saveCollo(mtbColtToDelete, value -> { if (onComplete != null) onComplete.run(); - }, ex -> { - if (onFailed != null) onFailed.run(ex); - }); + }, onFailed); } public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs> onComplete, RunnableArgs onFailed) { @@ -374,10 +322,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumer.getBySSCCStatic(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed); - } - - public static void getBySSCCStatic(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback>() { @Override @@ -447,10 +391,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumer.getMultipleByTestateStatic(testate, onlyResiduo, onComplete, onFailed); - } - - public static void getMultipleByTestateStatic(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) { ArrayList resultMtbColt = new ArrayList<>(); cyclicGetMultipleByTestate(testate.iterator(), onlyResiduo, resultMtbColt, () -> { onComplete.run(resultMtbColt); @@ -458,9 +398,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - private static void cyclicGetMultipleByTestate(@NotNull Iterator sourceMtbColts, boolean onlyResiduo, ArrayList resultMtbColt, Runnable onComplete, RunnableArgs onAbort) { + private void cyclicGetMultipleByTestate(@NotNull Iterator sourceMtbColts, boolean onlyResiduo, ArrayList resultMtbColt, Runnable onComplete, RunnableArgs onAbort) { if (sourceMtbColts.hasNext()) { - getByTestataStatic(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> { + getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> { resultMtbColt.add(mtbColt); cyclicGetMultipleByTestate(sourceMtbColts, onlyResiduo, resultMtbColt, onComplete, onAbort); }, onAbort); @@ -476,14 +416,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setDataCollo(dataCollo) .setSerCollo(serCollo); - ColliMagazzinoRESTConsumer.getByTestataStatic(mtbColtToRetrieve, onlyResiduo, throwExcIfNull, onComplete, onFailed); + getByTestata(mtbColtToRetrieve, onlyResiduo, throwExcIfNull, onComplete, onFailed); } public void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumer.getByTestataStatic(testata, onlyResiduo, throwExcIfNull, onComplete, onFailed); - } - - public static void getByTestataStatic(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { testata.setMtbColr(new ObservableArrayList<>()); @@ -546,17 +482,13 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void updateDataFine(MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumer.updateDataFineStatic(mtbColt, onComplete, onFailed); - } - - public static void updateDataFineStatic(MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { MtbColt cloneMtbColt = (MtbColt) mtbColt.clone(); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance()); cloneMtbColt.setMtbColr(new ObservableArrayList<>()); - ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { + saveCollo(cloneMtbColt, value -> { onComplete.run(); }, ex -> { if (onFailed != null) onFailed.run(ex); @@ -565,10 +497,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } public void canLUBeDeleted(MtbColt mtbColt, RunnableArgs onComplete, RunnableArgs onFailed) { - ColliMagazzinoRESTConsumer.canLUBeDeletedStatic(mtbColt, onComplete, onFailed); - } - - public static void canLUBeDeletedStatic(MtbColt mtbColt, RunnableArgs onComplete, RunnableArgs onFailed) { HashMap params = new HashMap<>(); params.put("mtb_colt.gestione", mtbColt.getGestione()); @@ -610,7 +538,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - SystemRESTConsumer.>processSqlStatic(query, typeOfObjectsList, data -> { + this.mSystemRESTConsumer.>processSql(query, typeOfObjectsList, data -> { onComplete.run(data != null && data.size() > 0); }, onFailed); } @@ -647,7 +575,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { colliMagazzinoRESTConsumerService.creaRettificaCollo( SettingsManager.i().getUserSession().getDepo().getCodMdep(), rettificaULDTO - ).enqueue(new Callback>() { + ).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "creaRettificaCollo", onComplete, onFailed); @@ -677,9 +605,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setDestinationMtbColt(mtbColtDestClone); ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); - colliMagazzinoRESTConsumerService.spostaArtsTraUL( - spostaArtsTraULRequestDTO - ).enqueue(new Callback>() { + colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "spostaArtsTraUL", data -> { @@ -705,7 +631,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); - colliMagazzinoRESTConsumerService.assegnaLottoSuColloScarico(sourceMtbColtClone).enqueue(new Callback>() { + colliMagazzinoRESTConsumerService.assegnaLottoSuColloScarico(sourceMtbColtClone).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "assegnaLottoSuColloScarico", data -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java index e1a8d5ee..ef61ef87 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java @@ -2,31 +2,39 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbDepo; -import it.integry.integrywmsnative.core.utility.UtilityLogger; -public class DepositoRESTConsumer { +@Singleton +public class DepositoRESTConsumer extends _BaseRESTConsumer { - public static void getDepoByCodMdep(String codMdep, RunnableArgs onComplete) { + private final EntityRESTConsumer entityRESTConsumer; + + public DepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) { + this.entityRESTConsumer = entityRESTConsumer; + } + + public void getDepoByCodMdep(String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) { MtbDepo mtbDepo = new MtbDepo(); mtbDepo.setCodMdep(codMdep); mtbDepo.setOperation(CommonModelConsts.OPERATION.SELECT); mtbDepo.setOnlyPkMaster(false); - EntityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback>() { + this.entityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback<>() { @Override public void onSuccess(List value) { - if(value != null && value.size() > 0) { + if (value != null && value.size() > 0) { onComplete.run(value.get(0)); } } @Override public void onFailed(Exception ex) { - UtilityLogger.errorMe(ex); + onFailed.run(ex); } }, MtbDepo.class); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java index 4af99fc4..832f293d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java @@ -4,42 +4,26 @@ import android.util.Log; import com.google.gson.Gson; import com.google.gson.JsonObject; -import com.google.gson.reflect.TypeToken; -import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.EntityBase; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.EsitoType; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.model.EntityBase; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; -public class EntityRESTConsumer { - - public static void processEntity(T entityToSave, RunnableArgs onComplete, RunnableArgs onFailed, Class type) { - - processEntity(entityToSave, new ISimpleOperationCallback() { - @Override - public void onSuccess(T value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } - }, type); - - } +@Singleton +public class EntityRESTConsumer extends _BaseRESTConsumer { - public static void processEntity(T entityToSave, final ISimpleOperationCallback callback, Class type) { + public void processEntity(T entityToSave, final ISimpleOperationCallback callback, Class type) { RunnableArgs tmpFailed = ex -> { if (callback != null) callback.onFailed(ex); @@ -48,7 +32,7 @@ public class EntityRESTConsumer { EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); service .processEntity(entityToSave) - .enqueue(new Callback>() { + .enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { @@ -82,16 +66,16 @@ public class EntityRESTConsumer { } - public static void processEntityList(List entitiesToSave, final ISimpleOperationCallback> callback, boolean singleTransaction, Class type) { + public void processEntityList(List entitiesToSave, boolean singleTransaction, Class type, final RunnableArgs> onComplete, final RunnableArgs onFailed) { RunnableArgs tmpFailed = ex -> { // UtilityExceptions.defaultException(null, ex); - if (callback != null) callback.onFailed(ex); + if (onFailed != null) onFailed.run(ex); }; EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); Call>> request = service.processEntityList(singleTransaction, entitiesToSave); - request.enqueue(new Callback>>() { + request.enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { if (response.isSuccessful()) { @@ -115,7 +99,7 @@ public class EntityRESTConsumer { } } - callback.onSuccess(responseList); + onComplete.run(responseList); } else { Log.e("EntityRESTConsumer", response.message()); tmpFailed.run(new Exception(response.message())); @@ -136,7 +120,7 @@ public class EntityRESTConsumer { } - public static void selectEntity(T entityToSave, final ISimpleOperationCallback> callback, Class type) { + public void selectEntity(T entityToSave, final ISimpleOperationCallback> callback, Class type) { EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); Call> request = service.processEntity(entityToSave); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java index 0785c8f4..85d91398 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java @@ -29,11 +29,11 @@ public class MesRESTConsumer extends _BaseRESTConsumer { this.mSystemRESTConsumer = systemRESTConsumer; } - public static void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs> onComplete, RunnableArgs onFailed) { MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class); mesRESTConsumerService.getOrdiniLavorazioneMateriale(codJfas, idMateriale) - .enqueue(new Callback>>() { + .enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "getOrdiniLavorazioneMateriale", (m) -> onComplete.run(response.body().getDto()), onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java index 2b34d719..94ed5c74 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.rest.consumers; +import com.annimon.stream.Optional; import com.annimon.stream.Stream; import com.google.gson.reflect.TypeToken; import com.orhanobut.logger.Logger; @@ -8,22 +9,27 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Random; import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.CommonModelConsts; +import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityLogger; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.utility.UtilityQuery; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; -import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO; -import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -32,9 +38,11 @@ import retrofit2.Response; public class OrdiniRESTConsumer extends _BaseRESTConsumer { private final SystemRESTConsumer mSystemRESTConsumer; + private final EntityRESTConsumer mEntityRESTConsumer; - public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { this.mSystemRESTConsumer = systemRESTConsumer; + this.mEntityRESTConsumer = entityRESTConsumer; } public void getSuggestedPickingList(String codMdep, List sitArtOrdList, RunnableArgs> onComplete, RunnableArgs onFailed) { @@ -43,10 +51,59 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { service .getSuggestedPickingList(codMdep, sitArtOrdList) - .enqueue(new Callback>>() { + .enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "getSuggestedPickingList", onComplete, onFailed); + analyzeAnswer(response, "getSuggestedPickingList", pickingObjects -> { + List batchLotsToSearch = new ArrayList<>(); + + for (PickingObjectDTO pickingObjectDTO : pickingObjects) { + for (MtbColt mtbColt : pickingObjectDTO.getMtbColts()) { + Stream.of(mtbColt.getMtbColr()) + .filter(x -> !UtilityString.isNullOrEmpty(x.getPartitaMag())) + .forEach(x -> { + + if (!Stream.of(batchLotsToSearch).anyMatch(batchLotToSearch -> batchLotToSearch.getCodMart().equalsIgnoreCase(x.getCodMart()) && batchLotToSearch.getPartitaMag().equalsIgnoreCase(x.getPartitaMag()))) { + MtbPartitaMag mtbPartitaMag = new MtbPartitaMag() + .setCodMart(x.getCodMart()) + .setPartitaMag(x.getPartitaMag()); + + mtbPartitaMag.setOperation(CommonModelConsts.OPERATION.SELECT_OBJECT); + mtbPartitaMag.setOnlyPkMaster(false); + + batchLotsToSearch.add(mtbPartitaMag); + } + }); + } + } + + Random rand = new Random(); + + + retrievePartiteMag(batchLotsToSearch, partite -> { + + for (PickingObjectDTO pickingObjectDTO : pickingObjects) { + for (MtbColt mtbColt : pickingObjectDTO.getMtbColts()) { + for (MtbColr mtbColr : mtbColt.getMtbColr()) { + + mtbColr.setId(rand.nextInt()); + + Optional optionalMtbPartitaMag = Stream.of(partite) + .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()) + && (!UtilityString.isNullOrEmpty(x.getPartitaMag()) && x.getPartitaMag().equalsIgnoreCase(mtbColr.getPartitaMag()))) + .findFirst(); + + if (optionalMtbPartitaMag.isPresent()) mtbColr.setMtbPartitaMag(optionalMtbPartitaMag.get()); + } + } + } + + onComplete.run(pickingObjects); + + }, onFailed); + + + }, onFailed); } @Override @@ -58,6 +115,11 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { } + private void retrievePartiteMag(List partitaMag, RunnableArgs> onComplete, RunnableArgs onFailed) { + + this.mEntityRESTConsumer.processEntityList(partitaMag, true, MtbPartitaMag.class, onComplete, onFailed); + } + public void getOrdiniInevasi(String codMdep, GestioneEnum gestione, RunnableArgs> onComplete, RunnableArgs onFailed) { OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class); @@ -67,18 +129,18 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { @Override public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "getOrdiniInevasi", responseDtoList -> { - if(responseDtoList == null) responseDtoList = new ArrayList<>(); + if (responseDtoList == null) responseDtoList = new ArrayList<>(); onComplete.run(responseDtoList); }, ex -> { Logger.e(ex, "Errore durante il caricamento degli ordini di lavorazione"); - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } @Override public void onFailure(Call>> call, Throwable t) { Logger.e(t, "Errore durante il caricamento degli ordini di lavorazione"); - if(onFailed != null) onFailed.run(new Exception(t)); + if (onFailed != null) onFailed.run(new Exception(t)); } }); } @@ -113,7 +175,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { public void getBancaliGiaRegistrati(List orders, GestioneEnum gestione, int segno, RunnableArgs> onComplete, RunnableArgs onFailed) { String whereCondGestione = ""; - if(gestione != null) { + if (gestione != null) { whereCondGestione = "mtb_colt.gestione = " + UtilityDB.valueToString(gestione.getText()) + " "; } else { whereCondGestione = "(mtb_colt.gestione = 'V' OR mtb_colt.gestione = 'L') "; @@ -142,12 +204,13 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { baseSql += "(" + UtilityQuery.concatFieldListInWhereCond(whereCondMapList) + ")"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); this.mSystemRESTConsumer.>processSql(baseSql, typeOfObjectsList, value -> { - if(onComplete != null) onComplete.run(value); - }, ex -> { - if(onFailed != null) onFailed.run(ex); - }); + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); + }); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index dc73ded6..c50ac071 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -59,7 +59,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { }); griglia.setGrigliaAcquistiChild(listaArticoli); onSuccess.run(griglia); - }); + }, false); }, onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index 7362e3a0..b5a21cf6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -32,42 +32,14 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailablePrintersStatic(final ISimpleOperationCallback> callback) { - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); - printerService.getAvailablePrinters().enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "GetAvailablePrinters", callback); - } - - @Override - public void onFailure(Call>> call, Throwable t) { - - } - }); - } - public void getAvailablePrinters(String codMdep, final RunnableArgs> onComplete, final RunnableArgs onFailed) { - getAvailablePrintersStatic(codMdep, onComplete, onFailed); - } - - public static void getAvailablePrintersStatic(String codMdep, final RunnableArgs> onComplete, RunnableArgs onFailed) { - PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); - printerService.getAvailablePrinters(codMdep).enqueue(new Callback>>() { + printerService.getAvailablePrinters(codMdep).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { - onComplete.run(value != null ? Stream.of(value).withoutNulls().toList() : null); - } - - @Override - public void onFailed(Exception ex) { - onFailed.run(ex); - } - }); + analyzeAnswer(response, "GetAvailablePrinters", printers -> { + onComplete.run(printers != null ? Stream.of(printers).withoutNulls().toList() : null); + }, onFailed); } @Override @@ -81,15 +53,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { public void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs> onComplete, RunnableArgs onFailed) { - PrinterRESTConsumer.getAvailablePrintersStatic(codMdep, printerType, onComplete, onFailed); - } - - public static void getAvailablePrintersStatic(String codMdep, Type printerType, RunnableArgs> onComplete, RunnableArgs onFailed) { String printerTypeStr = printerType != null ? printerType.toString() : null; PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); - printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback>>() { + printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "GetAvailablePrinters", printerList -> { @@ -108,17 +76,13 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } public void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) { - printColloStatic(printerName, testataColloToPrint, quantity, reportName, onComplete, onFailed); - } - public static void printColloStatic(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) { - - if(BuildConfig.DEBUG) { + if (BuildConfig.DEBUG) { onComplete.run(); return; } - if(UtilityString.isNullOrEmpty(printerName)) { + if (UtilityString.isNullOrEmpty(printerName)) { onFailed.run(new Exception("Nessuna stampante configurata: valore null")); return; } @@ -133,7 +97,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { quantity, reportName) - .enqueue(new Callback>() { + .enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "printCollo", data -> { @@ -143,7 +107,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { @Override public void onFailure(Call> call, Throwable t) { - if(t.getMessage().contains("Printer not found")) { + if (t.getMessage().contains("Printer not found")) { onFailed.run(new NoPrintersFoundException()); } else onFailed.run(new Exception(t)); } @@ -165,7 +129,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); printerService .processPrintReport(printerName, quantity, jasperDTO) - .enqueue(new Callback>() { + .enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "printReport", data -> { @@ -175,11 +139,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { @Override public void onFailure(Call> call, Throwable t) { - if(t.getMessage().contains("Printer not found")) { + if (t.getMessage().contains("Printer not found")) { onFailed.run(new NoPrintersFoundException()); } else onFailed.run(new Exception(t)); } - }); + }); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index 60c7e305..af2494ae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -42,27 +42,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { nativeSqlDTO.nativeSql = nativeSql; SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); - service.processSql(nativeSqlDTO).enqueue(new Callback>() { + service.processSql(nativeSqlDTO).enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "ProcessSql", new ISimpleOperationCallback() { - @Override - public void onSuccess(Object value) { - Gson gson = new Gson(); - String json = gson.toJson(value); + analyzeAnswer(response, "ProcessSql", o -> { + Gson gson = new Gson(); + String json = gson.toJson(o); - InputStream ims = new ByteArrayInputStream(json.getBytes()); - Reader reader = new InputStreamReader(ims); - T gsonObj = gson.fromJson(reader, clazz); + InputStream ims = new ByteArrayInputStream(json.getBytes()); + Reader reader = new InputStreamReader(ims); + T gsonObj = gson.fromJson(reader, clazz); - onComplete.run(gsonObj); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } - }); + onComplete.run(gsonObj); + }, onFailed); } @Override @@ -73,6 +65,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { }); } + public static void processSqlStatic(String nativeSql, final Type clazz, final ISimpleOperationCallback callback) { processSqlStatic(nativeSql, clazz, data -> { @@ -86,19 +79,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailableProfiles(final ISimpleOperationCallback> callback){ + public static void getAvailableProfiles(final RunnableArgs> onSuccess, RunnableArgs onFailed) { SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); service.getAvailableProfiles(SettingsManager.i().getUser().getUsername(), SettingsManager.i().getUser().getPassword()).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "ProfilesAvailable", callback); + analyzeAnswer(response, "ProfilesAvailable", onSuccess, onFailed); } @Override public void onFailure(Call>> call, final Throwable t) { Log.e("ProfilesAvailable", t.toString()); - callback.onFailed(new Exception(t)); + onFailed.run(new Exception(t)); UtilityLogger.errorMe(new Exception(t)); } }); @@ -107,23 +100,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { } - - - - public static void getAvailableCodMdeps(final ISimpleOperationCallback> callback){ + public static void getAvailableCodMdeps(final RunnableArgs> onSuccess, RunnableArgs onFailed) { SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); - service.getAvailableCodMdeps().enqueue(new Callback>>() { + service.getAvailableCodMdeps().enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "CodMdepsAvailable", callback); + analyzeAnswer(response, "CodMdepsAvailable", onSuccess, onFailed); } @Override public void onFailure(Call>> call, final Throwable t) { Log.e("CodMdepsAvailable", t.toString()); - callback.onFailed(new Exception(t)); -// UtilityLogger.errorMe(new Exception(t)); + onFailed.run(new Exception(t)); } }); } @@ -139,7 +128,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB()) ? "" : " [" + SettingsManager.i().getUserSession().getProfileDB() + "]"; String dest = ""; - if(BuildConfig.DEBUG) { + if (BuildConfig.DEBUG) { dest = TextUtils.join(";", CommonConst.Mail.forErrorsDebug); } else { dest = TextUtils.join(";", CommonConst.Mail.forErrors); @@ -155,10 +144,10 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { .setHtml(true); sendMail(mailDTO, () -> { - if(onComplete != null) onComplete.run(); + if (onComplete != null) onComplete.run(); }, ex -> { Log.e(SystemRESTConsumer.class.getName(), "", ex); - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } @@ -169,12 +158,12 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { service.sendMail(mailDTO).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - if(onComplete != null) onComplete.run(); + if (onComplete != null) onComplete.run(); } @Override public void onFailure(Call> call, Throwable t) { - if(onFailed != null) { + if (onFailed != null) { onFailed.run(new Exception(t)); } } @@ -182,21 +171,21 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { } - public static void getAzienda(RunnableArgs onComplete, RunnableArgs onFailed) { String sql = "SELECT TOP 1 * FROM azienda"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { - if(onComplete != null) onComplete.run(value.get(0)); + if (onComplete != null) onComplete.run(value.get(0)); } @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/core/rest/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java index 9257eefb..62a5620b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java @@ -14,96 +14,78 @@ import retrofit2.Response; public class _BaseRESTConsumer { - - public static void analyzeAnswer(Response> response, String logTitle, final ISimpleOperationCallback callback) { + public static void analyzeAnswer(Response> response, String logTitle, RunnableArgs onComplete, RunnableArgs onFailed) { if (response.isSuccessful()) { if (response.body() != null) { if (response.body().getEsito() == EsitoType.OK) { if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { - callback.onFailed(new Exception(response.body().getErrorMessage())); + onFailed.run(new Exception(response.body().getErrorMessage())); } else { T dataObj = response.body().getDto() != null ? response.body().getDto() : response.body().getEntity(); - callback.onSuccess(dataObj); + onComplete.run(dataObj); } } else { Log.e(logTitle, response.body().getErrorMessage()); // callback.onFailed(new Exception(response.body().getErrorMessage())); - callback.onFailed(CommonRESTException.tryRecognizeException(response.body().getErrorMessage())); + onFailed.run(CommonRESTException.tryRecognizeException(response.body().getErrorMessage())); } } else { Log.e(logTitle, response.message()); - callback.onFailed(new Exception(response.message())); + onFailed.run(new Exception(response.message())); } } else { - Log.e(logTitle, "Status " + response.code() + ": " + response.message()); - callback.onFailed(new Exception("Status " + response.code() + ": " + response.message())); - } - } - - public static void analyzeAnswer(Response> response, String logTitle, RunnableArgs onComplete, RunnableArgs onFailed) { - analyzeAnswer(response, logTitle, new ISimpleOperationCallback() { - @Override - public void onSuccess(T value) { - onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - onFailed.run(ex); - } - }); - } - - - public static void analyzeAnswerList(Response> response, String logTitle, final ISimpleOperationCallback> callback) { - if (response.isSuccessful()) { - if (response.body() != null) { - if (response.body().getEsito() == EsitoType.OK) { - if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { - callback.onFailed(new Exception(response.body().getErrorMessage())); - } else { - - List dataObj = response.body().getEntityList(); - - callback.onSuccess(dataObj); - } - } else { - Log.e(logTitle, response.body().getErrorMessage()); - callback.onFailed(new Exception(response.body().getErrorMessage())); - } + if (response.code() == 404) { + Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata"); + onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); } else { - Log.e(logTitle, response.message()); - callback.onFailed(new Exception(response.message())); + Log.e(logTitle, "Status " + response.code() + ": " + response.message()); + onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); } - } else { - Log.e(logTitle, "Status " + response.code() + ": " + response.message()); - callback.onFailed(new Exception("Status " + response.code() + ": " + response.message())); + + } } public static void analyzeAnswerList(Response> response, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed) { - analyzeAnswerList(response, logTitle, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { - onComplete.run(value); - } + if (response.isSuccessful()) { + if (response.body() != null) { + if (response.body().getEsito() == EsitoType.OK) { + if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { + onFailed.run(new Exception(response.body().getErrorMessage())); + } else { - @Override - public void onFailed(Exception ex) { - onFailed.run(ex); + List dataObj = response.body().getEntityList(); + + onComplete.run(dataObj); + } + } else { + Log.e(logTitle, response.body().getErrorMessage()); + onFailed.run(new Exception(response.body().getErrorMessage())); + } + } else { + Log.e(logTitle, response.message()); + onFailed.run(new Exception(response.message())); } - }); + } else { + if (response.code() == 404) { + Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata"); + onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); + } else { + Log.e(logTitle, "Status " + response.code() + ": " + response.message()); + onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); + } + } } public static void analyzeListOfAnswers(Response>> responseList, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed) { if (responseList.isSuccessful()) { if (responseList.body() != null) { List analyzedList = new ArrayList<>(); - for (ServiceRESTResponse response : responseList.body()){ + for (ServiceRESTResponse response : responseList.body()) { if (response.getEsito() == EsitoType.OK) { if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) { onFailed.run(new Exception(response.getErrorMessage())); @@ -111,7 +93,7 @@ public class _BaseRESTConsumer { T dataObj = response.getDto() != null ? response.getDto() : response.getEntity(); - if (dataObj !=null ) analyzedList.add(dataObj); + if (dataObj != null) analyzedList.add(dataObj); } } else { @@ -126,8 +108,13 @@ public class _BaseRESTConsumer { onFailed.run(new Exception(responseList.message())); } } else { - Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message()); - onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message())); + if (responseList.code() == 404) { + Log.e(logTitle, "Errore " + responseList.code() + ": risorsa non trovata"); + onFailed.run(new Exception("Errore " + responseList.code() + ": risorsa non trovata (" + logTitle + ")")); + } else { + Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message()); + onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message())); + } } } } 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 d83aaac1..5b3b6de0 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 @@ -13,7 +13,6 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.StbGestSetup; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; @@ -30,12 +29,12 @@ public class SettingsManager { private static Context mContext; - public static void init(Context context){ + public static void init(Context context) { mContext = context; settingsModelIstance = (SettingsModel) Stash.getObject(TAG, SettingsModel.class); - if(settingsModelIstance == null) { + if (settingsModelIstance == null) { settingsModelIstance = new SettingsModel(); settingsModelIstance.setServer(new SettingsModel.Server()); @@ -49,31 +48,28 @@ public class SettingsManager { } - public static SettingsModel i(){ + public static SettingsModel i() { return settingsModelIstance; } - public static DBSettingsModel iDB(){ + + public static DBSettingsModel iDB() { return dbSettingsModelIstance; } - public static boolean isFirstStart(){ + public static boolean isFirstStart() { return firstStart; } - public static boolean isInstanceAvailable(){ + + public static boolean isInstanceAvailable() { return i() != null; } - public static void update(){ + public static void update() { Stash.put(TAG, settingsModelIstance); } - - - - - - public static void loadDBVariables(Runnable onComplete, RunnableArgs onFailed){ + public static void loadDBVariables(RunnableArgs onProgress, Runnable onComplete, RunnableArgs onFailed) { dbSettingsModelIstance = new DBSettingsModel(); Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_vars"); @@ -86,90 +82,93 @@ public class SettingsManager { RunnableArgs tmpOnFailed = ex -> { perfTrace.putAttribute("failed", "true"); - if(!(ex instanceof SocketTimeoutException)) onFailed.run(ex); - else onFailed.run(new Exception("Errore durante il caricamento dei dati. Riavviare l'applicazione!")); + if (!(ex instanceof SocketTimeoutException)) onFailed.run(ex); + else + onFailed.run(new Exception("Errore durante il caricamento dei dati. Riavviare l'applicazione!")); }; - loadDatiAzienda(() -> - loadAvailableProfiles(() -> - loadAvailableCodMdeps(() -> - loadAvailablePosizioni(() -> - loadGestSetupValues(tmpOnComplete, tmpOnFailed) ,tmpOnFailed), tmpOnFailed), tmpOnFailed), tmpOnFailed); + onProgress.run("dati azienda"); + loadDatiAzienda(() -> { + + onProgress.run("profili"); + loadAvailableProfiles(() -> { + + onProgress.run("depositi"); + loadAvailableCodMdeps(() -> { + + onProgress.run("posizioni"); + loadAvailablePosizioni(() -> { + + onProgress.run("impostazioni"); + loadGestSetupValues(tmpOnComplete, tmpOnFailed); + }, tmpOnFailed); + }, tmpOnFailed); + }, tmpOnFailed); + }, tmpOnFailed); } private static void loadDatiAzienda(Runnable onComplete, RunnableArgs onFailed) { + SystemRESTConsumer.getAzienda(datiAzienda -> { SettingsManager.iDB().setDatiAzienda(datiAzienda); - if(onComplete != null) onComplete.run(); + if (onComplete != null) onComplete.run(); }, onFailed); } - private static void loadAvailableProfiles(Runnable onComplete, RunnableArgs onFailed){ - SystemRESTConsumer.getAvailableProfiles(new ISimpleOperationCallback>() { - @Override - public void onSuccess(List availableProfiles) { - dbSettingsModelIstance.setAvailableProfiles(availableProfiles); + private static void loadAvailableProfiles(Runnable onComplete, RunnableArgs onFailed) { + SystemRESTConsumer.getAvailableProfiles(availableProfiles -> { + dbSettingsModelIstance.setAvailableProfiles(availableProfiles); - onComplete.run(); + onComplete.run(); - } - - @Override - public void onFailed(Exception ex) { - //BOH - if(onFailed != null) onFailed.run(ex); - } + }, ex -> { + //BOH + if (onFailed != null) onFailed.run(ex); }); } private static void loadAvailableCodMdeps(Runnable onComplete, RunnableArgs onFailed) { - SystemRESTConsumer.getAvailableCodMdeps(new ISimpleOperationCallback>() { - @Override - public void onSuccess(List availableCodMdeps) { - dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps); + SystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> { + dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps); - if(availableCodMdeps == null || availableCodMdeps.size() == 0) { - onFailed.run(new Exception(mContext.getText(R.string.no_codmdep_available).toString())); - return; - } + if (availableCodMdeps == null || availableCodMdeps.size() == 0) { + onFailed.run(new Exception(mContext.getText(R.string.no_codmdep_available).toString())); + return; + } - boolean codMdepExistsAnymore = false; + boolean codMdepExistsAnymore = false; - if(settingsModelIstance.getUserSession().getDepo() != null){ - for(AvailableCodMdepsDTO availableCodMdepDTO : availableCodMdeps){ - //Controllo se il codMdep salvato esiste ancora - if(availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) { - codMdepExistsAnymore = true; - break; - } + if (settingsModelIstance.getUserSession().getDepo() != null) { + for (AvailableCodMdepsDTO availableCodMdepDTO : availableCodMdeps) { + //Controllo se il codMdep salvato esiste ancora + if (availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) { + codMdepExistsAnymore = true; + break; } } - - if(!codMdepExistsAnymore){ - settingsModelIstance.getUserSession().setDepo(availableCodMdeps.get(0)); - } - - if(onComplete != null) onComplete.run(); } - @Override - public void onFailed(Exception ex) { - //BOH - if(onFailed != null) onFailed.run(ex); + if (!codMdepExistsAnymore) { + settingsModelIstance.getUserSession().setDepo(availableCodMdeps.get(0)); } + + if (onComplete != null) onComplete.run(); + }, ex -> { + //BOH + if (onFailed != null) onFailed.run(ex); }); } private static void loadAvailablePosizioni(Runnable onComplete, RunnableArgs onFailed) { PosizioniRESTConsumer.getAvailablePosizioni(availablePosizioni -> { - dbSettingsModelIstance.setAvailablePosizioni(availablePosizioni); + dbSettingsModelIstance.setAvailablePosizioni(availablePosizioni); - if(onComplete != null) onComplete.run(); - }, ex -> { - if(onFailed != null) onFailed.run(ex); - } + if (onComplete != null) onComplete.run(); + }, ex -> { + if (onFailed != null) onFailed.run(ex); + } ); } @@ -270,16 +269,16 @@ public class SettingsManager { GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { dbSettingsModelIstance.setDefaultCausaleRettificaGiacenze(getValueFromList(list, "SETUP", "DEFAULT_CAUSALE_RETTIFICA_GIACENZE", String.class)); - dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP","ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class)); - dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP","FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class)); - dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP","COD_ANAG_DEFAULT", String.class)); - dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP","DEFAULT_CRITERIO_DISTRIBUZIONE", String.class)); + dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class)); + dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP", "FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class)); + dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP", "COD_ANAG_DEFAULT", String.class)); + dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class)); dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagAllowEmptyClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class)); dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class)); - dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list,"SPEDIZIONE", "ENABLE_CHECK_DEPOSITO", Boolean.class)); + dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "SPEDIZIONE", "ENABLE_CHECK_DEPOSITO", Boolean.class)); dbSettingsModelIstance.setFlagForceAllToColli(getValueFromList(list, "SETUP", "FLAG_FORCE_ALL_TO_COLLI", Boolean.class)); dbSettingsModelIstance.setFlagAskPesoColloSpedizione(getValueFromList(list, "SETUP", "FLAG_ASK_PESO_COLLO", Boolean.class)); dbSettingsModelIstance.setFlagUseNewPickingListSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_NEW_PICKING_LIST", Boolean.class)); @@ -292,27 +291,27 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class); - if(onNumCnfInputChanged != null) { + if (onNumCnfInputChanged != null) { dbSettingsModelIstance.setOnNumCnfInputChanged(onNumCnfInputChanged); } - if(onComplete != null) onComplete.run(); + if (onComplete != null) onComplete.run(); }, onFailed); } - public static T getValueFromList(List stbGestSetupList, String section, String keySectionName, Class clazz) { + public static T getValueFromList(List stbGestSetupList, String section, String keySectionName, Class clazz) { StbGestSetup value = Stream.of(stbGestSetupList) .filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName)) .findFirst().get(); - if(clazz == String.class) { + if (clazz == String.class) { return clazz.cast(value.getValue()); - } else if(clazz == Boolean.class) { + } else if (clazz == Boolean.class) { return clazz.cast("S".equalsIgnoreCase(value.getValue())); - } else if(clazz == Integer.class && value.getValue() != null) { + } else if (clazz == Integer.class && value.getValue() != null) { return clazz.cast(Integer.parseInt(value.getValue())); } else return null; 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 7a602ae4..739b8acb 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 @@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.utility; import android.app.Dialog; import android.content.Context; -import android.text.SpannableString; +import android.text.Html; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; @@ -17,50 +17,46 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class UtilityExceptions { - public static void defaultException(Context context, Exception ex, Dialog progressDialog){ + public static void defaultException(Context context, Exception ex, Dialog progressDialog) { defaultException(context, ex); - if(progressDialog != null) progressDialog.dismiss(); + if (progressDialog != null) progressDialog.dismiss(); } - public static void defaultException(Context context, Exception ex, Dialog progressDialog, boolean sendMail){ - defaultException(context, ex, sendMail); - if(progressDialog != null) progressDialog.dismiss(); - } - public static void defaultException(Context context, Exception ex){ + public static void defaultException(Context context, Exception ex) { defaultException(context, ex, false); } - public static void defaultException(Context context, Exception ex, boolean sendEmail){ + public static void defaultException(Context context, Exception ex, boolean sendEmail) { - if(ex.getMessage() != null) { - Logger.e(ex, ex.getMessage()); + if (ex.getMessage() != null) { + Logger.e(ex, Html.fromHtml(ex.getMessage()).toString()); } else { Logger.e(ex, "Errore"); } String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if(errorMessage == null) { + if (errorMessage == null) { errorMessage = ex.getMessage(); - if(ex.getCause() != null) errorMessage += "
" + ex.getCause().getMessage(); + if (ex.getCause() != null) errorMessage += "
" + ex.getCause().getMessage(); } FragmentManager fm = null; - if(context != null && context instanceof FragmentActivity) { + if (context instanceof FragmentActivity) { fm = ((FragmentActivity) context).getSupportFragmentManager(); - } else if(UtilityContext.getMainActivity() != null) { + } else if (UtilityContext.getMainActivity() != null) { fm = UtilityContext.getMainActivity().getSupportFragmentManager(); } - if(fm != null) { - DialogSimpleMessageView.makeErrorDialog(new SpannableString(errorMessage), null, null) + if (fm != null) { + DialogSimpleMessageView.makeErrorDialog(Html.fromHtml(errorMessage), null, null) .show(fm, "tag"); } - if(!BuildConfig.DEBUG) { - // if(sendEmail) UtilityLogger.errorMe(ex); + if (!BuildConfig.DEBUG) { + if (sendEmail) UtilityLogger.errorMe(ex); FirebaseCrashlytics.getInstance().recordException(ex); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java index 1574c6f9..4bf725b1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java @@ -1,22 +1,5 @@ package it.integry.integrywmsnative.core.utility; -import it.integry.integrywmsnative.core.data_store.db.AppDatabase; -import it.integry.integrywmsnative.core.settings.SettingsManager; - public class UtilitySettings { - - private static AppDatabase mAppDatabase; - - public static void init(AppDatabase appDatabase) { - mAppDatabase = appDatabase; - } - - public static void logout(){ - SettingsManager.i().setUser(null); - SettingsManager.i().setUserSession(null); - UtilityThread.executeParallel(mAppDatabase::clearAllTables); - SettingsManager.update(); - } - } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityThread.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityThread.java index e04b0ff3..76dedc81 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityThread.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityThread.java @@ -2,8 +2,17 @@ package it.integry.integrywmsnative.core.utility; public class UtilityThread { - public static void executeParallel(Runnable runnable) { - new Thread(runnable).start(); + public static void executeParallel(Runnable runnable, boolean waitEnd) { + Thread t = new Thread(runnable); + t.start(); + + if(waitEnd) { + try { + t.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java new file mode 100644 index 00000000..bff63b69 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.accettazione; + +import dagger.Subcomponent; + +@Subcomponent +public interface MainAccettazioneComponent { + + @Subcomponent.Factory + interface Factory { + + MainAccettazioneComponent create(); + } + + void inject(MainAccettazioneFragment mainAccettazioneFragment); +} 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 24c56ab8..f13a4ce3 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 @@ -1,20 +1,17 @@ package it.integry.integrywmsnative.gest.accettazione; -import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.Html; -import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; 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.Stream; @@ -23,44 +20,46 @@ import java.math.BigDecimal; 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.data_cache.DataCache; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.rest.CommonRESTException; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding; -import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper; -import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter; +import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneAdapter; +import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneClienteListModel; +import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneListModel; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; 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.DialogSimpleMessageView; -public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment { +public class MainAccettazioneFragment extends BaseFragment implements ISearcableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener { + + public BindableBoolean fabVisible = new BindableBoolean(false); + + @Inject + MainAccettazioneViewModel mViewModel; private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private FragmentMainAccettazioneBinding mBinding; - private AccettazioneHelper mHelper; - private MainListAccettazioneAdapter mAdapter; - - private List mOriginalOrderList; - private final List mRenderedOrderList = new ArrayList<>(); + private final ObservableArrayList mOrdiniInevasiMutableData = new ObservableArrayList<>(); private AppCompatTextView mAppBarTitle; - - public MainAccettazioneFragment() { // Required empty public constructor } @@ -73,8 +72,6 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } - - @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { mAppBarTitle = titleText; @@ -87,21 +84,34 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false); - init(); + MainApplication.appComponent + .mainAccettazioneComponent() + .create() + .inject(this); + mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); mBinding.setView(this); - mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - mBinding.accettazioneMainFab.hide(); - mBinding.accettazioneMainFab.setOnClickListener(v -> { - this.onAccettazioneMainFabClick(); - }); + this.initRecyclerView(); mToolbar.setRecyclerView(mBinding.accettazioneMainList); return mBinding.getRoot(); } + + @Override + public void onStart() { + super.onStart(); + + this.fabVisible.set(false); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep); + } + @Override public void onDestroy() { for (Runnable onPreDestroy : mOnPreDestroyList) { @@ -111,111 +121,93 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } - - private void init() { - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - mHelper = new AccettazioneHelper(getActivity()); - - mHelper.loadOrdini(ordini -> { - if(ordini != null) { - Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); - mOriginalOrderList = ordini; - } - - mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - refreshRenderedOrdini(ordini); - initRecyclerView(); - progress.dismiss(); - - }, ex -> { - UtilityExceptions.defaultException(getActivity(), ex, progress); - }); - - - } - private void initRecyclerView() { - mAdapter = new MainListAccettazioneAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged); - mBinding.accettazioneMainList.setAdapter(mAdapter); - } + this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); - private void refreshRenderedOrdini(List ordini) { - mRenderedOrderList.clear(); - if(ordini != null) mRenderedOrderList.addAll(ordini); + MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData) + .setOnGroupItemClicked(x -> { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + + boolean allSelected = Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .allMatch(y -> y.getSelectedObservable().get()); + + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .forEach(y -> y.getSelectedObservable().set(!allSelected)); + }) + .setOnItemChecked(x -> { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + + fabVisible.set(Stream.of(mOrdiniInevasiMutableData) + .anyMatch(y -> y.getSelectedObservable().get())); + }); + + adapter.setEmptyView(this.mBinding.ordiniAccettazioneEmptyView); + + this.mBinding.accettazioneMainList.setAdapter(adapter); + this.mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); + + if (mToolbar != null) + mToolbar.setRecyclerView(this.mBinding.accettazioneMainList); } + private void refreshList(List filteredList) { - private final RunnableArgs onSingleSelectionChanged = dto -> { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); + List tmpList = null; - if(dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) - .forEach(x -> x.setSelected(false)); + if (filteredList != null) { + tmpList = filteredList; + } else { + tmpList = mViewModel.getOrderList().getValue(); } - if(selectedOrders != null && selectedOrders.size() > 0) { - mBinding.accettazioneMainFab.show(); - } - else { - mBinding.accettazioneMainFab.hide(); - } - }; + this.mOrdiniInevasiMutableData.clear(); + this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList)); + } - private void onAccettazioneMainFabClick() { + private List convertDataModelToListModel(List dataList) { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); + return Stream.of(dataList) + .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) + .sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : "")) + .map(x -> { + MainListAccettazioneListModel listModel = new MainListAccettazioneListModel(); - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); + listModel.setOriginalModel(x); - OrdiniAccettazioneRESTConsumer.retrievePickingListNewStatic(selectedOrders, sitArtOrds -> { - progress.dismiss(); - - - long artsCounter = Stream.of(sitArtOrds) - .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) - .map(SitArtOrdDTO::getCodMart) - .distinct() - .count(); - - long ordsCounter = Stream.of(sitArtOrds) - .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) - .count(); - - - 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)), - null, - () -> { - - String cacheSitArtItemID = DataCache.addItem(sitArtOrds); - String cacheOrdersItemID = DataCache.addItem(selectedOrders); - - Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class); - myIntent.putExtra("keyOrders", cacheOrdersItemID); - myIntent.putExtra("keySitArts", cacheSitArtItemID); - getActivity().startActivity(myIntent); - - }).show(getActivity().getSupportFragmentManager(), "tag"); - - }, ex -> { - progress.dismiss(); - - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); - - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(errorMessage), null, null) - .show(getActivity().getSupportFragmentManager(), "tag"); - }); + listModel.setGroupTitle(x.getRagSocOrd()); + + listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero().toString(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + List clienti = Stream.of(dataList) + .filter(y -> y.getBarcode().equals(x.getBarcode())) + .map(y -> new MainListAccettazioneClienteListModel() + .setPrimaryText(y.getRifOrd()) + .setRightText(UtilityDate.formatDate(y.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH))) + .toList(); + + listModel.setClientiListModel(clienti); + + return listModel; + }) + .toList(); + } + + public void dispatchOrders() { + List selectedOrders = Stream.of(this.mOrdiniInevasiMutableData) + .filter(x -> x.getSelectedObservable().get()) + .map(MainListAccettazioneListModel::getOriginalModel) + .toList(); + this.mViewModel.loadPicking(selectedOrders); } @@ -236,11 +228,22 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag @Override public boolean onQueryTextChange(String newText) { - final List filtermodelist = mHelper.getFilteredOrdersByFornitore(mOriginalOrderList, newText); - mAdapter.updateItems(filtermodelist); - return true; + List filteredOrders = new ArrayList<>(); + List originalList = this.mViewModel.getOrderList().getValue(); + if(originalList == null || originalList.isEmpty()) return false; + + for(int i = 0; i < originalList.size(); i++){ + + if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){ + filteredOrders.add(originalList.get(i)); + } + } + + refreshList(filteredOrders); + return true; } + @Override public void setScrollToolbar(ElevatedToolbar toolbar) { mToolbar = toolbar; @@ -251,4 +254,35 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + + @Override + public void onOrdersDispatched(List orders, List sitArts) { + long artsCounter = Stream.of(sitArts) + .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) + .map(SitArtOrdDTO::getCodMart) + .distinct() + .count(); + + long ordsCounter = Stream.of(sitArts) + .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) + .count(); + + + 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)), + null, + () -> { + + String cacheSitArtItemID = DataCache.addItem(sitArts); + String cacheOrdersItemID = DataCache.addItem(orders); + + Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class); + myIntent.putExtra("keyOrders", cacheOrdersItemID); + myIntent.putExtra("keySitArts", cacheSitArtItemID); + getActivity().startActivity(myIntent); + + }).show(getActivity().getSupportFragmentManager(), "tag"); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java new file mode 100644 index 00000000..9480528f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.gest.accettazione; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer; + +@Module(subcomponents = {MainAccettazioneComponent.class}) +public class MainAccettazioneModule { + + @Provides + OrdiniAccettazioneRESTConsumer providesOrdiniAccettazioneRESTConsumer() { + return new OrdiniAccettazioneRESTConsumer(); + } + + @Provides + MainAccettazioneViewModel providesMainAccettazioneViewModel(OrdiniAccettazioneRESTConsumer ordiniAccettazioneRESTConsumer) { + return new MainAccettazioneViewModel(ordiniAccettazioneRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java new file mode 100644 index 00000000..65a69fc4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java @@ -0,0 +1,94 @@ +package it.integry.integrywmsnative.gest.accettazione; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; +import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer; + +public class MainAccettazioneViewModel { + + private final OrdiniAccettazioneRESTConsumer mOrdiniAccettazioneRESTConsumer; + + private final MutableLiveData> mOrderList = new MutableLiveData<>(); + + private Listener mListener; + private String codMdep; + + @Inject + public MainAccettazioneViewModel(OrdiniAccettazioneRESTConsumer ordiniAccettazioneRESTConsumer) { + this.mOrdiniAccettazioneRESTConsumer = ordiniAccettazioneRESTConsumer; + } + + public void init(String currentCodMdep) { + this.codMdep = currentCodMdep; + + this.sendOnLoadingStarted(); + new Thread(() -> { + + mOrdiniAccettazioneRESTConsumer.getOrdiniInevasi(codMdep, orderList -> { + this.mOrderList.setValue(orderList); + + this.sendOnLoadingEnded(); + }, this::sendError); + + }).start(); + } + + + public void loadPicking(List selectedOrders) { + + this.sendOnLoadingStarted(); + + new Thread(() -> { + + this.mOrdiniAccettazioneRESTConsumer.retrievePickingListNew(selectedOrders, sitArtOrds -> { + + this.sendOnOrdersDispatched(selectedOrders, sitArtOrds); + this.sendOnLoadingEnded(); + + }, this::sendError); + + }).start(); + + } + + + public MutableLiveData> getOrderList() { + return mOrderList; + } + + public MainAccettazioneViewModel 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 sendOnOrdersDispatched(List orders, List sitArts) { + if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts); + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + void onOrdersDispatched(List orders, List sitArts); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java deleted file mode 100644 index 0d7c4a23..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java +++ /dev/null @@ -1,87 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.core; - -import android.content.Context; - -import com.annimon.stream.Stream; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.model.EsitoType; -import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; -import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -/** - * Created by GiuseppeS on 06/03/2018. - */ - -public class AccettazioneHelper { - - private Context mContext; - - public AccettazioneHelper(Context context){ - mContext = context; - } - - public void loadOrdini(RunnableArgs> onComplete, RunnableArgs onFailed){ - String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); - service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - - if(response.isSuccessful()) { - - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - onComplete.run(response.body().getDto()); - } else { - onFailed.run(new Exception(response.body().getErrorMessage())); - } - } else { - onFailed.run(new Exception(response.message())); - } - } else { - onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); - } - } - - @Override - public void onFailure(Call>> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); - } - - - - - public List getSelectedOrders(List ordiniList){ - return Stream.of(ordiniList) - .filter(OrdineAccettazioneInevasoDTO::isSelected) - .toList(); - } - - - public List getFilteredOrdersByFornitore(List groupedOrdiniInevasi, String textFilter){ - List filteredOrders = new ArrayList<>(); - - for(int i = 0; i < groupedOrdiniInevasi.size(); i++){ - - if(groupedOrdiniInevasi.get(i).getRagSocOrd().toLowerCase().contains(textFilter.toLowerCase())){ - filteredOrders.add(groupedOrdiniInevasi.get(i)); - } - } - return filteredOrders; - } - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java deleted file mode 100644 index af1d4c2d..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java +++ /dev/null @@ -1,192 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.core; - -import android.content.Context; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; -import androidx.recyclerview.widget.RecyclerView; - -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupClientiBinding; -import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupModelBinding; -import it.integry.integrywmsnative.databinding.AccettazioneMainListModelBinding; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; - -public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - - - private Context mContext; - - private List mOriginalDataset; - private List mDataset; - private RunnableArgs mOnSingleSelectionChanged; - - static class SubheaderHolder extends RecyclerView.ViewHolder { - - AccettazioneMainListModelBinding binding; - - SubheaderHolder(AccettazioneMainListModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - static class SingleItemViewHolder extends RecyclerView.ViewHolder { - - AccettazioneMainListGroupModelBinding binding; - - SingleItemViewHolder(AccettazioneMainListGroupModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - public MainListAccettazioneAdapter(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { - mContext = context; - mOriginalDataset = myDataset; - mDataset = orderItems(myDataset); - mOnSingleSelectionChanged = onSingleSelectionChanged; - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List orderItems(List dataset) { - return Stream.of(dataset) - .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) - .sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : "")) - .toList(); - - } - - - - @Override - public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { - AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false); - return new SubheaderHolder(binding); - } - - @Override - public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { - AccettazioneMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_model, parent, false); - return new SingleItemViewHolder(binding); - } - - - @Override - public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { - subheaderHolder.binding.accettazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd()); - - subheaderHolder.binding.getRoot().setOnClickListener(v -> { - - boolean anySelected = Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .anyMatch(OrdineAccettazioneInevasoDTO::isSelected); - - Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .forEach(x -> x.setSelected(!anySelected)); - }); - } - - @Override - public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) { - final OrdineAccettazioneInevasoDTO ordine = mDataset.get(itemPosition); - final SingleItemViewHolder holder = h; - - holder.binding.accettazioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumero()); - - holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); - - ordine.selected.resetOnPropertyChangedCallback(); - - - String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); - - holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews(); - - List clienti = Stream.of(mOriginalDataset) - .filter(x -> x.getBarcode().equals(ordine.getBarcode())) - .toList(); - - for (OrdineAccettazioneInevasoDTO cliente : clienti) { - AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false); - - binding.accettazioneMainListGroupClientiComm.setText(cliente.getRifOrd()); - - if (!UtilityString.isNullOrEmpty(cliente.getDataConsS())) { - binding.accettazioneMainListGroupClientiDatacons.setText(UtilityDate.formatDate(cliente.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)); - } else { - binding.accettazioneMainListGroupClientiDatacons.setText(""); - } - - holder.binding.accettazioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot()); - } - - holder.binding.setCheckboxValue(ordine.selected); - - holder.binding.getRoot().setOnClickListener(v -> { - ordine.setSelected(!ordine.isSelected()); - }); - - holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); - - //Bindable to View - ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - if(holder.binding.accettazioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumero())) { - holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); - } - } - }); - - - //View to Bindable - holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { - ordine.setSelected(isChecked); - mOnSingleSelectionChanged.run(ordine); - }); - } - - - @Override - public boolean onPlaceSubheaderBetweenItems(int position) { - return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd()); - - } - - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java deleted file mode 100644 index 1dcf6003..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java +++ /dev/null @@ -1,481 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.dto; - -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import it.integry.integrywmsnative.core.model.MtbAart; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.utility.UtilityDate; - -/** - * Created by GiuseppeS on 06/03/2018. - */ - -public class OrdineAccettazioneDTO implements Parcelable { - - private String ragSoc; - private int numero; - private String data; - private String gestione; - private String codMdep; - private String codAnag; - private String codVdes; - private String termCons; - private ArrayList ordini; - private String codAlis; - private String rifOrd; - - - public static class Riga implements Parcelable { - private Float qtaOrd; //QTA ORDINATA (tutta la qta ordiata) - public Float qtaRiservate; //QTA COLLI (tutta la qta giĂ  accantonata nei colli - private Float qtaEvasa; //QTA EVASA ORDINE (qta con documento) - //public Float qtaDaEvadere; //qta_ord - qta_evasa - qta_colli - public int rigaOrd; - public String codJcom; - public String ragSocCom; - public String descrizioneCommessa; - public MtbAart mtbAart; - private PickingObjectDTO[] colliAssociati; - private Boolean hidden = null; - private Boolean tempHidden = null; - private String partitaMag; - private String codArtFor; - public String descrizioneEstesa; - public String codAlis; - - public int numOrd; - public String dataOrd; - public String gestioneOrd; - - public String dataCons; - - public BigDecimal getQtaDaEvadere() { - return this.getQtaOrd().subtract(this.getQtaEvasa()).subtract(this.getQtaRiservate()); - } - - - public BigDecimal getQtaOrd() { - return qtaOrd != null ? new BigDecimal(qtaOrd) : BigDecimal.ZERO; - } - - public BigDecimal getQtaRiservate() { - return qtaRiservate != null ? new BigDecimal(qtaRiservate) : BigDecimal.ZERO; - } - - public BigDecimal getQtaEvasa() { - return qtaEvasa != null ? new BigDecimal(qtaEvasa) : BigDecimal.ZERO; - } - - public int getRigaOrd() { - return rigaOrd; - } - - public String getCodJcom() { - return codJcom; - } - - public String getRagSocCom() { - return ragSocCom; - } - - public String getDescrizioneCommessa() { - return descrizioneCommessa; - } - - public MtbAart getMtbAart() { - return mtbAart; - } - - public PickingObjectDTO[] getColliAssociati() { - return colliAssociati; - } - - public Boolean isHidden() { - return hidden; - } - - public Boolean isTempHidden() { - return tempHidden; - } - - public String getPartitaMag() { - return partitaMag; - } - - public String getCodArtFor() { - return codArtFor; - } - - public String getDescrizioneEstesa() { - return descrizioneEstesa; - } - - public String getCodAlis() { - return codAlis; - } - - public int getNumOrd() { - return numOrd; - } - - public String getGestioneOrd() { - return gestioneOrd; - } - - public GestioneEnum getGestioneOrdEnum() { - return GestioneEnum.fromString(gestioneOrd); - } - - public String getDataCons() { - return dataCons; - } - - public String getDataOrdS() { - return this.dataOrd; - } - - public Date getDataOrdD() { - return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS()); - } - - - public Riga setQtaOrd(Float qtaOrd) { - this.qtaOrd = qtaOrd; - return this; - } - - public Riga setQtaRiservate(BigDecimal qtaRiservate) { - this.qtaRiservate = qtaRiservate.floatValue(); - return this; - } - - public Riga setQtaEvasa(Float qtaEvasa) { - this.qtaEvasa = qtaEvasa; - return this; - } - - public Riga setRigaOrd(int rigaOrd) { - this.rigaOrd = rigaOrd; - return this; - } - - public Riga setCodJcom(String codJcom) { - this.codJcom = codJcom; - return this; - } - - public Riga setRagSocCom(String ragSocCom) { - this.ragSocCom = ragSocCom; - return this; - } - - public Riga setDescrizioneCommessa(String descrizioneCommessa) { - this.descrizioneCommessa = descrizioneCommessa; - return this; - } - - public Riga setMtbAart(MtbAart mtbAart) { - this.mtbAart = mtbAart; - return this; - } - - public Riga setHidden(boolean hidden) { - this.hidden = hidden; - return this; - } - - public Riga setTempHidden(boolean hidden) { - this.tempHidden = hidden; - return this; - } - - public Riga setPartitaMag(String partitaMag) { - this.partitaMag = partitaMag; - return this; - } - - public Riga setCodArtFor(String codArtFor) { - this.codArtFor = codArtFor; - return this; - } - - public Riga setDescrizioneEstesa(String descrizioneEstesa) { - this.descrizioneEstesa = descrizioneEstesa; - return this; - } - - public Riga setCodAlis(String codAlis) { - this.codAlis = codAlis; - return this; - } - - public Riga setNumOrd(int numOrd) { - this.numOrd = numOrd; - return this; - } - - public Riga setDataOrd(String dataOrd) { - this.dataOrd = dataOrd; - return this; - } - - public Riga setGestioneOrd(String gestioneOrd) { - this.gestioneOrd = gestioneOrd; - return this; - } - - public Riga setDataCons(String dataCons) { - this.dataCons = dataCons; - return this; - } - - - - public Riga(){} - - protected Riga(Parcel in) { - qtaOrd = in.readByte() == 0x00 ? null : in.readFloat(); - qtaRiservate = in.readByte() == 0x00 ? null : in.readFloat(); - rigaOrd = in.readInt(); - codJcom = in.readString(); - ragSocCom = in.readString(); - descrizioneCommessa = in.readString(); - mtbAart = (MtbAart) in.readValue(MtbAart.class.getClassLoader()); - hidden = in.readByte() == 0x00 ? null : in.readByte() != 0x00; - partitaMag = in.readString(); - codArtFor = in.readString(); - descrizioneEstesa = in.readString(); - codAlis = in.readString(); - numOrd = in.readInt(); - dataOrd = in.readString(); - gestioneOrd = in.readString(); - dataCons = in.readString(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - if (qtaOrd == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeFloat(qtaOrd); - } - if (qtaRiservate == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeFloat(qtaRiservate); - } - dest.writeInt(rigaOrd); - dest.writeString(codJcom); - dest.writeString(ragSocCom); - dest.writeString(descrizioneCommessa); - dest.writeValue(mtbAart); - if (hidden == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeByte((byte) (hidden ? 0x01 : 0x00)); - } - dest.writeString(partitaMag); - dest.writeString(codArtFor); - dest.writeString(descrizioneEstesa); - dest.writeString(codAlis); - dest.writeInt(numOrd); - dest.writeString(dataOrd); - dest.writeString(gestioneOrd); - dest.writeString(dataCons); - } - - @SuppressWarnings("unused") - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public Riga createFromParcel(Parcel in) { - return new Riga(in); - } - - @Override - public Riga[] newArray(int size) { - return new Riga[size]; - } - }; - - } - - public static class PickingObjectDTO extends MtbColt{ - public boolean hidden = false; - } - - public OrdineAccettazioneDTO() {} - - protected OrdineAccettazioneDTO(Parcel in) { - ragSoc = in.readString(); - numero = in.readInt(); - data = in.readString(); - gestione = in.readString(); - codMdep = in.readString(); - codAnag = in.readString(); - codVdes = in.readString(); - termCons = in.readString(); - codAlis = in.readString(); - rifOrd = in.readString(); - if (in.readByte() == 0x01) { - ordini = new ArrayList(); - in.readList(ordini, Riga.class.getClassLoader()); - } else { - ordini = null; - } - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeString(ragSoc); - dest.writeInt(numero); - dest.writeString(data); - dest.writeString(gestione); - dest.writeString(codMdep); - dest.writeString(codAnag); - dest.writeString(codVdes); - dest.writeString(termCons); - dest.writeString(codAlis); - dest.writeString(rifOrd); - if (ordini == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeList(ordini); - } - } - - @SuppressWarnings("unused") - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public OrdineAccettazioneDTO createFromParcel(Parcel in) { - return new OrdineAccettazioneDTO(in); - } - - @Override - public OrdineAccettazioneDTO[] newArray(int size) { - return new OrdineAccettazioneDTO[size]; - } - }; - - - public String getRagSoc() { - return ragSoc; - } - - public OrdineAccettazioneDTO setRagSoc(String ragSoc) { - this.ragSoc = ragSoc; - return this; - } - - public int getNumero() { - return numero; - } - - public OrdineAccettazioneDTO setNumero(int numero) { - this.numero = numero; - return this; - } - - public String getData() { - return data; - } - - public OrdineAccettazioneDTO setData(String data) { - this.data = data; - return this; - } - - public String getGestione() { - return gestione; - } - - public OrdineAccettazioneDTO setGestione(String gestione) { - this.gestione = gestione; - return this; - } - - public String getCodMdep() { - return codMdep; - } - - public OrdineAccettazioneDTO setCodMdep(String codMdep) { - this.codMdep = codMdep; - return this; - } - - public String getCodAnag() { - return codAnag; - } - - public OrdineAccettazioneDTO setCodAnag(String codAnag) { - this.codAnag = codAnag; - return this; - } - - public String getCodVdes() { - return codVdes; - } - - public OrdineAccettazioneDTO setCodVdes(String codVdes) { - this.codVdes = codVdes; - return this; - } - - public String getTermCons() { - return termCons; - } - - public OrdineAccettazioneDTO setTermCons(String termCons) { - this.termCons = termCons; - return this; - } - - public ArrayList getOrdini() { - return ordini; - } - - public OrdineAccettazioneDTO setOrdini(ArrayList ordini) { - this.ordini = ordini; - return this; - } - - public String getCodAlis() { - return codAlis; - } - - public OrdineAccettazioneDTO setCodAlis(String codAlis) { - this.codAlis = codAlis; - return this; - } - - public String getRifOrd() { - return rifOrd; - } - - public OrdineAccettazioneDTO setRifOrd(String rifOrd) { - this.rifOrd = rifOrd; - return this; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java index 2320e41f..08561633 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java @@ -22,11 +22,23 @@ import retrofit2.Response; public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer { - public void retrievePickingListNew(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { - retrievePickingListNewStatic(orders, onComplete, onFailed); + public void getOrdiniInevasi(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { + OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getOrdiniInevasi", onComplete, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); } - public static void retrievePickingListNewStatic(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { + + public void retrievePickingListNew(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { List getPickingListDTOs = Stream.of(orders) .map(x -> new GetPickingListAccettazioneDTO() .setData(x.getData()) @@ -47,7 +59,6 @@ public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer { onFailed.run(new Exception(t)); } }); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneAdapter.java new file mode 100644 index 00000000..8f967bb2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneAdapter.java @@ -0,0 +1,149 @@ +package it.integry.integrywmsnative.gest.accettazione.ui; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupClientiBinding; +import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupModelBinding; +import it.integry.integrywmsnative.databinding.AccettazioneMainListModelBinding; + +public class MainListAccettazioneAdapter extends ExtendedSectionedRecyclerView { + + private Context mContext; + + private RunnableArgs mOnGroupItemClicked; + private RunnableArgs mOnItemChecked; + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + AccettazioneMainListModelBinding binding; + + SubheaderHolder(AccettazioneMainListModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + AccettazioneMainListGroupModelBinding binding; + + SingleItemViewHolder(AccettazioneMainListGroupModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + + public MainListAccettazioneAdapter(Context context, ObservableArrayList myDataset) { + super(myDataset); + mContext = context; + } + + public MainListAccettazioneAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) { + this.mOnGroupItemClicked = onGroupItemClicked; + return this; + } + + public MainListAccettazioneAdapter setOnItemChecked(RunnableArgs onItemChecked) { + this.mOnItemChecked = onItemChecked; + return this; + } + + + @Override + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false); + return new SubheaderHolder(binding); + } + + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + AccettazioneMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_model, parent, false); + return new SingleItemViewHolder(binding); + } + + + @Override + public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { + subheaderHolder.binding.accettazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGroupTitle()); + + subheaderHolder.binding.getRoot().setOnClickListener(new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(mDataset.get(nextItemPosition).getGroupTitle()); + } + }); + } + + @Override + public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) { + final MainListAccettazioneListModel ordine = mDataset.get(itemPosition); + + ordine.getSelectedObservable().resetOnPropertyChangedCallback(); + + holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews(); + holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(ordine.getDescription())); + + for (MainListAccettazioneClienteListModel cliente : ordine.getClientiListModel()) { + AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false); + + binding.accettazioneMainListGroupClientiComm.setText(cliente.getPrimaryText()); + + if (!UtilityString.isNullOrEmpty(cliente.getRightText())) { + binding.accettazioneMainListGroupClientiDatacons.setText(cliente.getRightText()); + } else { + binding.accettazioneMainListGroupClientiDatacons.setText(""); + } + + holder.binding.accettazioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot()); + } + + holder.binding.setSelected(ordine.getSelectedObservable()); + holder.binding.executePendingBindings(); + holder.binding.accettazioneMainListGroupItemContainerCheckBox.jumpDrawablesToCurrentState(); + + ordine.getSelectedObservable().addOnPropertyChangedCallback(() -> { + if(this.mOnItemChecked != null) this.mOnItemChecked.run(ordine); + }); + + holder.binding.getRoot().setOnClickListener(v -> { + ordine.getSelectedObservable().set(!ordine.getSelectedObservable().get()); + }); + + } + + + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + if (getItemSize() == 1) return true; + else if (getItemSize() > 1) { + MainListAccettazioneListModel compare1 = this.mDataset.get(position); + MainListAccettazioneListModel compare2 = this.mDataset.get(position + 1); + + if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) { + return false; + } + } + + return true; + } + + @Override + public int getItemSize() { + return mDataset.size(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneClienteListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneClienteListModel.java new file mode 100644 index 00000000..be14e3ea --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneClienteListModel.java @@ -0,0 +1,26 @@ +package it.integry.integrywmsnative.gest.accettazione.ui; + +public class MainListAccettazioneClienteListModel { + + private String primaryText; + private String rightText; + + + public String getPrimaryText() { + return primaryText; + } + + public MainListAccettazioneClienteListModel setPrimaryText(String primaryText) { + this.primaryText = primaryText; + return this; + } + + public String getRightText() { + return rightText; + } + + public MainListAccettazioneClienteListModel setRightText(String rightText) { + this.rightText = rightText; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneListModel.java new file mode 100644 index 00000000..59a06291 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/ui/MainListAccettazioneListModel.java @@ -0,0 +1,70 @@ +package it.integry.integrywmsnative.gest.accettazione.ui; + +import java.util.List; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; + +public class MainListAccettazioneListModel { + + private String groupTitle; + + private String description; + + private boolean hidden; + private BindableBoolean selected = new BindableBoolean(); + + + private OrdineAccettazioneInevasoDTO originalModel; + private List clientiListModel; + + + public String getGroupTitle() { + return groupTitle; + } + + public MainListAccettazioneListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public String getDescription() { + return description; + } + + public MainListAccettazioneListModel setDescription(String description) { + this.description = description; + return this; + } + + public boolean isHidden() { + return hidden; + } + + public MainListAccettazioneListModel setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } + + public BindableBoolean getSelectedObservable() { + return selected; + } + + public OrdineAccettazioneInevasoDTO getOriginalModel() { + return originalModel; + } + + public MainListAccettazioneListModel setOriginalModel(OrdineAccettazioneInevasoDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + public List getClientiListModel() { + return clientiListModel; + } + + public MainListAccettazioneListModel setClientiListModel(List clientiListModel) { + this.clientiListModel = clientiListModel; + return this; + } +} 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 cb91bac0..4846afb9 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 @@ -50,8 +50,8 @@ import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; -import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListAdapter; -import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListModel; +import it.integry.integrywmsnative.gest.accettazione_picking.ui.AccettazioneListAdapter; +import it.integry.integrywmsnative.gest.accettazione_picking.ui.AccettazioneListModel; import it.integry.integrywmsnative.gest.accettazione_picking.dto.AccettazioneOrdineInevasoOrderBy; import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt; @@ -117,8 +117,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta mBindings.bottomSheetLuContent.setListener(this); mBottomSheetFragmentLUContentViewModel.setListener(this); - setSupportActionBar(this.mBindings.toolbar); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); mShowSecondaryUntMis = sharedPreferences.getBoolean("picking_ingresso_enable_sec_unt_mis", true); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/core/AccettazioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/ui/AccettazioneListAdapter.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/core/AccettazioneListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/ui/AccettazioneListAdapter.java index a41dce20..6236a6bf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/core/AccettazioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/ui/AccettazioneListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.accettazione_picking.core; +package it.integry.integrywmsnative.gest.accettazione_picking.ui; import android.content.Context; import android.graphics.Color; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/core/AccettazioneListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/ui/AccettazioneListModel.java similarity index 98% rename from app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/core/AccettazioneListModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/ui/AccettazioneListModel.java index ce6d2329..b42e5e44 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/core/AccettazioneListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/ui/AccettazioneListModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.accettazione_picking.core; +package it.integry.integrywmsnative.gest.accettazione_picking.ui; import org.jetbrains.annotations.NotNull; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java index 4632345a..8556f1b8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java @@ -1,25 +1,53 @@ package it.integry.integrywmsnative.gest.contenuto_bancale; -import androidx.databinding.DataBindingUtil; -import androidx.appcompat.app.AppCompatActivity; - import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.os.Bundle; +import android.text.SpannableString; +import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; +import androidx.recyclerview.widget.LinearLayoutManager; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.BaseActivity; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.data_cache.DataCache; +import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.report.ReportManager; +import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding; -import it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel.ContenutoBancaleViewModel; +import it.integry.integrywmsnative.gest.contenuto_bancale.ui.ContenutoBancaleListAdapter; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -public class ContenutoBancaleActivity extends BaseActivity { +public class ContenutoBancaleActivity extends BaseActivity implements ContenutoBancaleViewModel.Listener { public ActivityContenutoBancaleBinding bindings; - private ContenutoBancaleViewModel mViewModel; + @Inject + ContenutoBancaleViewModel mViewModel; + + @Inject + DepositoRESTConsumer mDepositoRESTConsumer; + + @Inject + PrinterRESTConsumer mPrinterRESTConsumer; + + public final ObservableField mtbColt = new ObservableField<>(); + public final ObservableField descrizioneDepo = new ObservableField<>(); + + public ObservableField fabVisible = new ObservableField<>(true); + public ObservableField recoverFabMenuVisible = new ObservableField<>(false); + + private String mReportName; + private PrinterRESTConsumer.Type mPrinterType; private static class Key { private static final String MtbColtKey = "mtbColtKey"; @@ -50,24 +78,106 @@ public class ContenutoBancaleActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); + mtbColt.set(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey))); + mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); + mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); + bindings = DataBindingUtil.setContentView(this, R.layout.activity_contenuto_bancale); - boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); - MtbColt mtbColt = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey)); - String reportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); + MainApplication.appComponent + .contenutoBancaleComponent() + .create() + .inject(this); - PrinterRESTConsumer.Type mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); - - mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType, reportName); + bindings.setView(this); + bindings.setViewModel(this.mViewModel); bindings.elevatedToolbar.setNestedScrollView(bindings.scrollView); setSupportActionBar(this.bindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + mViewModel.setListener(this); + mViewModel.init(mtbColt.get(), mPrinterType, mReportName); + + recoverFabMenuVisible.set(canRecoverUL); + + initRecyclerView(); + initColloInfo(); } + private void initRecyclerView() { + this.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false); + + this.bindings.contenutoBancaleMainList.setHasFixedSize(true); + + this.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(this)); + + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); + this.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator); + + ContenutoBancaleListAdapter adapter = new ContenutoBancaleListAdapter(mtbColt.get().getMtbColr()); + this.bindings.contenutoBancaleMainList.setAdapter(adapter); + } + + + private void initColloInfo() { + mDepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> { + descrizioneDepo.set("(" + depo.getDescrizione() + ")"); + }, this::onError); + } + + + public void recoverUL() { + Intent data = new Intent(); + String key = DataCache.addItem(mtbColt.get()); + data.putExtra("key", key); + + this.setResult(RESULT_OK, data); + this.finish(); + } + + + public void printUL() { + this.bindings.contenutoBancaleFab.close(true); + this.onLoadingStarted(); + + this.mPrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> { + if (value.size() > 0) { + + try { + String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum()); + reportName = mReportName != null ? mReportName : reportName; + + this.mPrinterRESTConsumer.printCollo(value.get(0), + mtbColt.get(), + 1, + reportName, + () -> { + this.onLoadingEnded(); + + Resources res = this.getResources(); + String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); + DialogSimpleMessageView + .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) + .show(getSupportFragmentManager(), "tag"); + }, this::onError); + + } catch (Exception ex) { + this.onError(ex); + } + + } else { + this.onLoadingEnded(); + String errorMessage = "Nessuna stampante configurata"; + this.onError(new Exception(errorMessage)); + } + }, this::onError); + + } @Override public boolean onSupportNavigateUp() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java new file mode 100644 index 00000000..fc3f891c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.contenuto_bancale; + +import dagger.Subcomponent; + +@Subcomponent +public interface ContenutoBancaleComponent { + + @Subcomponent.Factory + interface Factory { + ContenutoBancaleComponent create(); + } + + void inject(ContenutoBancaleActivity contenutoBancaleActivity); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java new file mode 100644 index 00000000..dc6c3a92 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.gest.contenuto_bancale; + +import dagger.Module; + +@Module(subcomponents = ContenutoBancaleComponent.class) +public class ContenutoBancaleModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java new file mode 100644 index 00000000..ef70a79d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java @@ -0,0 +1,39 @@ +package it.integry.integrywmsnative.gest.contenuto_bancale; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; + +public class ContenutoBancaleViewModel { + + private final DepositoRESTConsumer mDepositoRESTConsumer; + + + private Listener mListener; + + @Inject + public ContenutoBancaleViewModel(DepositoRESTConsumer depositoRESTConsumer) { + this.mDepositoRESTConsumer = depositoRESTConsumer; + } + + public void init(MtbColt mtbColt, PrinterRESTConsumer.Type printerType, String defaultReportName) { + + + } + + + public ContenutoBancaleViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleListAdapter.java similarity index 53% rename from app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleListAdapter.java index cd23aae4..302bbaeb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleListAdapter.java @@ -1,15 +1,15 @@ -package it.integry.integrywmsnative.gest.contenuto_bancale.core; +package it.integry.integrywmsnative.gest.contenuto_bancale.ui; -import android.content.Context; -import androidx.databinding.DataBindingUtil; -import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; -import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; @@ -17,13 +17,13 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ListaContenutoBancaleListModelBinding; -public class ContenutoBancaleListAdapter extends RecyclerView.Adapter { +public class ContenutoBancaleListAdapter extends ExtendedRecyclerView { + private RunnableArgs mOnItemClickListener; - protected static Context mContext; - protected ObservableArrayList mDataset; - - private IRecyclerItemClicked mOnItemClickListener; + public ContenutoBancaleListAdapter(ObservableArrayList myDataset) { + super(myDataset); + } public static class ViewHolder extends RecyclerView.ViewHolder { protected ListaContenutoBancaleListModelBinding mViewDataBinding; @@ -37,12 +37,11 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter myDataset, IRecyclerItemClicked onItemClickListener) { - mContext = context; - mDataset = myDataset; - mOnItemClickListener = onItemClickListener; - - myDataset.addOnListChangedCallback(onListChangedCallback); - } - @Override public ContenutoBancaleListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view @@ -78,10 +69,10 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter { - if(mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(mtbColr, position); + if (mOnItemClickListener != null) { + mOnItemClickListener.run(mtbColr); } }); } - @Override - public void onViewRecycled(ContenutoBancaleListAdapter.ViewHolder holder) { - super.onViewRecycled(holder); + + public ContenutoBancaleListAdapter setOnItemClickListener(RunnableArgs onItemClickListener) { + this.mOnItemClickListener = onItemClickListener; + return this; } - - @Override - public int getItemCount() { - return mDataset.size(); - } - - - private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>(){ - - @Override - public void onChanged(ObservableList sender) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - notifyDataSetChanged(); - } - - @Override - public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - } - }; - - } 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 deleted file mode 100644 index 5219400b..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java +++ /dev/null @@ -1,143 +0,0 @@ -package it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel; - -import android.app.Dialog; -import android.content.Intent; -import android.content.res.Resources; -import android.text.SpannableString; - -import androidx.core.content.ContextCompat; -import androidx.databinding.ObservableField; -import androidx.recyclerview.widget.LinearLayoutManager; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.data_cache.DataCache; -import it.integry.integrywmsnative.core.di.BindableString; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; -import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.report.ReportManager; -import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; -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.gest.contenuto_bancale.ContenutoBancaleActivity; -import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter; -import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; - -import static android.app.Activity.RESULT_OK; - -public class ContenutoBancaleViewModel implements IRecyclerItemClicked { - - private ContenutoBancaleActivity mContext; - - public ObservableField mtbColt; - public BindableString descrizioneDepo = new BindableString(); - - public ObservableField isFabVisible = new ObservableField<>(); - public ObservableField isRecoverFabMenuVisible = new ObservableField<>(); - - private ContenutoBancaleListAdapter mAdapter; - - private PrinterRESTConsumer.Type mPrinterType; - private String mReportName; - - public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName) { - mContext = context; - this.mtbColt = new ObservableField<>(mtbColt); - this.isFabVisible.set(true); - this.isRecoverFabMenuVisible.set(canRecoverUL); - this.mPrinterType = printerType; - this.mReportName = defaultReportName; - - mContext.bindings.setViewModel(this); - - initRecyclerView(); - - initColloInfo(); - } - - - private void initRecyclerView() { - mContext.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false); - - mContext.bindings.contenutoBancaleMainList.setHasFixedSize(true); - - mContext.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(mContext)); - - SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); - itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); - mContext.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator); - - mAdapter = new ContenutoBancaleListAdapter(mContext, mtbColt.get().getMtbColr(), this); - mContext.bindings.contenutoBancaleMainList.setAdapter(mAdapter); - } - - - private void initColloInfo() { - DepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> { - descrizioneDepo.set("(" + depo.getDescrizione() + ")"); - }); - } - - @Override - public void onItemClick(MtbColr item, int position) { - } - - - public void recoverUL() { - Intent data = new Intent(); - String key = DataCache.addItem(mtbColt.get()); - data.putExtra("key", key); - - mContext.setResult(RESULT_OK, data); - mContext.finish(); - } - - - public void printUL() { - mContext.bindings.contenutoBancaleFab.close(true); - final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); - - PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> { - - if (value.size() > 0) { - - try { - String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum()); - - reportName = mReportName != null ? mReportName : reportName; - - PrinterRESTConsumer.printColloStatic(value.get(0), - mtbColt.get(), - 1, - reportName, - () -> { - progress.dismiss(); - - Resources res = mContext.getResources(); - String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); - 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) { - UtilityExceptions.defaultException(mContext, ex, progress); - } - - } else { - progress.dismiss(); - String errorMessage = "Nessuna stampante configurata"; - 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/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index 2cddbae5..6d9afe15 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -4,10 +4,16 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; +import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.BaseActivity; @@ -16,9 +22,10 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; -import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel; +import it.integry.integrywmsnative.gest.lista_bancali.ui.ListaColliMainListAdapter; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; -public class ListaBancaliActivity extends BaseActivity { +public class ListaBancaliActivity extends BaseActivity implements ListaBancaliViewModel.Listener{ private static class Key { private static final String MtbColtsKey = "mtbColtsKey"; @@ -28,9 +35,12 @@ public class ListaBancaliActivity extends BaseActivity { private static final String FlagOnlyResiduo = "flagOnlyResiduo"; } - public ActivityListaBancaliBinding bindings; + public ActivityListaBancaliBinding mBindings; - private ListaBancaliViewModel mViewModel; + @Inject + ListaBancaliViewModel mViewModel; + + private final ObservableArrayList mtbColts = new ObservableArrayList<>(); private RunnableArgsWithReturn mCanRecoverUl; private PrinterRESTConsumer.Type mPrinterType; @@ -78,7 +88,12 @@ public class ListaBancaliActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - bindings = DataBindingUtil.setContentView(this, R.layout.activity_lista_bancali); + mBindings = DataBindingUtil.setContentView(this, R.layout.activity_lista_bancali); + + MainApplication.appComponent + .listaBancaliComponent() + .create() + .inject(this); mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); @@ -86,16 +101,36 @@ public class ListaBancaliActivity extends BaseActivity { mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo)); - List mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey)); - mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo); + mtbColts.addAll(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey))); + this.initRecyclerView(); - setSupportActionBar(this.bindings.toolbar); + setSupportActionBar(this.mBindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - } + + public void initRecyclerView() { + mBindings.listaColliMainList.setHasFixedSize(true); + mBindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(this)); + + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); + mBindings.listaColliMainList.addItemDecoration(itemDecorator); + + + ListaColliMainListAdapter adapter = new ListaColliMainListAdapter(mtbColts) + .setOnItemClickListener(mtbColtSelected -> { + this.mViewModel.dispatchMtbColt(mtbColtSelected, mFlagOnlyResiduo, this::startContenutoBancaleActivity); + }); + + adapter.setEmptyView(mBindings.listaBancaliEmptyView); + mBindings.listaColliMainList.setAdapter(adapter); + + mBindings.elevatedToolbar.setRecyclerView(mBindings.listaColliMainList); + } + + @Override public boolean onSupportNavigateUp() { onBackPressed(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliComponent.java new file mode 100644 index 00000000..7e7e4379 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.lista_bancali; + +import dagger.Subcomponent; + +@Subcomponent +public interface ListaBancaliComponent { + + @Subcomponent.Factory + interface Factory { + ListaBancaliComponent create(); + } + + void inject(ListaBancaliActivity listaBancaliActivity); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliModule.java new file mode 100644 index 00000000..a2eddb5d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliModule.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.gest.lista_bancali; + + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; + +@Module(subcomponents = ListaBancaliComponent.class) +public class ListaBancaliModule { + + @Provides + ListaBancaliViewModel providesListaBancaliViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + return new ListaBancaliViewModel(colliMagazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java new file mode 100644 index 00000000..6f28e59c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java @@ -0,0 +1,67 @@ +package it.integry.integrywmsnative.gest.lista_bancali; + + +import androidx.databinding.ObservableArrayList; + +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.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; + +public class ListaBancaliViewModel { + + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + + private Listener mListener; + + @Inject + public ListaBancaliViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + } + + + public void dispatchMtbColt(MtbColt mtbColtToDispatch, boolean onlyResiduo, RunnableArgs onComplete) { + this.sendOnLoadingStarted(); + + new Thread(() -> { + mColliMagazzinoRESTConsumer.getByTestata(mtbColtToDispatch, onlyResiduo, false, mtbColt -> { + this.sendOnLoadingEnded(); + + ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>(); + if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); + mtbColtToDispatch.setMtbColr(mtbColrObservableArrayList); + + onComplete.run(mtbColtToDispatch); + }, this::sendError); + + }).start(); + } + + + 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); + } + + public ListaBancaliViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java deleted file mode 100644 index 04a125a1..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java +++ /dev/null @@ -1,126 +0,0 @@ -package it.integry.integrywmsnative.gest.lista_bancali.core; - -import android.content.Context; -import androidx.databinding.DataBindingUtil; -import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; -import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.ViewGroup; -import android.view.View; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.databinding.ListaBancaliListModelBinding; - -public class MainListListaColliAdapter extends RecyclerView.Adapter { - - protected Context mContext; - protected ObservableArrayList mDataset; - - private View mEmptyView; - - private IRecyclerItemClicked mOnItemClickListener; - - public static class ViewHolder extends RecyclerView.ViewHolder { - protected ListaBancaliListModelBinding mViewDataBinding; - - - public ViewHolder(ListaBancaliListModelBinding v) { - super(v.getRoot()); - mViewDataBinding = v; - } - - public void bind(MtbColt mtbColt) { - mViewDataBinding.setMtbColt(mtbColt); - mViewDataBinding.executePendingBindings(); - } - } - - public MainListListaColliAdapter(Context context, ObservableArrayList myDataset, IRecyclerItemClicked onItemClickListener, View emptyView) { - mContext = context; - mDataset = myDataset; - mEmptyView = emptyView; - mOnItemClickListener = onItemClickListener; - - myDataset.addOnListChangedCallback(onListChangedCallback); - - checkIfEmpty(); - } - - - @Override - public MainListListaColliAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - // create a new view - ListaBancaliListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_bancali_list_model, parent, false); - - return new ViewHolder(viewDataBinding); - } - - - @Override - public void onBindViewHolder(MainListListaColliAdapter.ViewHolder holder, int position) { - MtbColt item = mDataset.get(position); - holder.bind(item); - - holder.mViewDataBinding.getRoot().setOnClickListener(x -> { - if(mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(item, position); - } - }); - } - - @Override - public void onViewRecycled(MainListListaColliAdapter.ViewHolder holder) { - super.onViewRecycled(holder); - } - - - @Override - public int getItemCount() { - return mDataset.size(); - } - - - void checkIfEmpty() { - if (mEmptyView != null) { - final boolean emptyViewVisible = getItemCount() == 0; - mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); - } - } - - - private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>() { - @Override - public void onChanged(ObservableList sender) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - }; - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/ListaColliMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/ListaColliMainListAdapter.java new file mode 100644 index 00000000..de7758e3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ui/ListaColliMainListAdapter.java @@ -0,0 +1,76 @@ +package it.integry.integrywmsnative.gest.lista_bancali.ui; + +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.databinding.ListaBancaliListModelBinding; + +public class ListaColliMainListAdapter extends ExtendedRecyclerView { + + + private RunnableArgs mOnItemClickListener; + + public static class ViewHolder extends RecyclerView.ViewHolder { + protected ListaBancaliListModelBinding mViewDataBinding; + + + public ViewHolder(ListaBancaliListModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(MtbColt mtbColt) { + mViewDataBinding.setMtbColt(mtbColt); + mViewDataBinding.executePendingBindings(); + } + } + + public ListaColliMainListAdapter(ObservableArrayList myDataset) { + super(myDataset); + } + + + @Override + public ListaColliMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + ListaBancaliListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_bancali_list_model, parent, false); + + return new ViewHolder(viewDataBinding); + } + + + @Override + public void onBindViewHolder(ListaColliMainListAdapter.ViewHolder holder, int position) { + MtbColt item = mDataset.get(position); + holder.bind(item); + + holder.mViewDataBinding.getRoot().setOnClickListener(x -> { + if(mOnItemClickListener != null) { + mOnItemClickListener.run(item); + } + }); + } + + @Override + public void onViewRecycled(ListaColliMainListAdapter.ViewHolder holder) { + super.onViewRecycled(holder); + } + + + + + public ListaColliMainListAdapter setOnItemClickListener(RunnableArgs onItemClickListener) { + this.mOnItemClickListener = onItemClickListener; + return this; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java deleted file mode 100644 index 6f4fc2ca..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java +++ /dev/null @@ -1,82 +0,0 @@ -package it.integry.integrywmsnative.gest.lista_bancali.viewmodel; - -import android.app.Dialog; - -import androidx.core.content.ContextCompat; -import androidx.databinding.ObservableArrayList; -import androidx.recyclerview.widget.LinearLayoutManager; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; -import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; -import it.integry.integrywmsnative.gest.lista_bancali.core.MainListListaColliAdapter; -import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; - -public class ListaBancaliViewModel implements IRecyclerItemClicked { - - private ListaBancaliActivity mContext; - private ObservableArrayList mMtbColts; - - private MainListListaColliAdapter mAdapter; - - private boolean mLoadOnlyResiduo; - - public ListaBancaliViewModel(ListaBancaliActivity context, List mtbColts, boolean loadOnlyResiduo){ - mContext = context; - mMtbColts = new ObservableArrayList<>(); - mMtbColts.addAll(mtbColts); - - this.mLoadOnlyResiduo = loadOnlyResiduo; - - initRecyclerView(); - } - - public void initRecyclerView() { - mContext.bindings.listaColliMainList.setHasFixedSize(true); - mContext.bindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(mContext)); - - SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); - itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); - mContext.bindings.listaColliMainList.addItemDecoration(itemDecorator); - - - mAdapter = new MainListListaColliAdapter(mContext, mMtbColts, this, mContext.bindings.listaBancaliEmptyView); - mContext.bindings.listaColliMainList.setAdapter(mAdapter); - - mContext.bindings.elevatedToolbar.setRecyclerView(mContext.bindings.listaColliMainList); - - } - - @Override - public void onItemClick(MtbColt item, int position) { - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); - - try { - ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> { - - ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>(); - if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); - item.setMtbColr(mtbColrObservableArrayList); - - progress.dismiss(); - - mContext.startContenutoBancaleActivity(item); - - }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); - - - } catch (Exception e) { - e.printStackTrace(); - UtilityExceptions.defaultException(mContext, e, progress); - } - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java index c40cc742..fa4f42e3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java @@ -1,12 +1,10 @@ package it.integry.integrywmsnative.gest.login; -import androidx.databinding.DataBindingUtil; -import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; +import androidx.databinding.DataBindingUtil; + import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; -import it.integry.integrywmsnative.core.context.MainContext; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.utility.UtilityWindow; import it.integry.integrywmsnative.databinding.ActivityLoginBinding; @@ -14,7 +12,6 @@ import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel; public class LoginActivity extends BaseActivity { - private MainContext mainContext = new MainContext(this); @Override protected void onCreate(Bundle savedInstanceState) { @@ -22,7 +19,7 @@ public class LoginActivity extends BaseActivity { UtilityWindow.maximizeToFullScreen(this); ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login); - LoginViewModel loginViewModel = new LoginViewModel(this, mainContext); + LoginViewModel loginViewModel = new LoginViewModel(this); binding.setLoginViewModel(loginViewModel); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index ff43799c..2f05a1d7 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 @@ -12,14 +12,12 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.List; -import it.integry.integrywmsnative.MainActivity; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.context.MainContext; +import it.integry.integrywmsnative.SplashActivity; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityServer; @@ -47,15 +45,12 @@ public class LoginViewModel { public BindableString codAziendaError = new BindableString(); - private LoginActivity mActivity; - private MainContext mMainContext; private Dialog mProgress; - public LoginViewModel(LoginActivity activity, MainContext mainContext) { + public LoginViewModel(LoginActivity activity) { this.mActivity = activity; - this.mMainContext = mainContext; loginButtonEnabled.set(true); @@ -66,7 +61,6 @@ public class LoginViewModel { } - public boolean validate() { if (username.isEmpty() || username.get().length() < 3) { usernameError.set(mActivity.getText(R.string.username_error_not_valid).toString()); @@ -82,9 +76,8 @@ public class LoginViewModel { } - - public void login(boolean areValidData){ - if(areValidData){ + public void login(boolean areValidData) { + if (areValidData) { loginButtonEnabled.set(false); mProgress = UtilityProgress.createDefaultProgressDialog(mActivity); @@ -112,7 +105,7 @@ public class LoginViewModel { UtilityServer.isEmsApiAvailable(host, port, value1 -> { - if(value1){ //Is online + if (value1) { //Is online loginHelper.doLogin(host, port, new ISimpleOperationCallback() { @Override public void onSuccess(final LoginDTO loginDTO) { @@ -164,32 +157,26 @@ public class LoginViewModel { SettingsManager.i().getUser().setUsername(username.get()); SettingsManager.i().getUser().setPassword(password.get()); - SystemRESTConsumer.getAvailableCodMdeps(new ISimpleOperationCallback>() { - @Override - public void onSuccess(List availableCodMdeps) { - SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps); + SystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> { + SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps); - if(availableCodMdeps == null || availableCodMdeps.size() == 0) { - onLoginFailed(Html.fromHtml(String.format(mActivity.getText(R.string.no_codmdep_available).toString()))); - return; - } - - SettingsManager.i().getUserSession().setDepo(availableCodMdeps.get(0)); - - - if(onComplete != null) onComplete.run(); + if (availableCodMdeps == null || availableCodMdeps.size() == 0) { + onLoginFailed(Html.fromHtml(String.format(mActivity.getText(R.string.no_codmdep_available).toString()))); + return; } - @Override - public void onFailed(Exception ex) { - //BOH - onLoginFailed(new SpannableString(ex.getMessage())); - } + SettingsManager.i().getUserSession().setDepo(availableCodMdeps.get(0)); + + + if (onComplete != null) onComplete.run(); + }, ex -> { + //BOH + onLoginFailed(new SpannableString(ex.getMessage())); }); } - private void onLoginFailed(final Spanned message){ + private void onLoginFailed(final Spanned message) { mProgress.dismiss(); loginButtonEnabled.set(true); mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeErrorDialog( @@ -200,7 +187,7 @@ public class LoginViewModel { } - private void onLoginSuccess(final String title, final Spanned message, final String host, final int port, final List availableProfiles){ + private void onLoginSuccess(final String title, final Spanned message, final String host, final int port, final List availableProfiles) { mProgress.dismiss(); mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog( title, @@ -210,8 +197,8 @@ public class LoginViewModel { .show(mActivity.getSupportFragmentManager(), "tag")); } - private void showProfileDBSelectionDialog(final String host, final int port, final List availableProfiles){ - if(availableProfiles != null && availableProfiles.size() == 1 ) { + private void showProfileDBSelectionDialog(final String host, final int port, final List availableProfiles) { + if (availableProfiles != null && availableProfiles.size() == 1) { SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(0)); loadDepo(host, port, this::onLoginCompleted); @@ -238,19 +225,16 @@ public class LoginViewModel { public void onLoginCompleted() { loginButtonEnabled.set(true); - SettingsManager.update(); - Dialog loadingProgress = UtilityProgress.createDefaultProgressDialog(mActivity); - mMainContext.init(() -> { - loadingProgress.dismiss(); - mActivity.finish(); - - Intent myIntent = new Intent(mActivity, MainActivity.class); - mActivity.startActivity(myIntent); - }); - + startSplashActivity(); } + private void startSplashActivity() { + mActivity.finish(); + Intent myIntent = new Intent(mActivity, SplashActivity.class); + mActivity.startActivity(myIntent); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java similarity index 96% rename from app/src/main/java/it/integry/integrywmsnative/MainActivity.java rename to app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java index c251a146..e42327d5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative; +package it.integry.integrywmsnative.gest.main; import android.content.Intent; import android.os.Bundle; @@ -25,13 +25,15 @@ import java.util.List; import javax.inject.Inject; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; 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.context.MainContext; 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; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; @@ -41,13 +43,12 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.menu.MenuService; 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; -import it.integry.integrywmsnative.gest.main.MainFragment; import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; public class MainActivity extends BaseActivity @@ -59,10 +60,13 @@ public class MainActivity extends BaseActivity private boolean mIsOnline = false; @Inject - AppDatabase mAppDatabase; + ColliDataRecoverService mColliDataRecoverService; @Inject - ColliDataRecoverService mColliDataRecoverService; + MenuService menuService; + + @Inject + MainContext mainContext; @Override protected void onCreate(Bundle savedInstanceState) { @@ -73,8 +77,6 @@ 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()); @@ -184,9 +186,10 @@ public class MainActivity extends BaseActivity case R.id.nav_logout: ServerStatusChecker.dispose(); - UtilitySettings.logout(); + this.mainContext.logout(() -> { + startLoginActivity(); + }); - startLoginActivity(); break; } } diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivityComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivityComponent.java similarity index 83% rename from app/src/main/java/it/integry/integrywmsnative/MainActivityComponent.java rename to app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivityComponent.java index 6e616fe3..42e29f68 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivityComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivityComponent.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative; +package it.integry.integrywmsnative.gest.main; import dagger.Subcomponent; diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivityModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivityModule.java similarity index 70% rename from app/src/main/java/it/integry/integrywmsnative/MainActivityModule.java rename to app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivityModule.java index 3cb0f046..b990452a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivityModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivityModule.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative; +package it.integry.integrywmsnative.gest.main; import dagger.Module; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 4bd807d4..ef9f6f25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -20,7 +20,9 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import it.integry.integrywmsnative.MainActivity; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.ClassRouter; @@ -28,11 +30,13 @@ import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfigurati import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; +import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverDTO; +import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -53,6 +57,15 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar; */ public class MainFragment extends Fragment implements ITitledFragment, IScrollableFragment { + @Inject + ColliDataRecoverService colliDataRecoverService; + + @Inject + MenuService menuService; + + @Inject + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer; + private FragmentMainBinding mBindings; private final List mOnPreDestroyList = new ArrayList<>(); @@ -81,6 +94,11 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab Bundle savedInstanceState) { this.mLayoutInflater = inflater; + MainApplication.appComponent + .mainFragmentComponent() + .create() + .inject(this); + mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false); @@ -95,6 +113,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab init(); initGestMenu(); +// initGestMenuOLD(); initVersion(); } @@ -134,12 +153,12 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab } private void initRecuperoCollo() { - if (ColliDataRecover.thereIsAnExistantSession()) { + if (colliDataRecoverService.thereIsAnExistantSession()) { startRecoverMode(); List generatedErrors = new ArrayList<>(); - Iterator sessionsIterator = ColliDataRecover.getAllSessionIDs().iterator(); + Iterator sessionsIterator = colliDataRecoverService.getAllSessionIDs().iterator(); cyclicRecover(sessionsIterator, () -> { @@ -157,7 +176,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab RunnableArgss tmpOnFailed = (ex, recoveredMtbColtID) -> { if (ex.getMessage().contains("Dati entity mtb_colt non trovati") || ex.getMessage().contains("Dati collo non corretti") || (ex.getMessage().contains("Il collo numero") && ex.getMessage().contains("non esiste"))) { - ColliDataRecover.closeSession(recoveredMtbColtID); + colliDataRecoverService.closeSession(recoveredMtbColtID); onFailed.run(ex); } else { onFailed.run(ex); @@ -168,17 +187,17 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab if (sessionsIterator.hasNext()) { Integer recoveredMtbColtID = sessionsIterator.next(); - ColliDataRecover.RecoverDTO recoveredMtbColtDto = ColliDataRecover.getSession(recoveredMtbColtID); + ColliDataRecoverDTO recoveredMtbColtDto = colliDataRecoverService.getSession(recoveredMtbColtID); MtbColt recoveredMtbColt = recoveredMtbColtDto.getMtbColt(); if (recoveredMtbColt != null && (recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA || recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) { IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); - ColliMagazzinoRESTConsumer.updateDataFineStatic(recoveredMtbColt, () -> { + this.colliMagazzinoRESTConsumer.updateDataFine(recoveredMtbColt, () -> { ordiniVendita.distribuisciCollo(recoveredMtbColt, recoveredMtbColtDto.getTestateOrdini(), mtbColts -> { - ColliDataRecover.closeSession(recoveredMtbColtID); + colliDataRecoverService.closeSession(recoveredMtbColtID); cyclicRecover(sessionsIterator, onComplete, onFailed); }, ex -> { @@ -189,7 +208,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab tmpOnFailed.run(ex, recoveredMtbColtID); }); } else { - ColliDataRecover.closeSession(recoveredMtbColtID); + colliDataRecoverService.closeSession(recoveredMtbColtID); cyclicRecover(sessionsIterator, onComplete, onFailed); } @@ -226,8 +245,58 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab mToolbar = toolbar; } - private void initGestMenu() { + int menuSpanCount = 2; + if(UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4; + else if(UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3; + + MenuConfiguration baseMenuConfiguration = new MenuConfiguration(); + List menuGroups = baseMenuConfiguration.getGroups(); + + for(int i = 0; i < menuGroups.size(); i++) { + try { + + BaseMenuConfiguration.MenuGroup menuGroup = menuGroups.get(i); + + if(menuService.isGroupEnabled(menuGroup)) { + + FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false); + + String title = this.getResources().getString(menuGroup.getGroupText()); + groupBinding.generalDashboardGroupTitle.setText(title); + + List enableMenuItems = new ArrayList<>(); + + for(int j = 0; j < menuGroup.getItems().size(); j++) { + if(menuService.isItemEnabled(menuGroup.getItems().get(j))) { + enableMenuItems.add(menuGroup.getItems().get(j)); + } + } + + MenuListAdapter menuListAdapter = new MenuListAdapter(getContext(), enableMenuItems); + + groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), menuSpanCount)); + groupBinding.mainList.setAdapter(menuListAdapter); + groupBinding.mainList.setNestedScrollingEnabled(false); + + menuListAdapter.setClickListener((view, position) -> { + onMenuClick(menuGroup.getItems().get(position)); + }); + + mBindings.menuContainer.addView(groupBinding.getRoot()); + + + } + + + } catch (Exception exception) { + exception.printStackTrace(); + } + } + + } + + private void initGestMenuOLD() { ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); if (customConfiguration == null) { // MainApplication.exit(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragmentComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragmentComponent.java new file mode 100644 index 00000000..90d056e4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragmentComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.main; + +import dagger.Subcomponent; + +@Subcomponent +public interface MainFragmentComponent { + + @Subcomponent.Factory + interface Factory { + + MainFragmentComponent create(); + } + + void inject(MainFragment mainActivity); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragmentModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragmentModule.java new file mode 100644 index 00000000..713ba11c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragmentModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.gest.main; + +import dagger.Module; + +@Module(subcomponents = MainFragmentComponent.class) +public class MainFragmentModule { +} 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 94a5867a..442e7b19 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 @@ -45,8 +45,8 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel; import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; import it.integry.integrywmsnative.ui.ElevatedToolbar; @@ -155,7 +155,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter = new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData) - .setEmptyView(this.mBindings.ordiniVenditaEmptyView) .setOnGroupItemClicked(x -> { if (!canSelectMultipleClienti) { Stream.of(mOrdiniInevasiMutableData) @@ -182,6 +181,9 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF .anyMatch(y -> y.getSelectedObservable().get())); }); + ordiniUscitaElencoAdapter + .setEmptyView(this.mBindings.ordiniVenditaEmptyView); + this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter); this.mBindings.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity())); @@ -286,26 +288,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF this.mViewModel.loadPicking(selectedOrders); } - - @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(); - } - @Override public void onOrderFiltered(List filteredOrders) { refreshList(filteredOrders); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java index 0c34d915..12faa6c2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java @@ -64,11 +64,7 @@ public class DialogVenditaFiltroAvanzatoView { private ArrayAdapter arrayAdapterAutomezzo; private ArrayAdapter arrayAdapterPaese; - private DialogVenditaFiltroAvanzatoViewModel viewModel; - - public static AlertDialog make(final Context context, final List ordersList, RunnableArgs onDismiss) { - return new DialogVenditaFiltroAvanzatoView(context, ordersList, null, onDismiss).currentAlert; - } + private final DialogVenditaFiltroAvanzatoViewModel viewModel; public static AlertDialog make(final Context context, final List ordersList, @@ -93,8 +89,8 @@ public class DialogVenditaFiltroAvanzatoView { binding.setView(this); binding.setViewmodel(viewModel); - initViewModelNew(viewModel); - initView(binding, viewModel); + initViewModel(viewModel); + initView(binding); currentAlert = alertDialog.create(); currentAlert.setCanceledOnTouchOutside(false); @@ -102,8 +98,6 @@ public class DialogVenditaFiltroAvanzatoView { currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - binding.positiveBtn.setOnClickListener(view -> { currentAlert.dismiss(); }); @@ -119,7 +113,7 @@ public class DialogVenditaFiltroAvanzatoView { } - private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) { + private void initView(DialogVenditaFiltroAvanzatoBinding bindings) { IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA); // bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> { @@ -192,7 +186,7 @@ public class DialogVenditaFiltroAvanzatoView { refreshAll(); } - private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) { + private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel) { viewModel.applyAllTests(); BindableString.registerListener(idViaggio, value -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java index 3efba5fb..b1e7a3bb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java @@ -26,7 +26,7 @@ public class DialogVenditaFiltroAvanzatoViewModel { private List initialOrderList; - private MutableLiveData> currentFilteredOrderList = new MutableLiveData<>(); + private final MutableLiveData> currentFilteredOrderList = new MutableLiveData<>(); public void init(List initialList) { this.initialOrderList = initialList; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java similarity index 82% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java index 0df07d14..512ab6f7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_uscita_elenco.list; +package it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui; import android.content.Context; @@ -10,28 +10,19 @@ import android.view.ViewGroup; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.ArrayList; -import java.util.List; - import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListGroupModelBinding; import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModelBinding; -public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter { - - private final Context mContext; - private final List mDataset = new ArrayList<>(); - private View mEmptyView; +public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerView { + private Context mContext; private RunnableArgs mOnGroupItemClicked; private RunnableArgs mOnItemChecked; @@ -57,18 +48,8 @@ public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter mutableDataSet) { - this.mContext = context; - - mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() { - @Override - public void onChanged(ObservableList sender) { - mDataset.clear(); - mDataset.addAll(sender); - notifyDataSetChanged(); - notifyDataChanged(); - checkIfEmpty(); - } - }); + super(mutableDataSet); + mContext = context; } public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) { @@ -81,19 +62,6 @@ public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort) { - DialogChooseArtsFromListaArts.make(getActivity(), mtbColrsToPick, onComplete, () -> { - onAbort.run(); - BarcodeManager.enable(); - }); + DialogChooseArtsFromListaArts + .newInstance(mtbColrsToPick, onComplete, () -> { + onAbort.run(); + BarcodeManager.enable(); + }) + .show(requireActivity().getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/ui/PickingLiberoListAdapter.java similarity index 98% rename from app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/ui/PickingLiberoListAdapter.java index 434be576..04250597 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/ui/PickingLiberoListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.picking_libero.core; +package it.integry.integrywmsnative.gest.picking_libero.ui; import android.view.LayoutInflater; import android.view.ViewGroup; 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 ecdaf0ae..3d4cfb24 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 @@ -42,8 +42,8 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding; -import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter; -import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListModel; +import it.integry.integrywmsnative.gest.picking_resi.ui.PickingResiListAdapter; +import it.integry.integrywmsnative.gest.picking_resi.ui.PickingResiListModel; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; 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/ui/PickingResiListAdapter.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/ui/PickingResiListAdapter.java index 30459d32..4d8b3c29 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/ui/PickingResiListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.picking_resi.core; +package it.integry.integrywmsnative.gest.picking_resi.ui; import android.content.Context; import android.graphics.Color; 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/ui/PickingResiListModel.java similarity index 97% rename from app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/ui/PickingResiListModel.java index fe12ed1e..61d14436 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/ui/PickingResiListModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.picking_resi.core; +package it.integry.integrywmsnative.gest.picking_resi.ui; import java.math.BigDecimal; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoComponent.java new file mode 100644 index 00000000..809f3677 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione; + +import dagger.Subcomponent; + +@Subcomponent +public interface ProdOrdineProduzioneElencoComponent { + + @Subcomponent.Factory + interface Factory { + ProdOrdineProduzioneElencoComponent create(); + } + + void inject(ProdOrdineProduzioneElencoFragment prodOrdineProduzioneElencoFragment); + +} 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 df721f6b..09875676 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 @@ -1,67 +1,66 @@ package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione; -import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.Html; -import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; 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.Stream; import java.math.BigDecimal; -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.data_cache.DataCache; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.di.BindableBoolean; +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.rest.CommonRESTException; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; -import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneElencoBinding; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; 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.gest.prod_accettazione_ord_produzione.core.OrdineProduzioneHelper; -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.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoView; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoViewModel; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.OrdineProduzioneListAdapter; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; /** * A simple {@link Fragment} subclass. */ -public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { +public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements ProdOrdineProduzioneElencoViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment { - private final List mOnPreDestroyList = new ArrayList<>(); - private ElevatedToolbar mToolbar; + public BindableBoolean fabVisible = new BindableBoolean(false); + + @Inject + ProdOrdineProduzioneElencoViewModel mViewModel; private FragmentProdOrdineProduzioneElencoBinding mBinding; - private OrdineProduzioneHelper mHelper; - private OrdineProduzioneListAdapter mAdapter; - - private List mOriginalOrderList; - private List mRenderedOrderList = new ArrayList<>(); + private final ObservableArrayList mOrdiniInevasiMutableData = new ObservableArrayList<>(); private AppCompatTextView mAppBarTitle; - private DialogOrdineProduzioneFiltroAvanzato.DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel; + private DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel; public ProdOrdineProduzioneElencoFragment() { @@ -87,28 +86,30 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_ordine_produzione_elenco, container, false); + MainApplication.appComponent + .prodOrdineProduzioneElencoComponent() + .create() + .inject(this); + mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); mBinding.setView(this); - mBinding.ordineProduzioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - mBinding.ordineProduzioneMainFab.hide(); - mBinding.ordineProduzioneMainFab.setOnClickListener(v -> { - this.onAccettazioneMainFabClick(); - }); + this.initRecyclerView(); - mToolbar.setRecyclerView(mBinding.ordineProduzioneMainList); - - init(); return mBinding.getRoot(); } - @Override - public void onDestroy() { - super.onDestroy(); - for (Runnable onPreDestroy : mOnPreDestroyList) { - onPreDestroy.run(); - } + @Override + public void onStart() { + super.onStart(); + + this.fabVisible.set(false); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep); } @Override @@ -117,144 +118,142 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit mAppBarTitle.setText(context.getText(R.string.prod_ordine_produzione_title_fragment).toString()); } - - private void init() { - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - mHelper = new OrdineProduzioneHelper(getActivity()); - mHelper.loadOrdini(ordini -> { - if (ordini != null) { - Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); - mOriginalOrderList = ordini; - } - - mBinding.ordiniProduzioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - refreshRenderedOrdini(ordini); - initRecyclerView(); - progress.dismiss(); - }, ex -> { - progress.dismiss(); - - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if (errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(errorMessage), null, null) - .show(getActivity().getSupportFragmentManager(), "tag"); - } - ); - } - - @Override - public void setScrollToolbar(ElevatedToolbar toolbar) { - mToolbar = toolbar; - } - private void initRecyclerView() { - mAdapter = new OrdineProduzioneListAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged); - mBinding.ordineProduzioneMainList.setAdapter(mAdapter); - } + this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); - private void refreshRenderedOrdini(List ordini) { + mBinding.ordineProduzioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - mRenderedOrderList.clear(); - if (ordini != null) mRenderedOrderList.addAll(ordini); - } + OrdineProduzioneListAdapter adapter = new OrdineProduzioneListAdapter(getActivity(), mOrdiniInevasiMutableData) + .setOnGroupItemClicked(x -> { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); - private void refreshRecyclerView() { - mAdapter.updateItems(mRenderedOrderList); - } + boolean allSelected = Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .allMatch(y -> y.getSelectedObservable().get()); - private RunnableArgs onSingleSelectionChanged = dto -> { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .forEach(y -> y.getSelectedObservable().set(!allSelected)); + }) + .setOnItemChecked(x -> { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); - if (dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) - .forEach(x -> x.setSelected(false)); - } - - if (selectedOrders != null && selectedOrders.size() > 0) { - mBinding.ordineProduzioneMainFab.show(); - } else { - mBinding.ordineProduzioneMainFab.hide(); - } - }; - - - private void onAccettazioneMainFabClick() { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - OrdiniAccettazioneRESTConsumer.retrievePickingListNewStatic(selectedOrders, sitArtOrds -> { - progress.dismiss(); - - long artsCounter = Stream.of(sitArtOrds) - .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) - .map(SitArtOrdDTO::getCodMart) - .distinct() - .count(); - - long ordsCounter = Stream.of(sitArtOrds) - .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) - .count(); - - 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)), - null, - () -> { - - String cacheSitArtItemID = DataCache.addItem(sitArtOrds); - String cacheOrdersItemID = DataCache.addItem(selectedOrders); - - Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class); - myIntent.putExtra("keyOrders", cacheOrdersItemID); - myIntent.putExtra("keySitArts", cacheSitArtItemID); - getActivity().startActivity(myIntent); - - }).show(getActivity().getSupportFragmentManager(), "tag"); - - }, - - ex -> { -// Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); - progress.dismiss(); - - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if (errorMessage == null) - errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(errorMessage), null, null) - .show(getActivity().getSupportFragmentManager(), "tag"); + fabVisible.set(Stream.of(mOrdiniInevasiMutableData) + .anyMatch(y -> y.getSelectedObservable().get())); }); + adapter.setEmptyView(mBinding.ordiniProduzioneEmptyView); + mBinding.ordineProduzioneMainList.setAdapter(adapter); + + mToolbar.setRecyclerView(mBinding.ordineProduzioneMainList); + } + + private void refreshList(List filteredList) { + + List tmpList = null; + + if(filteredList != null) { + tmpList = filteredList; + } else if (mAppliedFilterViewModel != null) { + mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue()); + mAppliedFilterViewModel.applyAllTests(); + tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue(); + } else { + tmpList = mViewModel.getOrderList().getValue(); + } + + this.mOrdiniInevasiMutableData.clear(); + this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList)); + } + + private List convertDataModelToListModel(List dataList) { + + return Stream.of(dataList) + .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) + .sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : "")) + .map(x -> { + MainListProdOrdineProduzioneElencoListModel listModel = new MainListProdOrdineProduzioneElencoListModel(); + + listModel.setOriginalModel(x); + + listModel.setGroupTitle(x.getRagSocOrd()); + + listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero().toString(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + List clienti = Stream.of(dataList) + .filter(y -> y.getBarcode().equals(x.getBarcode())) + .map(y -> new MainListProdOrdineProduzioneElencoClienteListModel() + .setPrimaryText(y.getRifOrd()) + .setRightText(y.getCodJcom())) + .toList(); + + listModel.setClientiListModel(clienti); + + return listModel; + }) + .toList(); + } + + + public void dispatchOrders() { + List selectedOrders = Stream.of(this.mOrdiniInevasiMutableData) + .filter(x -> x.getSelectedObservable().get()) + .map(MainListProdOrdineProduzioneElencoListModel::getOriginalModel) + .toList(); + + + this.mViewModel.loadPicking(selectedOrders); } @Override public void onFilterClick() { - DialogOrdineProduzioneFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> { - mAppliedFilterViewModel = filter; + DialogOrdineProduzioneFiltroAvanzatoView.make( + getActivity(), + this.mViewModel.getOrderList().getValue(), + mAppliedFilterViewModel, - if (filteredOrderList != null) { + filter -> { - refreshOrdini(filteredOrderList); - refreshRecyclerView(); - } + mAppliedFilterViewModel = filter; + refreshList(null); - }).show(); + }).show(); } - public void refreshOrdini(List ordini) { - mRenderedOrderList.clear(); - mRenderedOrderList.addAll(ordini); - } - @Override - public void addOnPreDestroy(Runnable onPreDestroy) { - this.mOnPreDestroyList.add(onPreDestroy); + public void onOrdersDispatched(List orders, List sitArts) { + long artsCounter = Stream.of(sitArts) + .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) + .map(SitArtOrdDTO::getCodMart) + .distinct() + .count(); + + long ordsCounter = Stream.of(sitArts) + .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) + .count(); + + + 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)), + null, + () -> { + + String cacheSitArtItemID = DataCache.addItem(sitArts); + String cacheOrdersItemID = DataCache.addItem(orders); + + Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class); + myIntent.putExtra("keyOrders", cacheOrdersItemID); + myIntent.putExtra("keySitArts", cacheSitArtItemID); + getActivity().startActivity(myIntent); + + }).show(getActivity().getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java new file mode 100644 index 00000000..a87fdc14 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoModule.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.rest.ProdOrdineProduzioneRESTConsumer; + +@Module(subcomponents = ProdOrdineProduzioneElencoComponent.class) +public class ProdOrdineProduzioneElencoModule { + + @Provides + ProdOrdineProduzioneRESTConsumer providesProdOrdineProduzioneRESTConsumer() { + return new ProdOrdineProduzioneRESTConsumer(); + } + + @Provides + ProdOrdineProduzioneElencoViewModel providesProdOrdineProduzioneElencoViewModel(ProdOrdineProduzioneRESTConsumer prodOrdineProduzioneRESTConsumer) { + return new ProdOrdineProduzioneElencoViewModel(prodOrdineProduzioneRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoViewModel.java new file mode 100644 index 00000000..512f9856 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoViewModel.java @@ -0,0 +1,97 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; +import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.rest.ProdOrdineProduzioneRESTConsumer; + +public class ProdOrdineProduzioneElencoViewModel { + + private final ProdOrdineProduzioneRESTConsumer mProdOrdineProduzioneRESTConsumer; + + private final MutableLiveData> mOrderList = new MutableLiveData<>(); + + private Listener mListener; + + private String codMdep; + + + @Inject + public ProdOrdineProduzioneElencoViewModel(ProdOrdineProduzioneRESTConsumer prodOrdineProduzioneRESTConsumer) { + this.mProdOrdineProduzioneRESTConsumer = prodOrdineProduzioneRESTConsumer; + } + + + public void init(String codMdep) { + this.codMdep = codMdep; + + this.sendOnLoadingStarted(); + new Thread(() -> { + + mProdOrdineProduzioneRESTConsumer.getOrdiniInevasi(codMdep, orderList -> { + this.mOrderList.setValue(orderList); + + this.sendOnLoadingEnded(); + }, this::sendError); + + }).start(); + } + + + public void loadPicking(List selectedOrders) { + + this.sendOnLoadingStarted(); + + new Thread(() -> { + + this.mProdOrdineProduzioneRESTConsumer.retrievePickingListNew(selectedOrders, sitArtOrds -> { + + this.sendOnOrdersDispatched(selectedOrders, sitArtOrds); + this.sendOnLoadingEnded(); + + }, this::sendError); + + }).start(); + + } + + + public MutableLiveData> getOrderList() { + return mOrderList; + } + + public ProdOrdineProduzioneElencoViewModel 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 sendOnOrdersDispatched(List orders, List sitArts) { + if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts); + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + void onOrdersDispatched(List orders, List sitArts); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/core/OrdineProduzioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/core/OrdineProduzioneHelper.java deleted file mode 100644 index 8957c8b7..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/core/OrdineProduzioneHelper.java +++ /dev/null @@ -1,70 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.core; - -import android.content.Context; -import android.util.Log; - -import com.annimon.stream.Stream; - -import java.util.List; - -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.model.EsitoType; -import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; -import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class OrdineProduzioneHelper { - - private Context mContext; - - public OrdineProduzioneHelper(Context context){ - mContext = context; - } - public void loadOrdini(RunnableArgs> onComplete, RunnableArgs onFailed){ - String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); - service.listOrdiniInevasi(codMdep, "P").enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - - if(response.isSuccessful()) { - - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - onComplete.run(response.body().getDto()); - } else { - Log.e("Accettazione", response.body().getErrorMessage()); - onFailed.run(new Exception(response.body().getErrorMessage())); - } - } else { - Log.e("Accettazione", response.message()); - onFailed.run(new Exception(response.message())); - } - } else { - Log.e("Accettazione", "Status " + response.code() + ": " + response.message()); - onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); - } - } - - @Override - public void onFailure(Call>> call, Throwable t) { - Log.e("Produzione", t.toString()); - onFailed.run(new Exception(t)); - } - }); - } - - - public List getSelectedOrders(List ordiniList){ - return Stream.of(ordiniList) - .filter(OrdineAccettazioneInevasoDTO::isSelected) - .toList(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/core/OrdineProduzioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/core/OrdineProduzioneListAdapter.java deleted file mode 100644 index 07a2a7c4..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/core/OrdineProduzioneListAdapter.java +++ /dev/null @@ -1,196 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.core; - -import android.content.Context; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; -import androidx.recyclerview.widget.RecyclerView; - -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneListGroupClientiBinding; -import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneListGroupModelBinding; -import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneListModelBinding; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; - -public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - - - private Context mContext; - - private List mOriginalDataset; - private List mDataset; - private RunnableArgs mOnSingleSelectionChanged; - - - static class SubheaderHolder extends RecyclerView.ViewHolder { - - FragmentProdOrdineProduzioneListModelBinding binding; - - SubheaderHolder(FragmentProdOrdineProduzioneListModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - static class SingleItemViewHolder extends RecyclerView.ViewHolder { - - FragmentProdOrdineProduzioneListGroupModelBinding binding; - - SingleItemViewHolder(FragmentProdOrdineProduzioneListGroupModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - - public OrdineProduzioneListAdapter(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { - mContext = context; - mOriginalDataset = myDataset; - mDataset = orderItems(myDataset); - mOnSingleSelectionChanged = onSingleSelectionChanged; - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List orderItems(List dataset) { - return Stream.of(dataset) - .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) - .sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : "")) - .toList(); - - } - - - - @Override - public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { - FragmentProdOrdineProduzioneListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_model, parent, false); - return new SubheaderHolder(binding); - } - - @Override - public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { - FragmentProdOrdineProduzioneListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_group_model, parent, false); - return new SingleItemViewHolder(binding); - } - - - @Override - public void onBindSubheaderViewHolder(OrdineProduzioneListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { - subheaderHolder.binding.ordineProduzioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd()); - - subheaderHolder.binding.getRoot().setOnClickListener(v -> { - - boolean anySelected = Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .anyMatch(OrdineAccettazioneInevasoDTO::isSelected); - - Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .forEach(x -> x.setSelected(!anySelected)); - }); - } - - @Override - public void onBindItemViewHolder(OrdineProduzioneListAdapter.SingleItemViewHolder h, int itemPosition) { - final OrdineAccettazioneInevasoDTO ordine = mDataset.get(itemPosition); - final OrdineProduzioneListAdapter.SingleItemViewHolder holder = h; - - holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumero()); - - holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); - - ordine.selected.resetOnPropertyChangedCallback(); - - - String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.ordineProduzioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); - - holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd.removeAllViews(); - - List clienti = Stream.of(mOriginalDataset) - .filter(x -> x.getBarcode().equals(ordine.getBarcode())) - .toList(); - - for (OrdineAccettazioneInevasoDTO cliente : clienti) { - FragmentProdOrdineProduzioneListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_group_clienti, holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd, false); - - binding.ordineProduzioneMainListGroupClientiComm.setText(cliente.getRifOrd()); - -// if (!UtilityString.isNullOrEmpty(cliente.getDataConsS())) { -// binding.ordineProduzioneMainListGroupClientiDatacons.setText(UtilityDate.formatDate(cliente.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)); -// } else { -// binding.ordineProduzioneMainListGroupClientiDatacons.setText(""); -// } - - if (!UtilityString.isNullOrEmpty(cliente.getCodJcom())) { - binding.ordineProduzioneMainListGroupClientiDatacons.setText(cliente.getCodJcom()); - } - - holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot()); - } - - holder.binding.setCheckboxValue(ordine.selected); - - holder.binding.getRoot().setOnClickListener(v -> { - ordine.setSelected(!ordine.isSelected()); - }); - - holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); - - //Bindable to View - ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - if(holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumero())) { - holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); - } - } - }); - - - //View to Bindable - holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { - ordine.setSelected(isChecked); - mOnSingleSelectionChanged.run(ordine); - }); - } - - - @Override - public boolean onPlaceSubheaderBetweenItems(int position) { - return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd()); - - } - - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java deleted file mode 100644 index 58d97159..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java +++ /dev/null @@ -1,225 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog; - -import androidx.appcompat.app.AlertDialog; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; -import android.view.WindowManager; -import android.widget.ArrayAdapter; -import android.widget.MultiAutoCompleteTextView; - -import androidx.databinding.DataBindingUtil; - -import com.annimon.stream.Stream; -import com.annimon.stream.function.Predicate; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableString; -import it.integry.integrywmsnative.core.expansion.RunnableArgss; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.DialogOrdineProduzioneFiltroAvanzatoBinding; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; - -public class DialogOrdineProduzioneFiltroAvanzato { - - - private AlertDialog currentAlert; - private Context currentContext; - - private RunnableArgss, DialogOrdineProduzioneFiltroAvanzatoViewModel> currentOnFilterDone; - - private List currentOrderList; - private List currentFilteredOrderList; - - - private ArrayAdapter arrayAdapterNumOrds; - private ArrayAdapter arrayAdapterCodJcoms; - - private Predicate currentNumOrdsPredicate = null; - private Predicate currentCodJcomsPredicate = null; - - - - public static AlertDialog make(final Context context, - final List ordersList, - DialogOrdineProduzioneFiltroAvanzatoViewModel baseViewModel, - RunnableArgss, DialogOrdineProduzioneFiltroAvanzatoViewModel> onDismiss) { - return new DialogOrdineProduzioneFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert; - } - - - private DialogOrdineProduzioneFiltroAvanzato(final Context context, final List ordersList, DialogOrdineProduzioneFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogOrdineProduzioneFiltroAvanzatoViewModel> onDismiss) { - currentContext = context; - currentOrderList = ordersList; - currentOnFilterDone = onDismiss; - - DialogOrdineProduzioneFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogOrdineProduzioneFiltroAvanzatoViewModel(); - - LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - - DialogOrdineProduzioneFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ordine_produzione_filtro_avanzato, null, false); - - final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context) - .setView(binding.getRoot()); - - binding.setViewmodel(viewModel); - initViewModelNew(viewModel, binding); - initView(binding, viewModel); - - currentAlert = alertDialog.create(); - currentAlert.setCanceledOnTouchOutside(false); - - currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - binding.positiveBtn.setOnClickListener(view -> { - currentAlert.dismiss(); - }); - - binding.neutralBtn.setOnClickListener(view -> { - resetAll(viewModel); - }); - - - currentAlert.setOnDismissListener(dialogInterface -> { - if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList, viewModel); - }); - - refreshList(); - - } - - private void resetAll(DialogOrdineProduzioneFiltroAvanzatoViewModel viewModel) { - viewModel.numOrds.set(null); - viewModel.codJcoms.set(null); - } - - private void initView(DialogOrdineProduzioneFiltroAvanzatoBinding bindings, DialogOrdineProduzioneFiltroAvanzatoViewModel viewModel) { - - arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(false)); - bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds); - bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); - - arrayAdapterCodJcoms = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterCodJcoms.addAll(getAvailableCodJcoms(false)); - bindings.filledExposedDropdownCodJcoms.setAdapter(arrayAdapterCodJcoms); - bindings.filledExposedDropdownCodJcoms.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); - - - viewModel.numOrds.refresh(); - viewModel.codJcoms.refresh(); - } - - - private void initViewModelNew(DialogOrdineProduzioneFiltroAvanzatoViewModel viewModel, DialogOrdineProduzioneFiltroAvanzatoBinding bindings) { - - - BindableString.registerListener(viewModel.numOrds, value -> { - if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null; - else { - String[] numOrdsSplitted = value.split("[,\\ ]"); - - try{ - List numOrdsInteger = Stream.of(numOrdsSplitted) - .filter(x -> !UtilityString.isNullOrEmpty(x)) - .map(Integer::parseInt).toList(); - - currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumero()); - } catch (NumberFormatException ex) { - currentNumOrdsPredicate = null; - } - } - - refreshList(); - - arrayAdapterCodJcoms.clear(); - arrayAdapterCodJcoms.addAll(getAvailableCodJcoms(true)); - }); - - - BindableString.registerListener(viewModel.codJcoms, value -> { - if(UtilityString.isNullOrEmpty(value)) currentCodJcomsPredicate = null; - else { - String[] codJcomsSplitted = value.split("[,\\ ]"); - - try{ - List codJcoms = Stream.of(codJcomsSplitted) - .filter(x -> !UtilityString.isNullOrEmpty(x)).toList(); - - currentCodJcomsPredicate = o -> codJcoms.contains(o.getCodJcom()); - } catch (NumberFormatException ex) { - currentCodJcomsPredicate = null; - } - } - - refreshList(); - - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - }); - - - - } - - - private List getAvailableNumOrds(boolean skipRecalc) { - if(currentCodJcomsPredicate == null){ - currentFilteredOrderList = currentOrderList; - } else - if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentCodJcomsPredicate == null || (currentCodJcomsPredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(x -> x.getNumero().toString()).distinct().withoutNulls().toList(); - } - - - private List getAvailableCodJcoms(boolean skipRecalc) { - if(currentNumOrdsPredicate == null){ - currentFilteredOrderList = currentOrderList; - } else - if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdineAccettazioneInevasoDTO::getCodJcom).distinct().withoutNulls().toList(); - } - - - private void refreshList() { - - if (currentNumOrdsPredicate == null && currentCodJcomsPredicate == null) { - currentFilteredOrderList = currentOrderList; - } else { - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentCodJcomsPredicate == null || (currentCodJcomsPredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - } - - public class DialogOrdineProduzioneFiltroAvanzatoViewModel { - - public BindableString numOrds = new BindableString(); - public BindableString codJcoms = new BindableString(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzatoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzatoView.java new file mode 100644 index 00000000..092e2982 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzatoView.java @@ -0,0 +1,164 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.LayoutInflater; +import android.view.WindowManager; +import android.widget.ArrayAdapter; +import android.widget.MultiAutoCompleteTextView; + +import androidx.appcompat.app.AlertDialog; +import androidx.databinding.DataBindingUtil; + +import com.annimon.stream.Stream; + +import java.util.List; +import java.util.Objects; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.di.BindableString; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogOrdineProduzioneFiltroAvanzatoBinding; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; + +public class DialogOrdineProduzioneFiltroAvanzatoView { + + + private AlertDialog currentAlert; + private Context currentContext; + + private RunnableArgs currentOnFilterDone; + + public BindableString numOrds = new BindableString(); + public BindableString codJcoms = new BindableString(); + + private ArrayAdapter arrayAdapterNumOrds; + private ArrayAdapter arrayAdapterCodJcoms; + + private DialogOrdineProduzioneFiltroAvanzatoViewModel mViewModel; + + + + public static AlertDialog make(final Context context, + final List ordersList, + DialogOrdineProduzioneFiltroAvanzatoViewModel baseViewModel, + RunnableArgs onDismiss) { + return new DialogOrdineProduzioneFiltroAvanzatoView(context, ordersList, baseViewModel, onDismiss).currentAlert; + } + + + private DialogOrdineProduzioneFiltroAvanzatoView(final Context context, final List ordersList, DialogOrdineProduzioneFiltroAvanzatoViewModel baseViewModel, RunnableArgs onDismiss) { + currentContext = context; + currentOnFilterDone = onDismiss; + + mViewModel = baseViewModel != null ? baseViewModel : new DialogOrdineProduzioneFiltroAvanzatoViewModel(); + mViewModel.init(ordersList); + + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + DialogOrdineProduzioneFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ordine_produzione_filtro_avanzato, null, false); + + final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context) + .setView(binding.getRoot()); + + binding.setView(this); + binding.setViewmodel(mViewModel); + initViewModel(mViewModel); + initView(binding); + + currentAlert = alertDialog.create(); + currentAlert.setCanceledOnTouchOutside(false); + + currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + binding.positiveBtn.setOnClickListener(view -> { + currentAlert.dismiss(); + }); + + binding.neutralBtn.setOnClickListener(view -> { + resetAll(); + }); + + + currentAlert.setOnDismissListener(dialogInterface -> { + if(currentOnFilterDone != null) currentOnFilterDone.run(mViewModel); + }); + } + + private void initView(DialogOrdineProduzioneFiltroAvanzatoBinding bindings) { + + arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(false)); + bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds); + bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); + + arrayAdapterCodJcoms = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterCodJcoms.addAll(getAvailableCodJcoms(false)); + bindings.filledExposedDropdownCodJcoms.setAdapter(arrayAdapterCodJcoms); + bindings.filledExposedDropdownCodJcoms.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); + + + refreshAll(); + } + + + private void initViewModel(DialogOrdineProduzioneFiltroAvanzatoViewModel viewModel) { + viewModel.applyAllTests(); + + BindableString.registerListener(numOrds, value -> { + viewModel.setNumOrdFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodJcoms, getAvailableCodJcoms(true)); + }); + + BindableString.registerListener(codJcoms, value -> { + viewModel.setCodJcomFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + }); + + } + + + private void refreshArrayAdapter(ArrayAdapter arrayAdapter, List inputList) { + arrayAdapter.clear(); + arrayAdapter.addAll(inputList); + arrayAdapter.notifyDataSetChanged(); + } + + + private List getAvailableNumOrds(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(mViewModel.getMutableFilteredOrderList().getValue())) + .map(x -> x.getNumero().toString()) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + + private List getAvailableCodJcoms(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(mViewModel.getMutableFilteredOrderList().getValue())) + .map(OrdineAccettazioneInevasoDTO::getCodJcom) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + + public void refreshAll() { + numOrds.refresh(); + codJcoms.refresh(); + } + + + public void resetAll() { + numOrds.set(null); + codJcoms.set(null); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzatoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzatoViewModel.java new file mode 100644 index 00000000..900fc91d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzatoViewModel.java @@ -0,0 +1,76 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog; + +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; +import com.annimon.stream.function.Predicate; + +import java.util.List; + +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; + +public class DialogOrdineProduzioneFiltroAvanzatoViewModel { + + + private Predicate currentNumOrdsPredicate = null; + private Predicate currentCodJcomsPredicate = null; + + private List initialOrderList; + private final MutableLiveData> currentFilteredOrderList = new MutableLiveData<>(); + + public void init(List initialList) { + this.initialOrderList = initialList; + this.currentFilteredOrderList.setValue(this.initialOrderList); + } + + public MutableLiveData> getMutableFilteredOrderList() { + return this.currentFilteredOrderList; + } + + public void setNumOrdFilter(String numOrds) { + if(UtilityString.isNullOrEmpty(numOrds)) currentNumOrdsPredicate = null; + else { + String[] numOrdsSplitted = numOrds.split("[,\\ ]"); + + try{ + List numOrdsInteger = Stream.of(numOrdsSplitted) + .filter(x -> !UtilityString.isNullOrEmpty(x)) + .map(Integer::parseInt).toList(); + + currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumero()); + } catch (NumberFormatException ex) { + currentNumOrdsPredicate = null; + } + } + } + + public void setCodJcomFilter(String codJcom) { + if(UtilityString.isNullOrEmpty(codJcom)) currentCodJcomsPredicate = null; + else { + currentCodJcomsPredicate = o -> o.getCodJcom().toLowerCase().equalsIgnoreCase(codJcom); + } + } + + public void applyAllTests() { + + List returnList = null; + + if (currentNumOrdsPredicate == null && + currentCodJcomsPredicate == null + ) { + returnList = this.initialOrderList; + } else { + Stream tmpStream = Stream.of(this.initialOrderList) + .filter(x -> + (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && + (currentCodJcomsPredicate == null || (currentCodJcomsPredicate.test(x))) + ); + + returnList = tmpStream.toList(); + } + + this.currentFilteredOrderList.setValue(returnList); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java new file mode 100644 index 00000000..105ea499 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java @@ -0,0 +1,64 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.rest; + +import com.annimon.stream.Stream; + +import java.util.List; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.gest.accettazione.dto.GetPickingListAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; +import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +@Singleton +public class ProdOrdineProduzioneRESTConsumer extends _BaseRESTConsumer { + + public void getOrdiniInevasi(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { + OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + service.listOrdiniInevasi(codMdep, "P").enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getOrdiniInevasi", onComplete, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + + public void retrievePickingListNew(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { + List getPickingListDTOs = Stream.of(orders) + .map(x -> new GetPickingListAccettazioneDTO() + .setData(x.getData()) + .setGestione(x.getGestione()) + .setNumero(x.getNumero())) + .toList(); + + OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + service.getArticoliFromOrdiniAccettazione(getPickingListDTOs).enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "retrieveListaArticoliFromOrdiniProduzione", onComplete, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + UtilityLogger.errorMe(new Exception(t)); + onFailed.run(new Exception(t)); + } + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/MainListProdOrdineProduzioneElencoClienteListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/MainListProdOrdineProduzioneElencoClienteListModel.java new file mode 100644 index 00000000..8fb00900 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/MainListProdOrdineProduzioneElencoClienteListModel.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui; + +public class MainListProdOrdineProduzioneElencoClienteListModel { + private String primaryText; + private String rightText; + + + public String getPrimaryText() { + return primaryText; + } + + public MainListProdOrdineProduzioneElencoClienteListModel setPrimaryText(String primaryText) { + this.primaryText = primaryText; + return this; + } + + public String getRightText() { + return rightText; + } + + public MainListProdOrdineProduzioneElencoClienteListModel setRightText(String rightText) { + this.rightText = rightText; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/MainListProdOrdineProduzioneElencoListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/MainListProdOrdineProduzioneElencoListModel.java new file mode 100644 index 00000000..a9756427 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/MainListProdOrdineProduzioneElencoListModel.java @@ -0,0 +1,70 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui; + +import java.util.List; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; + +public class MainListProdOrdineProduzioneElencoListModel { + + private String groupTitle; + + private String description; + + private boolean hidden; + private BindableBoolean selected = new BindableBoolean(); + + + private OrdineAccettazioneInevasoDTO originalModel; + private List clientiListModel; + + + public String getGroupTitle() { + return groupTitle; + } + + public MainListProdOrdineProduzioneElencoListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public String getDescription() { + return description; + } + + public MainListProdOrdineProduzioneElencoListModel setDescription(String description) { + this.description = description; + return this; + } + + public boolean isHidden() { + return hidden; + } + + public MainListProdOrdineProduzioneElencoListModel setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } + + public BindableBoolean getSelectedObservable() { + return selected; + } + + public OrdineAccettazioneInevasoDTO getOriginalModel() { + return originalModel; + } + + public MainListProdOrdineProduzioneElencoListModel setOriginalModel(OrdineAccettazioneInevasoDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + public List getClientiListModel() { + return clientiListModel; + } + + public MainListProdOrdineProduzioneElencoListModel setClientiListModel(List clientiListModel) { + this.clientiListModel = clientiListModel; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/OrdineProduzioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/OrdineProduzioneListAdapter.java new file mode 100644 index 00000000..47c0dfc5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ui/OrdineProduzioneListAdapter.java @@ -0,0 +1,153 @@ +package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneListGroupClientiBinding; +import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneListGroupModelBinding; +import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneListModelBinding; + +public class OrdineProduzioneListAdapter extends ExtendedSectionedRecyclerView { + + + private Context mContext; + + private RunnableArgs mOnGroupItemClicked; + private RunnableArgs mOnItemChecked; + + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + FragmentProdOrdineProduzioneListModelBinding binding; + + SubheaderHolder(FragmentProdOrdineProduzioneListModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + FragmentProdOrdineProduzioneListGroupModelBinding binding; + + SingleItemViewHolder(FragmentProdOrdineProduzioneListGroupModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + + + public OrdineProduzioneListAdapter(Context context, ObservableArrayList myDataset) { + super(myDataset); + mContext = context; + } + + public OrdineProduzioneListAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) { + this.mOnGroupItemClicked = onGroupItemClicked; + return this; + } + + public OrdineProduzioneListAdapter setOnItemChecked(RunnableArgs onItemChecked) { + this.mOnItemChecked = onItemChecked; + return this; + } + + + + @Override + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + FragmentProdOrdineProduzioneListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_model, parent, false); + return new SubheaderHolder(binding); + } + + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + FragmentProdOrdineProduzioneListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_group_model, parent, false); + return new SingleItemViewHolder(binding); + } + + + @Override + public void onBindSubheaderViewHolder(OrdineProduzioneListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { + subheaderHolder.binding.ordineProduzioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGroupTitle()); + + subheaderHolder.binding.getRoot().setOnClickListener(new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(mDataset.get(nextItemPosition).getGroupTitle()); + } + }); + } + + @Override + public void onBindItemViewHolder(OrdineProduzioneListAdapter.SingleItemViewHolder holder, int itemPosition) { + final MainListProdOrdineProduzioneElencoListModel ordine = mDataset.get(itemPosition); + + ordine.getSelectedObservable().resetOnPropertyChangedCallback(); + + holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd.removeAllViews(); + holder.binding.ordineProduzioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(ordine.getDescription())); + + + for (MainListProdOrdineProduzioneElencoClienteListModel cliente : ordine.getClientiListModel()) { + FragmentProdOrdineProduzioneListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_group_clienti, holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd, false); + + binding.ordineProduzioneMainListGroupClientiComm.setText(cliente.getPrimaryText()); + + if (!UtilityString.isNullOrEmpty(cliente.getRightText())) { + binding.ordineProduzioneMainListGroupClientiDatacons.setText(cliente.getRightText()); + } else { + binding.ordineProduzioneMainListGroupClientiDatacons.setText(""); + } + + holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot()); + } + + holder.binding.setSelected(ordine.getSelectedObservable()); + holder.binding.executePendingBindings(); + holder.binding.ordineProduzioneMainListGroupItemContainerCheckBox.jumpDrawablesToCurrentState(); + + ordine.getSelectedObservable().addOnPropertyChangedCallback(() -> { + if(this.mOnItemChecked != null) this.mOnItemChecked.run(ordine); + }); + + holder.binding.getRoot().setOnClickListener(v -> { + ordine.getSelectedObservable().set(!ordine.getSelectedObservable().get()); + }); + } + + + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + if (getItemSize() == 1) return true; + else if (getItemSize() > 1) { + MainListProdOrdineProduzioneElencoListModel compare1 = this.mDataset.get(position); + MainListProdOrdineProduzioneElencoListModel compare2 = this.mDataset.get(position + 1); + + if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) { + return false; + } + } + + return true; + } + + @Override + public int getItemSize() { + return mDataset.size(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java index e31c5cd0..b697cdb2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java @@ -20,7 +20,6 @@ import javax.inject.Inject; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.BaseFragment; -import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; @@ -158,7 +157,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi MtbColr.Causale.VERSAMENTO, DialogRowInfoProdFabbisognoLineeProdView.class); - ((IPoppableActivity) getActivity()).pop(); + popMe(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeComponent.java new file mode 100644 index 00000000..489be0f5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.prod_recupero_materiale; + +import dagger.Subcomponent; + +@Subcomponent +public interface ProdRecuperoMaterialeComponent { + + @Subcomponent.Factory + interface Factory { + ProdRecuperoMaterialeComponent create(); + } + + void inject(ProdRecuperoMaterialeFragment prodRecuperoMaterialeFragment); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index 3fa9b3d9..44d33d4b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -3,33 +3,61 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale; import android.content.Context; import android.os.Bundle; +import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; -import java.util.ArrayList; +import com.annimon.stream.Stream; + +import java.math.BigDecimal; 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.interfaces.IPoppableActivity; +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.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBinding; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel.ProdRecuperoMaterialeViewModel; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.ui.HistoryULsListAdapter; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.ui.HistoryULsListModel; +import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; +import it.integry.integrywmsnative.view.dialogs.DialogCommon; +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.DialogScanOrCreateLUView; /** * A simple {@link Fragment} subclass. */ -public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFragment { - private FragmentProdRecuperoMaterialeBinding mBinding; - private ProdRecuperoMaterialeViewModel mViewmodel; - private ProdRecuperoMaterialeHelper mHelper; +public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ProdRecuperoMaterialeViewModel.Listener { - private final List mOnPreDestroyList = new ArrayList<>(); + @Inject + ProdRecuperoMaterialeViewModel mViewModel; + + private FragmentProdRecuperoMaterialeBinding mBinding; + + private int barcodeScannerIstanceID = -1; + + private final ObservableArrayList mHistoryULMutableData = new ObservableArrayList<>(); public ProdRecuperoMaterialeFragment() { // Required empty public constructor @@ -37,33 +65,36 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr public static ProdRecuperoMaterialeFragment newInstance() { ProdRecuperoMaterialeFragment fragment = new ProdRecuperoMaterialeFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); return fragment; } - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mViewmodel = new ProdRecuperoMaterialeViewModel(); - } - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_recupero_materiale, container, false); - init(); + MainApplication.appComponent + .prodRecuperoMaterialeComponent() + .create() + .inject(this); + + mViewModel.setListener(this); + + mBinding.setLifecycleOwner(getViewLifecycleOwner()); + mBinding.setView(this); + + this.initBarcodeReader(); + this.initRecyclerView(); + return mBinding.getRoot(); } - private void init() { - mHelper = new ProdRecuperoMaterialeHelper(getActivity()); - mViewmodel.init(getActivity(), mBinding, mHelper, () -> { - ((IPoppableActivity) getActivity()).pop(); - }); + + @Override + public void onStart() { + super.onStart(); + + mViewModel.init(); } @@ -72,16 +103,150 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr titleText.setText(context.getText(R.string.prod_recupero_materiale_title_fragment).toString()); } - @Override - public void onDestroy() { - for (Runnable onPreDestroy : mOnPreDestroyList) { - onPreDestroy.run(); + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(this::onError)); + + BarcodeManager.enable(); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.openProgress(); + + this.mViewModel.processBarcodeDTO(data); + }; + + private void initRecyclerView() { + this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); + + mBinding.prodRecuperoMaterialeMainList.setLayoutManager(new LinearLayoutManager(getActivity())); + + HistoryULsListAdapter adapter = new HistoryULsListAdapter(getActivity(), mHistoryULMutableData) + .setOnItemClicked(data -> this.mViewModel.dispatchItem(data.getOriginalModel(), null)); + + adapter.setEmptyView(mBinding.emptyView); + + mBinding.prodRecuperoMaterialeMainList.setAdapter(adapter); + + mToolbar.setRecyclerView(mBinding.prodRecuperoMaterialeMainList); + } + + private void refreshList(List filteredList) { + + List tmpList = null; + + if (filteredList != null) { + tmpList = filteredList; + } else { + tmpList = mViewModel.getOrderList().getValue(); } - super.onDestroy(); + + this.mHistoryULMutableData.clear(); + this.mHistoryULMutableData.addAll(convertDataModelToListModel(tmpList)); + } + + private List convertDataModelToListModel(List dataList) { + + return Stream.of(dataList) + .sortBy(HistoryVersamentoProdULDTO::getCodJfas) + .map(x -> { + HistoryULsListModel listModel = new HistoryULsListModel(); + + listModel + .setOriginalModel(x) + .setGroupTitle(UtilityString.isNullOrEmpty(x.getDescrizioneFase()) ? x.getCodJfas() : x.getDescrizioneFase()) + + .setCodMart(x.getCodMart()) + .setDescrizione(x.getDescrizioneArt()) + .setNumCollo(x.getNumColloRif()) + .setPartitaMag(x.getPartitaMag()) + .setQtaVersata(x.getQtaCol()) + .setUntMisVersata(x.getUntMis()); + + + return listModel; + }) + .toList(); } @Override - public void addOnPreDestroy(Runnable onPreDestroy) { - this.mOnPreDestroyList.add(onPreDestroy); + public void onItemDispatched(HistoryVersamentoProdULDTO item, + MtbColt sourceMtbColt, + MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + String partitaMag, + boolean canOverflowOrderQuantity, + boolean canLUBeClosed) { + + DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() + .setMtbAart(mtbAart) + .setInitialNumCnf(initialNumCnf) + .setInitialQtaCnf(initialQtaCnf) + .setInitialQtaTot(initialQtaTot) + + .setTotalQtaAvailable(totalQtaAvailable) + .setTotalNumCnfAvailable(totalNumCnfAvailable) + .setQtaCnfAvailable(qtaCnfAvailable) + .setPartitaMag(partitaMag) + .setCanOverflowOrderQuantity(canOverflowOrderQuantity) + .setCanLUBeClosed(canLUBeClosed); + + DialogInputQuantityV2View + .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() + .setNumCnf(resultDTO.getNumCnf()) + .setQtaCnf(resultDTO.getQtaCnf()) + .setQtaTot(resultDTO.getQtaTot()) + .setPartitaMag(resultDTO.getPartitaMag()) + .setDataScad(resultDTO.getDataScad()); + + this.mViewModel.onItemDispatched(item, pickedQuantityDTO, sourceMtbColt); + }, this::onLoadingEnded) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } + + @Override + public void onLURequest(boolean canLUBeCreated, boolean shouldCheckIfDocExist, RunnableArgss onComplete) { + DialogScanOrCreateLUView.newInstance(canLUBeCreated, shouldCheckIfDocExist, onComplete) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } + + + @Override + public void onLUPrintError(Exception ex, Runnable onComplete) { + this.closeProgress(); + DialogSimpleMessageView.makeErrorDialog( + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } + + @Override + public void onNoLUFound(Runnable onComplete) { + String errorMessage = "Nessuna stampante configurata"; + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(errorMessage), null, onComplete) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } + + + @Override + public void onDataSaved() { + this.onLoadingEnded(); + this.requireActivity().runOnUiThread(() -> { + DialogCommon.showDataSaved(requireActivity(), this::popMe); + }); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeModule.java new file mode 100644 index 00000000..217ffe62 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeModule.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.gest.prod_recupero_materiale; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.rest.ProdRecuperMaterialeRESTConsumer; + +@Module(subcomponents = ProdRecuperoMaterialeComponent.class) +public class ProdRecuperoMaterialeModule { + + @Provides + ProdRecuperMaterialeRESTConsumer providesProdRecuperMaterialeRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { + return new ProdRecuperMaterialeRESTConsumer(systemRESTConsumer, articoloRESTConsumer); + } + + @Provides + ProdRecuperoMaterialeViewModel providesProdRecuperoMaterialeViewModel(ProdRecuperMaterialeRESTConsumer prodRecuperMaterialeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer) { + return new ProdRecuperoMaterialeViewModel(prodRecuperMaterialeRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer); + } + +} 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/ProdRecuperoMaterialeViewModel.java similarity index 51% rename from app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java index 1dcd67fe..344ede39 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/ProdRecuperoMaterialeViewModel.java @@ -1,15 +1,9 @@ -package it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel; - -import android.app.Dialog; -import android.text.SpannableString; +package it.integry.integrywmsnative.gest.prod_recupero_materiale; import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableField; -import androidx.fragment.app.FragmentActivity; -import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; -import com.tfb.fbtoast.FBToast; import java.math.BigDecimal; import java.math.RoundingMode; @@ -17,13 +11,15 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import javax.inject.Inject; + import it.integry.barcode_base_android_library.model.BarcodeScanDTO; -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.exception.NoLUFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; 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.report.ReportManager; @@ -33,114 +29,72 @@ import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBinding; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsListAdapter; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.rest.ProdRecuperMaterialeRESTConsumer; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; -import it.integry.integrywmsnative.view.dialogs.DialogCommon; -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.DialogScanOrCreateLUView; public class ProdRecuperoMaterialeViewModel { - private FragmentActivity mContext; + private final ProdRecuperMaterialeRESTConsumer mProdRecuperMaterialeRESTConsumer; + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + private final PrinterRESTConsumer mPrinterRESTConsumer; - private FragmentProdRecuperoMaterialeBinding mBinding; - private ProdRecuperoMaterialeHelper mHelper; - private Runnable mOnRecuperoCompleted; + private final MutableLiveData> mUlList = new MutableLiveData<>(); + + private Listener mListener; - private HistoryULsListAdapter mAdapter; - private List mDataset; - - public ObservableField mtbColt = new ObservableField<>(); - - private int barcodeScannerIstanceID = -1; - - public void init(FragmentActivity context, FragmentProdRecuperoMaterialeBinding binding, ProdRecuperoMaterialeHelper helper, Runnable onRecuperoCompleted) { - mContext = context; - mBinding = binding; - mHelper = helper; - mOnRecuperoCompleted = onRecuperoCompleted; - - initRecyclerView(); - refreshAdapter(); - - initBarcode(); + @Inject + public ProdRecuperoMaterialeViewModel(ProdRecuperMaterialeRESTConsumer prodRecuperMaterialeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer) { + this.mProdRecuperMaterialeRESTConsumer = prodRecuperMaterialeRESTConsumer; + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + this.mPrinterRESTConsumer = printerRESTConsumer; } + public void init() { + this.sendOnLoadingStarted(); + new Thread(() -> { - public void setMtbColt(MtbColt mtbColt) { - this.mtbColt.set(mtbColt); + mProdRecuperMaterialeRESTConsumer.loadLastULVersate(ulList -> { + this.mUlList.setValue(ulList); + + this.sendOnLoadingEnded(); + }, this::sendError); + + }).start(); } - - private void initBarcode() { - BarcodeManager.enable(); - barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) - .setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false))); - - } - - - private void initRecyclerView() { - mAdapter = new HistoryULsListAdapter(mContext, new ArrayList<>(), mBinding.emptyView); - mAdapter.setOnItemClicked(data -> this.dispatchItem(data, null, null)); - - mBinding.prodRecuperoMaterialeMainList.setLayoutManager(new LinearLayoutManager(mContext)); - mBinding.prodRecuperoMaterialeMainList.setAdapter(mAdapter); - } - - - private final RunnableArgs onScanSuccessful = data -> { - BarcodeManager.disable(); - - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - + public void processBarcodeDTO(BarcodeScanDTO data) { if (UtilityBarcode.isEtichettaAnonima(data) || UtilityBarcode.isEtichetta128(data)) { - this.executeEtichettaUL(data, progressDialog); + this.executeEtichettaUL(data); } + } - }; + private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO) { + this.sendOnLoadingStarted(); - private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + this.mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + this.sendOnLoadingEnded(); if (mtbColt != null) { - HistoryVersamentoProdULDTO historyVersamentoProdULRestDTO = this.getHistoryElementFromMtbColt(mtbColt); if (historyVersamentoProdULRestDTO != null) { - this.dispatchItem(historyVersamentoProdULRestDTO, mtbColt, progressDialog); + this.dispatchItem(historyVersamentoProdULRestDTO, mtbColt); } else { - DialogCommon.showNoULFound(mContext, () -> { - BarcodeManager.enable(); - progressDialog.dismiss(); - }); + this.sendError(new NoLUFoundException()); } } else { - DialogCommon.showNoULFound(mContext, () -> { - BarcodeManager.enable(); - progressDialog.dismiss(); - }); + this.sendError(new NoLUFoundException()); } - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - BarcodeManager.enable(); - }); + }, this::sendError); } private HistoryVersamentoProdULDTO getHistoryElementFromMtbColt(MtbColt mtbColt) { - List filteredItems = Stream.of(mDataset) + List filteredItems = Stream.of(this.mUlList.getValue()) .filter(x -> Objects.equals(x.getNumColloRif(), mtbColt.getNumCollo()) && x.getDataColloRif().equals(mtbColt.getDataColloS()) && x.getSerColloRif().equalsIgnoreCase(mtbColt.getSerCollo()) && @@ -155,79 +109,39 @@ public class ProdRecuperoMaterialeViewModel { } -// private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) { -// BigDecimal qtaDaEvadere = BigDecimal.ZERO; -// -// qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol()); -// -// -// DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() -// .setBatchLot(item.getPartitaMag()) -// .setQtaDaEvadere(null) -// .setQtaOrd(null) -// .setMtbAart(item.getMtbAart()) -// .setCanPartitaMagBeChanged(false) -// .setNumCnf(1) -// .setQtaCnf(item.getQtaCnf()) -// .setQtaTot(item.getQtaCnf()) -// .setMaxQta(qtaDaEvadere) -// .setQtaDisponibile(qtaDaEvadere); -// -// DialogInputQuantity.makeBase(mContext, dto, false, quantity -> { -// onItemDispatched(item, quantity.qtaTot.getBigDecimal(), sourceMtbColt, dialogProgress); -// }, () -> { -// if (dialogProgress != null) dialogProgress.dismiss(); -// }).show(); -// } - private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) { + public void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt) { BigDecimal qtaDaEvadere = BigDecimal.ZERO; BigDecimal numCnfDaEvadere = BigDecimal.ZERO; qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol()); - if(!UtilityBigDecimal.equalsTo(qtaDaEvadere, BigDecimal.ZERO)) { + if (!UtilityBigDecimal.equalsTo(qtaDaEvadere, BigDecimal.ZERO)) { numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf()); } - DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() - .setMtbAart(item.getMtbAart()) - .setInitialNumCnf(BigDecimal.ONE) - .setInitialQtaCnf(item.getQtaCnf()) - .setInitialQtaTot(item.getQtaCnf()) - - .setTotalQtaAvailable(qtaDaEvadere) - .setTotalNumCnfAvailable(numCnfDaEvadere) - .setQtaCnfAvailable(item.getQtaCnf()) - .setPartitaMag(item.getPartitaMag()) -// .setDataScad(item.getDa) - .setCanOverflowOrderQuantity(false) - .setCanLUBeClosed(false); - - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { - PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() - .setNumCnf(resultDTO.getNumCnf()) - .setQtaCnf(resultDTO.getQtaCnf()) - .setQtaTot(resultDTO.getQtaTot()) - .setPartitaMag(resultDTO.getPartitaMag()) - .setDataScad(resultDTO.getDataScad()); - - onItemDispatched(item, resultDTO.getQtaTot(), resultDTO.getNumCnf(), resultDTO.getQtaCnf(), sourceMtbColt, dialogProgress); - }, () -> { - if (dialogProgress != null) dialogProgress.dismiss(); - BarcodeManager.enable(); - }) - .show(mContext.getSupportFragmentManager(), "tag"); + this.sendOnItemDispatched(item, + sourceMtbColt, + item.getMtbAart(), + BigDecimal.ONE, + item.getQtaCnf(), + BigDecimal.ONE.multiply(item.getQtaCnf()), + qtaDaEvadere, + numCnfDaEvadere, + item.getQtaCnf(), + item.getPartitaMag(), + false, + false); } - private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal inputQtaTot, BigDecimal inputNumCnf, BigDecimal inputQtaCnf, MtbColt sourceMtbColt, Dialog progress) { + public void onItemDispatched(HistoryVersamentoProdULDTO item, PickedQuantityDTO pickedQuantityDTO, MtbColt sourceMtbColt) { - if (progress == null) { - progress = UtilityProgress.createDefaultProgressDialog(mContext); - } - Dialog finalProgress = progress; + this.sendOnLoadingStarted(); + + BigDecimal inputNumCnf = pickedQuantityDTO.getNumCnf(); + BigDecimal inputQtaTot = pickedQuantityDTO.getQtaTot(); + BigDecimal inputQtaCnf = pickedQuantityDTO.getQtaCnf(); final MtbColt mtbColtScarico = new MtbColt() .setDataCollo(item.getDataCollo()) @@ -245,7 +159,7 @@ public class ProdRecuperoMaterialeViewModel { BigDecimal qtaColToSave; BigDecimal numCnfToSave; - if (SettingsManager.iDB().isFlagForceAllToColli() || (item.getMtbAart() != null && !item.getMtbAart().isFlagQtaCnfFissaBoolean()) ){ + if (SettingsManager.iDB().isFlagForceAllToColli() || (item.getMtbAart() != null && !item.getMtbAart().isFlagQtaCnfFissaBoolean())) { numCnfToSave = UtilityBigDecimal.divideAndRoundToInteger(inputNumCnf.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR); qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, BigDecimal.ROUND_FLOOR); } else { @@ -283,23 +197,30 @@ public class ProdRecuperoMaterialeViewModel { boolean updateQtaCnfFirstRow = false; - if(UtilityBigDecimal.lowerThan(totalSumOfNumCnf, inputNumCnf)) { + if (UtilityBigDecimal.lowerThan(totalSumOfNumCnf, inputNumCnf)) { BigDecimal diff = inputNumCnf.subtract(totalSumOfNumCnf).multiply(BigDecimal.valueOf(-1)); mtbColtScarico.getMtbColr().get(0).setNumCnf(mtbColtScarico.getMtbColr().get(0).getNumCnf().add(diff)); updateQtaCnfFirstRow = true; } - if(UtilityBigDecimal.lowerThan(totalSumOfQtaCol, inputQtaTot)) { + if (UtilityBigDecimal.lowerThan(totalSumOfQtaCol, inputQtaTot)) { BigDecimal diff = inputQtaTot.subtract(totalSumOfQtaCol).multiply(BigDecimal.valueOf(-1)); mtbColtScarico.getMtbColr().get(0).setQtaCol(mtbColtScarico.getMtbColr().get(0).getQtaCol().add(diff)); updateQtaCnfFirstRow = true; } - if(updateQtaCnfFirstRow) { + if (updateQtaCnfFirstRow) { mtbColtScarico.getMtbColr().get(0).setQtaCnf( UtilityBigDecimal.divide(mtbColtScarico.getMtbColr().get(0).getQtaCol(), mtbColtScarico.getMtbColr().get(0).getNumCnf())); } + for(int i = 0; i < mtbColtScarico.getMtbColr().size(); i++) { + if(mtbColtScarico.getMtbColr().get(i).getQtaCol().equals(BigDecimal.ZERO)) { + mtbColtScarico.getMtbColr().remove(i); + i--; + } + } + mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); @@ -344,79 +265,53 @@ public class ProdRecuperoMaterialeViewModel { colliToSave.add(mtbColtScarico); boolean finalShouldPrint = shouldPrint; - ColliMagazzinoRESTConsumer.saveColliStatic(colliToSave, value -> { - - FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + this.mColliMagazzinoRESTConsumer.saveColli(colliToSave, value -> { +// FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); +// if (finalShouldPrint) { - printCollo(finalProgress, value.get(0), () -> { - this.refreshAdapter(); - mOnRecuperoCompleted.run(); - }); + printCollo(value.get(0), this::sendOnDataSaved); } else { - finalProgress.dismiss(); - this.refreshAdapter(); - mOnRecuperoCompleted.run(); + this.sendOnDataSaved(); } - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, finalProgress); - }); + }, this::sendError); } else { - finalProgress.dismiss(); + this.sendOnLoadingEnded(); } }; if (sourceMtbColt != null) saveRunnable.run(sourceMtbColt, false); - else DialogScanOrCreateLUView.newInstance(true, false, saveRunnable) - .show(mContext.getSupportFragmentManager(), "tag"); - + else this.sendOnLURequest(true, false, saveRunnable); } - private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) { + private void printCollo(MtbColt mtbColtToPrint, Runnable onComplete) { - PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + this.mPrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { if (printerList.size() > 0) { try { singlePrint(mtbColtToPrint, printerList.get(0), () -> { onComplete.run(); - progress.dismiss(); - }, ex -> { - progress.dismiss(); - String errorMessage = ex.getMessage(); - DialogSimpleMessageView.makeErrorDialog( - new SpannableString(errorMessage), - null, - null, - R.string.button_ignore_print, - onComplete) - .show(mContext.getSupportFragmentManager(), "tag"); - }); + }, ex -> this.sendOnLUPrintError(ex, onComplete)); } catch (Exception ex) { - UtilityExceptions.defaultException(mContext, ex, progress); + this.sendError(ex); onComplete.run(); } } else { - progress.dismiss(); - String errorMessage = "Nessuna stampante configurata"; - DialogSimpleMessageView - .makeWarningDialog(new SpannableString(errorMessage), null, onComplete) - .show(mContext.getSupportFragmentManager(), "tag"); + this.sendOnNoLUFound(onComplete); } - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progress); - }); + }, this::sendError); } private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) { String reportName = ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum()); - PrinterRESTConsumer.printColloStatic( + this.mPrinterRESTConsumer.printCollo( printerName, mtbColtToPrint, 1, @@ -425,20 +320,86 @@ public class ProdRecuperoMaterialeViewModel { } - private void refreshAdapter() { - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - mHelper.loadLastULVersate(historyULs -> { - this.mDataset = historyULs; - progressDialog.dismiss(); + public MutableLiveData> getOrderList() { + return mUlList; + } - this.mAdapter.updateItems(this.mDataset); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - BarcodeManager.enable(); - }); + public ProdRecuperoMaterialeViewModel 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 sendOnItemDispatched(HistoryVersamentoProdULDTO item, + MtbColt sourceMtbColt, + MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + String partitaMag, + boolean canOverflowOrderQuantity, + boolean canLUBeClosed) { + if (this.mListener != null) + mListener.onItemDispatched(item, sourceMtbColt, mtbAart, initialNumCnf, initialQtaCnf, initialQtaTot, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, canOverflowOrderQuantity, canLUBeClosed); + } + + private void sendOnLURequest(boolean canLUBeCreated, boolean shouldCheckIfDocExist, RunnableArgss onComplete) { + if(this.mListener != null) mListener.onLURequest(canLUBeCreated, shouldCheckIfDocExist, onComplete); + } + + private void sendOnLUPrintError(Exception ex, Runnable onComplete) { + if (this.mListener != null) mListener.onLUPrintError(ex, onComplete); + } + + private void sendOnNoLUFound(Runnable onComplete) { + if (this.mListener != null) mListener.onNoLUFound(onComplete); + } + + private void sendOnDataSaved() { + if (this.mListener != null) mListener.onDataSaved(); } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + void onItemDispatched(HistoryVersamentoProdULDTO item, + MtbColt sourceMtbColt, + MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + String partitaMag, + boolean canOverflowOrderQuantity, + boolean canLUBeClosed); + + void onLURequest(boolean canLUBeCreated, boolean shouldCheckIfDocExist, RunnableArgss onComplete); + + void onLUPrintError(Exception ex, Runnable onComplete); + + void onNoLUFound(Runnable onComplete); + + void onDataSaved(); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java similarity index 62% rename from app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java index 428a96e9..9d707a58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java @@ -1,6 +1,4 @@ -package it.integry.integrywmsnative.gest.prod_recupero_materiale.core; - -import android.content.Context; +package it.integry.integrywmsnative.gest.prod_recupero_materiale.rest; import com.annimon.stream.Stream; import com.google.gson.reflect.TypeToken; @@ -11,21 +9,25 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; -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.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULRestDTO; -public class ProdRecuperoMaterialeHelper { +@Singleton +public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { + private final SystemRESTConsumer mSystemRESTConsumer; + private final ArticoloRESTConsumer mArticoloRESTConsumer; - private Context mContext; - - public ProdRecuperoMaterialeHelper(Context context) { - this.mContext = context; + public ProdRecuperMaterialeRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { + this.mSystemRESTConsumer = systemRESTConsumer; + this.mArticoloRESTConsumer = articoloRESTConsumer; } @@ -176,125 +178,117 @@ public class ProdRecuperoMaterialeHelper { " max_ul.max_datetime_row = ul_list.datetime_row"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List ulList) { + this.mSystemRESTConsumer.>processSql(sql, typeOfObjectsList, ulList -> { - if(ulList == null) { - onComplete.run(null); - return; - } + if (ulList == null) { + onComplete.run(null); + return; + } - List newUlList = new ArrayList<>(); + List newUlList = new ArrayList<>(); - Stream.of(ulList) - .distinctBy(x -> { - HashMap hashMap = new HashMap<>(); - hashMap.put("gestione", x.getGestione()); - hashMap.put("data_collo", x.getDataCollo()); - hashMap.put("ser_collo", x.getSerCollo()); - hashMap.put("num_collo", x.getNumCollo()); - hashMap.put("cod_mart", x.getCodMart()); - hashMap.put("gestione_rif", x.getGestioneRif()); - hashMap.put("data_collo_rif", x.getDataColloRif()); - hashMap.put("ser_collo_rif", x.getSerColloRif()); - hashMap.put("num_collo_rif", x.getNumColloRif()); + Stream.of(ulList) + .distinctBy(x -> { + HashMap hashMap = new HashMap<>(); + hashMap.put("gestione", x.getGestione()); + hashMap.put("data_collo", x.getDataCollo()); + hashMap.put("ser_collo", x.getSerCollo()); + hashMap.put("num_collo", x.getNumCollo()); + hashMap.put("cod_mart", x.getCodMart()); + hashMap.put("gestione_rif", x.getGestioneRif()); + hashMap.put("data_collo_rif", x.getDataColloRif()); + hashMap.put("ser_collo_rif", x.getSerColloRif()); + hashMap.put("num_collo_rif", x.getNumColloRif()); - return hashMap; - }) - .forEach(restDTO -> { + return hashMap; + }) + .forEach(restDTO -> { - List ordineList = Stream.of(ulList) - .filter(x -> x.getNumCollo().equals(restDTO.getNumCollo()) && - x.getDataCollo().equals(restDTO.getDataCollo()) && - x.getSerCollo().equals(restDTO.getSerCollo()) && - x.getGestione().equals(restDTO.getGestione())) - .map(x -> new HistoryVersamentoProdULDTO.OrdineDto() - .setData(x.getDataOrdD()) - .setNumero(x.getNumOrd()) - .setGestione(x.getGestioneOrd()) - .setRigaOrd(x.getRigaOrd()) - .setQtaCol(x.getQtaCol()) - .setNumCnf(x.getNumCnf()) - .setPercentageHr(x.getPercentageHr())) - .toList(); + List ordineList = Stream.of(ulList) + .filter(x -> x.getNumCollo().equals(restDTO.getNumCollo()) && + x.getDataCollo().equals(restDTO.getDataCollo()) && + x.getSerCollo().equals(restDTO.getSerCollo()) && + x.getGestione().equals(restDTO.getGestione())) + .map(x -> new HistoryVersamentoProdULDTO.OrdineDto() + .setData(x.getDataOrdD()) + .setNumero(x.getNumOrd()) + .setGestione(x.getGestioneOrd()) + .setRigaOrd(x.getRigaOrd()) + .setQtaCol(x.getQtaCol()) + .setNumCnf(x.getNumCnf()) + .setPercentageHr(x.getPercentageHr())) + .toList(); - BigDecimal qtaColTot = BigDecimal.ZERO; - BigDecimal numCnfColTot = BigDecimal.ZERO; + BigDecimal qtaColTot = BigDecimal.ZERO; + BigDecimal numCnfColTot = BigDecimal.ZERO; - for (HistoryVersamentoProdULDTO.OrdineDto ordine : - ordineList) { - qtaColTot = qtaColTot.add(ordine.getQtaCol()); - numCnfColTot = numCnfColTot.add(ordine.getNumCnf()); - } - - newUlList.add(new HistoryVersamentoProdULDTO() - .setGestione(restDTO.getGestione()) - .setDataCollo(restDTO.getDataCollo()) - .setSerCollo(restDTO.getSerCollo()) - .setNumCollo(restDTO.getNumCollo()) - .setSegno(restDTO.getSegno()) - .setCodMart(restDTO.getCodMart()) - .setCodCol(restDTO.getCodCol()) - .setCodTagl(restDTO.getCodTagl()) - .setCodJfas(restDTO.getCodJfas()) - .setDescrizioneFase(restDTO.getDescrizioneFase()) - .setQtaCol(qtaColTot) - .setNumCnf(numCnfColTot) - .setPartitaMag(restDTO.getPartitaMag()) - .setCodJcom(restDTO.getCodJcom()) - .setDatetimeRow(restDTO.getDatetimeRow()) - .setUntMis(restDTO.getUntMis()) - .setGestioneRif(restDTO.getGestioneRif()) - .setDataColloRif(restDTO.getDataColloRif()) - .setSerColloRif(restDTO.getSerColloRif()) - .setNumColloRif(restDTO.getNumColloRif()) - .setOrdini(ordineList)); - - }); - - - - if(newUlList.size() > 0){ - List codMarts = Stream.of(newUlList) - .map(HistoryVersamentoProdULDTO::getCodMart) - .withoutNulls() - .distinct() - .toList(); - - ArticoloRESTConsumer.getByCodMartsStatic(codMarts, arts -> { - - if(arts != null && arts.size() > 0) { - for (HistoryVersamentoProdULDTO value : newUlList) { - - MtbAart foundMtbAart = null; - - List mtbAartStream = Stream.of(arts) - .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); - - if(mtbAartStream != null && mtbAartStream.size() > 0){ - foundMtbAart = mtbAartStream.get(0); - } - - value.setMtbAart(foundMtbAart); - } + for (HistoryVersamentoProdULDTO.OrdineDto ordine : + ordineList) { + qtaColTot = qtaColTot.add(ordine.getQtaCol()); + numCnfColTot = numCnfColTot.add(ordine.getNumCnf()); } - onComplete.run(newUlList); + newUlList.add(new HistoryVersamentoProdULDTO() + .setGestione(restDTO.getGestione()) + .setDataCollo(restDTO.getDataCollo()) + .setSerCollo(restDTO.getSerCollo()) + .setNumCollo(restDTO.getNumCollo()) + .setSegno(restDTO.getSegno()) + .setCodMart(restDTO.getCodMart()) + .setCodCol(restDTO.getCodCol()) + .setCodTagl(restDTO.getCodTagl()) + .setCodJfas(restDTO.getCodJfas()) + .setDescrizioneFase(restDTO.getDescrizioneFase()) + .setQtaCol(qtaColTot) + .setNumCnf(numCnfColTot) + .setPartitaMag(restDTO.getPartitaMag()) + .setCodJcom(restDTO.getCodJcom()) + .setDatetimeRow(restDTO.getDatetimeRow()) + .setUntMis(restDTO.getUntMis()) + .setGestioneRif(restDTO.getGestioneRif()) + .setDataColloRif(restDTO.getDataColloRif()) + .setSerColloRif(restDTO.getSerColloRif()) + .setNumColloRif(restDTO.getNumColloRif()) + .setOrdini(ordineList)); - }, onFailed); + }); + + + if (newUlList.size() > 0) { + List codMarts = Stream.of(newUlList) + .map(HistoryVersamentoProdULDTO::getCodMart) + .withoutNulls() + .distinct() + .toList(); + + this.mArticoloRESTConsumer.getByCodMarts(codMarts, arts -> { + + if (arts != null && arts.size() > 0) { + for (HistoryVersamentoProdULDTO value : newUlList) { + + MtbAart foundMtbAart = null; + + List mtbAartStream = Stream.of(arts) + .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); + + if (mtbAartStream != null && mtbAartStream.size() > 0) { + foundMtbAart = mtbAartStream.get(0); + } + + value.setMtbAart(foundMtbAart); + } + } - } else { onComplete.run(newUlList); - } + }, onFailed); + + } else { + onComplete.run(newUlList); } - @Override - public void onFailed(Exception ex) { - onFailed.run(ex); - } - }); + }, onFailed); } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java similarity index 57% rename from app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java index 254fb98a..5a36b45d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java @@ -1,38 +1,31 @@ -package it.integry.integrywmsnative.gest.prod_recupero_materiale.core; +package it.integry.integrywmsnative.gest.prod_recupero_materiale.ui; import android.content.Context; import android.view.LayoutInflater; -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.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.utility.UtilityString; import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListHeaderBinding; import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListItemBinding; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; -public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { +public class HistoryULsListAdapter extends ExtendedSectionedRecyclerView { private Context mContext; - private List mOriginalDataset; - private List mDataset; - private View mEmptyView; - - - private RunnableArgs mOnItemClicked; + private RunnableArgs mOnItemClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -57,23 +50,14 @@ public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter myDataset, View emptyView) { + public HistoryULsListAdapter(Context context, ObservableArrayList myDataset) { + super(myDataset); mContext = context; - mOriginalDataset = myDataset; - mEmptyView = emptyView; - mDataset = orderItems(myDataset); } - public void setOnItemClicked(RunnableArgs onItemClicked) { + public HistoryULsListAdapter setOnItemClicked(RunnableArgs onItemClicked) { this.mOnItemClicked = onItemClicked; - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataChanged(); - - mEmptyView.setVisibility(mDataset.size() > 0 ? View.GONE : View.VISIBLE); + return this; } @@ -102,26 +86,21 @@ public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter { if(this.mOnItemClicked != null) this.mOnItemClicked.run(ul); @@ -133,19 +112,17 @@ public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter 1) { + HistoryULsListModel compare1 = this.mDataset.get(position); + HistoryULsListModel compare2 = this.mDataset.get(position + 1); + if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) { + return false; + } + } + + return true; } - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListModel.java new file mode 100644 index 00000000..4ec813e5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListModel.java @@ -0,0 +1,92 @@ +package it.integry.integrywmsnative.gest.prod_recupero_materiale.ui; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; + +public class HistoryULsListModel { + + private String groupTitle; + + private int numCollo; + private String codMart; + private String descrizione; + private String partitaMag; + + private BigDecimal qtaVersata; + private String untMisVersata; + + private HistoryVersamentoProdULDTO originalModel; + + public String getGroupTitle() { + return groupTitle; + } + + public HistoryULsListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public int getNumCollo() { + return numCollo; + } + + public HistoryULsListModel setNumCollo(int numCollo) { + this.numCollo = numCollo; + return this; + } + + public String getCodMart() { + return codMart; + } + + public HistoryULsListModel setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public HistoryULsListModel setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getPartitaMag() { + return partitaMag; + } + + public HistoryULsListModel setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public BigDecimal getQtaVersata() { + return qtaVersata; + } + + public HistoryULsListModel setQtaVersata(BigDecimal qtaVersata) { + this.qtaVersata = qtaVersata; + return this; + } + + public String getUntMisVersata() { + return untMisVersata; + } + + public HistoryULsListModel setUntMisVersata(String untMisVersata) { + this.untMisVersata = untMisVersata; + return this; + } + + public HistoryVersamentoProdULDTO getOriginalModel() { + return originalModel; + } + + public HistoryULsListModel setOriginalModel(HistoryVersamentoProdULDTO originalModel) { + this.originalModel = originalModel; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeComponent.java new file mode 100644 index 00000000..7586eec4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.prod_versamento_materiale; + +import dagger.Subcomponent; + +@Subcomponent +public interface ProdVersamentoMaterialeComponent { + + @Subcomponent.Factory + interface Factory { + ProdVersamentoMaterialeComponent create(); + } + + void inject(ProdVersamentoMaterialeFragment prodVersamentoMaterialeFragment); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java index 3f941bf7..d6b16d1f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java @@ -2,92 +2,339 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale; import android.content.Context; import android.os.Bundle; +import android.text.Html; +import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableField; +import androidx.recyclerview.widget.LinearLayoutManager; -import java.util.ArrayList; +import com.annimon.stream.Stream; + +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; -import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel.ProdVersamentoMaterialViewModel; +import javax.inject.Inject; -public class ProdVersamentoMaterialeFragment extends Fragment implements ITitledFragment { +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.di.BindableString; +import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +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.UtilityNumber; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.VersamentoMerceOrdineLavListModel; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.ui.ChooseOrdsLavFromListAdapter; +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.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; + +public class ProdVersamentoMaterialeFragment extends BaseFragment implements ProdVersamentoMaterialeViewModel.Listener, ITitledFragment { + + @Inject + ProdVersamentoMaterialeViewModel mViewModel; private FragmentProdVersamentoMaterialeBinding mBinding; - private ProdVersamentoMaterialViewModel mViewmodel; - private ProdVersamentoMaterialHelper mHelper; - private final List mOnPreDestroyList = new ArrayList<>(); + private final ObservableField mCurrentMtbColt = new ObservableField<>(); + private final ObservableArrayList mCurrentOrders = new ObservableArrayList<>(); + + public final BindableString codPrimaryArt = new BindableString(); + public final BindableString descrizionePrimaryArt = new BindableString(); + public final BindableString lottoPrimaryArt = new BindableString(); + public final BindableString quantityPrimaryArt = new BindableString(); + public final ObservableField fabVisible = new ObservableField<>(false); + public ProdVersamentoMaterialeFragment() { // Required empty public constructor } public static ProdVersamentoMaterialeFragment newInstance() { - ProdVersamentoMaterialeFragment fragment = new ProdVersamentoMaterialeFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mViewmodel = new ProdVersamentoMaterialViewModel(); + return new ProdVersamentoMaterialeFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment - mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_versamento_materiale, container, false); + MainApplication.appComponent + .prodVersamentoMaterialeComponent() + .create() + .inject(this); + + this.mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); + mBinding.setView(this); - init(); return mBinding.getRoot(); } @Override - public void onDestroy() { - super.onDestroy(); + public void onStart() { + super.onStart(); - for (Runnable onPreDestroy : mOnPreDestroyList) { - onPreDestroy.run(); + this.mViewModel.init(SettingsManager.iDB().isFlagVersamentoDirettoProduzione()); + + this.initView(); + this.openLU(); + } + + private void initView() { + this.mViewModel.getOpenedOrderLavMutableLiveList().observe(getViewLifecycleOwner(), this::refreshList); + this.mViewModel.getMtbColtMutableLiveData().observe(getViewLifecycleOwner(), this.mCurrentMtbColt::set); + + this.mViewModel.getMtbColrMutableLiveData().observe(getViewLifecycleOwner(), firstMtbColr -> { + codPrimaryArt.set(firstMtbColr.getCodMart()); + descrizionePrimaryArt.set(firstMtbColr.getDescrizione()); + lottoPrimaryArt.set(firstMtbColr.getPartitaMag() + ((firstMtbColr.getMtbPartitaMag() != null) ? " - " + firstMtbColr.getMtbPartitaMag().getDescrizione() : "")); + + if (!SettingsManager.iDB().isFlagForceAllToColli() && (firstMtbColr.getMtbAart() == null || firstMtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) { + String text = UtilityNumber.decimalToString(firstMtbColr.getQtaCol()); + + if (firstMtbColr.getMtbAart() != null) { + text += !UtilityString.isNullOrEmpty(firstMtbColr.getMtbAart().getUntMis()) ? " " + firstMtbColr.getMtbAart().getUntMis() : ""; + } + + quantityPrimaryArt.set(text); + } else { + quantityPrimaryArt.set(UtilityNumber.decimalToString(firstMtbColr.getNumCnf()) + " " + UtilityResources.getString(R.string.unt_mis_col)); + } + }); + + initRecyclerView(); + + } + + + private void initRecyclerView() { + mBinding.listaArts.setNestedScrollingEnabled(false); + mBinding.listaArts.setHasFixedSize(true); + mBinding.listaArts.setLayoutManager(new LinearLayoutManager(requireActivity())); + + ChooseOrdsLavFromListAdapter adapter = new ChooseOrdsLavFromListAdapter( + requireActivity(), + this.mCurrentOrders, + SettingsManager.iDB().isFlagForceAllToColli()) + .setOnItemClickListener(clickedItem -> { + recalcAllQuantities(); + }); + adapter.setEmptyView(mBinding.emptyView); + mBinding.listaArts.setAdapter(adapter); + } + + private void refreshList(List orders) { + this.mCurrentOrders.clear(); + this.mCurrentOrders.addAll(convertDataModelToListModel(orders)); + } + + private List convertDataModelToListModel(List dataList) { + + return Stream.of(dataList) + .withoutNulls() + .map(x -> { + VersamentoMerceOrdineLavListModel listModel = new VersamentoMerceOrdineLavListModel(); + + listModel.setOriginalOrdineLavorazione(x); + listModel.setOriginalMtbAart(this.mViewModel.getMtbColrMutableLiveData().getValue().getMtbAart()); + + listModel.setPreDescriptionText( + getString(R.string.ord_testata, String.valueOf(x.getNumOrd()), UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + listModel.setDescriptionText(x.getCodProd() + " " + x.getDescrizioneProd()); + + listModel.setSubDescriptionText(UtilityString.isNullOrEmpty(x.getPartitaMag()) ? "" : getString(R.string.batch_lot_text, x.getPartitaMag())); + + listModel.setSubDescription2Text(UtilityString.isNullOrEmpty(x.getNoteLav()) ? "" : getString(R.string.notes_text, x.getNoteLav())); + + return listModel; + }) + .toList(); + } + + private void openLU() { + DialogScanOrCreateLUView.newInstance(false, false, true, false, (mtbColt, created) -> { + if (mtbColt == null) { + popMe(); + } 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) { + DialogSimpleMessageView.makeWarningDialog( + new SpannableString(Html.fromHtml("E' stata scansionata una UL giĂ  vuota")), + null, this::openLU) + .show((requireActivity()).getSupportFragmentManager(), "tag"); + + } else { + mViewModel.setMtbColt(mtbColt); + choosePosition(); + } + + } else { + this.onError(new Exception("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")); + } + }).show(requireActivity().getSupportFragmentManager(), "tag"); + } + + private void choosePosition() { + DialogAskPositionOfLU.makeBase(requireActivity(), true, (status, mtbDepoPosizione) -> { + + if (status == DialogConsts.Results.ABORT) { + popMe(); + } else { + mViewModel.setPosizione(mtbDepoPosizione); + } + + }, this::onError).show(); + } + + + private void recalcAllQuantities() { + if(this.mViewModel.getMtbColrMutableLiveData().getValue() == null) return; + + BigDecimal residuoCol = this.mViewModel.getMtbColrMutableLiveData().getValue().getQtaCol(); + BigDecimal residuoCnf = this.mViewModel.getMtbColrMutableLiveData().getValue().getNumCnf(); + BigDecimal qtaCnf = this.mViewModel.getMtbColrMutableLiveData().getValue().getQtaCnf(); + + BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol); //Forced clone + BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf); //Forced clone + + List selectedOrders = Stream.of(this.mCurrentOrders) + .filter(x -> x.getSelected().get()) + .toList(); + + int totalHr = Stream.of(selectedOrders) + .mapToInt(x -> x.getOriginalOrdineLavorazione().getHrNum()) + .sum(); + + if(selectedOrders.size() > 0 && totalHr <= 0) { + this.onError(new Exception("Il totale delle risorse umane è pari a 0")); + return; + } + + fabVisible.set(selectedOrders.size() > 0); + + for(VersamentoMerceOrdineLavListModel versamentoMerceOrdineLavListModel : this.mCurrentOrders) { + versamentoMerceOrdineLavListModel.setNumCnfBigDecimal(BigDecimal.ZERO); + versamentoMerceOrdineLavListModel.setQtaBigDecimal(BigDecimal.ZERO); + + versamentoMerceOrdineLavListModel.getOriginalOrdineLavorazione().setQtaColVersamento(0f); + versamentoMerceOrdineLavListModel.getOriginalOrdineLavorazione().setNumCnfVersamento(0f); + } + + for(VersamentoMerceOrdineLavListModel versamentoMerceOrdineLavListModel : selectedOrders) { + int usagePerc = (versamentoMerceOrdineLavListModel.getOriginalOrdineLavorazione().getHrNum() * 100) / totalHr; + BigDecimal usedCol; + BigDecimal usedCnf; + + if (SettingsManager.iDB().isFlagForceAllToColli() || (versamentoMerceOrdineLavListModel.getOriginalMtbAart() != null && !versamentoMerceOrdineLavListModel.getOriginalMtbAart().isFlagQtaCnfFissaBoolean())){ + usedCnf = UtilityBigDecimal.divideAndRoundToInteger(residuoCnf.multiply(BigDecimal.valueOf(usagePerc)), BigDecimal.valueOf(100), RoundingMode.FLOOR); + + if(UtilityBigDecimal.equalsOrLowerThan(usedCnf, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCnf, BigDecimal.ZERO)) { + usedCnf = BigDecimal.ONE; + } + + usedCol = usedCnf.multiply(qtaCnf).setScale(0,BigDecimal.ROUND_FLOOR); + } else { + usedCol = UtilityBigDecimal.divideAndRoundToInteger(residuoCol.multiply(BigDecimal.valueOf(usagePerc)), BigDecimal.valueOf(100), RoundingMode.FLOOR); + + if (UtilityBigDecimal.equalsOrLowerThan(usedCol, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCol, BigDecimal.ZERO)){ + usedCol = BigDecimal.ONE; + } + + usedCnf = UtilityBigDecimal.divide(usedCol, qtaCnf, RoundingMode.FLOOR); + } + + offsetCol = offsetCol.subtract(usedCol); + offsetCnf = offsetCnf.subtract(usedCnf); + + versamentoMerceOrdineLavListModel.setNumCnfBigDecimal(usedCnf); + versamentoMerceOrdineLavListModel.setQtaBigDecimal(usedCol); + + versamentoMerceOrdineLavListModel.getOriginalOrdineLavorazione().setQtaColVersamento(usedCol.floatValue()); + versamentoMerceOrdineLavListModel.getOriginalOrdineLavorazione().setNumCnfVersamento(usedCnf.floatValue()); + } + + + if (selectedOrders.size() > 0) { + VersamentoMerceOrdineLavListModel majorOrder = + Stream.of(selectedOrders) + .max((o1, o2) -> Integer.compare(o1.getOriginalOrdineLavorazione().getHrNum(), o2.getOriginalOrdineLavorazione().getHrNum())).get(); + + if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){ + if ( SettingsManager.iDB().isFlagForceAllToColli() || (majorOrder.getOriginalMtbAart() != null && !majorOrder.getOriginalMtbAart().isFlagQtaCnfFissaBoolean())) { + majorOrder.setNumCnfBigDecimal(majorOrder.getNumCnfBigDecimal().add(offsetCnf)); + majorOrder.setQtaBigDecimal(majorOrder.getQtaBigDecimal().add(offsetCol)); + } else { + majorOrder.setQtaBigDecimal(majorOrder.getQtaBigDecimal().add(offsetCol)); + majorOrder.setNumCnfBigDecimal(UtilityBigDecimal.divide(majorOrder.getQtaBigDecimal(), qtaCnf)); + } + } } } + public void onConfirmClicked() { + List selectedOrders = Stream.of(this.mCurrentOrders) + .filter(x -> x.getSelected().get()) + .map(VersamentoMerceOrdineLavListModel::getOriginalOrdineLavorazione) + .toList(); - - private void init() { - mHelper = new ProdVersamentoMaterialHelper(getActivity()); - mViewmodel.init(getActivity(), mBinding, mHelper, () -> { - ((IPoppableActivity) getActivity()).pop(); - }); - - mViewmodel.openLU(); + if(selectedOrders.size() > 0) { + this.mViewModel.save(selectedOrders); + } else { + Toast.makeText(requireActivity(), "Nessun ordine selezionato!", Toast.LENGTH_SHORT).show(); + } } + @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.prod_versamento_materiale_title_fragment).toString()); } @Override - public void addOnPreDestroy(Runnable onPreDestroy) { - this.mOnPreDestroyList.add(onPreDestroy); + public void requestLUOpen() { + this.openLU(); } + + @Override + public void onWarning(String warningText, Runnable action) { + this.requireActivity().runOnUiThread(() -> { + this.closeProgress(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action) + .show(requireActivity().getSupportFragmentManager(), "tag"); + }); + } + + @Override + public void onDataSaved() { + this.onLoadingEnded(); + this.requireActivity().runOnUiThread(() -> { + DialogCommon.showDataSaved(requireActivity(), this::popMe); + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeModule.java new file mode 100644 index 00000000..9ed35af9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeModule.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.gest.prod_versamento_materiale; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; + +@Module(subcomponents = ProdVersamentoMaterialeComponent.class) +public class ProdVersamentoMaterialeModule { + + @Provides + ProdVersamentoMaterialeViewModel providesProdVersamentoMaterialeViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) { + return new ProdVersamentoMaterialeViewModel(colliMagazzinoRESTConsumer, mesRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java new file mode 100644 index 00000000..6d5c4742 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java @@ -0,0 +1,215 @@ +package it.integry.integrywmsnative.gest.prod_versamento_materiale; + +import androidx.lifecycle.MutableLiveData; + +import org.jetbrains.annotations.NotNull; + +import java.util.Iterator; +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +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.MtbDepoPosizione; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; + +public class ProdVersamentoMaterialeViewModel { + + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + private final MesRESTConsumer mMesRESTConsumer; + + private boolean mFlagVersamentoDirettoProduzione; + + private final MutableLiveData mtbColtMutableLiveData = new MutableLiveData<>(); + private final MutableLiveData mtbColrMutableLiveData = new MutableLiveData<>(); + private final MutableLiveData> openedOrderLavMutableLiveList = new MutableLiveData<>(); + private final MutableLiveData mtbDepoPosizioneMutableLiveData = new MutableLiveData<>(); + + private Listener mListener; + + @Inject + public ProdVersamentoMaterialeViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) { + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + this.mMesRESTConsumer = mesRESTConsumer; + } + + + public void init(boolean flagVersamentoDirettoProduzione) { + this.mFlagVersamentoDirettoProduzione = flagVersamentoDirettoProduzione; + } + + + public void setMtbColt(MtbColt mtbColt) { + this.mtbColtMutableLiveData.setValue(mtbColt); + } + + + public void setPosizione(MtbDepoPosizione mtbDepoPosizione) { + this.mtbDepoPosizioneMutableLiveData.postValue(mtbDepoPosizione); + MtbColt mtbColt = mtbColtMutableLiveData.getValue(); + + this.sendOnLoadingStarted(); + + if (mtbDepoPosizione != null && mtbDepoPosizione.isFlagLineaProduzione() && mtbColt != null) { + if (!mFlagVersamentoDirettoProduzione) { + createColloScarico(mtbDepoPosizione); + } else { + if (mtbColt.getMtbColr() == null || mtbColt.getMtbColr().size() <= 0) { + this.sendWarning("Il collo selezionato non presenta articoli versabili sulla linea.", this::sendRequestLUOpen); + return; + } else if (mtbColt.getMtbColr().size() > 1) { + this.sendWarning("Il collo selezionato contiene piĂ¹ articoli, solo il primo verrĂ  versato in questa sessione.
Per versare i colli restanti ripetere l'operazione di versamento.", + () -> { + cyclicGetOrdiniLavByCollo(mtbColt.getMtbColr().iterator(), mtbDepoPosizione); + }); + return; + + } + + mMesRESTConsumer.getOrdiniLavorazioneMateriale( + mtbDepoPosizione.getPosizione(), + getIdMaterialeFromCollo(mtbColt), + ordini -> { + setCurrentOrders(ordini, mtbColt.getMtbColr().get(0)); + this.sendOnLoadingEnded(); + }, + e -> this.sendWarning(e.getMessage(), this::sendRequestLUOpen)); + } + } else { + this.sendWarning("Si è verificato un errore. Riprovare", this::sendRequestLUOpen); + } + } + + private void createColloScarico(MtbDepoPosizione mtbDepoPosizione) { + + this.sendOnLoadingStarted(); + + this.mColliMagazzinoRESTConsumer.createColloScaricoDaCarico(mtbColtMutableLiveData.getValue(), mtbDepoPosizione, + generatedMtbColt -> { + this.sendOnLoadingEnded(); + this.sendOnDataSaved(); + }, this::sendError); + } + + + + private String getIdMaterialeFromCollo(MtbColt mtbColt) { + MtbAart articolo = mtbColt.getMtbColr().get(0).getMtbAart(); + return UtilityString.isNullOrEmpty(articolo.getIdArtEqui()) ? articolo.getCodMart() : articolo.getIdArtEqui(); + } + + private void setCurrentOrders(List ordini, MtbColr currentMtbColr) { + currentMtbColr.setQtaCnf(UtilityBigDecimal.divide(currentMtbColr.getQtaCol(), currentMtbColr.getNumCnf())); + this.mtbColrMutableLiveData.setValue(currentMtbColr); + this.openedOrderLavMutableLiveList.setValue(ordini); + } + + + private void cyclicGetOrdiniLavByCollo(@NotNull Iterator mtbColrIterator, MtbDepoPosizione mtbDepoPosizione) { + MtbColr currentMtbColr = mtbColrIterator.next(); + MtbAart currentMtbAart = currentMtbColr.getMtbAart(); + + this.mMesRESTConsumer.getOrdiniLavorazioneMateriale( + mtbDepoPosizione.getPosizione(), + UtilityString.isNullOrEmpty(currentMtbAart.getIdArtEqui()) ? currentMtbAart.getCodMart() : currentMtbAart.getIdArtEqui(), + ordini -> { + if (ordini == null || ordini.isEmpty()) { + if (mtbColrIterator.hasNext()) { + cyclicGetOrdiniLavByCollo(mtbColrIterator, mtbDepoPosizione); + } else { + setCurrentOrders(ordini, currentMtbColr); + } + } else { + setCurrentOrders(ordini, currentMtbColr); + } + } + , e -> this.sendWarning(e.getMessage(), this::sendRequestLUOpen)); + } + + + + public void save(List selectedOrders) { + this.sendOnLoadingStarted(); + + this.mColliMagazzinoRESTConsumer.createColliScaricoDaOrdineLavorazione( + this.mtbColtMutableLiveData.getValue(), + this.mtbColrMutableLiveData.getValue(), + this.mtbDepoPosizioneMutableLiveData.getValue(), + selectedOrders, + mtbColtSaved -> { + this.sendOnDataSaved(); + }, this::sendError); + } + + + + + + + + + + + + + public MutableLiveData getMtbColtMutableLiveData() { + return mtbColtMutableLiveData; + } + + public MutableLiveData getMtbColrMutableLiveData() { + return mtbColrMutableLiveData; + } + + public MutableLiveData> getOpenedOrderLavMutableLiveList() { + return openedOrderLavMutableLiveList; + } + + + public ProdVersamentoMaterialeViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + private void sendRequestLUOpen() { + if (this.mListener != null) mListener.requestLUOpen(); + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendWarning(String warningText, Runnable action) { + if (this.mListener != null) mListener.onWarning(warningText, action); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + private void sendOnDataSaved() { + if (this.mListener != null) mListener.onDataSaved(); + } + + public interface Listener extends ILoadingListener { + + void requestLUOpen(); + + void onError(Exception ex); + + void onWarning(String warningText, Runnable action); + + void onDataSaved(); + } + +} 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 deleted file mode 100644 index 6b277af5..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java +++ /dev/null @@ -1,226 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_versamento_materiale.core; - -import android.content.Context; -import android.text.Html; -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; - -import com.annimon.stream.Stream; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.ParseException; -import java.util.HashMap; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.exception.DateNotRecognizedException; -import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException; -import it.integry.integrywmsnative.core.model.CheckableOrdineLavoro; -import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.model.MtbColt; -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.UtilityNumber; -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.DialogSimpleMessageView; - -public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter { - - protected Context mContext; - - private MtbColt mMtbColt; - private MtbColr mMtbColr; - private List mDataset; - private HashMap mDatasetPositions = new HashMap<>(); - - - public ChooseOrdsLavFromListAdapter(Context context, List myDataset, MtbColt mtbColt, MtbColr mtbColr) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException { - mContext = context; - mMtbColt = mtbColt; - mMtbColr = mtbColr; - if (myDataset != null) { - mDataset = Stream.of(myDataset) - .withoutNulls() - .map(CheckableOrdineLavoro::new).toList(); - } - } - - private void onItemChecked(CheckableOrdineLavoro itemModel) { - if (itemModel.isChecked() && itemModel.getItem().getOrdineLav().getHrNum() <= 0){ - DialogSimpleMessageView.makeWarningDialog( - new SpannableString(Html.fromHtml("Nessuna risorsa umana registrata per l'ordine selezionato!
Per una corretta suddivisione delle quantitĂ  registra le risorse.")), - null, () -> { - itemModel.getChecked().set(false); - }) - .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); - return; - } - if (!itemModel.isChecked()) { - itemModel.setQtaCol(0); - itemModel.setNumCnf(0); - } - calculateMtbColtShare(); - notifyDataSetChanged(); - } - - - private void calculateMtbColtShare() { - MtbColr mtbColr = mMtbColr; - BigDecimal residuoCol = mtbColr.getQtaCol(); - BigDecimal residuoCnf = mtbColr.getNumCnf(); - - BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol); //Forced clone - BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf); //Forced clone - - mtbColr.setQtaCnf(UtilityBigDecimal.divide(mtbColr.getQtaCol(), mtbColr.getNumCnf())); - - List ordiniSelezionati = getSelectedData(); - int totalHr = Stream.of(ordiniSelezionati) - .mapToInt(x -> x.getItem().getOrdineLav().getHrNum()) - .sum(); - - for (CheckableOrdineLavoro c : ordiniSelezionati) { - BigDecimal usedCol, usedCnf; - int perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr; - - if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean()) ){ - usedCnf = UtilityBigDecimal.divideAndRoundToInteger(residuoCnf.multiply(BigDecimal.valueOf(perc)), BigDecimal.valueOf(100), RoundingMode.FLOOR); - - if(UtilityBigDecimal.equalsOrLowerThan(usedCnf, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCnf, BigDecimal.ZERO)) { - usedCnf = BigDecimal.ONE; - } - - usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR); - } else { - usedCol = UtilityBigDecimal.divideAndRoundToInteger(residuoCol.multiply(BigDecimal.valueOf(perc)), BigDecimal.valueOf(100), RoundingMode.FLOOR); - - if (UtilityBigDecimal.equalsOrLowerThan(usedCol, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCol, BigDecimal.ZERO)){ - usedCol = BigDecimal.ONE; - } - - usedCnf = UtilityBigDecimal.divide(usedCol, mtbColr.getQtaCnf(), RoundingMode.FLOOR); - } - - offsetCol = offsetCol.subtract(usedCol); - offsetCnf = offsetCnf.subtract(usedCnf); - - c.setQtaCol(usedCol.floatValue()); - c.setNumCnf(usedCnf.floatValue()); - } - - if (ordiniSelezionati.size() > 0) { - CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get(); - if (majorOrder == null) { - majorOrder = ordiniSelezionati.get(0); - } - - if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){ - if ( SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) { - majorOrder.setNumCnf(majorOrder.getNumCnf().get() + offsetCnf.floatValue()); - majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue()); - } else { - majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue()); - majorOrder.setNumCnf(majorOrder.getQtaCol().get() / mtbColr.getQtaCnf().floatValue()); - } - } - } - } - - public class ViewHolder extends RecyclerView.ViewHolder { - protected FragmentChooseOrdsLavFromListItemModelBinding mViewDataBinding; - - - public ViewHolder(FragmentChooseOrdsLavFromListItemModelBinding v) { - super(v.getRoot()); - mViewDataBinding = v; - } - - public void bind(CheckableOrdineLavoro checkableOrdineLavoro, MtbColr mtbColr) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException { - mViewDataBinding.setCheckableOrdineLav(checkableOrdineLavoro); - mViewDataBinding.setMtbColr(mtbColr); - - OrdineLavorazioneDTO ordine = checkableOrdineLavoro.getItem().getOrdineLav(); - - checkableOrdineLavoro.setTestata(UtilityString.formatHtmlStringFromResId(R.string.ord_testata, String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)).toString()); - - checkableOrdineLavoro.getChecked().resetOnPropertyChangedCallback(); - checkableOrdineLavoro.getChecked().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - onItemChecked(checkableOrdineLavoro); - } - }); - - if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) { - String text = UtilityNumber.decimalToString(checkableOrdineLavoro.getQtaCol().get()); - - if (mtbColr.getMtbAart() != null) { - text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : ""; - } - - mViewDataBinding.qtaTextview.setText(text); - } else { - mViewDataBinding.qtaTextview.setText(UtilityNumber.decimalToString(checkableOrdineLavoro.getNumCnf().get()) + "\n" + UtilityResources.getString(R.string.unt_mis_col)); - } - - mViewDataBinding.executePendingBindings(); - } - } - - @Override - public ChooseOrdsLavFromListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - // create a new view - FragmentChooseOrdsLavFromListItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.fragment_choose_ords_lav_from_list__item_model, parent, false); - - return new ViewHolder(viewDataBinding); - } - - @Override - public void onBindViewHolder(ChooseOrdsLavFromListAdapter.ViewHolder holder, int position) { - CheckableOrdineLavoro item = mDataset.get(position); - try { - holder.bind(item, mMtbColr); - } catch (ParseException e) { - e.printStackTrace(); - } catch (TimeNotRecognizedException e) { - e.printStackTrace(); - } catch (DateNotRecognizedException e) { - e.printStackTrace(); - } - - } - - @Override - public void onViewRecycled(ChooseOrdsLavFromListAdapter.ViewHolder holder) { - super.onViewRecycled(holder); - } - - @Override - public int getItemCount() { - return mDataset.size(); - } - - public List getSelectedItems() { - return Stream.of(mDataset) - .filter(y -> y.getChecked().get()) - .map(x -> x.getItem().getOrdineLav()).toList(); - } - - public List getSelectedData() { - return Stream.of(mDataset) - .filter(y -> y.getChecked().get()) - .map(x -> x).toList(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ProdVersamentoMaterialHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ProdVersamentoMaterialHelper.java deleted file mode 100644 index a5754ea6..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ProdVersamentoMaterialHelper.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_versamento_materiale.core; - -import android.content.Context; - -public class ProdVersamentoMaterialHelper { - - - private Context mContext; - - public ProdVersamentoMaterialHelper(Context context) { - this.mContext = context; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/MtbColrVersamentoMaterialeListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/MtbColrVersamentoMaterialeListModel.java new file mode 100644 index 00000000..e12088a1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/MtbColrVersamentoMaterialeListModel.java @@ -0,0 +1,90 @@ +package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto; + +import androidx.databinding.ObservableField; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.model.MtbColr; + +public class MtbColrVersamentoMaterialeListModel { + + private String preDescriptionText; + private String descriptionText; + private String subDescriptionText; + + private final ObservableField kgBigDecimal = new ObservableField<>(BigDecimal.ZERO); + private final ObservableField qtaBigDecimal = new ObservableField<>(BigDecimal.ZERO); + + private MtbColr originalMtbColr; + private OrdineLavorazioneDTO originalOrdineLavorazione; + + private BindableBoolean selected = new BindableBoolean(); + + public String getPreDescriptionText() { + return preDescriptionText; + } + + public MtbColrVersamentoMaterialeListModel setPreDescriptionText(String preDescriptionText) { + this.preDescriptionText = preDescriptionText; + return this; + } + + public String getDescriptionText() { + return descriptionText; + } + + public MtbColrVersamentoMaterialeListModel setDescriptionText(String descriptionText) { + this.descriptionText = descriptionText; + return this; + } + + public String getSubDescriptionText() { + return subDescriptionText; + } + + public MtbColrVersamentoMaterialeListModel setSubDescriptionText(String subDescriptionText) { + this.subDescriptionText = subDescriptionText; + return this; + } + + public BigDecimal getKgBigDecimal() { + return kgBigDecimal.get(); + } + + public MtbColrVersamentoMaterialeListModel setKgBigDecimal(BigDecimal kgBigDecimal) { + this.kgBigDecimal.set(kgBigDecimal); + return this; + } + + public BigDecimal getQtaBigDecimal() { + return qtaBigDecimal.get(); + } + + public MtbColrVersamentoMaterialeListModel setQtaBigDecimal(BigDecimal qtaBigDecimal) { + this.qtaBigDecimal.set(qtaBigDecimal); + return this; + } + + public MtbColr getOriginalMtbColr() { + return originalMtbColr; + } + + public MtbColrVersamentoMaterialeListModel setOriginalMtbColr(MtbColr originalMtbColr) { + this.originalMtbColr = originalMtbColr; + return this; + } + + public OrdineLavorazioneDTO getOriginalOrdineLavorazione() { + return originalOrdineLavorazione; + } + + public MtbColrVersamentoMaterialeListModel setOriginalOrdineLavorazione(OrdineLavorazioneDTO originalOrdineLavorazione) { + this.originalOrdineLavorazione = originalOrdineLavorazione; + return this; + } + + public BindableBoolean getSelected() { + return selected; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/VersamentoMerceOrdineLavListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/VersamentoMerceOrdineLavListModel.java new file mode 100644 index 00000000..05f77745 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/VersamentoMerceOrdineLavListModel.java @@ -0,0 +1,104 @@ +package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.core.di.BindableBigDecimal; +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.model.MtbAart; + +public class VersamentoMerceOrdineLavListModel { + + private String preDescriptionText; + private String descriptionText; + private String subDescriptionText; + private String subDescription2Text; + + private final BindableBigDecimal qtaBigDecimal = new BindableBigDecimal(BigDecimal.ZERO); + private final BindableBigDecimal numCnfBigDecimal = new BindableBigDecimal(BigDecimal.ZERO); + + private OrdineLavorazioneDTO originalOrdineLavorazione; + private MtbAart originalMtbAart; + + private BindableBoolean selected = new BindableBoolean(); + + public String getPreDescriptionText() { + return preDescriptionText; + } + + public VersamentoMerceOrdineLavListModel setPreDescriptionText(String preDescriptionText) { + this.preDescriptionText = preDescriptionText; + return this; + } + + public String getDescriptionText() { + return descriptionText; + } + + public VersamentoMerceOrdineLavListModel setDescriptionText(String descriptionText) { + this.descriptionText = descriptionText; + return this; + } + + public String getSubDescriptionText() { + return subDescriptionText; + } + + public VersamentoMerceOrdineLavListModel setSubDescriptionText(String subDescriptionText) { + this.subDescriptionText = subDescriptionText; + return this; + } + + public String getSubDescription2Text() { + return subDescription2Text; + } + + public VersamentoMerceOrdineLavListModel setSubDescription2Text(String subDescription2Text) { + this.subDescription2Text = subDescription2Text; + return this; + } + + public BigDecimal getQtaBigDecimal() { + return qtaBigDecimal.get(); + } + + public BindableBigDecimal getQtaBigDecimalObservable() { + return qtaBigDecimal; + } + + public VersamentoMerceOrdineLavListModel setQtaBigDecimal(BigDecimal qtaBigDecimal) { + this.qtaBigDecimal.set(qtaBigDecimal); + return this; + } + + public BigDecimal getNumCnfBigDecimal() { + return numCnfBigDecimal.get(); + } + + public VersamentoMerceOrdineLavListModel setNumCnfBigDecimal(BigDecimal numCnfBigDecimal) { + this.numCnfBigDecimal.set(numCnfBigDecimal); + return this; + } + + public OrdineLavorazioneDTO getOriginalOrdineLavorazione() { + return originalOrdineLavorazione; + } + + public VersamentoMerceOrdineLavListModel setOriginalOrdineLavorazione(OrdineLavorazioneDTO originalOrdineLavorazione) { + this.originalOrdineLavorazione = originalOrdineLavorazione; + return this; + } + + public MtbAart getOriginalMtbAart() { + return originalMtbAart; + } + + public VersamentoMerceOrdineLavListModel setOriginalMtbAart(MtbAart originalMtbAart) { + this.originalMtbAart = originalMtbAart; + return this; + } + + public BindableBoolean getSelected() { + return selected; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ui/ChooseOrdsLavFromListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ui/ChooseOrdsLavFromListAdapter.java new file mode 100644 index 00000000..0c72698d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ui/ChooseOrdsLavFromListAdapter.java @@ -0,0 +1,120 @@ +package it.integry.integrywmsnative.gest.prod_versamento_materiale.ui; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.utility.UtilityNumber; +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.VersamentoMerceOrdineLavListModel; + +public class ChooseOrdsLavFromListAdapter extends ExtendedRecyclerView { + + private final Context mContext; + private final boolean mForceAllToColli; + + private RunnableArgs mOnItemChecked; + + + public ChooseOrdsLavFromListAdapter(Context context, ObservableArrayList myDataset, boolean forceAllToColli) { + super(myDataset); + mContext = context; + mForceAllToColli = forceAllToColli; + } + + + public class ViewHolder extends RecyclerView.ViewHolder { + protected FragmentChooseOrdsLavFromListItemModelBinding mViewDataBinding; + + + public ViewHolder(FragmentChooseOrdsLavFromListItemModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(VersamentoMerceOrdineLavListModel versamentoMerceOrdineLavListModel) { + mViewDataBinding.setListModel(versamentoMerceOrdineLavListModel); + + + + versamentoMerceOrdineLavListModel.getQtaBigDecimalObservable().resetOnPropertyChangedCallback(); + versamentoMerceOrdineLavListModel.getQtaBigDecimalObservable().addOnPropertyChangedCallback(() -> { + setQtaText(versamentoMerceOrdineLavListModel.getOriginalMtbAart(), versamentoMerceOrdineLavListModel.getQtaBigDecimal(), versamentoMerceOrdineLavListModel.getNumCnfBigDecimal()); + }); + setQtaText(versamentoMerceOrdineLavListModel.getOriginalMtbAart(), versamentoMerceOrdineLavListModel.getQtaBigDecimal(), versamentoMerceOrdineLavListModel.getNumCnfBigDecimal()); + + + + versamentoMerceOrdineLavListModel.getQtaBigDecimalObservable().addOnPropertyChangedCallback(() -> { + setPeso(versamentoMerceOrdineLavListModel.getOriginalMtbAart(), versamentoMerceOrdineLavListModel.getQtaBigDecimal()); + }); + setPeso(versamentoMerceOrdineLavListModel.getOriginalMtbAart(), versamentoMerceOrdineLavListModel.getQtaBigDecimal()); + + + mViewDataBinding.getRoot().setOnClickListener(v -> { + versamentoMerceOrdineLavListModel.getSelected().set(!versamentoMerceOrdineLavListModel.getSelected().get()); + }); + + mViewDataBinding.executePendingBindings(); + mViewDataBinding.checkbox.jumpDrawablesToCurrentState(); + } + + private void setQtaText(MtbAart mtbAart, BigDecimal qtaText, BigDecimal numCnf) { + if (!mForceAllToColli && (mtbAart == null || mtbAart.isFlagQtaCnfFissaBoolean())) { + String text = UtilityNumber.decimalToString(qtaText); + + if (mtbAart != null) { + text += !UtilityString.isNullOrEmpty(mtbAart.getUntMis()) ? "\n" + mtbAart.getUntMis() : ""; + } + + mViewDataBinding.qtaTextview.setText(text); + } else { + mViewDataBinding.qtaTextview.setText(UtilityNumber.decimalToString(numCnf) + "\n" + UtilityResources.getString(R.string.unt_mis_col)); + } + } + + private void setPeso(MtbAart mtbAart, BigDecimal pesoKg) { + mViewDataBinding.pesoKg.setText(UtilityNumber.decimalToString(pesoKg) + " " + mtbAart.getUntMis()); + } + } + + @Override + public ChooseOrdsLavFromListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + FragmentChooseOrdsLavFromListItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.fragment_choose_ords_lav_from_list__item_model, parent, false); + return new ViewHolder(viewDataBinding); + } + + @Override + public void onBindViewHolder(ChooseOrdsLavFromListAdapter.ViewHolder holder, int position) { + final VersamentoMerceOrdineLavListModel mtbColrVersamentoMaterialeListModel = mDataset.get(position); + + mtbColrVersamentoMaterialeListModel.getSelected().resetOnPropertyChangedCallback(); + + mtbColrVersamentoMaterialeListModel.getSelected().addOnPropertyChangedCallback(() -> { + if(this.mOnItemChecked != null) this.mOnItemChecked.run(mtbColrVersamentoMaterialeListModel); + }); + + holder.bind(mtbColrVersamentoMaterialeListModel); + } + + + public ChooseOrdsLavFromListAdapter setOnItemClickListener(RunnableArgs onItemChecked) { + this.mOnItemChecked = onItemChecked; + return this; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListItemModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ui/ChooseOrdsLavFromListItemModel.java similarity index 98% rename from app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListItemModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ui/ChooseOrdsLavFromListItemModel.java index 747fd4ce..5698e2f4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListItemModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ui/ChooseOrdsLavFromListItemModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.prod_versamento_materiale.core; +package it.integry.integrywmsnative.gest.prod_versamento_materiale.ui; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; 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 deleted file mode 100644 index b522b1b1..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java +++ /dev/null @@ -1,261 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel; - -import android.app.Dialog; -import android.text.Html; -import android.text.SpannableString; -import android.view.View; -import android.widget.Toast; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.databinding.ObservableField; -import androidx.fragment.app.FragmentActivity; -import androidx.recyclerview.widget.LinearLayoutManager; - -import org.jetbrains.annotations.NotNull; - -import java.text.ParseException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; -import it.integry.integrywmsnative.core.exception.DateNotRecognizedException; -import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException; -import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; -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.MtbDepoPosizione; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityNumber; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.core.utility.UtilityResources; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListAdapter; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListItemModel; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; -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.DialogSimpleMessageView; -import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; - - -public class ProdVersamentoMaterialViewModel { - - - private FragmentActivity mContext; - - private FragmentProdVersamentoMaterialeBinding mBinding; - private ProdVersamentoMaterialHelper mHelper; - private Runnable mOnVersamentoCompleted; - private List mDataset = new ArrayList<>(); - private ChooseOrdsLavFromListAdapter currentAdapter; - public ObservableField mtbColt = new ObservableField<>(); - public MtbColr mMtbColr; - - - public void init(FragmentActivity context, FragmentProdVersamentoMaterialeBinding binding, ProdVersamentoMaterialHelper helper, Runnable onVersamentoCompleted) { - mContext = context; - mBinding = binding; - mHelper = helper; - mOnVersamentoCompleted = onVersamentoCompleted; - - BarcodeManager.enable(); - } - - public void setMtbColr(MtbColr mtbColr) { - mMtbColr = mtbColr; - mBinding.descrArt.setText(mtbColr.getDescrizione()); - mBinding.codArt.setText(mtbColr.getCodMart()); - 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()); - - if (mtbColr.getMtbAart() != null) { - text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? " " + mtbColr.getMtbAart().getUntMis() : ""; - } - - mBinding.qtaCol.setText(text); - } else { - mBinding.qtaCol.setText(UtilityNumber.decimalToString(mtbColr.getNumCnf()) + " " + UtilityResources.getString(R.string.unt_mis_col)); - } - } - - public void openLU() { - DialogScanOrCreateLUView.newInstance(false, false, true, false, (mtbColt, created) -> { - if (mtbColt == null) { - ((IPoppableActivity) mContext).pop(); - } 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) { - DialogSimpleMessageView.makeWarningDialog( - new SpannableString(Html.fromHtml("E' stata scansionata una UL giĂ  vuota")), - null, this::openLU) - .show((mContext).getSupportFragmentManager(), "tag"); - - } else { - setMtbColt(mtbColt); - choosePosition(); - } - } else { - DialogSimpleMessageView - .makeWarningDialog(new SpannableString(Html.fromHtml("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")), - null, this::openLU) - .show((mContext).getSupportFragmentManager(), "tag"); - } - }).show(mContext.getSupportFragmentManager(), "tag"); - } - - private void choosePosition() { - DialogAskPositionOfLU.makeBase(mContext, true, (status, mtbDepoPosizione) -> { - - if (status == DialogConsts.Results.ABORT) { - ((IPoppableActivity) mContext).pop(); - } else { - if (mtbDepoPosizione != null && mtbDepoPosizione.isFlagLineaProduzione() && mtbColt.get() != null) { - if (!SettingsManager.iDB().isFlagVersamentoDirettoProduzione()) { - createColloScarico(mtbDepoPosizione); - } else { - if (mtbColt == null || mtbColt.get() == null || mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size() <= 0) { - DialogSimpleMessageView - .makeWarningDialog(new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")), - null, this::openLU) - .show(mContext.getSupportFragmentManager(), "tag"); - return; - } else if (mtbColt.get().getMtbColr().size() > 1) { - - 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(mContext.getSupportFragmentManager(), "tag"); - return; - - } - - MesRESTConsumer.getOrdiniLavorazioneMateriale( - mtbDepoPosizione.getPosizione(), - getIdMaterialeFromCollo(mtbColt.get()), - ordini -> richiediOrdiniPerVersamento(ordini, mtbDepoPosizione), - e -> DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(e.getMessage())), - null, - this::openLU) - .show(mContext.getSupportFragmentManager(), "tag")); - } - } else { - DialogSimpleMessageView - .makeWarningDialog(new SpannableString(Html.fromHtml("Si è verificato un errore. Riprovare")), - null, this::openLU) - .show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"); - } - } - - - }, ex -> { - UtilityExceptions.defaultException(mContext, ex); - }).show(); - } - - private String getIdMaterialeFromCollo(MtbColt mtbColt) { - MtbAart articolo = mtbColt.getMtbColr().get(0).getMtbAart(); - return UtilityString.isNullOrEmpty(articolo.getIdArtEqui()) ? articolo.getCodMart() : articolo.getIdArtEqui(); - } - - private void createColloScarico(MtbDepoPosizione mtbDepoPosizione) { - - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - ColliMagazzinoRESTConsumer.createColloScaricoDaCarico(mtbColt.get(), mtbDepoPosizione, generatedMtbColt -> DialogCommon.showDataSaved(mContext, () -> { - progressDialog.dismiss(); - mOnVersamentoCompleted.run(); - }), ex -> UtilityExceptions.defaultException(mContext, ex)); - } - - public void setMtbColt(MtbColt mtbColt) { - this.mtbColt.set(mtbColt); - this.setMtbColr(mtbColt.getMtbColr().get(0)); - } - - public void resetMtbColt() { - this.mtbColt.set(null); - this.mMtbColr = null; - openLU(); - } - - private void richiediOrdiniPerVersamento(List ordini, MtbDepoPosizione mtbDepoPosizione) { - - if (ordini == null || ordini.size() <= 0) { - mBinding.positiveFab.setVisibility(View.GONE); - mBinding.positiveFab.setOnClickListener(null); - mBinding.emptyView.setVisibility(View.VISIBLE); - return; - } - mBinding.positiveFab.setVisibility(View.VISIBLE); - - mBinding.positiveFab.setOnClickListener(c -> onPositiveClick(mtbDepoPosizione)); - for (OrdineLavorazioneDTO ordineLav : ordini) { - mDataset.add(new ChooseOrdsLavFromListItemModel().setOrdineLav(ordineLav)); - } - mBinding.emptyView.setVisibility(mDataset != null && mDataset.size() > 0 ? View.GONE : View.VISIBLE); - try { - initRecyclerView(); - } catch (Exception e) { - UtilityExceptions.defaultException(mContext, e); - } - - } - - private void onPositiveClick(MtbDepoPosizione mtbDepoPosizione) { - List ordLavs = currentAdapter.getSelectedItems(); - if (ordLavs.size() > 0) { - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - ColliMagazzinoRESTConsumer.createColliScaricoDaOrdineLavorazione(mtbColt.get(), mMtbColr, mtbDepoPosizione, ordLavs, generatedMtbColt -> DialogCommon.showDataSaved(mContext, () -> { - progressDialog.dismiss(); - mOnVersamentoCompleted.run(); - }), ex -> UtilityExceptions.defaultException(mContext, ex)); - } else { - Toast.makeText(mContext, "Nessun ordine selezionato!", Toast.LENGTH_SHORT).show(); - } - } - - private void initRecyclerView() throws ParseException, TimeNotRecognizedException, DateNotRecognizedException { - mBinding.dialogChooseArtsFromListaArtMainList.setNestedScrollingEnabled(false); - - mBinding.dialogChooseArtsFromListaArtMainList.setHasFixedSize(true); - - mBinding.dialogChooseArtsFromListaArtMainList.setLayoutManager(new LinearLayoutManager(mContext)); - - currentAdapter = new ChooseOrdsLavFromListAdapter(mContext, mDataset, mtbColt.get(), mMtbColr); - mBinding.dialogChooseArtsFromListaArtMainList.setAdapter(currentAdapter); - } - - private void cyclicGetOrdiniLavByCollo(@NotNull Iterator righeCollo, MtbDepoPosizione mtbDepoPosizione) { - MtbColr colr = righeCollo.next(); - setMtbColr(colr); - MtbAart articolo = colr.getMtbAart(); - - MesRESTConsumer.getOrdiniLavorazioneMateriale(mtbDepoPosizione.getPosizione(), UtilityString.isNullOrEmpty(articolo.getIdArtEqui()) ? articolo.getCodMart() : articolo.getIdArtEqui(), ordini -> { - if (ordini == null || ordini.isEmpty()) { - if (righeCollo.hasNext()) { - cyclicGetOrdiniLavByCollo(righeCollo, mtbDepoPosizione); - } else { - richiediOrdiniPerVersamento(ordini, mtbDepoPosizione); - } - } else { - richiediOrdiniPerVersamento(ordini, mtbDepoPosizione); - } - } - , 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 a8f24976..f362f4b6 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 @@ -35,7 +35,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; -import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListAdapter; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java similarity index 93% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java index f00c8bc4..93da5ee1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java @@ -1,7 +1,6 @@ -package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter; +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui; import android.content.Context; -import android.text.Html; import android.view.LayoutInflater; import android.view.ViewGroup; @@ -15,13 +14,10 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; -import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; -import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding; -import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding; import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdineAcquistoGrigliaModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdineAcquistoGrigliaModule.java deleted file mode 100644 index 7e49f63c..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdineAcquistoGrigliaModule.java +++ /dev/null @@ -1,7 +0,0 @@ -package it.integry.integrywmsnative.gest.pv_ordini_acquisto; - -import dagger.Module; - -@Module(subcomponents = PVOrdineAcquistoGrigliaComponent.class) -public class PVOrdineAcquistoGrigliaModule { -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdineAcquistoGrigliaComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaComponent.java similarity index 70% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdineAcquistoGrigliaComponent.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaComponent.java index 5da928e4..42854741 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdineAcquistoGrigliaComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaComponent.java @@ -3,12 +3,12 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto; import dagger.Subcomponent; @Subcomponent -public interface PVOrdineAcquistoGrigliaComponent { +public interface PVOrdiniAcquistoGrigliaComponent { @Subcomponent.Factory interface Factory { - PVOrdineAcquistoGrigliaComponent create(); + PVOrdiniAcquistoGrigliaComponent create(); } void inject(PVOrdiniAcquistoGrigliaFragment pvOrdiniAcquistoGrigliaFragment); 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 8246e7cf..73ed8cb3 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 @@ -41,7 +41,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvOpenListAdapter; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.ui.ElevatedToolbar; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaModule.java new file mode 100644 index 00000000..997d2b0d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.gest.pv_ordini_acquisto; + +import dagger.Module; + +@Module(subcomponents = PVOrdiniAcquistoGrigliaComponent.class) +public class PVOrdiniAcquistoGrigliaModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/ui/OrdineAcquistoPvOpenListAdapter.java similarity index 98% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/ui/OrdineAcquistoPvOpenListAdapter.java index 2c3f7517..d0579d82 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/ui/OrdineAcquistoPvOpenListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui; import android.content.Context; import android.text.Html; 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 edaaf44d..916e6125 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 @@ -16,7 +16,6 @@ import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableField; -import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.textfield.TextInputLayout; @@ -25,7 +24,6 @@ import com.tfb.fbtoast.FBToast; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; -import java.util.List; import javax.inject.Inject; @@ -35,6 +33,7 @@ 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.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; @@ -46,13 +45,12 @@ 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.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding; -import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter; -import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter; import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.rettifica_giacenze.ui.AutoCompleteFornitoreAdapter; +import it.integry.integrywmsnative.gest.rettifica_giacenze.ui.RettificaGiacenzeMainListAdapter; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; @@ -67,7 +65,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; -public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener { +public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener { private FragmentMainRettificaGiacenzeBinding mBinding = null; @@ -85,8 +83,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme private Dialog mCurrentProgress; - private List mOnPreDestroyList = new ArrayList<>(); - public RettificaGiacenzeFragment() { // Required empty public constructor } @@ -202,15 +198,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme super.onAttach(context); } - @Override - public void onDestroy() { - for(Runnable onPreDestroy : mOnPreDestroyList) { - onPreDestroy.run(); - } - - super.onDestroy(); - } - @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.rettifica_giacenze_fragment_title).toString()); @@ -229,21 +216,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme }; - - private void openProgress() { - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); - } - } - - private void closeProgress() { - if (mCurrentProgress != null) { - mCurrentProgress.dismiss(); - mCurrentProgress = null; - } - } - - public void setUIToForn() { mBinding.rettificaGiacenzeFornCheckBox.setChecked(true); mBinding.rettificaGiacenzeFornLayout.setBackground(ResourcesCompat.getDrawable(getActivity().getResources(), R.drawable.circular_background_left, null)); @@ -265,18 +237,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme mBinding.rettificaGiacenzeFornLayout.setBackgroundTintList(null); } - @Override - public void onLoadingStarted() { - BarcodeManager.disable(); - this.openProgress(); - } - - @Override - public void onLoadingEnded() { - this.closeProgress(); - BarcodeManager.enable(); - } - @Override public void onFornitoriLoaded(ArrayList fornitoriList) { AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(getActivity(), fornitoriList); @@ -331,7 +291,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme public void onLUOpenRequest(RunnableArgss onComplete) { DialogScanOrCreateLUView.newInstance(true, false, (mtbColt, created) -> { if (mtbColt == null) { - ((IPoppableActivity) getActivity()).pop(); + popMe(); } else { onComplete.run(mtbColt, created); } @@ -528,9 +488,4 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme BarcodeManager.removeCallback(barcodeScannerIstanceID); mViewModel.closeLU(false, onComplete); } - - @Override - public void addOnPreDestroy(Runnable onPreDestroy) { - this.mOnPreDestroyList.add(onPreDestroy); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java index d4d5f481..f20b3373 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java @@ -9,7 +9,7 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer; +import it.integry.integrywmsnative.gest.rettifica_giacenze.rest.RettificaGiacenzeRESTConsumer; @Module(subcomponents = RettificaGiacenzeComponent.class) public class RettificaGiacenzeModule { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index 91d4fe71..b43a9e68 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -35,7 +35,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer; +import it.integry.integrywmsnative.gest.rettifica_giacenze.rest.RettificaGiacenzeRESTConsumer; import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; @@ -568,6 +568,7 @@ public class RettificaGiacenzeViewModel { this.mAnyEditDone = true; this.sendOnRowSaved(); + this.sendOnLoadingEnded(); }, this::sendError ); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java deleted file mode 100644 index 4cf2ae1d..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java +++ /dev/null @@ -1,86 +0,0 @@ -package it.integry.integrywmsnative.gest.rettifica_giacenze.core; - -import android.app.Dialog; -import android.content.Context; - -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.ArrayList; - -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.model.MtbAart; -import it.integry.integrywmsnative.core.model.MtbAartWithFornitore; -import it.integry.integrywmsnative.core.utility.UtilityDB; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; - -public class RettificaGiacenzeHelper { - - private Context mContext; - - public RettificaGiacenzeHelper(Context context){ - mContext = context; - } - - - public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs> onComplete, RunnableArgs onFailed) { - - String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " + - " WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + - " AND mtb_lisa.cod_mart = mtb_aart.cod_mart " + - " AND mtb_lisa.cod_mart = mtb_part.cod_mart " + - " AND mtb_part.cod_mdep = '01' " + - " AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " + - " ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa"; - - - 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); - } - }); - } - - - public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs> onComplete, RunnableArgs onFailed) { - String sql = "SELECT DISTINCT mtb_aart.* " + - "FROM mtb_aart " + - "LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " + - "WHERE CASE" + - " WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " + - " ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " + - "END LIKE '%' + CASE " + - " WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " + - " ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" + - " END " + - "OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " + - "OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'"; - - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.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); - } - }); - } - - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java similarity index 98% rename from app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java rename to app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java index 71448147..2e58d0f1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.rettifica_giacenze.core; +package it.integry.integrywmsnative.gest.rettifica_giacenze.rest; import com.google.gson.reflect.TypeToken; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/ui/AutoCompleteFornitoreAdapter.java similarity index 95% rename from app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/ui/AutoCompleteFornitoreAdapter.java index b7821cac..104b95e1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/ui/AutoCompleteFornitoreAdapter.java @@ -1,9 +1,7 @@ -package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter; +package it.integry.integrywmsnative.gest.rettifica_giacenze.ui; import android.content.Context; import androidx.databinding.DataBindingUtil; -import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.view.LayoutInflater; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/ui/RettificaGiacenzeMainListAdapter.java similarity index 97% rename from app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/ui/RettificaGiacenzeMainListAdapter.java index a7b49592..143bbc23 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/ui/RettificaGiacenzeMainListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter; +package it.integry.integrywmsnative.gest.rettifica_giacenze.ui; import android.view.LayoutInflater; import android.view.ViewGroup; 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 c5225a75..51bc7754 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 @@ -56,8 +56,8 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; -import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListAdapter; -import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListAdapter; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; @@ -94,7 +94,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo public BindableBoolean bottomSheetEnabled = new BindableBoolean(false); public BindableBoolean closeOrderButtonEnabled = new BindableBoolean(false); - private boolean mEnableGiacenza; + private boolean mEnableFakeGiacenza; private boolean mFlagShowCodForn; private boolean mDivideByGrpMerc; private boolean mEnableQuantityReset; @@ -195,16 +195,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - mEnableGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza(); + mEnableFakeGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza(); boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV(); boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione(); boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione(); boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd(); - if (mEnableGiacenza) this.openProgress(); + if (mEnableFakeGiacenza) this.openProgress(); mViewmodel.init( codMdep, - mEnableGiacenza, + mEnableFakeGiacenza, enableCheckPartitaMag, shouldAskPesoLU, canOverflowOrderQuantity, @@ -247,7 +247,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(onScanSuccessful) - .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false))); + .setOnScanFailed(this::onError)); BarcodeManager.enable(); } @@ -263,12 +263,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); - spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> { + spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt, refMtbColr) -> { if (!noLUPresent.get() && ((SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) || clickedItem.getTempPickData() != null)) { - this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt, + this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt, refMtbColr, SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()); } }); @@ -311,7 +311,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo boolean anyLUPresent = x.getMtbColts() != null && x.getMtbColts().size() > 0; - spedizioneListModel.setActive(!mEnableGiacenza || anyLUPresent); + spedizioneListModel.setActive(!mEnableFakeGiacenza || anyLUPresent); AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); @@ -323,10 +323,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo qtaColWithdrawRows.addAndGet(row.getQtaCol()); }); + spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom()); if (!anyLUPresent) { - spedizioneListModel.setGroupTitle(mEnableGiacenza ? getString(R.string.picking_not_available) : ""); - spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom()); + spedizioneListModel.setGroupTitle(mEnableFakeGiacenza ? getString(R.string.picking_not_available) : ""); if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); @@ -363,6 +363,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag())); cloneModel.setBadge2(mtbColrToDispatch.getCodJcom()); } + cloneModel.setSourceMtbColr(mtbColrToDispatch); cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); @@ -379,14 +380,14 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo numCnfOrdCounter = numCnfOrdCounter.subtract(numCnfOrdToSubstract); BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) - .filter(y -> y.getRefMtbColr() != null && + .filter(y -> y.getRefMtbColr() != null &&/* y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) && y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) && y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) && y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) && - UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())) + UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/ y.getRefMtbColr().equals(mtbColrToDispatch)) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -404,13 +405,15 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .filter(y -> y.getRefMtbColr() != null && + y.getRefMtbColr().getId() == mtbColrToDispatch.getId() + /* y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) && y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) && y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) && y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) && - UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())) + UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/) .map(MtbColr::getQtaCol) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -469,7 +472,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo boolean anyLUPresent = x.getMtbColts() != null && x.getMtbColts().size() > 0; - spedizioneListModel.setActive(!mEnableGiacenza || anyLUPresent); + spedizioneListModel.setActive(!mEnableFakeGiacenza || anyLUPresent); AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); @@ -528,6 +531,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag())); cloneModel.setBadge2(mtbColrToDispatch.getCodJcom()); } + cloneModel.setSourceMtbColr(mtbColrToDispatch); cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); @@ -545,13 +549,14 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .filter(y -> y.getRefMtbColr() != null && + y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /* y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) && y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) && y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) && y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) && - UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())) + UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -567,13 +572,14 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .filter(y -> y.getRefMtbColr() != null && + y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /* y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) && y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) && y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) && y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) && - UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())) + UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/) .map(MtbColr::getQtaCol) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -625,7 +631,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo public void addExtraItem() { DialogScanArtView - .newInstance((status, mtbAart, ean128Model, mtbColr) -> { + .newInstance(!mEnableFakeGiacenza, (status, mtbAart, ean128Model, mtbColr) -> { if (status == DialogConsts.Results.YES) { this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr); } 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 c3438510..dc107a3a 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 @@ -412,7 +412,7 @@ public class SpedizioneViewModel { //dell'etichetta anonima this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); - } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO) && mDefaultSegnoCol == 1) { + } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)/* && mDefaultSegnoCol == 1*/) { this.processBarcodePosizioneNotOpenedLU(barcodeScanDTO, onComplete); } else { @@ -488,16 +488,16 @@ public class SpedizioneViewModel { this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); - } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { - //Cerco tramite etichetta ean 128 (che puĂ² indicarmi un articolo o una UL) - this.executeEtichettaEan128(barcodeScanDTO, onComplete); - - } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) { //Cerco l'UL presente all'interno della posizione this.executeEtichettaPosizione(barcodeScanDTO.getStringValue(), onComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + //Cerco tramite etichetta ean 128 (che puĂ² indicarmi un articolo o una UL) + this.executeEtichettaEan128(barcodeScanDTO, onComplete); + + } else { this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); } @@ -742,7 +742,9 @@ public class SpedizioneViewModel { this.sendFilterApplied(null); this.getPickingList().postValue(pickingList); } else { - this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt(), false); + MtbColt refMtbColt = matchedItem.getRefMtbColt(); + MtbColr refMtbColr = refMtbColt != null ? matchedItem.getRefMtbColt().getMtbColr().get(0) : null; + this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, false); } } else { @@ -761,9 +763,11 @@ public class SpedizioneViewModel { } - public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, boolean canPartitaMagBeChanged) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged) { //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta +// MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; + if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && @@ -771,30 +775,46 @@ public class SpedizioneViewModel { List scannedMtbColrs = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr(); - List availableBatchLot = Stream.of(scannedMtbColrs) + List availableBatchLots = Stream.of(scannedMtbColrs) .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && ( - x.getPartitaMag() == null || UtilityString.isNullOrEmpty(x.getMtbPartitaMag().getDataScadS()) || UtilityDate.getDateInstance().before(x.getMtbPartitaMag().getDataScadD()) + x.getPartitaMag() == null || + UtilityString.isNullOrEmpty(x.getMtbPartitaMag().getDataScadS()) || + UtilityDate.getDateInstance().before(x.getMtbPartitaMag().getDataScadD()) )) .distinctBy(MtbColr::getPartitaMag) .map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag()) .toList(); - if(availableBatchLot.size() > 1) { + //Controllo se una delle partite combacia con quella che voglio evadere + if(refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) { + MtbPartitaMag refMtbPartitaMag = refMtbColr.getMtbPartitaMag(); + + Optional matchPartitaMag = Stream.of(availableBatchLots) + .filter(availableBatchLot -> refMtbPartitaMag.getPartitaMag().equalsIgnoreCase(availableBatchLot.getPartitaMag())) + .findFirst(); + + if(matchPartitaMag.isPresent()) { + availableBatchLots.clear(); + availableBatchLots.add(refMtbPartitaMag); + } + } + + if(availableBatchLots.size() > 1) { this.sendOnLoadingStarted(); List tmp = new ArrayList<>(); - if(Stream.of(availableBatchLot).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) { + if(Stream.of(availableBatchLots).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) { tmp.addAll( - Stream.of(availableBatchLot) + Stream.of(availableBatchLots) .filter(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()) && UtilityDate.getDateInstance().before(x.getDataScadD())) .sortBy(MtbPartitaMag::getDataScadD) .toList()); } - if(Stream.of(availableBatchLot).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) { + if(Stream.of(availableBatchLots).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) { tmp.addAll( - Stream.of(availableBatchLot) + Stream.of(availableBatchLots) .filter(x -> UtilityString.isNullOrEmpty(x.getDataScadS())) .sortBy(MtbPartitaMag::getPartitaMag) .toList()); @@ -811,22 +831,22 @@ public class SpedizioneViewModel { .toList() .get(0); - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, scannedMtbColr, canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged); } }); } else { - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, scannedMtbColrs.get(0), canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColrs.get(0), canPartitaMagBeChanged); } } else { - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, null, canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged); } } - private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) { + private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd(); @@ -864,45 +884,48 @@ public class SpedizioneViewModel { refMtbColt = pickingObjectDTO.getMtbColts().get(0); } - MtbColr refMtbColr = null; +// MtbColr refMtbColr = null; +// +// if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) { +// Optional optionalMtbColr = Stream.of(refMtbColt.getMtbColr()) +// .filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) && +// UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) && +// UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) && +// (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag()))) +// .findFirst(); +// +// if (optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get(); +// } - if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) { - Optional optionalMtbColr = Stream.of(refMtbColt.getMtbColr()) - .filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) && - UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) && - UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) && - (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag()))) - .findFirst(); - if (optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get(); - } - - MtbColr mtbColrToUse = scannedMtbColr != null ? scannedMtbColr : refMtbColr; - - if (mtbColrToUse != null) { + if(refMtbColr != null) { if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { - if (UtilityBigDecimal.equalsOrLowerThan(mtbColrToUse.getQtaCol(), qtaDaEvadere)) { - numCnfDaPrelevare = mtbColrToUse.getNumCnf(); - qtaColDaPrelevare = mtbColrToUse.getQtaCol(); + if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getQtaCol(), qtaDaEvadere)) { + numCnfDaPrelevare = refMtbColr.getNumCnf(); + qtaColDaPrelevare = refMtbColr.getQtaCol(); } else { numCnfDaPrelevare = numCnfDaEvadere; qtaColDaPrelevare = qtaDaEvadere; } - qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf(); + qtaCnfDaPrelevare = refMtbColr.getQtaCnf(); } else { - if (UtilityBigDecimal.equalsOrLowerThan(mtbColrToUse.getNumCnf(), numCnfDaEvadere)) { - numCnfDaPrelevare = mtbColrToUse.getNumCnf(); - qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf(); - qtaColDaPrelevare = mtbColrToUse.getQtaCol(); + if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getNumCnf(), numCnfDaEvadere)) { + numCnfDaPrelevare = refMtbColr.getNumCnf(); + qtaCnfDaPrelevare = refMtbColr.getQtaCnf(); + qtaColDaPrelevare = refMtbColr.getQtaCol(); } else { numCnfDaPrelevare = numCnfDaEvadere; qtaColDaPrelevare = qtaDaEvadere; qtaCnfDaPrelevare = qtaCnfDaEvadere; } } + } + MtbColr mtbColrToUse = scannedMtbColr != null ? scannedMtbColr : refMtbColr; + if (mtbColrToUse != null) { + totalQtaAvailable = mtbColrToUse.getQtaCol(); totalNumCnfAvailable = mtbColrToUse.getNumCnf(); qtaCnfAvailable = mtbColrToUse.getQtaCnf(); @@ -1344,7 +1367,7 @@ public class SpedizioneViewModel { .setDatetimeRow(UtilityDate.getDateInstance()); //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta - MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null && + final MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ? @@ -1400,7 +1423,6 @@ public class SpedizioneViewModel { shouldPrint = false; } - if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { resetMatchedRows(); this.sendOnLoadingEnded(); @@ -1430,6 +1452,15 @@ public class SpedizioneViewModel { .setCodCol(mtbColr.getCodCol()); if (refMtbColt != null) { + + MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && + refMtbColt.getMtbColr().size() > 0 ? + refMtbColt.getMtbColr().get(0) : null; + + if(originalRefMtbColr != null) { + refMtbColr.setId(originalRefMtbColr.getId()); + } + refMtbColr .setNumCollo(refMtbColt.getNumCollo()) .setDataCollo(refMtbColt.getDataColloS()) @@ -1557,10 +1588,8 @@ public class SpedizioneViewModel { public void closeLU(boolean shouldPrint) { if (mCurrentMtbColt == null) return; - this.sendOnLoadingStarted(); - mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> { if (canBeDeleted) { @@ -1641,12 +1670,8 @@ public class SpedizioneViewModel { } }); } - } - }, this::sendError); - - } private void distribuisciLU(RunnableArgs> onComplete) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/BaseDialogRowInfoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/BaseDialogRowInfoView.java index 09b58137..c40c2c75 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/BaseDialogRowInfoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/BaseDialogRowInfoView.java @@ -3,7 +3,7 @@ package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info; import org.jetbrains.annotations.NotNull; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; -import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; public abstract class BaseDialogRowInfoView extends BaseDialogFragment implements IBaseDialogRowInfoView { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java index 663d4b98..ba232757 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java @@ -26,7 +26,7 @@ import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.DialogRowInfoProdFabbisognoLineeProdBinding; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO; -import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; public class DialogRowInfoProdFabbisognoLineeProdView extends BaseDialogRowInfoView implements DialogRowInfoProdFabbisognoLineeProdViewModel.Listener { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java similarity index 95% rename from app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java index a2355ece..68fa2471 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.spedizione.core; +package it.integry.integrywmsnative.gest.spedizione.ui; import android.content.Context; import android.graphics.Color; @@ -24,7 +24,8 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; -import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.expansion.RunnableArgsss; +import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityNumber; @@ -41,7 +42,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter mDataset = new ArrayList<>(); - private RunnableArgss mOnItemClicked; + private RunnableArgsss mOnItemClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -81,7 +82,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + public void setOnItemClicked(RunnableArgsss onItemClicked) { this.mOnItemClicked = onItemClicked; } @@ -159,7 +160,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { if (this.mOnItemClicked != null) - this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt()); + this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr()); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListModel.java similarity index 90% rename from app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListModel.java index 94f425fa..43269d14 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListModel.java @@ -1,9 +1,10 @@ -package it.integry.integrywmsnative.gest.spedizione.core; +package it.integry.integrywmsnative.gest.spedizione.ui; import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; +import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; @@ -26,6 +27,7 @@ public class SpedizioneListModel implements Cloneable { private PickingObjectDTO mOriginalModel; private MtbColt mSourceMtbColt; + private MtbColr mSourceMtbColr; @NotNull @Override @@ -153,4 +155,13 @@ public class SpedizioneListModel implements Cloneable { this.mSourceMtbColt = sourceMtbColt; return this; } + + public MtbColr getSourceMtbColr() { + return mSourceMtbColr; + } + + public SpedizioneListModel setSourceMtbColr(MtbColr sourceMtbColr) { + this.mSourceMtbColr = sourceMtbColr; + 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 d0c28b47..8ea4c517 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 @@ -41,8 +41,7 @@ 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.ui.UltimiArriviFornitoreListAdapter; 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; @@ -276,7 +275,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl public void onMtbColtScanned(MtbColt scannedMtbColt) { DialogChooseArtsFromListaArts - .make(getActivity(), scannedMtbColt.getMtbColr(), items -> { + .newInstance(scannedMtbColt.getMtbColr(), items -> { List mtbAarts = Stream.of(items) .map(MtbColr::getMtbAart) @@ -284,7 +283,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl filterItems(mtbAarts); - }, null); - + }, null) + .show(requireActivity().getSupportFragmentManager(), "tag"); } } 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 index fcb4e8fa..8286388d 100644 --- 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 @@ -7,7 +7,6 @@ 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) 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/UltimiArriviFornitoreViewModel.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreViewModel.java index 7b17b4eb..0e972f67 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/UltimiArriviFornitoreViewModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core; +package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore; import androidx.lifecycle.MutableLiveData; 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/ui/UltimiArriviFornitoreListAdapter.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/ui/UltimiArriviFornitoreListAdapter.java index 8249b12e..0b1691fe 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/ui/UltimiArriviFornitoreListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core; +package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.ui; import android.content.Context; import android.view.LayoutInflater; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index 759cd1bc..894194d5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -168,8 +168,10 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag @Override public void onArtsChooseRequired(List mtbColrList, RunnableArgs> onComplete, Runnable onAbort) { - this.getActivity().runOnUiThread(() -> { - DialogChooseArtsFromListaArts.make(getActivity(), mtbColrList, onComplete, onAbort); + this.requireActivity().runOnUiThread(() -> { + DialogChooseArtsFromListaArts + .newInstance(mtbColrList, onComplete, onAbort) + .show(requireActivity().getSupportFragmentManager(), "tag"); }); } @@ -220,10 +222,8 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag @Override public void onDataSaved() { - this.getActivity().runOnUiThread(() -> { - DialogCommon.showDataSaved(getActivity(), () -> { - ((IPoppableActivity) getActivity()).pop(); - }); + this.requireActivity().runOnUiThread(() -> { + DialogCommon.showDataSaved(requireActivity(), this::popMe); }); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java index f723ec4e..dcd00bbe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java @@ -4,32 +4,23 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableField; import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; -import java.math.BigDecimal; import java.util.ArrayList; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.expansion.WeakReferenceOnListChangedCallback; import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentListItemBinding; -import it.integry.integrywmsnative.databinding.ListaRettificaGiacenzeModelBinding; -import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter; public class BottomSheetFragmentLUContentListAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java index b9ba93c7..f01d1f58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java @@ -54,7 +54,7 @@ public class DialogBasketLU { } private void initViewPager() { - List> views = new ArrayList<>(); + List>> views = new ArrayList<>(); views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, DialogBasketLU_Page1_ViewModel.class)); views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, DialogBasketLU_Page2_ViewModel.class)); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java index bf4e2edc..1dafa3db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java @@ -17,21 +17,19 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.ui.DeactivatableViewPager; -import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel; import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel; public class DialogBasketLU_ViewPagerAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener { - private Context mContext; + private final Context mContext; - private List> mDatasetLayout; - private List> mDatasetViews; + private final List>> mDatasetLayout; + private final List> mDatasetViews; private DeactivatableViewPager viewPager; - public DialogBasketLU_ViewPagerAdapter(Context context, List> datasetLayouts) { + public DialogBasketLU_ViewPagerAdapter(Context context, List>> datasetLayouts) { this.mContext = context; this.mDatasetLayout = datasetLayouts; this.mDatasetViews = new ArrayList<>(); @@ -47,7 +45,7 @@ public class DialogBasketLU_ViewPagerAdapter extends PagerAdapter implements Vie LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false); - Class viewModelClass = mDatasetLayout.get(position).getValue(); + Class viewModelClass = mDatasetLayout.get(position).getValue(); IDialogBasketLUViewModel viewModel = null; try { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index 16023666..16d00ccc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -2,27 +2,33 @@ package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.widget.SearchView; import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.LinearLayoutManager; import com.annimon.stream.Stream; -import org.jetbrains.annotations.NotNull; - 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.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; @@ -37,28 +43,33 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; -public class DialogChooseArtsFromListaArts { +public class DialogChooseArtsFromListaArts extends BaseDialogFragment { - private Context currentContext; - private Dialog mDialog; + @Inject + BarcodeRESTConsumer barcodeRESTConsumer; + + @Inject + ArticoloRESTConsumer articoloRESTConsumer; + + private Context context; private DialogChooseArtsFromListaArtsLayoutBinding mBindings; private DialogChooseArtsFromListaArtsAdapter currentAdapter; - private RunnableArgs> mOnItemsChoosed; - private Runnable mOnAbort; + private final RunnableArgs> mOnItemsChoosed; + private final Runnable mOnAbort; - private List mDataset; + private final List mDataset; - public static void make(@NotNull final FragmentActivity activity, List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { - activity.runOnUiThread(() -> { - new DialogChooseArtsFromListaArts(activity, listaMtbColr, onItemsChoosed, onAbort).mDialog.show(); - }); + private int mBarcodeScannerIstanceID; + + public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { + return new DialogChooseArtsFromListaArts(listaMtbColr, onItemsChoosed, onAbort); } + private DialogChooseArtsFromListaArts(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { + super(); - private DialogChooseArtsFromListaArts(Context context, List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { - currentContext = context; mOnItemsChoosed = onItemsChoosed; mOnAbort = onAbort; @@ -73,51 +84,55 @@ public class DialogChooseArtsFromListaArts { mDataset.add(new DialogChooseArtsFromListaArtsItemModel().setMtbColr(mtbColr)); } } + } - LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); + + this.context = getActivity(); mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_arts_from_lista_arts_layout, null, false); + mBindings.setLifecycleOwner(getViewLifecycleOwner()); - mBindings.emptyView.setVisibility(listaMtbColr != null && listaMtbColr.size() > 0 ? View.GONE : View.VISIBLE); + MainApplication.appComponent + .dialogChooseArtsFromListaArtsComponent() + .create() + .inject(this); + UtilityDialog.setTo90PercentWidth(context, this); - mDialog = new Dialog(context); - mDialog.setContentView(mBindings.getRoot()); - mDialog.setCanceledOnTouchOutside(false); - mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - mDialog.setOnCancelListener(dialog -> { - if (this.mOnAbort != null) this.mOnAbort.run(); - }); - - UtilityDialog.setTo90PercentWidth(context, mDialog); + mBindings.emptyView.setVisibility(mDataset != null && mDataset.size() > 0 ? View.GONE : View.VISIBLE); initRecyclerView(); - initFilter(); - setupBarcode(); mBindings.positiveButton.setOnClickListener(v -> { - mDialog.dismiss(); + dismiss(); onPositiveClick(); }); mBindings.negativeButton.setOnClickListener(v -> { - mDialog.dismiss(); + dismiss(); onNegativeClick(); }); + + getDialog().setCanceledOnTouchOutside(false); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + return mBindings.getRoot(); } + private void initRecyclerView() { - mBindings.dialogChooseArtsFromListaArtMainList.setNestedScrollingEnabled(false); + mBindings.listaArts.setNestedScrollingEnabled(false); + mBindings.listaArts.setHasFixedSize(true); + mBindings.listaArts.setLayoutManager(new LinearLayoutManager(context)); - mBindings.dialogChooseArtsFromListaArtMainList.setHasFixedSize(true); - - mBindings.dialogChooseArtsFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext)); - - currentAdapter = new DialogChooseArtsFromListaArtsAdapter(currentContext, mDataset); - mBindings.dialogChooseArtsFromListaArtMainList.setAdapter(currentAdapter); + currentAdapter = new DialogChooseArtsFromListaArtsAdapter(context, mDataset); + mBindings.listaArts.setAdapter(currentAdapter); } @@ -178,9 +193,9 @@ public class DialogChooseArtsFromListaArts { String diacod = x.getMtbColr().getMtbAart().getDiacod().toLowerCase(); return ((codMart.startsWith(finalNewText) || - codMart.endsWith(finalNewText) || - codMart.contains(finalNewText) || - codMart.equalsIgnoreCase(finalNewText)) || + codMart.endsWith(finalNewText) || + codMart.contains(finalNewText) || + codMart.equalsIgnoreCase(finalNewText)) || (descrizioneArt.startsWith(finalNewText) || descrizioneArt.endsWith(finalNewText) || descrizioneArt.contains(finalNewText) || @@ -206,21 +221,28 @@ public class DialogChooseArtsFromListaArts { private void setupBarcode() { BarcodeManager.enable(); - int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(onScanSuccessfull) - .setOnScanFailed(ex -> UtilityExceptions.defaultException(currentContext, ex, false))); + .setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false))); - mDialog.setOnDismissListener(dialog -> { - BarcodeManager.removeCallback(barcodeIstanceID); - }); } + + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + BarcodeManager.removeCallback(mBarcodeScannerIstanceID); + this.mOnAbort.run(); + super.onDismiss(dialog); + } + + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext); + Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(context); if (UtilityBarcode.isEan13(data)) { this.loadArticolo(data.getStringValue(), null, progressDialog); @@ -236,7 +258,7 @@ public class DialogChooseArtsFromListaArts { private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - BarcodeRESTConsumer.decodeEan128Static(barcodeScanDTO, ean128Model -> { + this.barcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { String barcodeProd = null; @@ -251,7 +273,7 @@ public class DialogChooseArtsFromListaArts { if (!UtilityString.isNullOrEmpty(ean128Model.Gtin) || !UtilityString.isNullOrEmpty(ean128Model.Content)) { this.loadArticolo(barcodeProd, ean128Model, progressDialog); } else { - DialogCommon.showNoArtFoundDialog(currentContext, () -> { + DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); progressDialog.dismiss(); }); @@ -261,14 +283,14 @@ public class DialogChooseArtsFromListaArts { } else { //EAN 128 non completo o comunque mancano i riferimenti al prodotto - DialogCommon.showNoArtFoundDialog(currentContext, () -> { + DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); progressDialog.dismiss(); }); } }, ex -> { - UtilityExceptions.defaultException(currentContext, ex, progressDialog); + UtilityExceptions.defaultException(context, ex, progressDialog); BarcodeManager.enable(); }); } @@ -280,7 +302,7 @@ public class DialogChooseArtsFromListaArts { } String finalBarcodeProd = barcodeProd; - ArticoloRESTConsumer.getByBarcodeProdStatic(barcodeProd, mtbAartList -> { + this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { this.mBindings.mainSearch.setQuery(finalBarcodeProd, false); @@ -292,7 +314,7 @@ public class DialogChooseArtsFromListaArts { } else { - DialogCommon.showNoArtFoundDialog(currentContext, () -> { + DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); progressDialog.dismiss(); }); @@ -300,7 +322,7 @@ public class DialogChooseArtsFromListaArts { }, ex -> { BarcodeManager.enable(); - UtilityExceptions.defaultException(currentContext, ex, progressDialog); + UtilityExceptions.defaultException(context, ex, progressDialog); }); } @@ -314,7 +336,7 @@ public class DialogChooseArtsFromListaArts { .toList(); if (foundRowsList.size() == 0) { - DialogCommon.showNoArtFoundDialog(currentContext, null); + DialogCommon.showNoArtFoundDialog(context, null); } else { for (int i = 0; i < mDataset.size(); i++) { @@ -339,7 +361,7 @@ public class DialogChooseArtsFromListaArts { private void onNegativeClick() { - if (this.mOnAbort != null) mOnAbort.run(); + this.dismiss(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArtsComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArtsComponent.java new file mode 100644 index 00000000..e99add7f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArtsComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogChooseArtsFromListaArtsComponent { + + @Subcomponent.Factory + interface Factory { + DialogChooseArtsFromListaArtsComponent create(); + } + + void inject(DialogChooseArtsFromListaArts dialogChooseArtsFromListaArts); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArtsModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArtsModule.java new file mode 100644 index 00000000..fd6c526b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArtsModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +import dagger.Module; + +@Module(subcomponents = DialogChooseArtsFromListaArtsComponent.class) +public class DialogChooseArtsFromListaArtsModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java index 2a7d8fb1..005653d7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.view.dialogs.choose_batch_lot; import android.content.Context; +import android.content.DialogInterface; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; @@ -32,14 +33,12 @@ public class DialogChooseBatchLotView extends BaseDialogFragment { @Inject DialogChooseBatchLotViewModel mViewModel; - private List mAvailableBatchLot; - private RunnableArgs mOnItemSelected; + private final List mAvailableBatchLot; + private final RunnableArgs mOnItemSelected; private Context mContext; private DialogChooseBatchLotBinding mBindings; - private DialogChooseBatchLotAdapter mAdapter; - private MtbPartitaMag mSelectedItem; public static DialogChooseBatchLotView newInstance(List availableBatchLot, RunnableArgs onItemSelected) { @@ -82,8 +81,8 @@ public class DialogChooseBatchLotView extends BaseDialogFragment { } @Override - public void dismiss() { - super.dismiss(); + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); if(mOnItemSelected != null) { this.mOnItemSelected.run(mSelectedItem); @@ -99,7 +98,7 @@ public class DialogChooseBatchLotView extends BaseDialogFragment { itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); mBindings.mainList.addItemDecoration(itemDecorator); - mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLot, onItemClicked); + DialogChooseBatchLotAdapter mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLot, onItemClicked); mBindings.mainList.setAdapter(mAdapter); } 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 82353801..f1abc006 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 @@ -365,6 +365,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public void onError(Exception ex) { DialogSimpleMessageView .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) - .show(getActivity().getSupportFragmentManager(), "tag"); + .show(requireActivity().getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java index efd6e921..d62bdc9d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java @@ -27,7 +27,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgssss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.rest.model.Ean128Model; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.DialogScanArtBinding; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView; @@ -37,6 +36,8 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA @Inject DialogScanArtViewModel mViewModel; + private final boolean mForceOnlyUL; + private DialogScanArtBinding mBindings; private int mBarcodeScannerIstanceID; @@ -44,12 +45,13 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA private RunnableArgssss mOnItemChoosed = null; - public static DialogScanArtView newInstance(@NotNull RunnableArgssss onComplete) { - return new DialogScanArtView(onComplete); + public static DialogScanArtView newInstance(boolean forceOnlyUL, @NotNull RunnableArgssss onComplete) { + return new DialogScanArtView(forceOnlyUL, onComplete); } - private DialogScanArtView(RunnableArgssss onItemChoosed) { + private DialogScanArtView(boolean forceOnlyUL, RunnableArgssss onItemChoosed) { super(); + mForceOnlyUL = forceOnlyUL; mOnItemChoosed = onItemChoosed; } @@ -67,6 +69,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA .inject(this); this.mViewModel + .setForceOnlyUL(mForceOnlyUL) .setListener(this); getDialog().setCanceledOnTouchOutside(false); @@ -122,8 +125,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA @Override public void onError(Exception ex) { - this.closeProgress(); - UtilityExceptions.defaultException(getActivity(), ex); + super.onError(ex); BarcodeManager.enable(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java index 6fcb77f4..dc52a7f7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java @@ -26,6 +26,8 @@ public class DialogScanArtViewModel { private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ArticoloRESTConsumer mArticoloRESTConsumer; + private boolean mForceOnlyUL; + private Listener mListener; public DialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { @@ -34,6 +36,10 @@ public class DialogScanArtViewModel { this.mArticoloRESTConsumer = articoloRESTConsumer; } + public DialogScanArtViewModel setForceOnlyUL(boolean forceOnlyUL) { + this.mForceOnlyUL = forceOnlyUL; + return this; + } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, RunnableArgssss> onComplete) { if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { @@ -44,12 +50,14 @@ public class DialogScanArtViewModel { //Cerco l'UL presente all'interno della posizione // this.executeEtichettaPosizione(barcodeScanDTO.getStringValue(), onComplete); - } else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + } else if(UtilityBarcode.isEtichetta128(barcodeScanDTO) && !mForceOnlyUL) { this.executeEtichettaEan128(barcodeScanDTO, onComplete); - } else if(UtilityBarcode.isEanPeso(barcodeScanDTO)){ + } else if(UtilityBarcode.isEanPeso(barcodeScanDTO) && !mForceOnlyUL){ this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); - } else { + } else if (!mForceOnlyUL){ this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); + } else { + this.sendError(new Exception("Barcode non valido")); } } diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index b259e83f..dfb091da 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -442,7 +442,9 @@ android:focusableInTouchMode="false" android:hint="@string/expire_date" android:inputType="text" - app:binding="@{view.currentDataScad}" /> + app:binding="@{view.currentDataScad}" + app:parentView="@{view}" + app:warningOnOldDates="@{true}" /> diff --git a/app/src/main/res/layout/accettazione_main_list_group_model.xml b/app/src/main/res/layout/accettazione_main_list_group_model.xml index 432747ff..bbd81e4c 100644 --- a/app/src/main/res/layout/accettazione_main_list_group_model.xml +++ b/app/src/main/res/layout/accettazione_main_list_group_model.xml @@ -1,9 +1,9 @@ - + @@ -17,12 +17,13 @@ android:padding="8dp"> - + tools:layout_editor_absoluteY="1dp" + app:checked="@{selected}" /> - + xmlns:fab="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + + type="it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleViewModel" /> + + @@ -18,183 +24,182 @@ android:layout_height="match_parent"> - - - - - - - - - - + android:background="@color/full_white" + android:orientation="vertical"> - - + android:layout_height="wrap_content"> + + + + + + + android:paddingTop="8dp" + tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity"> + + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:background="@drawable/gray_detail_background_round8" + android:orientation="vertical" + android:padding="16dp"> - + android:orientation="horizontal"> - + + + + + + android:orientation="horizontal"> + + + + + + + + + + + + + + + + + + + + + + + - + android:layout_marginTop="16dp" + android:layout_marginBottom="92dp" + android:paddingStart="2dp" + android:paddingEnd="2dp"> - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - + + app:onClick="@{() -> view.recoverUL()}" + app:visibility="@{view.recoverFabMenuVisible}" + fab:fab_label="@string/action_recover_ul" /> diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml index bc5c3d07..7ef59bc9 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/activity_splash.xml @@ -61,6 +61,20 @@ app:layout_constraintRight_toLeftOf="@+id/guideline_right_progress" app:layout_constraintTop_toBottomOf="@id/imageView" /> + + + tools:context="it.integry.integrywmsnative.gest.main.MainActivity"> diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index b330b509..6d147a83 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -436,6 +436,8 @@ android:hint="@string/expire_date" android:focusableInTouchMode="false" app:binding="@{view.currentDataScad}" + app:warningOnOldDates="@{true}" + app:parentView="@{view}" android:inputType="text" /> diff --git a/app/src/main/res/layout/dialog_ordine_produzione_filtro_avanzato.xml b/app/src/main/res/layout/dialog_ordine_produzione_filtro_avanzato.xml index a2357605..258c6c82 100644 --- a/app/src/main/res/layout/dialog_ordine_produzione_filtro_avanzato.xml +++ b/app/src/main/res/layout/dialog_ordine_produzione_filtro_avanzato.xml @@ -7,7 +7,10 @@ + type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoViewModel" /> + @@ -55,7 +58,7 @@ android:inputType="number|text" android:singleLine="true" android:ellipsize="end" - app:binding="@{viewmodel.numOrds}"/> + app:binding="@{view.numOrds}"/> @@ -76,7 +79,7 @@ android:inputType="text" android:singleLine="true" android:ellipsize="end" - app:binding="@{viewmodel.codJcoms}"/> + app:binding="@{view.codJcoms}"/> diff --git a/app/src/main/res/layout/fragment_choose_ords_lav_from_list__item_model.xml b/app/src/main/res/layout/fragment_choose_ords_lav_from_list__item_model.xml index d06ab91c..2b2ccbcd 100644 --- a/app/src/main/res/layout/fragment_choose_ords_lav_from_list__item_model.xml +++ b/app/src/main/res/layout/fragment_choose_ords_lav_from_list__item_model.xml @@ -1,154 +1,157 @@ - + xmlns:tools="http://schemas.android.com/tools"> + + + + + + + + + - + name="listModel" + type="it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.VersamentoMerceOrdineLavListModel" /> + + app:backgroundTintResID="@{listModel.selected.get() ? R.color.bg_checked_layout : android.R.color.transparent}"> - - - - - - - - - - - - - - - - - - - - - - + app:checked="@{listModel.selected}" /> + + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:background="@drawable/badge2_round_corner" + android:backgroundTint="@{context.getColor(listModel.selected.get() ? R.color.orange_600 : R.color.gray_500)}" + android:paddingStart="6dp" + android:paddingEnd="6dp" + android:textColor="@android:color/white" + android:textSize="14sp" + android:textStyle="bold" + android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (listModel.originalMtbAart != null && !listModel.originalMtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}" + tools:text="PESO KG" /> + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_main_accettazione.xml b/app/src/main/res/layout/fragment_main_accettazione.xml index 615296d2..13233729 100644 --- a/app/src/main/res/layout/fragment_main_accettazione.xml +++ b/app/src/main/res/layout/fragment_main_accettazione.xml @@ -1,29 +1,31 @@ - - - + + + + - - - + android:layout_height="match_parent"> + + + android:adjustViewBounds="true" + android:src="@drawable/ic_playlist_add_check_24dp" /> + android:textSize="18sp" /> - + + app:srcCompat="@drawable/ic_check_black_24dp" + app:visibility="@{view.fabVisible}" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml index bd4973db..d23a78a2 100644 --- a/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml +++ b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml @@ -44,7 +44,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" - app:checked="@{selected}"/> + app:checked="@{selected}" /> - + @@ -17,12 +17,13 @@ android:padding="8dp"> - + tools:layout_editor_absoluteY="1dp" + app:checked="@{selected}" /> + android:adjustViewBounds="true" + android:src="@drawable/ic_playlist_add_check_24dp" /> + android:textSize="18sp" /> @@ -87,8 +87,10 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" + android:onClick="@{() -> view.dispatchOrders()}" android:tint="@android:color/white" - app:srcCompat="@drawable/ic_check_black_24dp" /> + app:srcCompat="@drawable/ic_check_black_24dp" + app:visibility="@{view.fabVisible}" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_prod_recupero_materiale.xml b/app/src/main/res/layout/fragment_prod_recupero_materiale.xml index 0795ad18..41d9485b 100644 --- a/app/src/main/res/layout/fragment_prod_recupero_materiale.xml +++ b/app/src/main/res/layout/fragment_prod_recupero_materiale.xml @@ -6,6 +6,10 @@ + + + + - - - - - - + - - - - + - - - - - + + - - - + - + - - + + android:paddingBottom="80dp" + android:scrollbarStyle="outsideOverlay" /> - + 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 b5d13b56..fc6272ce 100644 --- a/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml +++ b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml @@ -10,7 +10,7 @@ + type="it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreViewModel" /> diff --git a/app/src/main/res/layout/prod_recupero_materiale_list_header.xml b/app/src/main/res/layout/prod_recupero_materiale_list_header.xml index e03c8d45..b673fa1e 100644 --- a/app/src/main/res/layout/prod_recupero_materiale_list_header.xml +++ b/app/src/main/res/layout/prod_recupero_materiale_list_header.xml @@ -1,6 +1,6 @@ - + Ret of processing goods Agricoper customizations + Module Title diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index da9d562a..68c46eb4 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -7,8 +7,6 @@ android { defaultConfig { minSdkVersion 21 targetSdkVersion 30 - versionCode 1 - versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -21,8 +19,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } lintOptions { diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java index 7b8c48b9..b62ab935 100644 --- a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java +++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java @@ -11,7 +11,7 @@ public interface BarcodeReaderInterface { boolean isRightAdapter(); - void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException; + void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException, Exception; void deinit(); diff --git a/build.gradle b/build.gradle index b933f532..666d9518 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext { - kotlin_version = '1.5.0' + kotlin_version = '1.5.21' } repositories { @@ -10,7 +10,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.2' + classpath 'com.android.tools.build:gradle:7.0.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:perf-plugin:1.3.5' diff --git a/build_all.bat b/build_all.bat index 6c731ebe..94ac1622 100644 --- a/build_all.bat +++ b/build_all.bat @@ -1,8 +1,2 @@ call build_azienda.bat _base -call build_azienda.bat agricoper -call build_azienda.bat frudis -call build_azienda.bat gramm -call build_azienda.bat ime -call build_azienda.bat saporiveri_pv -call build_azienda.bat saporiveri call build_azienda.bat vgalimenti \ No newline at end of file diff --git a/dynamic__base/build.gradle b/dynamic__base/build.gradle index 7e0bfde6..2edefc68 100644 --- a/dynamic__base/build.gradle +++ b/dynamic__base/build.gradle @@ -1,18 +1,17 @@ -apply plugin: 'com.android.dynamic-feature' +plugins { + id 'com.android.dynamic-feature' +} android { compileSdkVersion 30 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } lintOptions { diff --git a/dynamic_agricoper/.gitignore b/dynamic_agricoper/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/dynamic_agricoper/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/dynamic_agricoper/build.gradle b/dynamic_agricoper/build.gradle deleted file mode 100644 index b6aa4283..00000000 --- a/dynamic_agricoper/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -apply plugin: 'com.android.dynamic-feature' - -android { - compileSdkVersion 30 - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - - } - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } - - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':app') - - implementation 'androidx.appcompat:appcompat:1.2.0' -} diff --git a/dynamic_agricoper/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java b/dynamic_agricoper/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java deleted file mode 100644 index 32e9a1db..00000000 --- a/dynamic_agricoper/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; - -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); - assertEquals("it.integry.wms.dynamic_customization", appContext.getPackageName()); - } -} \ No newline at end of file diff --git a/dynamic_agricoper/src/main/AndroidManifest.xml b/dynamic_agricoper/src/main/AndroidManifest.xml deleted file mode 100644 index b2892323..00000000 --- a/dynamic_agricoper/src/main/AndroidManifest.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java deleted file mode 100644 index ebaa46ce..00000000 --- a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ /dev/null @@ -1,29 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; -import android.util.Log; - -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.wms.dynamic_customization.extensions.CustomConfiguration; -import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita; -import it.integry.wms.dynamic_customization.extensions.OrdiniVendita; - -public class DynamicContext { - - public void init(Context context) { - Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda Agricoper"); - - try { - ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class); - } catch (Exception ex) { - UtilityExceptions.defaultException(context, ex); - } - - Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda Agricoper COMPLETATO"); - - } - -} diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java deleted file mode 100644 index e5d3efbf..00000000 --- a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; -import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; - -public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration { - - public CustomConfiguration() { - configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationAGRICOPER()); - } - -} diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java deleted file mode 100644 index 77adb537..00000000 --- a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; - -public class FiltroOrdiniVendita implements IFiltroOrdiniVendita { - - @Override - public boolean shoudShowCodMdepFilter() { - return false; - } - - @Override - public boolean shoudShowIdViaggioFilter() { - return false; - } - - @Override - public boolean shoudShowAgenteFilter() { - return false; - } -} diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationAGRICOPER.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationAGRICOPER.java deleted file mode 100644 index ab851f87..00000000 --- a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationAGRICOPER.java +++ /dev/null @@ -1,53 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; -import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment; -import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; - -public class MenuConfigurationAGRICOPER extends BaseMenuConfiguration { - - public MenuConfigurationAGRICOPER() { - - - - this - .addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.manufacture) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_produzione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce) - .setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdRientroMerceFragment::newInstance)) - - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.internal_handling) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_movimentazione_interna) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_versamento_merce) - .setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) - .setFragmentFactory(VersamentoMerceFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_rettifica_giacenze) - .setTitleText(it.integry.integrywmsnative.R.string.rettifica_giacenze_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_rettifica_giacenze) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_empty_box) - .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) - - - ); - - - - } - -} diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java deleted file mode 100644 index e5c916e6..00000000 --- a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ /dev/null @@ -1,23 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import java.util.List; - -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; - -public class OrdiniVendita implements IOrdiniVendita { - - - @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { -// UtilityToast.showToast("Avviato metodo in BaseFeature"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } -} diff --git a/dynamic_agricoper/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java b/dynamic_agricoper/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java deleted file mode 100644 index 1e97227b..00000000 --- a/dynamic_agricoper/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/dynamic_frudis/.gitignore b/dynamic_frudis/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/dynamic_frudis/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/dynamic_frudis/build.gradle b/dynamic_frudis/build.gradle deleted file mode 100644 index b6aa4283..00000000 --- a/dynamic_frudis/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -apply plugin: 'com.android.dynamic-feature' - -android { - compileSdkVersion 30 - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - - } - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } - - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':app') - - implementation 'androidx.appcompat:appcompat:1.2.0' -} diff --git a/dynamic_frudis/src/main/AndroidManifest.xml b/dynamic_frudis/src/main/AndroidManifest.xml deleted file mode 100644 index a4fad88a..00000000 --- a/dynamic_frudis/src/main/AndroidManifest.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java deleted file mode 100644 index 2a98ae74..00000000 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ /dev/null @@ -1,29 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; -import android.util.Log; - -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.wms.dynamic_customization.extensions.CustomConfiguration; -import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita; -import it.integry.wms.dynamic_customization.extensions.OrdiniVendita; - -public class DynamicContext { - - public void init(Context context) { - Log.d("DynamicContext", "Caricamento personalizzazioni per Frudis"); - - try { - ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class); - } catch (Exception ex) { - UtilityExceptions.defaultException(context, ex); - } - - Log.d("DynamicContext", "Caricamento personalizzazioni per Frudis COMPLETATO"); - - } - -} diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java deleted file mode 100644 index f01ceee4..00000000 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; -import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; - -public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration { - - public CustomConfiguration() { - configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationFRUDIS()); - } - -} diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java deleted file mode 100644 index 77adb537..00000000 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; - -public class FiltroOrdiniVendita implements IFiltroOrdiniVendita { - - @Override - public boolean shoudShowCodMdepFilter() { - return false; - } - - @Override - public boolean shoudShowIdViaggioFilter() { - return false; - } - - @Override - public boolean shoudShowAgenteFilter() { - return false; - } -} diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java deleted file mode 100644 index a9c9749d..00000000 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java +++ /dev/null @@ -1,105 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; -import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; -import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; -import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; -import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; - -public class MenuConfigurationFRUDIS extends BaseMenuConfiguration { - - public MenuConfigurationFRUDIS() { - - - this - .addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.checkout) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_spedizione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_spedizione) - .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_free_picking) - .setTitleText(it.integry.integrywmsnative.R.string.free_picking) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_resi_cliente) - .setTitleText(it.integry.integrywmsnative.R.string.fragment_ultime_consegne_cliente_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_latest_delivery_customer) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_latest_delivery) - .setFragmentFactory(UltimeConsegneClienteFragment::newInstance)) - - ) - .addGroup(new MenuGroup() - - .setGroupText(it.integry.integrywmsnative.R.string.manufacture) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_produzione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_ordine_produzione) - .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_produzione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_ordine_lavorazione) - .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_lavorazione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_lavorazione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_versamento_materiale) - .setTitleText(it.integry.integrywmsnative.R.string.prod_versamento_materiale_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_versamento_materiale) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdVersamentoMaterialeFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_recupero_materiale) - .setTitleText(it.integry.integrywmsnative.R.string.prod_recupero_materiale_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_recupero_materiale) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.internal_handling) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_movimentazione_interna) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_versamento_merce) - .setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) - .setFragmentFactory(VersamentoMerceFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_rettifica_giacenze) - .setTitleText(it.integry.integrywmsnative.R.string.rettifica_giacenze_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_rettifica_giacenze) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_empty_box) - .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) - - - ); - - - - } - -} diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java deleted file mode 100644 index 2f0ed82a..00000000 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ /dev/null @@ -1,23 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import java.util.List; - -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; - -public class OrdiniVendita implements IOrdiniVendita { - - - @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { -// UtilityToast.showToast("Avviato metodo in Frudis"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } -} diff --git a/dynamic_gramm/.gitignore b/dynamic_gramm/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/dynamic_gramm/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/dynamic_gramm/build.gradle b/dynamic_gramm/build.gradle deleted file mode 100644 index 677d1a53..00000000 --- a/dynamic_gramm/build.gradle +++ /dev/null @@ -1,30 +0,0 @@ -apply plugin: "com.android.dynamic-feature" - -android { - compileSdkVersion 30 - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - lintOptions { - abortOnError false - } - -} - -dependencies { - - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':app') -} \ No newline at end of file diff --git a/dynamic_gramm/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java b/dynamic_gramm/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java deleted file mode 100644 index 317862c8..00000000 --- a/dynamic_gramm/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() { - } -} \ No newline at end of file diff --git a/dynamic_gramm/src/main/AndroidManifest.xml b/dynamic_gramm/src/main/AndroidManifest.xml deleted file mode 100644 index 01ea2c08..00000000 --- a/dynamic_gramm/src/main/AndroidManifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java deleted file mode 100644 index f78de76e..00000000 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ /dev/null @@ -1,29 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; -import android.util.Log; - -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.wms.dynamic_customization.extensions.CustomConfiguration; -import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita; -import it.integry.wms.dynamic_customization.extensions.OrdiniVendita; - -public class DynamicContext { - - public void init(Context context) { - Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda GRAMM"); - - try { - ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class); - } catch (Exception ex) { - UtilityExceptions.defaultException(context, ex); - } - - Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda GRAMM COMPLETATO"); - - } - -} diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java deleted file mode 100644 index 5f92ec84..00000000 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; -import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; - -public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration { - - public CustomConfiguration() { - configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationGRAMM()); - } - -} diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java deleted file mode 100644 index 77adb537..00000000 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; - -public class FiltroOrdiniVendita implements IFiltroOrdiniVendita { - - @Override - public boolean shoudShowCodMdepFilter() { - return false; - } - - @Override - public boolean shoudShowIdViaggioFilter() { - return false; - } - - @Override - public boolean shoudShowAgenteFilter() { - return false; - } -} diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java deleted file mode 100644 index 672371ec..00000000 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java +++ /dev/null @@ -1,124 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; -import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; -import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment; -import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; -import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; -import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; - -public class MenuConfigurationGRAMM extends BaseMenuConfiguration { - - public MenuConfigurationGRAMM() { - - - - this - .addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.purchase) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_acquisto) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_accettazione) - .setTitleText(it.integry.integrywmsnative.R.string.accettazione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_accettazione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_download) - .setFragmentFactory(MainAccettazioneFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_resi_fornitore) - .setTitleText(it.integry.integrywmsnative.R.string.fragment_ultime_arrivi_fornitore_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_latest_delivery) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_latest_delivery) - .setFragmentFactory(UltimiArriviFornitoreFragment::newInstance)) - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.checkout) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_spedizione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_spedizione) - .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_free_picking) - .setTitleText(it.integry.integrywmsnative.R.string.free_picking) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_resi_cliente) - .setTitleText(it.integry.integrywmsnative.R.string.fragment_ultime_consegne_cliente_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_latest_delivery_customer) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_latest_delivery) - .setFragmentFactory(UltimeConsegneClienteFragment::newInstance)) - - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.manufacture) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_produzione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_ordine_produzione) - .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_produzione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_ordine_lavorazione) - .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_lavorazione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_lavorazione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_free_lav_picking) - .setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_posizionamento_da_ord) - .setTitleText(it.integry.integrywmsnative.R.string.prod_fabbisogno_linee_prod_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) - .setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance)) - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.internal_handling) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_movimentazione_interna) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_versamento_merce) - .setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) - .setFragmentFactory(VersamentoMerceFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_rettifica_giacenze) - .setTitleText(it.integry.integrywmsnative.R.string.rettifica_giacenze_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_rettifica_giacenze) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_empty_box) - .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) - - - ); - - - - } - -} diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java deleted file mode 100644 index e5c916e6..00000000 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ /dev/null @@ -1,23 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import java.util.List; - -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; - -public class OrdiniVendita implements IOrdiniVendita { - - - @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { -// UtilityToast.showToast("Avviato metodo in BaseFeature"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } -} diff --git a/dynamic_gramm/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java b/dynamic_gramm/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java deleted file mode 100644 index 1e97227b..00000000 --- a/dynamic_gramm/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/dynamic_ime/.gitignore b/dynamic_ime/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/dynamic_ime/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/dynamic_ime/build.gradle b/dynamic_ime/build.gradle deleted file mode 100644 index 2d8772cc..00000000 --- a/dynamic_ime/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -apply plugin: 'com.android.dynamic-feature' - -android { - compileSdkVersion 30 - - - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - - - } - compileOptions { - sourceCompatibility = '1.8' - targetCompatibility = '1.8' - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':app') - - implementation 'androidx.appcompat:appcompat:1.2.0' -} diff --git a/dynamic_ime/src/main/AndroidManifest.xml b/dynamic_ime/src/main/AndroidManifest.xml deleted file mode 100644 index 429d9080..00000000 --- a/dynamic_ime/src/main/AndroidManifest.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java deleted file mode 100644 index de37a9a3..00000000 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ /dev/null @@ -1,29 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; -import android.util.Log; - -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.wms.dynamic_customization.extensions.CustomConfiguration; -import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita; -import it.integry.wms.dynamic_customization.extensions.OrdiniVendita; - -public class DynamicContext { - - public void init(Context context) { - Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda IME"); - - try { - ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class); - } catch (Exception ex) { - UtilityExceptions.defaultException(context, ex); - } - - Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda IME COMPLETATO"); - - } - -} diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java deleted file mode 100644 index 8f1687ab..00000000 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; -import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; - -public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration { - - public CustomConfiguration() { - configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationIME()); - } - -} diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java deleted file mode 100644 index 77adb537..00000000 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; - -public class FiltroOrdiniVendita implements IFiltroOrdiniVendita { - - @Override - public boolean shoudShowCodMdepFilter() { - return false; - } - - @Override - public boolean shoudShowIdViaggioFilter() { - return false; - } - - @Override - public boolean shoudShowAgenteFilter() { - return false; - } -} diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java deleted file mode 100644 index 5dd95f1d..00000000 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java +++ /dev/null @@ -1,109 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; -import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; -import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; -import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; -import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; - -public class MenuConfigurationIME extends BaseMenuConfiguration { - - public MenuConfigurationIME() { - - - - this - .addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.purchase) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_acquisto) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_accettazione) - .setTitleText(it.integry.integrywmsnative.R.string.accettazione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_accettazione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_download) - .setFragmentFactory(MainAccettazioneFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_resi_fornitore) - .setTitleText(it.integry.integrywmsnative.R.string.fragment_ultime_arrivi_fornitore_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_latest_delivery) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_latest_delivery) - .setFragmentFactory(UltimiArriviFornitoreFragment::newInstance)) - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.checkout) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_spedizione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_spedizione) - .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_free_picking) - .setTitleText(it.integry.integrywmsnative.R.string.free_picking) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_resi_cliente) - .setTitleText(it.integry.integrywmsnative.R.string.fragment_ultime_consegne_cliente_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_latest_delivery_customer) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_latest_delivery) - .setFragmentFactory(UltimeConsegneClienteFragment::newInstance)) - - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.manufacture) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_produzione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_ordine_produzione) - .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_produzione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_ordine_lavorazione) - .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_lavorazione_title_fragment) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_lavorazione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null))) - ).addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.internal_handling) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_movimentazione_interna) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_versamento_merce) - .setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) - .setFragmentFactory(VersamentoMerceFragment::newInstance)) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_rettifica_giacenze) - .setTitleText(it.integry.integrywmsnative.R.string.rettifica_giacenze_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_rettifica_giacenze) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_empty_box) - .setFragmentFactory(RettificaGiacenzeFragment::newInstance)) - - - ); - - - - } - -} diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java deleted file mode 100644 index e5c916e6..00000000 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ /dev/null @@ -1,23 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import java.util.List; - -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; - -public class OrdiniVendita implements IOrdiniVendita { - - - @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { -// UtilityToast.showToast("Avviato metodo in BaseFeature"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } -} diff --git a/dynamic_saporiveri/.gitignore b/dynamic_saporiveri/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/dynamic_saporiveri/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/dynamic_saporiveri/build.gradle b/dynamic_saporiveri/build.gradle deleted file mode 100644 index de8c2567..00000000 --- a/dynamic_saporiveri/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -apply plugin: 'com.android.dynamic-feature' - -android { - compileSdkVersion 30 - - - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - - } - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } - - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':app') - - implementation 'androidx.appcompat:appcompat:1.2.0' -} diff --git a/dynamic_saporiveri/src/main/AndroidManifest.xml b/dynamic_saporiveri/src/main/AndroidManifest.xml deleted file mode 100644 index 7990c852..00000000 --- a/dynamic_saporiveri/src/main/AndroidManifest.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java deleted file mode 100644 index e373a3d5..00000000 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ /dev/null @@ -1,31 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; -import android.util.Log; - -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.wms.dynamic_customization.extensions.BarcodeCustomization; -import it.integry.wms.dynamic_customization.extensions.CustomConfiguration; -import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita; -import it.integry.wms.dynamic_customization.extensions.OrdiniVendita; - -public class DynamicContext { - - public void init(Context context) { - Log.d("DynamicContext", "Caricamento personalizzazioni per SaporiVeri"); - - try { - ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class); - ClassRouter.registerPath(ClassRouter.PATH.BARCODE_CUSTOMIZATION, BarcodeCustomization.class); - } catch (Exception ex) { - UtilityExceptions.defaultException(context, ex); - } - - Log.d("DynamicContext", "Caricamento personalizzazioni per SaporiVeri COMPLETATO"); - - } - -} diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/BarcodeCustomization.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/BarcodeCustomization.java deleted file mode 100644 index 48f469d8..00000000 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/BarcodeCustomization.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IBarcodeCustomization; - -public class BarcodeCustomization implements IBarcodeCustomization { - - @Override - public boolean shouldForceToEan13(String barcode) { - - return barcode != null && barcode.length() == 13; - - } - -} diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java deleted file mode 100644 index 5c3ab3cd..00000000 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java +++ /dev/null @@ -1,11 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; -import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; - -public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration { - - public CustomConfiguration() { - } - -} diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java deleted file mode 100644 index 77adb537..00000000 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; - -public class FiltroOrdiniVendita implements IFiltroOrdiniVendita { - - @Override - public boolean shoudShowCodMdepFilter() { - return false; - } - - @Override - public boolean shoudShowIdViaggioFilter() { - return false; - } - - @Override - public boolean shoudShowAgenteFilter() { - return false; - } -} diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java deleted file mode 100644 index e5c916e6..00000000 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ /dev/null @@ -1,23 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import java.util.List; - -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; - -public class OrdiniVendita implements IOrdiniVendita { - - - @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { -// UtilityToast.showToast("Avviato metodo in BaseFeature"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } -} diff --git a/dynamic_saporiveri_pv/.gitignore b/dynamic_saporiveri_pv/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/dynamic_saporiveri_pv/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/dynamic_saporiveri_pv/build.gradle b/dynamic_saporiveri_pv/build.gradle deleted file mode 100644 index de8c2567..00000000 --- a/dynamic_saporiveri_pv/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -apply plugin: 'com.android.dynamic-feature' - -android { - compileSdkVersion 30 - - - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" - - } - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } - - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(':app') - - implementation 'androidx.appcompat:appcompat:1.2.0' -} diff --git a/dynamic_saporiveri_pv/src/main/AndroidManifest.xml b/dynamic_saporiveri_pv/src/main/AndroidManifest.xml deleted file mode 100644 index ae16afaa..00000000 --- a/dynamic_saporiveri_pv/src/main/AndroidManifest.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java deleted file mode 100644 index ef4bfdf9..00000000 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java +++ /dev/null @@ -1,29 +0,0 @@ -package it.integry.wms.dynamic_customization; - -import android.content.Context; -import android.util.Log; - -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.wms.dynamic_customization.extensions.CustomConfiguration; -import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita; -import it.integry.wms.dynamic_customization.extensions.OrdiniVendita; - -public class DynamicContext { - - public void init(Context context) { - Log.d("DynamicContext", "Caricamento personalizzazioni per SaporiVeri(PV)"); - - try { - ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class); - ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class); - } catch (Exception ex) { - UtilityExceptions.defaultException(context, ex); - } - - Log.d("DynamicContext", "Caricamento personalizzazioni per SasporiVeri(PV) COMPLETATO"); - - } - -} diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java deleted file mode 100644 index 46389f8a..00000000 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java +++ /dev/null @@ -1,13 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; -import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; - -public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration { - - public CustomConfiguration() { - configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationSAPORIVERIPV()); - configurations.put(Keys.CUSTOM_DYNAMIC_VERSION_PATH,"_pv"); - } - -} diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java deleted file mode 100644 index 77adb537..00000000 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; - -public class FiltroOrdiniVendita implements IFiltroOrdiniVendita { - - @Override - public boolean shoudShowCodMdepFilter() { - return false; - } - - @Override - public boolean shoudShowIdViaggioFilter() { - return false; - } - - @Override - public boolean shoudShowAgenteFilter() { - return false; - } -} diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java deleted file mode 100644 index 7a7520ac..00000000 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java +++ /dev/null @@ -1,47 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; - -public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration { - - public MenuConfigurationSAPORIVERIPV() { - - this - .addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.punto_vendita) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto) - .setTitleText(it.integry.integrywmsnative.R.string.generate_orders) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) - .setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance)) -// .addItem(new MenuItem() -// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) -// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders) -// .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) -// .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) -// .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance())) - ) - .addGroup( - new MenuGroup() - .setGroupText(it.integry.integrywmsnative.R.string.checkout) - .setGroupId(it.integry.integrywmsnative.R.id.nav_group_spedizione) - - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_free_picking) - .setTitleText(it.integry.integrywmsnative.R.string.free_picking) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA))) - ); - - - } - -} diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java deleted file mode 100644 index 43e0e202..00000000 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ /dev/null @@ -1,24 +0,0 @@ -package it.integry.wms.dynamic_customization.extensions; - -import java.util.List; - -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; - -public class OrdiniVendita implements IOrdiniVendita { - - - @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { - //UtilityToast.showToast("Avviato metodo in SaporiVeriPv"); - - ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), - onComplete, - onFailed); - } - -} diff --git a/dynamic_vgalimenti/build.gradle b/dynamic_vgalimenti/build.gradle index f488f7dd..db6c8f05 100644 --- a/dynamic_vgalimenti/build.gradle +++ b/dynamic_vgalimenti/build.gradle @@ -1,17 +1,16 @@ -apply plugin: 'com.android.dynamic-feature' +plugins { + id 'com.android.dynamic-feature' +} android { compileSdkVersion 30 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 - versionCode 1 - versionName "1.0" } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } } diff --git a/gradle.properties b/gradle.properties index 9044160d..50928d0f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,8 +30,6 @@ org.gradle.daemon=true org.gradle.configureondemand=true # Enable parallel builds org.gradle.parallel=true -# Enable Build Cache -android.enableBuildCache=true # Enable simple gradle caching org.gradle.caching=true # Increase memory allotted to JVM diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 639eb689..abc62726 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-6.7.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index 9c62028d..d259f2d0 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -6,8 +6,6 @@ android { defaultConfig { minSdkVersion 21 targetSdkVersion 30 - versionCode 1 - versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -21,8 +19,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } lintOptions { @@ -31,8 +29,9 @@ android { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) +// implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) + implementation project(":honeywellsdk") implementation 'androidx.appcompat:appcompat:1.2.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' diff --git a/honeywellscannerlibrary/libs/DataCollection.aar b/honeywellscannerlibrary/libs/DataCollection.aar index a67373d8..d94df831 100644 Binary files a/honeywellscannerlibrary/libs/DataCollection.aar and b/honeywellscannerlibrary/libs/DataCollection.aar differ diff --git a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java index 61be9aea..02b7877f 100644 --- a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java +++ b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java @@ -1,16 +1,13 @@ package it.integry.honeywellscannerlibrary; +import android.content.Context; import android.os.Build; import android.view.KeyEvent; -import android.widget.Toast; - -import androidx.appcompat.app.AppCompatActivity; import com.honeywell.aidc.AidcManager; import com.honeywell.aidc.BarcodeFailureEvent; import com.honeywell.aidc.BarcodeReadEvent; import com.honeywell.aidc.BarcodeReader; -import com.honeywell.aidc.InvalidScannerNameException; import com.honeywell.aidc.ScannerUnavailableException; import com.honeywell.aidc.UnsupportedPropertyException; @@ -26,7 +23,7 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO; public class HoneyWellBarcodeReader implements BarcodeReaderInterface { - private final AppCompatActivity mContext; + private final Context mContext; private AidcManager manager; private BarcodeReader barcodeReader; @@ -35,7 +32,7 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { private static final String TAG = HoneyWellBarcodeReader.class.getName(); - public HoneyWellBarcodeReader(final AppCompatActivity context) { + public HoneyWellBarcodeReader(final Context context) { this.mContext = context; } @@ -64,11 +61,8 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { barcodeReader = manager.createBarcodeReader(); registerListenersInternal(); } - catch (InvalidScannerNameException e){ - Toast.makeText(mContext, "Invalid Scanner Name Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show(); - } catch (Exception e){ - Toast.makeText(mContext, "Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show(); +// throw new Exception("Invalid Scanner Name Exception: " + e.getMessage()); } @@ -114,7 +108,7 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { } - private void registerListenersInternal() { + private void registerListenersInternal() throws Exception { // register bar code event listener barcodeReader.addBarcodeListener(new BarcodeReader.BarcodeListener() { @Override @@ -134,7 +128,7 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { barcodeReader.setProperty(BarcodeReader.PROPERTY_TRIGGER_CONTROL_MODE, BarcodeReader.TRIGGER_CONTROL_MODE_CLIENT_CONTROL); } catch (UnsupportedPropertyException e) { - Toast.makeText(mContext, "Failed to apply properties", Toast.LENGTH_SHORT).show(); + throw new Exception("Failed to apply properties"); } Map properties = new HashMap<>(); @@ -169,7 +163,7 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { private void dispatchEvent(BarcodeReadEvent barcodeReadEvent) { - mContext.runOnUiThread(() -> { +// mContext.runOnUiThread(() -> { BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() .setByteValue(barcodeReadEvent.getBarcodeData().getBytes()) @@ -178,6 +172,6 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface { .setName(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId()).toString()); mOnScanSuccessfull.run(barcodeScanDTO); - }); +// }); } } diff --git a/honeywellsdk/DataCollection.aar b/honeywellsdk/DataCollection.aar new file mode 100644 index 00000000..d94df831 Binary files /dev/null and b/honeywellsdk/DataCollection.aar differ diff --git a/honeywellsdk/build.gradle b/honeywellsdk/build.gradle new file mode 100644 index 00000000..3de5a0c0 --- /dev/null +++ b/honeywellsdk/build.gradle @@ -0,0 +1,2 @@ +configurations.maybeCreate("default") +artifacts.add("default", file('DataCollection.aar')) \ No newline at end of file diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index a98eb2c5..cfae7fc2 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -6,8 +6,6 @@ android { defaultConfig { minSdkVersion 21 targetSdkVersion 30 - versionCode 1 - versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -21,8 +19,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } lintOptions { diff --git a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java index d1a69ab6..9c342d3e 100644 --- a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java +++ b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java @@ -1,12 +1,8 @@ package it.integry.keyobardemulatorscannerlibrary; -import android.view.KeyCharacterMap; +import android.content.Context; import android.view.KeyEvent; -import androidx.appcompat.app.AppCompatActivity; - -import java.util.regex.Pattern; - import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException; import it.integry.barcode_base_android_library.extension.RunnableArgs; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; @@ -22,7 +18,7 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface { private long mLastCharInsertTime = 0; - public KeyboardEmulatorBarcodeReader(AppCompatActivity context) { + public KeyboardEmulatorBarcodeReader(Context applicationContext) { } diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index 33ece24e..aacf18eb 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -6,8 +6,6 @@ android { defaultConfig { minSdkVersion 21 targetSdkVersion 30 - versionCode 1 - versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -20,8 +18,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } lintOptions { diff --git a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java index 51092164..241426c6 100644 --- a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java +++ b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java @@ -5,8 +5,6 @@ import android.content.Context; import android.content.Intent; import android.view.KeyEvent; -import androidx.appcompat.app.AppCompatActivity; - import java.nio.charset.StandardCharsets; import device.common.DecodeResult; @@ -20,7 +18,7 @@ import it.integry.barcode_base_android_library.model.BarcodeType; public class PointMobileBarcodeReader implements BarcodeReaderInterface { - private AppCompatActivity mContext; + private final Context mApplicationContext; private static ScanManager mScanManager; private static DecodeResult mDecodeResult; @@ -29,8 +27,8 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface { private static String TAG = PointMobileBarcodeReader.class.getName(); - public PointMobileBarcodeReader(AppCompatActivity context) { - this.mContext = context; + public PointMobileBarcodeReader(Context applicationContext) { + this.mApplicationContext = applicationContext; mScanManager = new ScanManager(); mDecodeResult = new DecodeResult(); diff --git a/settings.gradle b/settings.gradle index 10f357dd..cdf935ee 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -include ':app', ':dynamic_gramm', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellscannerlibrary', ':dynamic_ime', ':dynamic_frudis', ':dynamic_saporiveri_pv', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library', ':dynamic_saporiveri' -include ':dynamic_agricoper' +include ':app', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellsdk', ':honeywellscannerlibrary', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library' + diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index c1c9aa1b..828bde64 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -6,8 +6,6 @@ android { defaultConfig { minSdkVersion 21 targetSdkVersion 30 - versionCode 1 - versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -20,8 +18,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } lintOptions { diff --git a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java index 41ff0e30..2e4db5e5 100644 --- a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java +++ b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java @@ -7,8 +7,6 @@ import android.content.IntentFilter; import android.os.Build; import android.view.KeyEvent; -import androidx.appcompat.app.AppCompatActivity; - import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException; import it.integry.barcode_base_android_library.extension.RunnableArgs; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; @@ -16,7 +14,7 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO; public class ZebraBarcodeReader implements BarcodeReaderInterface { - private final AppCompatActivity mContext; + private final Context mContext; private static RunnableArgs mOnScanSuccessfull; private static RunnableArgs mOnScanFailed; @@ -24,7 +22,7 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface { private static final String TAG = ZebraBarcodeReader.class.getName(); private static final String INTENT_FILTER_STRING = "it.integry.scan_filter"; - public ZebraBarcodeReader(AppCompatActivity context) { + public ZebraBarcodeReader(Context context) { this.mContext = context; }