Compare commits
102 Commits
v1.13.15(1
...
v1.16.1(18
| Author | SHA1 | Date | |
|---|---|---|---|
| f6dcbace57 | |||
| 2d0115723c | |||
| 5f90810a0f | |||
| b4fd56d8e2 | |||
| ed2a36d66a | |||
| 702ce4b79e | |||
| 99aac144f5 | |||
| 766ae1ae01 | |||
| d16cec069c | |||
| 0729b8ce87 | |||
| 92a2cdaec6 | |||
| 497bc54ebd | |||
| b00cd1f097 | |||
| cfc3649807 | |||
| 5ddd2e6235 | |||
| 2174a19c0f | |||
| 44cdbf929f | |||
| 65c0e520c5 | |||
| 062abb4ea3 | |||
| 1d759cdcbf | |||
| 15e1793962 | |||
| 55fee02f36 | |||
| 575ac2577f | |||
| 3fc5cd3660 | |||
| d77fbff509 | |||
| 58865ca34b | |||
| 23aa7f5261 | |||
| 65532a3185 | |||
| 1440c52322 | |||
| 4e36053ba6 | |||
| c7777b261d | |||
| 7b0a86bb81 | |||
| ebf2bd578e | |||
| f90e2acc3e | |||
| 035f058bc3 | |||
| 73e57e9430 | |||
| 13cc9f6053 | |||
| d9844315a3 | |||
| ade37f07d6 | |||
| f02e9921cb | |||
| e8ce7a9eeb | |||
| 61b0049a87 | |||
| 5c4d72dae2 | |||
| 39f52bf3dd | |||
| e50aa1f014 | |||
| b1d06605cd | |||
| ed55eb4279 | |||
| 9ac96ac8fd | |||
| 5be3fd9c25 | |||
| bab558252a | |||
| c256b39119 | |||
| af76627c50 | |||
| f9544566e9 | |||
| 4f02c3a4bc | |||
| ea8d8835cd | |||
| 61e07e8f76 | |||
| 962e1f7fa4 | |||
| 07d889bcd5 | |||
| 170db3eb0a | |||
| 856a807e3e | |||
| c56aa812ff | |||
| 770f014a70 | |||
| f6ff7aa80d | |||
| 4cd3e7e102 | |||
| 69bf5e319e | |||
| 88fe4d82cd | |||
| c8cd794cfc | |||
| 5dcc567eab | |||
| 89eafaf6ca | |||
| 6fc7f80ed4 | |||
| 2464d44222 | |||
| 96d544f2ad | |||
| e85ddc6580 | |||
| 89f6b9ce71 | |||
| c7d0ed1747 | |||
| b84b3c28f3 | |||
| 3a3bf4c2dd | |||
| 4809a96e5b | |||
| 5f206feb12 | |||
| 575762da2f | |||
| a96078c9e6 | |||
| b1941d5c34 | |||
| 4dc688af14 | |||
| 6675757317 | |||
| 1310b34a8d | |||
| 4e8fe26c6b | |||
| 32ff7bfa39 | |||
| c8cfa486e1 | |||
| 0356c912e6 | |||
| 7f448bbbb3 | |||
| f940b6f239 | |||
| a3de73dc66 | |||
| 9fa1aa156e | |||
| 03e1a186b8 | |||
| 598372675f | |||
| ffccd2f3d3 | |||
| 4252e13323 | |||
| 7c55cce6ae | |||
| 45caece076 | |||
| 79dc75fc89 | |||
| f9483e14be | |||
| d3396cdb63 |
@@ -7,8 +7,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 161
|
||||
def appVersionName = '1.13.15'
|
||||
def appVersionCode = 183
|
||||
def appVersionName = '1.16.1'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
@@ -21,7 +21,7 @@ android {
|
||||
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.all { output ->
|
||||
output.outputFileName = "android-release_v2.apk"
|
||||
output.outputFileName = "android-release.apk"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,8 +60,8 @@ android {
|
||||
|
||||
build {
|
||||
doLast {
|
||||
delete "$projectDir/build/outputs/apk/release/version_v2.txt"
|
||||
file("$projectDir/build/outputs/apk/release/version_v2.txt").text = appVersionCode + '\n' + appVersionName
|
||||
delete "$projectDir/build/outputs/apk/release/version.txt"
|
||||
file("$projectDir/build/outputs/apk/release/version.txt").text = appVersionCode + '\n' + appVersionName
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,27 +91,27 @@ dependencies {
|
||||
//Firebase
|
||||
|
||||
// Import the Firebase BoM
|
||||
implementation platform('com.google.firebase:firebase-bom:25.12.0')
|
||||
implementation platform('com.google.firebase:firebase-bom:26.3.0')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
implementation 'com.google.firebase:firebase-core'
|
||||
implementation 'com.google.firebase:firebase-crash'
|
||||
implementation 'com.google.firebase:firebase-perf'
|
||||
implementation 'com.google.firebase:firebase-crashlytics'
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
implementation 'com.google.android.gms:play-services-basement:17.4.0'
|
||||
implementation 'com.google.firebase:firebase-perf'
|
||||
implementation 'com.google.android.gms:play-services-basement:17.5.0'
|
||||
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'com.google.android.material:material:1.3.0-alpha03'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
|
||||
implementation 'com.google.android.material:material:1.3.0-rc01'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||
implementation 'com.annimon:stream:1.2.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
|
||||
implementation 'org.apache.commons:commons-text:1.9'
|
||||
|
||||
@@ -14,14 +14,6 @@
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "it.integry.integrywmsnative",
|
||||
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "963231271247-59qdc1vobbnjfp135ce4hv12c53s9hse.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
@@ -30,6 +22,14 @@
|
||||
"certificate_hash": "3b6d97a981f446f5011049d781aeb9960f9352af"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "it.integry.integrywmsnative",
|
||||
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
@@ -41,20 +41,13 @@
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 2,
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,10 +25,14 @@
|
||||
android:windowSoftInputMode="adjustNothing" />
|
||||
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
||||
<activity
|
||||
android:name=".gest.picking_resi.PickingResiActivity"
|
||||
android:name=".gest.picking_resi_OLD.PickingResiActivity"
|
||||
android:label="@string/activity_ultime_consegne_title"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Light" />
|
||||
<activity
|
||||
android:name=".gest.picking_resi.PickingResiActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Light" />
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:screenOrientation="portrait"
|
||||
|
||||
@@ -175,8 +175,8 @@ public class MainActivity extends BaseActivity
|
||||
break;
|
||||
|
||||
case R.id.nav_logout:
|
||||
UtilitySettings.logout(this.mAppDatabase);
|
||||
ServerStatusChecker.dispose();
|
||||
UtilitySettings.logout();
|
||||
|
||||
startLoginActivity();
|
||||
break;
|
||||
@@ -296,12 +296,12 @@ public class MainActivity extends BaseActivity
|
||||
|
||||
if(fragment instanceof IScrollableFragment) {
|
||||
((IScrollableFragment) fragment).setScrollToolbar(mBinding.appBarMain.elevatedToolbar);
|
||||
((IScrollableFragment) fragment).setOnPreDestroy(() -> {
|
||||
((IScrollableFragment) fragment).setScrollableOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.elevatedToolbar.resetAll();
|
||||
});
|
||||
}
|
||||
|
||||
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) {
|
||||
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isSelectAllButtonEnabled()) {
|
||||
mBinding.appBarMain.mainSelectAll.setVisibility(View.VISIBLE);
|
||||
mBinding.appBarMain.mainSelectAll.setOnClickListener(new OnSingleClickListener() {
|
||||
@Override
|
||||
@@ -309,9 +309,10 @@ public class MainActivity extends BaseActivity
|
||||
((ISelectAllFragment)fragment).onSelectAll();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
((ISelectAllFragment) fragment).setSelectAllOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE);
|
||||
mBinding.appBarMain.mainSelectAll.setOnClickListener(null);
|
||||
});
|
||||
}
|
||||
|
||||
if(fragment instanceof IFilterableFragment) {
|
||||
|
||||
@@ -34,6 +34,8 @@ public class MainApplication extends Application {
|
||||
.roomModule(roomModule)
|
||||
.build();
|
||||
|
||||
appComponent.inject(appContext);
|
||||
|
||||
appContext.init();
|
||||
res = getResources();
|
||||
}
|
||||
|
||||
@@ -3,11 +3,18 @@ package it.integry.integrywmsnative;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Component;
|
||||
import it.integry.integrywmsnative.core.context.AppContext;
|
||||
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoComponent;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoModule;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
|
||||
import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdComponent;
|
||||
import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
|
||||
@@ -16,6 +23,10 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComp
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
|
||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
|
||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
|
||||
|
||||
// Definition of the Application graph
|
||||
@Singleton
|
||||
@@ -28,7 +39,12 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
|
||||
PickingLiberoModule.class,
|
||||
RettificaGiacenzeModule.class,
|
||||
SpedizioneModule.class,
|
||||
AccettazionePickingModule.class})
|
||||
AccettazionePickingModule.class,
|
||||
PickingResiModule.class,
|
||||
ProdPosizionamentoDaOrdModule.class,
|
||||
OrdiniUscitaElencoModule.class,
|
||||
DialogInputQuantityV2Module.class,
|
||||
DialogScanArtModule.class})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
MainActivityComponent.Factory mainActivityComponent();
|
||||
@@ -38,5 +54,14 @@ public interface MainApplicationComponent {
|
||||
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
|
||||
SpedizioneComponent.Factory spedizioneComponent();
|
||||
AccettazionePickingComponent.Factory accettazionePickingComponent();
|
||||
PickingResiComponent.Factory pickingResiComponent();
|
||||
ProdPosizionamentoDaOrdComponent.Factory prodPosizionamentoDaOrdComponent();
|
||||
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
|
||||
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
|
||||
DialogScanArtComponent.Factory dialogScanArtComponent();
|
||||
|
||||
|
||||
|
||||
void inject(AppContext appContext);
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
|
||||
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;
|
||||
|
||||
@@ -41,8 +42,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
OrdiniRESTConsumer provideOrdiniRESTConsumer() {
|
||||
return new OrdiniRESTConsumer();
|
||||
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new OrdiniRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -59,8 +60,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer() {
|
||||
return new ColliMagazzinoRESTConsumer();
|
||||
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) {
|
||||
return new ColliMagazzinoRESTConsumer(articoloRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -81,5 +82,11 @@ public class MainApplicationModule {
|
||||
return new SystemRESTConsumer();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new PosizioniRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,15 +3,14 @@ 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.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_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
|
||||
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
|
||||
|
||||
public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
@@ -48,7 +47,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setTitleText(R.string.vendita_title_fragment)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_spedizione)
|
||||
.setDrawerIcon(R.drawable.ic_black_upload)
|
||||
.setFragmentFactory(MainVenditaFragment::newInstance))
|
||||
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, GestioneEnum.VENDITA, -1)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_free_picking)
|
||||
@@ -79,7 +78,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
|
||||
.setDrawerIcon(R.drawable.ic_black_external)
|
||||
.setFragmentFactory(ProdOrdineLavorazioneElencoFragment::newInstance))
|
||||
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_free_lav_picking)
|
||||
@@ -88,6 +87,13 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner)
|
||||
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_prod_posizionamento_da_ord)
|
||||
.setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
|
||||
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf)
|
||||
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, 1)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_prod_versamento_materiale)
|
||||
.setTitleText(R.string.prod_versamento_materiale_title_fragment)
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
package it.integry.integrywmsnative.core.class_router.interfaces;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
|
||||
public interface IOrdiniVendita {
|
||||
|
||||
void distribuisciCollo(MtbColt mtbColt, List<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
|
||||
void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
|
||||
|
||||
}
|
||||
|
||||
@@ -6,12 +6,16 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
||||
import com.orhanobut.logger.AndroidLogAdapter;
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
||||
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.settings.Stash;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
|
||||
@@ -20,6 +24,9 @@ public class AppContext {
|
||||
//Note: this is the Application Context NOT the Activity Context
|
||||
private final Context mContext;
|
||||
|
||||
@Inject
|
||||
AppDatabase mAppDatabase;
|
||||
|
||||
public AppContext(Context context) {
|
||||
this.mContext = context;
|
||||
}
|
||||
@@ -63,6 +70,7 @@ public class AppContext {
|
||||
UtilityContext.initApplicationContext(mContext);
|
||||
UtilityResources.init(mContext);
|
||||
UtilityToast.init(mContext);
|
||||
UtilitySettings.init(mAppDatabase);
|
||||
}
|
||||
|
||||
private void initLogger() {
|
||||
|
||||
@@ -3,15 +3,18 @@ package it.integry.integrywmsnative.core.context;
|
||||
import android.content.Context;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.class_router.ClassRouter;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
public class MainContext {
|
||||
@@ -44,7 +47,10 @@ public class MainContext {
|
||||
private void initDBData(Runnable onComplete) {
|
||||
SettingsManager.loadDBVariables(onComplete, ex -> {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext,
|
||||
new SpannableString(ex.getMessage()), null, mContext::finish).show();
|
||||
new SpannableString(ex.getMessage()), null, mContext::finish, R.string.logout, () -> {
|
||||
UtilitySettings.logout();
|
||||
MainApplication.exit();
|
||||
}).show();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -8,12 +8,8 @@ import com.google.android.gms.common.util.IOUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
@@ -22,8 +18,8 @@ import java.util.Random;
|
||||
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
|
||||
public class ColliDataRecover {
|
||||
|
||||
@@ -35,7 +31,7 @@ public class ColliDataRecover {
|
||||
private String gestioneCollo;
|
||||
private String filtro;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> testateOrdini;
|
||||
private List<OrdineUscitaInevasoDTO> testateOrdini;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
@@ -91,11 +87,11 @@ public class ColliDataRecover {
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<OrdineVenditaInevasoDTO> getTestateOrdini() {
|
||||
public List<OrdineUscitaInevasoDTO> getTestateOrdini() {
|
||||
return testateOrdini;
|
||||
}
|
||||
|
||||
public RecoverDTO setTestateOrdini(List<OrdineVenditaInevasoDTO> testateOrdini) {
|
||||
public RecoverDTO setTestateOrdini(List<OrdineUscitaInevasoDTO> testateOrdini) {
|
||||
this.testateOrdini = testateOrdini;
|
||||
return this;
|
||||
}
|
||||
@@ -153,7 +149,7 @@ public class ColliDataRecover {
|
||||
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
|
||||
}
|
||||
|
||||
public static int startNewSession(MtbColt mtbColtSession, List<OrdineVenditaInevasoDTO> testateOrdini) {
|
||||
public static int startNewSession(MtbColt mtbColtSession, List<OrdineUscitaInevasoDTO> testateOrdini) {
|
||||
Integer newId = null;
|
||||
|
||||
while(newId == null) {
|
||||
|
||||
@@ -3,7 +3,7 @@ package it.integry.integrywmsnative.core.data_recover;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
|
||||
public class ColliDataRecoverDTO {
|
||||
|
||||
@@ -14,7 +14,7 @@ public class ColliDataRecoverDTO {
|
||||
private String gestioneCollo;
|
||||
private String filtro;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> testateOrdini;
|
||||
private List<OrdineUscitaInevasoDTO> testateOrdini;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
@@ -70,11 +70,11 @@ public class ColliDataRecoverDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<OrdineVenditaInevasoDTO> getTestateOrdini() {
|
||||
public List<OrdineUscitaInevasoDTO> getTestateOrdini() {
|
||||
return testateOrdini;
|
||||
}
|
||||
|
||||
public ColliDataRecoverDTO setTestateOrdini(List<OrdineVenditaInevasoDTO> testateOrdini) {
|
||||
public ColliDataRecoverDTO setTestateOrdini(List<OrdineUscitaInevasoDTO> testateOrdini) {
|
||||
this.testateOrdini = testateOrdini;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@ import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
|
||||
@Singleton
|
||||
public class ColliDataRecoverService {
|
||||
@@ -72,7 +72,7 @@ public class ColliDataRecoverService {
|
||||
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
|
||||
}
|
||||
|
||||
public int startNewSession(MtbColt mtbColtSession, List<OrdineVenditaInevasoDTO> testateOrdini) {
|
||||
public int startNewSession(MtbColt mtbColtSession, List<OrdineUscitaInevasoDTO> testateOrdini) {
|
||||
Integer newId = null;
|
||||
|
||||
while(newId == null) {
|
||||
|
||||
@@ -6,7 +6,7 @@ import androidx.room.ForeignKey;
|
||||
import androidx.room.Index;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import java.util.Date;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
@Entity(
|
||||
tableName = "articoli_griglia",
|
||||
@@ -159,7 +159,7 @@ public class ArticoloGriglia {
|
||||
articolo.setQtaCnf(this.getQtaCnf());
|
||||
articolo.setUntMis(this.getUntMis());
|
||||
articolo.setDescrizione(this.getDescrizione());
|
||||
articolo.setDataIns(new Date());
|
||||
articolo.setDataIns(UtilityDate.getDateInstance());
|
||||
articolo.setQtaOrd(0);
|
||||
|
||||
return articolo;
|
||||
|
||||
@@ -1,23 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.di;
|
||||
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
|
||||
import androidx.appcompat.widget.LinearLayoutCompat;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.BindingAdapter;
|
||||
import androidx.databinding.BindingConversion;
|
||||
import androidx.constraintlayout.widget.Guideline;
|
||||
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import androidx.core.util.Pair;
|
||||
import androidx.appcompat.widget.AppCompatCheckBox;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
@@ -25,10 +8,25 @@ import android.widget.AutoCompleteTextView;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.appcompat.widget.AppCompatCheckBox;
|
||||
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.appcompat.widget.LinearLayoutCompat;
|
||||
import androidx.constraintlayout.widget.Guideline;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.core.util.Pair;
|
||||
import androidx.databinding.BindingAdapter;
|
||||
import androidx.databinding.BindingConversion;
|
||||
import androidx.databinding.Observable;
|
||||
import androidx.databinding.ObservableField;
|
||||
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
@@ -37,15 +35,10 @@ import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.Locale;
|
||||
|
||||
import androidx.databinding.Observable;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
@@ -178,7 +171,7 @@ public class Converters {
|
||||
view.addTextChangedListener(watcher);
|
||||
}
|
||||
String newValue = observableString.get();
|
||||
String viewValue = view.getText().toString().trim();
|
||||
String viewValue = view.getText().toString();
|
||||
|
||||
if(!viewValue.equalsIgnoreCase(newValue)) {
|
||||
view.setText(newValue);
|
||||
@@ -386,7 +379,7 @@ public class Converters {
|
||||
}
|
||||
|
||||
|
||||
@BindingAdapter({"app:visibility"})
|
||||
@BindingAdapter({"visibility"})
|
||||
public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) {
|
||||
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
|
||||
view.setTag(R.id.bound_observable, bindableBoolean);
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class InvalidLUMultiCodMdepException extends Exception {
|
||||
|
||||
public InvalidLUMultiCodMdepException() {
|
||||
super(UtilityResources.getString(R.string.error_multiple_cod_mdep_ord));
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,6 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class NoPrintersFoundException extends Exception {
|
||||
public NoPrintersFoundException() {
|
||||
super(UtilityResources.getString(R.string.exception_printer_not_found));
|
||||
super(UtilityResources.getString(R.string.exception_no_printer_found));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
|
||||
public class BaseDialogFragment extends DialogFragment {
|
||||
|
||||
private boolean mBarcodeListener = false;
|
||||
|
||||
public BaseDialogFragment() {
|
||||
super();
|
||||
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
|
||||
getDialog().setOnKeyListener((dialog, keyCode, event) -> {
|
||||
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
|
||||
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isControlKey(KeyEvent keyEvent) {
|
||||
int keyCode = keyEvent.getKeyCode();
|
||||
return (
|
||||
keyCode == KeyEvent.KEYCODE_BACK ||
|
||||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
|
||||
keyCode == KeyEvent.KEYCODE_DEL
|
||||
);
|
||||
}
|
||||
|
||||
public void setBarcodeListener(boolean listen) {
|
||||
this.mBarcodeListener = listen;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
public interface RunnableArgsWithReturn<T, R> {
|
||||
|
||||
R run(T data);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
public interface RunnableArgssss<S, T, U, V> {
|
||||
|
||||
void run(S data1, T data2, U data3, V data4);
|
||||
}
|
||||
@@ -6,6 +6,6 @@ public interface IScrollableFragment {
|
||||
|
||||
void setScrollToolbar(ElevatedToolbar toolbar);
|
||||
|
||||
void setOnPreDestroy(Runnable onPreDestroy);
|
||||
void setScrollableOnPreDestroy(Runnable onPreDestroy);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,10 @@ package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
public interface ISelectAllFragment {
|
||||
|
||||
boolean isEnabled();
|
||||
boolean isSelectAllButtonEnabled();
|
||||
|
||||
void onSelectAll();
|
||||
|
||||
void setSelectAllOnPreDestroy(Runnable onPreDestroy);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
|
||||
/**
|
||||
@@ -13,4 +12,6 @@ public interface ITitledFragment {
|
||||
|
||||
void onCreateActionBar(AppCompatTextView titleText, Context context);
|
||||
|
||||
void onActionBarPreDestroy(Runnable onActionBarPreDestroy);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
|
||||
public interface ILUBaseOperationsListener {
|
||||
|
||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
||||
|
||||
void onLUOpened(MtbColt mtbColt);
|
||||
|
||||
void onLUClosed();
|
||||
|
||||
void onRowSaved();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
|
||||
|
||||
public interface ILoadingListener {
|
||||
|
||||
void onLoadingStarted();
|
||||
|
||||
void onLoadingEnded();
|
||||
|
||||
}
|
||||
|
||||
@@ -141,6 +141,8 @@ public class DtbDocr {
|
||||
|
||||
private MtbAart mtbAart;
|
||||
|
||||
private String dataScadPartitaMag;
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
@@ -739,6 +741,19 @@ public class DtbDocr {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataScadPartitaMag() {
|
||||
return dataScadPartitaMag;
|
||||
}
|
||||
|
||||
public Date getDataScadPartitaMagD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataScadPartitaMag());
|
||||
}
|
||||
|
||||
public DtbDocr setDataScadPartitaMag(String dataScadPartitaMag) {
|
||||
this.dataScadPartitaMag = dataScadPartitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbAart getMtbAart() {
|
||||
return mtbAart;
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ public class MtbColt extends EntityBase {
|
||||
private BigDecimal lunghezzaCm;
|
||||
private BigDecimal larghezzaCm;
|
||||
private BigDecimal altezzaCm;
|
||||
private String codJcom;
|
||||
|
||||
private List<MtbCols> mtbCols;
|
||||
|
||||
@@ -500,6 +501,15 @@ public class MtbColt extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
|
||||
public MtbColt setCodJcom(String codJcom) {
|
||||
this.codJcom = codJcom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void generaFiltroOrdineFromDTO(List<FiltroOrdineDTO> filtroOrdineDtos) {
|
||||
|
||||
String xmlPrefix = "{\"whereCond\": \"";
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class OrdineInevasoDTO {
|
||||
|
||||
private String data;
|
||||
private Integer numero;
|
||||
private String gestione;
|
||||
private String codMdep;
|
||||
|
||||
public String getDataOrdS() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public Date getDataOrdD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
|
||||
}
|
||||
|
||||
public OrdineInevasoDTO setData(String data) {
|
||||
this.data = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumOrd() {
|
||||
return numero;
|
||||
}
|
||||
|
||||
public OrdineInevasoDTO setNumero(Integer numero) {
|
||||
this.numero = numero;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public GestioneEnum getGestioneEnum() {
|
||||
return GestioneEnum.fromString(getGestione());
|
||||
}
|
||||
|
||||
|
||||
public OrdineInevasoDTO setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdep() {
|
||||
return codMdep;
|
||||
}
|
||||
|
||||
public OrdineInevasoDTO setCodMdep(String codMdep) {
|
||||
this.codMdep = codMdep;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,9 +10,19 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
|
||||
public class PickDataDTO {
|
||||
|
||||
private MtbColt refMtbColt;
|
||||
private MtbColt sourceMtbColt;
|
||||
private ManualPickDTO manualPickDTO;
|
||||
|
||||
public MtbColt getRefMtbColt() {
|
||||
return refMtbColt;
|
||||
}
|
||||
|
||||
public PickDataDTO setRefMtbColt(MtbColt refMtbColt) {
|
||||
this.refMtbColt = refMtbColt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getSourceMtbColt() {
|
||||
return sourceMtbColt;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,11 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public static void getByCodMart(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getByCodMart(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
getByCodMartStatic(codMartToFind, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public static void getByCodMartStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
String joinedCods = Stream.of(codMartToFind)
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
@@ -45,6 +45,13 @@ import retrofit2.Response;
|
||||
@Singleton
|
||||
public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
private ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||
|
||||
public ColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) {
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public static void saveColloStatic(MtbColt mtbColtToSave, final ISimpleOperationCallback<MtbColt> callback) {
|
||||
|
||||
for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) {
|
||||
@@ -88,8 +95,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
}
|
||||
|
||||
public void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
saveColliStatic(mtbColtsToSave, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public static void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public static void saveColliStatic(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
for (MtbColt mtbColt : mtbColtsToSave) {
|
||||
mtbColt.setMtbCols(null);
|
||||
@@ -375,7 +385,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onComplete.run(newList);
|
||||
}, onFailed);
|
||||
}
|
||||
@@ -430,7 +439,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
|
||||
ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
|
||||
|
||||
if (arts != null && arts.size() > 0) {
|
||||
for (MtbColt mtbColt : mtbColts) {
|
||||
|
||||
@@ -11,7 +11,7 @@ import retrofit2.http.Query;
|
||||
public interface MesRESTConsumerService {
|
||||
|
||||
|
||||
@GET("mes/getOrdiniLavorazioneMateriale")
|
||||
@GET("mes_v2/getOrdiniLavorazioneMateriale")
|
||||
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazioneMateriale(@Query("codJfas") String codJfas, @Query("idMateriale") String idMateriale);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,28 @@
|
||||
package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
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.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
@@ -21,31 +31,10 @@ import retrofit2.Response;
|
||||
@Singleton
|
||||
public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
public static void retrieveListaArticoliFromOrdiniUscita(List<OrdineVenditaInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
private final SystemRESTConsumer mSystemRESTConsumer;
|
||||
|
||||
List<GetPickingListDTO> getPickingListDTOs = Stream.of(orders)
|
||||
.map(x -> new GetPickingListDTO()
|
||||
.setData(x.getDataOrdS())
|
||||
.setGestione(x.getGestione())
|
||||
.setNumero(x.getNumOrd())
|
||||
.setDataConsegna(x.getDataConsS())
|
||||
.setIdViaggio(x.getIdViaggio()))
|
||||
.toList();
|
||||
|
||||
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90);
|
||||
|
||||
service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
|
||||
analyzeAnswer(response, "retrieveListaArticoliFromOrdiniVendita", onComplete, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
|
||||
UtilityLogger.errorMe(new Exception(t));
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.mSystemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void getSuggestedPickingList(String codMdep, List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
@@ -69,4 +58,94 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
}
|
||||
|
||||
public void getOrdiniInevasi(String codMdep, GestioneEnum gestione, RunnableArgs<List<OrdineUscitaInevasoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class);
|
||||
|
||||
service.getOrdiniInevasi(codMdep, gestione.getText())
|
||||
.enqueue(new Callback<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> response) {
|
||||
analyzeAnswer(response, "getOrdiniInevasi", responseDtoList -> {
|
||||
if(responseDtoList == null) responseDtoList = new ArrayList<>();
|
||||
onComplete.run(responseDtoList);
|
||||
}, ex -> {
|
||||
Logger.e(ex, "Errore durante il caricamento degli ordini di lavorazione");
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Throwable t) {
|
||||
Logger.e(t, "Errore durante il caricamento degli ordini di lavorazione");
|
||||
if(onFailed != null) onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void retrieveListaArticoliFromOrdiniUscita(List<OrdineUscitaInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<GetPickingListDTO> getPickingListDTOs = Stream.of(orders)
|
||||
.map(x -> new GetPickingListDTO()
|
||||
.setData(x.getDataOrdS())
|
||||
.setGestione(x.getGestione())
|
||||
.setNumero(x.getNumOrd())
|
||||
.setDataConsegna(x.getDataConsS())
|
||||
.setIdViaggio(x.getIdViaggio()))
|
||||
.toList();
|
||||
|
||||
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90);
|
||||
|
||||
service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
|
||||
analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", onComplete, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
|
||||
UtilityLogger.errorMe(new Exception(t));
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void getBancaliGiaRegistrati(List<OrdineInevasoDTO> orders, GestioneEnum gestione, int segno, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String baseSql = "SELECT DISTINCT mtb_colt.* " +
|
||||
"FROM mtb_colt, " +
|
||||
" mtb_colr " +
|
||||
"WHERE mtb_colt.gestione = mtb_colr.gestione " +
|
||||
" AND mtb_colt.ser_collo = mtb_colr.ser_collo " +
|
||||
" AND mtb_colt.data_collo = mtb_colr.data_collo " +
|
||||
" AND mtb_colt.num_collo = mtb_colr.num_collo " +
|
||||
" AND mtb_colt.gestione = " + UtilityDB.valueToString(gestione.getText()) + " " +
|
||||
" AND mtb_colt.segno = " + UtilityDB.valueToString(segno) + " " +
|
||||
" AND mtb_colt.data_doc IS NULL AND ";
|
||||
|
||||
List<HashMap<String, Object>> whereCondMapList = new ArrayList<>();
|
||||
for (OrdineInevasoDTO ordineInevaso : orders) {
|
||||
HashMap<String, Object> whereCondMap = new HashMap<>();
|
||||
whereCondMap.put("mtb_colr.data_ord", ordineInevaso.getDataOrdD());
|
||||
whereCondMap.put("mtb_colr.num_ord", ordineInevaso.getNumOrd());
|
||||
whereCondMap.put("mtb_colr.gestione", ordineInevaso.getGestione());
|
||||
|
||||
whereCondMapList.add(whereCondMap);
|
||||
}
|
||||
|
||||
baseSql += "(" + UtilityQuery.concatFieldListInWhereCond(whereCondMapList) + ")";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
||||
this.mSystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MtbColt> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,10 +4,12 @@ import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.POST;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
@@ -18,4 +20,7 @@ public interface OrdiniRESTConsumerService {
|
||||
|
||||
@POST("wms/getSuggestedPickingList")
|
||||
Call<ServiceRESTResponse<List<PickingObjectDTO>>> getSuggestedPickingList(@Query("codMdep") String codMdep, @Body List<SitArtOrdDTO> sitArtOrdDTOList);
|
||||
|
||||
@GET("SM2GetOrdiniVenditaInevasi")
|
||||
Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> getOrdiniInevasi(@Query("codMdep") String codMdep, @Query("gestione") String gestione);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||
@@ -18,6 +17,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbOrdt;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityThread;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
|
||||
@@ -84,7 +84,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
|
||||
ordineDTO.setDataConsD(new Date());
|
||||
ordineDTO.setDataConsD(UtilityDate.getDateInstance());
|
||||
ordineDTO.setArtRows(artRows);
|
||||
saveDTO.setGestione("O");
|
||||
saveDTO.setOrdineDTO(ordineDTO);
|
||||
@@ -101,7 +101,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
if (dtoList.size() > 0){
|
||||
DtbOrdt dto = dtoList.get(0);
|
||||
ordine.setTransmitted(true);
|
||||
ordine.setTransmissionDate(new Date());
|
||||
ordine.setTransmissionDate(UtilityDate.getDateInstance());
|
||||
ordine.setGestione(dto.getGestione());
|
||||
ordine.setDataOrdS(dto.getDataOrd());
|
||||
ordine.setCodMdep(dto.getCodMdep());
|
||||
|
||||
@@ -6,6 +6,8 @@ import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
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;
|
||||
@@ -17,8 +19,14 @@ import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
@Singleton
|
||||
public class PosizioniRESTConsumer extends _BaseRESTConsumer{
|
||||
|
||||
private final SystemRESTConsumer mSystemRESTConsumer;
|
||||
|
||||
public PosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.mSystemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public static void getAvailablePosizioni(RunnableArgs<List<MtbDepoPosizione>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
@@ -39,12 +47,12 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
|
||||
});
|
||||
}
|
||||
|
||||
public void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
getBancaliInPosizioneStatic(mtbDepoPosizione, onComplete, onFailed);
|
||||
}
|
||||
|
||||
|
||||
public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
|
||||
String sql = "SELECT * FROM mtb_colt WHERE cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());
|
||||
public static void getBancaliInPosizioneStatic(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "SELECT * FROM mtb_colt WHERE segno > 0 AND cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.util.Log;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
@@ -11,6 +12,8 @@ import javax.inject.Singleton;
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
|
||||
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;
|
||||
@@ -89,7 +92,10 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
|
||||
printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
|
||||
analyzeAnswer(response, "GetAvailablePrinters", onComplete, onFailed);
|
||||
analyzeAnswer(response, "GetAvailablePrinters", printerList -> {
|
||||
printerList = Stream.of(printerList).filter(x -> !UtilityString.isNullOrEmpty(x)).toList();
|
||||
onComplete.run(printerList);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -130,7 +136,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
|
||||
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||
analyzeAnswer(response, "PrintCollo", data -> {
|
||||
analyzeAnswer(response, "printCollo", data -> {
|
||||
onComplete.run();
|
||||
}, onFailed);
|
||||
}
|
||||
@@ -142,7 +148,38 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
|
||||
} 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) {
|
||||
// onComplete.run();
|
||||
// return;
|
||||
// }
|
||||
|
||||
JasperDTO jasperDTO = new JasperDTO();
|
||||
jasperDTO.setReportName(reportName);
|
||||
|
||||
Stream.of(params)
|
||||
.forEach(x -> jasperDTO.getParams().add(new JasperPairDTO(x.getKey(), x.getValue())));
|
||||
|
||||
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
|
||||
printerService
|
||||
.processPrintReport(printerName, quantity, jasperDTO)
|
||||
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||
analyzeAnswer(response, "printReport", 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));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,10 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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;
|
||||
@@ -34,4 +36,11 @@ public interface PrinterRESTConsumerService {
|
||||
);
|
||||
|
||||
|
||||
@POST("processPrintReport")
|
||||
Call<ServiceRESTResponse<Object>> processPrintReport(
|
||||
@Query("printerName") String printerName,
|
||||
@Query("numberOfCopies") int printQuantity,
|
||||
@Body JasperDTO jasperDTO
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
@@ -66,7 +67,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
|
||||
Log.e("ProcessSql", t.toString());
|
||||
Logger.e(t, "ProcessSQL");
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model;
|
||||
public class Ean13PesoModel {
|
||||
|
||||
private String precode;
|
||||
//TODO: Change to bigdecimal
|
||||
private Float peso;
|
||||
|
||||
public String getPrecode() {
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package it.integry.integrywmsnative.core.rest.model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class JasperDTO {
|
||||
|
||||
private String reportName;
|
||||
private List<JasperPairDTO> params = new ArrayList<>();
|
||||
|
||||
public String getReportName() {
|
||||
return reportName;
|
||||
}
|
||||
|
||||
public JasperDTO setReportName(String reportName) {
|
||||
this.reportName = reportName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<JasperPairDTO> getParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
public JasperDTO setParams(List<JasperPairDTO> params) {
|
||||
this.params = params;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package it.integry.integrywmsnative.core.rest.model;
|
||||
|
||||
public class JasperPairDTO {
|
||||
|
||||
private String name;
|
||||
private Object value;
|
||||
|
||||
public JasperPairDTO(String name, Object value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public JasperPairDTO setName(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Object getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public JasperPairDTO setValue(Object value) {
|
||||
this.value = value;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,18 @@
|
||||
package it.integry.integrywmsnative.gest.vendita.dto;
|
||||
package it.integry.integrywmsnative.core.rest.model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class OrdineVenditaInevasoDTO {
|
||||
public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
|
||||
|
||||
private String data;
|
||||
private Integer numero;
|
||||
private Integer idViaggio;
|
||||
private String gestione;
|
||||
private String listino;
|
||||
private String termCons;
|
||||
private String codAuto;
|
||||
private String codMdep;
|
||||
private String descrizioneAuto;
|
||||
private String codVvet;
|
||||
private String descrizioneVettore;
|
||||
@@ -49,64 +44,25 @@ public class OrdineVenditaInevasoDTO {
|
||||
private String nomeAgente;
|
||||
private String codJfas;
|
||||
|
||||
public BindableBoolean selected;
|
||||
|
||||
|
||||
public OrdineVenditaInevasoDTO() {
|
||||
this.selected = new BindableBoolean(false);
|
||||
}
|
||||
|
||||
|
||||
public String getDataOrdS() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public Date getDataOrdD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setData(String data) {
|
||||
this.data = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumOrd() {
|
||||
return numero;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setNumero(Integer numero) {
|
||||
this.numero = numero;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getIdViaggio() {
|
||||
return idViaggio;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setIdViaggio(Integer idViaggio) {
|
||||
public OrdineUscitaInevasoDTO setIdViaggio(Integer idViaggio) {
|
||||
this.idViaggio = idViaggio;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public GestioneEnum getGestioneEnum() {
|
||||
return GestioneEnum.fromString(getGestione());
|
||||
}
|
||||
|
||||
|
||||
public OrdineVenditaInevasoDTO setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getListino() {
|
||||
return listino;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setListino(String listino) {
|
||||
public OrdineUscitaInevasoDTO setListino(String listino) {
|
||||
this.listino = listino;
|
||||
return this;
|
||||
}
|
||||
@@ -115,7 +71,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return termCons;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setTermCons(String termCons) {
|
||||
public OrdineUscitaInevasoDTO setTermCons(String termCons) {
|
||||
this.termCons = termCons;
|
||||
return this;
|
||||
}
|
||||
@@ -124,25 +80,16 @@ public class OrdineVenditaInevasoDTO {
|
||||
return codAuto;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodAuto(String codAuto) {
|
||||
public OrdineUscitaInevasoDTO setCodAuto(String codAuto) {
|
||||
this.codAuto = codAuto;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdep() {
|
||||
return codMdep;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodMdep(String codMdep) {
|
||||
this.codMdep = codMdep;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneAuto() {
|
||||
return descrizioneAuto;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDescrizioneAuto(String descrizioneAuto) {
|
||||
public OrdineUscitaInevasoDTO setDescrizioneAuto(String descrizioneAuto) {
|
||||
this.descrizioneAuto = descrizioneAuto;
|
||||
return this;
|
||||
}
|
||||
@@ -151,7 +98,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return codVvet;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodVvet(String codVvet) {
|
||||
public OrdineUscitaInevasoDTO setCodVvet(String codVvet) {
|
||||
this.codVvet = codVvet;
|
||||
return this;
|
||||
}
|
||||
@@ -160,7 +107,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return descrizioneVettore;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDescrizioneVettore(String descrizioneVettore) {
|
||||
public OrdineUscitaInevasoDTO setDescrizioneVettore(String descrizioneVettore) {
|
||||
this.descrizioneVettore = descrizioneVettore;
|
||||
return this;
|
||||
}
|
||||
@@ -173,7 +120,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataInizTraspS());
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDataInizTrasp(String dataInizTrasp) {
|
||||
public OrdineUscitaInevasoDTO setDataInizTrasp(String dataInizTrasp) {
|
||||
this.dataInizTrasp = dataInizTrasp;
|
||||
return this;
|
||||
}
|
||||
@@ -182,7 +129,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return descrizionePaga;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDescrizionePaga(String descrizionePaga) {
|
||||
public OrdineUscitaInevasoDTO setDescrizionePaga(String descrizionePaga) {
|
||||
this.descrizionePaga = descrizionePaga;
|
||||
return this;
|
||||
}
|
||||
@@ -191,7 +138,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return rifOrd;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setRifOrd(String rifOrd) {
|
||||
public OrdineUscitaInevasoDTO setRifOrd(String rifOrd) {
|
||||
this.rifOrd = rifOrd;
|
||||
return this;
|
||||
}
|
||||
@@ -200,7 +147,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return codAnagOrd;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodAnagOrd(String codAnagOrd) {
|
||||
public OrdineUscitaInevasoDTO setCodAnagOrd(String codAnagOrd) {
|
||||
this.codAnagOrd = codAnagOrd;
|
||||
return this;
|
||||
}
|
||||
@@ -209,7 +156,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return codJcom;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodJcom(String codJcom) {
|
||||
public OrdineUscitaInevasoDTO setCodJcom(String codJcom) {
|
||||
this.codJcom = codJcom;
|
||||
return this;
|
||||
}
|
||||
@@ -218,7 +165,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return descrizioneCom;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDescrizioneCom(String descrizioneCom) {
|
||||
public OrdineUscitaInevasoDTO setDescrizioneCom(String descrizioneCom) {
|
||||
this.descrizioneCom = descrizioneCom;
|
||||
return this;
|
||||
}
|
||||
@@ -227,7 +174,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return ragSocCom;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setRagSocCom(String ragSocCom) {
|
||||
public OrdineUscitaInevasoDTO setRagSocCom(String ragSocCom) {
|
||||
this.ragSocCom = ragSocCom;
|
||||
return this;
|
||||
}
|
||||
@@ -236,7 +183,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return ragSocOrd;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setRagSocOrd(String ragSocOrd) {
|
||||
public OrdineUscitaInevasoDTO setRagSocOrd(String ragSocOrd) {
|
||||
this.ragSocOrd = ragSocOrd;
|
||||
return this;
|
||||
}
|
||||
@@ -245,7 +192,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return destinatario;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDestinatario(String destinatario) {
|
||||
public OrdineUscitaInevasoDTO setDestinatario(String destinatario) {
|
||||
this.destinatario = destinatario;
|
||||
return this;
|
||||
}
|
||||
@@ -254,7 +201,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return citta;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCitta(String citta) {
|
||||
public OrdineUscitaInevasoDTO setCitta(String citta) {
|
||||
this.citta = citta;
|
||||
return this;
|
||||
}
|
||||
@@ -263,7 +210,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return provincia;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setProvincia(String provincia) {
|
||||
public OrdineUscitaInevasoDTO setProvincia(String provincia) {
|
||||
this.provincia = provincia;
|
||||
return this;
|
||||
}
|
||||
@@ -272,7 +219,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return indirizzo;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setIndirizzo(String indirizzo) {
|
||||
public OrdineUscitaInevasoDTO setIndirizzo(String indirizzo) {
|
||||
this.indirizzo = indirizzo;
|
||||
return this;
|
||||
}
|
||||
@@ -281,7 +228,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return pesoTotale;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setPesoTotale(BigDecimal pesoTotale) {
|
||||
public OrdineUscitaInevasoDTO setPesoTotale(BigDecimal pesoTotale) {
|
||||
this.pesoTotale = pesoTotale;
|
||||
return this;
|
||||
}
|
||||
@@ -290,7 +237,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return numCnfdaEvadere;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) {
|
||||
public OrdineUscitaInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) {
|
||||
this.numCnfdaEvadere = numCnfdaEvadere;
|
||||
return this;
|
||||
}
|
||||
@@ -299,7 +246,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return numCnfDisp;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) {
|
||||
public OrdineUscitaInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) {
|
||||
this.numCnfDisp = numCnfDisp;
|
||||
return this;
|
||||
}
|
||||
@@ -312,7 +259,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataConsS());
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setDataCons(String dataCons) {
|
||||
public OrdineUscitaInevasoDTO setDataCons(String dataCons) {
|
||||
this.dataCons = dataCons;
|
||||
return this;
|
||||
}
|
||||
@@ -321,7 +268,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setBarcode(String barcode) {
|
||||
public OrdineUscitaInevasoDTO setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
@@ -330,7 +277,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return numRighe;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setNumRighe(Integer numRighe) {
|
||||
public OrdineUscitaInevasoDTO setNumRighe(Integer numRighe) {
|
||||
this.numRighe = numRighe;
|
||||
return this;
|
||||
}
|
||||
@@ -339,7 +286,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return righeInPartenza;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setRigheInPartenza(Integer righeInPartenza) {
|
||||
public OrdineUscitaInevasoDTO setRigheInPartenza(Integer righeInPartenza) {
|
||||
this.righeInPartenza = righeInPartenza;
|
||||
return this;
|
||||
}
|
||||
@@ -348,7 +295,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return saldoContabile;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setSaldoContabile(BigDecimal saldoContabile) {
|
||||
public OrdineUscitaInevasoDTO setSaldoContabile(BigDecimal saldoContabile) {
|
||||
this.saldoContabile = saldoContabile;
|
||||
return this;
|
||||
}
|
||||
@@ -357,7 +304,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return codVzon;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodVzon(String codVzon) {
|
||||
public OrdineUscitaInevasoDTO setCodVzon(String codVzon) {
|
||||
this.codVzon = codVzon;
|
||||
return this;
|
||||
}
|
||||
@@ -366,7 +313,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return ragSocOrdV;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setRagSocOrdV(String ragSocOrdV) {
|
||||
public OrdineUscitaInevasoDTO setRagSocOrdV(String ragSocOrdV) {
|
||||
this.ragSocOrdV = ragSocOrdV;
|
||||
return this;
|
||||
}
|
||||
@@ -375,7 +322,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return colliRiservati;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setColliRiservati(int colliRiservati) {
|
||||
public OrdineUscitaInevasoDTO setColliRiservati(int colliRiservati) {
|
||||
this.colliRiservati = colliRiservati;
|
||||
return this;
|
||||
}
|
||||
@@ -384,7 +331,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return existColloBoolean;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setExistColloBoolean(boolean existColloBoolean) {
|
||||
public OrdineUscitaInevasoDTO setExistColloBoolean(boolean existColloBoolean) {
|
||||
this.existColloBoolean = existColloBoolean;
|
||||
return this;
|
||||
}
|
||||
@@ -393,7 +340,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return flagEvaso;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setFlagEvaso(boolean flagEvaso) {
|
||||
public OrdineUscitaInevasoDTO setFlagEvaso(boolean flagEvaso) {
|
||||
this.flagEvaso = flagEvaso;
|
||||
return this;
|
||||
}
|
||||
@@ -402,7 +349,7 @@ public class OrdineVenditaInevasoDTO {
|
||||
return nomeAgente;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setNomeAgente(String nomeAgente) {
|
||||
public OrdineUscitaInevasoDTO setNomeAgente(String nomeAgente) {
|
||||
this.nomeAgente = nomeAgente;
|
||||
return this;
|
||||
}
|
||||
@@ -411,36 +358,27 @@ public class OrdineVenditaInevasoDTO {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setCodJfas(String codJfas) {
|
||||
public OrdineUscitaInevasoDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isSelected() {
|
||||
return selected.get();
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setSelected(boolean selected) {
|
||||
this.selected.set(selected);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
OrdineVenditaInevasoDTO that = (OrdineVenditaInevasoDTO) o;
|
||||
OrdineUscitaInevasoDTO that = (OrdineUscitaInevasoDTO) o;
|
||||
|
||||
if (!data.equals(that.data)) return false;
|
||||
if (!numero.equals(that.numero)) return false;
|
||||
if (!getDataOrdS().equals(that.getDataOrdS())) return false;
|
||||
if (!getNumOrd().equals(that.getNumOrd())) return false;
|
||||
return getGestione().equals(that.getGestione());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = data.hashCode();
|
||||
result = 31 * result + numero.hashCode();
|
||||
int result = getDataOrdS().hashCode();
|
||||
result = 31 * result + getNumOrd().hashCode();
|
||||
result = 31 * result + getGestione().hashCode();
|
||||
return result;
|
||||
}
|
||||
@@ -21,6 +21,7 @@ public class DBSettingsModel {
|
||||
private String defaultCausaleRettificaGiacenze;
|
||||
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
|
||||
private boolean flagAskClienteInPickingLibero;
|
||||
private boolean flagAllowEmptyClienteInPickingLibero;
|
||||
|
||||
private boolean flagCanAddExtraItemSpedizione;
|
||||
private boolean flagCanAutoOpenNewULAccettazione;
|
||||
@@ -33,6 +34,7 @@ public class DBSettingsModel {
|
||||
private boolean flagSpedizioneEnableManualPick;
|
||||
private boolean flagSpedizioneCanSelectMultipleOrders;
|
||||
private String produzioneDefaultCodAnag;
|
||||
private String reportNameSpedizionChiudiOrdine;
|
||||
|
||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||
return flagSpedizioneEnableFakeGiacenza;
|
||||
@@ -132,6 +134,15 @@ public class DBSettingsModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagAllowEmptyClienteInPickingLibero() {
|
||||
return flagAllowEmptyClienteInPickingLibero;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagAllowEmptyClienteInPickingLibero(boolean flagAllowEmptyClienteInPickingLibero) {
|
||||
this.flagAllowEmptyClienteInPickingLibero = flagAllowEmptyClienteInPickingLibero;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagCanAddExtraItemSpedizione() {
|
||||
return flagCanAddExtraItemSpedizione;
|
||||
}
|
||||
@@ -231,4 +242,13 @@ public class DBSettingsModel {
|
||||
this.produzioneDefaultCodAnag = produzioneDefaultCodAnag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getReportNameSpedizionChiudiOrdine() {
|
||||
return reportNameSpedizionChiudiOrdine;
|
||||
}
|
||||
|
||||
public DBSettingsModel setReportNameSpedizionChiudiOrdine(String reportNameSpedizionChiudiOrdine) {
|
||||
this.reportNameSpedizionChiudiOrdine = reportNameSpedizionChiudiOrdine;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,6 +202,10 @@ public class SettingsManager {
|
||||
.setGestName("PICKING")
|
||||
.setSection("PICKING_LIBERO")
|
||||
.setKeySection("FLAG_ASK_CLIENTE"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("PICKING_LIBERO")
|
||||
.setKeySection("FLAG_ALLOW_EMPTY_CLIENTE"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
@@ -250,6 +254,10 @@ public class SettingsManager {
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
.setKeySection("FLAG_CAN_SELECT_MULTIPLE_ORDERS"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
.setKeySection("REPORT_PACKING_LIST"));
|
||||
|
||||
|
||||
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
||||
@@ -259,6 +267,7 @@ public class SettingsManager {
|
||||
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP","COD_ANAG_DEFAULT", String.class));
|
||||
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP","DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
|
||||
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagAllowEmptyClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
|
||||
@@ -271,6 +280,7 @@ public class SettingsManager {
|
||||
dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
|
||||
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, onFailed);
|
||||
|
||||
@@ -26,6 +26,14 @@ public class UtilityBigDecimal {
|
||||
return input.compareTo(toCompareWith) < 0;
|
||||
}
|
||||
|
||||
public static boolean equalsOrLowerThan(BigDecimal input, BigDecimal toCompareWith) {
|
||||
return equalsTo(input, toCompareWith) || lowerThan(input, toCompareWith);
|
||||
}
|
||||
|
||||
public static boolean equalsOrGreaterThan(BigDecimal input, BigDecimal toCompareWith) {
|
||||
return equalsTo(input, toCompareWith) || greaterThan(input, toCompareWith);
|
||||
}
|
||||
|
||||
public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) {
|
||||
if(input1 == null) return input2;
|
||||
if(input2 == null) return input1;
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class UtilityReflections {
|
||||
|
||||
|
||||
public static void copy(Object from, Object to) throws Exception {
|
||||
UtilityReflections.copy(from, to, Object.class);
|
||||
}
|
||||
|
||||
public static void copy(Object from, Object to, Class depth) throws Exception {
|
||||
Class fromClass = from.getClass();
|
||||
Class toClass = to.getClass();
|
||||
List<Field> fromFields = collectFields(fromClass, depth);
|
||||
List<Field> toFields = collectFields(toClass, depth);
|
||||
Field target;
|
||||
for (Field source : fromFields) {
|
||||
if ((target = findAndRemove(source, toFields)) != null) {
|
||||
source.setAccessible(true);
|
||||
target.setAccessible(true);
|
||||
target.set(to, source.get(from));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static List<Field> collectFields(Class c, Class depth) {
|
||||
List<Field> accessibleFields = new ArrayList<>();
|
||||
do {
|
||||
int modifiers;
|
||||
for (Field field : c.getDeclaredFields()) {
|
||||
modifiers = field.getModifiers();
|
||||
if (!Modifier.isStatic(modifiers)/* && Modifier.isPublic(modifiers)*/) {
|
||||
accessibleFields.add(field);
|
||||
}
|
||||
}
|
||||
c = c.getSuperclass();
|
||||
} while (c != null && c != depth);
|
||||
return accessibleFields;
|
||||
}
|
||||
|
||||
private static Field findAndRemove(Field field, List<Field> fields) {
|
||||
Field actual;
|
||||
for (Iterator<Field> i = fields.iterator(); i.hasNext();) {
|
||||
actual = i.next();
|
||||
if (field.getName().equals(actual.getName())
|
||||
&& field.getType().equals(actual.getType())) {
|
||||
i.remove();
|
||||
return actual;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -6,10 +6,16 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
public class UtilitySettings {
|
||||
|
||||
|
||||
public static void logout(AppDatabase appDatabase){
|
||||
private static AppDatabase mAppDatabase;
|
||||
|
||||
public static void init(AppDatabase appDatabase) {
|
||||
mAppDatabase = appDatabase;
|
||||
}
|
||||
|
||||
public static void logout(){
|
||||
SettingsManager.i().setUser(null);
|
||||
SettingsManager.i().setUserSession(null);
|
||||
UtilityThread.executeParallel(appDatabase::clearAllTables);
|
||||
UtilityThread.executeParallel(mAppDatabase::clearAllTables);
|
||||
SettingsManager.update();
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment {
|
||||
|
||||
private Runnable mOnPreDestroy;
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private FragmentMainAccettazioneBinding mBinding;
|
||||
@@ -81,11 +81,15 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
mAppBarTitle.setText(context.getText(R.string.accettazione_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
@@ -110,7 +114,9 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if(mOnPreDestroy != null) mOnPreDestroy.run();
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@@ -249,7 +255,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroy = onPreDestroy;
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
|
||||
@@ -51,6 +52,7 @@ import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneLi
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListModel;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.AccettazioneOrdineInevasoOrderBy;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt;
|
||||
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
@@ -245,8 +247,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis("col");
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
@@ -262,9 +264,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
}
|
||||
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
|
||||
accettazioneListModel.setOriginalModel(x);
|
||||
|
||||
list.add(accettazioneListModel);
|
||||
@@ -299,7 +298,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis("col");
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
@@ -353,7 +352,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis("col");
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
@@ -411,7 +410,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.anyMatch(x -> !x.isHidden());
|
||||
}
|
||||
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.openProgress();
|
||||
@@ -457,8 +456,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
}
|
||||
|
||||
|
||||
public void startListaBancaliRegistratiActivity(ArrayList<MtbColt> mtbColts){
|
||||
Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
|
||||
public void startListaBancaliRegistratiActivity(ArrayList<RecoverMtbColt> mtbColts) {
|
||||
|
||||
Intent myIntent = ListaBancaliActivity.createIntent(this,
|
||||
Stream.of(mtbColts).map(x -> (MtbColt)x).toList(),
|
||||
input -> ((RecoverMtbColt) input).isFlagCanBeRecovered(),
|
||||
PrinterRESTConsumer.Type.SECONDARIA,
|
||||
ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
|
||||
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.gest.accettazione_picking;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
@@ -8,7 +9,9 @@ import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -48,8 +51,10 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.HistoryMtbAartDTO;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.rest.AccettazionePickingRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
@@ -67,12 +72,14 @@ public class AccettazionePickingViewModel {
|
||||
|
||||
private List<OrdineAccettazioneInevasoDTO> mOrders;
|
||||
private List<SitArtOrdDTO> mSitArts;
|
||||
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
||||
private final MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
||||
|
||||
private MtbColt mCurrentMtbColt = null;
|
||||
private GestioneEnum defaultGestioneOfUL = null;
|
||||
private String mDefaultCodMdep = null;
|
||||
|
||||
private final List<HistoryMtbAartDTO> mHistoryUsedAarts = new ArrayList<>();
|
||||
|
||||
@Inject
|
||||
public AccettazionePickingViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
@@ -133,7 +140,7 @@ public class AccettazionePickingViewModel {
|
||||
.map(SitArtOrdDTO::getCodMart)
|
||||
.toList();
|
||||
|
||||
ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
|
||||
this.mArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
|
||||
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
|
||||
.map(sitArtOrdDTO -> {
|
||||
MtbAart mtbAart = null;
|
||||
@@ -159,7 +166,7 @@ public class AccettazionePickingViewModel {
|
||||
return mPickingList;
|
||||
}
|
||||
|
||||
public void retrieveExistentLU(RunnableArgs<ArrayList<MtbColt>> onComplete) {
|
||||
public void retrieveExistentLU(RunnableArgs<ArrayList<RecoverMtbColt>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mSitArts, mtbColtList -> {
|
||||
@@ -419,7 +426,7 @@ public class AccettazionePickingViewModel {
|
||||
|
||||
|
||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) {
|
||||
if(this.mCurrentMtbColt == null) return;
|
||||
if (this.mCurrentMtbColt == null) return;
|
||||
|
||||
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||
@@ -434,8 +441,8 @@ public class AccettazionePickingViewModel {
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
|
||||
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
||||
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
||||
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfDaEvadere().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
||||
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaDaEvadere().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
||||
BigDecimal qtaCnfDaEvadere = qtaCnfOrd;
|
||||
|
||||
numCnfDaEvadere = UtilityBigDecimal.getGreaterBetween(numCnfDaEvadere, BigDecimal.ZERO);
|
||||
@@ -493,10 +500,47 @@ public class AccettazionePickingViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
BigDecimal initialNumCnf;
|
||||
BigDecimal initialQtaCnf;
|
||||
BigDecimal initialQtaTot;
|
||||
|
||||
if (qtaColDaPrelevare != null) {
|
||||
initialNumCnf = numCnfDaPrelevare;
|
||||
initialQtaCnf = qtaCnfDaPrelevare;
|
||||
initialQtaTot = qtaColDaPrelevare;
|
||||
|
||||
} else {
|
||||
initialNumCnf = totalNumCnfOrd;
|
||||
initialQtaCnf = qtaCnfOrd;
|
||||
initialQtaTot = totalQtaOrd;
|
||||
}
|
||||
|
||||
if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
|
||||
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
|
||||
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
|
||||
}
|
||||
|
||||
if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
|
||||
dataScad = UtilityDate.getDateInstance();
|
||||
Calendar c = new GregorianCalendar();
|
||||
c.setTime(dataScad);
|
||||
c.add(Calendar.DATE, pickingObjectDTO.getMtbAart().getGgScadPartita());
|
||||
dataScad = c.getTime();
|
||||
}
|
||||
|
||||
if(partitaMag == null && dataScad == null) {
|
||||
HistoryMtbAartDTO historyMtbAartDTO = this.getHistoryItemIfExists(pickingObjectDTO.getMtbAart().getCodMart());
|
||||
|
||||
if(historyMtbAartDTO != null) {
|
||||
partitaMag = historyMtbAartDTO.getPartitaMag();
|
||||
dataScad = historyMtbAartDTO.getDataScad();
|
||||
}
|
||||
}
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
null, null, null,
|
||||
initialNumCnf, initialQtaCnf, initialQtaTot,
|
||||
qtaDaEvadere,
|
||||
numCnfDaEvadere,
|
||||
qtaCnfDaEvadere,
|
||||
@@ -543,6 +587,8 @@ public class AccettazionePickingViewModel {
|
||||
.setRigaOrd(pickingObjectDTO.getSitArtOrdDTO().getRigaOrd());
|
||||
|
||||
|
||||
this.addHistoryItem(mtbColr);
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||
@@ -638,6 +684,8 @@ public class AccettazionePickingViewModel {
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.addHistoryItem(mtbColr);
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
|
||||
mtbColr.setNumCnf(numCnf)
|
||||
@@ -648,7 +696,7 @@ public class AccettazionePickingViewModel {
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate))
|
||||
.findSingle();
|
||||
|
||||
if(pickingObjectDTO.isPresent()) {
|
||||
if (pickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
||||
pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr);
|
||||
}
|
||||
@@ -744,7 +792,7 @@ public class AccettazionePickingViewModel {
|
||||
return;
|
||||
}
|
||||
|
||||
String reportName = ReportManager.getReportNameLUFromGestione(mCurrentMtbColt.getGestioneEnum());
|
||||
String reportName = ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO);
|
||||
|
||||
this.mPrinterRESTConsumer.printCollo(
|
||||
printerList.get(0),
|
||||
@@ -783,6 +831,30 @@ public class AccettazionePickingViewModel {
|
||||
this.sendFilterRemoved();
|
||||
}
|
||||
|
||||
private void addHistoryItem(@NonNull MtbColr mtbColr) {
|
||||
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()))
|
||||
.findFirst();
|
||||
|
||||
if (optional.isPresent()) {
|
||||
optional.get()
|
||||
.setPartitaMag(mtbColr.getPartitaMag())
|
||||
.setDataScad(mtbColr.getDataScadPartitaD());
|
||||
} else {
|
||||
this.mHistoryUsedAarts.add(new HistoryMtbAartDTO()
|
||||
.setCodMart(mtbColr.getCodMart())
|
||||
.setPartitaMag(mtbColr.getPartitaMag())
|
||||
.setDataScad(mtbColr.getDataScadPartitaD()));
|
||||
}
|
||||
}
|
||||
|
||||
private HistoryMtbAartDTO getHistoryItemIfExists(@NonNull String codMart) {
|
||||
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||
.findFirst();
|
||||
|
||||
return optional.isPresent() ? optional.get() : null;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
@@ -904,14 +976,10 @@ public class AccettazionePickingViewModel {
|
||||
boolean canOverflowQuantity,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||
|
||||
void onRowSaved();
|
||||
|
||||
void onFilterApplied(String newValue);
|
||||
|
||||
void onFilterRemoved();
|
||||
|
||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package it.integry.integrywmsnative.gest.accettazione_picking.dto;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class HistoryMtbAartDTO {
|
||||
|
||||
private String codMart;
|
||||
private String partitaMag;
|
||||
private Date dataScad;
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public HistoryMtbAartDTO setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public HistoryMtbAartDTO setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
public HistoryMtbAartDTO setDataScad(Date dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -5,18 +5,18 @@ import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
||||
|
||||
@Singleton
|
||||
@@ -29,56 +29,120 @@ public class AccettazionePickingRESTConsumer {
|
||||
this.mSystemRestConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void getBancaliGiaRegistrati(List<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getBancaliGiaRegistrati(List<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<RecoverMtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> whereCondListMap = new ArrayList<>();
|
||||
|
||||
List<String> colliWhereCond = new ArrayList<>();
|
||||
|
||||
|
||||
Stream.of(ordiniToShow).forEach(x -> {
|
||||
Stream
|
||||
.of(ordiniToShow)
|
||||
.distinctBy(x -> x.getDataOrd() + " " + x.getGestione() + " " + x.getNumOrd())
|
||||
.forEach(x -> {
|
||||
try {
|
||||
Date date = UtilityDate.recognizeDate(x.getDataOrd());
|
||||
String dateString = UtilityDate.formatDate(date, "yyyy/MM/dd");
|
||||
HashMap<String, Object> whereCondMap = new HashMap<>();
|
||||
whereCondMap.put("mtb_colr.data_ord", UtilityDate.recognizeDate(x.getDataOrd()));
|
||||
whereCondMap.put("mtb_colr.gestione", x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione());
|
||||
whereCondMap.put("mtb_colr.num_ord", x.getNumOrd());
|
||||
|
||||
if (!colliWhereCond.contains(x.getGestione() + " " + dateString + " " + x.getNumOrd())) {
|
||||
String gestione = x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione();
|
||||
colliWhereCond.add(gestione + " " + dateString + " " + x.getNumOrd());
|
||||
}
|
||||
} catch (Exception ex){
|
||||
whereCondListMap.add(whereCondMap);
|
||||
} catch (Exception ex) {
|
||||
UtilityLogger.errorMe(ex);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
StringBuilder colliINCondition = new StringBuilder();
|
||||
|
||||
for(int i = 0; i < colliWhereCond.size(); i ++){
|
||||
colliINCondition.append("'").append(colliWhereCond.get(i)).append("'");
|
||||
|
||||
if(i < (colliWhereCond.size()-1)) colliINCondition.append(",");
|
||||
}
|
||||
String sql = "SELECT DISTINCT CAST(CASE WHEN MAX(ISNULL(mtb_colr_scar.num_collo, 0)) = 0 THEN 1 ELSE 0 END AS BIT) AS flagCanBeRecovered, " +
|
||||
" mtb_colt.gestione," +
|
||||
" mtb_colt.data_collo," +
|
||||
" mtb_colt.num_collo," +
|
||||
" segno," +
|
||||
" peso_kg," +
|
||||
" lunghezza_cm," +
|
||||
" larghezza_cm," +
|
||||
" altezza_cm," +
|
||||
" cod_anag," +
|
||||
" cod_dtip," +
|
||||
" mtb_colt.data_doc," +
|
||||
" mtb_colt.ser_doc," +
|
||||
" mtb_colt.num_doc," +
|
||||
" rif_ord," +
|
||||
" mtb_colt.ser_collo," +
|
||||
" cod_tcol," +
|
||||
" mtb_colt.data_ord," +
|
||||
" mtb_colt.num_ord," +
|
||||
" cod_vdes," +
|
||||
" cod_mdep," +
|
||||
" cod_vlis," +
|
||||
" preparato_da," +
|
||||
" ora_iniz_prep," +
|
||||
" ora_fine_prep," +
|
||||
" filtro_ordini," +
|
||||
" annotazioni," +
|
||||
" posizione," +
|
||||
" cod_dtip_provv," +
|
||||
" data_doc_provv," +
|
||||
" ser_doc_provv," +
|
||||
" num_doc_provv," +
|
||||
" cod_jfas," +
|
||||
" data_vers," +
|
||||
" mtb_colt.peso_netto_kg " +
|
||||
"FROM mtb_colt" +
|
||||
" INNER JOIN mtb_colr ON " +
|
||||
" mtb_colt.gestione = mtb_colr.gestione AND " +
|
||||
" mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
|
||||
" mtb_colt.data_collo = mtb_colr.data_collo AND " +
|
||||
" mtb_colt.num_collo = mtb_colr.num_collo " +
|
||||
" LEFT OUTER JOIN mtb_colr mtb_colr_scar ON mtb_colr_scar.num_collo_rif = mtb_colr.num_collo AND " +
|
||||
" mtb_colr_scar.gestione_rif = mtb_colr.gestione AND " +
|
||||
" mtb_colr_scar.ser_collo_rif = mtb_colr.ser_collo AND " +
|
||||
" mtb_colr_scar.data_collo_rif = mtb_colr.data_collo " +
|
||||
" WHERE (" + UtilityQuery.concatFieldListInWhereCond(whereCondListMap) + ") " +
|
||||
" AND mtb_colt.data_doc IS NULL " +
|
||||
" GROUP BY mtb_colt.gestione," +
|
||||
" mtb_colt.data_collo," +
|
||||
" mtb_colt.num_collo," +
|
||||
" segno," +
|
||||
" peso_kg," +
|
||||
" lunghezza_cm," +
|
||||
" larghezza_cm," +
|
||||
" altezza_cm," +
|
||||
" cod_anag," +
|
||||
" cod_dtip," +
|
||||
" mtb_colt.data_doc," +
|
||||
" mtb_colt.ser_doc," +
|
||||
" mtb_colt.num_doc," +
|
||||
" rif_ord," +
|
||||
" mtb_colt.ser_collo," +
|
||||
" cod_tcol," +
|
||||
" mtb_colt.data_ord," +
|
||||
" mtb_colt.num_ord," +
|
||||
" cod_vdes," +
|
||||
" cod_mdep," +
|
||||
" cod_vlis," +
|
||||
" preparato_da," +
|
||||
" ora_iniz_prep," +
|
||||
" ora_fine_prep," +
|
||||
" filtro_ordini," +
|
||||
" annotazioni," +
|
||||
" posizione," +
|
||||
" cod_dtip_provv," +
|
||||
" data_doc_provv," +
|
||||
" ser_doc_provv," +
|
||||
" num_doc_provv," +
|
||||
" cod_jfas," +
|
||||
" data_vers," +
|
||||
" mtb_colt.peso_netto_kg";
|
||||
|
||||
|
||||
|
||||
String sql = "SELECT DISTINCT mtb_colt.* " +
|
||||
"FROM mtb_colt, mtb_colr " +
|
||||
"WHERE mtb_colt.gestione = mtb_colr.gestione AND " +
|
||||
"mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
|
||||
"mtb_colt.data_collo = mtb_colr.data_collo AND " +
|
||||
"mtb_colt.num_collo = mtb_colr.num_collo AND " +
|
||||
"mtb_colt.gestione + ' ' + CONVERT(VARCHAR(15), mtb_colr.data_ord, 111) + ' ' + CONVERT(VARCHAR, mtb_colr.num_ord) IN (" + colliINCondition +
|
||||
") AND mtb_colt.data_doc IS NULL ";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbColt>>() {
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<RecoverMtbColt>>() {
|
||||
}.getType();
|
||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<RecoverMtbColt>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<MtbColt> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
public void onSuccess(ArrayList<RecoverMtbColt> value) {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package it.integry.integrywmsnative.gest.accettazione_picking.rest;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
|
||||
public class RecoverMtbColt extends MtbColt {
|
||||
|
||||
private boolean flagCanBeRecovered;
|
||||
|
||||
public boolean isFlagCanBeRecovered() {
|
||||
return flagCanBeRecovered;
|
||||
}
|
||||
|
||||
public RecoverMtbColt setFlagCanBeRecovered(boolean flagCanBeRecovered) {
|
||||
this.flagCanBeRecovered = flagCanBeRecovered;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -3,21 +3,22 @@ package it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel;
|
||||
import android.app.Dialog;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.di.BindableString;
|
||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
@@ -42,7 +43,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
||||
private PrinterRESTConsumer.Type mPrinterType;
|
||||
private String mReportName;
|
||||
|
||||
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName){
|
||||
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName) {
|
||||
mContext = context;
|
||||
this.mtbColt = new ObservableField<>(mtbColt);
|
||||
this.isFabVisible.set(true);
|
||||
@@ -85,8 +86,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void recoverUL(){
|
||||
public void recoverUL() {
|
||||
Intent data = new Intent();
|
||||
String key = DataCache.addItem(mtbColt.get());
|
||||
data.putExtra("key", key);
|
||||
@@ -102,10 +102,10 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
||||
|
||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> {
|
||||
|
||||
if(value.size() > 0) {
|
||||
if (value.size() > 0) {
|
||||
|
||||
try {
|
||||
ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> {
|
||||
String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum());
|
||||
|
||||
reportName = mReportName != null ? mReportName : reportName;
|
||||
|
||||
@@ -119,11 +119,9 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
||||
Resources res = mContext.getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(mContext, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
}, ex -> UtilityExceptions.defaultException(mContext,ex, progress));
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress)
|
||||
);
|
||||
} catch (Exception ex){
|
||||
} catch (Exception ex) {
|
||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,18 +2,18 @@ package it.integry.integrywmsnative.gest.lista_bancali;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
|
||||
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
|
||||
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
|
||||
@@ -25,52 +25,55 @@ public class ListaBancaliActivity extends BaseActivity {
|
||||
private static final String CanRecoverUL = "canRecoverUL";
|
||||
private static final String PrinterType = "printerType";
|
||||
private static final String ReportName = "reportName";
|
||||
private static final String FlagOnlyResiduo = "flagOnlyResiduo";
|
||||
}
|
||||
|
||||
public ActivityListaBancaliBinding bindings;
|
||||
|
||||
private ListaBancaliViewModel mViewModel;
|
||||
|
||||
private boolean mCanRecoverUl;
|
||||
private RunnableArgsWithReturn<MtbColt, Boolean> mCanRecoverUl;
|
||||
private PrinterRESTConsumer.Type mPrinterType;
|
||||
private String mReportName;
|
||||
private boolean mFlagOnlyResiduo;
|
||||
|
||||
private static final int PICK_UL_REQUEST = 1; // The request code
|
||||
|
||||
|
||||
|
||||
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) {
|
||||
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, String reportName) {
|
||||
return createIntent(context, items, canRecoverUlAction, printerType, true, reportName);
|
||||
}
|
||||
|
||||
public static Intent createIntent(Context context, List<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
|
||||
return createIntent(context, items, input -> canRecoverUl, printerType, onlyResiduo);
|
||||
}
|
||||
|
||||
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
|
||||
return createIntent(context, items, canRecoverUlAction, printerType, onlyResiduo, null);
|
||||
}
|
||||
|
||||
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo, String reportName) {
|
||||
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
|
||||
|
||||
String mtbColtsKey = DataCache.addItem(items);
|
||||
myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey);
|
||||
|
||||
String canRecoverULKey = DataCache.addItem(canRecoverUl);
|
||||
String canRecoverULKey = DataCache.addItem(canRecoverUlAction);
|
||||
myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey);
|
||||
|
||||
String printerTypeKey = DataCache.addItem(printerType);
|
||||
myIntent.putExtra(Key.PrinterType, printerTypeKey);
|
||||
|
||||
String flagOnlyResiduoKey = DataCache.addItem(onlyResiduo);
|
||||
myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey);
|
||||
|
||||
String reportNameKey = DataCache.addItem(reportName);
|
||||
myIntent.putExtra(Key.ReportName, reportNameKey);
|
||||
|
||||
return myIntent;
|
||||
}
|
||||
|
||||
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) {
|
||||
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
|
||||
|
||||
String mtbColtsKey = DataCache.addItem(items);
|
||||
myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey);
|
||||
|
||||
String canRecoverULKey = DataCache.addItem(canRecoverUl);
|
||||
myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey);
|
||||
|
||||
String printerTypeKey = DataCache.addItem(printerType);
|
||||
myIntent.putExtra(Key.PrinterType, printerTypeKey);
|
||||
|
||||
return myIntent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -81,9 +84,10 @@ public class ListaBancaliActivity extends BaseActivity {
|
||||
mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
|
||||
mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
|
||||
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
|
||||
mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo));
|
||||
|
||||
List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey));
|
||||
mViewModel = new ListaBancaliViewModel(this, mtbColts);
|
||||
mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo);
|
||||
|
||||
|
||||
setSupportActionBar(this.bindings.toolbar);
|
||||
@@ -99,7 +103,7 @@ public class ListaBancaliActivity extends BaseActivity {
|
||||
}
|
||||
|
||||
public void startContenutoBancaleActivity(MtbColt item){
|
||||
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType, mReportName);
|
||||
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl.run(item), mPrinterType, mReportName);
|
||||
startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,11 +26,15 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
|
||||
|
||||
private MainListListaColliAdapter mAdapter;
|
||||
|
||||
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts){
|
||||
private boolean mLoadOnlyResiduo;
|
||||
|
||||
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts, boolean loadOnlyResiduo){
|
||||
mContext = context;
|
||||
mMtbColts = new ObservableArrayList<>();
|
||||
mMtbColts.addAll(mtbColts);
|
||||
|
||||
this.mLoadOnlyResiduo = loadOnlyResiduo;
|
||||
|
||||
initRecyclerView();
|
||||
}
|
||||
|
||||
@@ -56,7 +60,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
try {
|
||||
ColliMagazzinoRESTConsumer.getByTestataStatic(item, true, false, mtbColt -> {
|
||||
ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> {
|
||||
|
||||
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
|
||||
mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
|
||||
|
||||
@@ -50,7 +50,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
|
||||
private FragmentMainBinding mBindings;
|
||||
|
||||
private Runnable mOnPreDestroy;
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private LayoutInflater mLayoutInflater;
|
||||
@@ -89,7 +89,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if (mOnPreDestroy != null) mOnPreDestroy.run();
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@@ -208,14 +210,19 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
titleText.setText(context.getText(R.string.app_name).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroy = onPreDestroy;
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface OrdiniUscitaElencoComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
OrdiniUscitaElencoComponent create();
|
||||
}
|
||||
|
||||
void inject(OrdiniUscitaElencoFragment ordiniUscitaElencoFragment);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityReflections;
|
||||
|
||||
public class OrdiniUscitaElencoDTO extends OrdineUscitaInevasoDTO {
|
||||
|
||||
private boolean hidden = false;
|
||||
|
||||
public static OrdiniUscitaElencoDTO fromParent(OrdineUscitaInevasoDTO parent) throws Exception {
|
||||
OrdiniUscitaElencoDTO child = new OrdiniUscitaElencoDTO();
|
||||
UtilityReflections.copy(parent, child);
|
||||
return child;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoDTO setHidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,354 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
import android.app.Dialog;
|
||||
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.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.ComparatorCompat;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
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.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel;
|
||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener {
|
||||
|
||||
public BindableBoolean fabVisible = new BindableBoolean(false);
|
||||
|
||||
@Inject
|
||||
OrdiniUscitaElencoViewModel mViewModel;
|
||||
|
||||
private FragmentMainOrdiniUscitaBinding mBindings = null;
|
||||
|
||||
private ObservableArrayList<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
||||
|
||||
private GestioneEnum mCurrentGestioneOrd = null;
|
||||
private GestioneEnum mCurrentGestioneCol = null;
|
||||
private int mCurrentSegnoCol = 0;
|
||||
|
||||
private ElevatedToolbar mToolbar;
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
private Dialog mCurrentProgress;
|
||||
|
||||
|
||||
public OrdiniUscitaElencoFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public static OrdiniUscitaElencoFragment newInstance(GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol) {
|
||||
OrdiniUscitaElencoFragment fragment = new OrdiniUscitaElencoFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
args.putString("gestioneOrd", gestioneOrd.getText());
|
||||
args.putString("gestioneCol", gestioneCol.getText());
|
||||
args.putInt("segnoCol", segnoCol);
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mCurrentGestioneOrd = GestioneEnum.fromString(getArguments().getString("gestioneOrd"));
|
||||
mCurrentGestioneCol = GestioneEnum.fromString(getArguments().getString("gestioneCol"));
|
||||
mCurrentSegnoCol = getArguments().getInt("segnoCol");
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main_ordini_uscita, container, false);
|
||||
|
||||
MainApplication.appComponent
|
||||
.prodOrdineLavorazioneElencoComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mViewModel.setListener(this);
|
||||
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(mViewModel);
|
||||
|
||||
this.initRecyclerView();
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
|
||||
boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders();
|
||||
boolean canSelectMultipleClienti = SettingsManager.iDB().isFlagMultiClienteOrdV();
|
||||
|
||||
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
|
||||
|
||||
OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter =
|
||||
new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData)
|
||||
.setEmptyView(this.mBindings.ordiniVenditaEmptyView)
|
||||
.setOnGroupItemClicked(x -> {
|
||||
if(!canSelectMultipleClienti) {
|
||||
Stream.of(mOrdiniInevasiMutableData)
|
||||
.filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get())
|
||||
.forEach(y -> y.getSelectedObservable().set(false));
|
||||
}
|
||||
|
||||
boolean allSelected = Stream.of(mOrdiniInevasiMutableData)
|
||||
.filter(y -> y.getGroupTitle().equalsIgnoreCase(x))
|
||||
.allMatch(y -> y.getSelectedObservable().get());
|
||||
|
||||
Stream.of(mOrdiniInevasiMutableData)
|
||||
.filter(y -> y.getGroupTitle().equalsIgnoreCase(x))
|
||||
.forEach(y -> y.getSelectedObservable().set(!allSelected));
|
||||
})
|
||||
.setOnItemChecked(x -> {
|
||||
if(!canSelectMultipleClienti && x.getSelectedObservable().get()) {
|
||||
Stream.of(mOrdiniInevasiMutableData)
|
||||
.filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get())
|
||||
.forEach(y -> y.getSelectedObservable().set(false));
|
||||
}
|
||||
|
||||
fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
|
||||
.anyMatch(y -> y.getSelectedObservable().get()));
|
||||
});
|
||||
|
||||
this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter);
|
||||
this.mBindings.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
|
||||
if(mToolbar != null)
|
||||
mToolbar.setRecyclerView(this.mBindings.venditaMainList);
|
||||
}
|
||||
|
||||
private void refreshList(List<OrdiniUscitaElencoDTO> orderList) {
|
||||
this.mOrdiniInevasiMutableData.clear();
|
||||
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(orderList));
|
||||
}
|
||||
|
||||
private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) {
|
||||
|
||||
ComparatorCompat<OrdiniUscitaElencoDTO> comparator = ComparatorCompat
|
||||
.comparing(OrdiniUscitaElencoDTO::getRagSocOrd)
|
||||
.thenComparing(ComparatorCompat.comparing(OrdiniUscitaElencoDTO::getNumOrd));
|
||||
|
||||
List<OrdiniUscitaElencoListModel> notHiddenElements = Stream.of(dataList)
|
||||
.filter(x -> !x.isHidden())
|
||||
.sorted(comparator)
|
||||
.map(x -> {
|
||||
OrdiniUscitaElencoListModel listModel = new OrdiniUscitaElencoListModel();
|
||||
|
||||
listModel.setGroupTitle(x.getRagSocOrd());
|
||||
|
||||
String testataOrdString = String.format(getString(R.string.ord_ven_testata), String.valueOf(x.getNumOrd()), UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
listModel.setDescription(testataOrdString);
|
||||
|
||||
listModel.setSubDescription(x.getRifOrd());
|
||||
|
||||
String testataDataConsString = String.format(getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
listModel.setRightDescription(testataDataConsString);
|
||||
|
||||
listModel.setOriginalModel(x);
|
||||
|
||||
return listModel;
|
||||
})
|
||||
.toList();
|
||||
|
||||
return notHiddenElements;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Stream.of(this.mOrdiniInevasiMutableData)
|
||||
.forEach(x -> x.getSelectedObservable().set(false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onComplete) {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
onComplete.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.prod_ordine_lavorazione_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
public void dispatchOrders() {
|
||||
|
||||
List<OrdiniUscitaElencoDTO> selectedOrders = Stream.of(this.mOrdiniInevasiMutableData)
|
||||
.filter(x -> x.getSelectedObservable().get())
|
||||
.map(OrdiniUscitaElencoListModel::getOriginalModel)
|
||||
.toList();
|
||||
|
||||
this.mViewModel.loadPicking(selectedOrders);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void openProgress() {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (this.mCurrentProgress == null) {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (mCurrentProgress != null) {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
BarcodeManager.disable();
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
this.closeProgress();
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
|
||||
List<String> codMarts = Stream.of(sitArts)
|
||||
.distinctBy(SitArtOrdDTO::getCodMart)
|
||||
.map(SitArtOrdDTO::getCodMart)
|
||||
.toList();
|
||||
|
||||
int alreadyRegisteredUL = alreadyRegisteredMtbColts.size();
|
||||
|
||||
DialogSimpleMessageHelper.makeInfoDialog(getActivity(),
|
||||
getText(R.string.orders).toString(),
|
||||
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size())
|
||||
+ "<br />" +
|
||||
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size())
|
||||
+ "<br />" +
|
||||
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
|
||||
null,
|
||||
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol)
|
||||
).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSelectAllButtonEnabled() {
|
||||
return SettingsManager.iDB().isFlagMultiClienteOrdV();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSelectAll() {
|
||||
boolean allSelected = Stream.of(mOrdiniInevasiMutableData)
|
||||
.allMatch(x -> x.getSelectedObservable().get());
|
||||
|
||||
Stream.of(mOrdiniInevasiMutableData)
|
||||
.filter(x -> !x.getOriginalModel().isHidden())
|
||||
.forEach(x -> x.getSelectedObservable().set(!allSelected));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectAllOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
@Override
|
||||
public void onFilterClick() {
|
||||
DialogVenditaFiltroAvanzato.make(
|
||||
getActivity(),
|
||||
this.mViewModel.getOrderList().getValue(),
|
||||
mAppliedFilterViewModel,
|
||||
|
||||
(filteredOrderList, filter) -> {
|
||||
mAppliedFilterViewModel = filter;
|
||||
|
||||
if(filteredOrderList != null){
|
||||
refreshList(filteredOrderList);
|
||||
}
|
||||
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
|
||||
@Module(subcomponents = OrdiniUscitaElencoComponent.class)
|
||||
public class OrdiniUscitaElencoModule {
|
||||
|
||||
@Provides
|
||||
OrdiniUscitaElencoViewModel providesProdOrdineLavorazioneElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer) {
|
||||
return new OrdiniUscitaElencoViewModel(ordiniRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUMultiCodMdepException;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
|
||||
public class OrdiniUscitaElencoViewModel {
|
||||
|
||||
private final MutableLiveData<List<OrdiniUscitaElencoDTO>> mOrderList = new MutableLiveData<>();
|
||||
|
||||
private final OrdiniRESTConsumer mOrdiniRESTConsumer;
|
||||
private Listener mListener;
|
||||
private String mCurrentCodMdep;
|
||||
private GestioneEnum mCurrentGestioneOrd;
|
||||
private GestioneEnum mCurrentGestioneCol;
|
||||
private int mCurrentSegnoCol;
|
||||
|
||||
@Inject
|
||||
public OrdiniUscitaElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer) {
|
||||
this.mOrdiniRESTConsumer = ordiniRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void init(String currentCodMdep, GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol) {
|
||||
this.mCurrentCodMdep = currentCodMdep;
|
||||
this.mCurrentGestioneOrd = gestioneOrd;
|
||||
this.mCurrentGestioneCol = gestioneCol;
|
||||
this.mCurrentSegnoCol = segnoCol;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
new Thread(() -> {
|
||||
Date loadingStartDate = new Date();
|
||||
|
||||
this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd,
|
||||
ordiniLavorazione -> {
|
||||
this.mOrderList.postValue(Stream.of(ordiniLavorazione)
|
||||
.map(x -> {
|
||||
try {
|
||||
return OrdiniUscitaElencoDTO.fromParent(x);
|
||||
} catch (Exception ex) {
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.toList());
|
||||
|
||||
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
|
||||
|
||||
if(2 - forcedDelaySecs > 0) {
|
||||
try {
|
||||
Thread.sleep((2 - forcedDelaySecs) * 1000);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}).start();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void loadPicking(List<OrdiniUscitaElencoDTO> selectedOrders) {
|
||||
List<GestioneEnum> foundGestioni = Stream.of(selectedOrders)
|
||||
.map(OrdineUscitaInevasoDTO::getGestioneEnum)
|
||||
.withoutNulls()
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if(foundGestioni != null && foundGestioni.size() > 1) {
|
||||
this.sendError(new InvalidLUMultiGestioneException());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
List<String> foundCodMdep = Stream.of(selectedOrders)
|
||||
.map(OrdineUscitaInevasoDTO::getCodMdep)
|
||||
.withoutNulls()
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if(foundCodMdep != null && foundCodMdep.size() > 1) {
|
||||
this.sendError(new InvalidLUMultiCodMdepException());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
List<OrdineUscitaInevasoDTO> selectedOrdersBase = Stream.of(selectedOrders)
|
||||
.map(x -> (OrdineUscitaInevasoDTO) x)
|
||||
.toList();
|
||||
|
||||
this.mOrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrdersBase, sitArts -> {
|
||||
|
||||
this.mOrdiniRESTConsumer.getBancaliGiaRegistrati(
|
||||
Stream.of(selectedOrdersBase).map(x -> (OrdineInevasoDTO) x).toList(),
|
||||
mCurrentGestioneCol,
|
||||
mCurrentSegnoCol,
|
||||
mtbColtList -> {
|
||||
this.sendOnOrdersDispatched(selectedOrdersBase, sitArts, mtbColtList);
|
||||
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<OrdiniUscitaElencoDTO>> getOrderList() {
|
||||
return mOrderList;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnLoadingEnded() {
|
||||
if (this.mListener != null) mListener.onLoadingEnded();
|
||||
}
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
private void sendOnOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
|
||||
if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts);
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
void onLoadingStarted();
|
||||
|
||||
void onLoadingEnded();
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.vendita.dialogs;
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
@@ -28,19 +28,19 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
||||
|
||||
|
||||
public class DialogVenditaFiltroAvanzato {
|
||||
|
||||
|
||||
private AlertDialog currentAlert;
|
||||
private Context currentContext;
|
||||
private final AlertDialog currentAlert;
|
||||
private final Context currentContext;
|
||||
|
||||
private RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
|
||||
private final RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> currentOrderList;
|
||||
private List<OrdineVenditaInevasoDTO> currentFilteredOrderList;
|
||||
private final List<OrdiniUscitaElencoDTO> currentOrderList;
|
||||
private List<OrdiniUscitaElencoDTO> currentFilteredOrderList;
|
||||
|
||||
private ArrayAdapter<String> arrayAdapterCodMdep;
|
||||
private ArrayAdapter<String> arrayAdapterIdViaggio;
|
||||
@@ -51,30 +51,30 @@ public class DialogVenditaFiltroAvanzato {
|
||||
private ArrayAdapter<String> arrayAdapterAgente;
|
||||
private ArrayAdapter<String> arrayAdapterAutomezzo;
|
||||
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentDepositoPredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentIdViaggioPredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentNumOrdsPredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentClientePredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentDataConsPredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentVettorePredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentAgentePredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentDepositoPredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentIdViaggioPredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentNumOrdsPredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentClientePredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentDataConsPredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentTermConsPredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentVettorePredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentAgentePredicate = null;
|
||||
private Predicate<OrdiniUscitaElencoDTO> currentAutomezzoPredicate = null;
|
||||
|
||||
private boolean firstInit = true;
|
||||
|
||||
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
public static AlertDialog make(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
|
||||
}
|
||||
|
||||
public static AlertDialog make(final Context context,
|
||||
final List<OrdineVenditaInevasoDTO> ordersList,
|
||||
final List<OrdiniUscitaElencoDTO> ordersList,
|
||||
DialogVenditaFiltroAvanzatoViewModel baseViewModel,
|
||||
RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
|
||||
}
|
||||
|
||||
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
currentContext = context;
|
||||
currentOrderList = ordersList;
|
||||
currentOnFilterDone = onDismiss;
|
||||
@@ -456,7 +456,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
if(currentAgentePredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null && currentDepositoPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -484,7 +484,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
if(currentDepositoPredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -500,14 +500,14 @@ public class DialogVenditaFiltroAvanzato {
|
||||
currentFilteredOrderList = tmpStream.toList();
|
||||
}
|
||||
|
||||
return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getNomeAgente).distinct().withoutNulls().sorted().toList();
|
||||
return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getNomeAgente).distinct().withoutNulls().sorted().toList();
|
||||
}
|
||||
|
||||
private List<String> getAvailableCodMdeps(boolean skipRecalc) {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -522,14 +522,14 @@ public class DialogVenditaFiltroAvanzato {
|
||||
currentFilteredOrderList = tmpStream.toList();
|
||||
}
|
||||
|
||||
return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getCodMdep).distinct().withoutNulls().sorted().toList();
|
||||
return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getCodMdep).distinct().withoutNulls().sorted().toList();
|
||||
}
|
||||
|
||||
private List<String> getAvailableCliente(boolean skipRecalc) {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentDepositoPredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
|
||||
@@ -544,14 +544,14 @@ public class DialogVenditaFiltroAvanzato {
|
||||
currentFilteredOrderList = tmpStream.toList();
|
||||
}
|
||||
|
||||
return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getRagSocOrd).distinct().withoutNulls().sorted().toList();
|
||||
return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getRagSocOrd).distinct().withoutNulls().sorted().toList();
|
||||
}
|
||||
|
||||
private List<String> getAvailableNumOrds(boolean skipRecalc) {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentDepositoPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -573,7 +573,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentDepositoPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -588,14 +588,14 @@ public class DialogVenditaFiltroAvanzato {
|
||||
currentFilteredOrderList = tmpStream.toList();
|
||||
}
|
||||
|
||||
return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getTermCons).distinct().withoutNulls().sorted().toList();
|
||||
return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getTermCons).distinct().withoutNulls().sorted().toList();
|
||||
}
|
||||
|
||||
private List<String> getAvailableVettori(boolean skipRecalc) {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentAutomezzoPredicate == null && currentDepositoPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -617,7 +617,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null && currentDepositoPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else if(!skipRecalc){
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -632,7 +632,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
currentFilteredOrderList = tmpStream.toList();
|
||||
}
|
||||
|
||||
return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getDescrizioneAuto).distinct().withoutNulls().sorted().toList();
|
||||
return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getDescrizioneAuto).distinct().withoutNulls().sorted().toList();
|
||||
}
|
||||
|
||||
private void refreshList() {
|
||||
@@ -640,7 +640,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null && currentAutomezzoPredicate == null && currentDepositoPredicate == null){
|
||||
currentFilteredOrderList = currentOrderList;
|
||||
} else {
|
||||
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
|
||||
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.vendita.dialogs;
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.list;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListGroupModelBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModelBinding;
|
||||
|
||||
public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter<OrdiniUscitaElencoAdapter.SubheaderHolder, OrdiniUscitaElencoAdapter.SingleItemViewHolder> {
|
||||
|
||||
private final Context mContext;
|
||||
private final List<OrdiniUscitaElencoListModel> mDataset = new ArrayList<>();
|
||||
private View mEmptyView;
|
||||
|
||||
private RunnableArgs<String> mOnGroupItemClicked;
|
||||
private RunnableArgs<OrdiniUscitaElencoListModel> mOnItemChecked;
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
FragmentMainOrdiniUscitaListModelBinding mBinding;
|
||||
|
||||
SubheaderHolder(FragmentMainOrdiniUscitaListModelBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
FragmentMainOrdiniUscitaListGroupModelBinding mBinding;
|
||||
|
||||
SingleItemViewHolder(FragmentMainOrdiniUscitaListGroupModelBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoAdapter(Context context, ObservableArrayList<OrdiniUscitaElencoListModel> mutableDataSet) {
|
||||
this.mContext = context;
|
||||
|
||||
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
public void onChanged(ObservableList sender) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sender);
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
checkIfEmpty();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs<String> onGroupItemClicked) {
|
||||
this.mOnGroupItemClicked = onGroupItemClicked;
|
||||
return this;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoAdapter setOnItemChecked(RunnableArgs<OrdiniUscitaElencoListModel> onItemChecked) {
|
||||
this.mOnItemChecked = onItemChecked;
|
||||
return this;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoAdapter setEmptyView(View emptyView) {
|
||||
this.mEmptyView = emptyView;
|
||||
this.checkIfEmpty();
|
||||
return this;
|
||||
}
|
||||
|
||||
private void checkIfEmpty() {
|
||||
if (mEmptyView != null) {
|
||||
final boolean emptyViewVisible = getItemCount() == 0;
|
||||
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public OrdiniUscitaElencoAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
FragmentMainOrdiniUscitaListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_main_ordini_uscita__list_model, parent, false);
|
||||
return new OrdiniUscitaElencoAdapter.SubheaderHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrdiniUscitaElencoAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
FragmentMainOrdiniUscitaListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_main_ordini_uscita__list_group_model, parent, false);
|
||||
return new OrdiniUscitaElencoAdapter.SingleItemViewHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(OrdiniUscitaElencoAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
OrdiniUscitaElencoListModel pickingObjectDTO = this.mDataset.get(nextItemPosition);
|
||||
|
||||
subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getGroupTitle()) ? View.GONE : View.VISIBLE);
|
||||
subheaderHolder.mBinding.groupTitle.setText(Html.fromHtml(pickingObjectDTO.getGroupTitle()));
|
||||
|
||||
subheaderHolder.mBinding.getRoot().setOnClickListener(new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(pickingObjectDTO.getGroupTitle());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(final OrdiniUscitaElencoAdapter.SingleItemViewHolder holder, final int position) {
|
||||
OrdiniUscitaElencoListModel listModel = this.mDataset.get(position);
|
||||
|
||||
listModel.getSelectedObservable().resetOnPropertyChangedCallback();
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getDescription()))
|
||||
holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription()));
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getSubDescription()))
|
||||
holder.mBinding.subDescrizione.setText(Html.fromHtml(listModel.getSubDescription()));
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getRightDescription()))
|
||||
holder.mBinding.rightDescrizione.setText(Html.fromHtml(listModel.getRightDescription()));
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getRightSubDescription()))
|
||||
holder.mBinding.rightSubDescrizione.setText(Html.fromHtml(listModel.getRightSubDescription()));
|
||||
|
||||
holder.mBinding.setSelected(listModel.getSelectedObservable());
|
||||
holder.mBinding.executePendingBindings();
|
||||
holder.mBinding.checkbox.jumpDrawablesToCurrentState();
|
||||
|
||||
listModel.getSelectedObservable().addOnPropertyChangedCallback(() -> {
|
||||
if(this.mOnItemChecked != null) this.mOnItemChecked.run(listModel);
|
||||
});
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
listModel.getSelectedObservable().set(!listModel.getSelectedObservable().get());
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
|
||||
if (getItemSize() == 1) return true;
|
||||
else if (getItemSize() > 1) {
|
||||
OrdiniUscitaElencoListModel compare1 = this.mDataset.get(position);
|
||||
OrdiniUscitaElencoListModel compare2 = this.mDataset.get(position + 1);
|
||||
|
||||
if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return mDataset.size();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.list;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
||||
|
||||
public class OrdiniUscitaElencoListModel implements Cloneable {
|
||||
private String groupTitle;
|
||||
|
||||
private String description;
|
||||
private String subDescription;
|
||||
private String rightDescription;
|
||||
private String rightSubDescription;
|
||||
|
||||
private boolean hidden;
|
||||
private BindableBoolean selected = new BindableBoolean();
|
||||
|
||||
|
||||
private OrdiniUscitaElencoDTO originalModel;
|
||||
|
||||
|
||||
public String getGroupTitle() {
|
||||
return groupTitle;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setGroupTitle(String groupTitle) {
|
||||
this.groupTitle = groupTitle;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setDescription(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSubDescription() {
|
||||
return subDescription;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setSubDescription(String subDescription) {
|
||||
this.subDescription = subDescription;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRightDescription() {
|
||||
return rightDescription;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setRightDescription(String rightDescription) {
|
||||
this.rightDescription = rightDescription;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRightSubDescription() {
|
||||
return rightSubDescription;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setRightSubDescription(String rightSubDescription) {
|
||||
this.rightSubDescription = rightSubDescription;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setHidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BindableBoolean getSelectedObservable() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoDTO getOriginalModel() {
|
||||
return originalModel;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setOriginalModel(OrdiniUscitaElencoDTO originalModel) {
|
||||
this.originalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -75,7 +76,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
public BindableBoolean thereIsAnyRowInUL = new BindableBoolean(false);
|
||||
public BindableBoolean thereIsAnOpenULWithoutRows = new BindableBoolean(false);
|
||||
|
||||
private Runnable mOnPreDestroy;
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
private AppCompatTextView mToolbarTitleText;
|
||||
|
||||
@@ -107,6 +108,11 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
mToolbarTitleText.setText(context.getText(R.string.free_picking_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -191,7 +197,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
mAdapter = null;
|
||||
}
|
||||
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.openProgress();
|
||||
@@ -231,7 +237,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
if (mOnPreDestroy != null) mOnPreDestroy.run();
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@@ -241,8 +249,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroy = onPreDestroy;
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
@@ -258,6 +266,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
@Override
|
||||
public void onLUOpened(MtbColt mtbColt) {
|
||||
mToolbarTitleText.setText(String.format(getActivity().getText(R.string.lu_number_text).toString(), mtbColt.getNumCollo()));
|
||||
|
||||
initAdapter();
|
||||
|
||||
thereIsAnOpenedUL.set(true);
|
||||
@@ -275,6 +285,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
@Override
|
||||
public void onLUClosed() {
|
||||
mToolbarTitleText.setText(getActivity().getText(R.string.free_picking_title_fragment).toString());
|
||||
destroyAdapter();
|
||||
|
||||
thereIsAnyRowInUL.set(false);
|
||||
@@ -306,10 +317,10 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
||||
DialogAskCliente.makeBase(getActivity(), (status, result) -> {
|
||||
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||
DialogAskCliente.makeBase(getActivity(), (status, result, codJcom) -> {
|
||||
if (status == DialogConsts.Results.YES) {
|
||||
onComplete.run(result);
|
||||
onComplete.run(result, codJcom);
|
||||
} else {
|
||||
onAbort.run();
|
||||
}
|
||||
@@ -398,7 +409,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onComplete) {
|
||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
else onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import dagger.Provides;
|
||||
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.PrinterRESTConsumer;
|
||||
|
||||
@Module(subcomponents = {PickingLiberoComponent.class})
|
||||
public class PickingLiberoModule {
|
||||
@@ -16,8 +15,7 @@ public class PickingLiberoModule {
|
||||
@Singleton
|
||||
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer);
|
||||
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,11 +24,11 @@ import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.VtbDest;
|
||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
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.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
@@ -37,7 +37,6 @@ import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
|
||||
@@ -48,7 +47,6 @@ public class PickingLiberoViewModel {
|
||||
|
||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
|
||||
|
||||
@@ -62,11 +60,9 @@ public class PickingLiberoViewModel {
|
||||
@Inject
|
||||
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
this.mPrinterRESTConsumer = printerRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
}
|
||||
|
||||
@@ -183,15 +179,15 @@ public class PickingLiberoViewModel {
|
||||
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
if (this.mFlagAskCliente) {
|
||||
this.sendLUClienteRequired(vtbDest -> {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
|
||||
this.sendLUClienteRequired((vtbDest, codJcom) -> {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
|
||||
}, onComplete);
|
||||
} else {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete);
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, null, onComplete);
|
||||
}
|
||||
}
|
||||
|
||||
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
|
||||
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJcom, Runnable onComplete) {
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt.setGestione(mDefaultGestione)
|
||||
@@ -213,6 +209,10 @@ public class PickingLiberoViewModel {
|
||||
mtbColt.setCodVdes(vtbDest.getCodVdes());
|
||||
}
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(codJcom)) {
|
||||
mtbColt.setCodJcom(codJcom);
|
||||
}
|
||||
|
||||
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
||||
mtbColt
|
||||
.setNumCollo(value.getNumCollo())
|
||||
@@ -235,9 +235,9 @@ public class PickingLiberoViewModel {
|
||||
BigDecimal qtaColDaPrelevare = null;
|
||||
BigDecimal qtaCnfDaPrelevare = null;
|
||||
|
||||
BigDecimal initialNumCnf = null;
|
||||
BigDecimal initialQtaCnf = null;
|
||||
BigDecimal initialQtaTot = null;
|
||||
BigDecimal initialNumCnf;
|
||||
BigDecimal initialQtaCnf;
|
||||
BigDecimal initialQtaTot;
|
||||
|
||||
String partitaMag = null;
|
||||
Date dataScad = null;
|
||||
@@ -760,7 +760,7 @@ public class PickingLiberoViewModel {
|
||||
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
||||
}
|
||||
|
||||
private void sendLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
||||
private void sendLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
|
||||
}
|
||||
|
||||
@@ -815,11 +815,10 @@ public class PickingLiberoViewModel {
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener, ILUBaseOperationsListener {
|
||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort);
|
||||
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
|
||||
|
||||
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
|
||||
|
||||
@@ -840,8 +839,6 @@ public class PickingLiberoViewModel {
|
||||
boolean canPartitaMagBeChanged,
|
||||
boolean canLUBeClosed,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||
|
||||
void onRowSaved();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,109 +1,135 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
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.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
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.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
|
||||
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListModel;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
||||
|
||||
public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
|
||||
public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener {
|
||||
|
||||
|
||||
private ActivityPickingResiBinding mBindings;
|
||||
|
||||
@Inject
|
||||
PickingResiViewModel mViewmodel;
|
||||
|
||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||
|
||||
private ObservableArrayList<PickingResiListModel> mPickingResiMutableData = new ObservableArrayList<>();
|
||||
|
||||
public BindableBoolean noLUPresent = new BindableBoolean(true);
|
||||
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
||||
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
|
||||
|
||||
private String mTitle;
|
||||
private List<DocumentoResoDTO> mDocumentiResiList;
|
||||
public ObservableList<WithdrawableDtbDocr> mDtbDocrList;
|
||||
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
|
||||
|
||||
private ActivityPickingResiBinding mBinding;
|
||||
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
||||
|
||||
public ObservableField<MtbColt> currentMtbColt = new ObservableField<>();
|
||||
|
||||
private PickingResiListAdapter mAdapter;
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private String mActivityTitle;
|
||||
private String mDefaultGestioneOfUL;
|
||||
private String mDefaultCodAnagOfUL;
|
||||
private Integer mDefaultSegnoOfUL;
|
||||
|
||||
private boolean mShouldCloseActivity;
|
||||
|
||||
public static void startActivity(Context context, String activityTitle, List<DocumentoResoDTO> documentoResoDTOList, Integer segno) {
|
||||
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
||||
|
||||
Intent intent = new Intent(context, PickingResiActivity.class);
|
||||
|
||||
intent.putExtra("activity_title", activityTitle);
|
||||
|
||||
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
||||
intent.putExtra("key", consegneCacheKey);
|
||||
|
||||
intent.putExtra("segno", segno);
|
||||
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
||||
mBinding.setViewmodel(this);
|
||||
|
||||
this.mDtbDocrList = new ObservableArrayList<>();
|
||||
|
||||
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
|
||||
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
|
||||
|
||||
|
||||
mTitle = getIntent().getStringExtra("activity_title");
|
||||
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
|
||||
mDefaultSegnoOfUL = getIntent().getIntExtra("segno", +1);
|
||||
int defaultSegnoLU = getIntent().getIntExtra("segno", +1);
|
||||
|
||||
mActivityTitle = getIntent().getStringExtra("activity_title");
|
||||
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
||||
|
||||
this.initView();
|
||||
MainApplication.appComponent
|
||||
.pickingResiComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mViewmodel.setListener(this);
|
||||
|
||||
setSupportActionBar(mBindings.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
getSupportActionBar().setTitle(mTitle);
|
||||
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setPickingResiView(this);
|
||||
|
||||
mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent, null);
|
||||
mBottomSheetFragmentLUContentViewModel = mBindings.bottomSheetLuContent.getViewModelInstance();
|
||||
mBindings.bottomSheetLuContent.setListener(this);
|
||||
mBottomSheetFragmentLUContentViewModel.setListener(this);
|
||||
|
||||
|
||||
this.initVars();
|
||||
this.initBarcodeReader();
|
||||
this.initRecyclerView();
|
||||
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
this.mViewmodel.init(mDocumentiResiList, defaultSegnoLU, codMdep);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -114,435 +140,255 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if(mArticoliInColloBottomSheetViewModel.isExpanded()){
|
||||
mArticoliInColloBottomSheetViewModel.collapse();
|
||||
}
|
||||
else if(thereIsAnOpenedUL()) {
|
||||
mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
|
||||
|
||||
if (this.mBindings.bottomSheetLuContent.isExpanded()) {
|
||||
this.mBindings.bottomSheetLuContent.collapse();
|
||||
} else if (!noLUPresent.get()) {
|
||||
this.mShouldCloseActivity = true;
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
this.mViewmodel.closeLU(true);
|
||||
} else {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void initVars() {
|
||||
this.noLUPresent.addOnPropertyChangedCallback(() -> {
|
||||
this.bottomSheetEnabled.set(!this.noLUPresent.get());
|
||||
});
|
||||
|
||||
}
|
||||
else {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
private void initBarcodeReader() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(this::onScanSuccessful)
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||
|
||||
|
||||
setSupportActionBar(this.mBinding.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
getSupportActionBar().setTitle(mActivityTitle);
|
||||
|
||||
this.mBinding.elevatedToolbar.setRecyclerView(this.mBinding.mainList);
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
|
||||
UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
|
||||
progressDialog.dismiss();
|
||||
this.mDtbDocrList.addAll(dtbDocrToPick);
|
||||
|
||||
try {
|
||||
this.initDatiPicking();
|
||||
} catch (Exception ex) {
|
||||
DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
|
||||
}
|
||||
|
||||
this.initList();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
private void initRecyclerView() {
|
||||
this.mBindings.elevatedToolbar.setRecyclerView(this.mBindings.mainList);
|
||||
|
||||
private void initList() {
|
||||
|
||||
mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
|
||||
mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
|
||||
|
||||
this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||
this.mBinding.mainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void initDatiPicking() throws Exception {
|
||||
List<String> foundGestioni = Stream.of(this.mDocumentiResiList)
|
||||
.map(DocumentoResoDTO::getGestione)
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
if(foundGestioni.size() > 1) {
|
||||
throw new Exception("Sono stati caricati documenti con diverse gestioni");
|
||||
} else mDefaultGestioneOfUL = foundGestioni.get(0);
|
||||
|
||||
|
||||
List<String> foundCodAnags = Stream.of(this.mDocumentiResiList)
|
||||
.map(DocumentoResoDTO::getCodAnag)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if(foundCodAnags.size() > 1) {
|
||||
throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
|
||||
} else mDefaultCodAnagOfUL = foundCodAnags.get(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onScanSuccessful(BarcodeScanDTO data) {
|
||||
|
||||
}
|
||||
|
||||
public void createNewUL() {
|
||||
this.createNewUL(null, null, null, false, true, null);
|
||||
}
|
||||
|
||||
public void createNewUL(Integer customNumCollo, String customSerCollo, Dialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
|
||||
this.mBinding.mainFab.close(true);
|
||||
|
||||
if (progress == null){
|
||||
progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
}
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt .setGestione(mDefaultGestioneOfUL)
|
||||
.setSegno(mDefaultSegnoOfUL)
|
||||
.setCodAnag(mDefaultCodAnagOfUL)
|
||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
|
||||
if(customNumCollo != null) {
|
||||
mtbColt.setNumCollo(customNumCollo);
|
||||
}
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(customSerCollo)) {
|
||||
mtbColt.setSerCollo(customSerCollo);
|
||||
}
|
||||
|
||||
|
||||
Dialog finalProgress = progress;
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> {
|
||||
|
||||
value.setDisablePrint(disablePrint);
|
||||
|
||||
setULToCurrentContext(value);
|
||||
|
||||
if(closeProgress) finalProgress.dismiss();
|
||||
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, finalProgress);
|
||||
this.mViewmodel.getPickingList().observe(this, updatedData -> {
|
||||
this.mPickingResiMutableData.clear();
|
||||
this.mPickingResiMutableData.addAll(convertDataModelToListModel(updatedData));
|
||||
this.noItemsToPick.set(updatedData.isEmpty());
|
||||
});
|
||||
|
||||
PickingResiListAdapter pickingResiListAdapter = new PickingResiListAdapter(this, mPickingResiMutableData);
|
||||
this.mBindings.mainList.setAdapter(pickingResiListAdapter);
|
||||
this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
pickingResiListAdapter.setOnItemClicked(clickedItem -> {
|
||||
if (!noLUPresent.get()) {
|
||||
this.mViewmodel.dispatchOrdineRow(clickedItem);
|
||||
}
|
||||
|
||||
private void setULToCurrentContext(MtbColt mtbColt){
|
||||
if(mtbColt != null && mtbColt.getMtbColr() == null) {
|
||||
mtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
}
|
||||
|
||||
this.currentMtbColt.set(mtbColt);
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
|
||||
if(currentMtbColt.get() != null){
|
||||
|
||||
List<MtbColr> currentMtbColrs = item.getWithdrawRows();
|
||||
|
||||
BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
|
||||
for (MtbColr mtbColr : currentMtbColrs) {
|
||||
qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol());
|
||||
}
|
||||
|
||||
BigDecimal qtaDaEvadere = item.getQtaDoc().subtract(qtaEvasaTotaleInMtbColr);
|
||||
if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;
|
||||
|
||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
.setBatchLot(item.getPartitaMag())
|
||||
.setCodArtFor(item.getCodArtFor())
|
||||
.setMtbAart(item.getMtbAart())
|
||||
.setQtaDisponibile(qtaDaEvadere)
|
||||
.setQtaTot(qtaDaEvadere)
|
||||
.setQtaEvasa(qtaEvasaTotaleInMtbColr)
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setMaxQta(qtaDaEvadere);
|
||||
|
||||
|
||||
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
|
||||
onOrdineRowDispatched(item, quantityDTO, closeUL);
|
||||
|
||||
}, null).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(item.getCodMart())
|
||||
.setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
|
||||
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
||||
.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
|
||||
.setNumCnf(quantityDTO.numCnf.getBigDecimal())
|
||||
.setDescrizione(item.getDescrizioneEstesa())
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
|
||||
.setCodAnagDoc(item.getCodAnag())
|
||||
.setCodDtipDoc(item.getCodDtip())
|
||||
.setSerDoc(item.getSerDoc())
|
||||
.setNumDoc(item.getNumDoc())
|
||||
.setDataDoc(item.getDataDocS())
|
||||
.setIdRigaDoc(item.getIdRiga());
|
||||
// .setCodJcom(item.getCodJcom());
|
||||
|
||||
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
|
||||
|
||||
mtbColr
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setUntMis(item.getMtbAart().getUntMis())
|
||||
.setMtbAart(item.getMtbAart());
|
||||
|
||||
item.getWithdrawRows().add(mtbColr);
|
||||
|
||||
this.refreshDtbDocrItem(item);
|
||||
|
||||
currentMtbColt.get().getMtbColr().add(mtbColr);
|
||||
|
||||
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
|
||||
removeListFilter();
|
||||
|
||||
FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
// if(closeUL) onColloClosed(null);
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
|
||||
if(thereIsAnOpenedUL()) {
|
||||
private List<PickingResiListModel> convertDataModelToListModel(List<WithdrawableDtbDocr> dataList) {
|
||||
List<PickingResiListModel> pickingResiListModels = new ArrayList<>();
|
||||
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
progress.show();
|
||||
Stream.of(dataList)
|
||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||
.forEach(x -> {
|
||||
|
||||
if(thereIsAnyRowInUL()) {
|
||||
NoteAggiuntiveLUDialog.make(this, noteString -> {
|
||||
PickingResiListModel pickingResiListModel = new PickingResiListModel();
|
||||
|
||||
MtbColt currentLU = currentMtbColt.get();
|
||||
pickingResiListModel.setGroupTitle(x.getCodDtip() + " - N° " + x.getNumDoc() + " del " + UtilityDate.formatDate(x.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
||||
pickingResiListModel.setBadge1(x.getCodMart());
|
||||
pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione()));
|
||||
pickingResiListModel.setActive(true);
|
||||
pickingResiListModel.setOriginalModel(x);
|
||||
|
||||
Runnable postNoteSave = () -> {
|
||||
ColliMagazzinoRESTConsumer.updateDataFineStatic(
|
||||
currentLU,
|
||||
() -> printCollo(progress, currentMtbColt.get(), onComplete),
|
||||
ex -> UtilityExceptions.defaultException(this, ex, progress));
|
||||
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
||||
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
||||
|
||||
for (MtbColr mtbColr : x.getWithdrawRows()) {
|
||||
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
||||
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
||||
}
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
pickingResiListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
pickingResiListModel.setQtaEvasa(numCnfColEvasa);
|
||||
pickingResiListModel.setQtaTot(x.getNumCnf());
|
||||
|
||||
} else {
|
||||
if (x.getMtbAart() != null)
|
||||
pickingResiListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
else pickingResiListModel.setUntMis(x.getUntDoc());
|
||||
pickingResiListModel.setQtaEvasa(qtaColEvasa);
|
||||
pickingResiListModel.setQtaTot(x.getQtaDoc());
|
||||
}
|
||||
|
||||
|
||||
pickingResiListModels.add(pickingResiListModel);
|
||||
});
|
||||
|
||||
return pickingResiListModels;
|
||||
}
|
||||
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.openProgress();
|
||||
|
||||
this.mViewmodel.processBarcodeDTO(data, () -> {
|
||||
BarcodeManager.enable();
|
||||
this.closeProgress();
|
||||
});
|
||||
};
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(noteString)) {
|
||||
currentLU.setAnnotazioni(noteString);
|
||||
public void createNewLU() {
|
||||
this.mBindings.mainFab.close(true);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> {
|
||||
postNoteSave.run();
|
||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress));
|
||||
} else postNoteSave.run();
|
||||
this.openProgress();
|
||||
|
||||
this.mViewmodel.createNewLU(null, null, () -> {
|
||||
this.closeProgress();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||
this.mViewmodel.dispatchRowEdit(mtbColr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColrDelete(MtbColr mtbColr) {
|
||||
this.mViewmodel.deleteRow(mtbColr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBottomSheetLUClose() {
|
||||
this.mViewmodel.closeLU(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||
NoteAggiuntiveLUDialog.make(this, onComplete, onAbort).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
|
||||
if(ex instanceof InvalidPesoKGException) {
|
||||
UtilityToast.showToast(ex.getMessage());
|
||||
} else {
|
||||
UtilityExceptions.defaultException(this, ex, mCurrentProgress);
|
||||
}
|
||||
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemDispatched(MtbAart mtbAart,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
BigDecimal totalQtaAvailable,
|
||||
BigDecimal totalNumCnfAvailable,
|
||||
BigDecimal qtaCnfAvailable,
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||
.setMtbAart(mtbAart)
|
||||
.setInitialNumCnf(initialNumCnf)
|
||||
.setInitialQtaCnf(initialQtaCnf)
|
||||
.setInitialQtaTot(initialQtaTot)
|
||||
.setTotalQtaAvailable(totalQtaAvailable)
|
||||
.setTotalNumCnfAvailable(totalNumCnfAvailable)
|
||||
.setQtaCnfAvailable(qtaCnfAvailable)
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScad(dataScad)
|
||||
.setCanOverflowOrderQuantity(false)
|
||||
.setCanLUBeClosed(false)
|
||||
.setCanPartitaMagBeChanged(false);
|
||||
|
||||
DialogInputQuantityV2
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
.setQtaCnf(resultDTO.getQtaCnf())
|
||||
.setQtaTot(resultDTO.getQtaTot())
|
||||
.setPartitaMag(resultDTO.getPartitaMag())
|
||||
.setDataScad(resultDTO.getDataScad());
|
||||
|
||||
this.openProgress();
|
||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||
}, () -> {
|
||||
|
||||
}).show();
|
||||
} else {
|
||||
deleteCollo(progress, onComplete);
|
||||
// this.mViewmodel.resetMatchedRows();
|
||||
})
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
@Override
|
||||
public void onRowSaved() {
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
}
|
||||
|
||||
private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
|
||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
|
||||
|
||||
if(foundIndex >= 0){
|
||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
||||
mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
|
||||
|
||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this,
|
||||
new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
}
|
||||
|
||||
private void onItemDeleted(MtbColr mtbColrDeleted) {
|
||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
|
||||
@Override
|
||||
public void onLUOpened(MtbColt mtbColt) {
|
||||
noLUPresent.set(false);
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
if(foundIndex >= 0){
|
||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
||||
|
||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt);
|
||||
}
|
||||
|
||||
private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
|
||||
DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
|
||||
@Override
|
||||
public void onLUClosed() {
|
||||
noLUPresent.set(true);
|
||||
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
|
||||
|
||||
if(shouldPrint) {
|
||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
||||
if (this.mShouldCloseActivity) super.onBackPressed();
|
||||
}
|
||||
|
||||
if (printerList.size() > 0) {
|
||||
try {
|
||||
singlePrint(mtbColtToPrint, printerList.get(0), () -> {
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
progress.dismiss();
|
||||
}, ex -> {
|
||||
progress.dismiss();
|
||||
String errorMessage = ex.getMessage();
|
||||
@Override
|
||||
public void onLUSuccessullyPrinted() {
|
||||
Resources res = getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||
DialogAskShouldPrint.make(this, "Packing List", onComplete).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||
this.closeProgress();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
this,
|
||||
new SpannableString(errorMessage),
|
||||
new SpannableString(ex.getMessage()),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
() -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
}
|
||||
} else {
|
||||
progress.dismiss();
|
||||
String errorMessage = "Nessuna stampante configurata";
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
||||
}
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
});
|
||||
} else {
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
progress.dismiss();
|
||||
}
|
||||
}).show();
|
||||
onComplete).show();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
||||
|
||||
PrinterRESTConsumer.printColloStatic(
|
||||
printerName,
|
||||
mtbColtToPrint,
|
||||
1,
|
||||
reportName, onComplete, onAbort);
|
||||
|
||||
}, onAbort);
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
|
||||
this.mColliRegistrati.add(generatedMtbColt);
|
||||
|
||||
setULToCurrentContext(null);
|
||||
|
||||
for(int i = 0; i < this.mDtbDocrList.size(); i++) {
|
||||
WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
|
||||
|
||||
List<MtbColr> withdraws = dtbDocr.getWithdrawRows();
|
||||
|
||||
for(int k = 0; k < withdraws.size(); k++) {
|
||||
MtbColr withdrawRow = withdraws.get(k);
|
||||
|
||||
dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
this.closeProgress();
|
||||
}
|
||||
|
||||
dtbDocr.getWithdrawRows().clear();
|
||||
|
||||
if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
|
||||
this.mDtbDocrList.remove(dtbDocr);
|
||||
i--;
|
||||
} else this.refreshDtbDocrItem(dtbDocr);
|
||||
}
|
||||
|
||||
removeListFilter();
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
|
||||
|
||||
private void deleteCollo(Dialog progress, Runnable onComplete) {
|
||||
|
||||
ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> {
|
||||
setULToCurrentContext(null);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public boolean thereIsAnOpenedUL() {
|
||||
return currentMtbColt.get() != null;
|
||||
}
|
||||
|
||||
public boolean thereIsAnyRowInUL() {
|
||||
return currentMtbColt.get() != null &&
|
||||
currentMtbColt.get().getMtbColr() != null &&
|
||||
currentMtbColt.get().getMtbColr().size() > 0;
|
||||
}
|
||||
|
||||
|
||||
private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
|
||||
int index = this.mDtbDocrList.indexOf(dtbDocr);
|
||||
this.mDtbDocrList.remove(dtbDocr);
|
||||
this.mDtbDocrList.add(index, dtbDocr);
|
||||
}
|
||||
|
||||
|
||||
public void removeListFilter() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface PickingResiComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
PickingResiComponent create();
|
||||
}
|
||||
|
||||
void inject(PickingResiActivity pickingResiActivity);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
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.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||
|
||||
@Module(subcomponents = PickingResiComponent.class)
|
||||
public class PickingResiModule {
|
||||
|
||||
@Provides
|
||||
PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
|
||||
return new PickingResiRESTConsumer(systemRESTConsumer, articoloRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() {
|
||||
return new BottomSheetFragmentLUContentViewModel();
|
||||
}
|
||||
|
||||
@Provides
|
||||
PickingResiViewModel providesPickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PickingResiRESTConsumer pickingResiRESTConsumer) {
|
||||
return new PickingResiViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, pickingResiRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,576 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
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.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
|
||||
public class PickingResiViewModel {
|
||||
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
private final MutableLiveData<List<WithdrawableDtbDocr>> mPickingList = new MutableLiveData<>();
|
||||
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
|
||||
|
||||
private MtbColt mCurrentMtbColt = null;
|
||||
|
||||
private String mDefaultGestioneOfLU;
|
||||
private String mDefaultCodAnagOfLU;
|
||||
private int mDefaultSegnoOfLU;
|
||||
private String mDefaultCodMdepOfLU;
|
||||
|
||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final ColliDataRecoverService mColliDataRecoverService;
|
||||
private final OrdiniRESTConsumer mOrdiniRestConsumerService;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
||||
private final PickingResiRESTConsumer mPickingResiRESTConsumer;
|
||||
|
||||
|
||||
@Inject
|
||||
public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliDataRecoverService colliDataRecoverService,
|
||||
OrdiniRESTConsumer ordiniRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
PickingResiRESTConsumer mPickingResiRESTConsumer) {
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mColliDataRecoverService = colliDataRecoverService;
|
||||
this.mOrdiniRestConsumerService = ordiniRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
this.mPrinterRESTConsumer = printerRESTConsumer;
|
||||
this.mPickingResiRESTConsumer = mPickingResiRESTConsumer;
|
||||
}
|
||||
|
||||
public void init(List<DocumentoResoDTO> documentList, int defaultSegnoLU, String codMdep) {
|
||||
this.mDefaultSegnoOfLU = defaultSegnoLU;
|
||||
this.mDefaultCodMdepOfLU = codMdep;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.initDatiPicking(documentList);
|
||||
|
||||
this.mPickingResiRESTConsumer.loadDocRows(documentList, withdrawableDtbDocr -> {
|
||||
this.mPickingList.postValue(withdrawableDtbDocr);
|
||||
this.sendOnLoadingEnded();
|
||||
}, ex -> this.sendError(new DocumentsLoadException(ex)));
|
||||
}
|
||||
|
||||
private void initDatiPicking(List<DocumentoResoDTO> documentList) {
|
||||
List<String> foundGestioni = Stream.of(documentList)
|
||||
.map(DocumentoResoDTO::getGestione)
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
if (foundGestioni.size() > 1) {
|
||||
this.sendError(new Exception("Sono stati caricati documenti con diverse gestioni"));
|
||||
} else mDefaultGestioneOfLU = foundGestioni.get(0);
|
||||
|
||||
|
||||
List<String> foundCodAnags = Stream.of(documentList)
|
||||
.map(DocumentoResoDTO::getCodAnag)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if (foundCodAnags.size() > 1) {
|
||||
this.sendError(new Exception("Sono stati caricati documenti con diversi codici anagrafici"));
|
||||
} else mDefaultCodAnagOfLU = foundCodAnags.get(0);
|
||||
}
|
||||
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt.setGestione(mDefaultGestioneOfLU)
|
||||
.setSegno(mDefaultSegnoOfLU)
|
||||
.setCodAnag(mDefaultCodAnagOfLU)
|
||||
.setCodMdep(mDefaultCodMdepOfLU)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
if (customNumCollo != null) mtbColt.setNumCollo(customNumCollo);
|
||||
if (!UtilityString.isNullOrEmpty(customSerCollo)) mtbColt.setSerCollo(customSerCollo);
|
||||
|
||||
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
||||
mtbColt
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
this.mCurrentMtbColt = mtbColt;
|
||||
|
||||
if (onComplete != null) onComplete.run();
|
||||
this.sendLUOpened(mtbColt);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public void closeLU(boolean shouldPrint) {
|
||||
if (mCurrentMtbColt == null) return;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> {
|
||||
|
||||
if (canBeDeleted) {
|
||||
deleteLU(() -> {
|
||||
this.sendLUClosed();
|
||||
this.sendOnLoadingEnded();
|
||||
});
|
||||
} else {
|
||||
this.sendOnNoteAggiuntiveRequired(noteAggiuntive -> {
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(noteAggiuntive)) {
|
||||
this.mCurrentMtbColt.setAnnotazioni(noteAggiuntive);
|
||||
}
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> {
|
||||
|
||||
if (shouldPrint) {
|
||||
printCollo(mCurrentMtbColt, () -> {
|
||||
postCloseOperations(mCurrentMtbColt, () -> {
|
||||
this.sendLUClosed();
|
||||
this.sendOnLoadingEnded();
|
||||
});
|
||||
});
|
||||
} else {
|
||||
postCloseOperations(mCurrentMtbColt, () -> {
|
||||
this.sendLUClosed();
|
||||
this.sendOnLoadingEnded();
|
||||
});
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
|
||||
}, () -> {
|
||||
this.sendLUClosed();
|
||||
this.sendOnLoadingEnded();
|
||||
});
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void deleteLU(Runnable onComplete) {
|
||||
mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> {
|
||||
|
||||
this.mCurrentMtbColt = null;
|
||||
if (onComplete != null) onComplete.run();
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void printCollo(MtbColt mtbColtToPrint, Runnable onComplete) {
|
||||
this.sendLUPrintRequest(shouldPrint -> {
|
||||
if (!shouldPrint) {
|
||||
onComplete.run();
|
||||
} else {
|
||||
this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdepOfLU, PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
||||
if (printerList == null || printerList.size() == 0) {
|
||||
this.sendError(new NoPrintersFoundException());
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
singlePrint(mtbColtToPrint, printerList.get(0), onComplete, ex -> this.sendLUPrintError(ex, onComplete));
|
||||
}, this::sendError);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String reportName = ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum());
|
||||
|
||||
this.mPrinterRESTConsumer.printCollo(
|
||||
printerName,
|
||||
mtbColtToPrint,
|
||||
1,
|
||||
reportName, onComplete, onFailed);
|
||||
|
||||
}
|
||||
|
||||
private void postCloseOperations(MtbColt mtbColt, Runnable onComplete) {
|
||||
this.mColliRegistrati.add(mtbColt);
|
||||
|
||||
Stream.of(this.mPickingList.getValue())
|
||||
.forEach(x -> {
|
||||
List<MtbColr> withdraws = x.getWithdrawRows();
|
||||
|
||||
for (int k = 0; k < withdraws.size(); k++) {
|
||||
MtbColr withdrawRow = withdraws.get(k);
|
||||
x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||
}
|
||||
|
||||
x.getWithdrawRows().clear();
|
||||
|
||||
if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) {
|
||||
this.mPickingList.getValue().remove(x);
|
||||
}
|
||||
});
|
||||
|
||||
this.mPickingList.postValue(this.mPickingList.getValue());
|
||||
onComplete.run();
|
||||
}
|
||||
|
||||
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
|
||||
//Se non c'è una UL aperta
|
||||
if (mCurrentMtbColt == null) {
|
||||
|
||||
//Se è un'etichetta anonima
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
//Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
|
||||
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
|
||||
//dell'etichetta anonima
|
||||
// this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
} else {
|
||||
// this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||
// this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
|
||||
|
||||
} else {
|
||||
// this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr) {
|
||||
BigDecimal totalQtaDoc = withdrawableDtbDocr.getQtaDoc();
|
||||
BigDecimal totalNumCnfDoc = withdrawableDtbDocr.getNumCnf();
|
||||
BigDecimal qtaCnfDoc = withdrawableDtbDocr.getQtaCnf();
|
||||
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
withdrawableDtbDocr.getMtbAart(),
|
||||
totalNumCnfDoc,
|
||||
qtaCnfDoc,
|
||||
totalQtaDoc,
|
||||
totalQtaDoc,
|
||||
totalNumCnfDoc,
|
||||
qtaCnfDoc,
|
||||
withdrawableDtbDocr.getPartitaMag(),
|
||||
withdrawableDtbDocr.getDataScadPartitaMagD(),
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
|
||||
this.saveNewRow(withdrawableDtbDocr,
|
||||
pickedQuantityDTO.getNumCnf(),
|
||||
pickedQuantityDTO.getQtaCnf(),
|
||||
pickedQuantityDTO.getQtaTot(),
|
||||
pickedQuantityDTO.getPartitaMag(),
|
||||
pickedQuantityDTO.getDataScad(),
|
||||
shouldCloseLU);
|
||||
});
|
||||
}
|
||||
|
||||
public void dispatchRowEdit(final MtbColr mtbColrToEdit) {
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
mtbColrToEdit.getMtbAart(),
|
||||
mtbColrToEdit.getNumCnf(),
|
||||
mtbColrToEdit.getQtaCnf(),
|
||||
mtbColrToEdit.getQtaCol(),
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
mtbColrToEdit.getPartitaMag(),
|
||||
mtbColrToEdit.getDataScadPartitaD(),
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
|
||||
this.saveEditedRow(mtbColrToEdit,
|
||||
pickedQuantityDTO.getNumCnf(),
|
||||
pickedQuantityDTO.getQtaCnf(),
|
||||
pickedQuantityDTO.getQtaTot(),
|
||||
pickedQuantityDTO.getPartitaMag(),
|
||||
pickedQuantityDTO.getDataScad(),
|
||||
shouldCloseLU);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart())
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScadPartita(dataScad)
|
||||
.setQtaCol(qtaTot)
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setNumCnf(numCnf)
|
||||
.setDescrizione(withdrawableDtbDocr.getMtbAart().getDescrizioneEstesa())
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
|
||||
.setCodAnagDoc(withdrawableDtbDocr.getCodAnag())
|
||||
.setCodDtipDoc(withdrawableDtbDocr.getCodDtip())
|
||||
.setSerDoc(withdrawableDtbDocr.getSerDoc())
|
||||
.setNumDoc(withdrawableDtbDocr.getNumDoc())
|
||||
.setDataDoc(withdrawableDtbDocr.getDataDocS())
|
||||
.setIdRigaDoc(withdrawableDtbDocr.getIdRiga());
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone());
|
||||
|
||||
boolean shouldPrint = true;
|
||||
|
||||
//Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe)
|
||||
if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
|
||||
shouldPrint = false;
|
||||
}
|
||||
|
||||
if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
if (shouldCloseLU) closeLU(shouldPrint);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean finalShouldPrint = shouldPrint;
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
|
||||
|
||||
mtbColr
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setUntMis(withdrawableDtbDocr.getMtbAart().getUntMis())
|
||||
.setMtbAart(withdrawableDtbDocr.getMtbAart());
|
||||
|
||||
withdrawableDtbDocr.getWithdrawRows().add(mtbColr);
|
||||
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.mPickingList.postValue(this.mPickingList.getValue());
|
||||
|
||||
this.sendOnRowSaved();
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
if (shouldCloseLU) closeLU(finalShouldPrint);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
MtbColt mtbColt = new MtbColt()
|
||||
.setNumCollo(mtbColrToUpdate.getNumCollo())
|
||||
.setDataCollo(mtbColrToUpdate.getDataColloS())
|
||||
.setSerCollo(mtbColrToUpdate.getSerCollo())
|
||||
.setGestione(mtbColrToUpdate.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
mtbColr.setRiga(null)
|
||||
.setNumCnf(numCnf.subtract(mtbColrToUpdate.getNumCnf()))
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setQtaCol(qtaTot.subtract(mtbColrToUpdate.getQtaCol()))
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScadPartita(dataScad);
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
|
||||
mtbColr.setNumCnf(numCnf)
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setQtaCol(qtaTot);
|
||||
|
||||
Optional<WithdrawableDtbDocr> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToUpdate))
|
||||
.findSingle();
|
||||
|
||||
if (pickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToUpdate);
|
||||
pickingObjectDTO.get().getWithdrawRows().add(mtbColr);
|
||||
}
|
||||
|
||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||
this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.sendOnRowSaved();
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
public void deleteRow(MtbColr mtbColrToDelete) {
|
||||
this.sendMtbColrDeleteRequest(canDelete -> {
|
||||
if (canDelete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
MtbColt mtbColt = new MtbColt()
|
||||
.setNumCollo(mtbColrToDelete.getNumCollo())
|
||||
.setDataCollo(mtbColrToDelete.getDataColloS())
|
||||
.setSerCollo(mtbColrToDelete.getSerCollo())
|
||||
.setGestione(mtbColrToDelete.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
mtbColr.setQtaCol(mtbColr.getQtaCol().multiply(new BigDecimal(-1)))
|
||||
.setNumCnf(mtbColr.getNumCnf().multiply(new BigDecimal(-1)))
|
||||
.setRiga(null);
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
|
||||
Optional<WithdrawableDtbDocr> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToDelete))
|
||||
.findSingle();
|
||||
|
||||
if (pickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToDelete);
|
||||
}
|
||||
|
||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
|
||||
|
||||
this.sendOnRowSaved();
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<WithdrawableDtbDocr>> getPickingList() {
|
||||
return mPickingList;
|
||||
}
|
||||
|
||||
private void sendOnNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||
if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete, onAbort);
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnLoadingEnded() {
|
||||
if (this.mListener != null) mListener.onLoadingEnded();
|
||||
}
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
private void sendLUOpened(MtbColt mtbColt) {
|
||||
if (this.mListener != null) mListener.onLUOpened(mtbColt);
|
||||
}
|
||||
|
||||
private void sendLUClosed() {
|
||||
if (this.mListener != null) mListener.onLUClosed();
|
||||
}
|
||||
|
||||
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||
if (this.mListener != null) mListener.onLUPrintRequest(onComplete);
|
||||
}
|
||||
|
||||
private void sendLUPrintError(Exception ex, Runnable onComplete) {
|
||||
if (this.mListener != null) mListener.onLUPrintError(ex, onComplete);
|
||||
}
|
||||
|
||||
private void sendMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
||||
}
|
||||
|
||||
private void sendOnItemDispatched(MtbAart mtbAart,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
BigDecimal totalQtaAvailable,
|
||||
BigDecimal totalNumCnfAvailable,
|
||||
BigDecimal qtaCnfAvailable,
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||
if (this.mListener != null) mListener.onItemDispatched(mtbAart,
|
||||
initialNumCnf,
|
||||
initialQtaCnf,
|
||||
initialQtaTot,
|
||||
totalQtaAvailable,
|
||||
totalNumCnfAvailable,
|
||||
qtaCnfAvailable,
|
||||
partitaMag,
|
||||
dataScad,
|
||||
onComplete);
|
||||
}
|
||||
|
||||
private void sendOnRowSaved() {
|
||||
if (this.mListener != null) mListener.onRowSaved();
|
||||
}
|
||||
|
||||
|
||||
public PickingResiViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
|
||||
|
||||
void onNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort);
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onItemDispatched(MtbAart mtbAart,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
BigDecimal totalQtaAvailable,
|
||||
BigDecimal totalNumCnfAvailable,
|
||||
BigDecimal qtaCnfAvailable,
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,197 +1,149 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemBinding;
|
||||
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemHeaderBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemHeaderBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
|
||||
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<PickingResiListAdapter.SubheaderHolder, PickingResiListAdapter.SingleItemViewHolder> {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private List<WithdrawableDtbDocr> mDataset;
|
||||
|
||||
private final List<PickingResiListModel> mDataset = new ArrayList<>();
|
||||
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
PickingResiMainListItemHeaderBinding mBinding;
|
||||
|
||||
UltimeConsegneMainListItemHeaderBinding mBinding;
|
||||
|
||||
SubheaderHolder(UltimeConsegneMainListItemHeaderBinding binding) {
|
||||
SubheaderHolder(PickingResiMainListItemHeaderBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||
PickingResiMainListItemBinding mBinding;
|
||||
|
||||
UltimeConsegneMainListItemBinding mBinding;
|
||||
|
||||
SingleItemViewHolder(UltimeConsegneMainListItemBinding binding) {
|
||||
SingleItemViewHolder(PickingResiMainListItemBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public PickingResiListAdapter(Context context, ObservableList<WithdrawableDtbDocr> data) {
|
||||
public PickingResiListAdapter(AppCompatActivity context, ObservableArrayList<PickingResiListModel> mutableDataSet) {
|
||||
this.mContext = context;
|
||||
this.mDataset = new ArrayList<>();
|
||||
|
||||
refreshData(data);
|
||||
|
||||
data.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<WithdrawableDtbDocr>>() {
|
||||
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
public void onChanged(ObservableList<WithdrawableDtbDocr> sender) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeChanged(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeInserted(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeMoved(ObservableList<WithdrawableDtbDocr> sender, int fromPosition, int toPosition, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeRemoved(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
public void onChanged(ObservableList sender) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sender);
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshData(List<WithdrawableDtbDocr> data) {
|
||||
this.mDataset.clear();
|
||||
this.mDataset.addAll(Stream.of(data)
|
||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||
.toList());
|
||||
|
||||
this.notifyDataChanged();
|
||||
}
|
||||
|
||||
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
|
||||
this.mOnItemClicked = onItemClicked;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
UltimeConsegneMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item, parent, false);
|
||||
return new SingleItemViewHolder(binding);
|
||||
public PickingResiListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
PickingResiMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item, parent, false);
|
||||
return new PickingResiListAdapter.SingleItemViewHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
UltimeConsegneMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item_header, parent, false);
|
||||
return new SubheaderHolder(binding);
|
||||
public PickingResiListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
PickingResiMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item_header, parent, false);
|
||||
return new PickingResiListAdapter.SubheaderHolder(binding);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(PickingResiListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
PickingResiListModel pickingResiListModel = this.mDataset.get(nextItemPosition);
|
||||
|
||||
subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getGroupTitle()) ? View.GONE : View.VISIBLE);
|
||||
subheaderHolder.mBinding.groupTitle.setText(pickingResiListModel.getGroupTitle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
|
||||
final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
|
||||
public void onBindItemViewHolder(final PickingResiListAdapter.SingleItemViewHolder holder, final int position) {
|
||||
PickingResiListModel pickingResiListModel = this.mDataset.get(position);
|
||||
|
||||
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
||||
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
||||
|
||||
for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
|
||||
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
||||
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
||||
}
|
||||
|
||||
Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaColEvasa));
|
||||
|
||||
holder.mBinding.badge1.setText(dtbDocr.getCodMart());
|
||||
holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
|
||||
|
||||
|
||||
|
||||
//Setting qty with unt_mis
|
||||
if(!SettingsManager.iDB().isFlagForceAllToColli() && (dtbDocr.getMtbAart() == null || dtbDocr.getMtbAart().isFlagQtaCnfFissaBoolean())){
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaColEvasa));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
|
||||
holder.mBinding.untMis.setText(dtbDocr.getUntDoc());
|
||||
} else {
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(numCnfColEvasa));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getNumCnf()));
|
||||
holder.mBinding.untMis.setText(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (qtaDaEvadere <= 0 ) {
|
||||
if (pickingResiListModel.getQtaEvasa().subtract(pickingResiListModel.getQtaTot()).floatValue() >= 0) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
|
||||
} else if (qtaDaEvadere > 0 && qtaColEvasa.floatValue() > 0) {
|
||||
} else if (pickingResiListModel.getQtaEvasa().floatValue() > 0) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
|
||||
} else if (position % 2 == 1) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(Color.WHITE);
|
||||
} else {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
|
||||
}
|
||||
|
||||
holder.mBinding.deactivatedOverBg.setVisibility(!pickingResiListModel.isActive() ? View.VISIBLE : View.GONE);
|
||||
holder.mBinding.getRoot().setAlpha(!pickingResiListModel.isActive() ? 0.8f : 1);
|
||||
holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingResiListModel.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner));
|
||||
holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingResiListModel.isActive() ? R.color.gray_600 : R.color.green_700));
|
||||
|
||||
holder.mBinding.descrizione.setText(pickingResiListModel.getDescrizione());
|
||||
holder.mBinding.descrizione.setTextColor(pickingResiListModel.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
|
||||
|
||||
|
||||
holder.mBinding.badge1.setText(pickingResiListModel.getBadge1());
|
||||
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaEvasa()));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaTot()));
|
||||
|
||||
holder.mBinding.untMis.setText(pickingResiListModel.getUntMis());
|
||||
holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getUntMis()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
|
||||
if (this.mOnItemClicked != null)
|
||||
this.mOnItemClicked.run(pickingResiListModel.getOriginalModel());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
DtbDocr nextDtbDocr = this.mDataset.get(nextItemPosition);
|
||||
subheaderHolder.mBinding.descrizione.setText(nextDtbDocr.getCodDtip() + " - N° " + nextDtbDocr.getNumDoc() + " del " + UtilityDate.formatDate(nextDtbDocr.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
if (getItemSize() == 1) return true;
|
||||
else if (getItemSize() > 1) {
|
||||
PickingResiListModel compare1 = this.mDataset.get(position);
|
||||
PickingResiListModel compare2 = this.mDataset.get(position + 1);
|
||||
|
||||
DtbDocr compare1 = this.mDataset.get(position);
|
||||
DtbDocr compare2 = this.mDataset.get(position + 1);
|
||||
if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if( !compare1.getDataDocS().equalsIgnoreCase(compare2.getDataDocS()) ||
|
||||
!compare1.getSerDoc().equalsIgnoreCase(compare2.getSerDoc()) ||
|
||||
!compare1.getNumDoc().equals(compare2.getNumDoc()) ||
|
||||
!compare1.getCodAnag().equalsIgnoreCase(compare2.getCodAnag()) ||
|
||||
!compare1.getCodDtip().equalsIgnoreCase(compare2.getCodDtip())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return this.mDataset.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
|
||||
public class PickingResiListModel {
|
||||
|
||||
private String groupTitle;
|
||||
|
||||
private String badge1;
|
||||
|
||||
private String descrizione;
|
||||
private boolean descrizionePresente;
|
||||
private BigDecimal qtaEvasa;
|
||||
private BigDecimal qtaTot;
|
||||
private String untMis;
|
||||
|
||||
private boolean active;
|
||||
|
||||
private WithdrawableDtbDocr mOriginalModel;
|
||||
|
||||
public String getGroupTitle() {
|
||||
return groupTitle;
|
||||
}
|
||||
|
||||
public PickingResiListModel setGroupTitle(String groupTitle) {
|
||||
this.groupTitle = groupTitle;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBadge1() {
|
||||
return badge1;
|
||||
}
|
||||
|
||||
public PickingResiListModel setBadge1(String badge1) {
|
||||
this.badge1 = badge1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public PickingResiListModel setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isDescrizionePresente() {
|
||||
return descrizionePresente;
|
||||
}
|
||||
|
||||
public PickingResiListModel setDescrizionePresente(boolean descrizionePresente) {
|
||||
this.descrizionePresente = descrizionePresente;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaEvasa() {
|
||||
return qtaEvasa;
|
||||
}
|
||||
|
||||
public PickingResiListModel setQtaEvasa(BigDecimal qtaEvasa) {
|
||||
this.qtaEvasa = qtaEvasa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaTot() {
|
||||
return qtaTot;
|
||||
}
|
||||
|
||||
public PickingResiListModel setQtaTot(BigDecimal qtaTot) {
|
||||
this.qtaTot = qtaTot;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public PickingResiListModel setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public PickingResiListModel setActive(boolean active) {
|
||||
this.active = active;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WithdrawableDtbDocr getOriginalModel() {
|
||||
return mOriginalModel;
|
||||
}
|
||||
|
||||
public PickingResiListModel setOriginalModel(WithdrawableDtbDocr originalModel) {
|
||||
this.mOriginalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.exceptions;
|
||||
|
||||
public class DocumentsLoadException extends Exception {
|
||||
|
||||
public DocumentsLoadException(Throwable cause) {
|
||||
super("Errore durante il caricamento dei documenti");
|
||||
initCause(cause);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||
|
||||
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.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
|
||||
@Singleton
|
||||
public class PickingResiRESTConsumer {
|
||||
|
||||
|
||||
private final SystemRESTConsumer mSystemRestConsumer;
|
||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||
|
||||
@Inject
|
||||
public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
|
||||
this.mSystemRestConsumer = systemRESTConsumer;
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
}
|
||||
|
||||
public void loadDocRows(List<DocumentoResoDTO> documents, RunnableArgs<ArrayList<WithdrawableDtbDocr>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> filterCond = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < documents.size(); i++) {
|
||||
HashMap<String, Object> filter = new HashMap<>();
|
||||
|
||||
filter.put("data_doc", documents.get(i).getDataDocD());
|
||||
filter.put("num_doc", documents.get(i).getNumDoc());
|
||||
filter.put("ser_doc", documents.get(i).getSerDoc());
|
||||
filter.put("cod_anag", documents.get(i).getCodAnag());
|
||||
filter.put("cod_dtip", documents.get(i).getCodDtip());
|
||||
|
||||
filterCond.add(filter);
|
||||
}
|
||||
|
||||
String sql = "SELECT * FROM dvw_situazione_qta_docs " +
|
||||
"WHERE " +
|
||||
UtilityQuery.concatFieldListInWhereCond(filterCond) +
|
||||
"ORDER BY cod_mart";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
|
||||
this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
|
||||
|
||||
if(values != null && values.size() > 0){
|
||||
List<String> codMarts = Stream.of(values)
|
||||
.map(DtbDocr::getCodMart)
|
||||
.withoutNulls()
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
mArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
|
||||
|
||||
if(arts != null && arts.size() > 0) {
|
||||
for (DtbDocr value : values) {
|
||||
|
||||
MtbAart foundMtbAart = null;
|
||||
|
||||
List<MtbAart> mtbAartStream = Stream.of(arts)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList();
|
||||
|
||||
if(mtbAartStream != null && mtbAartStream.size() > 0){
|
||||
foundMtbAart = mtbAartStream.get(0);
|
||||
}
|
||||
|
||||
value.setMtbAart(foundMtbAart);
|
||||
}
|
||||
|
||||
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
}
|
||||
|
||||
}, onFailed);
|
||||
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.dto;
|
||||
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -48,7 +48,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
*/
|
||||
public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
|
||||
private Runnable mOnPreDestroy;
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private FragmentProdOrdineProduzioneElencoBinding mBinding;
|
||||
@@ -102,12 +102,26 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
mAppBarTitle = titleText;
|
||||
mAppBarTitle.setText(context.getText(R.string.prod_ordine_produzione_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
private void init() {
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
@@ -139,8 +153,8 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroy = onPreDestroy;
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,275 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione;
|
||||
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.CommonRESTException;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdOrdineLavorazioneElencoBinding;
|
||||
import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core.ProdOrdineLavorazioneHelper;
|
||||
import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core.ProdOrdineLavorazioneListAdapter;
|
||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
*/
|
||||
public class ProdOrdineLavorazioneElencoFragment extends Fragment implements ITitledFragment, IScrollableFragment {
|
||||
private FragmentProdOrdineLavorazioneElencoBinding mBinding;
|
||||
private ProdOrdineLavorazioneHelper mHelper;
|
||||
|
||||
private Runnable mOnPreDestroy;
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private ProdOrdineLavorazioneListAdapter mAdapter;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> mOriginalOrderList;
|
||||
private List<OrdineVenditaInevasoDTO> mRenderedOrderList = new ArrayList<>();
|
||||
|
||||
|
||||
public ProdOrdineLavorazioneElencoFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
|
||||
public static ProdOrdineLavorazioneElencoFragment newInstance() {
|
||||
ProdOrdineLavorazioneElencoFragment fragment = new ProdOrdineLavorazioneElencoFragment();
|
||||
Bundle args = new Bundle();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_ordine_lavorazione_elenco, container, false);
|
||||
|
||||
mBinding.ordineLavorazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
mBinding.ordineLavorazioneMainFab.hide();
|
||||
|
||||
mBinding.ordineLavorazioneMainFab.setOnClickListener(v -> onVenditaMainFabClick());
|
||||
|
||||
if (mToolbar != null) mToolbar.setRecyclerView(mBinding.ordineLavorazioneMainList);
|
||||
|
||||
init();
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.prod_ordine_lavorazione_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroy = onPreDestroy;
|
||||
}
|
||||
|
||||
|
||||
private void init() {
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
|
||||
mHelper = new ProdOrdineLavorazioneHelper(getActivity());
|
||||
// mViewModel = new VenditaViewModel(getActivity(), this, mBinding, mHelper);
|
||||
|
||||
mHelper.loadOrdini(ordini -> {
|
||||
if (ordini != null) {
|
||||
UtilityToast.showToast("Caricati " + ordini.size() + " ordini");
|
||||
mOriginalOrderList = ordini;
|
||||
// mViewModel.setListOrder(ordini);
|
||||
}
|
||||
|
||||
|
||||
mBinding.ordineLavorazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
|
||||
|
||||
refreshOrdini(ordini);
|
||||
initRecyclerView();
|
||||
progress.dismiss();
|
||||
}, ex -> {
|
||||
mOriginalOrderList = new ArrayList<>();
|
||||
progress.dismiss();
|
||||
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
if (errorMessage == null) errorMessage = ex.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void refreshOrdini(List<OrdineVenditaInevasoDTO> ordini) {
|
||||
|
||||
mRenderedOrderList.clear();
|
||||
if (ordini != null && ordini.size() > 0) mRenderedOrderList.addAll(ordini);
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
mAdapter = new ProdOrdineLavorazioneListAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
|
||||
mBinding.ordineLavorazioneMainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
public void refreshRecyclerView() {
|
||||
mAdapter.updateItems(mRenderedOrderList);
|
||||
}
|
||||
|
||||
private RunnableArgs<OrdineVenditaInevasoDTO> onSingleSelectionChanged = dto -> {
|
||||
List<OrdineVenditaInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
|
||||
|
||||
if (!SettingsManager.iDB().isFlagMultiClienteOrdV()) {
|
||||
boolean allMatch = Stream.of(selectedOrders).allMatch(x -> dto.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd()));
|
||||
|
||||
if (!allMatch) {
|
||||
Stream.of(selectedOrders)
|
||||
.filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd()))
|
||||
.forEach(x -> x.setSelected(false));
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedOrders != null && selectedOrders.size() > 0) {
|
||||
mBinding.ordineLavorazioneMainFab.show();
|
||||
} else {
|
||||
mBinding.ordineLavorazioneMainFab.hide();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private void onVenditaMainFabClick() {
|
||||
|
||||
List<OrdineVenditaInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
|
||||
List<String> barcodes = new ArrayList<>();
|
||||
|
||||
String dataCons = null;
|
||||
|
||||
for (OrdineVenditaInevasoDTO ordine : selectedOrders) {
|
||||
if (!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode());
|
||||
|
||||
if (dataCons == null) dataCons = ordine.getDataConsS();
|
||||
else if (!dataCons.equalsIgnoreCase(ordine.getDataConsS())) dataCons = "";
|
||||
}
|
||||
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
|
||||
|
||||
checkSelectedOrders(selectedOrders, () -> {
|
||||
RunnableArgs<List<SitArtOrdDTO>> onPostGetListaArts = sitArtsDTO -> {
|
||||
mHelper.getBancaliLavorazioneGiaRegistrati(selectedOrders, mtbColtList -> {
|
||||
progress.dismiss();
|
||||
|
||||
List<String> codMarts = Stream.of(sitArtsDTO)
|
||||
.distinctBy(SitArtOrdDTO::getCodMart)
|
||||
.map(SitArtOrdDTO::getCodMart)
|
||||
.toList();
|
||||
|
||||
int alreadyRegisteredUL = mtbColtList.size();
|
||||
|
||||
|
||||
DialogSimpleMessageHelper.makeInfoDialog(getActivity(),
|
||||
getText(R.string.orders).toString(),
|
||||
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, selectedOrders.size()), selectedOrders.size())
|
||||
+ "<br />" +
|
||||
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size())
|
||||
+ "<br />" +
|
||||
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
|
||||
null,
|
||||
() -> startPickingActivity(sitArtsDTO, selectedOrders, mtbColtList)
|
||||
).show();
|
||||
|
||||
}, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress));
|
||||
};
|
||||
|
||||
OrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrders, onPostGetListaArts, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress));
|
||||
|
||||
}, progress::dismiss);
|
||||
}
|
||||
|
||||
private void checkSelectedOrders(List<OrdineVenditaInevasoDTO> selectedOrders, Runnable onComplete, Runnable onFailed) {
|
||||
if (selectedOrders != null && selectedOrders.size() > 0) {
|
||||
|
||||
//Definizione della gestione collo di default
|
||||
List<GestioneEnum> foundGestioni = Stream.of(selectedOrders)
|
||||
.map(OrdineVenditaInevasoDTO::getGestioneEnum)
|
||||
.withoutNulls()
|
||||
.distinctBy(x -> x)
|
||||
.toList();
|
||||
|
||||
if (foundGestioni != null && foundGestioni.size() > 1) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getContext(), new SpannableString(getString(R.string.error_multiple_gest)), null, onFailed::run).show();
|
||||
return;
|
||||
}
|
||||
|
||||
//Definizione del deposito di default
|
||||
List<String> foundCodMdep = Stream.of(selectedOrders)
|
||||
.map(OrdineVenditaInevasoDTO::getCodMdep)
|
||||
.withoutNulls()
|
||||
.distinctBy(x -> x)
|
||||
.toList();
|
||||
|
||||
if (foundCodMdep != null && foundCodMdep.size() > 1) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getContext(), new SpannableString(getString(R.string.error_multiple_cod_mdep_ordv)), null, onFailed::run).show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
}
|
||||
|
||||
private void startPickingActivity(List<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
|
||||
Intent myIntent = new Intent(getActivity(), SpedizioneActivity.class);
|
||||
|
||||
String keyPickingList = DataCache.addItem(ordini);
|
||||
myIntent.putExtra("keyPickingList", keyPickingList);
|
||||
|
||||
String keyTestateOrdini = DataCache.addItem(selectedOrders);
|
||||
myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
|
||||
|
||||
String keyColliRegistrati = DataCache.addItem(mtbColtList);
|
||||
myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
|
||||
|
||||
getActivity().startActivity(myIntent);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,183 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.firebase.perf.metrics.Trace;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.EsitoType;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.vendita.rest.OrdiniVenditaRESTConsumerService;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class ProdOrdineLavorazioneHelper {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public ProdOrdineLavorazioneHelper(Context context){
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
public void loadOrdini(RunnableArgs<List<OrdineVenditaInevasoDTO>> onComplete, RunnableArgs<Exception> onFailed){
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_ords_lavorazione");
|
||||
perfTrace.start();
|
||||
|
||||
OrdiniVenditaRESTConsumerService service = RESTBuilder.getService(OrdiniVenditaRESTConsumerService.class);
|
||||
service
|
||||
.listOrdiniInevasi(codMdep, "P")
|
||||
.enqueue(new Callback<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> response) {
|
||||
|
||||
if(response.isSuccessful()) {
|
||||
|
||||
if(response.body() != null) {
|
||||
if(response.body().getEsito() == EsitoType.OK) {
|
||||
UtilityFirebase.stopPerformanceTrace(perfTrace, false);
|
||||
onComplete.run(response.body().getDto());
|
||||
} else {
|
||||
UtilityFirebase.stopPerformanceTrace(perfTrace, true);
|
||||
Log.e("Ord Lavorazione", response.body().getErrorMessage());
|
||||
onFailed.run(new Exception(response.body().getErrorMessage()));
|
||||
}
|
||||
} else {
|
||||
UtilityFirebase.stopPerformanceTrace(perfTrace, true);
|
||||
Log.e("Ord Lavorazione", response.message());
|
||||
onFailed.run(new Exception(response.message()));
|
||||
}
|
||||
} else {
|
||||
UtilityFirebase.stopPerformanceTrace(perfTrace, true);
|
||||
Log.e("Ord Lavorazione", "Status " + response.code() + ": " + response.message());
|
||||
onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> call, Throwable t) {
|
||||
UtilityFirebase.stopPerformanceTrace(perfTrace, true);
|
||||
Log.e("Ord Lavorazione", t.toString());
|
||||
UtilityLogger.errorMe(new Exception(t));
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public List<OrdineVenditaInevasoDTO> getSelectedOrders(List<OrdineVenditaInevasoDTO> ordiniList) {
|
||||
return Stream.of(ordiniList)
|
||||
.filter(OrdineVenditaInevasoDTO::isSelected)
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// public void retrievePickingList(List<OrdineLavorazioneInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed){
|
||||
// String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
//
|
||||
//
|
||||
// Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_pick_lavorazione");
|
||||
// perfTrace.start();
|
||||
//
|
||||
// List<GetPickingListDTO> getPickingListDTOs = Stream.of(orders)
|
||||
// .map(x -> new GetPickingListDTO()
|
||||
// .setData(x.getDataOrdS())
|
||||
// .setGestione(x.getGestione())
|
||||
// .setNumero(x.getNumOrd())
|
||||
// .setDataConsegna(x.getDataConsS())
|
||||
// .setIdViaggio(x.getIdViaggio()))
|
||||
// .toList();
|
||||
//
|
||||
// OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90);
|
||||
// service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
|
||||
// @Override
|
||||
// public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
|
||||
// analyzeAnswer(response, "retrieveListaArticoliFromOrdiniVendita", onComplete, onFailed);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
|
||||
// UtilityFirebase.stopPerformanceTrace(perfTrace, true);
|
||||
// Log.e("Ord Lavorazione", t.toString());
|
||||
// UtilityLogger.errorMe(new Exception(t));
|
||||
// onFailed.run(new Exception(t));
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public void getBancaliLavorazioneGiaRegistrati(List<OrdineVenditaInevasoDTO> orders, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
String baseSql = "SELECT DISTINCT mtb_colt.* " +
|
||||
"FROM mtb_colt, " +
|
||||
" mtb_colr " +
|
||||
"WHERE mtb_colt.gestione = mtb_colr.gestione " +
|
||||
" AND mtb_colt.ser_collo = mtb_colr.ser_collo " +
|
||||
" AND mtb_colt.data_collo = mtb_colr.data_collo " +
|
||||
" AND mtb_colt.num_collo = mtb_colr.num_collo " +
|
||||
" AND mtb_colt.gestione = 'L' " +
|
||||
" AND mtb_colt.segno = -1 " +
|
||||
// " AND mtb_colt.ser_collo = '/' " +
|
||||
" AND mtb_colt.data_doc IS NULL AND ";
|
||||
|
||||
StringBuilder whereCond = new StringBuilder();
|
||||
|
||||
for(int i = 0; i < orders.size(); i++){
|
||||
|
||||
|
||||
whereCond
|
||||
.append("(mtb_colr.data_ord = '").append(UtilityDate.formatDate(orders.get(i).getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)).append("' ")
|
||||
.append("AND mtb_colr.num_ord = ").append(orders.get(i).getNumOrd()).append(" ")
|
||||
.append("AND mtb_colr.gestione = ").append(UtilityDB.valueToString(orders.get(i).getGestione()))
|
||||
.append(") ");
|
||||
|
||||
if(i != (orders.size() - 1)){
|
||||
whereCond.append("OR ");
|
||||
}
|
||||
}
|
||||
|
||||
baseSql += "( " + whereCond + ")";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MtbColt> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,174 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.Observable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdOrdineLavorazioneListGroupModelBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdOrdineLavorazioneListModelBinding;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
||||
|
||||
public class ProdOrdineLavorazioneListAdapter extends SectionedRecyclerViewAdapter<ProdOrdineLavorazioneListAdapter.SubheaderHolder, ProdOrdineLavorazioneListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
|
||||
private Context mContext;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> mDataset;
|
||||
private RunnableArgs<OrdineVenditaInevasoDTO> mOnSingleSelectionChanged;
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
FragmentProdOrdineLavorazioneListModelBinding binding;
|
||||
|
||||
SubheaderHolder(FragmentProdOrdineLavorazioneListModelBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
FragmentProdOrdineLavorazioneListGroupModelBinding binding;
|
||||
|
||||
SingleItemViewHolder(FragmentProdOrdineLavorazioneListGroupModelBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ProdOrdineLavorazioneListAdapter(Context context, List<OrdineVenditaInevasoDTO> myDataset, RunnableArgs<OrdineVenditaInevasoDTO> onSingleSelectionChanged) {
|
||||
mContext = context;
|
||||
mDataset = orderItems(myDataset);
|
||||
mOnSingleSelectionChanged = onSingleSelectionChanged;
|
||||
}
|
||||
|
||||
public void updateItems(List<OrdineVenditaInevasoDTO> updatedDataset) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(orderItems(updatedDataset));
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
}
|
||||
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> orderItems(List<OrdineVenditaInevasoDTO> dataset) {
|
||||
return Stream.of(dataset)
|
||||
.sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
|
||||
.toList();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ProdOrdineLavorazioneListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
FragmentProdOrdineLavorazioneListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_lavorazione__list_model, parent, false);
|
||||
return new ProdOrdineLavorazioneListAdapter.SubheaderHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProdOrdineLavorazioneListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
FragmentProdOrdineLavorazioneListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_lavorazione__list_group_model, parent, false);
|
||||
return new ProdOrdineLavorazioneListAdapter.SingleItemViewHolder(binding);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(ProdOrdineLavorazioneListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
subheaderHolder.binding.ordineLavorazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd());
|
||||
|
||||
subheaderHolder.binding.getRoot().setOnClickListener(v -> {
|
||||
|
||||
boolean anySelected = Stream.of(mDataset)
|
||||
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
|
||||
.anyMatch(OrdineVenditaInevasoDTO::isSelected);
|
||||
|
||||
Stream.of(mDataset)
|
||||
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
|
||||
.forEach(x -> x.setSelected(!anySelected));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) {
|
||||
final OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition);
|
||||
final SingleItemViewHolder holder = h;
|
||||
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumOrd());
|
||||
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
|
||||
|
||||
ordine.selected.resetOnPropertyChangedCallback();
|
||||
|
||||
|
||||
String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
|
||||
|
||||
String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString));
|
||||
|
||||
holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd());
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(ordine.getCodJcom())) {
|
||||
// holder.binding.ordineLavorazioneMainListGroupItemContainerTestataCodJcom.setText(ordine.getCodJcom());
|
||||
}
|
||||
|
||||
holder.binding.setCheckboxValue(ordine.selected);
|
||||
|
||||
holder.binding.getRoot().setOnClickListener(v -> {
|
||||
ordine.setSelected(!ordine.isSelected());
|
||||
});
|
||||
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected());
|
||||
|
||||
//Bindable to View
|
||||
ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
||||
@Override
|
||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||
if(holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumOrd())) {
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//View to Bindable
|
||||
holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
ordine.setSelected(isChecked);
|
||||
mOnSingleSelectionChanged.run(ordine);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return mDataset.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSectionTitle(int position) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,447 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.dto;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class OrdineLavorazioneInevasoDTO {
|
||||
|
||||
private String data;
|
||||
private Integer numero;
|
||||
private Integer idViaggio;
|
||||
private String gestione;
|
||||
private String listino;
|
||||
private String termCons;
|
||||
private String codAuto;
|
||||
private String codMdep;
|
||||
private String descrizioneAuto;
|
||||
private String codVvet;
|
||||
private String descrizioneVettore;
|
||||
private String dataInizTrasp;
|
||||
private String descrizionePaga;
|
||||
private String rifOrd;
|
||||
private String codAnagOrd;
|
||||
private String codJcom;
|
||||
private String descrizioneCom;
|
||||
private String ragSocCom;
|
||||
private String ragSocOrd;
|
||||
private String destinatario;
|
||||
private String citta;
|
||||
private String provincia;
|
||||
private String indirizzo;
|
||||
private BigDecimal pesoTotale;
|
||||
private BigDecimal numCnfdaEvadere;
|
||||
private BigDecimal numCnfDisp;
|
||||
private String dataCons;
|
||||
private String barcode;
|
||||
private Integer numRighe;
|
||||
private Integer righeInPartenza;
|
||||
private BigDecimal saldoContabile;
|
||||
private String codVzon;
|
||||
private String ragSocOrdV;
|
||||
private int colliRiservati;
|
||||
private boolean existColloBoolean;
|
||||
private boolean flagEvaso;
|
||||
private String nomeAgente;
|
||||
private String codJfas;
|
||||
|
||||
public BindableBoolean selected;
|
||||
|
||||
|
||||
public OrdineLavorazioneInevasoDTO() {
|
||||
this.selected = new BindableBoolean(false);
|
||||
}
|
||||
|
||||
|
||||
public String getDataOrdS() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public Date getDataOrdD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setData(String data) {
|
||||
this.data = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumOrd() {
|
||||
return numero;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setNumero(Integer numero) {
|
||||
this.numero = numero;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getIdViaggio() {
|
||||
return idViaggio;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setIdViaggio(Integer idViaggio) {
|
||||
this.idViaggio = idViaggio;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public GestioneEnum getGestioneEnum() {
|
||||
return GestioneEnum.fromString(getGestione());
|
||||
}
|
||||
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getListino() {
|
||||
return listino;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setListino(String listino) {
|
||||
this.listino = listino;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getTermCons() {
|
||||
return termCons;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setTermCons(String termCons) {
|
||||
this.termCons = termCons;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodAuto() {
|
||||
return codAuto;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodAuto(String codAuto) {
|
||||
this.codAuto = codAuto;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdep() {
|
||||
return codMdep;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodMdep(String codMdep) {
|
||||
this.codMdep = codMdep;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneAuto() {
|
||||
return descrizioneAuto;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDescrizioneAuto(String descrizioneAuto) {
|
||||
this.descrizioneAuto = descrizioneAuto;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodVvet() {
|
||||
return codVvet;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodVvet(String codVvet) {
|
||||
this.codVvet = codVvet;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneVettore() {
|
||||
return descrizioneVettore;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDescrizioneVettore(String descrizioneVettore) {
|
||||
this.descrizioneVettore = descrizioneVettore;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataInizTraspS() {
|
||||
return dataInizTrasp;
|
||||
}
|
||||
|
||||
public Date getDataInizTraspD() throws ParseException {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataInizTraspS());
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDataInizTrasp(String dataInizTrasp) {
|
||||
this.dataInizTrasp = dataInizTrasp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizionePaga() {
|
||||
return descrizionePaga;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDescrizionePaga(String descrizionePaga) {
|
||||
this.descrizionePaga = descrizionePaga;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRifOrd() {
|
||||
return rifOrd;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setRifOrd(String rifOrd) {
|
||||
this.rifOrd = rifOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodAnagOrd() {
|
||||
return codAnagOrd;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodAnagOrd(String codAnagOrd) {
|
||||
this.codAnagOrd = codAnagOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodJcom(String codJcom) {
|
||||
this.codJcom = codJcom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizioneCom() {
|
||||
return descrizioneCom;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDescrizioneCom(String descrizioneCom) {
|
||||
this.descrizioneCom = descrizioneCom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRagSocCom() {
|
||||
return ragSocCom;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setRagSocCom(String ragSocCom) {
|
||||
this.ragSocCom = ragSocCom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRagSocOrd() {
|
||||
return ragSocOrd;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setRagSocOrd(String ragSocOrd) {
|
||||
this.ragSocOrd = ragSocOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDestinatario() {
|
||||
return destinatario;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDestinatario(String destinatario) {
|
||||
this.destinatario = destinatario;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCitta() {
|
||||
return citta;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCitta(String citta) {
|
||||
this.citta = citta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getProvincia() {
|
||||
return provincia;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setProvincia(String provincia) {
|
||||
this.provincia = provincia;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getIndirizzo() {
|
||||
return indirizzo;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setIndirizzo(String indirizzo) {
|
||||
this.indirizzo = indirizzo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getPesoTotale() {
|
||||
return pesoTotale;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setPesoTotale(BigDecimal pesoTotale) {
|
||||
this.pesoTotale = pesoTotale;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfdaEvadere() {
|
||||
return numCnfdaEvadere;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) {
|
||||
this.numCnfdaEvadere = numCnfdaEvadere;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfDisp() {
|
||||
return numCnfDisp;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) {
|
||||
this.numCnfDisp = numCnfDisp;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataConsS() {
|
||||
return dataCons;
|
||||
}
|
||||
|
||||
public Date getDataConsD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataConsS());
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setDataCons(String dataCons) {
|
||||
this.dataCons = dataCons;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getNumRighe() {
|
||||
return numRighe;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setNumRighe(Integer numRighe) {
|
||||
this.numRighe = numRighe;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getRigheInPartenza() {
|
||||
return righeInPartenza;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setRigheInPartenza(Integer righeInPartenza) {
|
||||
this.righeInPartenza = righeInPartenza;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getSaldoContabile() {
|
||||
return saldoContabile;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setSaldoContabile(BigDecimal saldoContabile) {
|
||||
this.saldoContabile = saldoContabile;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodVzon() {
|
||||
return codVzon;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodVzon(String codVzon) {
|
||||
this.codVzon = codVzon;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getRagSocOrdV() {
|
||||
return ragSocOrdV;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setRagSocOrdV(String ragSocOrdV) {
|
||||
this.ragSocOrdV = ragSocOrdV;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getColliRiservati() {
|
||||
return colliRiservati;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setColliRiservati(int colliRiservati) {
|
||||
this.colliRiservati = colliRiservati;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isExistColloBoolean() {
|
||||
return existColloBoolean;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setExistColloBoolean(boolean existColloBoolean) {
|
||||
this.existColloBoolean = existColloBoolean;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagEvaso() {
|
||||
return flagEvaso;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setFlagEvaso(boolean flagEvaso) {
|
||||
this.flagEvaso = flagEvaso;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNomeAgente() {
|
||||
return nomeAgente;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setNomeAgente(String nomeAgente) {
|
||||
this.nomeAgente = nomeAgente;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isSelected() {
|
||||
return selected.get();
|
||||
}
|
||||
|
||||
public OrdineLavorazioneInevasoDTO setSelected(boolean selected) {
|
||||
this.selected.set(selected);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
OrdineLavorazioneInevasoDTO that = (OrdineLavorazioneInevasoDTO) o;
|
||||
|
||||
if (!data.equals(that.data)) return false;
|
||||
if (!numero.equals(that.numero)) return false;
|
||||
return getGestione().equals(that.getGestione());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = data.hashCode();
|
||||
result = 31 * result + numero.hashCode();
|
||||
result = 31 * result + getGestione().hashCode();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface ProdPosizionamentoDaOrdComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
|
||||
ProdPosizionamentoDaOrdComponent create();
|
||||
}
|
||||
|
||||
void inject(ProdPosizionamentoDaOrdFragment prodPosizionamentoDaOrdFragment);
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdPosizionamentoDaOrdBinding;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ProdPosizionamentoDaOrdFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ProdPosizionamentoDaOrdFragment extends Fragment {
|
||||
|
||||
private FragmentProdPosizionamentoDaOrdBinding mBinding = null;
|
||||
|
||||
@Inject
|
||||
ProdPosizionamentoDaOrdViewModel mViewModel;
|
||||
|
||||
public ProdPosizionamentoDaOrdFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
|
||||
public static ProdPosizionamentoDaOrdFragment newInstance() {
|
||||
ProdPosizionamentoDaOrdFragment fragment = new ProdPosizionamentoDaOrdFragment();
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_posizionamento_da_ord, container,false);
|
||||
|
||||
MainApplication.appComponent
|
||||
.prodPosizionamentoDaOrdComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
// mViewModel.setListener(this);
|
||||
|
||||
mBinding.setLifecycleOwner(this);
|
||||
mBinding.setView(this);
|
||||
mBinding.setViewmodel(mViewModel);
|
||||
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
@Module(subcomponents = ProdPosizionamentoDaOrdComponent.class)
|
||||
public class ProdPosizionamentoDaOrdModule {
|
||||
|
||||
|
||||
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ProdPosizionamentoDaOrdViewModel providesProdPosizionamentoDaOrdViewModel() {
|
||||
return new ProdPosizionamentoDaOrdViewModel();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class ProdPosizionamentoDaOrdViewModel {
|
||||
|
||||
|
||||
@Inject
|
||||
public ProdPosizionamentoDaOrdViewModel() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,27 +3,23 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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.interfaces.IPoppableActivity;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBinding;
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper;
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel.ProdRecuperoMaterialeViewModel;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel.ProdVersamentoMaterialViewModel;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
@@ -33,6 +29,8 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr
|
||||
private ProdRecuperoMaterialeViewModel mViewmodel;
|
||||
private ProdRecuperoMaterialeHelper mHelper;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
public ProdRecuperoMaterialeFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
@@ -57,7 +55,6 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr
|
||||
Bundle savedInstanceState) {
|
||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_recupero_materiale, container, false);
|
||||
|
||||
|
||||
init();
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
@@ -75,10 +72,17 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr
|
||||
titleText.setText(context.getText(R.string.prod_recupero_materiale_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -262,7 +262,7 @@ public class ProdRecuperoMaterialeHelper {
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
|
||||
ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
|
||||
|
||||
if(arts != null && arts.size() > 0) {
|
||||
for (HistoryVersamentoProdULDTO value : newUlList) {
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
@@ -18,6 +17,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
@@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
@@ -39,15 +40,16 @@ import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBind
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsListAdapter;
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper;
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
|
||||
public class ProdRecuperoMaterialeViewModel {
|
||||
|
||||
private Context mContext;
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private FragmentProdRecuperoMaterialeBinding mBinding;
|
||||
private ProdRecuperoMaterialeHelper mHelper;
|
||||
@@ -61,7 +63,7 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
public void init(Activity context, FragmentProdRecuperoMaterialeBinding binding, ProdRecuperoMaterialeHelper helper, Runnable onRecuperoCompleted) {
|
||||
public void init(FragmentActivity context, FragmentProdRecuperoMaterialeBinding binding, ProdRecuperoMaterialeHelper helper, Runnable onRecuperoCompleted) {
|
||||
mContext = context;
|
||||
mBinding = binding;
|
||||
mHelper = helper;
|
||||
@@ -79,7 +81,6 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void initBarcode() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
@@ -97,13 +98,12 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
if(UtilityBarcode.isEtichettaAnonima(data) || UtilityBarcode.isEtichetta128(data)){
|
||||
if (UtilityBarcode.isEtichettaAnonima(data) || UtilityBarcode.isEtichetta128(data)) {
|
||||
this.executeEtichettaUL(data, progressDialog);
|
||||
}
|
||||
|
||||
@@ -112,10 +112,10 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
||||
ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
|
||||
|
||||
if(mtbColt != null) {
|
||||
if (mtbColt != null) {
|
||||
|
||||
HistoryVersamentoProdULDTO historyVersamentoProdULRestDTO = this.getHistoryElementFromMtbColt(mtbColt);
|
||||
if(historyVersamentoProdULRestDTO != null) {
|
||||
if (historyVersamentoProdULRestDTO != null) {
|
||||
this.dispatchItem(historyVersamentoProdULRestDTO, mtbColt, progressDialog);
|
||||
} else {
|
||||
DialogCommon.showNoULFound(mContext, () -> {
|
||||
@@ -146,7 +146,7 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
x.getGestioneRif().equalsIgnoreCase(mtbColt.getGestione()))
|
||||
.toList();
|
||||
|
||||
if(filteredItems != null && filteredItems.size() > 0) {
|
||||
if (filteredItems != null && filteredItems.size() > 0) {
|
||||
return filteredItems.get(0);
|
||||
}
|
||||
|
||||
@@ -154,38 +154,75 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
|
||||
|
||||
// private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) {
|
||||
// BigDecimal qtaDaEvadere = BigDecimal.ZERO;
|
||||
//
|
||||
// qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
|
||||
//
|
||||
//
|
||||
// DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
// .setBatchLot(item.getPartitaMag())
|
||||
// .setQtaDaEvadere(null)
|
||||
// .setQtaOrd(null)
|
||||
// .setMtbAart(item.getMtbAart())
|
||||
// .setCanPartitaMagBeChanged(false)
|
||||
// .setNumCnf(1)
|
||||
// .setQtaCnf(item.getQtaCnf())
|
||||
// .setQtaTot(item.getQtaCnf())
|
||||
// .setMaxQta(qtaDaEvadere)
|
||||
// .setQtaDisponibile(qtaDaEvadere);
|
||||
//
|
||||
// DialogInputQuantity.makeBase(mContext, dto, false, quantity -> {
|
||||
// onItemDispatched(item, quantity.qtaTot.getBigDecimal(), sourceMtbColt, dialogProgress);
|
||||
// }, () -> {
|
||||
// if (dialogProgress != null) dialogProgress.dismiss();
|
||||
// }).show();
|
||||
// }
|
||||
|
||||
|
||||
private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) {
|
||||
BigDecimal qtaDaEvadere = BigDecimal.ZERO;
|
||||
BigDecimal numCnfDaEvadere = BigDecimal.ZERO;
|
||||
|
||||
qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
|
||||
|
||||
|
||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
.setBatchLot(item.getPartitaMag())
|
||||
.setQtaDaEvadere(null)
|
||||
.setQtaOrd(null)
|
||||
.setMtbAart(item.getMtbAart())
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setNumCnf(1)
|
||||
.setQtaCnf(item.getQtaCnf())
|
||||
.setQtaTot(item.getQtaCnf())
|
||||
.setMaxQta(qtaDaEvadere)
|
||||
.setQtaDisponibile(qtaDaEvadere);
|
||||
|
||||
DialogInputQuantity.makeBase(mContext, dto, false, quantity -> {
|
||||
onItemDispatched(item, quantity.qtaTot.getBigDecimal(), sourceMtbColt, dialogProgress);
|
||||
}, () -> {
|
||||
if(dialogProgress != null) dialogProgress.dismiss();
|
||||
}).show();
|
||||
if(!UtilityBigDecimal.equalsTo(qtaDaEvadere, BigDecimal.ZERO)) {
|
||||
numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf());
|
||||
}
|
||||
|
||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||
.setMtbAart(item.getMtbAart())
|
||||
.setInitialNumCnf(BigDecimal.ONE)
|
||||
.setInitialQtaCnf(item.getQtaCnf())
|
||||
.setInitialQtaTot(item.getQtaCnf())
|
||||
|
||||
.setTotalQtaAvailable(qtaDaEvadere)
|
||||
.setTotalNumCnfAvailable(numCnfDaEvadere)
|
||||
.setQtaCnfAvailable(item.getQtaCnf())
|
||||
.setPartitaMag(item.getPartitaMag())
|
||||
// .setDataScad(item.getDa)
|
||||
.setCanOverflowOrderQuantity(false)
|
||||
.setCanLUBeClosed(false);
|
||||
|
||||
DialogInputQuantityV2
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
.setQtaCnf(resultDTO.getQtaCnf())
|
||||
.setQtaTot(resultDTO.getQtaTot())
|
||||
.setPartitaMag(resultDTO.getPartitaMag())
|
||||
.setDataScad(resultDTO.getDataScad());
|
||||
|
||||
onItemDispatched(item, resultDTO.getQtaTot(), sourceMtbColt, dialogProgress);
|
||||
}, () -> {
|
||||
if (dialogProgress != null) dialogProgress.dismiss();
|
||||
})
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal quantity, MtbColt sourceMtbColt, Dialog progress) {
|
||||
|
||||
if(progress == null) {
|
||||
if (progress == null) {
|
||||
progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
}
|
||||
Dialog finalProgress = progress;
|
||||
@@ -197,7 +234,7 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
.setGestione(item.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
for(HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) {
|
||||
for (HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) {
|
||||
BigDecimal qtaCol = quantity.multiply(new BigDecimal(-1).multiply(new BigDecimal(ordine.getPercentageHr()))).divide(new BigDecimal(100), 3, RoundingMode.HALF_EVEN);
|
||||
|
||||
final MtbColr mtbColrScarico = new MtbColr()
|
||||
@@ -220,18 +257,17 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
|
||||
RunnableArgss<MtbColt, Boolean> saveRunnable = (mtbColt, createdLU) -> {
|
||||
|
||||
if(mtbColt != null) {
|
||||
if (mtbColt != null) {
|
||||
|
||||
List<MtbColt> colliToSave = new ArrayList<>();
|
||||
boolean shouldPrint = false;
|
||||
|
||||
if(!Objects.equals(mtbColt.getNumCollo(), item.getNumColloRif()) ||
|
||||
if (!Objects.equals(mtbColt.getNumCollo(), item.getNumColloRif()) ||
|
||||
!Objects.equals(mtbColt.getSerCollo(), item.getSerColloRif()) ||
|
||||
!Objects.equals(mtbColt.getDataColloS(), item.getDataColloRif()) ||
|
||||
!Objects.equals(mtbColt.getGestione(), item.getGestioneRif())) {
|
||||
@@ -263,11 +299,11 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
colliToSave.add(mtbColtScarico);
|
||||
|
||||
boolean finalShouldPrint = shouldPrint;
|
||||
ColliMagazzinoRESTConsumer.saveColli(colliToSave, value -> {
|
||||
ColliMagazzinoRESTConsumer.saveColliStatic(colliToSave, value -> {
|
||||
|
||||
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
if(finalShouldPrint) {
|
||||
if (finalShouldPrint) {
|
||||
printCollo(finalProgress, value.get(0), () -> {
|
||||
this.refreshAdapter();
|
||||
mOnRecuperoCompleted.run();
|
||||
@@ -287,7 +323,7 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
};
|
||||
|
||||
if(sourceMtbColt != null) saveRunnable.run(sourceMtbColt, false);
|
||||
if (sourceMtbColt != null) saveRunnable.run(sourceMtbColt, false);
|
||||
else DialogScanOrCreateLU.make(mContext, true, false, saveRunnable).show();
|
||||
|
||||
}
|
||||
@@ -329,9 +365,8 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
||||
String reportName = ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum());
|
||||
|
||||
PrinterRESTConsumer.printColloStatic(
|
||||
printerName,
|
||||
@@ -339,11 +374,9 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
1,
|
||||
reportName, onComplete, onAbort);
|
||||
|
||||
}, onAbort);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void refreshAdapter() {
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
@@ -360,5 +393,4 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,14 +2,16 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||
@@ -17,7 +19,6 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel.ProdVersamentoMaterialViewModel;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.viewmodel.VersamentoMerceViewModel;
|
||||
|
||||
public class ProdVersamentoMaterialeFragment extends Fragment implements ITitledFragment {
|
||||
|
||||
@@ -25,6 +26,8 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
private ProdVersamentoMaterialViewModel mViewmodel;
|
||||
private ProdVersamentoMaterialHelper mHelper;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
public ProdVersamentoMaterialeFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
@@ -40,9 +43,7 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
|
||||
mViewmodel = new ProdVersamentoMaterialViewModel();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,17 +59,13 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +78,6 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
});
|
||||
|
||||
mViewmodel.openLU();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -89,4 +85,9 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.prod_versamento_materiale_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ public class ProdVersamentoMaterialViewModel {
|
||||
}
|
||||
|
||||
private void choosePosition() {
|
||||
DialogAskPositionOfLU.makeBase(mContext, null, true, (status, mtbDepoPosizione) -> {
|
||||
DialogAskPositionOfLU.makeBase(mContext, true, (status, mtbDepoPosizione) -> {
|
||||
|
||||
if (status == DialogConsts.Results.ABORT) {
|
||||
((IPoppableActivity) mContext).pop();
|
||||
|
||||
@@ -58,12 +58,17 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
|
||||
private boolean mRedirectToNewOrder = true;
|
||||
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
@Inject
|
||||
GrigliaRepository mGrigliaRepository;
|
||||
|
||||
@Inject
|
||||
ArticoliOrdineRepository mArticoliOrdineRepository;
|
||||
|
||||
@Inject
|
||||
ArticoloGrigliaRepository mArticoloGrigliaRepository;
|
||||
|
||||
@Inject
|
||||
OrdineRepository mOrdineRepository;
|
||||
|
||||
@@ -117,6 +122,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
private void setGriglia(Griglia griglia) {
|
||||
mGriglia = griglia;
|
||||
mBinding.fabNewOrder.setVisibility(View.VISIBLE);
|
||||
@@ -191,8 +201,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
}
|
||||
|
||||
private void deleteOrdine(Ordine ordine) {
|
||||
|
||||
|
||||
String text = "Stai per eliminare un ordine sei sicuro?";
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(getActivity(), new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> {
|
||||
@@ -231,8 +239,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -242,4 +250,13 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
fetchOrders();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvTransmittedListAdapter;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
public class PVOrdiniAcquistoTransmittedListFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
|
||||
private FragmentPvOrdiniATrasmessiElencoBinding mBinding;
|
||||
private OrdineAcquistoPvTransmittedListAdapter mAdapter;
|
||||
|
||||
private List<OrdineWithGriglia> mOriginalOrderList;
|
||||
private List<OrdineWithGriglia> mRenderedOrderList = new ArrayList<>();
|
||||
|
||||
private DialogOrdineProduzioneFiltroAvanzato.DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
public PVOrdiniAcquistoTransmittedListFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public static PVOrdiniAcquistoTransmittedListFragment newInstance() {
|
||||
PVOrdiniAcquistoTransmittedListFragment fragment = new PVOrdiniAcquistoTransmittedListFragment();
|
||||
Bundle args = new Bundle();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
|
||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_a_trasmessi_elenco, container, false);
|
||||
mBinding.setView(this);
|
||||
|
||||
|
||||
//init();
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreDestroy(Runnable onPreDestroy) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterClick() {
|
||||
|
||||
}
|
||||
|
||||
private void init(){
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
|
||||
|
||||
//TODO: resolve databinding
|
||||
OrdineDataSource repository = null; //new OrdineDataSource();
|
||||
|
||||
repository.selectAllTransmitted((ordini)->{
|
||||
mOriginalOrderList = ordini;
|
||||
mBinding.ordiniAEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
|
||||
refreshRenderedOrdini(ordini);
|
||||
initRecyclerView();
|
||||
progress.dismiss();
|
||||
},(e)->{
|
||||
progress.dismiss();
|
||||
String errorMessage = e.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
mAdapter = new OrdineAcquistoPvTransmittedListAdapter(getActivity(), mRenderedOrderList);
|
||||
mBinding.ordineAMainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void refreshRenderedOrdini(List<OrdineWithGriglia> ordini) {
|
||||
mRenderedOrderList.clear();
|
||||
if(ordini != null) mRenderedOrderList.addAll(ordini);
|
||||
}
|
||||
}
|
||||
@@ -1,133 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding;
|
||||
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
||||
|
||||
public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder, OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private List<OrdineWithGriglia> mOriginalDataset;
|
||||
private List<OrdineWithGriglia> mDataset;
|
||||
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
FragmentOrdineAPvTransmittedListModelBinding binding;
|
||||
|
||||
SubheaderHolder(FragmentOrdineAPvTransmittedListModelBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
FragmentOrdiniAPvListSingleItemBinding binding;
|
||||
|
||||
SingleItemViewHolder(FragmentOrdiniAPvListSingleItemBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public OrdineAcquistoPvTransmittedListAdapter(Context context, List<OrdineWithGriglia> myDataset) {
|
||||
mContext = context;
|
||||
mOriginalDataset = myDataset;
|
||||
mDataset = orderItems(myDataset);
|
||||
}
|
||||
|
||||
public void updateItems(List<OrdineWithGriglia> updatedDataset) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(orderItems(updatedDataset));
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
}
|
||||
|
||||
|
||||
private List<OrdineWithGriglia> orderItems(List<OrdineWithGriglia> dataset) {
|
||||
return Stream.of(dataset)
|
||||
.distinctBy(OrdineWithGriglia::getGriglia)
|
||||
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
|
||||
.toList();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
FragmentOrdineAPvTransmittedListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordine_a_pv_transmitted__list_model, parent, false);
|
||||
return new SubheaderHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
FragmentOrdiniAPvListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordini_a_pv__list_single_item, parent, false);
|
||||
return new SingleItemViewHolder(binding);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
subheaderHolder.binding.ordineAPvMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGriglia().getCodAlis());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder h, int itemPosition) {
|
||||
final OrdineWithGriglia ordine = mDataset.get(itemPosition);
|
||||
final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h;
|
||||
|
||||
|
||||
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO");
|
||||
|
||||
holder.binding.descriptionMain.setText(Html.fromHtml(testataOrdString));
|
||||
|
||||
|
||||
holder.binding.getRoot().setOnClickListener(v -> {
|
||||
//TODO: aprire descrizione Ordine
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
return !(this.mDataset.get(position).getGriglia().getGrigliaId() == this.mDataset.get(position + 1).getGriglia().getGrigliaId());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return mDataset.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSectionTitle(int position) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -75,7 +75,7 @@ public class DialogScanLisA {
|
||||
}
|
||||
|
||||
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
@@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
|
||||
import android.app.Activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||
@@ -16,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepositor
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class OrdineAcquistoPvHelper {
|
||||
|
||||
@@ -67,7 +67,7 @@ public class OrdineAcquistoPvHelper {
|
||||
|
||||
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
|
||||
Ordine ordine = new Ordine();
|
||||
ordine.setDataIns(new Date());
|
||||
ordine.setDataIns(UtilityDate.getDateInstance());
|
||||
ordine.setIdGriglia(griglia.getGrigliaId());
|
||||
mOrdineRepository.insert(ordine, id -> {
|
||||
ordine.setOrdineId(id);
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.tfb.fbtoast.FBToast;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -83,6 +84,8 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
|
||||
private Dialog mCurrentProgress;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
public RettificaGiacenzeFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
@@ -198,12 +201,25 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
super.onAttach(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for(Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.rettifica_giacenze_fragment_title).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
@@ -489,7 +505,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> {
|
||||
switch (result) {
|
||||
case YES:
|
||||
DialogAskPositionOfLU.makeBase(getActivity(), mViewModel.getCurrentMtbColt(), false, (status, mtbDepoPosizione) -> {
|
||||
DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> {
|
||||
if (status == DialogConsts.Results.ABORT) {
|
||||
onComplete.run(false, null);
|
||||
} else {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user