diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml index e9268407..bc0e1560 100644 --- a/.idea/appInsightsSettings.xml +++ b/.idea/appInsightsSettings.xml @@ -4,6 +4,20 @@ + + + + + + + + + + + + + + diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index f23a4811..eb6eecea 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,10 +4,10 @@ - + - + diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index e805548a..4cb74572 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4d5cdc41..46a2adbf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,13 +5,13 @@ if (!project.hasProperty("disable-performance-plugin")) { } apply plugin: 'com.google.firebase.crashlytics' -apply plugin: 'kotlin-android' +//apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 462 - def appVersionName = '1.42.02' + def appVersionCode = 466 + def appVersionName = '1.43.01' signingConfigs { release { @@ -34,10 +34,10 @@ android { defaultConfig { applicationId "it.integry.integrywmsnative" minSdkVersion 21 - targetSdkVersion 34 + targetSdkVersion 35 versionCode appVersionCode versionName appVersionName - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" +// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.release javaCompileOptions { @@ -80,30 +80,37 @@ android { } gradle.projectsEvaluated { - tasks.withType(JavaCompile.class) { - options.compilerArgs << "-Xmaxerrs" << "10000" + tasks.withType(JavaCompile.class).tap { + configureEach { + options.compilerArgs << "-Xmaxerrs" << "10000" + } } } lint { abortOnError false } namespace 'it.integry.integrywmsnative' - compileSdk 34 + compileSdk 35 +} + +configurations { + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' } dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.3' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4' implementation fileTree(include: ['*.jar'], dir: 'libs') - androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { - exclude group: 'com.android.support', module: 'support-annotations' - }) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +// androidTestImplementation('androidx.test.espresso:espresso-core:3.6.1', { +// exclude group: 'com.android.support', module: 'support-annotations' +// }) +// implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'com.github.lupaulus:logger:2.3.2' //Firebase // Import the Firebase BoM - implementation platform('com.google.firebase:firebase-bom:33.7.0') + implementation platform('com.google.firebase:firebase-bom:33.8.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-perf' @@ -115,7 +122,7 @@ dependencies { implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.3.2' + implementation 'androidx.recyclerview:recyclerview:1.4.0' implementation('androidx.preference:preference-ktx:1.2.1') { exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel' @@ -132,7 +139,7 @@ dependencies { implementation 'org.apache.commons:commons-text:1.9' //MVVM - def dagger2_version = '2.49' + def dagger2_version = '2.55' api "com.google.dagger:dagger:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f5a45a2e..3a265d22 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,8 +24,8 @@ android:allowBackup="true" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" - android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" + android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 00000000..4d5d53a1 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 214f6815..8f5d1df8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -144,6 +144,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule; +import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoComponent; +import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoModule; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiComponent; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiModule; @@ -221,7 +223,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc ArticoliInGiacenzaModule.class, DialogTracciamentoImballiModule.class, DialogAskVettoreModule.class, - DialogCreateNewArtModule.class + DialogCreateNewArtModule.class, + DialogSwitchUserDepoModule.class }) public interface MainApplicationComponent { @@ -370,6 +373,8 @@ public interface MainApplicationComponent { DialogCreateNewArtComponent.Factory dialogCreateNewArtComponent(); + DialogSwitchUserDepoComponent.Factory dialogSwitchUserDepoComponent(); + 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 a8d6cc90..3d6504ac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -82,8 +82,8 @@ public class MainApplicationModule { @Provides @Singleton - public SettingsManager provideSettingsManager(SystemRESTConsumer systemRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer) { - return new SettingsManager(mApplication, systemRESTConsumer, aziendaRESTConsumer, gestSetupRESTConsumer, posizioniRESTConsumer); + public SettingsManager provideSettingsManager(SystemRESTConsumer systemRESTConsumer, ImballiRESTConsumer imballiRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer) { + return new SettingsManager(mApplication, systemRESTConsumer, imballiRESTConsumer, aziendaRESTConsumer, gestSetupRESTConsumer, posizioniRESTConsumer); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java index e38e3df1..608dad3a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java @@ -103,12 +103,12 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener @Override public void onDBDataLoading(String item) { - mBinding.loadingInfoTextview.setText("Caricamento " + item); + runOnUiThread(() -> mBinding.loadingInfoTextview.setText("Caricamento " + item)); } @Override public void onMenuLoading() { - mBinding.loadingInfoTextview.setText("Caricamento menù"); + runOnUiThread(() -> mBinding.loadingInfoTextview.setText("Caricamento menù")); } @Override 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 index 4c4c7487..0fb287b9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBigDecimal.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBigDecimal.java @@ -9,7 +9,7 @@ import java.math.BigDecimal; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -public class BindableBigDecimal implements Observable { +public class BindableBigDecimal implements Observable { BigDecimal 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 0fdf8ca2..b33fedd6 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 @@ -105,7 +105,7 @@ public class Converters { view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher)); view.addTextChangedListener(watcher); } - String newValue = observableField.get(); + String newValue = observableField != null ? observableField.get() : ""; if (!view.getText().toString().equals(newValue)) { view.setText(newValue); } @@ -819,6 +819,45 @@ public class Converters { } + @BindingAdapter("visibilityWhenNotNull") + public static void bindViewVisibilityWhenNotNull(View view, ObservableField> bindableObject) { + if(bindableObject == null) return; + + if (view.getTag(R.id.bound_observable) != bindableObject) { + view.setTag(R.id.bound_observable, bindableObject); + } + + bindableObject.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + view.setVisibility(bindableObject.get() == null ? View.GONE : View.VISIBLE); + } + }); + + view.setVisibility(bindableObject.get() == null ? View.GONE : View.VISIBLE); + } + + + @BindingAdapter("visibilityWhenNull") + public static void bindViewVisibilityWhenNull(View view, ObservableField> bindableObject) { + + if (view.getTag(R.id.bound_observable_visibility) != bindableObject) { + view.setTag(R.id.bound_observable_visibility, bindableObject); + } + + view.setVisibility(bindableObject == null || bindableObject.get() == null ? View.VISIBLE : View.GONE); + + if(bindableObject == null) return; + + bindableObject.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + view.setVisibility(bindableObject.get() == null ? View.VISIBLE : View.GONE); + } + }); + } + + @BindingAdapter({"reverse_visibility"}) public static void bindViewReverseVisibility(View view, final BindableBoolean bindableBoolean) { if (view.getTag(R.id.bound_reverse_visibility) != bindableBoolean) { 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 5cf92c86..7dd9641e 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 @@ -53,16 +53,16 @@ public class BaseActivity extends AppCompatActivity { private void openProgress() { BarcodeManager.disable(); - //executorService.execute(() -> { +// executorService.execute(() -> { this.mCurrentProgress.show(getSupportFragmentManager()); - //}); +// }); } private void closeProgress() { BarcodeManager.enable(); - //executorService.execute(() -> { +// executorService.execute(() -> { mCurrentProgress.dismiss(); - //}); +// }); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/helper/GestioneToTextConverter.java b/app/src/main/java/it/integry/integrywmsnative/core/helper/GestioneToTextConverter.java new file mode 100644 index 00000000..c9325cf4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/helper/GestioneToTextConverter.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.core.helper; + +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; + +public final class GestioneToTextConverter { + + public static String convert(GestioneEnum gestioneEnum) { + return switch (gestioneEnum) { + case ACQUISTO -> "Acquisto"; + case PRODUZIONE -> "Produzione"; + case LAVORAZIONE -> "Lavorazione"; + case VENDITA -> "Vendita"; + }; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java index f54b84c9..36768b5f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.mapper; import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO; import it.integry.integrywmsnative.core.model.MtbInvenr; +import it.integry.integrywmsnative.core.settings.SettingsManager; public class InventarioRowMapper extends BaseMapper { @@ -32,6 +33,7 @@ public class InventarioRowMapper extends BaseMapper mtbTCol = new ObservableField<>(); private Boolean disablePrint; private String ragSocCliente; @@ -258,6 +260,16 @@ public class MtbColt extends EntityBase { public MtbColt setCodTcol(String codTcol) { this.codTcol = codTcol; + + if(!UtilityString.isNullOrEmpty(codTcol)) { + var fountMtbTcolObservable = SettingsManager.iDB().getInternalImballi().stream() + .filter(x -> x.getCodTcol().equalsIgnoreCase(codTcol)) + .findFirst() + .orElse(null); + this.setMtbTCol(fountMtbTcolObservable); + } else + this.setMtbTCol(null); + return this; } @@ -532,15 +544,19 @@ public class MtbColt extends EntityBase { return this; } - public MtbTCol getMtbTCol() { - return mtbTCol; + public ObservableMtbTcol getMtbTCol() { + return mtbTCol.get(); } - public MtbColt setMtbTCol(MtbTCol mtbTCol) { - this.mtbTCol = mtbTCol; + public MtbColt setMtbTCol(ObservableMtbTcol mtbTCol) { + this.mtbTCol.set(mtbTCol); return this; } + public ObservableField mtbTcolProperty() { + return mtbTCol; + } + public void generaFiltroOrdineFromDTO(List filtroOrdineDtos) { String xmlPrefix = "{\"whereCond\": \""; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java index 990a1d02..99824340 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java @@ -15,7 +15,7 @@ public class MtbTCol { private BigDecimal taraKg; private String descrizione; private String codMart; - private FlagUiUlEnum flagUIUL; + private FlagUiUlEnum flagUiUl; private String circuito; public String getCodTcol() { @@ -90,12 +90,12 @@ public class MtbTCol { return this; } - public FlagUiUlEnum getFlagUIUL() { - return flagUIUL; + public FlagUiUlEnum getFlagUiUl() { + return flagUiUl; } - public void setFlagUIUL(FlagUiUlEnum flagUIUL) { - this.flagUIUL = flagUIUL; + public void setFlagUiUl(FlagUiUlEnum flagUiUl) { + this.flagUiUl = flagUiUl; } public String getCircuito() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/mapper/MtbTcolMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/model/mapper/MtbTcolMapper.java new file mode 100644 index 00000000..3d5d2220 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/mapper/MtbTcolMapper.java @@ -0,0 +1,29 @@ +package it.integry.integrywmsnative.core.model.mapper; + +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; + +import java.util.List; +import java.util.stream.Collectors; + +import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; + +public class MtbTcolMapper { + + public static ObservableMtbTcol fromDTO(MtbTCol dto) { + ObservableMtbTcol mtbTcol = new ObservableMtbTcol(); + mtbTcol.updateFromDTO(dto); + return mtbTcol; + } + + public static ObservableList fromDTOList(List dto) { + ObservableList mtbTCols = new ObservableArrayList<>(); + + mtbTCols.addAll(dto.stream().map(MtbTcolMapper::fromDTO) + .collect(Collectors.toUnmodifiableList())); + + return mtbTCols; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/observable/ObservableMtbTcol.java b/app/src/main/java/it/integry/integrywmsnative/core/model/observable/ObservableMtbTcol.java new file mode 100644 index 00000000..a161df0b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/observable/ObservableMtbTcol.java @@ -0,0 +1,127 @@ +package it.integry.integrywmsnative.core.model.observable; + +import androidx.databinding.BaseObservable; +import androidx.databinding.Bindable; +import androidx.databinding.ObservableField; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.core.model.MtbTCol; + +public class ObservableMtbTcol extends BaseObservable { + + private final ObservableField codTcol = new ObservableField<>(); + private final ObservableField pesoKg = new ObservableField<>(); + private final ObservableField lunghezzaCm = new ObservableField<>(); + private final ObservableField larghezzaCm = new ObservableField<>(); + private final ObservableField altezzaCm = new ObservableField<>(); + private final ObservableField taraKg = new ObservableField<>(); + private final ObservableField descrizione = new ObservableField<>(); + private final ObservableField codMart = new ObservableField<>(); + private final ObservableField flagUIUL = new ObservableField<>(); + private final ObservableField circuito = new ObservableField<>(); + + @Bindable + public String getCodTcol() { + return codTcol.get(); + } + + @Bindable + public BigDecimal getPesoKg() { + return pesoKg.get(); + } + + @Bindable + public BigDecimal getLunghezzaCm() { + return lunghezzaCm.get(); + } + + @Bindable + public BigDecimal getLarghezzaCm() { + return larghezzaCm.get(); + } + + @Bindable + public BigDecimal getAltezzaCm() { + return altezzaCm.get(); + } + + @Bindable + public BigDecimal getTaraKg() { + return taraKg.get(); + } + + @Bindable + public String getDescrizione() { + return descrizione.get(); + } + + @Bindable + public String getCodMart() { + return codMart.get(); + } + + @Bindable + public MtbTCol.FlagUiUlEnum getFlagUIUL() { + return flagUIUL.get(); + } + + @Bindable + public String getCircuito() { + return circuito.get(); + } + + + public ObservableField codTcolProperty() { + return codTcol; + } + + public ObservableField pesoKgProperty() { + return pesoKg; + } + + public ObservableField lunghezzaCmProperty() { + return lunghezzaCm; + } + + public ObservableField larghezzaCmProperty() { + return larghezzaCm; + } + + public ObservableField altezzaCmProperty() { + return altezzaCm; + } + + public ObservableField taraKgProperty() { + return taraKg; + } + + public ObservableField descrizioneProperty() { + return descrizione; + } + + public ObservableField codMartProperty() { + return codMart; + } + + public ObservableField flagUIULProperty() { + return flagUIUL; + } + + public ObservableField circuitoProperty() { + return circuito; + } + + public void updateFromDTO(MtbTCol mtbTCol) { + codTcol.set(mtbTCol.getCodTcol()); + pesoKg.set(mtbTCol.getPesoKg()); + lunghezzaCm.set(mtbTCol.getLunghezzaCm()); + larghezzaCm.set(mtbTCol.getLarghezzaCm()); + altezzaCm.set(mtbTCol.getAltezzaCm()); + taraKg.set(mtbTCol.getTaraKg()); + descrizione.set(mtbTCol.getDescrizione()); + codMart.set(mtbTCol.getCodMart()); + flagUIUL.set(mtbTCol.getFlagUiUl()); + circuito.set(mtbTCol.getCircuito()); + } +} 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 ab10d9d8..3dcd2596 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 @@ -11,6 +11,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -31,6 +32,8 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.UpdateTipoULRequestDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -404,11 +407,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public void changePosizione(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs onFailed) { - - String codMdep = posizione.getCodMdep(); - String posizioneString = posizione.getPosizione(); - + public void spostaUL(MtbColt mtbColtToMove, String codMdep, String posizione, boolean createDocAutomatically, Runnable onComplete, RunnableArgs onFailed) { MtbColt mtbColtToMoveClone = (MtbColt) mtbColtToMove.clone(); for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { @@ -417,26 +416,66 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null); } + SpostaULRequestDTO spostaUlRequestDTO = new SpostaULRequestDTO() + .setCodMdep(codMdep) + .setPosizione(posizione) + .setMtbColtsToMove(Collections.singletonList(mtbColtToMoveClone)) + .setCreateDocAutomatically(createDocAutomatically); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService - .spostaULInPosizione(codMdep, - posizioneString, - mtbColtToMoveClone) - .enqueue(new Callback>() { + .spostaUL(spostaUlRequestDTO) + .enqueue(new Callback<>() { @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "changePosizione", mtbColts -> { + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "spostaUL", mtbColts -> { onComplete.run(); }, onFailed); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { if (onFailed != null) onFailed.run(new Exception(t)); } }); } + public void spostaUL(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs onFailed) { + + String codMdep = posizione.getCodMdep(); + String posizioneString = posizione.getPosizione(); + + spostaUL(mtbColtToMove, codMdep, posizioneString, true, onComplete, onFailed); + } + + public void updateTipoUL(MtbColt mtbColt, String codTcol, Runnable onComplete, RunnableArgs onFailed) { + + MtbColt mtbColtClone = (MtbColt) mtbColt.clone(); + mtbColtClone.setMtbColr(new ObservableArrayList<>()); + + UpdateTipoULRequestDTO updateTipoULRequest = new UpdateTipoULRequestDTO() + .setMtbColt(mtbColtClone) + .setCodTcol(codTcol); + + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + colliMagazzinoRESTConsumerService + .updateTipoUL(updateTipoULRequest) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "updateTipoUL", mtbColts -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + if (onFailed != null) onFailed.run(new Exception(t)); + } + }); + + } + public void updateDataFine(MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { MtbColt cloneMtbColt = (MtbColt) mtbColt.clone(); @@ -517,14 +556,14 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "spostaArtsTraUL", data -> { onComplete.run(); }, onFailed); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { if (onFailed != null) onFailed.run(new Exception(t)); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java index 1e13a7d0..5da77d5e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java @@ -7,6 +7,8 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.UpdateTipoULRequestDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -31,11 +33,14 @@ public interface ColliMagazzinoRESTConsumerService { @POST("creaRettificaCollo") Call> creaRettificaCollo(@Query("codMdep") String codMdep, @Body RettificaULDTO rettificaULDTO); - @POST("wms/spostaULInPosizione") - Call> spostaULInPosizione(@Query("codMdep") String codMdep, @Query("posizione") String posizione, @Body MtbColt mtbColtToMove); + @POST("wms/updateTipoUL") + Call> updateTipoUL(@Body UpdateTipoULRequestDTO requestDto); + + @POST("wms/spostaUL") + Call> spostaUL(@Body SpostaULRequestDTO requestDto); @POST("wms/spostaArtsTraUL") - Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); + Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); @POST("wms/assegnaLottoSuColloScarico") Call> assegnaLottoSuColloScarico(@Body MtbColt mtbColt); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java index 5c899ef4..9170d032 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.rest.consumers; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; @@ -7,6 +8,8 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.mapper.MtbTcolMapper; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.imballi.ImballoQuantityDTO; @@ -24,18 +27,20 @@ public class ImballiRESTConsumer extends _BaseRESTConsumer { } - public List retrieveTipiColloSyncronized(MtbTCol.FlagUiUlEnum tipoImballo) throws Exception { + public List retrieveImballiSyncronized(MtbTCol.FlagUiUlEnum tipoImballo) throws Exception { ImballiRESTConsumerService service = RESTBuilder.getService(ImballiRESTConsumerService.class); - Response>> response = service.retrieveTipiCollo(tipoImballo) + Response>> response = service.retrieveImballi(tipoImballo) .execute(); - return analyzeAnswer(response, "retrieveTipiCollo"); + List retrieveTipiCollo = analyzeAnswer(response, "retrieveTipiCollo"); + retrieveTipiCollo = retrieveTipiCollo == null ? new ArrayList<>() : retrieveTipiCollo; + return MtbTcolMapper.fromDTOList(retrieveTipiCollo); } - public void retrieveTipiCollo(MtbTCol.FlagUiUlEnum tipoImballo, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void retrieveImballi(MtbTCol.FlagUiUlEnum tipoImballo, RunnableArgs> onComplete, RunnableArgs onFailed) { executorService.execute(() -> { try { - var response = retrieveTipiColloSyncronized(tipoImballo); + var response = retrieveImballiSyncronized(tipoImballo); if (onComplete != null) onComplete.run(response); } catch (Exception ex) { if (onFailed != null) onFailed.run(ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumerService.java index 5b88224b..294bb66b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumerService.java @@ -16,7 +16,7 @@ public interface ImballiRESTConsumerService { @GET("wms/imballi/retrieve/{tipo}") - Call>> retrieveTipiCollo(@Path("tipo") MtbTCol.FlagUiUlEnum tipo); + Call>> retrieveImballi(@Path("tipo") MtbTCol.FlagUiUlEnum tipo); @POST("wms/imballi/registraCarico") Call> registraCarico(@Body RegistraCaricoImballiRequestDTO registraCaricoImballiRequest); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaULRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaULRequestDTO.java new file mode 100644 index 00000000..e25ef0db --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaULRequestDTO.java @@ -0,0 +1,61 @@ +package it.integry.integrywmsnative.core.rest.model; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class SpostaULRequestDTO { + + private String codMdep; + private String posizione; + private String annotazioni; + private boolean createDocAutomatically = true; + private List mtbColtsToMove = new ArrayList<>(); + + + public String getCodMdep() { + return codMdep; + } + + public SpostaULRequestDTO setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getPosizione() { + return posizione; + } + + public SpostaULRequestDTO setPosizione(String posizione) { + this.posizione = posizione; + return this; + } + + public String getAnnotazioni() { + return annotazioni; + } + + public SpostaULRequestDTO setAnnotazioni(String annotazioni) { + this.annotazioni = annotazioni; + return this; + } + + public boolean isCreateDocAutomatically() { + return createDocAutomatically; + } + + public SpostaULRequestDTO setCreateDocAutomatically(boolean createDocAutomatically) { + this.createDocAutomatically = createDocAutomatically; + return this; + } + + public List getMtbColtsToMove() { + return mtbColtsToMove; + } + + public SpostaULRequestDTO setMtbColtsToMove(List mtbColtsToMove) { + this.mtbColtsToMove = mtbColtsToMove; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/UpdateTipoULRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/UpdateTipoULRequestDTO.java new file mode 100644 index 00000000..066476af --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/UpdateTipoULRequestDTO.java @@ -0,0 +1,27 @@ +package it.integry.integrywmsnative.core.rest.model; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class UpdateTipoULRequestDTO { + + private MtbColt mtbColt; + private String codTcol; + + public MtbColt getMtbColt() { + return mtbColt; + } + + public UpdateTipoULRequestDTO setMtbColt(MtbColt mtbColt) { + this.mtbColt = mtbColt; + return this; + } + + public String getCodTcol() { + return codTcol; + } + + public UpdateTipoULRequestDTO setCodTcol(String codTcol) { + this.codTcol = codTcol; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index ba237dd3..3c804c7c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -1,11 +1,15 @@ package it.integry.integrywmsnative.core.settings; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; + import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; public class DBSettingsModel { @@ -16,6 +20,7 @@ public class DBSettingsModel { private Azienda datiAzienda = null; private List internalCodAnags = null; + private ObservableList internalImballi = new ObservableArrayList<>(); private boolean enableCheckPartitaMagCheckPickingV; private boolean flagMultiClienteOrdV; @@ -85,6 +90,7 @@ public class DBSettingsModel { private String docInterniRequestNumDoc; private boolean flagEnableArtCreation; private List allowedCodMgrpForArtCreation; + private boolean flagAccettazioneGroupListForn = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -131,6 +137,15 @@ public class DBSettingsModel { return this; } + public ObservableList getInternalImballi() { + return internalImballi; + } + + public DBSettingsModel setInternalImballi(ObservableList internalImballi) { + this.internalImballi = internalImballi; + return this; + } + public List getAvailableCodMdep() { return availableCodMdep; } @@ -733,4 +748,12 @@ public class DBSettingsModel { this.flagPositionChangeRequest = flagPositionChangeRequest; return this; } + + public boolean isFlagAccettazioneGroupListForn() { + return flagAccettazioneGroupListForn; + } + + public void setFlagAccettazioneGroupListForn(boolean flagAccettazioneGroupListForn) { + this.flagAccettazioneGroupListForn = flagAccettazioneGroupListForn; + } } 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 5b59af13..f5671261 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 @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.settings; import android.content.Context; +import androidx.databinding.ObservableArrayList; + import com.google.firebase.perf.metrics.Trace; import com.google.gson.reflect.TypeToken; @@ -16,9 +18,12 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; @@ -38,17 +43,20 @@ public class SettingsManager { private static Context mContext; private static SystemRESTConsumer mSystemRESTConsumer; + private static ImballiRESTConsumer mImballiRESTConsumer; private static AziendaRESTConsumer mAziendaRESTConsumer; private static GestSetupRESTConsumer mGestSetupRESTConsumer; private static PosizioniRESTConsumer mPosizioniRESTConsumer; public SettingsManager(Context context, SystemRESTConsumer systemRESTConsumer, + ImballiRESTConsumer imballiRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer) { mContext = context; mSystemRESTConsumer = systemRESTConsumer; + mImballiRESTConsumer = imballiRESTConsumer; mAziendaRESTConsumer = aziendaRESTConsumer; mGestSetupRESTConsumer = gestSetupRESTConsumer; mPosizioniRESTConsumer = posizioniRESTConsumer; @@ -124,12 +132,31 @@ public class SettingsManager { loadGestSetupValues(() -> { onProgress.run("dati azienda"); - loadDatiAzienda(tmpOnComplete, tmpOnFailed); + loadDatiAzienda(() -> { + + loadTipiCollo(tmpOnComplete, tmpOnFailed); + + }, tmpOnFailed); }, tmpOnFailed); }, tmpOnFailed); }, tmpOnFailed); } + private static void loadTipiCollo(Runnable onComplete, RunnableArgs onFailed) { + mImballiRESTConsumer.retrieveImballi(MtbTCol.FlagUiUlEnum.UL, tipiColloUl -> { + mImballiRESTConsumer.retrieveImballi(MtbTCol.FlagUiUlEnum.UI, tipiColloUi -> { + + var imballiList = new ObservableArrayList(); + imballiList.addAll(tipiColloUi); + imballiList.addAll(tipiColloUl); + + SettingsManager.iDB().setInternalImballi(imballiList); + onComplete.run(); + }, onFailed); + }, onFailed); + + } + private static void loadDatiAzienda(Runnable onComplete, RunnableArgs onFailed) { mAziendaRESTConsumer.retrieveAzienda(datiAzienda -> { @@ -243,6 +270,11 @@ public class SettingsManager { .setSection("ACCETTAZIONE") .setKeySection("FLAG_AUTO_OPEN_NEW_UL") .setSetter(dbSettingsModelIstance::setFlagCanAutoOpenNewULAccettazione)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("ACCETTAZIONE") + .setKeySection("FLAG_GROUP_LIST_FORN") + .setSetter(dbSettingsModelIstance::setFlagAccettazioneGroupListForn)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE") diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java index ecb7bda6..187a9895 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java @@ -25,6 +25,7 @@ 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.ITitledFragment; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBollaBinding; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBollaAccettazioneDTO; @@ -166,7 +167,7 @@ public class MainAccettazioneBollaElencoFragment extends BaseFragment implements this.mBolleInevaseMutableData.clear(); - if(tmpList != null) + if (tmpList != null) this.mBolleInevaseMutableData.addAll(convertDataModelToListModel(tmpList)); } @@ -182,33 +183,44 @@ public class MainAccettazioneBollaElencoFragment extends BaseFragment implements } - - - private List convertDataModelToListModel(List dataList) { - if(dataList == null) - return null; + boolean group = !SettingsManager.iDB().isFlagAccettazioneGroupListForn(); + if (dataList == null) return null; - final Comparator comparer = Comparator.comparing(TestataBollaAccettazioneDTO::getListino) - .thenComparing(TestataBollaAccettazioneDTO::getRagSoc) - .thenComparing(TestataBollaAccettazioneDTO::getNumDoc); + Stream stream = Stream.of(dataList); - return Stream.of(dataList) - .sorted(comparer) - .map(x -> { - MainAccettazioneBolleElencoListModel listModel = new MainAccettazioneBolleElencoListModel(); + if (group) { + final Comparator comparer = Comparator.comparing(TestataBollaAccettazioneDTO::getListino) + .thenComparing(TestataBollaAccettazioneDTO::getRagSoc) + .thenComparing(TestataBollaAccettazioneDTO::getNumDoc); + stream = stream.sorted(comparer); + } else { + stream = stream.sortBy(x -> x.getRagSoc() + UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)); + } - listModel.setOriginalModel(x); - listModel.setGroupTitle(x.getListino() + " - " + x.getRagSoc()); - listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumDoc(), UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + return stream.map(x -> { + MainAccettazioneBolleElencoListModel listModel = new MainAccettazioneBolleElencoListModel(); + listModel.setOriginalModel(x); - listModel.setSubDescription(x.getDescrizioneListino()); - listModel.setRightDescription(x.getCodAnag()); - listModel.setRightSubDescription(x.getCodJcom()); + if (group) + listModel.setGroupTitle(x.getListino() + " - " + x.getRagSoc()); + else + listModel.setGroupTitle(x.getRagSoc()); - return listModel; - }) - .toList(); + listModel.setDescription(String.format(getString(R.string.ord_acq_testata), + x.getNumDoc(), + UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + if (group) + listModel.setSubDescription(x.getDescrizioneListino()); + else + listModel.setSubDescription(x.getListino() + " - " + x.getDescrizioneListino()); + + listModel.setRightDescription(x.getCodAnag()); + listModel.setRightSubDescription(x.getCodJcom()); + + return listModel; + }).toList(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java index 31572319..10d5a499 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java @@ -41,8 +41,8 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; 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.MtbTCol; import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; @@ -89,9 +89,9 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac private ActivityAccettazioneBollaPickingBinding mBindings; private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; - + private final AccettazioneBollaPickingFilterViewModel mAppliedFilterViewModel = new AccettazioneBollaPickingFilterViewModel(); - + private final ObservableArrayList mAccettazioneMutableData = new ObservableArrayList<>(); public BindableBoolean noItemsToPick = new BindableBoolean(false); @@ -231,7 +231,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac refreshList(); } }; - + mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(onPredicateChanged); List filterList = Stream.of(AccettazioneBollaPickingBindings.AVAILABLE_FILTERS.entrySet()).map(Map.Entry::getValue).sortBy(FilterChipDTO::getPosizione).toList(); @@ -327,7 +327,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac mAppliedFilterViewModel.applyAllTests(); tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue(); } else { - tmpList = mViewModel.getPickingList().getValue(); + tmpList = mViewModel.getPickingList().getValue(); } var list = convertDataModelToListModel(tmpList); @@ -546,6 +546,16 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac this.mViewModel.deleteRow(mtbColr); } + @Override + public void onRequestChangeMtbTcol(MtbColt mtbColt) { + DialogInfoAggiuntiveLUView.newInstance(mtbColt, false, true, (note, mtbTcol) -> { + onLoadingStarted(); + mViewModel.updateTipoUl(mtbTcol, this::onLoadingEnded); + }, () -> { + }) + .show(getSupportFragmentManager(), "dialog-note-aggiuntive"); + } + @Override public void onBottomSheetLUClose() { this.mViewModel.closeLU(); @@ -560,7 +570,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac } @Override - public void onInfoAggiuntiveRequest(RunnableArgss onComplete) { + public void onInfoAggiuntiveRequest(RunnableArgss onComplete) { DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded) .show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java index 6e8b80eb..aec586ae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java @@ -30,9 +30,9 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL 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.MtbTCol; import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -409,7 +409,7 @@ public class AccettazioneBollaPickingViewModel { }); } - private void manageInfoAggiuntiveRequest(RunnableArgss onComplete) { + private void manageInfoAggiuntiveRequest(RunnableArgss onComplete) { if (!SettingsManager.iDB().isFlagAccettazioneBollaAskTipoCollo()) { onComplete.run(null, null); return; @@ -544,10 +544,6 @@ public class AccettazioneBollaPickingViewModel { initialQtaCnf = qtaCnfDaPrelevare; initialQtaTot = qtaColDaPrelevare; - } else if (totalQtaDoc != null) { - initialNumCnf = totalNumCnfDoc; - initialQtaCnf = qtaCnfDoc; - initialQtaTot = totalQtaDoc; } else { initialNumCnf = BigDecimal.ONE; initialQtaCnf = mtbAart.getQtaCnf(); @@ -892,6 +888,13 @@ public class AccettazioneBollaPickingViewModel { this.mPickingList.postValue(this.mPickingList.getValue()); } + public void updateTipoUl(ObservableMtbTcol newTipoUL, Runnable onComplete) { + mColliMagazzinoRESTConsumer.updateTipoUL(mCurrentMtbColt, newTipoUL.getCodTcol(), () -> { + mCurrentMtbColt.setCodTcol(newTipoUL.getCodTcol()); + onComplete.run(); + }, this::sendError); + } + private void addHistoryItem(@NonNull MtbColr mtbColr) { Optional optional = Stream.of(this.mHistoryUsedAarts) .filter(x -> (x.getCodMart() != null && x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) || @@ -939,7 +942,7 @@ public class AccettazioneBollaPickingViewModel { if (this.mListener != null) this.mListener.onVersamentoAutomaticoULRequest(onComplete); } - private void sendOnInfoAggiuntiveRequest(RunnableArgss onComplete) { + private void sendOnInfoAggiuntiveRequest(RunnableArgss onComplete) { if (this.mListener != null) this.mListener.onInfoAggiuntiveRequest(onComplete); } @@ -1041,7 +1044,7 @@ public class AccettazioneBollaPickingViewModel { void onVersamentoAutomaticoULRequest(RunnableArgs onComplete); - void onInfoAggiuntiveRequest(RunnableArgss onComplete); + void onInfoAggiuntiveRequest(RunnableArgss onComplete); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java index bf8f8a83..3b81d9c4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java @@ -2,10 +2,12 @@ package it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui; import android.content.Context; import android.graphics.Color; +import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.ObservableArrayList; @@ -15,7 +17,11 @@ import androidx.recyclerview.widget.RecyclerView; import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; @@ -62,10 +68,29 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd this.mShowSecondaryUntMis = showSecondaryUntMis; mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @RequiresApi(api = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) @Override public void onChanged(ObservableList sender) { + List listaOrdinata = new ArrayList<>(); + if (!sender.isEmpty()) { + listaOrdinata = new ArrayList<>(sender); + + Collections.sort(listaOrdinata, (a, b) -> { + + boolean condA = a.getQtaEvasa().subtract(a.getQtaTot()).floatValue() == 0; + boolean condB = b.getQtaEvasa().subtract(b.getQtaTot()).floatValue() == 0; + + if (condA && !condB) { + return -1; + } else if (!condA && condB) { + return 1; + } + return 0; + }); + } + mDataset.clear(); - mDataset.addAll(sender); + mDataset.addAll(listaOrdinata); notifyDataSetChanged(); notifyDataChanged(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java index 78f42a9e..99ef94a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java @@ -44,8 +44,8 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; 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.MtbTCol; import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; @@ -714,6 +714,16 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A this.mViewModel.deleteRow(mtbColr); } + @Override + public void onRequestChangeMtbTcol(MtbColt mtbColt) { + DialogInfoAggiuntiveLUView.newInstance(mtbColt, false, true, (note, mtbTcol) -> { + onLoadingStarted(); + mViewModel.updateTipoUl(mtbTcol, this::onLoadingEnded); + }, () -> { + }) + .show(getSupportFragmentManager(), "dialog-note-aggiuntive"); + } + @Override public void onBottomSheetLUClose() { this.mViewModel.closeLU(); @@ -725,7 +735,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A } @Override - public void onInfoAggiuntiveRequest(RunnableArgss onComplete) { + public void onInfoAggiuntiveRequest(RunnableArgss onComplete) { DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded).show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index 68bff77b..657299dc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -32,9 +32,9 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL 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.MtbTCol; import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -878,6 +878,13 @@ public class AccettazioneOrdiniPickingViewModel { this.mPickingList.postValue(this.mPickingList.getValue()); } + public void updateTipoUl(ObservableMtbTcol newTipoUL, Runnable onComplete) { + mColliMagazzinoRESTConsumer.updateTipoUL(mCurrentMtbColt, newTipoUL.getCodTcol(), () -> { + mCurrentMtbColt.setCodTcol(newTipoUL.getCodTcol()); + onComplete.run(); + }, this::sendError); + } + private void addHistoryItem(@NonNull MtbColr mtbColr) { Optional optional = Stream.of(this.mHistoryUsedAarts) .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) @@ -931,7 +938,7 @@ public class AccettazioneOrdiniPickingViewModel { if (this.mListener != null) this.mListener.onVersamentoAutomaticoULRequest(onComplete); } - private void sendOnInfoAggiuntiveRequest(RunnableArgss onComplete) { + private void sendOnInfoAggiuntiveRequest(RunnableArgss onComplete) { if (this.mListener != null) this.mListener.onInfoAggiuntiveRequest(onComplete); } @@ -1031,7 +1038,7 @@ public class AccettazioneOrdiniPickingViewModel { void onVersamentoAutomaticoULRequest(RunnableArgs onComplete); - void onInfoAggiuntiveRequest(RunnableArgss onComplete); + void onInfoAggiuntiveRequest(RunnableArgss onComplete); void onError(Exception ex); 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 0b3909e3..22835d2e 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 @@ -88,6 +88,7 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi .create() .inject(this); + mViewModel.setListener(this); mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); 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 2686d2b0..1873e18b 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 @@ -41,6 +41,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; @@ -51,6 +52,7 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.databinding.FragmentMainBinding; import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoView; /** * A simple {@link Fragment} subclass. @@ -153,6 +155,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab initSessionData(); initRecuperoCollo(); + + mBindings.switchDepoButton.setVisibility(SettingsManager.iDB().getAvailableCodMdep().size() > 1 ? View.VISIBLE : View.GONE); } private void initSessionData() { @@ -278,8 +282,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab private void initGestMenu() { int menuSpanCount = 2; - if (UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4; - else if (UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3; + if (UtilityDimension.getDisplayInchs(this.requireActivity()) > 8) menuSpanCount = 4; + else if (UtilityDimension.getDisplayInchs(this.requireActivity()) > 6.5) menuSpanCount = 3; MenuConfiguration baseMenuConfiguration = new MenuConfiguration(); List menuGroups = baseMenuConfiguration.getGroups(); @@ -319,7 +323,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab } catch (Exception exception) { - exception.printStackTrace(); + UtilityExceptions.defaultException(requireActivity(), exception); } } @@ -421,4 +425,14 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab colorFadeTitleTextColor.setDuration(animationTimeMillis); colorFadeTitleTextColor.start(); } + + public void changeUserDepo() { + DialogSwitchUserDepoView.newInstance(SettingsManager.iDB().getAvailableCodMdep(), this::onUserDepoChanged) + .show(getParentFragmentManager(), "switch-user-depo"); + } + + private void onUserDepoChanged(AvailableCodMdepsDTO newDepo) { + SettingsManager.i().getUserSession().setDepo(newDepo); + initSessionData(); + } } 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 04534562..abcfb925 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 @@ -9,7 +9,6 @@ import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.res.ResourcesCompat; -import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; @@ -60,7 +59,6 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutom import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterClienteLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterDepositoLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView; -import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaeseLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView; @@ -74,6 +72,7 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRo import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; import it.integry.integrywmsnative.ui.filter_chips.FilterChipView; +import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, OrdiniUscitaElencoViewModel.Listener { @@ -150,7 +149,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main_ordini_uscita, container, false); + mBindings = FragmentMainOrdiniUscitaBinding.inflate(inflater, container, false); MainApplication.appComponent .prodOrdineLavorazioneElencoComponent() 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 d41252ba..186e2915 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 @@ -33,7 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; 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.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -50,11 +50,12 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; -import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView; 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.yes_no.DialogYesNoView; public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener { @@ -269,13 +270,23 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag this.mViewmodel.deleteRow(mtbColr); } + @Override + public void onRequestChangeMtbTcol(MtbColt mtbColt) { + DialogInfoAggiuntiveLUView.newInstance(mtbColt, false, true, (note, mtbTcol) -> { + onLoadingStarted(); + mViewmodel.updateTipoUl(mtbTcol, this::onLoadingEnded); + }, () -> { + }) + .show(getSupportFragmentManager(), "dialog-note-aggiuntive"); + } + @Override public void onBottomSheetLUClose() { this.mViewmodel.closeLU(true); } @Override - public void onInfoAggiuntiveRequired(RunnableArgss onComplete) { + public void onInfoAggiuntiveRequired(RunnableArgss onComplete) { DialogInfoAggiuntiveLUView.newInstance(onComplete, this::onLoadingEnded) .show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName()); } @@ -392,18 +403,22 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onLUPrintRequest(RunnableArgs onComplete) { - DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); + DialogYesNoView.newInstance(getString(R.string.action_print), + String.format(getString(R.string.message_print_packing_list), "Packing List"), + result -> { + onComplete.run(result == DialogConsts.Results.YES); + }) + .show(getSupportFragmentManager(), "dialog-print"); } @Override public void onLUPrintError(Exception ex, Runnable onComplete) { this.onLoadingEnded(); - DialogSimpleMessageView.makeErrorDialog( - new SpannableString(ex.getMessage()), - null, - null, - R.string.button_ignore_print, - onComplete) + DialogSimpleMessageView.makeErrorDialog(new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete) .show(getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index e1fa61b4..c3675d75 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -28,8 +28,8 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -716,6 +716,13 @@ public class PickingResiViewModel { }); } + public void updateTipoUl(ObservableMtbTcol newTipoUL, Runnable onComplete) { + mColliMagazzinoRESTConsumer.updateTipoUL(mCurrentMtbColt, newTipoUL.getCodTcol(), () -> { + mCurrentMtbColt.setCodTcol(newTipoUL.getCodTcol()); + onComplete.run(); + }, this::sendError); + } + public void resetMatchedRows() { for (WithdrawableDtbDocr pickingObjectDTO : this.mPickingList.getValue()) { pickingObjectDTO @@ -732,7 +739,7 @@ public class PickingResiViewModel { return mPickingList; } - private void sendOnInfoAggiuntiveRequired(RunnableArgss onComplete) { + private void sendOnInfoAggiuntiveRequired(RunnableArgss onComplete) { if (this.mListener != null) this.mListener.onInfoAggiuntiveRequired(onComplete); } @@ -808,9 +815,10 @@ public class PickingResiViewModel { return this; } + public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { - void onInfoAggiuntiveRequired(RunnableArgss onComplete); + void onInfoAggiuntiveRequired(RunnableArgss onComplete); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java index 950d8dec..47745eea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java @@ -3,7 +3,7 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail; import java.math.BigDecimal; import it.integry.integrywmsnative.core.model.JtbFasi; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; public class ProdRientroMerceOrderDetailPickedQuantityDTO { @@ -14,7 +14,7 @@ public class ProdRientroMerceOrderDetailPickedQuantityDTO { private BigDecimal taraCol; private BigDecimal pesoLordo; - private MtbTCol mtbTCol; + private ObservableMtbTcol mtbTCol; private JtbFasi jtbFasi; public BigDecimal getNumCnf() { @@ -71,11 +71,11 @@ public class ProdRientroMerceOrderDetailPickedQuantityDTO { return this; } - public MtbTCol getMtbTCol() { + public ObservableMtbTcol getMtbTCol() { return mtbTCol; } - public ProdRientroMerceOrderDetailPickedQuantityDTO setMtbTCol(MtbTCol mtbTCol) { + public ProdRientroMerceOrderDetailPickedQuantityDTO setMtbTCol(ObservableMtbTcol mtbTCol) { this.mtbTCol = mtbTCol; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java index f08c9147..e30ca795 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java @@ -143,7 +143,7 @@ public class ProdRiposizionamentoDaProdViewModel { this.sendError(new ScannedPositionNotExistException()); } else { if (mtbColt != null) { - mColliMagazzinoRESTConsumer.changePosizione(mtbColt, mtbDepoPosizione, () -> { + mColliMagazzinoRESTConsumer.spostaUL(mtbColt, mtbDepoPosizione, () -> { List mvwSitArtUdcDetInventarioList = mMvwSitArtUdcDetInventarioLiveData.getValue(); if (mvwSitArtUdcDetInventarioList != null) { 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 2ca1a6a5..c799dec5 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 @@ -44,7 +44,7 @@ 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.MtbPartitaMag; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; @@ -70,7 +70,6 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView; -import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -81,7 +80,6 @@ import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAgg import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; 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.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView; @@ -818,7 +816,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onLUPrintRequest(RunnableArgs onComplete) { - DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); + DialogYesNoView.newInstance(getString(R.string.action_print), + String.format(getString(R.string.message_print_packing_list), "Packing List"), + result -> { + onComplete.run(result == DialogConsts.Results.YES); + }) + .show(getSupportFragmentManager(), "dialog-print"); } @Override @@ -1046,6 +1049,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); } + @Override + public void onRequestChangeMtbTcol(MtbColt mtbColt) { + DialogInfoAggiuntiveLUView.newInstance(mtbColt, false, true, (note, mtbTcol) -> { + onLoadingStarted(); + mViewmodel.updateTipoUl(mtbTcol, this::onLoadingEnded); + }, () -> { + }) + .show(getSupportFragmentManager(), "dialog-note-aggiuntive"); + } + @Override public void onBottomSheetLUClose() { this.mViewmodel.requestCloseLU(true); @@ -1078,8 +1091,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo } @Override - public void onInfoAggiuntiveRequired(MtbColt mtbColt, RunnableArgss onComplete) { - DialogInfoAggiuntiveLUView.newInstance(mtbColt, onComplete, this::onLoadingEnded) + public void onInfoAggiuntiveRequired(MtbColt mtbColt, RunnableArgss onComplete) { + DialogInfoAggiuntiveLUView.newInstance(mtbColt, true, true, onComplete, this::onLoadingEnded) .show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName()); } 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 8a4b558b..f6ebc061 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 @@ -43,10 +43,10 @@ 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.MtbPartitaMag; -import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.VtbVett; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -855,7 +855,7 @@ public class SpedizioneViewModel { private void loadMatchedRows(List matchedRows) { - if (matchedRows == null || matchedRows.size() == 0) { + if (matchedRows == null || matchedRows.isEmpty()) { this.sendError(new NoArtsFoundException()); } else if (matchedRows.size() == 1) { PickingObjectDTO matchedItem = matchedRows.get(0); @@ -898,9 +898,6 @@ public class SpedizioneViewModel { 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 && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null) { @@ -1100,8 +1097,12 @@ public class SpedizioneViewModel { BigDecimal initialQtaTot = mUseColliPedana ? initialNumCnf.multiply(initialQtaCnf) : mUseQtaOrd ? qtaColDaPrelevare : null; MtbColt finalRefMtbColt = refMtbColt; + this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + + }); } @@ -1430,48 +1431,92 @@ public class SpedizioneViewModel { insertUDSRowRequestDto .setDataScad(dataScad); - this.mColliScaricoRESTConsumer.insertUDSRow(insertUDSRowRequestDto, createdMtbColr -> { - pickingObjectDTO.getWithdrawMtbColrs().add(createdMtbColr); - this.mCurrentMtbColt.getMtbColr().add(createdMtbColr); + executeDepositChangeIfNeeded(refMtbColt, + () -> executeTipoUlChangeIfNeeded(refMtbColt, + () -> this.mColliScaricoRESTConsumer.insertUDSRow(insertUDSRowRequestDto, createdMtbColr -> { + pickingObjectDTO.getWithdrawMtbColrs().add(createdMtbColr); + this.mCurrentMtbColt.getMtbColr().add(createdMtbColr); - createdMtbColr - .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) - .setMtbAart(pickingObjectDTO.getMtbAart()); + createdMtbColr + .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) + .setMtbAart(pickingObjectDTO.getMtbAart()); - if (mEnableGiacenza) { - MtbColr refMtbColr = new MtbColr() - .setCodMart(createdMtbColr.getCodMart()) - .setPartitaMag(createdMtbColr.getPartitaMag()) - .setCodTagl(createdMtbColr.getCodTagl()) - .setCodCol(createdMtbColr.getCodCol()); + if (mEnableGiacenza) { + MtbColr refMtbColr = new MtbColr() + .setCodMart(createdMtbColr.getCodMart()) + .setPartitaMag(createdMtbColr.getPartitaMag()) + .setCodTagl(createdMtbColr.getCodTagl()) + .setCodCol(createdMtbColr.getCodCol()); - if (refMtbColt != null) { + if (refMtbColt != null) { - MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && refMtbColt.getMtbColr().size() > 0 ? refMtbColt.getMtbColr().get(0) : null; + MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && !refMtbColt.getMtbColr().isEmpty() ? refMtbColt.getMtbColr().get(0) : null; - if (originalRefMtbColr != null) { - refMtbColr.setId(originalRefMtbColr.getId()); - } + if (originalRefMtbColr != null) { + refMtbColr.setId(originalRefMtbColr.getId()); + } - refMtbColr.setNumCollo(refMtbColt.getNumCollo()) - .setDataCollo(refMtbColt.getDataColloS()) - .setSerCollo(refMtbColt.getSerCollo()) - .setGestione(refMtbColt.getGestione()); - } - createdMtbColr.setRefMtbColr(refMtbColr); - } + refMtbColr.setNumCollo(refMtbColt.getNumCollo()) + .setDataCollo(refMtbColt.getDataColloS()) + .setSerCollo(refMtbColt.getSerCollo()) + .setGestione(refMtbColt.getGestione()); + } + createdMtbColr.setRefMtbColr(refMtbColr); + } - //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei - resetMatchedRows(); + //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei + resetMatchedRows(); - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); - if (shouldCloseLU) requestCloseLU(shouldPrint); + if (shouldCloseLU) requestCloseLU(shouldPrint); + }, this::sendError))); + + } + + private void executeDepositChangeIfNeeded(MtbColt refMtbColt, Runnable onComplete) { + //Considero solo la prima UDC scansionata + boolean shouldChangeCodMdep = refMtbColt != null && !refMtbColt.getCodMdep().equalsIgnoreCase(mCurrentMtbColt.getCodMdep()) && + mCurrentMtbColt.getMtbColr().isEmpty(); + String newCodMdep = shouldChangeCodMdep ? refMtbColt.getCodMdep() : null; + + if (shouldChangeCodMdep) { + mColliMagazzinoRESTConsumer.spostaUL(mCurrentMtbColt, newCodMdep, null, false, () -> { + mCurrentMtbColt.setCodMdep(newCodMdep); + onComplete.run(); + }, this::sendError); + } else onComplete.run(); + } + + private void executeTipoUlChangeIfNeeded(MtbColt refMtbColt, Runnable onComplete) { + boolean shouldChangeCodTcol = refMtbColt != null && refMtbColt.getCodTcol() != null && + !refMtbColt.getCodTcol().equalsIgnoreCase(mCurrentMtbColt.getCodTcol()) && + mCurrentMtbColt.getMtbColr().isEmpty(); + String newTipoUL = shouldChangeCodTcol ? refMtbColt.getCodTcol() : null; + + ObservableMtbTcol newMtbTcol = SettingsManager.iDB().getInternalImballi().stream().filter(x -> x.getCodTcol().equalsIgnoreCase(newTipoUL)) + .findFirst() + .orElse(null); + + if(!UtilityString.isNullOrEmpty(newTipoUL) && newMtbTcol == null) { + this.sendError(new Exception("Impossibile riconoscere il tipo UL " + newTipoUL)); + onComplete.run(); + return; + } + + if (shouldChangeCodTcol && newMtbTcol != null) { + updateTipoUl(newMtbTcol, onComplete); + } else onComplete.run(); + } + + public void updateTipoUl(ObservableMtbTcol newTipoUL, Runnable onComplete) { + mColliMagazzinoRESTConsumer.updateTipoUL(mCurrentMtbColt, newTipoUL.getCodTcol(), () -> { + mCurrentMtbColt.setCodTcol(newTipoUL.getCodTcol()); + onComplete.run(); }, this::sendError); - } private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { @@ -2062,7 +2107,7 @@ public class SpedizioneViewModel { void onFullItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canOverflowOrderQuantity, boolean canBatchLotBeChanged, RunnableArgss onComplete); - void onInfoAggiuntiveRequired(MtbColt currentMtbColt, RunnableArgss onComplete); + void onInfoAggiuntiveRequired(MtbColt currentMtbColt, RunnableArgss onComplete); void onLUPositionChangeRequest(RunnableArgss onComplete); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java index 8edf5632..4a2388ef 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java @@ -302,7 +302,7 @@ public class VersamentoMerceViewModel { public void updatePosizione(MtbDepoPosizione mtbDepoPosizione) { this.sendOnLoadingStarted(); - mColliMagazzinoRESTConsumer.changePosizione(mCurrentMtbColt.getValue(), mtbDepoPosizione, () -> { + mColliMagazzinoRESTConsumer.spostaUL(mCurrentMtbColt.getValue(), mtbDepoPosizione, () -> { this.sendOnLoadingEnded(); this.sendOnDataSaved(); }, this::sendError); 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 dcd00bbe..201e6f69 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 @@ -5,7 +5,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; @@ -24,8 +23,8 @@ import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentListI public class BottomSheetFragmentLUContentListAdapter extends RecyclerView.Adapter { - private Context mContext; - private ArrayList mDataset; + private final Context mContext; + private final ArrayList mDataset; private OnItemClickListener mOnItemClickListener; @@ -60,7 +59,7 @@ public class BottomSheetFragmentLUContentListAdapter extends RecyclerView.Adapte @Override public BottomSheetFragmentLUContentListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view - BottomSheetFragmentLuContentListItemBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.bottom_sheet_fragment__lu_content__list_item, parent, false); + BottomSheetFragmentLuContentListItemBinding viewDataBinding = BottomSheetFragmentLuContentListItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); return new BottomSheetFragmentLUContentListAdapter.ViewHolder(viewDataBinding); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java index 8ff3a4c6..61a8f461 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java @@ -8,10 +8,12 @@ import java.math.RoundingMode; 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.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; public class BottomSheetFragmentLUContentViewModel { + + public ObservableField mtbColt = new ObservableField<>(); public ObservableField pesoKg = new ObservableField<>(); public ObservableField pesoNettoKg = new ObservableField<>(); @@ -22,6 +24,10 @@ public class BottomSheetFragmentLUContentViewModel { if (this.mListener != null) this.mListener.onBottomSheetLUClose(); } + public void requestChangeMtbTcol() { + if (this.mListener != null) this.mListener.onRequestChangeMtbTcol(mtbColt.get()); + } + public BottomSheetFragmentLUContentViewModel setMtbColt(MtbColt mtbColt) { this.mtbColt.set(mtbColt); return this; @@ -45,7 +51,7 @@ public class BottomSheetFragmentLUContentViewModel { MtbColt collo = this.mtbColt.get(); if (collo == null) return; - MtbTCol tipoPedana = collo.getMtbTCol(); + ObservableMtbTcol tipoPedana = collo.getMtbTCol(); BigDecimal taraPedana = tipoPedana != null ? tipoPedana.getTaraKg() : BigDecimal.ZERO; BigDecimal pesoNetto = BigDecimal.ZERO; @@ -67,6 +73,8 @@ public class BottomSheetFragmentLUContentViewModel { } public interface Listener { + void onRequestChangeMtbTcol(MtbColt mtbColt); + void onBottomSheetLUClose(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java deleted file mode 100644 index b5753990..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java +++ /dev/null @@ -1,47 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.ask_should_print; - -import android.app.Dialog; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; - -import androidx.databinding.DataBindingUtil; -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.databinding.DialogAskShouldPrintBinding; - -public class DialogAskShouldPrint { - - private Dialog currentDialog; - - public static Dialog make(final Context context, final String nomeEtichettaEN, RunnableArgs onDialogDismiss) { - return new DialogAskShouldPrint(context, nomeEtichettaEN, onDialogDismiss).currentDialog; - } - - private DialogAskShouldPrint(Context context, String nomeEtichettaEN, RunnableArgs onDialogDismiss) { - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - DialogAskShouldPrintBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_should_print, null, false); - - currentDialog = new Dialog(context); - currentDialog.setContentView(bindings.getRoot()); - - currentDialog.setCanceledOnTouchOutside(false); - currentDialog.setCancelable(false); - currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - bindings.descriptionText.setText(String.format(context.getResources().getString(R.string.message_print_packing_list), nomeEtichettaEN)); - - bindings.buttonConfirm.setOnClickListener(v -> { - currentDialog.dismiss(); - onDialogDismiss.run(true); - }); - - bindings.buttonAbort.setOnClickListener(v -> { - currentDialog.dismiss(); - onDialogDismiss.run(false); - }); - - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java index 6189f6b9..69bde96f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java @@ -136,31 +136,26 @@ public class DialogSimpleMessageView extends BaseDialogFragment { private void initContent() { int colorBackgroundTitle = -1; - Drawable titleIconRes = null; - - switch (mType) { - case INFO: + Drawable titleIconRes = switch (mType) { + case INFO -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.colorPrimary); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_info_78dp, null); - break; - - case SUCCESS: + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_info_78dp, null); + } + case SUCCESS -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.green_300); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_done_white_24dp, null); - break; - - case WARNING: + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_done_white_24dp, null); + } + case WARNING -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.yellow_600); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_warning_white_24dp, null); - break; - - case ERROR: + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_warning_white_24dp, null); + } + case ERROR -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.red_300); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_mood_bad_24dp, null); - break; - } + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_mood_bad_24dp, null); + } + }; - this.positiveButtonText = requireContext().getText(R.string.ok).toString(); + this.positiveButtonText = requireContext().getText(mOnNegativeClick != null ? R.string.yes : R.string.ok).toString(); this.negativeButtonText = requireContext().getText(R.string.no).toString(); //Title VIEW diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/create_new_art/DialogCreateNewArtViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/create_new_art/DialogCreateNewArtViewModel.java index 1b0a2ace..9312c1ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/create_new_art/DialogCreateNewArtViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/create_new_art/DialogCreateNewArtViewModel.java @@ -155,7 +155,7 @@ public class DialogCreateNewArtViewModel { barcodeProdotto.validate() ) { ArticoloDTO articoloToSave = new ArticoloDTO() - .setDescrizione(descrizione.get()) + .setDescrizione(descrizione.get() != null ? descrizione.get().substring(0, Math.min(40, descrizione.get().length())) : null) .setDescrizioneEstesa(descrizione.get()) .setNote(UtilityString.empty2null(noteAggiuntive.get())) .setCodMgrp(selectedMtbGrup.get().getCodMgrp()) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUModule.java index 27bb2a77..50f815b9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUModule.java @@ -2,14 +2,13 @@ package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; import dagger.Module; import dagger.Provides; -import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; @Module(subcomponents = DialogInfoAggiuntiveLUComponent.class) public class DialogInfoAggiuntiveLUModule { @Provides - DialogInfoAggiuntiveLUViewModel providesDialogInfoAggiuntiveLUViewModel(ImballiRESTConsumer imballiRESTConsumer) { - return new DialogInfoAggiuntiveLUViewModel(imballiRESTConsumer); + DialogInfoAggiuntiveLUViewModel providesDialogInfoAggiuntiveLUViewModel() { + return new DialogInfoAggiuntiveLUViewModel(); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUView.java index 3adbb8f6..75e95647 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUView.java @@ -24,7 +24,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogInfoAggiuntiveLuBinding; @@ -46,26 +46,38 @@ public class DialogInfoAggiuntiveLUView extends BaseDialogFragment implements Di private Context mContext; - private final RunnableArgss mOnComplete; + private final boolean askNotes; + private final boolean askTipoUl; + private final RunnableArgss mOnComplete; private final Runnable mOnAbort; private final MtbColt currentMtbColt; - public static DialogInfoAggiuntiveLUView newInstance(@NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { - return new DialogInfoAggiuntiveLUView(null, onComplete, onAbort); + public static DialogInfoAggiuntiveLUView newInstance(@NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { + return new DialogInfoAggiuntiveLUView(null, true, true, onComplete, onAbort); } - public static DialogInfoAggiuntiveLUView newInstance(MtbColt mtbColt, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { - return new DialogInfoAggiuntiveLUView(mtbColt, onComplete, onAbort); + public static DialogInfoAggiuntiveLUView newInstance(MtbColt mtbColt, boolean askNotes, boolean askTipoUl, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { + return new DialogInfoAggiuntiveLUView(mtbColt, askNotes, askTipoUl, onComplete, onAbort); } - private DialogInfoAggiuntiveLUView(MtbColt mtbColt, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { + private DialogInfoAggiuntiveLUView(MtbColt mtbColt, boolean askNotes, boolean askTipoUl, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { super(); this.mOnComplete = onComplete; this.mOnAbort = onAbort; this.currentMtbColt = mtbColt; + + this.askNotes = askNotes; + this.askTipoUl = askTipoUl; } + public boolean isAskNotes() { + return askNotes; + } + + public boolean isAskTipoUl() { + return askTipoUl; + } @NonNull @Override @@ -109,8 +121,8 @@ public class DialogInfoAggiuntiveLUView extends BaseDialogFragment implements Di public void onInit(DialogInterface dialogInterface) { super.onInit(dialogInterface); - this.init(); this.mViewModel.init(); + this.init(); } private void init() { @@ -123,15 +135,12 @@ public class DialogInfoAggiuntiveLUView extends BaseDialogFragment implements Di mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); - this.mViewModel.getTipiCollo().observe(this, tipiCollo -> { - - if (currentMtbColt != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) { - tipiCollo.stream() - .filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol())) - .findFirst() - .ifPresent(tipoPedana -> this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione())); - } - }); + if (currentMtbColt != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) { + mViewModel.getTipiCollo().getValue().stream() + .filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol())) + .findFirst() + .ifPresent(tipoPedana -> this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione())); + } UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> { @@ -160,6 +169,5 @@ public class DialogInfoAggiuntiveLUView extends BaseDialogFragment implements Di }); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUViewModel.java index 08710e40..29a255d8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/DialogInfoAggiuntiveLUViewModel.java @@ -2,38 +2,35 @@ package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; import androidx.lifecycle.MutableLiveData; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import javax.inject.Inject; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.MtbTCol; -import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; +import it.integry.integrywmsnative.core.settings.SettingsManager; public class DialogInfoAggiuntiveLUViewModel { - private final MutableLiveData> tipiCollo = new MutableLiveData<>(); + private final MutableLiveData> tipiCollo = new MutableLiveData<>(); private Listener mListener; - private final ImballiRESTConsumer imballiRESTConsumer; @Inject - public DialogInfoAggiuntiveLUViewModel(ImballiRESTConsumer imballiRESTConsumer) { - this.imballiRESTConsumer = imballiRESTConsumer; + public DialogInfoAggiuntiveLUViewModel() { } public void init() { - this.sendOnLoadingStarted(); - - imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UL, tipiCollo -> { - this.tipiCollo.postValue(tipiCollo == null ? new ArrayList<>() : tipiCollo); - this.sendOnLoadingEnded(); - }, this::sendError); + var imballiList = SettingsManager.iDB().getInternalImballi().stream() + .filter(x -> x.getFlagUIUL() == MtbTCol.FlagUiUlEnum.UL) + .collect(Collectors.toUnmodifiableList()); + this.tipiCollo.setValue(imballiList); } - public MutableLiveData> getTipiCollo() { + public MutableLiveData> getTipiCollo() { return tipiCollo; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java index 4f60b0d9..820216d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java @@ -3,7 +3,7 @@ package it.integry.integrywmsnative.view.dialogs.input_lu_prod; import java.math.BigDecimal; import it.integry.integrywmsnative.core.model.JtbFasi; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; public class DialogInputLUProdResultDTO { @@ -14,7 +14,7 @@ public class DialogInputLUProdResultDTO { private BigDecimal taraCol; private BigDecimal pesoLordo; - private MtbTCol mtbTCol; + private ObservableMtbTcol mtbTCol; private JtbFasi jtbFasi; @@ -72,11 +72,11 @@ public class DialogInputLUProdResultDTO { return this; } - public MtbTCol getMtbTCol() { + public ObservableMtbTcol getMtbTCol() { return mtbTCol; } - public DialogInputLUProdResultDTO setMtbTCol(MtbTCol mtbTCol) { + public DialogInputLUProdResultDTO setMtbTCol(ObservableMtbTcol mtbTCol) { this.mtbTCol = mtbTCol; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java index a3dcd637..7c265541 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java @@ -40,7 +40,7 @@ import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.JtbFasi; import it.integry.integrywmsnative.core.model.MtbAart; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputLuProdBinding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -335,7 +335,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI if (mDialogInputLUProdDTO.getCodTcol() != null) { - Optional optTCol = Stream.of(tipiCollo) + java.util.Optional optTCol = tipiCollo.stream() .filter(x -> x.getCodTcol().equalsIgnoreCase(mDialogInputLUProdDTO.getCodTcol())) .findFirst(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java index 4f198759..df7c4b0f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java @@ -12,6 +12,7 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL import it.integry.integrywmsnative.core.model.JtbFasi; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -30,7 +31,7 @@ public class DialogInputLUProdViewModel { public ObservableField blockedTaraCol = new ObservableField<>(false); public ObservableField blockedPesoLordo = new ObservableField<>(false); - private final MutableLiveData> mTipiColloLiveData = new MutableLiveData<>(); + private final MutableLiveData> mTipiColloLiveData = new MutableLiveData<>(); private final MutableLiveData> mLineeProdLiveData = new MutableLiveData<>(); private BigDecimal initialNumCnf; @@ -43,7 +44,7 @@ public class DialogInputLUProdViewModel { private BigDecimal internalTaraCol; private BigDecimal internalPesoLordo; - private MtbTCol internalTipoPed; + private ObservableMtbTcol internalTipoPed; private JtbFasi internalLineaProd; private boolean isLineeProdRequired; @@ -62,7 +63,7 @@ public class DialogInputLUProdViewModel { public void init(String codJfasParent) { this.sendOnLoadingStarted(); - imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UL, tipiCollo -> { + imballiRESTConsumer.retrieveImballi(MtbTCol.FlagUiUlEnum.UL, tipiCollo -> { this.mTipiColloLiveData.postValue(tipiCollo); mMesRESTConsumer.getLineeProduzione(codJfasParent, jtbFasi -> { @@ -76,7 +77,7 @@ public class DialogInputLUProdViewModel { }, this::sendError); } - public MutableLiveData> getTipiCollo() { + public MutableLiveData> getTipiCollo() { return this.mTipiColloLiveData; } @@ -200,7 +201,7 @@ public class DialogInputLUProdViewModel { this.mListener.onDataChanged(); } - public DialogInputLUProdViewModel setInternalTipoPed(MtbTCol internalTipoPed) { + public DialogInputLUProdViewModel setInternalTipoPed(ObservableMtbTcol internalTipoPed) { this.internalTipoPed = internalTipoPed; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java index c5e85b6e..4c0f3507 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java @@ -6,35 +6,40 @@ import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; -import com.annimon.stream.Stream; - import java.util.List; +import java.util.stream.Collectors; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; public class DialogInputLUProdTipoColloAdapter extends ArrayAdapter { private List mDataset; - public DialogInputLUProdTipoColloAdapter(@NonNull Context context, int resource, @NonNull MutableLiveData> inputData) { + public DialogInputLUProdTipoColloAdapter(@NonNull Context context, int resource, @NonNull MutableLiveData> inputData) { super(context, resource); inputData.observeForever(data -> { - mDataset = Stream.of(data) + mDataset = data.stream() .map(x -> new DialogInputLUProdTipoColloListModel() .setOriginalModel(x)) - .toList(); + .collect(Collectors.toList()); clear(); addAll(mDataset); }); + + if (inputData.getValue() != null) + mDataset = inputData.getValue().stream() + .map(x -> new DialogInputLUProdTipoColloListModel() + .setOriginalModel(x)) + .collect(Collectors.toList()); } public List getDataset() { return this.mDataset; } - public MtbTCol getOriginalModelItem(int position) { + public ObservableMtbTcol getOriginalModelItem(int position) { return mDataset.get(position).getOriginalModel(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java index c6bb6ce9..4328b7e2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java @@ -2,17 +2,17 @@ package it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter; import org.jetbrains.annotations.NotNull; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; public class DialogInputLUProdTipoColloListModel { - private MtbTCol originalModel; + private ObservableMtbTcol originalModel; - public MtbTCol getOriginalModel() { + public ObservableMtbTcol getOriginalModel() { return originalModel; } - public DialogInputLUProdTipoColloListModel setOriginalModel(MtbTCol originalModel) { + public DialogInputLUProdTipoColloListModel setOriginalModel(ObservableMtbTcol originalModel) { this.originalModel = originalModel; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java index da86ff71..ebbeb88f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPesoLUView.java @@ -9,12 +9,13 @@ import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.annimon.stream.Optional; import com.annimon.stream.Stream; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.math.BigDecimal; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; import javax.inject.Inject; @@ -24,7 +25,9 @@ import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; +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.databinding.DialogInputPesoLuBinding; @@ -47,7 +50,7 @@ public class DialogInputPesoLUView extends BaseDialogFragment { public BindableString grossWeight = new BindableString(); - private List codTcolList = null; + private List codTcolList = null; private ArrayAdapter codTcolArrayAdapter = null; @@ -95,34 +98,31 @@ public class DialogInputPesoLUView extends BaseDialogFragment { } - private void init() { - imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UL, codTcols -> { - this.codTcolList = codTcols; + this.codTcolList = SettingsManager.iDB().getInternalImballi().stream() + .filter(x -> x.getFlagUIUL() == MtbTCol.FlagUiUlEnum.UL) + .collect(Collectors.toUnmodifiableList()); - List codTcolDescriptions = Stream.of(codTcols) + List codTcolDescriptions = codTcolList.stream() + .map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione()) + .toList(); + + if (codTcol.get() != null) { + Optional newCodTcol = this.codTcolList.stream() + .filter(x -> x.getCodTcol().equalsIgnoreCase(codTcol.get())) .map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione()) - .toList(); + .findFirst(); - if(codTcol.get() != null) { - Optional newCodTcol = Stream.of(codTcols) - .filter(x -> x.getCodTcol().equalsIgnoreCase(codTcol.get())) - .map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione()) - .findSingle(); + if (newCodTcol.isPresent()) codTcol.set(newCodTcol.get()); + } - if(newCodTcol.isPresent()) codTcol.set(newCodTcol.get()); - } - - codTcolArrayAdapter = new ArrayAdapter(requireContext(), R.layout.array_adapter_single_item); - codTcolArrayAdapter.addAll(codTcolDescriptions); - mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); + codTcolArrayAdapter = new ArrayAdapter<>(requireContext(), R.layout.array_adapter_single_item); + codTcolArrayAdapter.addAll(codTcolDescriptions); + mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); // progressDialog.dismiss(); - }, ex -> { - UtilityExceptions.defaultException(requireContext(), ex); - }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoComponent.java new file mode 100644 index 00000000..fb3dedcb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogSwitchUserDepoComponent { + + @Subcomponent.Factory + interface Factory { + DialogSwitchUserDepoComponent create(); + } + + void inject(DialogSwitchUserDepoView dialogSwitchUserDepoView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoModule.java new file mode 100644 index 00000000..7f05d9e5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogSwitchUserDepoComponent.class) +public class DialogSwitchUserDepoModule { + + @Provides + DialogSwitchUserDepoViewModel providesDialogSwitchUserDepoViewModel() { + return new DialogSwitchUserDepoViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoView.java new file mode 100644 index 00000000..1026465e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoView.java @@ -0,0 +1,93 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.di.binders.recyclerview.BindingRecyclerViewAdapter; +import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinder; +import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinderBase; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; +import it.integry.integrywmsnative.databinding.DialogSwitchUserDepoBinding; + +public class DialogSwitchUserDepoView extends BaseDialogFragment { + + @Inject + DialogSwitchUserDepoViewModel mViewModel; + + private DialogSwitchUserDepoBinding mBindings; + private Context mContext; + + private final List availableCodMdeps; + private final RunnableArgs onComplete; + + //Pass here all external parameters + public static DialogSwitchUserDepoView newInstance(List availableCodMdeps, RunnableArgs onComplete) { + return new DialogSwitchUserDepoView(availableCodMdeps, onComplete); + } + + private DialogSwitchUserDepoView(List availableCodMdeps, RunnableArgs onComplete) { + super(); + + this.availableCodMdeps = availableCodMdeps; + this.onComplete = onComplete; + + MainApplication.appComponent + .dialogSwitchUserDepoComponent() + .create() + .inject(this); + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogSwitchUserDepoBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + setCancelable(true); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .create(); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + + return alertDialog; + } + + @Override + public void onInit(DialogInterface dialogInterface) { + super.onInit(dialogInterface); + + ItemBinder itemBinder = new ItemBinderBase<>(BR.item, R.layout.dialog_switch_user_depo__list_item); + + BindingRecyclerViewAdapter adapter = new BindingRecyclerViewAdapter<>(itemBinder, availableCodMdeps); + adapter.setClickHandler(data -> { + onComplete.run(data); + dismiss(); + }); + + mBindings.availableDepoList.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoViewModel.java new file mode 100644 index 00000000..97cfeaca --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +public class DialogSwitchUserDepoViewModel { + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiModule.java index 37e35e76..d01ee5ad 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiModule.java @@ -2,14 +2,13 @@ package it.integry.integrywmsnative.view.dialogs.tracciamento_imballi; import dagger.Module; import dagger.Provides; -import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; @Module(subcomponents = DialogTracciamentoImballiComponent.class) public class DialogTracciamentoImballiModule { @Provides - DialogTracciamentoImballiViewModel providesDialogTracciamentoImballiViewModel(ImballiRESTConsumer imballiRESTConsumer) { - return new DialogTracciamentoImballiViewModel(imballiRESTConsumer); + DialogTracciamentoImballiViewModel providesDialogTracciamentoImballiViewModel() { + return new DialogTracciamentoImballiViewModel(); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiViewModel.java index dcfdb4aa..e27a6d53 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/DialogTracciamentoImballiViewModel.java @@ -7,33 +7,29 @@ import androidx.lifecycle.MutableLiveData; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.MtbTCol; -import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; +import it.integry.integrywmsnative.core.settings.SettingsManager; public class DialogTracciamentoImballiViewModel { - private final ImballiRESTConsumer imballiRESTConsumer; - private final MutableLiveData> imballiRegistrati = new MutableLiveData<>(new ArrayList<>()); - private final ObservableArrayList imballiDisponibili = new ObservableArrayList<>(); + private final ObservableArrayList imballiDisponibili = new ObservableArrayList<>(); private Listener mListener; - public DialogTracciamentoImballiViewModel(ImballiRESTConsumer imballiRESTConsumer) { - this.imballiRESTConsumer = imballiRESTConsumer; + public DialogTracciamentoImballiViewModel() { } public void init() { - this.imballiRESTConsumer.retrieveTipiCollo(MtbTCol.FlagUiUlEnum.UI, tipiCollo -> { + imballiDisponibili.addAll(SettingsManager.iDB().getInternalImballi().stream() + .filter(x -> x.getFlagUIUL() == MtbTCol.FlagUiUlEnum.UI) + .collect(Collectors.toUnmodifiableList())); - if (tipiCollo == null || tipiCollo.isEmpty()) - return; - - imballiDisponibili.addAll(tipiCollo); - }, this::sendError); } @@ -41,7 +37,7 @@ public class DialogTracciamentoImballiViewModel { return imballiRegistrati; } - public ObservableArrayList getImballiDisponibili() { + public ObservableArrayList getImballiDisponibili() { return imballiDisponibili; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/adapter/DialogTracciamentoImballi_TipoColloAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/adapter/DialogTracciamentoImballi_TipoColloAdapter.java index a01e93e4..d0784fa4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/adapter/DialogTracciamentoImballi_TipoColloAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/tracciamento_imballi/adapter/DialogTracciamentoImballi_TipoColloAdapter.java @@ -9,11 +9,11 @@ import com.annimon.stream.Stream; import java.util.List; -import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; public class DialogTracciamentoImballi_TipoColloAdapter extends ArrayAdapter { - public DialogTracciamentoImballi_TipoColloAdapter(@NonNull Context context, int resource, List inputData) { + public DialogTracciamentoImballi_TipoColloAdapter(@NonNull Context context, int resource, List inputData) { super(context, resource); if(inputData == null) return; @@ -28,12 +28,12 @@ public class DialogTracciamentoImballi_TipoColloAdapter extends ArrayAdapter { + .setPositiveButton(R.string.yes, (dialog, which) -> { if (onDialogDismiss != null) onDialogDismiss.run(DialogConsts.Results.YES); }) - .setNegativeButton("Annulla", (dialog, which) -> { + .setNegativeButton(R.string.no, (dialog, which) -> { if (onDialogDismiss != null) onDialogDismiss.run(DialogConsts.Results.NO); }) .create(); diff --git a/app/src/main/res/drawable/app_round_icon.xml b/app/src/main/res/drawable/app_round_icon.xml index 943787b8..249bed37 100644 --- a/app/src/main/res/drawable/app_round_icon.xml +++ b/app/src/main/res/drawable/app_round_icon.xml @@ -1,37 +1,39 @@ - - - - - - - - - - - - - \ No newline at end of file + android:width="222.9dp" + android:height="222.9dp" + android:viewportWidth="222.9" + android:viewportHeight="222.9"> + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/circle_background.xml b/app/src/main/res/drawable/circle_background.xml new file mode 100644 index 00000000..74de3f7c --- /dev/null +++ b/app/src/main/res/drawable/circle_background.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..d7972540 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_round_business_24.xml b/app/src/main/res/drawable/ic_round_business_24.xml new file mode 100644 index 00000000..c3b55a22 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_business_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_rounded_change_circle_24.xml b/app/src/main/res/drawable/ic_rounded_change_circle_24.xml new file mode 100644 index 00000000..ed34fc5d --- /dev/null +++ b/app/src/main/res/drawable/ic_rounded_change_circle_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 02f04f8a..da3cfa4c 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -33,12 +33,10 @@ android:layout_gravity="center"> - + app:cardCornerRadius="8dp" + app:cardElevation="4dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + - + android:layout_height="66dp" + android:background="@color/colorAccent" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="8dp" + android:paddingBottom="8dp"> - + + + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/indicator_view"> - - - - + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_box" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/weight_card"> + + + + + + + + + android:layout_marginStart="10dp" + android:layout_marginTop="10dp" + android:text="@string/details_text" + android:textAllCaps="true" + android:textColor="@android:color/black" + android:textStyle="bold" /> - + android:orientation="vertical" + android:padding="15dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + - + + + android:orientation="vertical" + android:paddingTop="14dp"> - - - + android:padding="16dp" + android:visibility="@{viewModel.mtbColt == null || viewModel.mtbColt.mtbColr.size() == 0 ? View.VISIBLE : View.GONE}"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:text="@string/empty_rows_in_mtbcolt" + android:textColor="@color/empty_view_gray" + android:textSize="20sp" /> - - - - - + - + - + - + - + - + - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml index afa38080..7fa714e0 100644 --- a/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml +++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml @@ -7,6 +7,8 @@ + + @@ -25,7 +27,10 @@ + android:padding="8dp" + android:clickable="true" + android:focusable="true" + android:background="?attr/selectableItemBackground"> - - + app:layout_constraintTop_toBottomOf="@id/art_detail" + app:cardElevation="0dp" + app:strokeWidth="0dp"> + android:padding="12dp"> + + + android:layout_gravity="center_vertical" + android:layout_marginStart="12dp" + android:layout_weight="1" + android:orientation="vertical"> - + android:text="@{"#" + mtbColr.numColloRif + " (" + mtbColr.serCollo + ")"}" + android:textAppearance="@style/TextAppearance.Material3.TitleMedium" + android:singleLine="true" + android:ellipsize="end" + tools:text="#5230 (/)" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_should_print.xml b/app/src/main/res/layout/dialog_ask_should_print.xml deleted file mode 100644 index db971b3e..00000000 --- a/app/src/main/res/layout/dialog_ask_should_print.xml +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_info_aggiuntive_lu.xml b/app/src/main/res/layout/dialog_info_aggiuntive_lu.xml index 9ff6a54d..a619be5a 100644 --- a/app/src/main/res/layout/dialog_info_aggiuntive_lu.xml +++ b/app/src/main/res/layout/dialog_info_aggiuntive_lu.xml @@ -53,7 +53,7 @@ android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@id/title_text" app:layout_constraintBottom_toTopOf="@id/level_number_layout" - android:visibility="@{viewModel.tipiCollo == null || viewModel.tipiCollo.empty ? View.GONE : View.VISIBLE}" + app:visibility="@{view.askTipoUl}" android:hint="@string/lu_type"> + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_switch_user_depo__list_item.xml b/app/src/main/res/layout/dialog_switch_user_depo__list_item.xml new file mode 100644 index 00000000..a5734899 --- /dev/null +++ b/app/src/main/res/layout/dialog_switch_user_depo__list_item.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 113a1ee6..bc792173 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -79,7 +79,7 @@ android:padding="16dp"> - + android:orientation="vertical" + android:layout_marginEnd="16dp" + android:layout_toEndOf="@id/user_icon" + android:layout_toStartOf="@id/switch_depo_button"> + tools:text="MARIO ROSSI" /> + tools:text="Deposito: 01 - Centrale" /> - + + + + + + android:background="@android:color/white"> + android:scrollbars="none"> - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 036d09bc..7353dbd1 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 5a51dba6..00000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 00000000..6582824d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index f5fbca90..00000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index c887da06..00000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 00000000..ce973e52 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 42fd3eb1..00000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 00000000..a48e025e Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index d1ad74fa..00000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index d4d733d4..00000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 00000000..f7ec9b38 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index bab2c009..00000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 00000000..5a364803 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index bb45d61a..00000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 4cd8e716..00000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..fd26a792 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 3c6949bc..00000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 00000000..4534f365 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index e3fa253e..00000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 488aa103..00000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..875eb4c9 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 8e638e32..00000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 00000000..af06cbd2 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 7106807b..00000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 374091fc..00000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..64c524bc Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0d69b7d9..b65ea13f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -313,7 +313,7 @@ No Posizionamento - Vuoi procedere con la stampa di una %s + Vuoi procedere con la stampa di una %s? Vuoi stampare le packing list degli ordini chiusi? Vuoi stampare le etichette SSCC degli ordini chiusi? Stampa solo le nuove etichette @@ -481,4 +481,7 @@ Griglie disponibili Cerca + + Cambia deposito + Cambia il deposito principale su cui stai lavorando tra quelli a te disponibili \ No newline at end of file diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index 4eab508c..f15a6039 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -2,6 +2,7 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bcf8bed7..696bed5e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -488,4 +488,7 @@ Available grids Search + + Change deposit + Change the main deposit you are working on among those available to you diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 71604865..d2d34472 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -1,13 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdk 34 + compileSdk 35 defaultConfig { minSdkVersion 21 - targetSdk 34 + targetSdk 35 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } @@ -19,7 +18,7 @@ android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false @@ -29,6 +28,11 @@ android { } +configurations { + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' +} + dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) diff --git a/build.gradle b/build.gradle index b8a52f85..25a4d35e 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,8 @@ buildscript { ext { - kotlin_version = '1.9.20' - agp_version = '8.7.2' + kotlin_version = '2.1.0' + agp_version = '8.8.0' } repositories { @@ -12,13 +12,13 @@ buildscript { } dependencies { classpath "com.android.tools.build:gradle:$agp_version" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.4.1' + //classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.google.gms:google-services:4.4.2' classpath 'com.google.firebase:perf-plugin:1.4.2' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' + classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -40,7 +40,7 @@ allprojects { // } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index af8dff6c..38073ce8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Feb 13 15:14:43 CET 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index 56891476..fc0f16a9 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdk 34 + compileSdk 35 defaultConfig { minSdkVersion 21 - targetSdk 34 + targetSdk 35 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -29,6 +29,11 @@ android { } +configurations { + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' +} + dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index 6b05d719..08b3fb7a 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.library' android { - compileSdk 34 + compileSdk 35 defaultConfig { minSdkVersion 21 - targetSdk 34 + targetSdk 35 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" +// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } @@ -29,6 +29,11 @@ android { } +configurations { + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' +} + dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index b084ab91..a412d247 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.library' android { - compileSdk 34 + compileSdk 35 defaultConfig { minSdkVersion 21 - targetSdk 34 + targetSdk 35 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" +// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -19,7 +19,7 @@ android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } lint { abortOnError false @@ -28,6 +28,11 @@ android { } +configurations { + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' +} + dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.6.1' diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index 7d952295..59d32ead 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.library' android { - compileSdk 34 + compileSdk 35 defaultConfig { minSdkVersion 21 - targetSdk 34 + targetSdk 35 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" +// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -28,6 +28,11 @@ android { } +configurations { + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7' + all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' +} + dependencies { implementation fileTree(dir: 'libs', include: ['*.jar'])