Compare commits

...

69 Commits

Author SHA1 Message Date
d570ab7e3d Finish v1.21.1(253) 2021-12-30 17:32:01 +01:00
2230dade45 -> v1.21.1 (253) 2021-12-30 17:31:39 +01:00
637e46b868 Rimosso datetime da MtbCols 2021-12-30 17:30:58 +01:00
473d5d1a5a Finish v1.21.0(252) 2021-12-28 11:21:37 +01:00
c37f4d62a4 Finish v1.21.0(252) 2021-12-28 11:21:36 +01:00
b8ac75ed6d -> v1.21.0 (252) 2021-12-28 11:21:31 +01:00
df9d3a80ac completata gestione documenti interni
Aggiunti campi complementari in generazione ordini di acquisto
restyling dialog ordini di acquisto
2021-12-28 11:20:02 +01:00
6aacaef720 Finish v1.20.4(251) 2021-12-02 17:09:31 +01:00
1fab62187f Finish v1.20.4(251) 2021-12-02 17:09:31 +01:00
0c4d0f2b59 -> v1.20.4 (251) 2021-12-02 17:09:27 +01:00
dbf183c7c6 Bug fix: in versamento meteriale a produzione la quantità residuo dopo ripartizionamento viene aggiunta due volte 2021-12-02 17:08:43 +01:00
42649cd5bb Finish v1.20.3(250) 2021-11-26 17:47:56 +01:00
1f1a8f75de Finish v1.20.3(250) 2021-11-26 17:47:56 +01:00
5215d43bf4 -> v1.20.3 (250) 2021-11-26 17:47:51 +01:00
d2f262a9b8 Merge remote-tracking branch 'origin/develop' into develop 2021-11-26 17:46:58 +01:00
1fc78d053b Aggiunto codice menu su Rientro merce 2021-11-26 17:46:55 +01:00
016be4799c Merge remote-tracking branch 'origin/develop' into develop 2021-11-26 17:46:40 +01:00
e837132996 Corretta aggiunta quantità di scarto sull'ordine maggiore in versamento merce a produzione (frudis) 2021-11-26 17:46:33 +01:00
925760720d Finish v1.20.2(249) 2021-11-26 16:40:35 +01:00
2e872c23aa Finish v1.20.2(249) 2021-11-26 16:40:34 +01:00
7a62c8855f -> v1.20.2 (249) 2021-11-26 16:40:31 +01:00
c1da07b23c Fix finestra caricamento in Spedizione 2021-11-26 16:39:54 +01:00
ba7e2a6d61 Finish v1.20.1(248) 2021-11-26 10:32:36 +01:00
e798db1427 Finish v1.20.1(248) 2021-11-26 10:32:35 +01:00
a79dee3574 -> v1.20.1 (248) 2021-11-26 10:32:26 +01:00
4f753399bf Merge remote-tracking branch 'origin/develop' into develop 2021-11-26 10:31:40 +01:00
80842e49e5 Migliorata gestione errori in versamento merce 2021-11-26 10:31:33 +01:00
2eac741bbb Finish v1.20.0(247) 2021-11-22 18:22:36 +01:00
c3e2a2a8fd Finish v1.20.0(247) 2021-11-22 18:22:36 +01:00
99f0691c55 -> v1.20.0 (247) 2021-11-22 18:22:31 +01:00
37ebd96a0f Gestione Documenti interni di carelli 2021-11-22 18:20:59 +01:00
c012c54805 Finish v1.19.5(246) 2021-11-12 16:33:47 +01:00
9de6dcce80 Finish v1.19.5(246) 2021-11-12 16:33:46 +01:00
fc403ec419 -> v1.19.5 (246) 2021-11-12 16:33:41 +01:00
4968f2f4fa Aggiunto ordinamento (da customizzareper azienda) sui filtri in spedizione 2021-11-12 16:32:18 +01:00
a7ea9b9022 Finish v1.19.4(245) 2021-11-12 11:32:57 +01:00
28a034f0d6 Finish v1.19.4(245) 2021-11-12 11:32:57 +01:00
ca3f1f5962 -> v1.19.4 (245) 2021-11-12 11:32:48 +01:00
4117e69278 risolto problema filtro non considerato in ritorno su lista filtrata dopo aver eseguito il picking 2021-11-12 11:31:34 +01:00
18ff1e2345 Finish v1.19.3(244) 2021-11-11 19:58:38 +01:00
37e3024220 Finish v1.19.3(244) 2021-11-11 19:58:37 +01:00
ed35ea6894 -> v1.19.3 (244) 2021-11-11 19:58:32 +01:00
bd28db7422 Corretti nuovi filtri 2021-11-11 19:56:43 +01:00
9beea9f2e9 corretto filtro tramite barcode scanner sugli ordini di spedizione
corretto refresh filtro testuale in accettazione
2021-11-11 19:37:01 +01:00
205af60edb Finish v1.19.2(243) 2021-11-11 13:41:18 +01:00
21f9a9819a Finish v1.19.2(243) 2021-11-11 13:41:17 +01:00
4059335e61 -> v1.19.2 (243) 2021-11-11 13:41:12 +01:00
14252f0f4b Fix su gestione in accettazione da ordine di lavorazione 2021-11-11 13:40:11 +01:00
c13eee355e Merge remote-tracking branch 'origin/develop' into develop 2021-11-11 13:19:51 +01:00
51528fda6f fix Menu 2021-11-11 13:19:31 +01:00
1486d39eb8 Finish v1.19.1(242) 2021-11-11 13:09:41 +01:00
1951d8e2a4 Finish v1.19.1(242) 2021-11-11 13:09:40 +01:00
420fdf6b4c -> v1.19.1 (242) 2021-11-11 13:09:31 +01:00
a14a593e4f Aggiunta ricerca nei filtri in vendita 2021-11-11 13:08:38 +01:00
5d7ffa02c4 Finish v1.19.0(241) 2021-11-09 13:14:07 +01:00
4942807104 Finish v1.19.0(241) 2021-11-09 13:14:06 +01:00
20dafb1250 -> v1.19.0 (241) 2021-11-09 13:13:57 +01:00
eb0746de0c Creato nuovo filtro per gli ordini in uscita. 2021-11-09 13:11:47 +01:00
2e255e0c47 Merge remote-tracking branch 'origin/develop' into develop 2021-10-26 12:32:14 +02:00
6baebda5e1 Rimosse eccezioni interne da Firebase 2021-10-26 12:32:08 +02:00
8f943829ec Finish v1.18.10(240) 2021-10-21 13:10:40 +02:00
bd19d8c1a2 Finish v1.18.10(240) 2021-10-21 13:10:39 +02:00
3e79d0a07a -> 1.18.10 (240) 2021-10-21 13:10:29 +02:00
d2111e36ee Risolto bug progress dialog in ordini acquisto pv 2021-10-21 13:09:21 +02:00
47a1ab8223 Finish v1.8.9(239) 2021-10-14 17:17:12 +02:00
45df794280 Finish v1.8.9(239) 2021-10-14 17:17:12 +02:00
7a9bd15cfa -> v1.18.9 (239) 2021-10-14 17:16:52 +02:00
f902439086 Implementato nuovo servizio di printEtichettaSSCC 2021-10-14 17:16:04 +02:00
e7334d358b Finish v1.8.8(238) 2021-10-13 16:16:03 +02:00
171 changed files with 12873 additions and 1065 deletions

16
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetsSelectedWithDialog>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="20119B1E55" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetsSelectedWithDialog>
</component>
</project>

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_base" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<module name="WMS.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
@@ -8,7 +8,7 @@
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic_agricoper,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_vglimenti" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<module name="WMS.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
@@ -8,7 +8,7 @@
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_agricoper,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />

View File

@@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 238
def appVersionName = '1.18.8'
def appVersionCode = 253
def appVersionName = '1.21.1'
signingConfigs {
release {
@@ -103,12 +103,12 @@ dependencies {
implementation 'com.google.android.gms:play-services-basement:17.6.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
@@ -120,7 +120,7 @@ dependencies {
implementation 'org.apache.commons:commons-text:1.9'
//MVVM
def dagger2_version = '2.29.1'
def dagger2_version = '2.35.1'
api "com.google.dagger:dagger:$dagger2_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
api "com.google.dagger:dagger-android:$dagger2_version"
@@ -156,6 +156,10 @@ dependencies {
implementation project(':keyobardemulatorscannerlibrary')
androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
androidTestImplementation 'org.testng:testng:7.4.0'
implementation 'com.github.RaviKoradiya:LiveAdapter:1.3.4'
implementation 'org.reflections:reflections:0.10.2'
}
repositories {

View File

@@ -29,6 +29,10 @@
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".gest.picking_resi.PickingResiActivity"
android:screenOrientation="portrait"

View File

@@ -9,6 +9,12 @@ import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent;
@@ -97,7 +103,10 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
ProdOrdineProduzioneElencoModule.class,
ProdRecuperoMaterialeModule.class,
ProdVersamentoMaterialeModule.class,
DialogChooseArtsFromListaArtsModule.class
DialogChooseArtsFromListaArtsModule.class,
DocInterniModule.class,
DialogSelectDocInfoModule.class,
DocInterniEditFormModule.class
})
public interface MainApplicationComponent {
@@ -132,7 +141,9 @@ public interface MainApplicationComponent {
ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent();
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent();
DocInterniComponent.Factory docInterniComponent();
DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent();
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@@ -15,6 +15,7 @@ import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
@@ -24,6 +25,7 @@ import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
@Module
@@ -81,14 +83,20 @@ public class MainApplicationModule {
@Provides
@Singleton
ArticoloRESTConsumer provideArticoloRESTConsumer() {
return new ArticoloRESTConsumer();
ArticoloRESTConsumer provideArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new ArticoloRESTConsumer(systemRESTConsumer);
}
@Provides
@Singleton
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) {
return new DepositoRESTConsumer(entityRESTConsumer);
CommessaRESTConsumer provideCommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new CommessaRESTConsumer(systemRESTConsumer);
}
@Provides
@Singleton
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
return new DepositoRESTConsumer(entityRESTConsumer, systemRESTConsumer);
}
@Provides
@@ -151,5 +159,11 @@ public class MainApplicationModule {
return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer);
}
@Provides
@Singleton
DocInterniRESTConsumer provideDocInterniRESTConsumer() {
return new DocInterniRESTConsumer();
}
}

View File

@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.core.class_router;
import java.util.HashMap;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
@@ -10,14 +9,12 @@ public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys {
public static int MENU_CONFIGURATION = 0;
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3;
}
protected HashMap<Integer, Object> configurations = new HashMap<Integer, Object>() {{
put(Keys.MENU_CONFIGURATION, new MenuConfiguration());
protected HashMap<Integer, Object> configurations = new HashMap<>() {{
put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true);
put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false);
}};

View File

@@ -3,11 +3,13 @@ package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
@@ -123,6 +125,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
.addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce)
.setCodMenu("MG059")
.setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external)
.setFragmentFactory(ProdRientroMerceFragment::newInstance))
).addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
@@ -159,6 +169,13 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance))
.addItem(new MenuItem()
.setCodMenu("MG058")
.setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni)
.setTitleText(it.integry.integrywmsnative.R.string.doc_interni)
.setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni)
.setFragmentFactory(DocInterniFragment::newInstance))
// .addItem(new MenuItem()
// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)

View File

@@ -50,7 +50,6 @@ public class AppContext {
}
private void initSettings() {
Stash.init(mApplicationContext);
SettingsManager.init(mApplicationContext);
@@ -80,5 +79,4 @@ public class AppContext {
Logger.addLogAdapter(new AndroidLogAdapter());
}
}

View File

@@ -8,13 +8,17 @@ import it.integry.integrywmsnative.core.data_store.db.converter.DateConverter;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 1, exportSchema = false)
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 5, exportSchema = false)
@TypeConverters({
DateConverter.class
})
@@ -30,26 +34,9 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract ArticoloOrdineDao articoloOrdineDao();
// public static AppDatabase getDatabase(final Context context) {
// if (INSTANCE == null) {
// synchronized (AppDatabase.class) {
// if (INSTANCE == null) {
// INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
// AppDatabase.class, "integry_wms")
// .fallbackToDestructiveMigration()
// .build();
// }
// }
// }
// return INSTANCE;
// }
public abstract MtbColtDao mtbColtDao();
// public AppDatabase(Application application) {
// mRoomInstance = Room.databaseBuilder(application,
// AppDatabase.class, "integry_wms")
// .fallbackToDestructiveMigration()
// .build();
// }
public abstract MtbColrDao mtbColrDao();
}

View File

@@ -11,15 +11,21 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliOrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.GrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.SqlMtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.SqlMtbColtDataSource;
@Module
public class RoomModule {
@@ -66,6 +72,18 @@ public class RoomModule {
return appDatabase.articoloOrdineDao();
}
@Singleton
@Provides
MtbColtDao providesMtbColtDao(AppDatabase appDatabase) {
return appDatabase.mtbColtDao();
}
@Singleton
@Provides
MtbColrDao providesMtbColrDao(AppDatabase appDatabase) {
return appDatabase.mtbColrDao();
}
@@ -96,4 +114,16 @@ public class RoomModule {
return new OrdineDataSource(ordineDao);
}
@Singleton
@Provides
MtbColtRepository providesMtbColtRepository(MtbColtDao mtbColtDao) {
return new SqlMtbColtDataSource(mtbColtDao);
}
@Singleton
@Provides
MtbColrRepository providesMtbColrRepository(MtbColrDao mtbColrDao) {
return new SqlMtbColrDataSource(mtbColrDao);
}
}

View File

@@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Dao
public interface MtbColrDao {
@Query("SELECT * from mtb_colr ")
List<SqlMtbColr> getAll();
@Insert
Long insert(SqlMtbColr mtbColr);
@Update
void update(SqlMtbColr mtbColr);
@Delete
void delete(SqlMtbColr mtbColr);
@Query("SELECT * from mtb_colr where id_collo = :idDocument")
List<SqlMtbColr> getDocumentRows(int idDocument);
}

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
@Dao
public interface MtbColtDao {
@Query("SELECT * from mtb_colt")
List<SqlMtbColt> getAll();
@Insert
Long insert(SqlMtbColt mtbColt);
@Update
void update(SqlMtbColt mtbColt);
@Delete
void delete(SqlMtbColt mtbColt);
@Query("SELECT mtb_colt.*, count(mtb_colr.id) as countArticoli from mtb_colt left outer join mtb_colr on (mtb_colr.id_collo = mtb_colt.id) where" +
" cod_dtip_provv = :codDtip " +
" AND ( cod_anag = :codAnag OR (cod_anag is null and :codAnag is null)) " +
" AND ( cod_vdes = :codVdes OR (cod_vdes is null and :codVdes is null)) " +
" AND ( mtb_colt.data_doc = :dataDoc OR (mtb_colt.data_doc is null and :dataDoc is null)) " +
" AND ( mtb_colt.num_doc = :numDoc OR (mtb_colt.num_doc is null and :numDoc is null)) " +
" and cod_dtip is null group by mtb_colt.id")
List<DocInternoWrapper> getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
@Query("SELECT ifnull(MAX(num_collo),0) +1 as num_collo from mtb_colt")
Integer getNextNumCollo();
}

View File

@@ -6,6 +6,8 @@ import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity(
@@ -54,6 +56,18 @@ public class ArticoloGriglia {
@ColumnInfo(name = "qta_min_ordinabile")
private float qtaMinOrdinabile;
@ColumnInfo(name = "gg_scadenza")
private int ggScadenza;
@ColumnInfo(name = "giacenza")
private float giacenza;
@ColumnInfo(name = "qta_prevista_vendita")
private float qtaPrevistaVendita;
@ColumnInfo(name = "qta_proposta")
private float qtaProposta;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
@@ -145,6 +159,38 @@ public class ArticoloGriglia {
this.idGriglia = idGriglia;
}
public int getGgScadenza() {
return ggScadenza;
}
public void setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
}
public float getGiacenza() {
return giacenza;
}
public void setGiacenza(float giacenza) {
this.giacenza = giacenza;
}
public float getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
}
public float getQtaProposta() {
return qtaProposta;
}
public void setQtaProposta(float qtaProposta) {
this.qtaProposta = qtaProposta;
}
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
ArticoloOrdine articolo = new ArticoloOrdine();
@@ -160,6 +206,11 @@ public class ArticoloGriglia {
articolo.setUntMis(this.getUntMis());
articolo.setDescrizione(this.getDescrizione());
articolo.setDataIns(UtilityDate.getDateInstance());
articolo.setGgScadenza(this.getGgScadenza());
articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza()));
articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita()));
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
articolo.setQtaOrd(0);
return articolo;

View File

@@ -3,16 +3,19 @@ package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Ignore;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
@Entity(
tableName = "articoli_ordine",
indices = {
@Index(value = "id_ordine"),
@Index(value = {"id_ordine","cod_mart"}, unique = true)
@Index(value = {"id_ordine", "cod_mart"}, unique = true)
},
foreignKeys = {
@ForeignKey(
@@ -22,7 +25,7 @@ import java.util.Date;
onDelete = ForeignKey.CASCADE
)
}
)
)
public class ArticoloOrdine {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "articolo_ordine_id")
@@ -64,6 +67,20 @@ public class ArticoloOrdine {
@ColumnInfo(name = "data_ins")
private Date dataIns;
@Ignore
private int ggScadenza = 0;
@Ignore
private BigDecimal giacenza = BigDecimal.ZERO;
@Ignore
private BigDecimal qtaPrevistaVendita = BigDecimal.ZERO;
@Ignore
private BigDecimal qtaProposta = BigDecimal.ZERO;
public int getArticoloOrdineId() {
return articoloOrdineId;
}
@@ -167,4 +184,51 @@ public class ArticoloOrdine {
public void setDataIns(Date dataIns) {
this.dataIns = dataIns;
}
public int getGgScadenza() {
return ggScadenza;
}
public ArticoloOrdine setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
return this;
}
public BigDecimal getGiacenza() {
return giacenza;
}
public ArticoloOrdine setGiacenza(BigDecimal giacenza) {
this.giacenza = giacenza;
return this;
}
public BigDecimal getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public ArticoloOrdine setQtaPrevistaVendita(BigDecimal qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
return this;
}
public BigDecimal getQtaProposta() {
return qtaProposta;
}
public ArticoloOrdine setQtaProposta(BigDecimal qtaProposta) {
this.qtaProposta = qtaProposta;
return this;
}
public BigDecimal getQtaCnfPrevistaVendita(){
return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
}
public BigDecimal getQtaCnfProposta(){
return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
}
public BigDecimal getQtaCnfGiacenza(){
return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
}
}

View File

@@ -0,0 +1,438 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.util.Date;
@Entity(
tableName = "mtb_colr",
indices = {
@Index(value = {"data_collo", "ser_collo", "num_collo", "gestione","riga"}, unique = true),
@Index(value = {"id_collo"})
},
foreignKeys = {
@ForeignKey(
entity = SqlMtbColt.class,
parentColumns = "id",
childColumns = "id_collo",
onDelete = ForeignKey.CASCADE
)
}
)
public class SqlMtbColr {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private int id;
@ColumnInfo(name = "id_collo")
private int idCollo;
@ColumnInfo(name = "data_collo")
private Date dataCollo;
@ColumnInfo(name = "gestione")
private String gestione;
@ColumnInfo(name = "ser_collo")
private String serCollo;
@ColumnInfo(name = "descrizione")
private String descrizione;
@ColumnInfo(name = "num_collo")
private Integer numCollo;
@ColumnInfo(name = "riga")
private Integer riga;
@ColumnInfo(name = "riga_ord")
private Integer rigaOrd;
@ColumnInfo(name = "cod_mart")
private String codMart;
@ColumnInfo(name = "cod_barre")
private String codBarre;
@ColumnInfo(name = "cod_col")
private String codCol;
@ColumnInfo(name = "cod_tagl")
private String codTagl;
@ColumnInfo(name = "partita_mag")
private String partitaMag;
@ColumnInfo(name = "gestione_rif")
private String gestioneRif;
@ColumnInfo(name = "ser_collo_rif")
private String serColloRif;
@ColumnInfo(name = "note")
private String note;
@ColumnInfo(name = "data_ord")
private Date dataOrd;
@ColumnInfo(name = "data_collo_rif")
private Date dataColloRif;
@ColumnInfo(name = "qta_cnf")
private Float qtaCnf;
@ColumnInfo(name = "qta_col")
private Float qtaCol;
@ColumnInfo(name = "num_ord")
private Integer numOrd;
@ColumnInfo(name = "num_etich")
private Integer numEtich;
@ColumnInfo(name = "num_collo_rif")
private Integer numColloRif;
@ColumnInfo(name = "datetime_row")
private Date datetimeRow;
@ColumnInfo(name = "cod_jcom")
private String codJcom;
@ColumnInfo(name = "num_cnf")
private Float numCnf;
@ColumnInfo(name = "causale")
private String causale;
@ColumnInfo(name = "utente")
private String utente;
@ColumnInfo(name = "cod_anag_doc")
private String codAnagDoc;
@ColumnInfo(name = "cod_dtip_doc")
private String codDtipDoc;
@ColumnInfo(name = "data_doc")
private Date dataDoc;
@ColumnInfo(name = "ser_doc")
private String serDoc;
@ColumnInfo(name = "num_doc")
private Integer numDoc;
@ColumnInfo(name = "id_riga_doc")
private Integer idRigaDoc;
@ColumnInfo(name = "unt_mis")
private String untMis;
@ColumnInfo(name = "data_scad")
private Date dataScad;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdCollo() {
return idCollo;
}
public void setIdCollo(int idCollo) {
this.idCollo = idCollo;
}
public Date getDataCollo() {
return dataCollo;
}
public void setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public String getSerCollo() {
return serCollo;
}
public void setSerCollo(String serCollo) {
this.serCollo = serCollo;
}
public Integer getNumCollo() {
return numCollo;
}
public void setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
}
public Integer getRiga() {
return riga;
}
public void setRiga(Integer riga) {
this.riga = riga;
}
public Integer getRigaOrd() {
return rigaOrd;
}
public void setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getCodBarre() {
return codBarre;
}
public void setCodBarre(String codBarre) {
this.codBarre = codBarre;
}
public String getCodCol() {
return codCol;
}
public void setCodCol(String codCol) {
this.codCol = codCol;
}
public String getCodTagl() {
return codTagl;
}
public void setCodTagl(String codTagl) {
this.codTagl = codTagl;
}
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public String getGestioneRif() {
return gestioneRif;
}
public void setGestioneRif(String gestioneRif) {
this.gestioneRif = gestioneRif;
}
public String getSerColloRif() {
return serColloRif;
}
public void setSerColloRif(String serColloRif) {
this.serColloRif = serColloRif;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
}
public Date getDataColloRif() {
return dataColloRif;
}
public void setDataColloRif(Date dataColloRif) {
this.dataColloRif = dataColloRif;
}
public Float getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(Float qtaCnf) {
this.qtaCnf = qtaCnf;
}
public Float getQtaCol() {
return qtaCol;
}
public void setQtaCol(Float qtaCol) {
this.qtaCol = qtaCol;
}
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
}
public Integer getNumEtich() {
return numEtich;
}
public void setNumEtich(Integer numEtich) {
this.numEtich = numEtich;
}
public Integer getNumColloRif() {
return numColloRif;
}
public void setNumColloRif(Integer numColloRif) {
this.numColloRif = numColloRif;
}
public Date getDatetimeRow() {
return datetimeRow;
}
public void setDatetimeRow(Date datetimeRow) {
this.datetimeRow = datetimeRow;
}
public String getCodJcom() {
return codJcom;
}
public void setCodJcom(String codJcom) {
this.codJcom = codJcom;
}
public Float getNumCnf() {
return numCnf;
}
public void setNumCnf(Float numCnf) {
this.numCnf = numCnf;
}
public String getCausale() {
return causale;
}
public void setCausale(String causale) {
this.causale = causale;
}
public String getUtente() {
return utente;
}
public void setUtente(String utente) {
this.utente = utente;
}
public String getCodAnagDoc() {
return codAnagDoc;
}
public void setCodAnagDoc(String codAnagDoc) {
this.codAnagDoc = codAnagDoc;
}
public String getCodDtipDoc() {
return codDtipDoc;
}
public void setCodDtipDoc(String codDtipDoc) {
this.codDtipDoc = codDtipDoc;
}
public Date getDataDoc() {
return dataDoc;
}
public void setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
}
public String getSerDoc() {
return serDoc;
}
public void setSerDoc(String serDoc) {
this.serDoc = serDoc;
}
public Integer getNumDoc() {
return numDoc;
}
public void setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
}
public Integer getIdRigaDoc() {
return idRigaDoc;
}
public void setIdRigaDoc(Integer idRigaDoc) {
this.idRigaDoc = idRigaDoc;
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public Date getDataScad() {
return dataScad;
}
public void setDataScad(Date dataScad) {
this.dataScad = dataScad;
}
}

View File

@@ -0,0 +1,341 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Entity(
tableName = "mtb_colt",
indices = {
@Index(value = {"data_collo", "ser_collo", "num_collo", "gestione"}, unique = true)
}
)
public class SqlMtbColt {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private int id;
@ColumnInfo(name = "username")
private String username;
@ColumnInfo
private String gestione;
@ColumnInfo(name = "data_collo")
private Date dataCollo;
@ColumnInfo(name = "ser_collo")
private String serCollo;
@ColumnInfo(name = "num_collo")
private Integer numCollo;
@ColumnInfo(name = "rif_ord")
private String rifOrd;
@ColumnInfo(name = "cod_anag")
private String codAnag;
@ColumnInfo(name = "cod_vdes")
private String codVdes;
@ColumnInfo(name = "cod_mdep")
private String codMdep;
@ColumnInfo(name = "cod_vlis")
private String codVlis;
@ColumnInfo(name = "cod_dtip")
private String codDtip;
@ColumnInfo(name = "cod_tcol")
private String codTcol;
@ColumnInfo(name = "ser_doc")
private String serDoc;
@ColumnInfo(name = "annotazioni")
private String annotazioni;
@ColumnInfo(name = "posizione")
private String posizione;
@ColumnInfo(name = "cod_dtip_provv")
private String codDtipProvv;
@ColumnInfo(name = "ser_doc_provv")
private String serDocProvv;
@ColumnInfo(name = "cod_jfas")
private String codJfas;
@ColumnInfo(name = "data_ord")
private Date dataOrd;
@ColumnInfo(name = "data_doc")
private Date dataDoc;
@ColumnInfo(name = "data_doc_provv")
private Date dataDocProvv;
@ColumnInfo(name = "cod_mgrp")
private String codMgrp;
@ColumnInfo(name = "data_vers")
private Date dataVers;
@ColumnInfo(name = "segno")
private Integer segno;
@ColumnInfo(name = "num_ord")
private Integer numOrd;
@ColumnInfo(name = "num_doc")
private Integer numDoc;
@ColumnInfo(name = "num_doc_provv")
private Integer numDocProvv;
@Ignore
private List<SqlMtbColr> sqlMtbColrs = new ArrayList<>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public Date getDataCollo() {
return dataCollo;
}
public void setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
}
public String getSerCollo() {
return serCollo;
}
public void setSerCollo(String serCollo) {
this.serCollo = serCollo;
}
public Integer getNumCollo() {
return numCollo;
}
public void setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
}
public String getRifOrd() {
return rifOrd;
}
public void setRifOrd(String rifOrd) {
this.rifOrd = rifOrd;
}
public String getCodAnag() {
return codAnag;
}
public void setCodAnag(String codAnag) {
this.codAnag = codAnag;
}
public String getCodVdes() {
return codVdes;
}
public void setCodVdes(String codVdes) {
this.codVdes = codVdes;
}
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(String codMdep) {
this.codMdep = codMdep;
}
public String getCodVlis() {
return codVlis;
}
public void setCodVlis(String codVlis) {
this.codVlis = codVlis;
}
public String getCodDtip() {
return codDtip;
}
public void setCodDtip(String codDtip) {
this.codDtip = codDtip;
}
public String getCodTcol() {
return codTcol;
}
public void setCodTcol(String codTcol) {
this.codTcol = codTcol;
}
public String getSerDoc() {
return serDoc;
}
public void setSerDoc(String serDoc) {
this.serDoc = serDoc;
}
public String getAnnotazioni() {
return annotazioni;
}
public void setAnnotazioni(String annotazioni) {
this.annotazioni = annotazioni;
}
public String getPosizione() {
return posizione;
}
public void setPosizione(String posizione) {
this.posizione = posizione;
}
public String getCodDtipProvv() {
return codDtipProvv;
}
public void setCodDtipProvv(String codDtipProvv) {
this.codDtipProvv = codDtipProvv;
}
public String getSerDocProvv() {
return serDocProvv;
}
public void setSerDocProvv(String serDocProvv) {
this.serDocProvv = serDocProvv;
}
public String getCodJfas() {
return codJfas;
}
public void setCodJfas(String codJfas) {
this.codJfas = codJfas;
}
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
}
public Date getDataDoc() {
return dataDoc;
}
public void setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
}
public Date getDataDocProvv() {
return dataDocProvv;
}
public void setDataDocProvv(Date dataDocProvv) {
this.dataDocProvv = dataDocProvv;
}
public Date getDataVers() {
return dataVers;
}
public void setDataVers(Date dataVers) {
this.dataVers = dataVers;
}
public Integer getSegno() {
return segno;
}
public void setSegno(Integer segno) {
this.segno = segno;
}
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
}
public Integer getNumDoc() {
return numDoc;
}
public void setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
}
public Integer getNumDocProvv() {
return numDocProvv;
}
public void setNumDocProvv(Integer numDocProvv) {
this.numDocProvv = numDocProvv;
}
public List<SqlMtbColr> getSqlMtbColrs() {
return sqlMtbColrs;
}
public void setSqlMtbColrs(List<SqlMtbColr> sqlMtbColrs) {
this.sqlMtbColrs = sqlMtbColrs;
}
public String getCodMgrp() {
return codMgrp;
}
public void setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColrRepository {
void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError);
void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError);
void getDocumentRows(SqlMtbColt sqlMtbColt, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
}

View File

@@ -0,0 +1,28 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColtRepository {
void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError);
void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError);
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError);
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
}

View File

@@ -0,0 +1,77 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColrDataSource extends Repository implements MtbColrRepository {
private MtbColrDao mMtbColrDao;
@Inject
public SqlMtbColrDataSource(MtbColrDao mtbColrDao) {
this.mMtbColrDao = mtbColrDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mMtbColrDao.insert(mtbColr);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColrDao.update(mtbColr);
onSuccess.run(mtbColr);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColrDao.delete(mtbColr);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
public void getDocumentRows(SqlMtbColt document, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getDocumentRows(document.getId()));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
}

View File

@@ -0,0 +1,93 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColtDataSource extends Repository implements MtbColtRepository {
private MtbColtDao mMtbColtDao;
@Inject
public SqlMtbColtDataSource(MtbColtDao mtbColtDao) {
this.mMtbColtDao = mtbColtDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mMtbColtDao.insert(mtbColt);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColtDao.update(mtbColt);
onSuccess.run(mtbColt);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColtDao.delete(mtbColt);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
@Override
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getLocalDocumentsByCodDtip(codDtip,codAnag,codVdes,dataDoc,numDoc));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
@Override
public void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getNextNumCollo());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
}

View File

@@ -1,34 +1,38 @@
package it.integry.integrywmsnative.core.data_store.db.view_model;
import androidx.room.ColumnInfo;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
public class ArticoloDTO {
private String codMart;
private String descrizione;
private String untMis;
private float qtaCnf;
private String barcode;
private float merceDaRic;
private float mediaSett;
private String flagQtaMultipla;
private float qtaCnf;
private float merceDaRic;
private float mediaSett;
private float qtaMinOrdinabile;
private int ggScadenza;
private float giacenza;
private float qtaPrevistaVendita;
private float qtaProposta;
public String getCodMart() {
return codMart;
}
@@ -101,8 +105,47 @@ public class ArticoloDTO {
this.qtaMinOrdinabile = qtaMinOrdinabile;
}
public String getBarcode() {
return barcode;
}
public ArticoloGriglia toArticoloGriglia(){
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public int getGgScadenza() {
return ggScadenza;
}
public void setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
}
public float getGiacenza() {
return giacenza;
}
public void setGiacenza(float giacenza) {
this.giacenza = giacenza;
}
public float getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
}
public float getQtaProposta() {
return qtaProposta;
}
public void setQtaProposta(float qtaProposta) {
this.qtaProposta = qtaProposta;
}
public ArticoloGriglia toArticoloGriglia() {
ArticoloGriglia result = new ArticoloGriglia();
result.setBarCode(this.getBarCode());
result.setDescrizione(this.getDescrizione());
@@ -113,6 +156,10 @@ public class ArticoloDTO {
result.setMediaSett(this.getMediaSett());
result.setFlagQtaMultipla(this.getFlagQtaMultipla());
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
result.setGgScadenza(this.ggScadenza);
result.setGiacenza(this.giacenza);
result.setQtaPrevistaVendita(this.qtaPrevistaVendita);
result.setQtaProposta(this.qtaProposta);
return result;
}

View File

@@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.ColumnInfo;
import androidx.room.Embedded;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
public class DocInternoWrapper {
@Embedded
private SqlMtbColt document;
@ColumnInfo(name = "countArticoli")
private int countArticoli = 0;
public SqlMtbColt getDocument() {
return document;
}
public void setDocument(SqlMtbColt document) {
this.document = document;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
}

View File

@@ -7,6 +7,8 @@ import androidx.databinding.PropertyChangeRegistry;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class BindableBigDecimal implements Observable {
BigDecimal mValue;
@@ -102,9 +104,24 @@ public class BindableBigDecimal implements Observable {
}
public void set(BigDecimal value, boolean forceRefresh) {
if (!mValue.equals(value) || forceRefresh) {
if ((mValue == null) || !mValue.equals(value) || forceRefresh) {
this.mValue = value;
notifyChange();
}
}
public static void registerListener(BindableBigDecimal bindableBigDecimal, RunnableArgs<BigDecimal> onValueChanged) {
bindableBigDecimal.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if(onValueChanged != null) onValueChanged.run(bindableBigDecimal.get());
}
});
}
public static void resetListeners(BindableBigDecimal bindableBigDecimal){
BigDecimal oldValue = bindableBigDecimal.get();
bindableBigDecimal = new BindableBigDecimal();
bindableBigDecimal.set(oldValue);
}
}

View File

@@ -104,5 +104,9 @@ public class BindableBoolean implements Observable {
notifyChange();
}
}
public void toggle() {
set(!get());
}
}

View File

@@ -1,6 +1,9 @@
package it.integry.integrywmsnative.core.di;
import androidx.databinding.BaseObservable;
import androidx.databinding.Observable;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class BindableInteger extends BaseObservable {
Integer mValue;
@@ -34,4 +37,19 @@ public class BindableInteger extends BaseObservable {
return mValue == null;
}
public static void registerListener(BindableInteger bindableInteger, RunnableArgs<Integer> onValueChanged) {
bindableInteger.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if(onValueChanged != null) onValueChanged.run(bindableInteger.get());
}
});
}
public static void resetListeners(BindableInteger bindableInteger){
Integer oldValue = bindableInteger.get();
bindableInteger = new BindableInteger();
bindableInteger.set(oldValue);
}
}

View File

@@ -7,6 +7,20 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class BindableString extends BaseObservable {
String value;
private boolean isHtml = false;
public BindableString(){};
public BindableString(boolean isHtml){
this.isHtml = isHtml;
};
public BindableString(String startingValue ,boolean isHtml){
this.isHtml = isHtml;
this.set(startingValue);
};
public boolean isHtml() {
return isHtml;
}
public String get() {
return value != null ? value : "";

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di;
import android.app.DatePickerDialog;
import android.content.res.ColorStateList;
import android.text.Html;
import android.text.SpannableString;
import android.util.Log;
import android.view.View;
@@ -51,7 +52,7 @@ public class Converters {
@BindingConversion
public static String convertBindableToString(BindableString bindableString) {
if(bindableString != null) return bindableString.get();
if (bindableString != null) return bindableString.get();
return "";
}
@@ -75,7 +76,8 @@ public class Converters {
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(bindableInteger != null) bindableInteger.set(Integer.parseInt(s.toString()));
if (bindableInteger != null)
bindableInteger.set(Integer.parseInt(s.toString()));
}
};
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
@@ -97,7 +99,7 @@ public class Converters {
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(observableField != null) observableField.set(s.toString());
if (observableField != null) observableField.set(s.toString());
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
@@ -126,8 +128,9 @@ public class Converters {
view.addTextChangedListener(watcher);
}
String newValue = bindableString.get();
boolean isHtml = bindableString.isHtml();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
view.setText(isHtml ? Html.fromHtml(newValue) : newValue);
}
}
@@ -208,7 +211,8 @@ public class Converters {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if(!UtilityString.isNullOrEmpty(s.toString())) value = new BigDecimal(s.toString());
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
observableBigDecimal.set(value);
}
};
@@ -218,11 +222,65 @@ public class Converters {
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
}
}
@BindingAdapter("binding")
public static void bindTextInputEditTextBigDecimal(TextInputEditText view, final BindableBigDecimal bindableBigDecimal) {
Pair<BindableBigDecimal, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != bindableBigDecimal) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
bindableBigDecimal.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(bindableBigDecimal, watcher));
view.addTextChangedListener(watcher);
}
BigDecimal newValue = bindableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
}
}
@BindingAdapter("binding")
public static void bindTextInputEditTextInteger(TextInputEditText view, final BindableInteger bindableInteger) {
Pair<BindableInteger, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != bindableInteger) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Integer value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = Integer.valueOf(s.toString());
bindableInteger.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
view.addTextChangedListener(watcher);
}
Integer newValue = bindableInteger.get();
Integer viewValue = view.getText().toString().trim().length() > 0 ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
if (!(viewValue.compareTo(newValue) == 0)) {
view.setText(newValue.toString());
}
}
@BindingAdapter("binding")
public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField<String> observableString) {
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
@@ -242,7 +300,7 @@ public class Converters {
String newValue = observableString.get();
String viewValue = view.getText().toString();
if(!viewValue.equalsIgnoreCase(newValue)) {
if (!viewValue.equalsIgnoreCase(newValue)) {
view.setText(newValue);
}
}
@@ -266,7 +324,7 @@ public class Converters {
// Get Current Date
Calendar c = UtilityDate.getCalendarInstance();
if(observableDate.get() != null) {
if (observableDate.get() != null) {
c.setTime(observableDate.get());
}
@@ -277,8 +335,8 @@ public class Converters {
DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(),
(cView, year, month, day) -> {
Date resultDate = new GregorianCalendar(year, month, day).getTime();
if(parentFragment != null && warningOnOldDates && resultDate.before(new Date())) {
if (parentFragment != null && warningOnOldDates && resultDate.before(new Date())) {
DialogSimpleMessageView
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
@@ -297,8 +355,8 @@ public class Converters {
//Adding click-listener
view.setOnClickListener(onClick::run);
if(view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
((FrameLayout)view.getParent()).setOnClickListener(onClick::run);
if (view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
((FrameLayout) view.getParent()).setOnClickListener(onClick::run);
((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
}
}
@@ -367,8 +425,9 @@ public class Converters {
view.addTextChangedListener(watcher);
}
String newValue = bindableString.get();
boolean isHtml = bindableString.isHtml();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
view.setText(isHtml ? Html.fromHtml(newValue) : newValue);
}
}
@@ -477,7 +536,7 @@ public class Converters {
@BindingAdapter("visibility")
public static void bindView(View view, final ObservableField<Boolean> bindableBoolean) {
public static void bindViewVisibility(View view, final ObservableField<Boolean> bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
@@ -492,6 +551,38 @@ public class Converters {
}
@BindingAdapter({"reverse_visibility"})
public static void bindViewReverseVisibility(View view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
});
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
@BindingAdapter("reverse_visibility")
public static void bindViewReverseVisibility(View view, final ObservableField<Boolean> bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
});
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
@BindingAdapter("android:layout_weight")
public static void setLayoutWeight(View view, final Float weight) {

View File

@@ -22,8 +22,6 @@ public abstract class BaseFragment extends Fragment {
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar;
}
@@ -34,10 +32,6 @@ public abstract class BaseFragment extends Fragment {
}
public void onLoadingStarted() {
new Thread(() -> {
BarcodeManager.disable();
@@ -71,23 +65,25 @@ public abstract class BaseFragment extends Fragment {
}
protected void openProgress() {
getActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
});
getActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
});
}
protected void closeProgress() {
getActivity().runOnUiThread(() -> {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
getActivity().runOnUiThread(() -> {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
}
protected void popMe() {
((IPoppableActivity) requireActivity()).pop();
getActivity().runOnUiThread(() -> {
((IPoppableActivity) requireActivity()).pop();
});
}
}

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.core.expansion;
import androidx.databinding.Observable;
public abstract class OnGeneralChangedCallback extends Observable.OnPropertyChangedCallback implements Runnable{
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
run();
}
// public abstract void run();
}

View File

@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.interfaces;
import androidx.appcompat.widget.SearchView;
public interface ISearcableFragment extends SearchView.OnQueryTextListener, IDestroyableFragment {
public interface ISearchableFragment extends SearchView.OnQueryTextListener, IDestroyableFragment {
void onSearchEnabled();

View File

@@ -106,6 +106,9 @@ public class DtbOrdt extends EntityBase {
private String noteConferma;
private String codJflav;
public DtbOrdt() {
this.type = "dtb_ordt";
}
public String getDataOrd() {
return dataOrd;

View File

@@ -0,0 +1,49 @@
package it.integry.integrywmsnative.core.model;
public class JtbComt extends EntityBase {
private String codJcom;
private String codJfas;
private String codJflav;
private String descrizione;
public JtbComt() {
this.type = "jtb_comt";
}
public String getCodJcom() {
return codJcom;
}
public JtbComt setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public String getCodJfas() {
return codJfas;
}
public JtbComt setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getCodJflav() {
return codJflav;
}
public JtbComt setCodJflav(String codJflav) {
this.codJflav = codJflav;
return this;
}
public String getDescrizione() {
return descrizione;
}
public JtbComt setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
}

View File

@@ -22,7 +22,7 @@ public class MtbCols extends EntityBase {
type = "mtb_cols";
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
setModificatoDa(SettingsManager.i().getUser().getFullname());
setDataMove(UtilityDate.getDateInstance());
//setDataMove(UtilityDate.getDateInstance());
}
public String getDataCollo() {

View File

@@ -36,12 +36,12 @@ public class MtbDepo extends EntityBase implements Parcelable {
private String flagTipoNegozio;
private String codMdepReso;
public MtbDepo() {
type = "mtb_depo";
}
protected MtbDepo(Parcel in) {
type = "mtb_depo";
codMdep = in.readString();
descrizione = in.readString();
flagVal = in.readString();
@@ -357,4 +357,19 @@ public class MtbDepo extends EntityBase implements Parcelable {
this.codMdepReso = codMdepReso;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MtbDepo mtbDepo = (MtbDepo) o;
return getCodMdep().equals(mtbDepo.getCodMdep());
}
@Override
public int hashCode() {
return getCodMdep().hashCode();
}
}

View File

@@ -0,0 +1,69 @@
package it.integry.integrywmsnative.core.model;
public class MtbGrup extends EntityBase {
private String codMgrp;
private String descrizione;
private String flagValMag;
private String logoWeb;
private String criterioVal;
private String tipoMgrp;
public MtbGrup() {
this.type = "mtb_grup";
}
public String getCodMgrp() {
return codMgrp;
}
public MtbGrup setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public String getDescrizione() {
return descrizione;
}
public MtbGrup setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getFlagValMag() {
return flagValMag;
}
public MtbGrup setFlagValMag(String flagValMag) {
this.flagValMag = flagValMag;
return this;
}
public String getLogoWeb() {
return logoWeb;
}
public MtbGrup setLogoWeb(String logoWeb) {
this.logoWeb = logoWeb;
return this;
}
public String getCriterioVal() {
return criterioVal;
}
public MtbGrup setCriterioVal(String criterioVal) {
this.criterioVal = criterioVal;
return this;
}
public String getTipoMgrp() {
return tipoMgrp;
}
public MtbGrup setTipoMgrp(String tipoMgrp) {
this.tipoMgrp = tipoMgrp;
return this;
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.lang.reflect.Modifier;
import java.util.concurrent.TimeUnit;
import it.integry.integrywmsnative.core.settings.SettingsManager;
@@ -50,6 +51,7 @@ public class RESTBuilder {
Gson gson = new GsonBuilder()
.setDateFormat("dd/MM/yyyy HH:mm:ss")
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.create();
Retrofit retrofit = new Retrofit.Builder()

View File

@@ -2,15 +2,21 @@ package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -18,6 +24,11 @@ import retrofit2.Response;
@Singleton
public class ArticoloRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer systemRESTConsumer;
public ArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
this.systemRESTConsumer = systemRESTConsumer;
}
public void getByBarcodeProd(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
@@ -86,4 +97,21 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
});
}
public void getArtsGroups(List<String> groupsToFind, RunnableArgs<List<MtbGrup>> onComplete, RunnableArgs<Exception> onFailed) {
var whereCondMap = Stream.of(groupsToFind)
.map(x -> {
HashMap<String, Object> vars = new HashMap<>();
vars.put("cod_mgrp", x);
return vars;
})
.toList();
var whereCond = " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap);
Type typeOfObjectsList = new TypeToken<ArrayList<MtbGrup>>() {}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
}
}

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
@Singleton
public class CommessaRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer systemRESTConsumer;
public CommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
this.systemRESTConsumer = systemRESTConsumer;
}
public void getJtbComts(List<String> itemsToFind, RunnableArgs<List<JtbComt>> onComplete, RunnableArgs<Exception> onFailed) {
var whereCondMap = Stream.of(itemsToFind)
.map(x -> {
HashMap<String, Object> vars = new HashMap<>();
vars.put("cod_jcom", x);
return vars;
})
.toList();
var whereCond = " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap);
Type typeOfObjectsList = new TypeToken<ArrayList<JtbComt>>() {}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM jtb_comt " + whereCond, typeOfObjectsList, onComplete, onFailed);
}
}

View File

@@ -1,5 +1,9 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Singleton;
@@ -12,9 +16,17 @@ import it.integry.integrywmsnative.core.model.MtbDepo;
public class DepositoRESTConsumer extends _BaseRESTConsumer {
private final EntityRESTConsumer entityRESTConsumer;
private final SystemRESTConsumer systemRESTConsumer;
public DepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) {
public DepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
this.entityRESTConsumer = entityRESTConsumer;
this.systemRESTConsumer = systemRESTConsumer;
}
public void getAll(RunnableArgs<List<MtbDepo>> onComplete, RunnableArgs<Exception> onFailed) {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbDepo>>() {
}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_depo", typeOfObjectsList, onComplete, onFailed);
}
public void getDepoByCodMdep(String codMdep, RunnableArgs<MtbDepo> onComplete, RunnableArgs<Exception> onFailed) {

View File

@@ -11,12 +11,12 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.JasperDTO;
import it.integry.integrywmsnative.core.rest.model.JasperPairDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call;
@@ -32,26 +32,6 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}
public void getAvailablePrinters(String codMdep, final RunnableArgs<List<String>> onComplete, final RunnableArgs<Exception> onFailed) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters(codMdep).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", printers -> {
onComplete.run(printers != null ? Stream.of(printers).withoutNulls().toList() : null);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
Log.e("GetAvailablePrinters", t.toString());
UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
public void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
String printerTypeStr = printerType != null ? printerType.toString() : null;
@@ -75,47 +55,40 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
});
}
public void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
public void printCollo(Type printerType, MtbColt testataColloToPrint, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if (BuildConfig.DEBUG) {
onComplete.run();
return;
}
if (UtilityString.isNullOrEmpty(printerName)) {
onFailed.run(new Exception("Nessuna stampante configurata: valore null"));
return;
}
// if (BuildConfig.DEBUG) {
// onComplete.run();
// return;
// }
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.printCollo(
printerName,
testataColloToPrint.getDataColloS(),
testataColloToPrint.getGestione(),
testataColloToPrint.getSerCollo(),
testataColloToPrint.getNumCollo(),
quantity,
reportName)
Call<ServiceRESTResponse<Object>> callable = null;
if (printerType != null)
callable = printerService.printCollo(printerType.toString(), testataColloToPrint);
else
callable = printerService.printCollo(testataColloToPrint);
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "printCollo", data -> {
onComplete.run();
}, onFailed);
}
callable.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "printCollo", data -> {
onComplete.run();
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
if (t.getMessage().contains("Printer not found")) {
onFailed.run(new NoPrintersFoundException());
} else onFailed.run(new Exception(t));
}
});
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
if (t.getMessage().contains("Printer not found")) {
onFailed.run(new NoPrintersFoundException());
} else onFailed.run(new Exception(t));
}
});
}
public void printReport(String printerName, String reportName, HashMap<String, Object> params, int quantity, Runnable onComplete, RunnableArgs<Exception> onFailed) {
// if(BuildConfig.DEBUG) {
// if (BuildConfig.DEBUG) {
// onComplete.run();
// return;
// }

View File

@@ -2,20 +2,16 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.JasperDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface PrinterRESTConsumerService {
@POST("getAvailablePrinters")
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters();
@POST("getAvailablePrinters")
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters(@Query("codMdep") String codMdep);
@@ -23,19 +19,6 @@ public interface PrinterRESTConsumerService {
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters(@Query("codMdep") String codMdep, @Query("printerType") String printerType);
@POST("pkgPrintLabel")
@FormUrlEncoded
Call<ServiceRESTResponse<Object>> printCollo(
@Query("printerName") String printerName,
@Field("dataCollo") String dataCollo,
@Field("gestione") String gestione,
@Field("serCollo") String serCollo,
@Field("numCollo") int numCollo,
@Query("printQuantity") int printQuantity,
@Query("reportName") String reportName
);
@POST("processPrintReport")
Call<ServiceRESTResponse<Object>> processPrintReport(
@Query("printerName") String printerName,
@@ -43,4 +26,16 @@ public interface PrinterRESTConsumerService {
@Body JasperDTO jasperDTO
);
@POST("wms/printEtichettaSSCC")
Call<ServiceRESTResponse<Object>> printCollo(
@Query("printerType") String printerType,
@Body MtbColt mtbColtToPrint
);
@POST("wms/printEtichettaSSCC")
Call<ServiceRESTResponse<Object>> printCollo(
@Body MtbColt mtbColtToPrint
);
}

View File

@@ -39,7 +39,7 @@ public class _BaseRESTConsumer {
}
} else {
if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata");
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url().toString() + ")");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message());

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -43,9 +44,7 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
private boolean flagEvaso;
private String nomeAgente;
private String codJfas;
private List<AvailableClassMerc> availableClassMerc;
public Integer getIdViaggio() {
return idViaggio;
@@ -363,6 +362,16 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
return this;
}
public List<AvailableClassMerc> getAvailableClassMerc() {
return availableClassMerc;
}
public OrdineUscitaInevasoDTO setAvailableClassMerc(List<AvailableClassMerc> availableClassMerc) {
this.availableClassMerc = availableClassMerc;
return this;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -382,4 +391,28 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
result = 31 * result + getGestione().hashCode();
return result;
}
public static class AvailableClassMerc {
private String codMgrp;
private List<String> codMsgr;
public String getCodMgrp() {
return codMgrp;
}
public AvailableClassMerc setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public List<String> getCodMsgr() {
return codMsgr;
}
public AvailableClassMerc setCodMsgr(List<String> codMsgr) {
this.codMsgr = codMsgr;
return this;
}
}
}

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.settings;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
@@ -33,6 +34,7 @@ public class DBSettingsModel {
private boolean flagForceAllToColli;
private boolean flagSpedizioneEnableManualPick;
private boolean flagSpedizioneCanSelectMultipleOrders;
private List<String> notePerditaDocInterni = new ArrayList<>();
private boolean flagSpedizioneUseQtaOrd;
private String produzioneDefaultCodAnag;
private String reportNameSpedizionChiudiOrdine;
@@ -271,4 +273,13 @@ public class DBSettingsModel {
this.onNumCnfInputChanged = onNumCnfInputChanged;
return this;
}
public List<String> getNotePerditaDocInterni() {
return notePerditaDocInterni;
}
public DBSettingsModel setNotePerditaDocInterni(List<String> notePerditaDocInterni) {
this.notePerditaDocInterni = notePerditaDocInterni;
return this;
}
}

View File

@@ -7,6 +7,7 @@ import com.google.firebase.perf.metrics.Trace;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import it.integry.integrywmsnative.R;
@@ -265,6 +266,10 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("SETUP")
.setKeySection("ON_NUM_CNF_INPUT_CHANGED"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("DOC_INTERNI")
.setKeySection("NOTE_PERDITA"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@@ -289,6 +294,10 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
String notePerdita = getValueFromList(list,"DOC_INTERNI","NOTE_PERDITA",String.class);
if (notePerdita != null){
dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|")));
}
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
if (onNumCnfInputChanged != null) {

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.utility;
public class UtilityBoolean {
public static int toInt(boolean bool) {
return bool ? 1 : 0;
}
}

View File

@@ -7,6 +7,7 @@ import android.text.Html;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.annimon.stream.Stream;
import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.Logger;
@@ -16,6 +17,9 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class UtilityExceptions {
private static final Class<? extends Exception>[] FIREBASE_IGNORED_EXCEPTIONS = new Class[] {
};
public static void defaultException(Context context, Exception ex, Dialog progressDialog) {
defaultException(context, ex);
@@ -55,7 +59,10 @@ public class UtilityExceptions {
.show(fm, "tag");
}
if (!BuildConfig.DEBUG) {
boolean toIgnore = ex.getClass().getName().startsWith("it.integry.integrywmsnative") ||
Stream.of(FIREBASE_IGNORED_EXCEPTIONS).anyMatch(x -> x.isAssignableFrom(ex.getClass()));
if (!BuildConfig.DEBUG && !toIgnore) {
if (sendEmail) UtilityLogger.errorMe(ex);
FirebaseCrashlytics.getInstance().recordException(ex);
}

View File

@@ -28,7 +28,7 @@ import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearchableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
@@ -43,7 +43,7 @@ import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePicking
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class MainAccettazioneFragment extends BaseFragment implements ISearcableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener {
public class MainAccettazioneFragment extends BaseFragment implements ISearchableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener {
public BindableBoolean fabVisible = new BindableBoolean(false);
@@ -53,6 +53,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
private ElevatedToolbar mToolbar;
private String mTextFilter;
private FragmentMainAccettazioneBinding mBinding;
private final ObservableArrayList<MainListAccettazioneListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
@@ -65,10 +66,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
}
public static MainAccettazioneFragment newInstance() {
MainAccettazioneFragment fragment = new MainAccettazioneFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
return new MainAccettazioneFragment();
}
@@ -122,7 +120,9 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
private void initRecyclerView() {
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x->{
this.refreshList(getFilteredList(mTextFilter));
});
MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData)
@@ -228,20 +228,25 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
@Override
public boolean onQueryTextChange(String newText) {
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty()) return false;
mTextFilter = newText;
List<OrdineAccettazioneInevasoDTO> filteredOrders = getFilteredList(newText);
refreshList(filteredOrders);
return true;
}
private List<OrdineAccettazioneInevasoDTO> getFilteredList(String newText) {
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty()) return false;
if(originalList == null || originalList.isEmpty() || newText == null) return originalList;
for(int i = 0; i < originalList.size(); i++){
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){
filteredOrders.add(originalList.get(i));
}
}
refreshList(filteredOrders);
return true;
return filteredOrders;
}
@Override

View File

@@ -23,7 +23,6 @@ import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneExceptio
import it.integry.integrywmsnative.core.exception.InvalidOrderTypeException;
import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -37,7 +36,6 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
@@ -532,10 +530,10 @@ public class AccettazionePickingViewModel {
dataScad = c.getTime();
}
if(partitaMag == null && dataScad == null) {
if (partitaMag == null && dataScad == null) {
HistoryMtbAartDTO historyMtbAartDTO = this.getHistoryItemIfExists(pickingObjectDTO.getMtbAart().getCodMart());
if(historyMtbAartDTO != null) {
if (historyMtbAartDTO != null) {
partitaMag = historyMtbAartDTO.getPartitaMag();
dataScad = historyMtbAartDTO.getDataScad();
}
@@ -788,25 +786,16 @@ public class AccettazionePickingViewModel {
}
private void printCollo(Runnable onComplete) {
this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.SECONDARIA, printerList -> {
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setGestione(cloneMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE ? GestioneEnum.PRODUZIONE : cloneMtbColt.getGestioneEnum());
if (printerList == null || printerList.size() == 0) {
this.sendError(new NoPrintersFoundException());
onComplete.run();
return;
}
String reportName = ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO);
this.mPrinterRESTConsumer.printCollo(
printerList.get(0),
mCurrentMtbColt,
1,
reportName, () -> {
this.sendLUSuccessfullyPrinted();
onComplete.run();
}, ex -> this.sendLUPrintError(ex, onComplete));
}, this::sendError);
this.mPrinterRESTConsumer.printCollo(
PrinterRESTConsumer.Type.SECONDARIA,
cloneMtbColt,
() -> {
this.sendLUSuccessfullyPrinted();
onComplete.run();
}, ex -> this.sendLUPrintError(ex, onComplete));
}

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.contab_doc_interni;
import dagger.Subcomponent;
@Subcomponent()
public interface DocInterniComponent {
@Subcomponent.Factory
interface Factory {
DocInterniComponent create();
}
void inject(DocInterniFragment docInterniFragment);
}

View File

@@ -0,0 +1,206 @@
package it.integry.integrywmsnative.gest.contab_doc_interni;
import android.content.Context;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
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.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity;
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter;
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
public class DocInterniFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, DocInterniViewModel.Listener {
@Inject
DocInterniViewModel mViewModel;
private final ObservableArrayList<DocInterniListModel> mDocInterniMutableData = new ObservableArrayList<>();
private ElevatedToolbar mToolbar;
private FragmentDocInterniBinding mBinding;
private DocInterniSetupDTO mDocInterniSetupDTO;
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
private boolean dialogInitialized = false;
public DocInterniFragment() {
// Required empty public constructor
}
public static DocInterniFragment newInstance() {
DocInterniFragment fragment = new DocInterniFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
titleText.setText(context.getText(R.string.doc_interni).toString());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_doc_interni, container, false);
MainApplication.appComponent
.docInterniComponent()
.create()
.inject(this);
mViewModel.setListeners(this);
mBinding.setLifecycleOwner(this);
mBinding.setView(this);
mBinding.setViewModel(mViewModel);
mViewModel.mtbGrup.observe(getViewLifecycleOwner(),mtbGrup-> mViewModel.fetchProducts());
mViewModel.dtbTipi.observe(getViewLifecycleOwner(),dtbTipi-> mViewModel.fetchDocuments());
this.initRecyclerView();
return mBinding.getRoot();
}
@Override
public void onStart() {
super.onStart();
if (!this.mViewModel.hasDocDetails()){
mViewModel.init();
}else{
this.mViewModel.fetchDocuments();
}
}
@Override
public void onDestroy() {
for (Runnable onPreDestroy : mOnPreDestroyList) {
onPreDestroy.run();
}
super.onDestroy();
}
@Override
public void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO) {
this.mDocInterniSetupDTO = docInterniSetupDTO;
this.dialogInitialized = true;
this.selectDocInfo();
}
@Override
public void onDocDetailsChanged(DialogSelectDocInfoViewModel selection) {
if(selection.isInputValid()){
mViewModel.setSelectedDocDetails(selection);
mBinding.mainFab.setVisibility(View.VISIBLE);
}else{
mBinding.mainFab.setVisibility(View.GONE);
}
if (selection.requiresFornitore()){
mBinding.codAnagContainer.setVisibility(View.VISIBLE);
}else{
mBinding.codAnagContainer.setVisibility(View.GONE);
}
if (selection.getSelectedGruppoArt() != null){
mBinding.mtbGrpContainer.setVisibility(View.VISIBLE);
}else{
mBinding.mtbGrpContainer.setVisibility(View.GONE);
}
if (selection.requiresDocData()){
mBinding.docContainer.setVisibility(View.VISIBLE);
mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))));
}else{
mBinding.docContainer.setVisibility(View.GONE);
}
}
@Override
public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar;
}
@Override
public void addOnPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy);
}
public void selectDocInfo() {
if (this.dialogInitialized){
DialogSelectDocInfoView.newInstance(
mDocInterniSetupDTO,
this.mViewModel.dtbTipi.getValue(),
this.mViewModel.mtbGrup.getValue(),
this.mViewModel.fornitore.getValue(),
this.mViewModel.dataDoc.getValue(),
this.mViewModel.numDoc.getValue(),
this.mViewModel.note.getValue(),
this::onDocDetailsChanged
).show(requireActivity().getSupportFragmentManager(), "tag");
}
}
private void initRecyclerView() {
this.mViewModel.getDocsList().observe(getViewLifecycleOwner(), this::refreshList);
DocInterniListAdapter docInterniListAdapter = new DocInterniListAdapter(this.requireActivity(), this.mDocInterniMutableData);
docInterniListAdapter.setEmptyView(this.mBinding.docInterniEmptyView);
this.mBinding.docInterniMainList.setAdapter(docInterniListAdapter);
this.mBinding.docInterniMainList.setLayoutManager(new LinearLayoutManager(this.requireActivity()));
docInterniListAdapter.setOnItemClicked(this.mViewModel::editDocument);
if (mToolbar != null)
mToolbar.setRecyclerView(this.mBinding.docInterniMainList);
}
private void refreshList(List<DocInternoWrapper> filteredList) {
this.mDocInterniMutableData.clear();
this.mDocInterniMutableData.addAll(convertDataModelToListModel(mViewModel.getDocsList().getValue()));
}
private List<DocInterniListModel> convertDataModelToListModel(List<DocInternoWrapper> dataList) {
return Stream.of(dataList)
.map(x -> {
DocInterniListModel listModel = new DocInterniListModel();
listModel.setDocument(x.getDocument());
listModel.setProductsCount(x.getCountArticoli());
return listModel;
})
.toList();
}
@Override
public void onDocumentEditRequest(SqlMtbColt document, GrigliaAcquistiDTO arts) {
requireActivity().startActivity(DocInterniEditFormActivity.newInstance(requireActivity(),document,arts));
}
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.gest.contab_doc_interni;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
@Module(subcomponents = DocInterniComponent.class)
public class DocInterniModule {
@Provides
DocInterniViewModel docInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository mtbColtRepository) {
return new DocInterniViewModel(docInterniRESTConsumer,mtbColtRepository);
}
}

View File

@@ -0,0 +1,200 @@
package it.integry.integrywmsnative.gest.contab_doc_interni;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.di.BindableInteger;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
public class DocInterniViewModel {
@Inject
MtbColtRepository documentRepository;
private Listener mListener;
private final DocInterniRESTConsumer mDocInterniRESTConsumer;
private boolean productsFetched = true;
private boolean docsFetched = true;
private int nextNumCollo = 0;
private GrigliaAcquistiDTO productsList;
private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
public final MutableLiveData<TipiDocDTO> dtbTipi = new MutableLiveData<>();
public final MutableLiveData<GruppiArticoloDTO> mtbGrup = new MutableLiveData<>();
public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
public final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
public final MutableLiveData<String> numDoc = new MutableLiveData<>();
public final MutableLiveData<String> note = new MutableLiveData<>();
public final BindableInteger artsSize = new BindableInteger(0);
@Inject
public DocInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository documentRepository) {
mDocInterniRESTConsumer = docInterniRESTConsumer;
this.documentRepository = documentRepository;
this.mDocsList.setValue(new ArrayList<>());
}
public void init() {
this.sendOnLoadingStarted();
// new Thread(() -> {
mDocInterniRESTConsumer.getDocInterniSetup(returnDto -> {
this.sendOnLoadingEnded();
this.mListener.onDocInterniSetupFetched(returnDto);
}, this::sendError);
// }).start();
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public DocInterniViewModel setListeners(Listener listener) {
this.mListener = listener;
return this;
}
public MutableLiveData<List<DocInternoWrapper>> getDocsList() {
return mDocsList;
}
public void setSelectedDocDetails(DialogSelectDocInfoViewModel selection) {
this.fornitore.postValue(selection.getSelectedFornitore());
this.mtbGrup.postValue(selection.getSelectedGruppoArt());
this.dataDoc.postValue(selection.getDataDoc());
this.numDoc.postValue(selection.getNumDoc());
this.note.postValue(selection.getNote());
if (selection.getSelectedTipoDoc() != null ) {
this.dtbTipi.postValue(selection.getSelectedTipoDoc());
}
}
public void fetchProducts() {
this.productsFetched = false;
this.sendOnLoadingStarted();
mDocInterniRESTConsumer.fetchProducts(this.getCodDtip(), this.getCodMgrp(), returnDto -> {
this.productsFetched = true;
this.productsList = returnDto;
this.artsSize.set(returnDto.getGrigliaAcquistiChild().size());
if (this.docsFetched) {
this.sendOnLoadingEnded();
}
}, this::sendError);
}
public void fetchDocuments() {
this.docsFetched = false;
this.sendOnLoadingStarted();
String codAnag = null, codVdes = null;
FornitoreDTO fornitore = this.fornitore.getValue();
if (fornitore != null){
codAnag = fornitore.getCodAnag();
codVdes = fornitore.getCodVdes();
}
documentRepository.getLocalDocumentsByCodDtip(this.getCodDtip(), codAnag, codVdes, dataDoc.getValue(),numDoc.getValue(), list -> {
documentRepository.getNextNumCollo(nextNumCollo -> {
this.mDocsList.postValue(list);
this.setNextNumCollo(nextNumCollo);
this.docsFetched = true;
if (this.productsFetched) {
this.sendOnLoadingEnded();
}
}, this::sendError);
}, this::sendError);
}
private void setNextNumCollo(Integer nextNumCollo) {
this.nextNumCollo = nextNumCollo;
}
private String getCodDtip() {
if (this.dtbTipi.getValue() == null) {
return null;
}
return this.dtbTipi.getValue().getCodDtip();
}
private String getCodMgrp() {
if (this.mtbGrup.getValue() == null) {
return null;
}
return this.mtbGrup.getValue().getCodMgrp();
}
public void editDocument(SqlMtbColt document) {
this.mListener.onDocumentEditRequest(document, productsList);
}
public void newDocument() {
SqlMtbColt document = new SqlMtbColt();
if (this.dtbTipi.getValue() == null) {
this.sendError(new Exception("Nessun tipo documento selezionato!"));
return;
}
document.setCodDtipProvv(this.getCodDtip());
document.setCodMgrp(this.getCodMgrp());
document.setDataCollo(new Date());
document.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
document.setAnnotazioni(this.note.getValue());
document.setSegno(-1);
document.setSerCollo("/");
document.setNumCollo(this.nextNumCollo);
document.setGestione("L");
document.setDataDoc(this.dataDoc.getValue());
if (this.numDoc.getValue() != null){
document.setNumDoc(Integer.parseInt(this.numDoc.getValue()));
}
if (this.fornitore.getValue() != null){
document.setCodAnag(this.fornitore.getValue().getCodAnag());
document.setCodVdes(this.fornitore.getValue().getCodVdes());
}
documentRepository.insert(document, id -> {
document.setId(id);
this.editDocument(document);
}, this::sendError);
}
public boolean hasDocDetails() {
return this.dtbTipi.getValue() != null;
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO);
void onDocDetailsChanged(DialogSelectDocInfoViewModel selection);
void onDocumentEditRequest(SqlMtbColt document, GrigliaAcquistiDTO arts);
}
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import dagger.Subcomponent;
@Subcomponent
public interface DialogSelectDocInfoComponent {
@Subcomponent.Factory
interface Factory {
DialogSelectDocInfoComponent create();
}
void inject(DialogSelectDocInfoView dialogSelectDocInfoView);
}

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = DialogSelectDocInfoComponent.class)
public class DialogSelectDocInfoModule {
@Singleton
@Provides
DialogSelectDocInfoViewModel dialogSelectMgrpDtipPairViewModel() {
return new DialogSelectDocInfoViewModel();
}
}

View File

@@ -0,0 +1,240 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import java.util.Date;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.databinding.DialogSelectDocInfoBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
public class DialogSelectDocInfoView extends BaseDialogFragment implements DialogSelectDocInfoViewModel.Listener {
@Inject
DialogSelectDocInfoViewModel mViewModel;
private Context mCurrentContext;
public BindableString codDtip = new BindableString();
public BindableString codMgrp = new BindableString();
public BindableString codAnag = new BindableString();
public BindableString numDoc = new BindableString();
public BindableString note = new BindableString();
public ObservableField<Date> dataDoc = new ObservableField<>();
private ArrayAdapter<String> arrayAdapterCodDtips;
private ArrayAdapter<String> arrayAdapterCodMgrps;
private ArrayAdapter<String> arrayAdapterCodAnags;
private ArrayAdapter<String> arrayAdapterNote;
private DialogSelectDocInfoBinding mBindings;
private final RunnableArgs<DialogSelectDocInfoViewModel> currentOnFilterDone;
private final DocInterniSetupDTO docInterniSetupDTO;
private final TipiDocDTO selectedDtip;
private final GruppiArticoloDTO selectedGrp;
private final FornitoreDTO selectedAnag;
private final Date selectedDataDoc;
private final String selectedNumDoc;
private final String selectedNote;
public static DialogSelectDocInfoView newInstance(
DocInterniSetupDTO docInterniSetupDTO,
TipiDocDTO tipiDocDTO,
GruppiArticoloDTO gruppiArticoloDTO,
FornitoreDTO fornitoreDTO,
Date dataDoc,
String numDoc,
String note,
RunnableArgs<DialogSelectDocInfoViewModel> onDismiss
) {
return new DialogSelectDocInfoView(docInterniSetupDTO, tipiDocDTO, gruppiArticoloDTO, fornitoreDTO, dataDoc, numDoc,note, onDismiss);
}
private DialogSelectDocInfoView(DocInterniSetupDTO docInterniSetupDTO,
TipiDocDTO tipiDocDTO,
GruppiArticoloDTO gruppiArticoloDTO,
FornitoreDTO fornitoreDTO,
Date dataDoc,
String numDoc,
String note,
RunnableArgs<DialogSelectDocInfoViewModel> onDismiss) {
super();
currentOnFilterDone = onDismiss;
this.docInterniSetupDTO = docInterniSetupDTO;
selectedDtip = tipiDocDTO;
selectedGrp = gruppiArticoloDTO;
selectedDataDoc = dataDoc;
selectedNumDoc = numDoc;
selectedNote = note;
selectedAnag = fornitoreDTO;
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
if (currentOnFilterDone != null) currentOnFilterDone.run(mViewModel);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
this.mCurrentContext = this.requireActivity();
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_select_doc_info, container, false);
mBindings.setLifecycleOwner(this);
MainApplication
.appComponent
.dialogSelectMgrpDtipPairComponent()
.create()
.inject(this);
mViewModel.init(docInterniSetupDTO);
mViewModel.setListeners(this);
mBindings.setView(this);
mBindings.setViewmodel(mViewModel);
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
initView();
mBindings.positiveBtn.setOnClickListener(view -> {
if (this.isInputValid()) {
getDialog().dismiss();
}
});
return mBindings.getRoot();
}
private void initView() {
initArrayAdapters();
initBindables();
if (selectedDtip != null) {
codDtip.set(selectedDtip.getLabel());
}
if (selectedGrp != null) {
codMgrp.set(selectedGrp.getLabel());
}
if (selectedAnag != null) {
codAnag.set(selectedAnag.getLabel());
}
if (selectedDataDoc != null) {
dataDoc.set(selectedDataDoc);
}
if (selectedNumDoc != null) {
numDoc.set(selectedNumDoc);
}
if (selectedNote != null) {
note.set(selectedNote);
}
}
private boolean isInputValid() {
if (this.mViewModel.getSelectedTipoDoc() == null) {
mBindings.inputCodDtip.setErrorEnabled(true);
mBindings.inputCodDtip.setError("Seleziona un tipo documento");
return false;
}
if (this.mViewModel.requiresFornitore() && this.mViewModel.getSelectedFornitore() == null) {
mBindings.inputCodAnagForn.setErrorEnabled(true);
mBindings.inputCodAnagForn.setError("Seleziona un fornitore/destinatario");
return false;
}
if (this.mViewModel.requiresDocData() && this.mViewModel.getDataDoc() == null){
mBindings.inputDataDoc.setError("Seleziona la data del documento");
return false;
}
if (this.mViewModel.requiresDocData() && (this.mViewModel.getNumDoc() == null || this.mViewModel.getNumDoc().isEmpty() )){
mBindings.inputNumDoc.setError("Seleziona il numero del documento");
return false;
}
if (this.mViewModel.requiresNote() && (this.mViewModel.getNote() == null || this.mViewModel.getNote().isEmpty() )){
mBindings.inputNoteLayout.setErrorEnabled(true);
mBindings.inputNoteLayout.setError("Specifica delle note per il documento");
return false;
}
return true;
}
private void initArrayAdapters() {
arrayAdapterCodDtips = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
arrayAdapterCodDtips.addAll(mViewModel.getAvailableCodDtips());
mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips);
arrayAdapterCodMgrps = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
arrayAdapterCodMgrps.addAll(mViewModel.getAvailableCodMgrps());
mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps);
arrayAdapterCodAnags = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori());
mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterCodAnags);
arrayAdapterNote = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
arrayAdapterNote.addAll(mViewModel.getAdditionalNotes());
mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote);
}
private void initBindables() {
BindableString.registerListener(codDtip, codDtip -> {
mViewModel.setCodDtip(codDtip);
mBindings.inputCodAnagForn.setVisibility(mViewModel.requiresFornitore() ? View.VISIBLE : View.GONE);
mBindings.inputDataDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE);
mBindings.inputNumDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE);
mBindings.inputNoteLayout.setVisibility(mViewModel.requiresNote() ? View.VISIBLE : View.GONE);
});
BindableString.registerListener(codMgrp, mViewModel::setCodMgrp);
BindableString.registerListener(codAnag, mViewModel::setCodAnag);
BindableString.registerListener(numDoc, mViewModel::setNumDoc);
BindableString.registerListener(note, mViewModel::setNote);
UtilityObservable.addPropertyChanged(this.dataDoc, (value) -> {
this.mViewModel.setDataDoc(value);
});
}
@Override
public void onDocTypeSelected() {
arrayAdapterCodAnags.clear();
if (mViewModel.getSelectedFornitore() != null && !mViewModel.getAvailableFornitori().contains(mViewModel.getSelectedFornitore().getLabel())) {
codAnag.set("");
}
if (mViewModel.getNote() != null && ! mViewModel.requiresNote()){
mViewModel.setNote(null);
}
arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori());
}
}

View File

@@ -0,0 +1,195 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
public class DialogSelectDocInfoViewModel {
private DocInterniSetupDTO mDocInterniSetupDTO;
private String mTipoDoc;
private String mGruppoArt;
private String mFornitore;
private Date mDataDoc;
private String mNumDoc;
private String mNote;
private Listener mListener;
public void init(DocInterniSetupDTO initialList) {
this.mDocInterniSetupDTO = initialList;
}
public String getCodDtip() {
return mTipoDoc;
}
public void setCodDtip(String codDtip) {
this.mTipoDoc = codDtip;
if (this.getSelectedTipoDoc() != null) {
this.mListener.onDocTypeSelected();
}
}
public String getCodMgrp() {
return mGruppoArt;
}
public void setCodMgrp(String codMgrp) {
this.mGruppoArt = codMgrp;
}
public void setCodAnag(String codAnag) {
this.mFornitore = codAnag;
}
public Date getDataDoc() {
return mDataDoc;
}
public void setDataDoc(Date mDataDoc) {
this.mDataDoc = mDataDoc;
}
public String getNumDoc() {
return mNumDoc;
}
public void setNumDoc(String numDoc) {
this.mNumDoc = numDoc;
}
public String getNote() {
return mNote;
}
public DialogSelectDocInfoViewModel setNote(String note) {
this.mNote = note;
return this;
}
public DialogSelectDocInfoViewModel setListeners(Listener listener) {
this.mListener = listener;
return this;
}
public List<String> getAvailableCodDtips() {
return Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList();
}
public List<String> getAvailableCodMgrps() {
return Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList();
}
public List<String> getAvailableFornitori() {
if (!this.requiresFornitore()) {
return new ArrayList<>();
}
TipiDocDTO selectedDocType = getSelectedTipoDoc();
return Stream.of(mDocInterniSetupDTO.getFornitori())
.filter(forn -> {
if (selectedDocType.getGestioneDoc().equalsIgnoreCase("T")) {
return forn.getTipoAnag().equalsIgnoreCase("D") &&
forn.getGestioneAnag().equalsIgnoreCase(
selectedDocType.getGestione().equalsIgnoreCase("V") ? "V" : "A"
);
} else {
return forn.getTipoAnag().equalsIgnoreCase("F") ;
}
})
.map(FornitoreDTO::getLabel).toList();
}
public TipiDocDTO getSelectedTipoDoc() {
return Stream.of(mDocInterniSetupDTO.getTipiDoc()).filter(x -> x.getLabel().equals(mTipoDoc)).findFirstOrElse(null);
}
public FornitoreDTO getSelectedFornitore() {
return Stream.of(mDocInterniSetupDTO.getFornitori()).filter(x -> x.getLabel().equals(mFornitore)).findFirstOrElse(null);
}
public GruppiArticoloDTO getSelectedGruppoArt() {
if (mGruppoArt == null) {
return null;
}
return Stream.of(mDocInterniSetupDTO.getGruppiArt()).filter(x -> x.getLabel().equals(mGruppoArt)).findFirstOrElse(null);
}
public boolean requiresFornitore() {
return this.getSelectedTipoDoc() != null && (
this.getSelectedTipoDoc().getGestioneDoc().equals("T") ||
this.getSelectedTipoDoc().getGestioneDoc().equals("A") ||
(
this.getSelectedTipoDoc().getGestioneDoc().equals("P") &&
!this.getSelectedTipoDoc().getGestione().equals("L")
)
);
}
public boolean requiresNote() {
return this.getSelectedTipoDoc() != null &&
this.getSelectedTipoDoc().getGestioneDoc().equals("P") &&
this.getSelectedTipoDoc().getGestione().equals("L")
;
}
public boolean isInputValid() {
if (this.getSelectedTipoDoc() == null) {
return false;
}
if (this.requiresFornitore() && this.getSelectedFornitore() == null) {
return false;
}
if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)){
return false;
}
if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0) ){
return false;
}
return true;
}
public boolean requiresDocData() {
TipiDocDTO doc = this.getSelectedTipoDoc();
return doc != null && doc.getGestioneDoc().equalsIgnoreCase("P") && !doc.getGestione().equalsIgnoreCase("L");
}
public List<String> getAdditionalNotes() {
return SettingsManager.iDB().getNotePerditaDocInterni();
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onDocTypeSelected();
}
}

View File

@@ -0,0 +1,117 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.math.BigDecimal;
import java.util.Date;
public class ArtDTO {
private Integer rigaOrd;
private String codMart;
private String barcode;
private String descrizione;
private Date dataIns;
private String untMis;
private BigDecimal qta;
private BigDecimal qtaCnf;
private BigDecimal colli;
private String partitaMag;
private Date dataScad;
public Integer getRigaOrd() {
return rigaOrd;
}
public void setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public Date getDataIns() {
return dataIns;
}
public void setDataIns(Date dataIns) {
this.dataIns = dataIns;
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public BigDecimal getQta() {
return qta;
}
public void setQta(BigDecimal qta) {
this.qta = qta;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
}
public BigDecimal getColli() {
return colli;
}
public void setColli(BigDecimal colli) {
this.colli = colli;
}
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public Date getDataScad() {
return dataScad;
}
public void setDataScad(Date dataScad) {
this.dataScad = dataScad;
}
}

View File

@@ -0,0 +1,127 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ColloDTO {
private String codMdep;
private String createdDate;
private String annotazioni;
private String gestione;
private String segno;
private String idDisp;
private String codDtip;
private List<ArtDTO> artRows = new ArrayList<>();
private RifOrd rifOrd;
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(String codMdep) {
this.codMdep = codMdep;
}
public String getCreatedDate() {
return createdDate;
}
public void setCreatedDate(String createdDate) {
this.createdDate = createdDate;
}
public String getAnnotazioni() {
return annotazioni;
}
public void setAnnotazioni(String annotazioni) {
this.annotazioni = annotazioni;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public String getSegno() {
return segno;
}
public void setSegno(String segno) {
this.segno = segno;
}
public String getIdDisp() {
return idDisp;
}
public void setIdDisp(String idDisp) {
this.idDisp = idDisp;
}
public String getCodDtip() {
return codDtip;
}
public void setCodDtip(String codDtip) {
this.codDtip = codDtip;
}
public List<ArtDTO> getArtRows() {
return artRows;
}
public void setArtRows(List<ArtDTO> artRows) {
this.artRows = artRows;
}
public void addArtRow(ArtDTO artRow){
this.artRows.add(artRow);
}
public RifOrd getRifOrd() {
return rifOrd;
}
public void setRifOrd(RifOrd rifOrd) {
this.rifOrd = rifOrd;
}
public static class RifOrd {
private Date dataOrd;
private Integer numOrd;
private String chiaveOrd;
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
}
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
}
public String getChiaveOrd() {
return chiaveOrd;
}
public void setChiaveOrd(String chiaveOrd) {
this.chiaveOrd = chiaveOrd;
}
}
}

View File

@@ -0,0 +1,148 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class DocFromPickingDTO {
String codAnag, codVdes, tipoLista, noteDoc;
Date dataDoc;
Integer numDoc;
List<DatiCollo> colli;
List<Pedane> pedane;
public String getCodAnag() {
return codAnag;
}
public DocFromPickingDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodVdes() {
return codVdes;
}
public DocFromPickingDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public String getTipoLista() {
return tipoLista;
}
public DocFromPickingDTO setTipoLista(String tipoLista) {
this.tipoLista = tipoLista;
return this;
}
public String getNoteDoc() {
return noteDoc;
}
public DocFromPickingDTO setNoteDoc(String noteDoc) {
this.noteDoc = noteDoc;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public DocFromPickingDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Integer getNumDoc() {
return numDoc;
}
public DocFromPickingDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public List<DatiCollo> getColli() {
return colli;
}
public DocFromPickingDTO setColli(List<DatiCollo> colli) {
this.colli = colli;
return this;
}
public List<Pedane> getPedane() {
return pedane;
}
public void setPedane(List<Pedane> pedane) {
this.pedane = pedane;
}
public static class Pedane {
String codTcol;
BigDecimal qta;
public String getCodTcol() {
return codTcol;
}
public void setCodTcol(String codTcol) {
this.codTcol = codTcol;
}
public BigDecimal getQta() {
return qta;
}
public void setQta(BigDecimal qta) {
this.qta = qta;
}
}
public static class DatiCollo {
String gestione, serCollo;
Date dataCollo;
Integer numCollo;
public String getGestione() {
return gestione;
}
public DatiCollo setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public String getSerCollo() {
return serCollo;
}
public DatiCollo setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public Date getDataCollo() {
return dataCollo;
}
public DatiCollo setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public DatiCollo setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
}
}

View File

@@ -0,0 +1,38 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.List;
public class DocInterniSetupDTO {
private List<TipiDocDTO> tipiDoc;
private List<GruppiArticoloDTO> gruppiArt;
private List<FornitoreDTO> fornitori;
public List<TipiDocDTO> getTipiDoc() {
return tipiDoc;
}
public void setTipiDoc(List<TipiDocDTO> tipiDoc) {
this.tipiDoc = tipiDoc;
}
public List<GruppiArticoloDTO> getGruppiArt() {
return gruppiArt;
}
public void setGruppiArt(List<GruppiArticoloDTO> gruppiArt) {
this.gruppiArt = gruppiArt;
}
public List<FornitoreDTO> getFornitori() {
return fornitori;
}
public void setFornitori(List<FornitoreDTO> fornitori) {
this.fornitori = fornitori;
}
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class DocSetupDTO {
}

View File

@@ -0,0 +1,60 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class FornitoreDTO {
private String codAnag;
private String descrizione;
private String codVdes;
private String tipoAnag;
private String gestioneAnag;
public String getCodAnag() {
return codAnag;
}
public void setCodAnag(String codAnag) {
this.codAnag = codAnag;
}
public String getCodVdes() {
return codVdes;
}
public void setCodVdes(String codVdes) {
this.codVdes = codVdes;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getTipoAnag() {
return tipoAnag;
}
public void setTipoAnag(String tipoAnag) {
this.tipoAnag = tipoAnag;
}
public String getGestioneAnag() {
return gestioneAnag;
}
public void setGestioneAnag(String gestioneAnag) {
this.gestioneAnag = gestioneAnag;
}
public String getLabel() {
return this.codAnag + (this.codVdes != null ? " - "+ this.codVdes : "") +" ( " + this.descrizione+" )";
}
}

View File

@@ -0,0 +1,147 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.math.BigDecimal;
public class GrigliaAcquistiChildDTO {
public String codMart;
public String descrizione;
public String untMis;
public BigDecimal qtaCnf;
public String barcode;
public BigDecimal merceDaRic;
public BigDecimal mediaSett;
public String flagQtaMultipla;
public String flagTracciabilita;
public BigDecimal qtaMinOrdinabile;
private int ggScadenza;
private float giacenza;
private float qtaPrevistaVendita;
private float qtaProposta;
public String getCodMart() {
return codMart;
}
public GrigliaAcquistiChildDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getDescrizione() {
return descrizione;
}
public GrigliaAcquistiChildDTO setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getUntMis() {
return untMis;
}
public GrigliaAcquistiChildDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public GrigliaAcquistiChildDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public String getBarcode() {
return barcode;
}
public GrigliaAcquistiChildDTO setBarcode(String barcode) {
this.barcode = barcode;
return this;
}
public BigDecimal getMerceDaRic() {
return merceDaRic;
}
public GrigliaAcquistiChildDTO setMerceDaRic(BigDecimal merceDaRic) {
this.merceDaRic = merceDaRic;
return this;
}
public BigDecimal getMediaSett() {
return mediaSett;
}
public GrigliaAcquistiChildDTO setMediaSett(BigDecimal mediaSett) {
this.mediaSett = mediaSett;
return this;
}
public String getFlagQtaMultipla() {
return flagQtaMultipla;
}
public GrigliaAcquistiChildDTO setFlagQtaMultipla(String flagQtaMultipla) {
this.flagQtaMultipla = flagQtaMultipla;
return this;
}
public BigDecimal getQtaMinOrdinabile() {
return qtaMinOrdinabile;
}
public GrigliaAcquistiChildDTO setQtaMinOrdinabile(BigDecimal qtaMinOrdinabile) {
this.qtaMinOrdinabile = qtaMinOrdinabile;
return this;
}
public String getFlagTracciabilita() {
return flagTracciabilita;
}
public GrigliaAcquistiChildDTO setFlagTracciabilita(String flagTracciabilita) {
this.flagTracciabilita = flagTracciabilita;
return this;
}
public int getGgScadenza() {
return ggScadenza;
}
public GrigliaAcquistiChildDTO setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
return this;
}
public float getGiacenza() {
return giacenza;
}
public GrigliaAcquistiChildDTO setGiacenza(float giacenza) {
this.giacenza = giacenza;
return this;
}
public float getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public GrigliaAcquistiChildDTO setQtaPrevistaVendita(float qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
return this;
}
public float getQtaProposta() {
return qtaProposta;
}
public GrigliaAcquistiChildDTO setQtaProposta(float qtaProposta) {
this.qtaProposta = qtaProposta;
return this;
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.List;
public class GrigliaAcquistiDTO {
private String descrLisa;
private String descrDepo;
private List<GrigliaAcquistiChildDTO> grigliaAcquistiChild;
public String getDescrLisa() {
return descrLisa;
}
public void setDescrLisa(String descrLisa) {
this.descrLisa = descrLisa;
}
public String getDescrDepo() {
return descrDepo;
}
public void setDescrDepo(String descrDepo) {
this.descrDepo = descrDepo;
}
public List<GrigliaAcquistiChildDTO> getGrigliaAcquistiChild() {
return grigliaAcquistiChild;
}
public void setGrigliaAcquistiChild(List<GrigliaAcquistiChildDTO> grigliaAcquistiChild) {
this.grigliaAcquistiChild = grigliaAcquistiChild;
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class GruppiArticoloDTO {
private String codMgrp;
private String descrizione;
public String getCodMgrp() {
return codMgrp;
}
public void setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getLabel() {
return this.codMgrp+" - "+this.descrizione;
}
}

View File

@@ -0,0 +1,31 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.Date;
import java.util.List;
/**
* Created by GiuseppeS on 28/06/2017.
*/
public class InventarioDTO {
private List<Object> rowList;
private Date dataCreate;
public List<Object> getRowList() {
return rowList;
}
public void setRowList(List<Object> rowList) {
this.rowList = rowList;
}
public Date getDataCreate() {
return dataCreate;
}
public void setDataCreate(Date dataCreate) {
this.dataCreate = dataCreate;
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.Date;
import java.util.List;
public class OrdineDTO {
private String chiaveGriglia;
private Date dataCons;
private List<ArtDTO> artRows;
public String getChiaveGriglia() {
return chiaveGriglia;
}
public void setChiaveGriglia(String chiaveGriglia) {
this.chiaveGriglia = chiaveGriglia;
}
public Date getDataCons() {
return dataCons;
}
public void setDataCons(Date dataCons) {
this.dataCons = dataCons;
}
public List<ArtDTO> getArtRows() {
return artRows;
}
public void setArtRows(List<ArtDTO> artRows) {
this.artRows = artRows;
}
}

View File

@@ -0,0 +1,98 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class PropostaOrdineDTO {
List<ArticoliDTO> articoli;
private Date dataOrd;
private String compilatoDa;
public Date getDataOrd() {
return dataOrd;
}
public PropostaOrdineDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public String getCompilatoDa() {
return compilatoDa;
}
public PropostaOrdineDTO setCompilatoDa(String compilatoDa) {
this.compilatoDa = compilatoDa;
return this;
}
public List<ArticoliDTO> getArticoli() {
return articoli;
}
public PropostaOrdineDTO setArticoli(List<ArticoliDTO> articoli) {
this.articoli = articoli;
return this;
}
public static class ArticoliDTO {
String codMart, untMis, codArtFor, listino;
BigDecimal qtaOrd, qtaCnf;
public String getCodMart() {
return codMart;
}
public ArticoliDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getUntMis() {
return untMis;
}
public ArticoliDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public String getCodArtFor() {
return codArtFor;
}
public ArticoliDTO setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
public String getListino() {
return listino;
}
public ArticoliDTO setListino(String listino) {
this.listino = listino;
return this;
}
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public ArticoliDTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public ArticoliDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
}
}

View File

@@ -0,0 +1,115 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
import java.util.Date;
public class SaveDTO {
private String gestione;
private String codMdep;
private String idDisp;
private String zona;
private String segno;
private Date listCreate;
private String annotazioni;
private String codDtip;
private Integer idInventario;
private OrdineDTO ordineDTO;
private ColloDTO colloDTO;
private InventarioDTO inventarioDTO;
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(String codMdep) {
this.codMdep = codMdep;
}
public String getIdDisp() {
return idDisp;
}
public void setIdDisp(String idDisp) {
this.idDisp = idDisp;
}
public String getZona() {
return zona;
}
public void setZona(String zona) {
this.zona = zona;
}
public String getSegno() {
return segno;
}
public void setSegno(String segno) {
this.segno = segno;
}
public Date getListCreate() {
return listCreate;
}
public void setListCreate(Date listCreate) {
this.listCreate = listCreate;
}
public String getAnnotazioni() {
return annotazioni;
}
public void setAnnotazioni(String annotazioni) {
this.annotazioni = annotazioni;
}
public String getCodDtip() {
return codDtip;
}
public void setCodDtip(String codDtip) {
this.codDtip = codDtip;
}
public Integer getIdInventario() {
return idInventario;
}
public void setIdInventario(Integer idInventario) {
this.idInventario = idInventario;
}
public OrdineDTO getOrdineDTO() {
return ordineDTO;
}
public void setOrdineDTO(OrdineDTO ordineDTO) {
this.ordineDTO = ordineDTO;
}
public ColloDTO getColloDTO() {
return colloDTO;
}
public void setColloDTO(ColloDTO colloDTO) {
this.colloDTO = colloDTO;
}
public InventarioDTO getInventarioDTO() {
return inventarioDTO;
}
public void setInventarioDTO(InventarioDTO inventarioDTO) {
this.inventarioDTO = inventarioDTO;
}
}

View File

@@ -0,0 +1,44 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class TipiDocDTO {
private String codDtip;
private String descrizione;
private String gestione;
private String gestioneDoc;
public String getCodDtip() {
return codDtip;
}
public void setCodDtip(String codDtip) {
this.codDtip = codDtip;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public String getGestioneDoc() {
return gestioneDoc;
}
public void setGestioneDoc(String gestioneDoc) {
this.gestioneDoc = gestioneDoc;
}
public String getLabel(){
return this.codDtip +" - "+this.descrizione;
}
}

View File

@@ -0,0 +1,311 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableInteger;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
public class DocInterniEditFormActivity extends BaseActivity implements DocInterniEditFormViewModel.Listener, BottomSheetMtbColrEditView.Listener {
private static String DATA_KEY_DOCUMENT = "document";
private static String DATA_KEY_PRODUCTS_LIST = "productsList";
@Inject
MtbColrRepository documentRowsRepository;
@Inject
DocInterniEditFormViewModel viewModel;
private int mBarcodeScannerIstanceID;
private ActivityContabDocInterniEditBinding binding;
public BindableString documentHeader = new BindableString(true);
public BindableString documentRifHeader = new BindableString(true);
public BindableString codDtip = new BindableString();
public BindableString note = new BindableString();
public BindableString codMgrp = new BindableString();
public BindableString codAnag = new BindableString();
public BindableInteger prodsCount = new BindableInteger(0);
public BindableBoolean isDocumentExportable = new BindableBoolean(false);
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
public static Intent newInstance(Context context, SqlMtbColt document, GrigliaAcquistiDTO productList) {
Intent myIntent = new Intent(context, DocInterniEditFormActivity.class);
String doc = DataCache.addItem(document);
String productsKey = DataCache.addItem(productList);
myIntent.putExtra(DATA_KEY_DOCUMENT, doc);
myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey);
return myIntent;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_contab_doc_interni_edit);
MainApplication.appComponent
.docInterniEditFormComponent()
.create()
.inject(this);
SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT));
GrigliaAcquistiDTO griglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST));
List<GrigliaAcquistiChildDTO> productList = griglia.getGrigliaAcquistiChild();
this.initViewModel(document, productList);
this.initView();
this.initBindables();
this.initRecyclerView();
}
private void initBindables() {
SqlMtbColt document = this.viewModel.getDocument();
this.codDtip.set(document.getCodDtipProvv());
this.note.set(document.getAnnotazioni());
if(document.getCodMgrp() != null){
this.codMgrp.set(document.getCodMgrp());
}else{
binding.mtbGrupContainer.setVisibility(View.GONE);
}
if (document.getCodAnag() != null){
this.codAnag.set(document.getCodAnag() + (document.getCodVdes()!=null?" - "+document.getCodVdes():""));
}else{
this.binding.supplierLayout.setVisibility(View.GONE);
}
this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv()));
if (document.getNumDoc() != null && document.getDataDoc() != null){
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), document.getDataDoc()));
}else{
this.binding.docRifLayout.setVisibility(View.GONE);
}
}
private void initView() {
binding.setViewModel(this.viewModel);
binding.setView(this);
setSupportActionBar(binding.toolbar);
binding.toolbar.setTitle(R.string.edit_doc);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FabMenuCustomAnimations.changeIconOnFocus(binding.closeActivityFab, R.drawable.ic_menu_24dp, R.drawable.ic_close_24dp);
binding.bottomSheetMtbColrEdit.setListener(this);
binding.bottomSheetMtbColrEdit.init(binding.bottomSheetMtbColrEdit, binding.bottomSheetMtbColrEditBackground);
}
private void initViewModel(SqlMtbColt document, List<GrigliaAcquistiChildDTO> productList) {
this.viewModel.setListeners(this);
this.viewModel.setDocument(document);
this.viewModel.setProductsList(productList);
}
private void initRecyclerView() {
this.viewModel.docRows.observe(this, this::refreshList);
DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList);
listAdapter.setEmptyView(binding.scanArtSpinner);
binding.documentRowsList.setAdapter(listAdapter);
binding.documentRowsList.setLayoutManager(new LinearLayoutManager(this));
listAdapter.setOnItemClicked(row -> {
binding.bottomSheetMtbColrEdit.setMtbColr(sqlToEntity(row));
binding.bottomSheetMtbColrEdit.expand();
});
}
private void refreshList(List<SqlMtbColr> sqlMtbColrs) {
this.documentRowsObservableList.clear();
this.documentRowsObservableList.addAll(this.viewModel.docRows.getValue());
}
public void closeEdit() {
this.onBackPressed();
}
public void manualSearch() {
BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", null, this.viewModel::onSearch, BarcodeManager::enable).show();
}
@Override
protected void onStart() {
super.onStart();
SqlMtbColt document = this.viewModel.getDocument();
if (document == null) {
Toast.makeText(this, "Nesusn documento selezionato!", Toast.LENGTH_SHORT).show();
closeEdit();
return;
}
if (document.getCodDtip() != null) {
Toast.makeText(this, "Impossibile modificare un documento esportato", Toast.LENGTH_SHORT).show();
closeEdit();
return;
}
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(this.viewModel::onScanSuccessful)
.setOnScanFailed(this::onError));
this.viewModel.fetchDocumentRows();
}
@Override
protected void onDestroy() {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
super.onDestroy();
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onRowsChanged(List<SqlMtbColr> rows) {
this.prodsCount.set(rows.size());
this.isDocumentExportable.set(rows.size() > 0);
}
@Override
public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita) {
MtbAart mtbAart = new MtbAart();
mtbAart.setBarCode(row.getCodBarre());
mtbAart.setDiacod(row.getCodBarre());
mtbAart.setCodMart(row.getCodMart());
mtbAart.setFlagQtaCnfFissa("S");
mtbAart.setQtaCnf(BigDecimal.valueOf(row.getQtaCnf()));
mtbAart.setDescrizione(row.getDescrizione());
mtbAart.setDescrizioneEstesa(row.getDescrizione());
mtbAart.setFlagTracciabilita(flagTracciabilita? "S" : "N");
mtbAart.setUntMis(row.getUntMis());
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
.setMtbAart(mtbAart)
.setInitialNumCnf(BigDecimal.valueOf(row.getNumCnf()))
.setInitialQtaCnf(BigDecimal.valueOf(row.getQtaCnf()))
.setInitialQtaTot(BigDecimal.valueOf(row.getQtaCol()))
.setNote(row.getNote())
.setPartitaMag(row.getPartitaMag())
.setDataScad(row.getDataScad())
.setCanOverflowOrderQuantity(false)
.setCanLUBeClosed(false)
.setNotesAllowed(true)
.setDataScadMandatory(flagTracciabilita)
.setCanPartitaMagBeChanged(flagTracciabilita)
.setSuggestPartitaMag(data -> {
Date dataScad = data.getDataScad();
String partitaMag = null;
if (dataScad != null){
partitaMag = new SimpleDateFormat("yyyymmdd").format(dataScad);
}
return partitaMag;
});
DialogInputQuantityV2View
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
this.onLoadingStarted();
this.viewModel.saveRow(row, resultDTO);
}, this::onLoadingEnded)
.show(getSupportFragmentManager(), "tag");
}
@Override
public void onDocumentHoldRequest() {
this.closeEdit();
}
@Override
public void onDocExported() {
runOnUiThread(() -> {
DialogCommon.showDataSaved(this, this::closeEdit);
});
}
@Override
public void onBackPressed() {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
super.onBackPressed();
}
@Override
public void onMtbColrEdit(MtbColr mtbColr) {
GrigliaAcquistiChildDTO articolo = viewModel.getArticoloByCodMart(mtbColr.getCodMart());
this.viewModel.editRow(entityToSql(mtbColr),articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
}
@Override
public void onMtbColrDelete(MtbColr mtbColr) {
this.viewModel.deleteRow(entityToSql(mtbColr));
}
private MtbColr sqlToEntity(SqlMtbColr sqlMtbColr) {
MtbColr entity = new MtbColr();
entity
.setCodMart(sqlMtbColr.getCodMart())
.setSerCollo(sqlMtbColr.getSerCollo())
.setGestione(sqlMtbColr.getGestione())
.setNumCollo(sqlMtbColr.getNumCollo())
.setDataCollo(UtilityDate.formatDate(sqlMtbColr.getDataCollo(), UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH))
.setRiga(sqlMtbColr.getRiga())
.setDescrizione(sqlMtbColr.getDescrizione())
.setUntMis(sqlMtbColr.getUntMis())
.setCodBarre(sqlMtbColr.getCodBarre())
.setQtaCnf(BigDecimal.valueOf(sqlMtbColr.getQtaCnf()))
.setNumCnf(BigDecimal.valueOf(sqlMtbColr.getNumCnf()))
.setMtbPartitaMag(new MtbPartitaMag().setDataScad(sqlMtbColr.getDataScad()))
.setQtaCol(BigDecimal.valueOf(sqlMtbColr.getQtaCol()));
return entity;
}
private SqlMtbColr entityToSql(MtbColr mtbColr) {
return Stream.of(this.viewModel.getDocumentRows())
.filter(row -> row.getRiga().equals(mtbColr.getRiga()))
.findFirstOrElse(null);
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import dagger.Subcomponent;
@Subcomponent
public interface DocInterniEditFormComponent {
@Subcomponent.Factory
interface Factory {
DocInterniEditFormComponent create();
}
void inject(DocInterniEditFormActivity docInterniEditFormActivity);
}

View File

@@ -0,0 +1,20 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
@Module(subcomponents = DocInterniEditFormComponent.class)
public class DocInterniEditFormModule {
@Provides
DocInterniEditFormViewModel docInterniEditFormViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColrRepository mtbColrRepository, MtbColtRepository mtbColtRepository) {
return new DocInterniEditFormViewModel(docInterniRESTConsumer,mtbColrRepository, mtbColtRepository);
}
}

View File

@@ -0,0 +1,266 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO;
public class DocInterniEditFormViewModel {
@Inject
MtbColrRepository mtbColrRepository;
@Inject
MtbColtRepository mtbColtRepository;
private final DocInterniRESTConsumer docInterniRESTConsumer;
private DocInterniEditFormViewModel.Listener listener;
private List<GrigliaAcquistiChildDTO> productsList;
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
@Inject
public DocInterniEditFormViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColrRepository mtbColrRepository, MtbColtRepository mtbColtRepository) {
this.docInterniRESTConsumer = docInterniRESTConsumer;
this.mtbColrRepository = mtbColrRepository;
this.mtbColtRepository = mtbColtRepository;
this.docRows.setValue(new ArrayList<>());
}
private void sendOnLoadingStarted() {
if (this.listener != null) listener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.listener != null) listener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.listener != null) listener.onError(ex);
}
public void fetchDocumentRows() {
this.sendOnLoadingStarted();
mtbColrRepository.getDocumentRows(this.document.getValue(), rows -> {
this.docRows.postValue(rows);
this.listener.onRowsChanged(rows);
this.sendOnLoadingEnded();
}, this::sendError);
}
public void editRow(SqlMtbColr row,boolean flagTracciabilita) {
this.listener.onEditRowRequest(row,flagTracciabilita);
}
private Integer getNextIdRiga() {
List<SqlMtbColr> rows = this.docRows.getValue();
if (rows == null || rows.size() <= 0) {
return 1;
}
return Stream.of(rows).mapToInt(SqlMtbColr::getRiga).max().getAsInt() + 1;
}
public void exportDocument() {
this.sendOnLoadingStarted();
docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> {
SqlMtbColt document = this.getDocument();
document.setCodDtip(document.getCodDtipProvv());
mtbColtRepository.update(document, doc -> {
this.sendOnLoadingEnded();
this.listener.onDocExported();
}, this::sendError);
}, this::sendError);
}
public void deleteDocument() {
this.sendOnLoadingStarted();
docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> {
SqlMtbColt document = this.getDocument();
document.setCodDtip(document.getCodDtipProvv());
mtbColtRepository.update(document, doc -> {
this.sendOnLoadingEnded();
this.listener.onDocExported();
}, this::sendError);
}, this::sendError);
}
public void holdDocument() {
this.listener.onDocumentHoldRequest();
}
public void onSearch(String search) {
this.sendOnLoadingStarted();
GrigliaAcquistiChildDTO articolo = this.searchArticolo(search);
if (articolo == null) {
this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!"));
this.sendOnLoadingEnded();
return;
}
SqlMtbColr row = this.getRowForArticolo(articolo);
this.editRow(row,articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
}
private SqlMtbColr getRowForArticolo(GrigliaAcquistiChildDTO articolo) {
List<SqlMtbColr> docRows = this.docRows.getValue();
if (docRows == null) {
docRows = new ArrayList<>();
}
SqlMtbColt document = this.document.getValue();
SqlMtbColr row = Stream.of(docRows).filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null);
if (row == null) {
row = new SqlMtbColr();
row.setIdCollo(document.getId());
row.setRiga(getNextIdRiga());
row.setCodMart(articolo.getCodMart());
row.setSerCollo(document.getSerCollo());
row.setGestione(document.getGestione());
row.setNumCollo(document.getNumCollo());
row.setDataCollo(document.getDataCollo());
row.setDescrizione(articolo.getDescrizione());
row.setUntMis(articolo.getUntMis());
row.setCodBarre(articolo.getBarcode());
row.setQtaCnf(articolo.getQtaCnf().floatValue());
row.setNumCnf(0f);
row.setQtaCol(0f);
}
return row;
}
private GrigliaAcquistiChildDTO searchArticolo(String filter) {
return Stream.of(this.productsList).filter(dto -> dto.getCodMart().equalsIgnoreCase(filter) || dto.getBarcode().equalsIgnoreCase(filter)).findFirstOrElse(null);
}
private SaveDTO getSaveDto() {
SqlMtbColt document = this.getDocument();
SaveDTO saveDTO = new SaveDTO();
saveDTO.setIdDisp("1");
saveDTO.setGestione(document.getGestione());
saveDTO.setCodMdep(document.getCodMdep());
saveDTO.setCodDtip(document.getCodDtipProvv());
saveDTO.setAnnotazioni(document.getAnnotazioni());
saveDTO.setSegno(document.getSegno().toString());
ColloDTO collo = new ColloDTO();
collo.setIdDisp("1");
collo.setGestione(document.getGestione());
collo.setCodMdep(document.getCodMdep());
collo.setCodDtip(document.getCodDtipProvv());
collo.setCreatedDate(UtilityDate.formatDate(document.getDataCollo(), UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
collo.setAnnotazioni(document.getAnnotazioni());
collo.setSegno(saveDTO.getSegno());
for (SqlMtbColr row : this.getDocumentRows()) {
ArtDTO artDto = new ArtDTO();
artDto.setBarcode(row.getCodBarre());
artDto.setQta(BigDecimal.valueOf(row.getQtaCol()));
artDto.setDataIns(row.getDataCollo());
artDto.setColli(BigDecimal.valueOf(row.getNumCnf()));
artDto.setUntMis(row.getUntMis());
artDto.setCodMart(row.getCodMart());
if (row.getDataScad() != null) {
artDto.setDataScad(row.getDataScad());
}
artDto.setDescrizione(row.getDescrizione());
collo.addArtRow(artDto);
}
saveDTO.setColloDTO(collo);
return saveDTO;
}
public DocInterniEditFormViewModel setListeners(Listener listener) {
this.listener = listener;
return this;
}
public void setDocument(SqlMtbColt document) {
this.document.setValue(document);
}
public SqlMtbColt getDocument() {
return document.getValue();
}
public List<GrigliaAcquistiChildDTO> getProductsList() {
return productsList;
}
public void setProductsList(List<GrigliaAcquistiChildDTO> productsList) {
this.productsList = productsList;
}
public void onScanSuccessful(BarcodeScanDTO dto) {
String code = dto.getStringValue();
this.onSearch(code);
}
public void saveRow(SqlMtbColr row, DialogInputQuantityV2ResultDTO resultDTO) {
row.setQtaCnf(resultDTO.getQtaCnf().floatValue());
row.setNumCnf(resultDTO.getNumCnf().floatValue());
row.setQtaCol(resultDTO.getQtaTot().floatValue());
row.setNote(resultDTO.getNote());
row.setDataScad(resultDTO.getDataScad());
if (row.getId() > 0) {
this.mtbColrRepository.update(row, id -> {
this.fetchDocumentRows();
}, this::sendError);
} else {
this.mtbColrRepository.insert(row, id -> {
this.fetchDocumentRows();
}, this::sendError);
}
}
public void deleteRow(SqlMtbColr sqlMtbColr) {
mtbColrRepository.delete(sqlMtbColr, this::fetchDocumentRows, this::sendError);
}
public void setNote(String note) {
SqlMtbColt document = this.document.getValue();
document.setAnnotazioni(note);
mtbColtRepository.update(document, doc -> this.document.postValue(doc), this::sendError);
}
public List<SqlMtbColr> getDocumentRows() {
return this.docRows.getValue();
}
public GrigliaAcquistiChildDTO getArticoloByCodMart(String codMart) {
return Stream.of(productsList).filter(prod->prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null);
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onRowsChanged(List<SqlMtbColr> rows);
void onEditRowRequest(SqlMtbColr row,boolean flagTracciabilita);
void onDocumentHoldRequest();
void onDocExported();
}
}

View File

@@ -0,0 +1,66 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.RecyclerView;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.ActivityContabDocInternoRowListSingleItemBinding;
import it.integry.integrywmsnative.databinding.DocInterniListModelBinding;
public class DocumentRowsListAdapter extends ExtendedRecyclerView<SqlMtbColr, DocumentRowsListAdapter.SingleItemViewHolder> {
private Context mContext;
private RunnableArgs<SqlMtbColr> mOnItemClicked;
public DocumentRowsListAdapter(Context context, ObservableArrayList<SqlMtbColr> myDataset) {
super(myDataset);
this.mContext = context;
}
@NonNull
@Override
public SingleItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ActivityContabDocInternoRowListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.activity_contab_doc_interno_row__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindViewHolder(@NonNull SingleItemViewHolder holder, int position) {
final SqlMtbColr row = mDataset.get(position);
holder.binding.setItem(row);
holder.binding.executePendingBindings();
holder.binding.getRoot().setOnClickListener(v -> {
if (this.mOnItemClicked != null)
this.mOnItemClicked.run(row);
});
}
public void setOnItemClicked(RunnableArgs<SqlMtbColr> onItemClicked){
this.mOnItemClicked = onItemClicked;
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
ActivityContabDocInternoRowListSingleItemBinding binding;
SingleItemViewHolder(ActivityContabDocInternoRowListSingleItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}

View File

@@ -0,0 +1,66 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
import com.google.gson.JsonObject;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class DocInterniRESTConsumer extends _BaseRESTConsumer {
public void getDocInterniSetup(RunnableArgs<DocInterniSetupDTO> onComplete, RunnableArgs<Exception> onFailed) {
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
service.getSetupDocInterni().enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<DocInterniSetupDTO>> call, Response<ServiceRESTResponse<DocInterniSetupDTO>> response) {
analyzeAnswer(response, "getSetupDocInterni", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<DocInterniSetupDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void fetchProducts(String codDtip, String codMgrp, RunnableArgs<GrigliaAcquistiDTO> onComplete, RunnableArgs<Exception> onFailed) {
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
service.fetchProducts(codDtip,codMgrp,"L").enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<GrigliaAcquistiDTO>> call, Response<ServiceRESTResponse<GrigliaAcquistiDTO>> response) {
analyzeAnswer(response, "fetchProducts", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<GrigliaAcquistiDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed){
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
service.save(saveDTO).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) {
analyzeAnswer(response, "saveDoc", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<JsonObject>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,26 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
import com.google.gson.JsonObject;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface DocInterniRESTConsumerService {
@GET("getDocInterniSetup")
Call<ServiceRESTResponse<DocInterniSetupDTO>> getSetupDocInterni();
@POST("SM2SaveTerminalinoWMS")
Call<ServiceRESTResponse<JsonObject>> save(@Body SaveDTO saveDTO);
@GET("getElencoArticoli")
Call<ServiceRESTResponse<GrigliaAcquistiDTO>> fetchProducts(@Query("codDtip") String codDtip, @Query("codMgrp") String codMgrp, @Query("gestione") String gestione);
}

View File

@@ -0,0 +1,72 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.ui;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.RecyclerView;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.DocInterniListModelBinding;
public class DocInterniListAdapter extends ExtendedRecyclerView<DocInterniListModel, DocInterniListAdapter.SingleItemViewHolder> {
private Context mContext;
private RunnableArgs<SqlMtbColt> mOnItemClicked;
public DocInterniListAdapter(Context context, ObservableArrayList<DocInterniListModel> myDataset) {
super(myDataset);
this.mContext = context;
}
@NonNull
@Override
public SingleItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
DocInterniListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.doc_interni_list_model, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindViewHolder(@NonNull SingleItemViewHolder holder, int position) {
final DocInterniListModel doc = mDataset.get(position);
SqlMtbColt mtbColt = doc.getDocument();
String testataDocString = String.format(mContext.getString(R.string.doc_interni_doc_header), mtbColt.getId(), mtbColt.getCodDtipProvv());
holder.binding.dataDoc.setText(Html.fromHtml(UtilityDate.formatDate(mtbColt.getDataCollo(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN)));
holder.binding.docDescription.setText(Html.fromHtml(testataDocString));
holder.binding.numRows.setText(Html.fromHtml(String.format(mContext.getString(R.string.doc_interni_num_arts_doc), doc.getProductsCount())));
holder.binding.executePendingBindings();
holder.binding.getRoot().setOnClickListener(v -> {
if (this.mOnItemClicked != null)
this.mOnItemClicked.run(mtbColt);
});
}
public void setOnItemClicked(RunnableArgs<SqlMtbColt> onItemClicked){
this.mOnItemClicked = onItemClicked;
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
DocInterniListModelBinding binding;
SingleItemViewHolder(DocInterniListModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.ui;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
public class DocInterniListModel {
private SqlMtbColt document;
private int productsCount;
public SqlMtbColt getDocument() {
return document;
}
public void setDocument(SqlMtbColt document) {
this.document = document;
}
public int getProductsCount() {
return productsCount;
}
public void setProductsCount(int productsCount) {
this.productsCount = productsCount;
}
}

View File

@@ -18,10 +18,8 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.ui.ContenutoBancaleListAdapter;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
@@ -144,39 +142,21 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
public void printUL() {
this.bindings.contenutoBancaleFab.close(true);
this.onLoadingStarted();
try {
this.mPrinterRESTConsumer.printCollo(mPrinterType, mtbColt.get(),
() -> {
this.onLoadingEnded();
this.mPrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> {
if (value.size() > 0) {
try {
String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum());
reportName = mReportName != null ? mReportName : reportName;
this.mPrinterRESTConsumer.printCollo(value.get(0),
mtbColt.get(),
1,
reportName,
() -> {
this.onLoadingEnded();
Resources res = this.getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageView
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
.show(getSupportFragmentManager(), "tag");
}, this::onError);
} catch (Exception ex) {
this.onError(ex);
}
} else {
this.onLoadingEnded();
String errorMessage = "Nessuna stampante configurata";
this.onError(new Exception(errorMessage));
}
}, this::onError);
Resources res = this.getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageView
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
.show(getSupportFragmentManager(), "tag");
}, this::onError);
} catch (Exception ex) {
this.onError(ex);
}
}
@Override

View File

@@ -27,7 +27,6 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
@@ -40,7 +39,7 @@ import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearchableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.menu.MenuService;
@@ -242,7 +241,7 @@ public class MainActivity extends BaseActivity
private MenuConfiguration.MenuItem getMenuItem(@IdRes int menuId) {
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = new MenuConfiguration();
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
BaseMenuConfiguration.MenuItem menuItemToReturn = null;
@@ -281,21 +280,21 @@ public class MainActivity extends BaseActivity
}
private void adaptViewToFragment(Fragment fragment) {
if (fragment instanceof ISearcableFragment) {
if (fragment instanceof ISearchableFragment) {
mBinding.appBarMain.mainSearch.setOnQueryTextListener((SearchView.OnQueryTextListener) fragment);
mBinding.appBarMain.mainSearch.setVisibility(View.VISIBLE);
mBinding.appBarMain.mainSearch.setOnSearchClickListener(v -> {
((ISearcableFragment) fragment).onSearchEnabled();
((ISearchableFragment) fragment).onSearchEnabled();
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
});
mBinding.appBarMain.mainSearch.setOnCloseListener(() -> {
((ISearcableFragment) fragment).onSearchDisabled();
((ISearchableFragment) fragment).onSearchDisabled();
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.VISIBLE);
return false;
});
((ISearcableFragment) fragment).addOnPreDestroy(() -> {
((ISearchableFragment) fragment).addOnPreDestroy(() -> {
mBinding.appBarMain.mainSearch.setIconified(true);
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
});

View File

@@ -276,9 +276,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
groupBinding.mainList.setAdapter(menuListAdapter);
groupBinding.mainList.setNestedScrollingEnabled(false);
menuListAdapter.setClickListener((view, position) -> {
onMenuClick(menuGroup.getItems().get(position));
});
menuListAdapter.setClickListener(this::onMenuClick);
mBindings.menuContainer.addView(groupBinding.getRoot());

View File

@@ -14,14 +14,15 @@ import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
public class MenuListAdapter extends RecyclerView.Adapter<MenuListAdapter.ViewHolder> {
private Context mContext;
private final Context mContext;
private List<MenuConfiguration.MenuItem> mDataset;
private LayoutInflater mInflater;
private final List<MenuConfiguration.MenuItem> mDataset;
private final LayoutInflater mInflater;
private ItemClickListener mClickListener;
// data is passed into the constructor
@@ -44,6 +45,10 @@ public class MenuListAdapter extends RecyclerView.Adapter<MenuListAdapter.ViewHo
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.mIcon.setImageDrawable(ResourcesCompat.getDrawable(mContext.getResources(), mDataset.get(position).getTitleIcon(), null));
holder.mTitle.setText(mContext.getResources().getString(mDataset.get(position).getTitleText()));
holder.itemView.setOnClickListener(v -> {
if (mClickListener != null) mClickListener.onItemClick(mDataset.get(position));
});
}
// total number of cells
@@ -54,20 +59,14 @@ public class MenuListAdapter extends RecyclerView.Adapter<MenuListAdapter.ViewHo
// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView mTitle;
private ImageView mIcon;
public static class ViewHolder extends RecyclerView.ViewHolder {
private final TextView mTitle;
private final ImageView mIcon;
ViewHolder(View itemView) {
super(itemView);
mTitle = itemView.findViewById(R.id.menu_title);
mIcon = itemView.findViewById(R.id.menu_icon);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
}
}
@@ -79,6 +78,6 @@ public class MenuListAdapter extends RecyclerView.Adapter<MenuListAdapter.ViewHo
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
void onItemClick(BaseMenuConfiguration.MenuItem menuItem);
}
}

View File

@@ -0,0 +1,99 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
import java.util.HashMap;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAgenteLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutomezzoLayoutView;
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.gest.ordini_uscita_elenco.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;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViaggioLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
public class OrdiniUscitaElencoBindings {
public static final int DEPOSITO_FILTER_ID = 0;
public static final int VIAGGIO_FILTER_ID = 1;
public static final int NUM_ORD_FILTER_ID = 2;
public static final int CLIENTE_FILTER_ID = 3;
public static final int VETTORE_FILTER_ID = 4;
public static final int AUTOMEZZO_FILTER_ID = 5;
public static final int PAESE_FILTER_ID = 6;
public static final int AGENTE_FILTER_ID = 7;
public static final int TERM_CONS_FILTER_ID = 8;
public static final int DATA_CONS_FILTER_ID = 9;
public static final int GRUPPO_MERC_FILTER_ID = 10;
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
put(DEPOSITO_FILTER_ID, new FilterChipDTO()
.setID(DEPOSITO_FILTER_ID)
.setPosizione(9)
.setFilterChipText("Deposito")
.setFilterLayoutView(new FilterDepositoLayoutView()));
put(VIAGGIO_FILTER_ID, new FilterChipDTO()
.setID(VIAGGIO_FILTER_ID)
.setPosizione(2)
.setFilterChipText("Viaggio")
.setFilterLayoutView(new FilterViaggioLayoutView()));
put(NUM_ORD_FILTER_ID, new FilterChipDTO()
.setID(NUM_ORD_FILTER_ID)
.setPosizione(0)
.setFilterChipText("Numero ordine")
.setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
put(CLIENTE_FILTER_ID, new FilterChipDTO()
.setID(CLIENTE_FILTER_ID)
.setPosizione(1)
.setFilterChipText("Cliente")
.setFilterLayoutView(new FilterClienteLayoutView()));
put(VETTORE_FILTER_ID, new FilterChipDTO()
.setID(VETTORE_FILTER_ID)
.setPosizione(4)
.setFilterChipText("Vettore")
.setFilterLayoutView(new FilterVettoreLayoutView()));
put(AUTOMEZZO_FILTER_ID, new FilterChipDTO()
.setID(AUTOMEZZO_FILTER_ID)
.setPosizione(6)
.setFilterChipText("Automezzo")
.setFilterLayoutView(new FilterAutomezzoLayoutView()));
put(PAESE_FILTER_ID, new FilterChipDTO()
.setID(PAESE_FILTER_ID)
.setPosizione(8)
.setFilterChipText("Paese")
.setFilterLayoutView(new FilterPaeseLayoutView()));
put(AGENTE_FILTER_ID, new FilterChipDTO()
.setID(AGENTE_FILTER_ID)
.setPosizione(10)
.setFilterChipText("Agente")
.setFilterLayoutView(new FilterAgenteLayoutView()));
put(TERM_CONS_FILTER_ID, new FilterChipDTO()
.setID(TERM_CONS_FILTER_ID)
.setPosizione(5)
.setFilterChipText("Termini consegna")
.setFilterLayoutView(new FilterTermConsLayoutView()));
put(DATA_CONS_FILTER_ID, new FilterChipDTO()
.setID(DATA_CONS_FILTER_ID)
.setPosizione(3)
.setFilterChipText("Data consegna"));
put(GRUPPO_MERC_FILTER_ID, new FilterChipDTO()
.setID(GRUPPO_MERC_FILTER_ID)
.setPosizione(7)
.setFilterChipText("Gruppo merceologico")
.setFilterLayoutView(new FilterGruppoMercLayoutView()));
}};
}

View File

@@ -15,9 +15,13 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.google.android.material.datepicker.MaterialDatePicker;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.inject.Inject;
@@ -29,36 +33,60 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAgenteLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutomezzoLayoutView;
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.gest.ordini_uscita_elenco.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;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViaggioLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.VenditaFiltroOrdiniViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener {
public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, OrdiniUscitaElencoViewModel.Listener {
public BindableBoolean fabVisible = new BindableBoolean(false);
@Inject
DepositoRESTConsumer mDepositoRESTConsumer;
@Inject
ArticoloRESTConsumer mArticoloRESTConsumer;
@Inject
OrdiniUscitaElencoViewModel mViewModel;
private final VenditaFiltroOrdiniViewModel mAppliedFilterViewModel = new VenditaFiltroOrdiniViewModel();
private FragmentMainOrdiniUscitaBinding mBindings = null;
private final ObservableArrayList<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
@@ -73,6 +101,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
private int barcodeScannerIstanceID = -1;
private List<MtbDepo> mtbDepoCache;
private List<MtbGrup> mtbGrupCache;
public OrdiniUscitaElencoFragment() {
// Required empty public constructor
@@ -125,15 +155,21 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.initRecyclerView();
this.initBarcodeReader();
this.initFilters();
return mBindings.getRoot();
}
@Override
public void onStart() {
super.onStart();
this.onLoadingStarted();
this.initMtbDepoCache(() -> {
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
});
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
}
@Override
@@ -151,7 +187,14 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders();
boolean canSelectMultipleClienti = SettingsManager.iDB().isFlagMultiClienteOrdV();
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), v -> this.refreshList(null));
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), v -> {
this.onLoadingStarted();
this.initMtbGrupsCache(this::onLoadingEnded);
mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
this.refreshList(null);
});
OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter =
new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData)
@@ -187,8 +230,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter);
this.mBindings.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
if (mToolbar != null)
mToolbar.setRecyclerView(this.mBindings.venditaMainList);
// if (mToolbar != null)
// mToolbar.setRecyclerView(this.mBindings.venditaMainList);
}
private void initBarcodeReader() {
@@ -199,6 +242,446 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
BarcodeManager.enable();
}
private void initFilters() {
var onPredicateChanged = new OnGeneralChangedCallback() {
@Override
public void run() {
refreshList(null);
}
};
mAppliedFilterViewModel.getCurrentDepositoPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentIdViaggioPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentClientePredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentVettorePredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentAutomezzoPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentPaesePredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentAgentePredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentTermConsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentDataConsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged);
List<FilterChipDTO> filterList = Stream.of(OrdiniUscitaElencoBindings.AVAILABLE_FILTERS.entrySet()).map(Map.Entry::getValue).sortBy(FilterChipDTO::getPosizione).toList();
for (FilterChipDTO filterChipDTO : filterList) {
FilterChipView filterChipView = new FilterChipView(
requireActivity(),
filterChipDTO.getFilterChipText(),
v -> initBottomSheetDialogFilter(filterChipDTO));
switch (filterChipDTO.getID()) {
case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID:
mAppliedFilterViewModel.getCurrentDepositoPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentDepositoPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDepositoPredicate().set(null));
break;
case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID:
mAppliedFilterViewModel.getCurrentIdViaggioPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentIdViaggioPredicate().set(null));
break;
case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID:
mAppliedFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentNumOrdsPredicate().set(null));
break;
case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID:
mAppliedFilterViewModel.getCurrentClientePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentClientePredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentClientePredicate().set(null));
break;
case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID:
mAppliedFilterViewModel.getCurrentVettorePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentVettorePredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentVettorePredicate().set(null));
break;
case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID:
mAppliedFilterViewModel.getCurrentAutomezzoPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentAutomezzoPredicate().set(null));
break;
case OrdiniUscitaElencoBindings.PAESE_FILTER_ID:
mAppliedFilterViewModel.getCurrentPaesePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentPaesePredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentPaesePredicate().set(null));
break;
case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID:
mAppliedFilterViewModel.getCurrentAgentePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentAgentePredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentAgentePredicate().set(null));
break;
case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID:
mAppliedFilterViewModel.getCurrentTermConsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentTermConsPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentTermConsPredicate().set(null));
break;
case OrdiniUscitaElencoBindings.DATA_CONS_FILTER_ID:
mAppliedFilterViewModel.getCurrentDataConsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentDataConsPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> {
mAppliedFilterViewModel.setDataConsegnaFilter(null);
mAppliedFilterViewModel.getCurrentDataConsPredicate().set(null);
});
break;
case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID:
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentGruppoMercPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0);
} else {
filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 0);
}
}
});
filterChipView.setOnResetClicked(() -> {
mAppliedFilterViewModel.setGruppoMercFilter(null);
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().set(null);
});
break;
}
this.mBindings.filterChipsGroup.addView(filterChipView);
}
}
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
if (filterChipDTO.getID() == OrdiniUscitaElencoBindings.DATA_CONS_FILTER_ID) {
var datePicker =
MaterialDatePicker.Builder.datePicker()
.setTitleText(filterChipDTO.getFilterChipText())
.setSelection(this.mAppliedFilterViewModel.getSelectedDataCons() != null ? this.mAppliedFilterViewModel.getSelectedDataCons().getTime() : null)
.build();
datePicker.addOnPositiveButtonClickListener(selection -> {
this.mAppliedFilterViewModel.setDataConsegnaFilter(new Date(selection));
});
datePicker.show(requireActivity().getSupportFragmentManager(), "TAG");
return;
}
filterChipDTO
.getFilterLayoutView()
.setFilterName(filterChipDTO.getFilterChipText())
.setContext(requireActivity());
var filterLayoutView = filterChipDTO
.getFilterLayoutView();
switch (filterChipDTO.getID()) {
case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID:
((FilterDepositoLayoutView) filterLayoutView)
.setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache))
.setAvailableCodMdeps(mAppliedFilterViewModel.getAvailableCodMdeps(mtbDepoCache))
.setOnFilterApplied(mAppliedFilterViewModel::setDepositoFilter)
.setPreSelectedCodMdeps(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentDepositoPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentDepositoPredicate().get())
.map(x -> Stream.of(mtbDepoCache).filter(y -> x.getCodMdep().equalsIgnoreCase(y.getCodMdep())).findFirst().get())
.toList());
break;
case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID:
((FilterViaggioLayoutView) filterLayoutView)
.setAllIDViaggio(mAppliedFilterViewModel.getAllIDViaggio())
.setAvailableIDViaggio(mAppliedFilterViewModel.getAvailableIDViaggio())
.setOnFilterApplied(mAppliedFilterViewModel::setIDViaggioFilter)
.setPreSelectedIDViaggio(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get())
.map(OrdineUscitaInevasoDTO::getIdViaggio)
.toList());
break;
case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID:
((FilterNumeroOrdineLayoutView) filterLayoutView)
.setAllNumOrds(mAppliedFilterViewModel.getAllNumOrds())
.setAvailableNumOrds(mAppliedFilterViewModel.getAvailableNumOrds())
.setOnFilterApplied(mAppliedFilterViewModel::setNumOrdFilter)
.setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get())
.map(OrdineUscitaInevasoDTO::getNumOrd)
.toList());
break;
case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID:
((FilterClienteLayoutView) filterLayoutView)
.setAllClienti(mAppliedFilterViewModel.getAllClienti())
.setAvailableClienti(mAppliedFilterViewModel.getAvailableClienti())
.setOnFilterApplied(mAppliedFilterViewModel::setClienteFilter)
.setPreSelectedClienti(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentClientePredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentClientePredicate().get())
.map(OrdineUscitaInevasoDTO::getRagSocOrd)
.toList());
break;
case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID:
((FilterVettoreLayoutView) filterLayoutView)
.setAllVettori(mAppliedFilterViewModel.getAllVettori())
.setAvailableVettori(mAppliedFilterViewModel.getAvailableVettori())
.setOnFilterApplied(mAppliedFilterViewModel::setVettoreFilter)
.setPreSelectedVettori(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentVettorePredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentVettorePredicate().get())
.map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : ""))
.toList());
break;
case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID:
((FilterAutomezzoLayoutView) filterLayoutView)
.setAllAutomezzi(mAppliedFilterViewModel.getAllAutomezzi())
.setAvailableAutomezzi(mAppliedFilterViewModel.getAvailableAutomezzi())
.setOnFilterApplied(mAppliedFilterViewModel::setAutomezzoFilter)
.setPreSelectedAutomezzi(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get())
.map(OrdineUscitaInevasoDTO::getDescrizioneAuto)
.toList());
break;
case OrdiniUscitaElencoBindings.PAESE_FILTER_ID:
((FilterPaeseLayoutView) filterLayoutView)
.setAllPaesi(mAppliedFilterViewModel.getAllPaesi())
.setAvailablePaesi(mAppliedFilterViewModel.getAvailablePaesi())
.setOnFilterApplied(mAppliedFilterViewModel::setPaeseFilter)
.setPreSelectedPaesi(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentPaesePredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentPaesePredicate().get())
.map(OrdineUscitaInevasoDTO::getCitta)
.toList());
break;
case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID:
((FilterAgenteLayoutView) filterLayoutView)
.setAllAgenti(mAppliedFilterViewModel.getAllAgenti())
.setAvailableAgenti(mAppliedFilterViewModel.getAvailableAgenti())
.setOnFilterApplied(mAppliedFilterViewModel::setAgenteFilter)
.setPreSelectedAgenti(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentAgentePredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentAgentePredicate().get())
.map(OrdineUscitaInevasoDTO::getCitta)
.toList());
break;
case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID:
((FilterTermConsLayoutView) filterLayoutView)
.setAllTermCons(mAppliedFilterViewModel.getAllTermCons())
.setAvailableTermCons(mAppliedFilterViewModel.getAvailableTermCons())
.setOnFilterApplied(mAppliedFilterViewModel::setTerminiConsegnaFilter)
.setPreSelectedTermCons(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentTermConsPredicate().get() == null ?
x -> false :
mAppliedFilterViewModel.getCurrentTermConsPredicate().get())
.map(OrdineUscitaInevasoDTO::getCitta)
.toList());
break;
case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID:
((FilterGruppoMercLayoutView) filterLayoutView)
.setAllGroupMerc(mAppliedFilterViewModel.getAllGruppoMerc(mtbGrupCache))
.setAvailableGroupMerc(mAppliedFilterViewModel.getAvailableGruppoMerc(mtbGrupCache))
.setOnFilterApplied(mAppliedFilterViewModel::setGruppoMercFilter)
.setPreSelectedGroupMerc(mAppliedFilterViewModel.getSelectedMtbGrup());
break;
}
filterLayoutView.show(requireActivity().getSupportFragmentManager(), "TAG");
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable();
this.openProgress();
@@ -210,20 +693,35 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
};
private void refreshList(List<OrdiniUscitaElencoDTO> filteredList) {
List<OrdiniUscitaElencoDTO> tmpList = null;
this.onLoadingStarted();
if(filteredList != null) {
tmpList = filteredList;
} else if (mAppliedFilterViewModel != null) {
mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
mAppliedFilterViewModel.applyAllTests();
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
} else {
tmpList = mViewModel.getOrderList().getValue();
}
//new Thread(() -> {
requireActivity().runOnUiThread(() -> {
List<OrdiniUscitaElencoDTO> tmpList;
if (filteredList != null) {
tmpList = filteredList;
} else if (mAppliedFilterViewModel != null) {
mAppliedFilterViewModel.applyAllTests();
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
} else {
tmpList = mViewModel.getOrderList().getValue();
}
var list = convertDataModelToListModel(tmpList);
this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(list);
fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
.anyMatch(y -> y.getSelectedObservable().get()));
this.onLoadingEnded();
});
//}).start();
this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList));
}
private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) {
@@ -285,7 +783,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
.map(OrdiniUscitaElencoListModel::getOriginalModel)
.toList();
this.mViewModel.loadPicking(selectedOrders);
this.mViewModel.loadPicking(selectedOrders, this.mAppliedFilterViewModel.getSelectedMtbGrup());
}
@Override
@@ -334,25 +832,29 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
}
private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel;
@Override
public void onFilterClick() {
DialogVenditaFiltroAvanzatoView.make(
getActivity(),
this.mViewModel.getOrderList().getValue(),
mAppliedFilterViewModel,
filter -> {
mAppliedFilterViewModel = filter;
refreshList(null);
}).show();
}
@Override
public void addOnPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy);
}
private void initMtbDepoCache(Runnable onComplete) {
this.mDepositoRESTConsumer.getAll(mtbDepos -> {
this.mtbDepoCache = mtbDepos;
onComplete.run();
}, this::onError);
}
private void initMtbGrupsCache(Runnable onComplete) {
var codMgrpArts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue()))
.flatMap(x -> Stream.of(x.getAvailableClassMerc()))
.map(OrdineUscitaInevasoDTO.AvailableClassMerc::getCodMgrp)
.toList();
this.mArticoloRESTConsumer.getArtsGroups(codMgrpArts, mtbGrupCache -> {
this.mtbGrupCache = mtbGrupCache;
onComplete.run();
}, this::onError);
}
}

View File

@@ -21,6 +21,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@@ -81,7 +82,7 @@ public class OrdiniUscitaElencoViewModel {
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
if(2 - forcedDelaySecs > 0) {
if (2 - forcedDelaySecs > 0) {
try {
Thread.sleep((2 - forcedDelaySecs) * 1000);
} catch (Exception ignored) {
@@ -96,14 +97,14 @@ public class OrdiniUscitaElencoViewModel {
}
public void loadPicking(List<OrdiniUscitaElencoDTO> selectedOrders) {
public void loadPicking(List<OrdiniUscitaElencoDTO> selectedOrders, List<MtbGrup> mtbGrupToFilter) {
List<GestioneEnum> foundGestioni = Stream.of(selectedOrders)
.map(OrdineUscitaInevasoDTO::getGestioneEnum)
.withoutNulls()
.distinct()
.toList();
if(foundGestioni != null && foundGestioni.size() > 1) {
if (foundGestioni != null && foundGestioni.size() > 1) {
this.sendError(new InvalidLUMultiGestioneException());
return;
}
@@ -115,7 +116,7 @@ public class OrdiniUscitaElencoViewModel {
.distinct()
.toList();
if(foundCodMdep != null && foundCodMdep.size() > 1) {
if (foundCodMdep != null && foundCodMdep.size() > 1) {
this.sendError(new InvalidLUMultiCodMdepException());
return;
}
@@ -129,12 +130,20 @@ public class OrdiniUscitaElencoViewModel {
this.mOrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrdersBase, sitArts -> {
if(mtbGrupToFilter != null && !mtbGrupToFilter.isEmpty()) {
sitArts = Stream.of(sitArts)
.filter(x -> Stream.of(mtbGrupToFilter).map(MtbGrup::getCodMgrp).anyMatch(y -> y.equalsIgnoreCase(x.getCodMgrp())))
.toList();
}
List<SitArtOrdDTO> finalSitArts = sitArts;
this.mOrdiniRESTConsumer.getBancaliGiaRegistrati(
Stream.of(selectedOrdersBase).map(x -> (OrdineInevasoDTO) x).toList(),
mCurrentGestioneCol,
mCurrentSegnoCol,
mtbColtList -> {
this.sendOnOrdersDispatched(selectedOrdersBase, sitArts, mtbColtList);
this.sendOnOrdersDispatched(selectedOrdersBase, finalSitArts, mtbColtList);
this.sendOnLoadingEnded();
}, this::sendError);
@@ -149,11 +158,11 @@ public class OrdiniUscitaElencoViewModel {
this.sendOnOrderFiltered(orderList);
};
if(UtilityBarcode.isBarcodeOrdineV(barcodeScanDTO)) {
if (UtilityBarcode.isBarcodeOrdineV(barcodeScanDTO)) {
this.executeEtichettaOrdineV(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
} else if(UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
} else if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
} else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)){
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete);
} else {
onComplete.run();
@@ -161,7 +170,6 @@ public class OrdiniUscitaElencoViewModel {
}
private void executeEtichettaOrdineV(String barcode, RunnableArgs<List<OrdiniUscitaElencoDTO>> onComplete) {
String gestione = "";
@@ -198,13 +206,13 @@ public class OrdiniUscitaElencoViewModel {
private void executeEtichettaLU(String SSCC, RunnableArgs<List<OrdiniUscitaElencoDTO>> onComplete) {
this.mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) {
if (mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) {
//GET BY COMMESSA COLLO
this.mOrdiniUscitaElencoRESTConsumer.getOrdiniFromCommessaCollo(mCurrentCodMdep, mtbColt, orderList -> {
if(orderList != null && orderList.size() > 0) {
if (orderList != null && orderList.size() > 0) {
List<Integer> numOrds = Stream.of(orderList)
.map(DtbOrdt::getNumOrd)
.toList();
@@ -235,14 +243,15 @@ public class OrdiniUscitaElencoViewModel {
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null;
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if(!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if(!UtilityString.isNullOrEmpty(ean128Model.Content)) barcodeProd = ean128Model.Content;
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
barcodeProd = ean128Model.Content;
if(!UtilityString.isNullOrEmpty(barcodeProd)) {
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)){
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
} else {
this.sendError(new NoLUFoundException());
@@ -280,7 +289,8 @@ public class OrdiniUscitaElencoViewModel {
}
private void sendOnOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts);
if (this.mListener != null)
mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts);
}
public interface Listener extends ILoadingListener {

View File

@@ -0,0 +1,173 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterAgenteBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterAgenteLayoutView extends FilterLayoutView {
protected LayoutFilterAgenteBinding mBindings;
private List<String> allAgenti;
private List<String> availableAgenti;
private List<String> preSelectedAgenti = new ArrayList<>();
private List<String> hiddenAgenti = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<String>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_agente, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenAgenti = Stream.of(allAgenti)
.filter(x -> !x.toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_agente__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllAgenti())
.filter(x -> !hiddenAgenti.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedAgenti.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedAgenti.add(x);
else preSelectedAgenti.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableAgenti.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<String> getAllAgenti() {
return allAgenti;
}
public FilterAgenteLayoutView setAllAgenti(List<String> allAgenti) {
this.allAgenti = allAgenti;
return this;
}
public List<String> getAvailableAgenti() {
return availableAgenti;
}
public FilterAgenteLayoutView setAvailableAgenti(List<String> availableAgenti) {
this.availableAgenti = availableAgenti;
return this;
}
public List<String> getPreSelectedAgenti() {
return preSelectedAgenti;
}
public FilterAgenteLayoutView setPreSelectedAgenti(List<String> preSelectedAgenti) {
this.preSelectedAgenti = preSelectedAgenti;
return this;
}
public RunnableArgs<List<String>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterAgenteLayoutView setOnFilterApplied(RunnableArgs<List<String>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private String originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public String getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(String originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,172 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterAutomezzoBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterAutomezzoLayoutView extends FilterLayoutView {
protected LayoutFilterAutomezzoBinding mBindings;
private List<String> allAutomezzi;
private List<String> availableAutomezzi;
private List<String> preSelectedAutomezzi = new ArrayList<>();
private List<String> hiddenAutomezzi = new ArrayList<>();
private MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<String>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_automezzo, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenAutomezzi = Stream.of(allAutomezzi)
.filter(x -> !x.toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_automezzo__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllAutomezzi())
.filter(x -> !hiddenAutomezzi.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedAutomezzi.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedAutomezzi.add(x);
else preSelectedAutomezzi.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableAutomezzi.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<String> getAllAutomezzi() {
return allAutomezzi;
}
public FilterAutomezzoLayoutView setAllAutomezzi(List<String> allAutomezzi) {
this.allAutomezzi = allAutomezzi;
return this;
}
public List<String> getAvailableAutomezzi() {
return availableAutomezzi;
}
public FilterAutomezzoLayoutView setAvailableAutomezzi(List<String> availableAutomezzi) {
this.availableAutomezzi = availableAutomezzi;
return this;
}
public List<String> getPreSelectedAutomezzi() {
return preSelectedAutomezzi;
}
public FilterAutomezzoLayoutView setPreSelectedAutomezzi(List<String> preSelectedAutomezzi) {
this.preSelectedAutomezzi = preSelectedAutomezzi;
return this;
}
public RunnableArgs<List<String>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterAutomezzoLayoutView setOnFilterApplied(RunnableArgs<List<String>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private String originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public String getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(String originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,172 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterClienteBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterClienteLayoutView extends FilterLayoutView {
protected LayoutFilterClienteBinding mBindings;
private List<String> allClienti;
private List<String> availableClienti;
private List<String> preSelectedClienti = new ArrayList<>();
private List<String> hiddenClienti = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<String>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_cliente, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenClienti = Stream.of(allClienti)
.filter(x -> !x.toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_cliente__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllClienti())
.filter(x -> !hiddenClienti.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedClienti.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedClienti.add(x);
else preSelectedClienti.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableClienti.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<String> getAllClienti() {
return allClienti;
}
public FilterClienteLayoutView setAllClienti(List<String> allClienti) {
this.allClienti = allClienti;
return this;
}
public List<String> getAvailableClienti() {
return availableClienti;
}
public FilterClienteLayoutView setAvailableClienti(List<String> availableClienti) {
this.availableClienti = availableClienti;
return this;
}
public List<String> getPreSelectedClienti() {
return preSelectedClienti;
}
public FilterClienteLayoutView setPreSelectedClienti(List<String> preSelectedClienti) {
this.preSelectedClienti = preSelectedClienti;
return this;
}
public RunnableArgs<List<String>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterClienteLayoutView setOnFilterApplied(RunnableArgs<List<String>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private String originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public String getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(String originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,175 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterDepositoBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterDepositoLayoutView extends FilterLayoutView {
protected LayoutFilterDepositoBinding mBindings;
private List<MtbDepo> allCodMdeps;
private List<MtbDepo> availableCodMdeps;
private List<MtbDepo> preSelectedCodMdeps = new ArrayList<>();
private List<MtbDepo> hiddenDepos = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<MtbDepo>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_deposito, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenDepos = Stream.of(allCodMdeps)
.filter(x -> !x.getCodMdep().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)) &&
!x.getDescrizione().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_deposito__list_item)
.into(this.mBindings.recyclerviewDepositi);
return mBindings.getRoot();
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().getCodMdep().compareToIgnoreCase(x.getOriginalModel().getCodMdep())))
.reversed();
listModel.setValue(Stream.of(getAllCodMdeps())
.filter(x -> !hiddenDepos.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedCodMdeps.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedCodMdeps.add(x);
else preSelectedCodMdeps.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableCodMdeps.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public List<MtbDepo> getAllCodMdeps() {
return allCodMdeps;
}
public FilterDepositoLayoutView setAllCodMdeps(List<MtbDepo> allCodMdeps) {
this.allCodMdeps = allCodMdeps;
return this;
}
public List<MtbDepo> getAvailableCodMdeps() {
return availableCodMdeps;
}
public FilterDepositoLayoutView setAvailableCodMdeps(List<MtbDepo> availableCodMdeps) {
this.availableCodMdeps = availableCodMdeps;
return this;
}
public List<MtbDepo> getPreSelectedCodMdeps() {
return preSelectedCodMdeps;
}
public FilterDepositoLayoutView setPreSelectedCodMdeps(List<MtbDepo> preSelectedCodMdeps) {
this.preSelectedCodMdeps = preSelectedCodMdeps;
return this;
}
public RunnableArgs<List<MtbDepo>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterDepositoLayoutView setOnFilterApplied(RunnableArgs<List<MtbDepo>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private MtbDepo originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public MtbDepo getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(MtbDepo originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,175 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterGruppoMercBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterGruppoMercLayoutView extends FilterLayoutView {
protected LayoutFilterGruppoMercBinding mBindings;
private List<MtbGrup> allGroupMerc;
private List<MtbGrup> availableGroupMerc;
private List<MtbGrup> preSelectedGroupMerc = new ArrayList<>();
private List<MtbGrup> hiddenGroupMerc = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<MtbGrup>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_gruppo_merc, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenGroupMerc = Stream.of(allGroupMerc)
.filter(x -> !x.getCodMgrp().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)) &&
!x.getDescrizione().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_gruppo_merc__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().getCodMgrp().compareTo(x.getOriginalModel().getCodMgrp())))
.reversed();
listModel.setValue(Stream.of(getAllGroupMerc())
.filter(x -> !hiddenGroupMerc.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedGroupMerc.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedGroupMerc.add(x);
else preSelectedGroupMerc.remove(x);
});
return new ListModel()
.setSelected(new BindableBoolean(preSelectedGroupMerc.contains(x)))
.setEnabled(new BindableBoolean(availableGroupMerc.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<MtbGrup> getAllGroupMerc() {
return allGroupMerc;
}
public FilterGruppoMercLayoutView setAllGroupMerc(List<MtbGrup> allGroupMerc) {
this.allGroupMerc = allGroupMerc;
return this;
}
public List<MtbGrup> getAvailableGroupMerc() {
return availableGroupMerc;
}
public FilterGruppoMercLayoutView setAvailableGroupMerc(List<MtbGrup> availableGroupMerc) {
this.availableGroupMerc = availableGroupMerc;
return this;
}
public List<MtbGrup> getPreSelectedGroupMerc() {
return preSelectedGroupMerc;
}
public FilterGruppoMercLayoutView setPreSelectedGroupMerc(List<MtbGrup> preSelectedGroupMerc) {
this.preSelectedGroupMerc = preSelectedGroupMerc;
return this;
}
public RunnableArgs<List<MtbGrup>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterGruppoMercLayoutView setOnFilterApplied(RunnableArgs<List<MtbGrup>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private MtbGrup originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public MtbGrup getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(MtbGrup originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,172 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterNumeroOrdineBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterNumeroOrdineLayoutView extends FilterLayoutView {
protected LayoutFilterNumeroOrdineBinding mBindings;
private List<Integer> allNumOrds;
private List<Integer> availableNumOrds;
private List<Integer> preSelectedNumOrds = new ArrayList<>();
private List<Integer> hiddenNumOrds = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<Integer>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_numero_ordine, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenNumOrds = Stream.of(allNumOrds)
.filter(x -> !x.toString().contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_numero_ordine__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllNumOrds())
.filter(x -> !hiddenNumOrds.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedNumOrds.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if(selectedBoolean.get()) preSelectedNumOrds.add(x);
else preSelectedNumOrds.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableNumOrds.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<Integer> getAllNumOrds() {
return allNumOrds;
}
public FilterNumeroOrdineLayoutView setAllNumOrds(List<Integer> allIDViaggio) {
this.allNumOrds = allIDViaggio;
return this;
}
public List<Integer> getAvailableNumOrds() {
return availableNumOrds;
}
public FilterNumeroOrdineLayoutView setAvailableNumOrds(List<Integer> availableIDViaggio) {
this.availableNumOrds = availableIDViaggio;
return this;
}
public List<Integer> getPreSelectedNumOrds() {
return preSelectedNumOrds;
}
public FilterNumeroOrdineLayoutView setPreSelectedNumOrds(List<Integer> preSelectedIDViaggio) {
this.preSelectedNumOrds = preSelectedIDViaggio;
return this;
}
public RunnableArgs<List<Integer>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterNumeroOrdineLayoutView setOnFilterApplied(RunnableArgs<List<Integer>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private Integer originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public Integer getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(Integer originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,173 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterPaeseBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterPaeseLayoutView extends FilterLayoutView {
protected LayoutFilterPaeseBinding mBindings;
private List<String> allPaesi;
private List<String> availablePaesi;
private List<String> preSelectedPaesi = new ArrayList<>();
private List<String> hiddenPaesi = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<String>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_paese, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenPaesi = Stream.of(allPaesi)
.filter(x -> !x.toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_paese__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllPaesi())
.filter(x -> !hiddenPaesi.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedPaesi.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedPaesi.add(x);
else preSelectedPaesi.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availablePaesi.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<String> getAllPaesi() {
return allPaesi;
}
public FilterPaeseLayoutView setAllPaesi(List<String> allPaesi) {
this.allPaesi = allPaesi;
return this;
}
public List<String> getAvailablePaesi() {
return availablePaesi;
}
public FilterPaeseLayoutView setAvailablePaesi(List<String> availablePaesi) {
this.availablePaesi = availablePaesi;
return this;
}
public List<String> getPreSelectedPaesi() {
return preSelectedPaesi;
}
public FilterPaeseLayoutView setPreSelectedPaesi(List<String> preSelectedPaesi) {
this.preSelectedPaesi = preSelectedPaesi;
return this;
}
public RunnableArgs<List<String>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterPaeseLayoutView setOnFilterApplied(RunnableArgs<List<String>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private String originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public String getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(String originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,173 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterTermConsBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterTermConsLayoutView extends FilterLayoutView {
protected LayoutFilterTermConsBinding mBindings;
private List<String> allTermCons;
private List<String> availableTermCons;
private List<String> preSelectedTermCons = new ArrayList<>();
private List<String> hiddenSelectedTermCons = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<String>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_term_cons, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenSelectedTermCons = Stream.of(allTermCons)
.filter(x -> !x.toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_term_cons__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllTermCons())
.filter(x -> !hiddenSelectedTermCons.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedTermCons.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedTermCons.add(x);
else preSelectedTermCons.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableTermCons.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<String> getAllTermCons() {
return allTermCons;
}
public FilterTermConsLayoutView setAllTermCons(List<String> allTermCons) {
this.allTermCons = allTermCons;
return this;
}
public List<String> getAvailableTermCons() {
return availableTermCons;
}
public FilterTermConsLayoutView setAvailableTermCons(List<String> availableTermCons) {
this.availableTermCons = availableTermCons;
return this;
}
public List<String> getPreSelectedTermCons() {
return preSelectedTermCons;
}
public FilterTermConsLayoutView setPreSelectedTermCons(List<String> preSelectedTermCons) {
this.preSelectedTermCons = preSelectedTermCons;
return this;
}
public RunnableArgs<List<String>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterTermConsLayoutView setOnFilterApplied(RunnableArgs<List<String>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private String originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public String getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(String originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,174 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterVettoreBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterVettoreLayoutView extends FilterLayoutView {
protected LayoutFilterVettoreBinding mBindings;
private List<String> allVettori;
private List<String> availableVettori;
private List<String> preSelectedVettori = new ArrayList<>();
private List<String> hiddenSelectedVettori = new ArrayList<>();
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<String>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_vettore, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenSelectedVettori = Stream.of(allVettori)
.filter(x -> !x.toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_vettore__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllVettori())
.filter(x -> !hiddenSelectedVettori.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedVettori.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedVettori.add(x);
else preSelectedVettori.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableVettori.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<String> getAllVettori() {
return allVettori;
}
public FilterVettoreLayoutView setAllVettori(List<String> allVettori) {
this.allVettori = allVettori;
return this;
}
public List<String> getAvailableVettori() {
return availableVettori;
}
public FilterVettoreLayoutView setAvailableVettori(List<String> availableVettori) {
this.availableVettori = availableVettori;
return this;
}
public List<String> getPreSelectedVettori() {
return preSelectedVettori;
}
public FilterVettoreLayoutView setPreSelectedVettori(List<String> preSelectedVettori) {
this.preSelectedVettori = preSelectedVettori;
return this;
}
public RunnableArgs<List<String>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterVettoreLayoutView setOnFilterApplied(RunnableArgs<List<String>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private String originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public String getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(String originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,173 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
import it.integry.integrywmsnative.databinding.LayoutFilterViaggioBinding;
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
public class FilterViaggioLayoutView extends FilterLayoutView {
protected LayoutFilterViaggioBinding mBindings;
private List<Integer> allIDViaggio;
private List<Integer> availableIDViaggio;
private List<Integer> preSelectedIDViaggio = new ArrayList<>();
private List<Integer> hiddenIDViaggio = new ArrayList<>();
private MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
private RunnableArgs<List<Integer>> onFilterApplied;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_viaggio, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenIDViaggio = Stream.of(allIDViaggio)
.filter(x -> !x.toString().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
refreshList();
});
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
.map(ListModel.class, R.layout.layout_filter_viaggio__list_item)
.into(this.mBindings.recyclerview);
return mBindings.getRoot();
}
private void refreshList() {
ComparatorCompat<ListModel> c =
ComparatorCompat
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().compareTo(x.getOriginalModel())))
.reversed();
listModel.setValue(Stream.of(getAllIDViaggio())
.filter(x -> !hiddenIDViaggio.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedIDViaggio.contains(x));
selectedBoolean.addOnPropertyChangedCallback(() -> {
if (selectedBoolean.get()) preSelectedIDViaggio.add(x);
else preSelectedIDViaggio.remove(x);
});
return new ListModel()
.setSelected(selectedBoolean)
.setEnabled(new BindableBoolean(availableIDViaggio.contains(x)))
.setOriginalModel(x);
})
.sorted(c)
.toList());
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
dismiss();
}
public List<Integer> getAllIDViaggio() {
return allIDViaggio;
}
public FilterViaggioLayoutView setAllIDViaggio(List<Integer> allIDViaggio) {
this.allIDViaggio = allIDViaggio;
return this;
}
public List<Integer> getAvailableIDViaggio() {
return availableIDViaggio;
}
public FilterViaggioLayoutView setAvailableIDViaggio(List<Integer> availableIDViaggio) {
this.availableIDViaggio = availableIDViaggio;
return this;
}
public List<Integer> getPreSelectedIDViaggio() {
return preSelectedIDViaggio;
}
public FilterViaggioLayoutView setPreSelectedIDViaggio(List<Integer> preSelectedIDViaggio) {
this.preSelectedIDViaggio = preSelectedIDViaggio;
return this;
}
public RunnableArgs<List<Integer>> getOnFilterApplied() {
return onFilterApplied;
}
public FilterViaggioLayoutView setOnFilterApplied(RunnableArgs<List<Integer>> onFilterApplied) {
this.onFilterApplied = onFilterApplied;
return this;
}
public static class ListModel {
private BindableBoolean selected = new BindableBoolean();
private BindableBoolean enabled = new BindableBoolean();
private Integer originalModel;
public BindableBoolean getSelected() {
return selected;
}
public ListModel setSelected(BindableBoolean selected) {
this.selected = selected;
return this;
}
public BindableBoolean getEnabled() {
return enabled;
}
public ListModel setEnabled(BindableBoolean enabled) {
this.enabled = enabled;
return this;
}
public Integer getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(Integer originalModel) {
this.originalModel = originalModel;
return this;
}
}
}

View File

@@ -0,0 +1,708 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import org.apache.commons.lang3.time.DateUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
public class VenditaFiltroOrdiniViewModel {
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentDepositoPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentIdViaggioPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentNumOrdsPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentClientePredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentDataConsPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentTermConsPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentVettorePredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentAgentePredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentAutomezzoPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentPaesePredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentGruppoMercPredicate = new ObservableField<>();
private Date selectedDataCons = null;
private List<MtbGrup> selectedMtbGrup = new ArrayList<>();
private List<OrdiniUscitaElencoDTO> initialOrderList;
private final MutableLiveData<List<OrdiniUscitaElencoDTO>> currentFilteredOrderList = new MutableLiveData<>();
public void init(List<OrdiniUscitaElencoDTO> initialList) {
this.initialOrderList = initialList;
this.currentFilteredOrderList.setValue(this.initialOrderList);
}
public MutableLiveData<List<OrdiniUscitaElencoDTO>> getMutableFilteredOrderList() {
return this.currentFilteredOrderList;
}
public void setIDViaggioFilter(List<Integer> idViaggio) {
if (idViaggio == null || idViaggio.isEmpty()) currentIdViaggioPredicate.set(null);
else {
currentIdViaggioPredicate.set(o -> idViaggio.contains(o.getIdViaggio()));
}
}
public void setDepositoFilter(List<MtbDepo> mtbDepoList) {
if (mtbDepoList == null || mtbDepoList.isEmpty()) currentDepositoPredicate.set(null);
else {
List<String> codMdeps = Stream.of(mtbDepoList).map(MtbDepo::getCodMdep).toList();
currentDepositoPredicate.set(o -> codMdeps.contains(o.getCodMdep()));
}
}
public void setNumOrdFilter(List<Integer> numOrds) {
if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null);
else {
currentNumOrdsPredicate.set(o -> numOrds.contains(o.getNumOrd()));
}
}
public void setClienteFilter(List<String> clienti) {
if (clienti == null || clienti.isEmpty()) currentClientePredicate.set(null);
else {
currentClientePredicate.set(o -> clienti.contains(o.getRagSocOrd()));
}
}
public void setTerminiConsegnaFilter(List<String> terminiConsegna) {
if (terminiConsegna == null || terminiConsegna.isEmpty())
currentTermConsPredicate.set(null);
else {
currentTermConsPredicate.set(o -> terminiConsegna.contains(o.getTermCons()));
}
}
public void setVettoreFilter(List<String> vettore) {
if (vettore == null || vettore.isEmpty()) currentVettorePredicate.set(null);
else {
currentVettorePredicate.set(o -> vettore.contains(o.getCodVvet() + (!UtilityString.isNullOrEmpty(o.getCodVvet()) ? " - " + o.getDescrizioneVettore() : "")));
}
}
public void setAutomezzoFilter(List<String> automezzi) {
if (automezzi == null || automezzi.isEmpty()) currentAutomezzoPredicate.set(null);
else {
currentAutomezzoPredicate.set(o -> automezzi.contains(o.getDescrizioneAuto()));
}
}
public void setDataConsegnaFilter(Date dataConsegna) {
this.selectedDataCons = dataConsegna;
if (dataConsegna == null) currentDataConsPredicate.set(null);
else {
currentDataConsPredicate.set(o -> DateUtils.isSameDay(o.getDataConsD(), dataConsegna));
}
}
public void setAgenteFilter(List<String> agenti) {
if (agenti == null || agenti.isEmpty()) currentAgentePredicate.set(null);
else {
currentAgentePredicate.set(o -> agenti.contains(o.getNomeAgente()));
}
}
public void setPaeseFilter(List<String> paesi) {
if (paesi == null || paesi.isEmpty()) currentPaesePredicate.set(null);
else {
currentPaesePredicate.set(o -> paesi.contains(o.getCitta()));
}
}
public void setGruppoMercFilter(List<MtbGrup> mtbGrupList) {
if (mtbGrupList == null || mtbGrupList.isEmpty()) {
currentGruppoMercPredicate.set(null);
this.selectedMtbGrup = new ArrayList<>();
}
else {
this.selectedMtbGrup = mtbGrupList;
var mtbGrups = Stream.of(mtbGrupList).map(MtbGrup::getCodMgrp).toList();
currentGruppoMercPredicate.set(o -> Stream.of(o.getAvailableClassMerc())
.anyMatch(x -> mtbGrups.contains(x.getCodMgrp())));
}
}
public Date getSelectedDataCons() {
return selectedDataCons;
}
public List<MtbGrup> getSelectedMtbGrup() {
return selectedMtbGrup;
}
public void applyAllTests() {
List<OrdiniUscitaElencoDTO> returnList = null;
if (currentNumOrdsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentIdViaggioPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
returnList = this.initialOrderList;
} else {
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(this.initialOrderList)
.filter(x ->
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
);
returnList = tmpStream.toList();
}
this.currentFilteredOrderList.setValue(returnList);
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentDepositoPredicate() {
return currentDepositoPredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentIdViaggioPredicate() {
return currentIdViaggioPredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentNumOrdsPredicate() {
return currentNumOrdsPredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentClientePredicate() {
return currentClientePredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentDataConsPredicate() {
return currentDataConsPredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentTermConsPredicate() {
return currentTermConsPredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentVettorePredicate() {
return currentVettorePredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentAgentePredicate() {
return currentAgentePredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentAutomezzoPredicate() {
return currentAutomezzoPredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentPaesePredicate() {
return currentPaesePredicate;
}
public ObservableField<Predicate<OrdiniUscitaElencoDTO>> getCurrentGruppoMercPredicate() {
return currentGruppoMercPredicate;
}
public List<MtbDepo> getAllCodMdeps(List<MtbDepo> mtbDepoFullList) {
List<String> codMdeps = Stream.of(initialOrderList)
.map(OrdineInevasoDTO::getCodMdep)
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(mtbDepoFullList))
.filter(x -> codMdeps.contains(x.getCodMdep()))
.distinct()
.withoutNulls()
.sortBy(MtbDepo::getCodMdep)
.toList();
}
public List<MtbDepo> getAvailableCodMdeps(List<MtbDepo> mtbDepoFullList) {
if (currentNumOrdsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentIdViaggioPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllCodMdeps(mtbDepoFullList);
} else {
List<String> availableCodMdeps = Stream.of(this.initialOrderList)
.filter(x ->
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineInevasoDTO::getCodMdep)
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(mtbDepoFullList))
.filter(x -> availableCodMdeps.contains(x.getCodMdep()))
.distinct()
.withoutNulls()
.sortBy(MtbDepo::getCodMdep)
.toList();
}
}
public List<Integer> getAllIDViaggio() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> x.getIdViaggio() != null)
.sortBy(x -> -x.getIdViaggio())
.map(x -> x.getIdViaggio() != null ? x.getIdViaggio() : null)
.distinct()
.toList();
}
public List<Integer> getAvailableIDViaggio() {
if (currentNumOrdsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllIDViaggio();
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getIdViaggio)
.distinct()
.toList();
}
}
public List<Integer> getAllNumOrds() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> x.getNumOrd() != null)
.sortBy(x -> -x.getNumOrd())
.map(x -> x.getNumOrd() != null ? x.getNumOrd() : null)
.distinct()
.toList();
}
public List<Integer> getAvailableNumOrds() {
if (currentIdViaggioPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllNumOrds();
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getNumOrd)
.distinct()
.toList();
}
}
public List<String> getAllClienti() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> !UtilityString.isNullOrEmpty(x.getRagSocOrd()))
.sortBy(OrdineUscitaInevasoDTO::getRagSocOrd)
.map(OrdineUscitaInevasoDTO::getRagSocOrd)
.distinct()
.toList();
}
public List<String> getAvailableClienti() {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllClienti();
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getRagSocOrd)
.distinct()
.toList();
}
}
public List<String> getAllVettori() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> !UtilityString.isNullOrEmpty(x.getCodVvet()))
.sortBy(OrdineUscitaInevasoDTO::getCodVvet)
.map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : ""))
.distinct()
.toList();
}
public List<String> getAvailableVettori() {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllVettori();
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : ""))
.distinct()
.toList();
}
}
public List<String> getAllAutomezzi() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> !UtilityString.isNullOrEmpty(x.getDescrizioneAuto()))
.sortBy(OrdineUscitaInevasoDTO::getDescrizioneAuto)
.map(OrdineUscitaInevasoDTO::getDescrizioneAuto)
.distinct()
.toList();
}
public List<String> getAvailableAutomezzi() {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllAutomezzi();
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getDescrizioneAuto)
.distinct()
.toList();
}
}
public List<String> getAllPaesi() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> !UtilityString.isNullOrEmpty(x.getCitta()))
.sortBy(OrdineUscitaInevasoDTO::getCitta)
.map(OrdineUscitaInevasoDTO::getCitta)
.distinct()
.toList();
}
public List<String> getAvailablePaesi() {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
List<String> all = getAllPaesi();
return all;
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getCitta)
.distinct()
.toList();
}
}
public List<String> getAllAgenti() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> !UtilityString.isNullOrEmpty(x.getNomeAgente()))
.sortBy(OrdineUscitaInevasoDTO::getNomeAgente)
.map(OrdineUscitaInevasoDTO::getNomeAgente)
.distinct()
.toList();
}
public List<String> getAvailableAgenti() {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
List<String> all = getAllAgenti();
return all;
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getNomeAgente)
.distinct()
.toList();
}
}
public List<String> getAllTermCons() {
return Stream
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> !UtilityString.isNullOrEmpty(x.getTermCons()))
.sortBy(OrdineUscitaInevasoDTO::getTermCons)
.map(OrdineUscitaInevasoDTO::getTermCons)
.distinct()
.toList();
}
public List<String> getAvailableTermCons() {
if (currentIdViaggioPredicate.get() == null &&
currentNumOrdsPredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentClientePredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentDepositoPredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentGruppoMercPredicate.get() == null
) {
return getAllTermCons();
} else {
return Stream.of(this.initialOrderList)
.filter(x ->
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
)
.map(OrdineUscitaInevasoDTO::getTermCons)
.distinct()
.toList();
}
}
public List<MtbGrup> getAllGruppoMerc(List<MtbGrup> mtbGrupFullList) {
var codMgrp = Stream.of(initialOrderList)
.flatMap(ordiniUscitaElencoDTO -> Stream.of(ordiniUscitaElencoDTO.getAvailableClassMerc()))
.map(OrdineUscitaInevasoDTO.AvailableClassMerc::getCodMgrp)
.withoutNulls()
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(mtbGrupFullList))
.filter(x -> codMgrp.contains(x.getCodMgrp()))
.distinct()
.withoutNulls()
.sortBy(MtbGrup::getDescrizione)
.toList();
}
public List<MtbGrup> getAvailableGruppoMerc(List<MtbGrup> mtbGrupFullList) {
if (currentNumOrdsPredicate.get() == null &&
currentClientePredicate.get() == null &&
currentDataConsPredicate.get() == null &&
currentTermConsPredicate.get() == null &&
currentVettorePredicate.get() == null &&
currentAutomezzoPredicate.get() == null &&
currentIdViaggioPredicate.get() == null &&
currentAgentePredicate.get() == null &&
currentPaesePredicate.get() == null &&
currentDepositoPredicate.get() == null
) {
return getAllGruppoMerc(mtbGrupFullList);
} else {
List<String> availableCodMgrups = Stream.of(this.initialOrderList)
.filter(x ->
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
(currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
(currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x))) &&
(currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
(currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
(currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
(currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
(currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
(currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x)))
)
.flatMap(x -> Stream.of(x.getAvailableClassMerc()))
.map(OrdineUscitaInevasoDTO.AvailableClassMerc::getCodMgrp)
.distinct()
.toList();
return Stream.of(Objects.requireNonNull(mtbGrupFullList))
.filter(x -> availableCodMgrups.contains(x.getCodMgrp()))
.distinct()
.withoutNulls()
.sortBy(MtbGrup::getDescrizione)
.toList();
}
}
}

Some files were not shown because too many files have changed in this diff Show More