Compare commits
96 Commits
v1.16.8(19
...
v1.16.28(2
| Author | SHA1 | Date | |
|---|---|---|---|
| ac446d953c | |||
| 407ff0b264 | |||
| 10e748b9d4 | |||
| e30273fe42 | |||
| 44564245a7 | |||
| 920f306907 | |||
| 90aa52ab55 | |||
| 93f3eb65f0 | |||
| eb94944928 | |||
| 28698ba306 | |||
| c713bbebbc | |||
| 38e2a02766 | |||
| dd8bf264a4 | |||
| 9488c1994d | |||
| 16099cdaf6 | |||
| f061f2bfc9 | |||
| f7253fd44c | |||
| e12d371567 | |||
| 5596f71c03 | |||
| 8669b812f5 | |||
| 3243484dd0 | |||
| 37114dc4d1 | |||
| d5af79abba | |||
| b50aa7a9d2 | |||
| cc333c3147 | |||
| fc5044134c | |||
| 93a3e39332 | |||
| 3eaf187136 | |||
| 36f9fa1e36 | |||
| 0f89913609 | |||
| 4cda247ddc | |||
| e88ea0a45c | |||
| 726cf80dc0 | |||
| a779d8b94d | |||
| f41e1f3a02 | |||
| aa75a77913 | |||
| 639be21ab5 | |||
| dfc241e7f6 | |||
| 7948c7fa97 | |||
| 2ae311c28a | |||
| 56ba43183c | |||
| b93b309ea8 | |||
| f5a2d012e5 | |||
| bf07e3d0f0 | |||
| 91f075976d | |||
| ee70faefa9 | |||
| 13cca99b09 | |||
| e55b6f4934 | |||
| 62d4b6f724 | |||
| 19b0465569 | |||
| d4f44c1ab7 | |||
| 6bf183d73c | |||
| a939f0ba08 | |||
| 08b44cb45b | |||
| fef57622cf | |||
| cbf36ec962 | |||
| adc7343352 | |||
| 94b2959d29 | |||
| 11903d1a34 | |||
| ff448b36b9 | |||
| aa8a54547c | |||
| e1d1878131 | |||
| 81bc85f854 | |||
| 00c90021b5 | |||
| 89e046cc78 | |||
| 2b2cf3656c | |||
| 47a2c36e04 | |||
| bca0d0cc52 | |||
| 594a6fc9d2 | |||
| e633dcbc4d | |||
| 99de98db28 | |||
| cce8ea5ca0 | |||
| 2cb693cafc | |||
| cc54dfb452 | |||
| 68d97a167d | |||
| adde82c191 | |||
| 5b1f681a11 | |||
| 8035cf15a8 | |||
| d277bf3e8e | |||
| 5d4130f131 | |||
| d51c62143c | |||
| 26a887c5aa | |||
| 838b3b8bb8 | |||
| 0a0de9d938 | |||
| eea134ce82 | |||
| 1020a31b89 | |||
| 0133a9232f | |||
| 3ff98fcda1 | |||
| 58b4ebb420 | |||
| fc0cb423e3 | |||
| 451f45b1a1 | |||
| b672ca1d37 | |||
| c4c4013995 | |||
| e9230aba11 | |||
| d044c2ab26 | |||
| 7346357b8e |
@@ -2,13 +2,12 @@ apply plugin: 'com.android.application'
|
||||
apply plugin: 'com.google.firebase.firebase-perf'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 190
|
||||
def appVersionName = '1.16.8'
|
||||
def appVersionCode = 210
|
||||
def appVersionName = '1.16.28'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
@@ -97,12 +96,12 @@ dependencies {
|
||||
implementation 'com.google.firebase:firebase-crash'
|
||||
implementation 'com.google.firebase:firebase-crashlytics'
|
||||
implementation 'com.google.firebase:firebase-perf'
|
||||
implementation 'com.google.android.gms:play-services-basement:17.5.0'
|
||||
implementation 'com.google.android.gms:play-services-basement:17.6.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-rc01'
|
||||
implementation 'com.google.android.material:material:1.3.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||
@@ -111,15 +110,13 @@ dependencies {
|
||||
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-ktx:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.0'
|
||||
implementation 'org.apache.commons:commons-text:1.9'
|
||||
|
||||
//MVVM
|
||||
def dagger2_version = '2.29.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
|
||||
api "com.google.dagger:dagger:$dagger2_version"
|
||||
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
|
||||
api "com.google.dagger:dagger-android:$dagger2_version"
|
||||
@@ -139,7 +136,7 @@ dependencies {
|
||||
implementation 'com.github.pedromassango:doubleClick:3.0'
|
||||
|
||||
//SQLite ROOM
|
||||
def room_version = "2.2.5"
|
||||
def room_version = "2.2.6"
|
||||
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
annotationProcessor "androidx.room:room-compiler:$room_version"
|
||||
|
||||
@@ -17,18 +17,14 @@
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true">
|
||||
android:usesCleartextTraffic="true"
|
||||
android:fullBackupContent="@xml/backup_descriptor">
|
||||
<activity
|
||||
android:name=".gest.spedizione.SpedizioneActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Light"
|
||||
android:windowSoftInputMode="adjustNothing" />
|
||||
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
||||
<activity
|
||||
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"
|
||||
|
||||
@@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.class_router.ClassRouter;
|
||||
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
|
||||
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
|
||||
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
|
||||
@@ -42,6 +43,7 @@ import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.update.UpdatesManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
||||
import it.integry.integrywmsnative.databinding.ActivityMainBinding;
|
||||
import it.integry.integrywmsnative.gest.login.LoginActivity;
|
||||
@@ -59,6 +61,9 @@ public class MainActivity extends BaseActivity
|
||||
@Inject
|
||||
AppDatabase mAppDatabase;
|
||||
|
||||
@Inject
|
||||
ColliDataRecoverService mColliDataRecoverService;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -68,10 +73,13 @@ public class MainActivity extends BaseActivity
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mColliDataRecoverService.init(this);
|
||||
|
||||
mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false);
|
||||
setContentView(mBinding.getRoot());
|
||||
|
||||
UpdatesManager.init(this);
|
||||
UtilityContext.initMainActivity(this);
|
||||
|
||||
setSupportActionBar(mBinding.appBarMain.toolbar);
|
||||
getSupportActionBar().setDisplayShowTitleEnabled(false);
|
||||
@@ -277,6 +285,11 @@ public class MainActivity extends BaseActivity
|
||||
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.VISIBLE);
|
||||
return false;
|
||||
});
|
||||
|
||||
((ISearcableFragment) fragment).addOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.mainSearch.setIconified(true);
|
||||
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
|
||||
});
|
||||
} else {
|
||||
mBinding.appBarMain.mainSearch.setOnQueryTextListener(null);
|
||||
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
|
||||
@@ -289,6 +302,10 @@ public class MainActivity extends BaseActivity
|
||||
mBinding.appBarMain.toolbarTitleCenteredLayout.setVisibility(View.GONE);
|
||||
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.VISIBLE);
|
||||
((ITitledFragment) fragment).onCreateActionBar(mBinding.appBarMain.toolbarTitleLeft, this);
|
||||
((ITitledFragment) fragment).addOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.toolbarTitleCenteredLayout.setVisibility(View.VISIBLE);
|
||||
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
|
||||
});
|
||||
} else {
|
||||
mBinding.appBarMain.toolbarTitleCenteredLayout.setVisibility(View.VISIBLE);
|
||||
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
|
||||
@@ -296,7 +313,7 @@ public class MainActivity extends BaseActivity
|
||||
|
||||
if(fragment instanceof IScrollableFragment) {
|
||||
((IScrollableFragment) fragment).setScrollToolbar(mBinding.appBarMain.elevatedToolbar);
|
||||
((IScrollableFragment) fragment).setScrollableOnPreDestroy(() -> {
|
||||
((IScrollableFragment) fragment).addOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.elevatedToolbar.resetAll();
|
||||
});
|
||||
}
|
||||
@@ -309,7 +326,7 @@ public class MainActivity extends BaseActivity
|
||||
((ISelectAllFragment)fragment).onSelectAll();
|
||||
}
|
||||
});
|
||||
((ISelectAllFragment) fragment).setSelectAllOnPreDestroy(() -> {
|
||||
((ISelectAllFragment) fragment).addOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE);
|
||||
mBinding.appBarMain.mainSelectAll.setOnClickListener(null);
|
||||
});
|
||||
@@ -323,6 +340,11 @@ public class MainActivity extends BaseActivity
|
||||
((IFilterableFragment)fragment).onFilterClick();
|
||||
}
|
||||
});
|
||||
|
||||
((IFilterableFragment)fragment).addOnPreDestroy(() -> {
|
||||
mBinding.appBarMain.mainFilter.setVisibility(View.GONE);
|
||||
mBinding.appBarMain.mainFilter.setOnClickListener(null);
|
||||
});
|
||||
} else {
|
||||
mBinding.appBarMain.mainFilter.setVisibility(View.GONE);
|
||||
mBinding.appBarMain.mainFilter.setOnClickListener(null);
|
||||
|
||||
@@ -25,10 +25,20 @@ 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.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreComponent;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
|
||||
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
|
||||
import it.integry.integrywmsnative.view.dialogs.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;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule;
|
||||
|
||||
// Definition of the Application graph
|
||||
@Singleton
|
||||
@@ -42,12 +52,17 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
|
||||
RettificaGiacenzeModule.class,
|
||||
SpedizioneModule.class,
|
||||
AccettazionePickingModule.class,
|
||||
UltimeConsegneClienteModule.class,
|
||||
UltimiArriviFornitoreModule.class,
|
||||
PickingResiModule.class,
|
||||
OrdiniUscitaElencoModule.class,
|
||||
DialogInputQuantityV2Module.class,
|
||||
DialogScanArtModule.class,
|
||||
DialogScanOrCreateLUModule.class,
|
||||
ProdFabbisognoLineeProdModule.class,
|
||||
DialogAskMagazzinoProssimitaModule.class})
|
||||
VersamentoMerceModule.class,
|
||||
DialogAskMagazzinoProssimitaModule.class,
|
||||
DialogRowInfoProdFabbisognoLineeProdModule.class})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
MainActivityComponent.Factory mainActivityComponent();
|
||||
@@ -57,12 +72,17 @@ public interface MainApplicationComponent {
|
||||
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
|
||||
SpedizioneComponent.Factory spedizioneComponent();
|
||||
AccettazionePickingComponent.Factory accettazionePickingComponent();
|
||||
UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent();
|
||||
UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent();
|
||||
PickingResiComponent.Factory pickingResiComponent();
|
||||
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
|
||||
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
|
||||
DialogScanArtComponent.Factory dialogScanArtComponent();
|
||||
DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent();
|
||||
ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();
|
||||
VersamentoMerceComponent.Factory versamentoMerceComponent();
|
||||
DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();
|
||||
DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent();
|
||||
|
||||
|
||||
void inject(AppContext appContext);
|
||||
|
||||
@@ -16,6 +16,7 @@ import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
@Module
|
||||
public class MainApplicationModule {
|
||||
@@ -37,7 +38,7 @@ public class MainApplicationModule {
|
||||
@Provides
|
||||
@Singleton
|
||||
ColliDataRecoverService provideColliDataRecoverService() {
|
||||
return new ColliDataRecoverService(mContext);
|
||||
return new ColliDataRecoverService();
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -88,5 +89,12 @@ public class MainApplicationModule {
|
||||
return new PosizioniRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,22 +6,21 @@ import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import it.integry.integrywmsnative.core.context.MainContext;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.PermissionsHelper;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||
import it.integry.integrywmsnative.databinding.ActivitySplashBinding;
|
||||
import it.integry.integrywmsnative.gest.login.LoginActivity;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class SplashActivity extends BaseActivity {
|
||||
|
||||
@@ -39,6 +38,8 @@ public class SplashActivity extends BaseActivity {
|
||||
mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_splash, null, false);
|
||||
setContentView(mBinding.getRoot());
|
||||
|
||||
UtilityContext.initMainActivity(this);
|
||||
|
||||
initAppVersion();
|
||||
|
||||
initPermissions(this::init);
|
||||
@@ -49,10 +50,10 @@ public class SplashActivity extends BaseActivity {
|
||||
onComplete.run();
|
||||
}, permanentlyDenied -> {
|
||||
if(permanentlyDenied) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(this,
|
||||
new SpannableString(getText(R.string.permissions_permanently_denied)), null, () -> {
|
||||
DialogSimpleMessageView.makeErrorDialog(new SpannableString(getText(R.string.permissions_permanently_denied)), null, () -> {
|
||||
this.finish();
|
||||
}).show();
|
||||
})
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
} else {
|
||||
initPermissions(onComplete);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,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(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1)))
|
||||
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_free_picking)
|
||||
@@ -79,7 +79,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(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1)))
|
||||
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_free_lav_picking)
|
||||
@@ -90,7 +90,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_prod_posizionamento_da_ord)
|
||||
.setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title)
|
||||
.setTitleText(R.string.prod_fabbisogno_linee_prod_title)
|
||||
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
|
||||
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf)
|
||||
.setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.orhanobut.logger.Logger;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
||||
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.settings.Stash;
|
||||
@@ -41,8 +40,6 @@ public class AppContext {
|
||||
this.initCrashlytics();
|
||||
|
||||
this.initLogger();
|
||||
|
||||
this.initRecoverColli();
|
||||
}
|
||||
|
||||
|
||||
@@ -77,9 +74,5 @@ public class AppContext {
|
||||
Logger.addLogAdapter(new AndroidLogAdapter());
|
||||
}
|
||||
|
||||
private void initRecoverColli() {
|
||||
ColliDataRecover.init(mContext);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
package it.integry.integrywmsnative.core.context;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.ConnectException;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.class_router.ClassRouter;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class MainContext {
|
||||
|
||||
@@ -37,6 +41,8 @@ public class MainContext {
|
||||
this.initReflections();
|
||||
|
||||
this.initServerStatusChecker();
|
||||
|
||||
ColliDataRecover.init(mContext);
|
||||
}
|
||||
|
||||
|
||||
@@ -46,11 +52,23 @@ public class MainContext {
|
||||
|
||||
private void initDBData(Runnable onComplete) {
|
||||
SettingsManager.loadDBVariables(onComplete, ex -> {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext,
|
||||
new SpannableString(ex.getMessage()), null, mContext::finish, R.string.logout, () -> {
|
||||
|
||||
Spanned message = null;
|
||||
|
||||
if (ex.getCause() != null && ex.getCause() instanceof ConnectException) {
|
||||
message = Html.fromHtml("Impossibile collegarsi all'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
|
||||
} else if (ex.getMessage().startsWith("Status 404:")) {
|
||||
message = Html.fromHtml("Errore 404. Non è stato possibile soddisfare la richiesta sull'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
|
||||
} else {
|
||||
message = new SpannableString(ex.getMessage());
|
||||
}
|
||||
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
message, null, mContext::finish, R.string.logout, () -> {
|
||||
UtilitySettings.logout();
|
||||
MainApplication.exit();
|
||||
}).show();
|
||||
})
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,10 @@ package it.integry.integrywmsnative.core.data_recover;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.gms.common.util.IOUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
@@ -107,11 +108,11 @@ public class ColliDataRecover {
|
||||
}
|
||||
}
|
||||
|
||||
private static Context mContext;
|
||||
private static AppCompatActivity mContext;
|
||||
|
||||
private static List<RecoverDTO> mtbColtsSessions = new ArrayList<>();
|
||||
|
||||
public static void init(Context context) {
|
||||
public static void init(AppCompatActivity context) {
|
||||
mContext = context;
|
||||
|
||||
if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
|
||||
@@ -120,7 +121,7 @@ public class ColliDataRecover {
|
||||
}
|
||||
|
||||
public static boolean thereIsAnExistantSession() {
|
||||
return mtbColtsSessions.size() > 0;
|
||||
return mtbColtsSessions != null && mtbColtsSessions.size() > 0;
|
||||
}
|
||||
|
||||
public static List<Integer> getAllSessionIDs() {
|
||||
@@ -191,13 +192,16 @@ public class ColliDataRecover {
|
||||
try {
|
||||
inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
|
||||
|
||||
byte[] bytes = IOUtils.readInputStreamFully(inputStream);
|
||||
byte[] bytes = new byte[inputStream.available()];
|
||||
inputStream.read(bytes);
|
||||
inputStream.close();
|
||||
|
||||
String jsonString = new String(bytes);
|
||||
|
||||
Type listType = new TypeToken<ArrayList<RecoverDTO>>(){}.getType();
|
||||
mtbColtsSessions = gson.fromJson(jsonString, listType);
|
||||
|
||||
inputStream.close();
|
||||
if(mtbColtsSessions == null) mtbColtsSessions = new ArrayList<>();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
UtilityExceptions.defaultException(mContext, e);
|
||||
|
||||
@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_recover;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.gms.common.util.IOUtils;
|
||||
@@ -28,20 +30,21 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
public class ColliDataRecoverService {
|
||||
|
||||
|
||||
private final Context mContext;
|
||||
private AppCompatActivity mContext;
|
||||
private List<ColliDataRecoverDTO> mtbColtsSessions = new ArrayList<>();
|
||||
|
||||
@Inject
|
||||
public ColliDataRecoverService(Context context) {
|
||||
this.mContext = context;
|
||||
public ColliDataRecoverService() {
|
||||
}
|
||||
|
||||
public void init(AppCompatActivity appCompatActivity) {
|
||||
this.mContext = appCompatActivity;
|
||||
|
||||
if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
|
||||
loadLocalFile();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean thereIsAnExistantSession() {
|
||||
return mtbColtsSessions.size() > 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class AlreadyAttachedDocumentToLUException extends Exception {
|
||||
|
||||
public AlreadyAttachedDocumentToLUException() {
|
||||
super(UtilityResources.getString(R.string.lu_already_attache_to_doc));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
public class MyExceptionHandler implements
|
||||
java.lang.Thread.UncaughtExceptionHandler {
|
||||
private final Context myContext;
|
||||
private final Class<?> myActivityClass;
|
||||
|
||||
public MyExceptionHandler(Context context, Class<?> c) {
|
||||
|
||||
myContext = context;
|
||||
myActivityClass = c;
|
||||
}
|
||||
|
||||
public void uncaughtException(Thread thread, Throwable exception) {
|
||||
|
||||
StringWriter stackTrace = new StringWriter();
|
||||
exception.printStackTrace(new PrintWriter(stackTrace));
|
||||
System.err.println(stackTrace);// You can use LogCat too
|
||||
// Intent intent = new Intent(myContext, myActivityClass);
|
||||
// String s = stackTrace.toString();
|
||||
// //you can use this String to know what caused the exception and in which Activity
|
||||
// intent.putExtra("uncaughtException",
|
||||
// "Exception is: " + stackTrace.toString());
|
||||
// intent.putExtra("stacktrace", s);
|
||||
// myContext.startActivity(intent);
|
||||
//for restarting the Activity
|
||||
// Process.killProcess(Process.myPid());
|
||||
// System.exit(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class NoArtsInLUException extends Exception {
|
||||
|
||||
public NoArtsInLUException() {
|
||||
super(UtilityResources.getString(R.string.no_items_found_message));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class TooManyLUFoundInMonoLUPositionException extends Exception {
|
||||
|
||||
public TooManyLUFoundInMonoLUPositionException() {
|
||||
super(UtilityResources.getString(R.string.too_much_lu_found_message_in_mono_lu));
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
@@ -15,6 +19,13 @@ public class BaseDialogFragment extends DialogFragment {
|
||||
|
||||
public BaseDialogFragment() {
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
|
||||
getDialog().setOnKeyListener((dialog, keyCode, event) -> {
|
||||
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
|
||||
|
||||
@@ -12,15 +12,24 @@ public class BaseFragment extends Fragment {
|
||||
|
||||
|
||||
protected void openProgress() {
|
||||
if (this.mCurrentProgress == null) {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
}
|
||||
|
||||
new Thread(() -> {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (this.mCurrentProgress == null) {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
}
|
||||
});
|
||||
}).start();
|
||||
}
|
||||
|
||||
protected void closeProgress() {
|
||||
if (mCurrentProgress != null) {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
new Thread(() -> {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (mCurrentProgress != null) {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
});
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package it.integry.integrywmsnative.core.expansion.view;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
|
||||
public abstract class ExtendedSectionedRecyclerView<T, SH extends RecyclerView.ViewHolder, VH extends RecyclerView.ViewHolder>
|
||||
extends SectionedRecyclerViewAdapter<SH, VH> {
|
||||
|
||||
protected ArrayList<T> mDataset = new ArrayList<>();
|
||||
private View mEmptyView;
|
||||
|
||||
public ExtendedSectionedRecyclerView(ObservableArrayList<T> myDataset) {
|
||||
mDataset.addAll(myDataset);
|
||||
|
||||
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
public void onChanged(ObservableList sender) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sender);
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
checkIfEmpty();
|
||||
}
|
||||
});
|
||||
|
||||
checkIfEmpty();
|
||||
}
|
||||
|
||||
public ExtendedSectionedRecyclerView<T, SH, VH> setEmptyView(View emptyView) {
|
||||
this.mEmptyView = emptyView;
|
||||
this.checkIfEmpty();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return this.mDataset.size();
|
||||
}
|
||||
|
||||
private void checkIfEmpty() {
|
||||
if (mEmptyView != null) {
|
||||
final boolean emptyViewVisible = getItemSize() == 0;
|
||||
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
public interface IDestroyableFragment {
|
||||
|
||||
void addOnPreDestroy(Runnable onPreDestroy);
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
public interface IFilterableFragment {
|
||||
public interface IFilterableFragment extends IDestroyableFragment {
|
||||
|
||||
void onFilterClick();
|
||||
|
||||
|
||||
@@ -2,10 +2,8 @@ package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
|
||||
public interface IScrollableFragment {
|
||||
public interface IScrollableFragment extends IDestroyableFragment {
|
||||
|
||||
void setScrollToolbar(ElevatedToolbar toolbar);
|
||||
|
||||
void setScrollableOnPreDestroy(Runnable onPreDestroy);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
|
||||
public interface ISearcableFragment extends SearchView.OnQueryTextListener {
|
||||
public interface ISearcableFragment extends SearchView.OnQueryTextListener, IDestroyableFragment {
|
||||
|
||||
void onSearchEnabled();
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package it.integry.integrywmsnative.core.interfaces;
|
||||
|
||||
public interface ISelectAllFragment {
|
||||
public interface ISelectAllFragment extends IDestroyableFragment {
|
||||
|
||||
boolean isSelectAllButtonEnabled();
|
||||
|
||||
void onSelectAll();
|
||||
|
||||
void setSelectAllOnPreDestroy(Runnable onPreDestroy);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,10 +8,8 @@ import androidx.appcompat.widget.AppCompatTextView;
|
||||
* Created by GiuseppeS on 07/03/2018.
|
||||
*/
|
||||
|
||||
public interface ITitledFragment {
|
||||
public interface ITitledFragment extends IDestroyableFragment {
|
||||
|
||||
void onCreateActionBar(AppCompatTextView titleText, Context context);
|
||||
|
||||
void onActionBarPreDestroy(Runnable onActionBarPreDestroy);
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class MtbColr extends EntityBase {
|
||||
@@ -56,6 +57,10 @@ public class MtbColr extends EntityBase {
|
||||
|
||||
public MtbColr() {
|
||||
type = "mtb_colr";
|
||||
|
||||
if(SettingsManager.i().isUserLoggedIn()) {
|
||||
setUtente(SettingsManager.i().getUser().getFullname());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -99,6 +99,10 @@ public class MtbColt extends EntityBase {
|
||||
type = "mtb_colt";
|
||||
setDataCollo(UtilityDate.getDateInstance());
|
||||
setSerCollo("/");
|
||||
|
||||
if(SettingsManager.i().isUserLoggedIn()) {
|
||||
setPreparatoDa(SettingsManager.i().getUser().getFullname());
|
||||
}
|
||||
}
|
||||
|
||||
public MtbColt initDefaultFields() {
|
||||
|
||||
@@ -32,6 +32,7 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.RettificaULDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
@@ -125,7 +126,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
}
|
||||
|
||||
public static void createColloLavorazione(int segno, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void createColloLavorazione(int segno, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
MtbColt mtbColtToCreate = new MtbColt()
|
||||
.setSegno(segno)
|
||||
.setGestione(GestioneEnum.LAVORAZIONE);
|
||||
@@ -136,16 +137,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
|
||||
|
||||
saveColloStatic(mtbColtToCreate, new ISimpleOperationCallback<MtbColt>() {
|
||||
@Override
|
||||
public void onSuccess(MtbColt value) {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
saveCollo(mtbColtToCreate, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -212,7 +207,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
public static void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt,MtbColr sourceMtbColr, MtbDepoPosizione posizione, List<OrdineLavorazioneDTO> ordini, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public static void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List<OrdineLavorazioneDTO> ordini, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
MtbColt newMtbColt = new MtbColt()
|
||||
.initDefaultFields()
|
||||
@@ -262,7 +257,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
.setPartitaMag(original.getPartitaMag())
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
for (OrdineLavorazioneDTO ordLav : ordini) {
|
||||
if (ordLav.getQtaColVersamento().getBigDecimal().compareTo(BigDecimal.ZERO) > 0){
|
||||
if (ordLav.getQtaColVersamento().getBigDecimal().compareTo(BigDecimal.ZERO) > 0) {
|
||||
MtbColr ordColr = (MtbColr) mtbColrClone.clone();
|
||||
ordColr.setQtaCol(ordLav.getQtaColVersamento().getBigDecimal());
|
||||
ordColr.setNumCnf(ordLav.getNumCnfVersamento().getBigDecimal());
|
||||
@@ -290,12 +285,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public static void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed);
|
||||
}
|
||||
|
||||
|
||||
public static void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
MtbColt mtbColtToCreate = new MtbColt()
|
||||
.setGestione(gestione);
|
||||
@@ -321,39 +315,22 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
mtbColtToCreate
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
|
||||
saveColloStatic(mtbColtToCreate, new ISimpleOperationCallback<MtbColt>() {
|
||||
@Override
|
||||
public void onSuccess(MtbColt value) {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
saveCollo(mtbColtToCreate, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
public void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
ColliMagazzinoRESTConsumer.deleteColloStatic(mtbColtToDelete, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public static void deleteColloStatic(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE);
|
||||
|
||||
saveColloStatic(mtbColtToDelete, new ISimpleOperationCallback<MtbColt>() {
|
||||
@Override
|
||||
public void onSuccess(MtbColt value) {
|
||||
if (onComplete != null) onComplete.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
saveCollo(mtbColtToDelete, value -> {
|
||||
if (onComplete != null) onComplete.run();
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
@@ -411,7 +388,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
List<MtbColt> mtbColtList = new ArrayList<>();
|
||||
mtbColtList.add(mtbColt);
|
||||
fillMtbAartsOfMtbColts(mtbColtList, mtbColts -> onComplete.run(mtbColts.get(0)), onFailed);
|
||||
fillMtbAartsOfMtbColtsStatic(mtbColtList, mtbColts -> onComplete.run(mtbColts.get(0)), onFailed);
|
||||
} else {
|
||||
onComplete.run(mtbColt);
|
||||
}
|
||||
@@ -426,8 +403,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
public void fillMtbAartsOfMtbColts(List<MtbColt> mtbColts, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
fillMtbAartsOfMtbColtsStatic(mtbColts, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public static void fillMtbAartsOfMtbColts(List<MtbColt> mtbColts, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public static void fillMtbAartsOfMtbColtsStatic(List<MtbColt> mtbColts, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<String> codMarts = new ArrayList<>();
|
||||
|
||||
for (MtbColt mtbColt : mtbColts) {
|
||||
@@ -542,44 +522,37 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public static void changePosizione(MtbColt mtbColtToSave, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone();
|
||||
public void changePosizione(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
mtbColtToSaveClone.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
mtbColtToSaveClone.setMtbColr(new ObservableArrayList<>());
|
||||
String codMdep = posizione.getCodMdep();
|
||||
String posizioneString = posizione.getPosizione();
|
||||
|
||||
if (posizione == null) mtbColtToSaveClone.setPosizione(null);
|
||||
else mtbColtToSaveClone.setPosizione(posizione.getPosizione());
|
||||
MtbColt mtbColtToMoveClone = (MtbColt) mtbColtToMove.clone();
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSaveClone, mtbColt -> {
|
||||
if (onComplete != null) onComplete.run();
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) {
|
||||
mtbColtToMoveClone.getMtbColr().get(i)
|
||||
.setMtbAart(null)
|
||||
.setMtbPartitaMag(null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void updateRiga(MtbColr mtbColrToUpdate, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
updateRigaStatic(mtbColrToUpdate, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public static void updateRigaStatic(MtbColr mtbColrToUpdate, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
MtbColt mtbColt = new MtbColt()
|
||||
.setGestione(mtbColrToUpdate.getGestioneEnum())
|
||||
.setNumCollo(mtbColrToUpdate.getNumCollo())
|
||||
.setSerCollo(mtbColrToUpdate.getSerCollo())
|
||||
.setDataCollo(mtbColrToUpdate.getDataColloS());
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColrToUpdate);
|
||||
|
||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
mtbColrToUpdate.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
|
||||
EntityRESTConsumer.processEntity(mtbColt, value -> {
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, onFailed, MtbColt.class);
|
||||
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
|
||||
colliMagazzinoRESTConsumerService
|
||||
.spostaULInPosizione(codMdep,
|
||||
posizioneString,
|
||||
mtbColtToMoveClone)
|
||||
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||
analyzeAnswer(response, "changePosizione", mtbColts -> {
|
||||
onComplete.run();
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
|
||||
if (onFailed != null) onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void updateDataFine(MtbColt mtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
@@ -659,7 +632,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<MtbColt>>> call, Response<ServiceRESTResponse<List<MtbColt>>> response) {
|
||||
analyzeAnswer(response, "getColliInBasket", mtbColts -> {
|
||||
fillMtbAartsOfMtbColts(mtbColts, onComplete, onFailed);
|
||||
fillMtbAartsOfMtbColtsStatic(mtbColts, onComplete, onFailed);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@@ -670,12 +643,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void creaRettificaColloStatic(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void creaRettificaCollo(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
MtbColr sourceMtbColr = (MtbColr) sourceMtbColrOriginal.clone();
|
||||
sourceMtbColr.setMtbPartitaMag(null);
|
||||
sourceMtbColr.setMtbAart(null);
|
||||
@@ -692,22 +660,48 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
).enqueue(new Callback<ServiceRESTResponse<MtbColr>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<MtbColr>> call, Response<ServiceRESTResponse<MtbColr>> response) {
|
||||
analyzeAnswer(response, "creaRettificaCollo", data -> {
|
||||
onComplete.run(data);
|
||||
}, onFailed);
|
||||
analyzeAnswer(response, "creaRettificaCollo", onComplete, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<MtbColr>> call, Throwable t) {
|
||||
if(onFailed != null) onFailed.run(new Exception(t));
|
||||
if (onFailed != null) onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destMtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
MtbColt mtbColtToMoveClone = (MtbColt) sourceMtbColt.clone();
|
||||
MtbColt mtbColtDestClone = (MtbColt) destMtbColt.clone();
|
||||
|
||||
for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) {
|
||||
mtbColtToMoveClone.getMtbColr().get(i)
|
||||
.setMtbAart(null)
|
||||
.setMtbPartitaMag(null);
|
||||
}
|
||||
|
||||
public void creaRettificaCollo(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
creaRettificaColloStatic(sourceMtbColrOriginal, newNumCnf, newQtaTot, onComplete, onFailed);
|
||||
mtbColtDestClone.setMtbColr(null);
|
||||
|
||||
SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO = new SpostaArtsTraULRequestDTO()
|
||||
.setSourceMtbColt(mtbColtToMoveClone)
|
||||
.setDestinationMtbColt(mtbColtDestClone);
|
||||
|
||||
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
|
||||
colliMagazzinoRESTConsumerService.spostaArtsTraUL(
|
||||
spostaArtsTraULRequestDTO
|
||||
).enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||
analyzeAnswer(response, "spostaArtsTraUL", data -> {
|
||||
onComplete.run();
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
|
||||
if (onFailed != null) onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.RettificaULDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.GET;
|
||||
@@ -29,4 +30,10 @@ public interface ColliMagazzinoRESTConsumerService {
|
||||
@POST("creaRettificaCollo")
|
||||
Call<ServiceRESTResponse<MtbColr>> creaRettificaCollo(@Query("codMdep") String codMdep, @Body RettificaULDTO rettificaULDTO);
|
||||
|
||||
@POST("wms/spostaULInPosizione")
|
||||
Call<ServiceRESTResponse<Object>> spostaULInPosizione(@Query("codMdep") String codMdep, @Query("posizione") String posizione, @Body MtbColt mtbColtToMove);
|
||||
|
||||
@POST("wms/spostaArtsTraUL")
|
||||
Call<ServiceRESTResponse<Object>> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,12 +8,11 @@ import java.util.List;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
@@ -28,8 +27,30 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
|
||||
this.mSystemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void getPosizioneFromString(String posizione, RunnableArgs<MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "SELECT TOP 1 mtb_depo_posizioni.*," +
|
||||
" CASE WHEN jtb_fasi.cod_jfas IS NULL THEN 'N' ELSE 'S' END AS flag_linea_produzione " +
|
||||
" FROM mtb_depo_posizioni " +
|
||||
" LEFT OUTER JOIN jtb_fasi " +
|
||||
" ON mtb_depo_posizioni.posizione = jtb_fasi.cod_jfas " +
|
||||
" WHERE posizione = " + UtilityDB.valueToString(posizione);
|
||||
|
||||
SystemRESTConsumer.processSqlStatic(sql, MtbDepoPosizione.class, new ISimpleOperationCallback<MtbDepoPosizione>() {
|
||||
@Override
|
||||
public void onSuccess(MtbDepoPosizione value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void getAvailablePosizioni(RunnableArgs<List<MtbDepoPosizione>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
// String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
String codMdep = null;
|
||||
|
||||
PosizioniRESTConsumerService posizioniRESTConsumerService = RESTBuilder.getService(PosizioniRESTConsumerService.class);
|
||||
posizioniRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback<ServiceRESTResponse<List<MtbDepoPosizione>>>() {
|
||||
@@ -47,11 +68,8 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
|
||||
});
|
||||
}
|
||||
|
||||
public void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
getBancaliInPosizioneStatic(mtbDepoPosizione, onComplete, onFailed);
|
||||
}
|
||||
|
||||
public static void getBancaliInPosizioneStatic(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getBancaliInPosizione(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());
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.rest.model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class SitArtOrdDTO {
|
||||
|
||||
@@ -25,6 +26,8 @@ public class SitArtOrdDTO {
|
||||
private String codMsfa;
|
||||
private String descrizioneMsfa;
|
||||
|
||||
private final HashMap<String, Object> extraInfo = new HashMap<>();
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
@@ -196,4 +199,8 @@ public class SitArtOrdDTO {
|
||||
this.descrizioneMsfa = descrizioneMsfa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public HashMap<String, Object> getExtraInfo() {
|
||||
return extraInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package it.integry.integrywmsnative.core.rest.model;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
|
||||
public class SpostaArtsTraULRequestDTO {
|
||||
|
||||
|
||||
private MtbColt sourceMtbColt;
|
||||
|
||||
private MtbColt destinationMtbColt;
|
||||
|
||||
public MtbColt getSourceMtbColt() {
|
||||
return sourceMtbColt;
|
||||
}
|
||||
|
||||
public SpostaArtsTraULRequestDTO setSourceMtbColt(MtbColt sourceMtbColt) {
|
||||
this.sourceMtbColt = sourceMtbColt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getDestinationMtbColt() {
|
||||
return destinationMtbColt;
|
||||
}
|
||||
|
||||
public SpostaArtsTraULRequestDTO setDestinationMtbColt(MtbColt destinationMtbColt) {
|
||||
this.destinationMtbColt = destinationMtbColt;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,8 +33,10 @@ public class DBSettingsModel {
|
||||
private boolean flagForceAllToColli;
|
||||
private boolean flagSpedizioneEnableManualPick;
|
||||
private boolean flagSpedizioneCanSelectMultipleOrders;
|
||||
private boolean flagSpedizioneUseQtaOrd;
|
||||
private String produzioneDefaultCodAnag;
|
||||
private String reportNameSpedizionChiudiOrdine;
|
||||
private int onNumCnfInputChanged = 1;
|
||||
|
||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||
return flagSpedizioneEnableFakeGiacenza;
|
||||
@@ -234,6 +236,15 @@ public class DBSettingsModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagSpedizioneUseQtaOrd() {
|
||||
return flagSpedizioneUseQtaOrd;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagSpedizioneUseQtaOrd(boolean flagSpedizioneUseQtaOrd) {
|
||||
this.flagSpedizioneUseQtaOrd = flagSpedizioneUseQtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getProduzioneDefaultCodAnag() {
|
||||
return produzioneDefaultCodAnag;
|
||||
}
|
||||
@@ -251,4 +262,13 @@ public class DBSettingsModel {
|
||||
this.reportNameSpedizionChiudiOrdine = reportNameSpedizionChiudiOrdine;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getOnNumCnfInputChanged() {
|
||||
return onNumCnfInputChanged;
|
||||
}
|
||||
|
||||
public DBSettingsModel setOnNumCnfInputChanged(int onNumCnfInputChanged) {
|
||||
this.onNumCnfInputChanged = onNumCnfInputChanged;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,6 +258,14 @@ public class SettingsManager {
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
.setKeySection("REPORT_PACKING_LIST"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
.setKeySection("FLAG_USE_QTA_ORD"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SETUP")
|
||||
.setKeySection("ON_NUM_CNF_INPUT_CHANGED"));
|
||||
|
||||
|
||||
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
||||
@@ -281,6 +289,12 @@ public class SettingsManager {
|
||||
dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
|
||||
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
|
||||
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||
|
||||
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
|
||||
if(onNumCnfInputChanged != null) {
|
||||
dbSettingsModelIstance.setOnNumCnfInputChanged(onNumCnfInputChanged);
|
||||
}
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, onFailed);
|
||||
@@ -298,6 +312,8 @@ public class SettingsManager {
|
||||
return clazz.cast(value.getValue());
|
||||
} else if(clazz == Boolean.class) {
|
||||
return clazz.cast("S".equalsIgnoreCase(value.getValue()));
|
||||
} else if(clazz == Integer.class) {
|
||||
return clazz.cast(Integer.parseInt(value.getValue()));
|
||||
} else return null;
|
||||
|
||||
}
|
||||
|
||||
@@ -33,19 +33,24 @@ public class UtilityBarcode {
|
||||
}
|
||||
|
||||
public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) {
|
||||
return isEtichettaPosizione(barcodeScanDTO, true);
|
||||
}
|
||||
|
||||
public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, boolean enableCheckCodMdep) {
|
||||
String currentCodMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
String barcode = barcodeScanDTO.getStringValue();
|
||||
boolean isPosizione = false;
|
||||
|
||||
if(SettingsManager.iDB().getAvailablePosizioni() != null) {
|
||||
Stream<MtbDepoPosizione> tmpStream = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
|
||||
.filter(x -> x.getPosizione().equalsIgnoreCase(barcode));
|
||||
.filter(x -> x.getPosizione().equalsIgnoreCase(barcode) && (!enableCheckCodMdep || currentCodMdep.equalsIgnoreCase(x.getCodMdep())));
|
||||
|
||||
if(tmpStream.count() > 0){
|
||||
isPosizione = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return isPosizione;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,17 +2,28 @@ package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
public class UtilityContext {
|
||||
|
||||
private static Context mApplicationContext;
|
||||
private static AppCompatActivity mMainActivity;
|
||||
|
||||
public static void initApplicationContext(Context context) {
|
||||
mApplicationContext = context;
|
||||
}
|
||||
|
||||
public static void initMainActivity(AppCompatActivity mainActivity) {
|
||||
mMainActivity = mainActivity;
|
||||
}
|
||||
|
||||
|
||||
public static Context getApplicationContext() {
|
||||
return mApplicationContext;
|
||||
}
|
||||
|
||||
public static AppCompatActivity getMainActivity() {
|
||||
return mMainActivity;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,12 +4,15 @@ import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.rest.CommonRESTException;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class UtilityExceptions {
|
||||
|
||||
@@ -43,8 +46,17 @@ public class UtilityExceptions {
|
||||
if(ex.getCause() != null) errorMessage += "<br />" + ex.getCause().getMessage();
|
||||
}
|
||||
|
||||
if(context != null) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(context, new SpannableString(errorMessage), null, null).show();
|
||||
FragmentManager fm = null;
|
||||
|
||||
if(context != null && context instanceof FragmentActivity) {
|
||||
fm = ((FragmentActivity) context).getSupportFragmentManager();
|
||||
} else if(UtilityContext.getMainActivity() != null) {
|
||||
fm = UtilityContext.getMainActivity().getSupportFragmentManager();
|
||||
}
|
||||
|
||||
if(fm != null) {
|
||||
DialogSimpleMessageView.makeErrorDialog(new SpannableString(errorMessage), null, null)
|
||||
.show(fm, "tag");
|
||||
}
|
||||
|
||||
if(!BuildConfig.DEBUG) {
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogProgress;
|
||||
|
||||
public class UtilityProgress {
|
||||
@@ -26,27 +23,4 @@ public class UtilityProgress {
|
||||
return progress;
|
||||
}
|
||||
|
||||
|
||||
public static Thread makeProgressBarIndeterminate(ProgressBar progressBar) {
|
||||
progressBar.setMax(100);
|
||||
|
||||
Thread updateProgressThread = new Thread(() -> {
|
||||
|
||||
try {
|
||||
while (true) {
|
||||
for (int i = 0; i < 100; i++) {
|
||||
progressBar.setProgress(i);
|
||||
Thread.sleep(10);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// String message = ex.toString();
|
||||
}
|
||||
});
|
||||
|
||||
updateProgressThread.start();
|
||||
|
||||
return updateProgressThread;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,11 +68,11 @@ public class UtilityString {
|
||||
}
|
||||
|
||||
public static Spanned formatHtmlString(String format, String... params){
|
||||
return Html.fromHtml(String.format(format,params));
|
||||
return Html.fromHtml(String.format(format, (Object[]) params));
|
||||
}
|
||||
|
||||
public static Spanned formatHtmlStringFromResId(@StringRes int stringId, String... params){
|
||||
return Html.fromHtml(String.format(UtilityResources.getString(stringId),params));
|
||||
return Html.fromHtml(String.format(UtilityResources.getString(stringId), (Object[]) params));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ public class WiFiStatusChecker {
|
||||
};
|
||||
|
||||
public WiFiStatusChecker(Context context){
|
||||
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||
mWifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
|
||||
}
|
||||
|
||||
public void startMonitoring(RunnableArgs<SIGNAL> callback){
|
||||
|
||||
@@ -41,11 +41,11 @@ import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment {
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private FragmentMainAccettazioneBinding mBinding;
|
||||
@@ -54,7 +54,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
private MainListAccettazioneAdapter mAdapter;
|
||||
|
||||
private List<OrdineAccettazioneInevasoDTO> mOriginalOrderList;
|
||||
private List<OrdineAccettazioneInevasoDTO> mRenderedOrderList = new ArrayList<>();
|
||||
private final List<OrdineAccettazioneInevasoDTO> mRenderedOrderList = new ArrayList<>();
|
||||
|
||||
private AppCompatTextView mAppBarTitle;
|
||||
|
||||
@@ -81,11 +81,6 @@ 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 View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
@@ -154,7 +149,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
|
||||
|
||||
|
||||
private RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged = dto -> {
|
||||
private final RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged = dto -> {
|
||||
List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
|
||||
|
||||
if(dto.isSelected()) {
|
||||
@@ -192,8 +187,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
.count();
|
||||
|
||||
|
||||
DialogSimpleMessageHelper.makeInfoDialog(getActivity(),
|
||||
getText(R.string.orders).toString(),
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
|
||||
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter)
|
||||
+ "<br /><br />" +
|
||||
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)),
|
||||
@@ -208,14 +202,17 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
myIntent.putExtra("keySitArts", cacheSitArtItemID);
|
||||
getActivity().startActivity(myIntent);
|
||||
|
||||
}).show();
|
||||
}).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
|
||||
}, ex -> {
|
||||
progress.dismiss();
|
||||
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
|
||||
|
||||
DialogSimpleMessageView
|
||||
.makeErrorDialog(new SpannableString(errorMessage), null, null)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
});
|
||||
|
||||
|
||||
@@ -249,8 +246,9 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.accettazione_picking;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
@@ -10,6 +11,7 @@ import android.view.MenuItem;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
@@ -58,7 +60,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
||||
@@ -72,7 +74,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||
|
||||
private ObservableArrayList<AccettazioneListModel> mAccettazioneMutableData = new ObservableArrayList<>();
|
||||
private final ObservableArrayList<AccettazioneListModel> mAccettazioneMutableData = new ObservableArrayList<>();
|
||||
|
||||
|
||||
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
||||
@@ -89,6 +91,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
private final int PICK_UL_REQUEST = 1;
|
||||
|
||||
private boolean mShowSecondaryUntMis = true;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -115,11 +119,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
setSupportActionBar(this.mBindings.toolbar);
|
||||
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mShowSecondaryUntMis = sharedPreferences.getBoolean("picking_ingresso_enable_sec_unt_mis", true);
|
||||
|
||||
this.initVars();
|
||||
this.initBarcodeReader();
|
||||
this.initRecyclerView();
|
||||
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
mViewModel.setListeners(this);
|
||||
@@ -180,14 +186,14 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
AccettazioneListAdapter accettazioneListAdapter = new AccettazioneListAdapter(this, mAccettazioneMutableData, mShowSecondaryUntMis);
|
||||
this.mBindings.accettazionePickingList.setAdapter(accettazioneListAdapter);
|
||||
this.mBindings.accettazionePickingList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
this.mViewModel.getPickingList().observe(this, updatedData -> {
|
||||
refreshList();
|
||||
});
|
||||
|
||||
AccettazioneListAdapter accettazioneListAdapter = new AccettazioneListAdapter(this, mAccettazioneMutableData);
|
||||
this.mBindings.accettazionePickingList.setAdapter(accettazioneListAdapter);
|
||||
this.mBindings.accettazionePickingList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
accettazioneListAdapter.setOnItemClicked(clickedItem -> {
|
||||
this.mViewModel.dispatchOrdineRow(clickedItem);
|
||||
});
|
||||
@@ -236,32 +242,43 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
||||
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setSecUntMis(x.getMtbAart().getUntMis());
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
accettazioneListModel.setOriginalModel(x);
|
||||
@@ -287,35 +304,44 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
||||
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setSecUntMis(x.getMtbAart().getUntMis());
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
}
|
||||
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
accettazioneListModel.setSecQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
accettazioneListModel.setOriginalModel(x);
|
||||
|
||||
@@ -340,32 +366,43 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
accettazioneListModel.setBadge1(x.getSitArtOrdDTO().getCodArtFor());
|
||||
accettazioneListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
|
||||
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setSecUntMis(x.getMtbAart().getUntMis());
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
if (x.getMtbAart() != null) {
|
||||
@@ -389,8 +426,45 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
accettazioneListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
|
||||
|
||||
|
||||
accettazioneListModel.setQtaEvasa(BigDecimal.ZERO);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaOrd());
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getNumCnf)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if (x.getWithdrawMtbColrs().size() > 0) {
|
||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||
.map(MtbColr::getQtaCol)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setSecUntMis(x.getMtbAart().getUntMis());
|
||||
} else {
|
||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||
if (x.getMtbAart() != null)
|
||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
|
||||
accettazioneListModel.setSecQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setSecQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setSecUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
|
||||
if (x.getMtbAart() != null) {
|
||||
accettazioneListModel.setDescrizione(x.getMtbAart().getDescrizioneEstesa());
|
||||
@@ -459,7 +533,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
public void startListaBancaliRegistratiActivity(ArrayList<RecoverMtbColt> mtbColts) {
|
||||
|
||||
Intent myIntent = ListaBancaliActivity.createIntent(this,
|
||||
Stream.of(mtbColts).map(x -> (MtbColt)x).toList(),
|
||||
Stream.of(mtbColts).map(x -> (MtbColt) x).toList(),
|
||||
input -> ((RecoverMtbColt) input).isFlagCanBeRecovered(),
|
||||
PrinterRESTConsumer.Type.SECONDARIA,
|
||||
ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
|
||||
@@ -470,7 +544,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
public void onLUSuccessullyPrinted() {
|
||||
Resources res = getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -480,13 +556,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
@Override
|
||||
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||
this.closeProgress();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
this,
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
new SpannableString(ex.getMessage()),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
onComplete).show();
|
||||
onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -523,7 +599,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
|
||||
if(ex instanceof InvalidPesoKGException) {
|
||||
if (ex instanceof InvalidPesoKGException) {
|
||||
UtilityToast.showToast(ex.getMessage());
|
||||
} else {
|
||||
UtilityExceptions.defaultException(this, ex, mCurrentProgress);
|
||||
@@ -588,12 +664,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this,
|
||||
new SpannableString(text),
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
).show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -98,10 +98,13 @@ public class AccettazionePickingViewModel {
|
||||
|
||||
public void init(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts, String codMdep) {
|
||||
this.mOrders = orders;
|
||||
this.mSitArts = sitArts;
|
||||
this.mDefaultCodMdep = codMdep;
|
||||
|
||||
getEmptyPickingList(sitArts, pickingObjectList -> {
|
||||
this.mSitArts = Stream.of(sitArts)
|
||||
.filter(x -> UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO))
|
||||
.toList();
|
||||
|
||||
getEmptyPickingList(this.mSitArts, pickingObjectList -> {
|
||||
this.mPickingList.postValue(pickingObjectList);
|
||||
});
|
||||
|
||||
@@ -136,6 +139,7 @@ public class AccettazionePickingViewModel {
|
||||
}
|
||||
|
||||
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
|
||||
|
||||
List<String> codMarts = Stream.of(sitArtOrdList)
|
||||
.map(SitArtOrdDTO::getCodMart)
|
||||
.toList();
|
||||
@@ -169,7 +173,7 @@ public class AccettazionePickingViewModel {
|
||||
public void retrieveExistentLU(RunnableArgs<ArrayList<RecoverMtbColt>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mSitArts, mtbColtList -> {
|
||||
this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mOrders, mtbColtList -> {
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run(mtbColtList);
|
||||
}, this::sendError);
|
||||
@@ -612,7 +616,7 @@ public class AccettazionePickingViewModel {
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setRiga(value.getMtbColr().get(value.getMtbColr().size() - 1).getRiga())
|
||||
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
||||
.setMtbAart(pickingObjectDTO.getMtbAart());
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
@@ -28,8 +29,9 @@ import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDT
|
||||
|
||||
public class AccettazioneListAdapter extends SectionedRecyclerViewAdapter<AccettazioneListAdapter.SubheaderHolder, AccettazioneListAdapter.SingleItemViewHolder> {
|
||||
|
||||
private Context mContext;
|
||||
private List<AccettazioneListModel> mDataset = new ArrayList<>();
|
||||
private final Context mContext;
|
||||
private final boolean mShowSecondaryUntMis;
|
||||
private final List<AccettazioneListModel> mDataset = new ArrayList<>();
|
||||
|
||||
private RunnableArgs<PickingObjectDTO> mOnItemClicked;
|
||||
|
||||
@@ -55,8 +57,9 @@ public class AccettazioneListAdapter extends SectionedRecyclerViewAdapter<Accett
|
||||
}
|
||||
|
||||
|
||||
public AccettazioneListAdapter(AppCompatActivity context, ObservableArrayList<AccettazioneListModel> mutableDataSet) {
|
||||
public AccettazioneListAdapter(AppCompatActivity context, ObservableArrayList<AccettazioneListModel> mutableDataSet, boolean showSecondaryUntMis) {
|
||||
this.mContext = context;
|
||||
this.mShowSecondaryUntMis = showSecondaryUntMis;
|
||||
|
||||
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
@@ -111,8 +114,8 @@ public class AccettazioneListAdapter extends SectionedRecyclerViewAdapter<Accett
|
||||
|
||||
holder.mBinding.deactivatedOverBg.setVisibility(!pickingObjectDTO.isActive() ? View.VISIBLE : View.GONE);
|
||||
holder.mBinding.getRoot().setAlpha(!pickingObjectDTO.isActive() ? 0.8f : 1);
|
||||
holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingObjectDTO.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner));
|
||||
holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700));
|
||||
holder.mBinding.badge1.setBackground(ResourcesCompat.getDrawable(mContext.getResources(), !pickingObjectDTO.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner, null));
|
||||
holder.mBinding.qtaEvasa.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700, null));
|
||||
|
||||
holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione());
|
||||
holder.mBinding.descrizione.setTextColor(pickingObjectDTO.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
|
||||
@@ -129,6 +132,17 @@ public class AccettazioneListAdapter extends SectionedRecyclerViewAdapter<Accett
|
||||
holder.mBinding.untMis.setText(pickingObjectDTO.getUntMis());
|
||||
holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getUntMis()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
//Secondary Unt Mis
|
||||
holder.mBinding.secondaryUntMis.setVisibility(mShowSecondaryUntMis ? View.VISIBLE : View.GONE);
|
||||
|
||||
if(mShowSecondaryUntMis) {
|
||||
holder.mBinding.secQtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getSecQtaEvasa()));
|
||||
holder.mBinding.secQtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getSecQtaTot()));
|
||||
|
||||
holder.mBinding.secUntMis.setText(pickingObjectDTO.getSecUntMis());
|
||||
holder.mBinding.secUntMis.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getSecUntMis()) ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
if (this.mOnItemClicked != null)
|
||||
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel());
|
||||
|
||||
@@ -19,6 +19,9 @@ public class AccettazioneListModel implements Cloneable {
|
||||
private BigDecimal qtaEvasa;
|
||||
private BigDecimal qtaTot;
|
||||
private String untMis;
|
||||
private BigDecimal secQtaEvasa;
|
||||
private BigDecimal secQtaTot;
|
||||
private String secUntMis;
|
||||
|
||||
private boolean active;
|
||||
|
||||
@@ -124,6 +127,33 @@ public class AccettazioneListModel implements Cloneable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getSecQtaEvasa() {
|
||||
return secQtaEvasa;
|
||||
}
|
||||
|
||||
public AccettazioneListModel setSecQtaEvasa(BigDecimal secQtaEvasa) {
|
||||
this.secQtaEvasa = secQtaEvasa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getSecQtaTot() {
|
||||
return secQtaTot;
|
||||
}
|
||||
|
||||
public AccettazioneListModel setSecQtaTot(BigDecimal secQtaTot) {
|
||||
this.secQtaTot = secQtaTot;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSecUntMis() {
|
||||
return secUntMis;
|
||||
}
|
||||
|
||||
public AccettazioneListModel setSecUntMis(String secUntMis) {
|
||||
this.secUntMis = secUntMis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ 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;
|
||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
||||
|
||||
@Singleton
|
||||
public class AccettazionePickingRESTConsumer {
|
||||
@@ -28,18 +28,18 @@ public class AccettazionePickingRESTConsumer {
|
||||
this.mSystemRestConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void getBancaliGiaRegistrati(List<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<RecoverMtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getBancaliGiaRegistrati(List<OrdineAccettazioneInevasoDTO> ordiniToShow, RunnableArgs<ArrayList<RecoverMtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> whereCondListMap = new ArrayList<>();
|
||||
|
||||
Stream
|
||||
.of(ordiniToShow)
|
||||
.distinctBy(x -> x.getDataOrd() + " " + x.getGestione() + " " + x.getNumOrd())
|
||||
.distinctBy(x -> x.getData() + " " + x.getGestione() + " " + x.getNumero())
|
||||
.forEach(x -> {
|
||||
try {
|
||||
HashMap<String, Object> whereCondMap = new HashMap<>();
|
||||
whereCondMap.put("mtb_colr.data_ord", UtilityDate.recognizeDate(x.getDataOrd()));
|
||||
whereCondMap.put("mtb_colr.data_ord", UtilityDate.recognizeDate(x.getData()));
|
||||
whereCondMap.put("mtb_colr.gestione", x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione());
|
||||
whereCondMap.put("mtb_colr.num_ord", x.getNumOrd());
|
||||
whereCondMap.put("mtb_colr.num_ord", x.getNumero());
|
||||
|
||||
whereCondListMap.add(whereCondMap);
|
||||
} catch (Exception ex) {
|
||||
|
||||
@@ -24,7 +24,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
|
||||
import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
@@ -118,7 +118,9 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<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();
|
||||
DialogSimpleMessageView
|
||||
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||
|
||||
} catch (Exception ex) {
|
||||
@@ -128,7 +130,9 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
||||
} else {
|
||||
progress.dismiss();
|
||||
String errorMessage = "Nessuna stampante configurata";
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString(errorMessage), null, null)
|
||||
.show(mContext.getSupportFragmentManager(), "tag");;
|
||||
}
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||
|
||||
@@ -63,7 +63,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
|
||||
ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> {
|
||||
|
||||
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
|
||||
mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
|
||||
if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
|
||||
item.setMtbColr(mtbColrObservableArrayList);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
@@ -28,7 +28,7 @@ import it.integry.integrywmsnative.gest.login.LoginActivity;
|
||||
import it.integry.integrywmsnative.gest.login.core.LoginHelper;
|
||||
import it.integry.integrywmsnative.gest.login.dto.LoginAziendaDTO;
|
||||
import it.integry.integrywmsnative.gest.login.dto.LoginDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class LoginViewModel {
|
||||
|
||||
@@ -192,22 +192,22 @@ public class LoginViewModel {
|
||||
private void onLoginFailed(final Spanned message){
|
||||
mProgress.dismiss();
|
||||
loginButtonEnabled.set(true);
|
||||
mActivity.runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog(
|
||||
mActivity,
|
||||
mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeErrorDialog(
|
||||
message,
|
||||
null,
|
||||
null).show());
|
||||
null)
|
||||
.show(mActivity.getSupportFragmentManager(), "tag"));
|
||||
}
|
||||
|
||||
|
||||
private void onLoginSuccess(final String title, final Spanned message, final String host, final int port, final List<String> availableProfiles){
|
||||
mProgress.dismiss();
|
||||
mActivity.runOnUiThread(() -> DialogSimpleMessageHelper.makeSuccessDialog(
|
||||
mActivity,
|
||||
mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog(
|
||||
title,
|
||||
message,
|
||||
null,
|
||||
() -> showProfileDBSelectionDialog(host, port, availableProfiles)).show());
|
||||
() -> showProfileDBSelectionDialog(host, port, availableProfiles))
|
||||
.show(mActivity.getSupportFragmentManager(), "tag"));
|
||||
}
|
||||
|
||||
private void showProfileDBSelectionDialog(final String host, final int port, final List<String> availableProfiles){
|
||||
|
||||
@@ -50,7 +50,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
|
||||
private FragmentMainBinding mBindings;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private LayoutInflater mLayoutInflater;
|
||||
@@ -210,21 +210,11 @@ 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 setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
private void initGestMenu() {
|
||||
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
|
||||
@@ -264,4 +254,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
String appVersion = UtilityResources.getAppVersion();
|
||||
mBindings.currentAppVersionName.setText("v" + appVersion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@ package it.integry.integrywmsnative.gest.main;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.List;
|
||||
@@ -42,7 +42,7 @@ public class MenuListAdapter extends RecyclerView.Adapter<MenuListAdapter.ViewHo
|
||||
// binds the data to the TextView in each cell
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
holder.mIcon.setImageDrawable(mContext.getResources().getDrawable(mDataset.get(position).getTitleIcon(), null));
|
||||
holder.mIcon.setImageDrawable(ResourcesCompat.getDrawable(mContext.getResources(), mDataset.get(position).getTitleIcon(), null));
|
||||
holder.mTitle.setText(mContext.getResources().getString(mDataset.get(position).getTitleText()));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
@@ -8,13 +7,10 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.ComparatorCompat;
|
||||
@@ -30,10 +26,11 @@ import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
@@ -45,17 +42,17 @@ 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.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener {
|
||||
public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener {
|
||||
|
||||
public BindableBoolean fabVisible = new BindableBoolean(false);
|
||||
|
||||
@@ -64,24 +61,24 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
|
||||
private FragmentMainOrdiniUscitaBinding mBindings = null;
|
||||
|
||||
private ObservableArrayList<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
||||
private final ObservableArrayList<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
||||
|
||||
private GestioneEnum mCurrentGestioneOrd = null;
|
||||
private GestioneEnum mCurrentGestioneCol = null;
|
||||
private int mCurrentSegnoCol = 0;
|
||||
private Class<? extends BaseDialogRowInfoView> mDialogRowInfo;
|
||||
|
||||
private ElevatedToolbar mToolbar;
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final 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) {
|
||||
public static OrdiniUscitaElencoFragment newInstance(GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol, Class<? extends BaseDialogRowInfoView> dialogRowInfo) {
|
||||
OrdiniUscitaElencoFragment fragment = new OrdiniUscitaElencoFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
@@ -89,6 +86,9 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
args.putString("gestioneCol", gestioneCol != null ? gestioneCol.getText() : null);
|
||||
args.putInt("segnoCol", segnoCol);
|
||||
|
||||
String keyDialogRowInfo = DataCache.addItem(dialogRowInfo);
|
||||
args.putString("keyDialogRowInfo", keyDialogRowInfo);
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -100,6 +100,9 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
String gestioneCol = getArguments().getString("gestioneCol");
|
||||
mCurrentGestioneCol = gestioneCol != null ? GestioneEnum.fromString(gestioneCol) : null;
|
||||
mCurrentSegnoCol = getArguments().getInt("segnoCol");
|
||||
|
||||
String keyDialogRowInfo = getArguments().getString("keyDialogRowInfo");
|
||||
mDialogRowInfo = DataCache.retrieveItem(keyDialogRowInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -122,15 +125,29 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
this.initRecyclerView();
|
||||
this.initBarcodeReader();
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
|
||||
if(mAppliedFilterViewModel != null) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
@@ -245,26 +262,11 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
.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)
|
||||
@@ -273,27 +275,9 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
.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();
|
||||
@@ -315,7 +299,6 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
|
||||
@Override
|
||||
public void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) {
|
||||
// FBToast.infoToast(getActivity(), "Trovati: " + filteredOrders.size() + " ordini", Toast.LENGTH_LONG);
|
||||
refreshList(filteredOrders);
|
||||
}
|
||||
|
||||
@@ -328,16 +311,15 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
|
||||
int alreadyRegisteredUL = alreadyRegisteredMtbColts.size();
|
||||
|
||||
DialogSimpleMessageHelper.makeInfoDialog(getActivity(),
|
||||
getText(R.string.orders).toString(),
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
|
||||
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size())
|
||||
+ "<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, MtbColr.Causale.DEFAULT)
|
||||
).show();
|
||||
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol, MtbColr.Causale.DEFAULT, mDialogRowInfo)
|
||||
).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -345,11 +327,6 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSelectAllButtonEnabled() {
|
||||
return SettingsManager.iDB().isFlagMultiClienteOrdV();
|
||||
@@ -365,11 +342,6 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
.forEach(x -> x.getSelectedObservable().set(!allSelected));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectAllOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
@@ -389,4 +361,9 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
|
||||
}).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneExceptio
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoOrderFoundException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.DtbOrdt;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
@@ -282,10 +283,7 @@ public class OrdiniUscitaElencoViewModel {
|
||||
if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts);
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
void onLoadingStarted();
|
||||
|
||||
void onLoadingEnded();
|
||||
public interface Listener extends ILoadingListener {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
|
||||
@@ -132,17 +132,25 @@ public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter<Ordi
|
||||
holder.mBinding.emptyView.setBackgroundColor(listModel.getEtichettaColor());
|
||||
else holder.mBinding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), android.R.color.transparent, null));
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getDescription()))
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getDescription())) {
|
||||
holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription()));
|
||||
holder.mBinding.descrizione.setVisibility(View.VISIBLE);
|
||||
} else holder.mBinding.descrizione.setVisibility(View.GONE);
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getSubDescription()))
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getSubDescription())) {
|
||||
holder.mBinding.subDescrizione.setText(Html.fromHtml(listModel.getSubDescription()));
|
||||
holder.mBinding.subDescrizione.setVisibility(View.VISIBLE);
|
||||
} else holder.mBinding.subDescrizione.setVisibility(View.GONE);
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getRightDescription()))
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getRightDescription())) {
|
||||
holder.mBinding.rightDescrizione.setText(Html.fromHtml(listModel.getRightDescription()));
|
||||
holder.mBinding.rightDescrizione.setVisibility(View.VISIBLE);
|
||||
} else holder.mBinding.rightDescrizione.setVisibility(View.GONE);
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getRightSubDescription()))
|
||||
if(!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) {
|
||||
holder.mBinding.rightSubDescrizione.setText(Html.fromHtml(listModel.getRightSubDescription()));
|
||||
holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE);
|
||||
} else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE);
|
||||
|
||||
holder.mBinding.setSelected(listModel.getSelectedObservable());
|
||||
holder.mBinding.executePendingBindings();
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package it.integry.integrywmsnative.gest.picking_libero;
|
||||
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
@@ -32,6 +31,7 @@ import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
@@ -45,7 +45,6 @@ import it.integry.integrywmsnative.core.model.VtbDest;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
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.FragmentPickingLiberoBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter;
|
||||
@@ -54,17 +53,16 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
*/
|
||||
public class PickingLiberoFragment extends Fragment implements ITitledFragment, IScrollableFragment, ILifecycleFragment, PickingLiberoViewModel.Listener, BottomSheetMtbColrEditView.Listener {
|
||||
public class PickingLiberoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ILifecycleFragment, PickingLiberoViewModel.Listener, BottomSheetMtbColrEditView.Listener {
|
||||
|
||||
private FragmentPickingLiberoBinding mBindings;
|
||||
|
||||
@@ -84,8 +82,6 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private Dialog mCurrentProgress;
|
||||
|
||||
private GestioneEnum mCurrentGestione;
|
||||
|
||||
public PickingLiberoFragment() {
|
||||
@@ -108,11 +104,6 @@ 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);
|
||||
@@ -221,26 +212,12 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
this.mViewModel.closeLU(null);
|
||||
}
|
||||
|
||||
|
||||
private void openProgress() {
|
||||
if (this.mCurrentProgress == null) {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
}
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
if (mCurrentProgress != null) {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
public void onDestroy() {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroyView();
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -248,11 +225,6 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
@@ -295,12 +267,11 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(getActivity(),
|
||||
new SpannableString(text),
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -318,13 +289,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
@Override
|
||||
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||
DialogAskCliente.makeBase(getActivity(), (status, result, codJcom) -> {
|
||||
if (status == DialogConsts.Results.YES) {
|
||||
onComplete.run(result, codJcom);
|
||||
} else {
|
||||
onAbort.run();
|
||||
}
|
||||
}).show();
|
||||
DialogAskClienteView.newInstance(onComplete, onAbort)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -333,7 +299,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
onAbort.run();
|
||||
BarcodeManager.enable();
|
||||
})
|
||||
.show();
|
||||
.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -396,7 +362,6 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||
this.mViewModel.dispatchRowEdit(mtbColr);
|
||||
@@ -410,7 +375,12 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onComplete) {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
if (thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
else onComplete.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +179,9 @@ public class PickingLiberoViewModel {
|
||||
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
if (this.mFlagAskCliente) {
|
||||
this.sendOnLoadingEnded();
|
||||
this.sendLUClienteRequired((vtbDest, codJcom) -> {
|
||||
this.sendOnLoadingStarted();
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
|
||||
}, onComplete);
|
||||
} else {
|
||||
@@ -512,7 +514,7 @@ public class PickingLiberoViewModel {
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setRiga(value.getMtbColr().get(value.getMtbColr().size() - 1).getRiga())
|
||||
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
||||
.setMtbAart(pickingObjectDTO.getMtbAart());
|
||||
|
||||
@@ -646,8 +648,6 @@ public class PickingLiberoViewModel {
|
||||
.setQtaCol(qtaTot)
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScadPartita(dataScad)
|
||||
.setUtente(SettingsManager.i().getUser().getFullname())
|
||||
.setCausale(MtbColr.Causale.RETTIFICA)
|
||||
.setDatetimeRow(UtilityDate.getDateInstance());
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
@@ -35,6 +35,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
@@ -49,9 +50,9 @@ 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_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
||||
|
||||
public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener {
|
||||
@@ -179,9 +180,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
this.mBindings.mainList.setAdapter(pickingResiListAdapter);
|
||||
this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
pickingResiListAdapter.setOnItemClicked(clickedItem -> {
|
||||
pickingResiListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> {
|
||||
if (!noLUPresent.get()) {
|
||||
this.mViewmodel.dispatchOrdineRow(clickedItem);
|
||||
this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -190,7 +191,11 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
private List<PickingResiListModel> convertDataModelToListModel(List<WithdrawableDtbDocr> dataList) {
|
||||
List<PickingResiListModel> pickingResiListModels = new ArrayList<>();
|
||||
|
||||
Stream.of(dataList)
|
||||
List<WithdrawableDtbDocr> tmpList = Stream.of(dataList)
|
||||
.filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getQtaDoc(), BigDecimal.ZERO))
|
||||
.toList();
|
||||
|
||||
Stream.of(tmpList)
|
||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||
.forEach(x -> {
|
||||
|
||||
@@ -251,6 +256,10 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
});
|
||||
}
|
||||
|
||||
public void removeListFilter() {
|
||||
this.mViewmodel.resetMatchedRows();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||
this.mViewmodel.dispatchRowEdit(mtbColr);
|
||||
@@ -321,11 +330,23 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
this.openProgress();
|
||||
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||
}, () -> {
|
||||
// this.mViewmodel.resetMatchedRows();
|
||||
this.mViewmodel.resetMatchedRows();
|
||||
})
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterApplied(String newValue) {
|
||||
this.mBindings.filteredArtsInListExpandableLayout.expand(true);
|
||||
this.mBindings.descriptionFilterText.setText(!UtilityString.isNullOrEmpty(newValue) ? newValue : "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterRemoved() {
|
||||
this.mBindings.filteredArtsInListExpandableLayout.collapse(true);
|
||||
this.mBindings.descriptionFilterText.setText("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRowSaved() {
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
@@ -334,12 +355,11 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this,
|
||||
new SpannableString(text),
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
).show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -362,7 +382,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
public void onLUSuccessullyPrinted() {
|
||||
Resources res = getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -373,13 +395,13 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
@Override
|
||||
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||
this.closeProgress();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
this,
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
new SpannableString(ex.getMessage()),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
onComplete).show();
|
||||
onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -14,7 +14,11 @@ import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
@@ -25,6 +29,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
@@ -39,6 +44,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
|
||||
public class PickingResiViewModel {
|
||||
@@ -229,23 +235,26 @@ public class PickingResiViewModel {
|
||||
private void postCloseOperations(MtbColt mtbColt, Runnable onComplete) {
|
||||
this.mColliRegistrati.add(mtbColt);
|
||||
|
||||
Stream.of(this.mPickingList.getValue())
|
||||
.forEach(x -> {
|
||||
List<MtbColr> withdraws = x.getWithdrawRows();
|
||||
List<WithdrawableDtbDocr> tmpList = getPickingList().getValue();
|
||||
|
||||
for (int k = 0; k < withdraws.size(); k++) {
|
||||
MtbColr withdrawRow = withdraws.get(k);
|
||||
x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||
}
|
||||
for (int i = 0; i < tmpList.size(); i++) {
|
||||
WithdrawableDtbDocr x = tmpList.get(i);
|
||||
List<MtbColr> withdraws = x.getWithdrawRows();
|
||||
|
||||
x.getWithdrawRows().clear();
|
||||
for (int k = 0; k < withdraws.size(); k++) {
|
||||
MtbColr withdrawRow = withdraws.get(k);
|
||||
x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||
}
|
||||
|
||||
if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) {
|
||||
this.mPickingList.getValue().remove(x);
|
||||
}
|
||||
});
|
||||
x.getWithdrawRows().clear();
|
||||
|
||||
this.mPickingList.postValue(this.mPickingList.getValue());
|
||||
if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) {
|
||||
tmpList.remove(x);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
this.mPickingList.postValue(tmpList);
|
||||
onComplete.run();
|
||||
}
|
||||
|
||||
@@ -259,41 +268,232 @@ public class PickingResiViewModel {
|
||||
//Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
|
||||
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
|
||||
//dell'etichetta anonima
|
||||
// this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
} else {
|
||||
// this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||
// this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
|
||||
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
|
||||
|
||||
} else {
|
||||
// this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
|
||||
this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr) {
|
||||
private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
this.createNewLU(
|
||||
null,
|
||||
null,
|
||||
() -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete));
|
||||
}
|
||||
|
||||
|
||||
private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
|
||||
if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
|
||||
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
|
||||
|
||||
|
||||
} else onComplete.run();
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
|
||||
|
||||
if (mtbColt == null) {
|
||||
|
||||
if (!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) {
|
||||
this.sendError(new NotCurrentYearLUException());
|
||||
} else {
|
||||
|
||||
this.createNewLU(
|
||||
UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()),
|
||||
CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, onComplete);
|
||||
}
|
||||
} else {
|
||||
|
||||
this.createNewLU(
|
||||
null,
|
||||
null,
|
||||
() -> searchArtFromUL(mtbColt, onComplete)
|
||||
);
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void executeEtichettaLU(String SSCC, Runnable onComplete) {
|
||||
mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
if (mtbColt.getSegno() != -1) {
|
||||
searchArtFromUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidLUException());
|
||||
} else {
|
||||
this.sendError(new NoArtsFoundException());
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
|
||||
|
||||
String barcodeProd = null;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
|
||||
barcodeProd = ean128Model.Content;
|
||||
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
|
||||
} else {
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
} else {
|
||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||
onComplete.run();
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void searchArtFromUL(MtbColt scannedUL, Runnable onComplete) {
|
||||
|
||||
final List<WithdrawableDtbDocr> pickingList = mPickingList.getValue();
|
||||
final List<WithdrawableDtbDocr> matchPickingObject = new ArrayList<>();
|
||||
|
||||
|
||||
//Controllo se nel collo ho degli articoli che corrispondono per codice / taglia / colore / lotto
|
||||
Stream.of(scannedUL.getMtbColr())
|
||||
.filter(x -> !UtilityString.isNullOrEmpty(x.getCodMart()))
|
||||
.forEach(x -> {
|
||||
|
||||
for (WithdrawableDtbDocr pickingObject : pickingList) {
|
||||
//Da verificare se il controllo per partita deve essere sempre effettuato
|
||||
if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getCodCol())) {
|
||||
|
||||
if (!matchPickingObject.contains(pickingObject)) {
|
||||
matchPickingObject.add(pickingObject);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
for (WithdrawableDtbDocr matchedObject : matchPickingObject) {
|
||||
MtbColt cloneMtbColt = (MtbColt) scannedUL.clone();
|
||||
ObservableArrayList<MtbColr> cloneMtbColrs = (ObservableArrayList<MtbColr>) cloneMtbColt.getMtbColr().clone();
|
||||
|
||||
|
||||
Stream.of(cloneMtbColt.getMtbColr())
|
||||
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getCodCol())))
|
||||
.forEach(cloneMtbColrs::remove);
|
||||
|
||||
cloneMtbColt.setMtbColr(cloneMtbColrs);
|
||||
|
||||
PickDataDTO tempPickData = new PickDataDTO()
|
||||
.setSourceMtbColt(cloneMtbColt);
|
||||
|
||||
matchedObject.setTempPickData(tempPickData);
|
||||
}
|
||||
|
||||
|
||||
this.loadMatchedRows(matchPickingObject);
|
||||
onComplete.run();
|
||||
}
|
||||
|
||||
|
||||
private void loadMatchedRows(List<WithdrawableDtbDocr> matchedRows) {
|
||||
if (matchedRows == null || matchedRows.size() == 0) {
|
||||
this.sendError(new NoArtsFoundException());
|
||||
} else if (matchedRows.size() == 1) {
|
||||
WithdrawableDtbDocr matchedItem = matchedRows.get(0);
|
||||
|
||||
if (matchedItem.getWithdrawRows() != null && matchedItem.getWithdrawRows().size() > 1) {
|
||||
|
||||
List<WithdrawableDtbDocr> pickingList = mPickingList.getValue();
|
||||
|
||||
Stream.of(pickingList)
|
||||
.filter(x -> x != matchedItem)
|
||||
.forEach(x -> x.setHidden(true));
|
||||
|
||||
this.sendFilterApplied(null);
|
||||
this.getPickingList().postValue(pickingList);
|
||||
} else {
|
||||
this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt());
|
||||
}
|
||||
|
||||
} else {
|
||||
List<WithdrawableDtbDocr> pickingList = mPickingList.getValue();
|
||||
|
||||
for (int i = 0; i < pickingList.size(); i++) {
|
||||
if (!matchedRows.contains(pickingList.get(i))) {
|
||||
pickingList.get(i).setHidden(true);
|
||||
}
|
||||
}
|
||||
|
||||
this.sendFilterApplied(null);
|
||||
this.getPickingList().postValue(pickingList);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr, final MtbColt refMtbColt) {
|
||||
BigDecimal totalQtaDoc = withdrawableDtbDocr.getQtaDoc();
|
||||
BigDecimal totalNumCnfDoc = withdrawableDtbDocr.getNumCnf();
|
||||
BigDecimal qtaCnfDoc = withdrawableDtbDocr.getQtaCnf();
|
||||
|
||||
//TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
|
||||
MtbColr mtbColrToDispatch = withdrawableDtbDocr.getTempPickData() != null &&
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt() != null &&
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr() != null &&
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ?
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
||||
|
||||
BigDecimal totalAvailableQtaCol;
|
||||
BigDecimal totalAvailableQtaCnf;
|
||||
BigDecimal totalAvailableNumCnf;
|
||||
|
||||
if (mtbColrToDispatch != null) {
|
||||
totalAvailableQtaCol = mtbColrToDispatch.getQtaCol();
|
||||
totalAvailableQtaCnf = mtbColrToDispatch.getQtaCnf();
|
||||
totalAvailableNumCnf = mtbColrToDispatch.getNumCnf();
|
||||
} else {
|
||||
totalAvailableQtaCol = totalQtaDoc;
|
||||
totalAvailableQtaCnf = qtaCnfDoc;
|
||||
totalAvailableNumCnf = totalNumCnfDoc;
|
||||
}
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
withdrawableDtbDocr.getMtbAart(),
|
||||
totalNumCnfDoc,
|
||||
qtaCnfDoc,
|
||||
totalQtaDoc,
|
||||
totalQtaDoc,
|
||||
totalNumCnfDoc,
|
||||
qtaCnfDoc,
|
||||
totalAvailableNumCnf,
|
||||
totalAvailableQtaCnf,
|
||||
totalAvailableQtaCol,
|
||||
totalAvailableQtaCol,
|
||||
totalAvailableNumCnf,
|
||||
totalAvailableQtaCnf,
|
||||
withdrawableDtbDocr.getPartitaMag(),
|
||||
withdrawableDtbDocr.getDataScadPartitaMagD(),
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
|
||||
this.saveNewRow(withdrawableDtbDocr,
|
||||
refMtbColt,
|
||||
pickedQuantityDTO.getNumCnf(),
|
||||
pickedQuantityDTO.getQtaCnf(),
|
||||
pickedQuantityDTO.getQtaTot(),
|
||||
@@ -328,7 +528,7 @@ public class PickingResiViewModel {
|
||||
}
|
||||
|
||||
|
||||
public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||
public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
@@ -348,6 +548,39 @@ public class PickingResiViewModel {
|
||||
.setDataDoc(withdrawableDtbDocr.getDataDocS())
|
||||
.setIdRigaDoc(withdrawableDtbDocr.getIdRiga());
|
||||
|
||||
//TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
|
||||
MtbColr mtbColrToDispatch = withdrawableDtbDocr.getTempPickData() != null &&
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt() != null &&
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr() != null &&
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ?
|
||||
withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
||||
|
||||
if (mtbColrToDispatch != null) {
|
||||
if (UtilityString.isNullOrEmpty(mCurrentMtbColt.getCodTcol()))
|
||||
mCurrentMtbColt.setCodTcol(UtilityString.empty2null(withdrawableDtbDocr.getTempPickData().getSourceMtbColt().getCodTcol()));
|
||||
|
||||
mtbColr
|
||||
.setCodJcom(UtilityString.empty2null(mtbColrToDispatch.getCodJcom()))
|
||||
.setSerColloRif(UtilityString.empty2null(mtbColrToDispatch.getSerCollo()))
|
||||
.setNumColloRif(mtbColrToDispatch.getNumCollo())
|
||||
.setGestioneRif(UtilityString.empty2null(mtbColrToDispatch.getGestione()))
|
||||
.setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS()));
|
||||
|
||||
|
||||
if (mtbColrToDispatch.getPesoNettoKg() != null) {
|
||||
//Proporzione
|
||||
BigDecimal pesoNettoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoNettoKg()), mtbColrToDispatch.getQtaCol());
|
||||
mtbColr.setPesoNettoKg(pesoNettoKg);
|
||||
}
|
||||
|
||||
if (mtbColrToDispatch.getPesoLordoKg() != null) {
|
||||
//Proporzione
|
||||
BigDecimal pesoLordoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoLordoKg()), mtbColrToDispatch.getQtaCol());
|
||||
mtbColr.setPesoLordoKg(pesoLordoKg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||
@@ -378,7 +611,7 @@ public class PickingResiViewModel {
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setRiga(value.getMtbColr().get(value.getMtbColr().size() - 1).getRiga())
|
||||
.setUntMis(withdrawableDtbDocr.getMtbAart().getUntMis())
|
||||
.setMtbAart(withdrawableDtbDocr.getMtbAart());
|
||||
|
||||
@@ -482,6 +715,17 @@ public class PickingResiViewModel {
|
||||
});
|
||||
}
|
||||
|
||||
public void resetMatchedRows() {
|
||||
for (WithdrawableDtbDocr pickingObjectDTO : this.mPickingList.getValue()) {
|
||||
pickingObjectDTO
|
||||
.setTempPickData(null)
|
||||
.setHidden(false);
|
||||
}
|
||||
|
||||
this.mPickingList.postValue(this.mPickingList.getValue());
|
||||
this.sendFilterRemoved();
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<WithdrawableDtbDocr>> getPickingList() {
|
||||
return mPickingList;
|
||||
@@ -549,6 +793,14 @@ public class PickingResiViewModel {
|
||||
if (this.mListener != null) mListener.onRowSaved();
|
||||
}
|
||||
|
||||
private void sendFilterApplied(String newValue) {
|
||||
if (this.mListener != null) mListener.onFilterApplied(newValue);
|
||||
}
|
||||
|
||||
private void sendFilterRemoved() {
|
||||
if (this.mListener != null) mListener.onFilterRemoved();
|
||||
}
|
||||
|
||||
|
||||
public PickingResiViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
@@ -572,5 +824,9 @@ public class PickingResiViewModel {
|
||||
Date dataScad,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||
|
||||
void onFilterApplied(String newValue);
|
||||
|
||||
void onFilterRemoved();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
@@ -19,7 +20,8 @@ import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
|
||||
@@ -30,7 +32,7 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<Picking
|
||||
|
||||
private Context mContext;
|
||||
private final List<PickingResiListModel> mDataset = new ArrayList<>();
|
||||
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
|
||||
private RunnableArgss<WithdrawableDtbDocr, MtbColt> mOnItemClicked;
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
PickingResiMainListItemHeaderBinding mBinding;
|
||||
@@ -64,7 +66,7 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<Picking
|
||||
});
|
||||
}
|
||||
|
||||
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
|
||||
public void setOnItemClicked(RunnableArgss<WithdrawableDtbDocr, MtbColt> onItemClicked) {
|
||||
this.mOnItemClicked = onItemClicked;
|
||||
}
|
||||
|
||||
@@ -105,8 +107,8 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<Picking
|
||||
|
||||
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.badge1.setBackground(ResourcesCompat.getDrawable(mContext.getResources(), !pickingResiListModel.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner, null));
|
||||
holder.mBinding.qtaEvasa.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingResiListModel.isActive() ? R.color.gray_600 : R.color.green_700, null));
|
||||
|
||||
holder.mBinding.descrizione.setText(pickingResiListModel.getDescrizione());
|
||||
holder.mBinding.descrizione.setTextColor(pickingResiListModel.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
|
||||
@@ -122,7 +124,7 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<Picking
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
if (this.mOnItemClicked != null)
|
||||
this.mOnItemClicked.run(pickingResiListModel.getOriginalModel());
|
||||
this.mOnItemClicked.run(pickingResiListModel.getOriginalModel(), pickingResiListModel.getSourceMtbColt());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
|
||||
public class PickingResiListModel {
|
||||
@@ -19,6 +20,7 @@ public class PickingResiListModel {
|
||||
private boolean active;
|
||||
|
||||
private WithdrawableDtbDocr mOriginalModel;
|
||||
private MtbColt mSourceMtbColt;
|
||||
|
||||
public String getGroupTitle() {
|
||||
return groupTitle;
|
||||
@@ -100,4 +102,13 @@ public class PickingResiListModel {
|
||||
this.mOriginalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getSourceMtbColt() {
|
||||
return mSourceMtbColt;
|
||||
}
|
||||
|
||||
public PickingResiListModel setSourceMtbColt(MtbColt sourceMtbColt) {
|
||||
this.mSourceMtbColt = sourceMtbColt;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,18 @@ import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||
|
||||
public class WithdrawableDtbDocr extends DtbDocr {
|
||||
|
||||
private String gestione;
|
||||
|
||||
private List<MtbColr> withdrawRows = new ArrayList<>();
|
||||
|
||||
private PickDataDTO tempPickData;
|
||||
private MtbColt refMtbColt;
|
||||
private boolean hidden = false;
|
||||
|
||||
public WithdrawableDtbDocr() {
|
||||
super();
|
||||
}
|
||||
@@ -33,4 +38,31 @@ public class WithdrawableDtbDocr extends DtbDocr {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getRefMtbColt() {
|
||||
return refMtbColt;
|
||||
}
|
||||
|
||||
public WithdrawableDtbDocr setRefMtbColt(MtbColt refMtbColt) {
|
||||
this.refMtbColt = refMtbColt;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PickDataDTO getTempPickData() {
|
||||
return tempPickData;
|
||||
}
|
||||
|
||||
public WithdrawableDtbDocr setTempPickData(PickDataDTO tempPickData) {
|
||||
this.tempPickData = tempPickData;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public WithdrawableDtbDocr setHidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.core.Or
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.core.OrdineProduzioneListAdapter;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
@@ -117,11 +117,6 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
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());
|
||||
@@ -142,7 +137,9 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
if (errorMessage == null) errorMessage = ex.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeErrorDialog(new SpannableString(errorMessage), null, null)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -152,12 +149,6 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
mAdapter = new OrdineProduzioneListAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
|
||||
mBinding.ordineProduzioneMainList.setAdapter(mAdapter);
|
||||
@@ -208,8 +199,7 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
.distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione())
|
||||
.count();
|
||||
|
||||
DialogSimpleMessageHelper.makeInfoDialog(getActivity(),
|
||||
getText(R.string.orders).toString(),
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
|
||||
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter)
|
||||
+ "<br /><br />" +
|
||||
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)),
|
||||
@@ -224,7 +214,7 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
myIntent.putExtra("keySitArts", cacheSitArtItemID);
|
||||
getActivity().startActivity(myIntent);
|
||||
|
||||
}).show();
|
||||
}).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
|
||||
},
|
||||
|
||||
@@ -235,7 +225,9 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
if (errorMessage == null)
|
||||
errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeErrorDialog(new SpannableString(errorMessage), null, null)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
});
|
||||
|
||||
|
||||
@@ -260,4 +252,9 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
mRenderedOrderList.clear();
|
||||
mRenderedOrderList.addAll(ordini);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import javax.inject.Inject;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
@@ -32,18 +31,19 @@ import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBi
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaView;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdView;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ProdFabbisognoLineeProdFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, ProdFabbisognoLineeProdViewModel.Listener {
|
||||
public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITitledFragment, ProdFabbisognoLineeProdViewModel.Listener {
|
||||
|
||||
@Inject
|
||||
ProdFabbisognoLineeProdViewModel mViewModel;
|
||||
|
||||
private ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
private FragmentProdFabbisognoLineeProdBinding mBindings;
|
||||
|
||||
@@ -87,20 +87,16 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
|
||||
DialogAskMagazzinoProssimitaView
|
||||
.newInstance((jtbFase, startDate, endDate) -> {
|
||||
if (jtbFase == null) {
|
||||
((IPoppableActivity) getActivity()).pop();
|
||||
} else {
|
||||
// if (jtbFase == null) {
|
||||
// ((IPoppableActivity) getActivity()).pop();
|
||||
// } else {
|
||||
//Load fabbisogno
|
||||
this.mViewModel.loadFabbisogno(startDate, endDate, jtbFase.getCodJfas(), codMdep, this::startPickingActivity);
|
||||
}
|
||||
this.mViewModel.loadFabbisogno(startDate, endDate, codMdep, this::startPickingActivity);
|
||||
// }
|
||||
})
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
@@ -116,11 +112,6 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
titleText.setText(context.getText(R.string.prod_fabbisogno_linee_prod_title).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
@@ -140,12 +131,22 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
|
||||
|
||||
private void startPickingActivity(List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
List<SitArtOrdDTO> sitArtOrdDTOS = Stream.of(fabbisognoList)
|
||||
.map(x -> new SitArtOrdDTO()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setQtaOrd(x.getQtaFabbisogno())
|
||||
.setNumCnfOrd(x.getNumCnfFabbisogno())
|
||||
.setFlagEnablePickManuale(false))
|
||||
.map(x -> {
|
||||
SitArtOrdDTO sitArtOrdDTO = new SitArtOrdDTO()
|
||||
.setCodMart(x.getCodMart())
|
||||
.setCodMdep(codMdep)
|
||||
.setQtaOrd(x.getQtaFabbisogno())
|
||||
.setNumCnfOrd(x.getNumCnfFabbisogno())
|
||||
.setFlagEnablePickManuale(false);
|
||||
|
||||
sitArtOrdDTO.getExtraInfo().put("dataInizio", x.getDataInizio());
|
||||
sitArtOrdDTO.getExtraInfo().put("dataFine", x.getDataFine());
|
||||
|
||||
return sitArtOrdDTO;
|
||||
})
|
||||
.toList();
|
||||
|
||||
SpedizioneActivity.startActivity(getActivity(),
|
||||
@@ -154,9 +155,15 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
|
||||
new ArrayList<>(),
|
||||
GestioneEnum.LAVORAZIONE,
|
||||
+1,
|
||||
MtbColr.Causale.VERSAMENTO);
|
||||
MtbColr.Causale.VERSAMENTO,
|
||||
DialogRowInfoProdFabbisognoLineeProdView.class);
|
||||
|
||||
((IPoppableActivity) getActivity()).pop();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
@@ -2,14 +2,14 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
@Module(subcomponents = ProdFabbisognoLineeProdComponent.class)
|
||||
public class ProdFabbisognoLineeProdModule {
|
||||
|
||||
@Provides
|
||||
ProdFabbisognoLineeProdViewModel providesProdFabbisognoLineeProdViewModel(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdViewModel(systemRESTConsumer);
|
||||
ProdFabbisognoLineeProdViewModel providesProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdViewModel(prodFabbisognoLineeProdRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,26 +1,23 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
public class ProdFabbisognoLineeProdViewModel {
|
||||
|
||||
private final SystemRESTConsumer mSystemRESTConsumer;
|
||||
private final ProdFabbisognoLineeProdRESTConsumer mProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
public ProdFabbisognoLineeProdViewModel(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.mSystemRESTConsumer = systemRESTConsumer;
|
||||
public ProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
this.mProdFabbisognoLineeProdRESTConsumer = prodFabbisognoLineeProdRESTConsumer;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
@@ -28,105 +25,15 @@ public class ProdFabbisognoLineeProdViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void loadFabbisogno(Date startDate, Date endDate, String lineaProd, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete) {
|
||||
public void loadFabbisogno(Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
String sql = "WITH input_values AS ( " +
|
||||
" SELECT " + UtilityDB.valueToString(startDate) + " AS data_inizio, " +
|
||||
" " + UtilityDB.valueToString(endDate) + " AS data_fine, " +
|
||||
" " + UtilityDB.valueToString(lineaProd) + " AS linea_prod, " +
|
||||
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep), " +
|
||||
" withdraw_mtb_colr AS ( " +
|
||||
" SELECT cod_mart, " +
|
||||
" SUM(qta_col) as qta_col, " +
|
||||
" SUM(num_cnf) as num_cnf, " +
|
||||
" mtb_colr.data_ord, " +
|
||||
" mtb_colr.num_ord, " +
|
||||
" mtb_colr.gestione " +
|
||||
" FROM mtb_colr " +
|
||||
" INNER JOIN mtb_colt mc on mtb_colr.gestione = mc.gestione and mtb_colr.data_collo = mc.data_collo and " +
|
||||
" mtb_colr.ser_collo = mc.ser_collo and mtb_colr.num_collo = mc.num_collo " +
|
||||
" WHERE segno = -1 " +
|
||||
" GROUP BY cod_mart, " +
|
||||
" mtb_colr.data_ord, " +
|
||||
" mtb_colr.num_ord, " +
|
||||
" mtb_colr.gestione " +
|
||||
" ), " +
|
||||
" custom_mtb_colr AS (SELECT cod_mart, " +
|
||||
" sum(qta_col) AS qta_col, " +
|
||||
" sum(num_cnf) AS num_cnf, " +
|
||||
" posizione " +
|
||||
" FROM mvw_sitart_udc_det_inventario " +
|
||||
" GROUP BY cod_mart, posizione), " +
|
||||
" grouped_ord AS ( " +
|
||||
" SELECT dtb_ordr.cod_mart, " +
|
||||
" dtb_ordt.cod_jfas, " +
|
||||
" dtb_ordt.cod_mdep, " +
|
||||
" dtb_ordt.gestione, " +
|
||||
" CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) - " +
|
||||
" SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord, " +
|
||||
" SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord, " +
|
||||
" SUM(ISNULL(withdraw_mtb_colr.qta_col, 0)) AS qta_col_scaricata, " +
|
||||
" SUM(ISNULL(withdraw_mtb_colr.num_cnf, 0)) AS num_cnf_scaricata, " +
|
||||
" jrl_fase_posizioni.posizione " +
|
||||
" FROM dtb_ordr " +
|
||||
" INNER JOIN dtb_ordt on dtb_ordr.gestione = dtb_ordt.gestione AND " +
|
||||
" dtb_ordr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" dtb_ordr.num_ord = dtb_ordt.num_ord " +
|
||||
" INNER JOIN jrl_fase_posizioni ON dtb_ordt.cod_jfas = jrl_fase_posizioni.cod_jfas " +
|
||||
" LEFT OUTER JOIN withdraw_mtb_colr " +
|
||||
" ON withdraw_mtb_colr.gestione = dtb_ordt.gestione AND " +
|
||||
" withdraw_mtb_colr.num_ord = dtb_ordt.num_ord AND " +
|
||||
" withdraw_mtb_colr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" withdraw_mtb_colr.cod_mart = dtb_ordr.cod_mart " +
|
||||
" CROSS APPLY input_values " +
|
||||
" WHERE dtb_ordt.gestione = 'L' " +
|
||||
" AND flag_evaso = 'I' " +
|
||||
" AND dtb_ordr.flag_evaso_forzato = 'N' " +
|
||||
" AND flag_annulla = 'N' " +
|
||||
" AND dtb_ordt.cod_mdep = input_values.cod_mdep " +
|
||||
" AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine " +
|
||||
" AND jrl_fase_posizioni.posizione = input_values.linea_prod " +
|
||||
" GROUP BY dtb_ordr.cod_mart, dtb_ordt.cod_jfas, dtb_ordt.cod_mdep, dtb_ordt.gestione, " +
|
||||
" jrl_fase_posizioni.posizione " +
|
||||
" ), " +
|
||||
" tmp_ord AS (SELECT grouped_ord.cod_mart, " +
|
||||
" mtb_aart.unt_mis, " +
|
||||
" SUM(qta_ord) AS qta_ord, " +
|
||||
" SUM(num_cnf_ord) AS num_cnf_ord, " +
|
||||
" SUM(qta_col_scaricata) AS qta_col_scaricata, " +
|
||||
" SUM(num_cnf_scaricata) AS num_cnf_scaricata, " +
|
||||
" SUM(ISNULL(custom_mtb_colr.qta_col, 0)) AS qta_col_versata, " +
|
||||
" SUM(ISNULL(custom_mtb_colr.num_cnf, 0)) AS num_cnf_versata " +
|
||||
" " +
|
||||
" FROM grouped_ord " +
|
||||
" LEFT OUTER JOIN custom_mtb_colr " +
|
||||
" ON custom_mtb_colr.posizione = grouped_ord.posizione AND " +
|
||||
" grouped_ord.cod_mart = custom_mtb_colr.cod_mart " +
|
||||
" INNER JOIN mtb_aart ON grouped_ord.cod_mart = mtb_aart.cod_mart " +
|
||||
" CROSS APPLY input_values " +
|
||||
" GROUP BY grouped_ord.cod_mart, mtb_aart.unt_mis) " +
|
||||
" " +
|
||||
"SELECT cod_mart, " +
|
||||
" qta_ord, " +
|
||||
" num_cnf_ord, " +
|
||||
" unt_mis, " +
|
||||
" qta_col_versata, " +
|
||||
" num_cnf_versata, " +
|
||||
" qta_col_scaricata, " +
|
||||
" num_cnf_scaricata, " +
|
||||
" CASE " +
|
||||
" WHEN qta_ord - qta_col_versata - qta_col_scaricata < 0 THEN 0 " +
|
||||
" ELSE qta_ord - qta_col_versata - qta_col_scaricata END AS qta_fabbisogno, " +
|
||||
" CASE " +
|
||||
" WHEN num_cnf_ord - num_cnf_versata - num_cnf_scaricata < 0 THEN 0 " +
|
||||
" ELSE num_cnf_ord - num_cnf_versata - num_cnf_scaricata END AS num_cnf_fabbisogno " +
|
||||
"FROM tmp_ord " +
|
||||
"ORDER BY cod_mart";
|
||||
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(startDate, endDate, codMdep, jtbFasi -> {
|
||||
if (jtbFasi != null) Stream.of(jtbFasi)
|
||||
.forEach(x -> x
|
||||
.setDataInizio(startDate)
|
||||
.setDataFine(endDate));
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<ProdFabbisognoLineeProdDTO>>() {}.getType();
|
||||
this.mSystemRESTConsumer.<List<ProdFabbisognoLineeProdDTO>>processSql(sql, typeOfObjectsList, jtbFasi -> {
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run(jtbFasi);
|
||||
}, this::sendError);
|
||||
|
||||
@@ -9,19 +9,14 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -47,7 +42,7 @@ public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment impleme
|
||||
private Context mContext;
|
||||
private DialogAskMagazzinoProssimitaBinding mBindings;
|
||||
|
||||
private JtbFasi mSelectedItem;
|
||||
// private JtbFasi mSelectedItem;
|
||||
|
||||
public static DialogAskMagazzinoProssimitaView newInstance(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) {
|
||||
return new DialogAskMagazzinoProssimitaView(onItemSelected);
|
||||
@@ -82,11 +77,11 @@ public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment impleme
|
||||
mBindings.buttonConfirm.setOnClickListener(new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
if(mSelectedItem != null) {
|
||||
// if(mSelectedItem != null) {
|
||||
getDialog().dismiss();
|
||||
} else {
|
||||
FBToast.warningToast(mContext, getResources().getString(R.string.please_select_an_item), Toast.LENGTH_LONG);
|
||||
}
|
||||
// } else {
|
||||
// FBToast.warningToast(mContext, getResources().getString(R.string.please_select_an_item), Toast.LENGTH_LONG);
|
||||
// }
|
||||
}
|
||||
});
|
||||
|
||||
@@ -113,13 +108,13 @@ public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment impleme
|
||||
this.mViewModel.setListener(this);
|
||||
this.mViewModel.init(codMdep);
|
||||
|
||||
this.mViewModel.getJtbFasi().observe(getViewLifecycleOwner(), this::onPosizioniLoaded);
|
||||
// this.mViewModel.getJtbFasi().observe(getViewLifecycleOwner(), this::onPosizioniLoaded);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
mOnItemSelected.run(mSelectedItem, mViewModel.startDate, mViewModel.endDate);
|
||||
mOnItemSelected.run(null, mViewModel.startDate, mViewModel.endDate);
|
||||
}
|
||||
|
||||
private final View.OnClickListener onStartDateClickListener = new OnSingleClickListener() {
|
||||
@@ -172,16 +167,16 @@ public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment impleme
|
||||
};
|
||||
|
||||
|
||||
private void onPosizioniLoaded(List<JtbFasi> items) {
|
||||
DialogAskMagazzinoProssimitaAdapter adapter = new DialogAskMagazzinoProssimitaAdapter(mContext, items);
|
||||
|
||||
AutoCompleteTextView editTextDropdownCliente = mBindings.dropdownLineaProd;
|
||||
editTextDropdownCliente.setThreshold(0);
|
||||
editTextDropdownCliente.setAdapter(adapter);
|
||||
editTextDropdownCliente.setOnItemClickListener((parent, view, position, id) -> {
|
||||
mSelectedItem = items.get(position);
|
||||
});
|
||||
}
|
||||
// private void onPosizioniLoaded(List<JtbFasi> items) {
|
||||
// DialogAskMagazzinoProssimitaAdapter adapter = new DialogAskMagazzinoProssimitaAdapter(mContext, items);
|
||||
//
|
||||
// AutoCompleteTextView editTextDropdownCliente = mBindings.dropdownLineaProd;
|
||||
// editTextDropdownCliente.setThreshold(0);
|
||||
// editTextDropdownCliente.setAdapter(adapter);
|
||||
// editTextDropdownCliente.setOnItemClickListener((parent, view, position, id) -> {
|
||||
// mSelectedItem = items.get(position);
|
||||
// });
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
|
||||
@@ -2,10 +2,6 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_m
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -14,7 +10,6 @@ import it.integry.integrywmsnative.core.di.BindableString;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.JtbFasi;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class DialogAskMagazzinoProssimitaViewModel {
|
||||
@@ -36,7 +31,6 @@ public class DialogAskMagazzinoProssimitaViewModel {
|
||||
}
|
||||
|
||||
public void init(String codMdep) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
Calendar c = UtilityDate.getCalendarInstance();
|
||||
c.set(Calendar.DAY_OF_WEEK, c.getActualMinimum(Calendar.DAY_OF_WEEK));
|
||||
@@ -48,30 +42,32 @@ public class DialogAskMagazzinoProssimitaViewModel {
|
||||
endDate = c.getTime();
|
||||
endDateBindable.set(UtilityDate.formatDate(endDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
String sql = "SELECT DISTINCT jrl_fase_posizioni.posizione as cod_jfas, " +
|
||||
" descrizione, " +
|
||||
" jrl_fase_posizioni.cod_mdep " +
|
||||
"FROM jrl_fase_posizioni " +
|
||||
" INNER JOIN mtb_depo_posizioni mdp ON jrl_fase_posizioni.cod_mdep = mdp.cod_mdep AND " +
|
||||
" jrl_fase_posizioni.posizione = mdp.posizione " +
|
||||
"WHERE cod_jfas IN (SELECT cod_jfas FROM jtb_fasi WHERE um_prod IS NOT NULL) " +
|
||||
" AND jrl_fase_posizioni.cod_mdep = " + UtilityDB.valueToString(codMdep) + " " +
|
||||
"ORDER BY jrl_fase_posizioni.posizione";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<JtbFasi>>() {}.getType();
|
||||
this.mSystemRESTConsumer.<List<JtbFasi>>processSql(sql, typeOfObjectsList, jtbFasi -> {
|
||||
this.mJtbFasi.postValue(jtbFasi);
|
||||
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
// this.sendOnLoadingStarted();
|
||||
//
|
||||
// String sql = "SELECT DISTINCT jrl_fase_posizioni.posizione as cod_jfas, " +
|
||||
// " descrizione, " +
|
||||
// " jrl_fase_posizioni.cod_mdep " +
|
||||
// "FROM jrl_fase_posizioni " +
|
||||
// " INNER JOIN mtb_depo_posizioni mdp ON jrl_fase_posizioni.cod_mdep = mdp.cod_mdep AND " +
|
||||
// " jrl_fase_posizioni.posizione = mdp.posizione " +
|
||||
// "WHERE cod_jfas IN (SELECT cod_jfas FROM jtb_fasi WHERE um_prod IS NOT NULL) " +
|
||||
// " AND jrl_fase_posizioni.cod_mdep = " + UtilityDB.valueToString(codMdep) + " " +
|
||||
// "ORDER BY jrl_fase_posizioni.posizione";
|
||||
//
|
||||
//
|
||||
// Type typeOfObjectsList = new TypeToken<ArrayList<JtbFasi>>() {}.getType();
|
||||
// this.mSystemRESTConsumer.<List<JtbFasi>>processSql(sql, typeOfObjectsList, jtbFasi -> {
|
||||
// this.mJtbFasi.postValue(jtbFasi);
|
||||
//
|
||||
// this.sendOnLoadingEnded();
|
||||
// }, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public MutableLiveData<List<JtbFasi>> getJtbFasi() {
|
||||
return mJtbFasi;
|
||||
}
|
||||
// public MutableLiveData<List<JtbFasi>> getJtbFasi() {
|
||||
// return mJtbFasi;
|
||||
// }
|
||||
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
public class ProdFabbisognoLineeProdDTO {
|
||||
|
||||
private String codMart;
|
||||
private String codJfas;
|
||||
private BigDecimal qtaOrd;
|
||||
private BigDecimal numCnfOrd;
|
||||
private String untMis;
|
||||
@@ -12,6 +14,11 @@ public class ProdFabbisognoLineeProdDTO {
|
||||
private BigDecimal numCnfVersata;
|
||||
private BigDecimal qtaFabbisogno;
|
||||
private BigDecimal numCnfFabbisogno;
|
||||
private Date dataInizio;
|
||||
private Date dataFine;
|
||||
|
||||
public ProdFabbisognoLineeProdDTO() {
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
@@ -22,6 +29,15 @@ public class ProdFabbisognoLineeProdDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
@@ -84,4 +100,22 @@ public class ProdFabbisognoLineeProdDTO {
|
||||
this.numCnfFabbisogno = numCnfFabbisogno;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataInizio() {
|
||||
return dataInizio;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setDataInizio(Date dataInizio) {
|
||||
this.dataInizio = dataInizio;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataFine() {
|
||||
return dataFine;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setDataFine(Date dataFine) {
|
||||
this.dataFine = dataFine;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,403 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
|
||||
@Singleton
|
||||
public class ProdFabbisognoLineeProdRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
private final SystemRESTConsumer mSystemRESTConsumer;
|
||||
|
||||
public ProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.mSystemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void loadFabbisogno(Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "WITH input_values AS ( " +
|
||||
" SELECT " + UtilityDB.valueToString(startDate) + " AS data_inizio, " +
|
||||
" " + UtilityDB.valueToString(endDate) + " AS data_fine, " +
|
||||
// " " + UtilityDB.valueToString(lineaProd) + " AS linea_prod, " +
|
||||
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep)," +
|
||||
" withdraw_mtb_colr AS ( " +
|
||||
" SELECT cod_mart, " +
|
||||
" SUM(ISNULL(qta_col, 0)) as qta_col, " +
|
||||
" SUM(ISNULL(num_cnf, 0)) as num_cnf, " +
|
||||
" mtb_colr.data_ord, " +
|
||||
" mtb_colr.num_ord, " +
|
||||
" mtb_colr.gestione " +
|
||||
" FROM mtb_colr " +
|
||||
" INNER JOIN mtb_colt mc on mtb_colr.gestione = mc.gestione and mtb_colr.data_collo = mc.data_collo and " +
|
||||
" mtb_colr.ser_collo = mc.ser_collo and mtb_colr.num_collo = mc.num_collo " +
|
||||
" WHERE segno = -1 " +
|
||||
" AND cod_dtip IS NULL " +
|
||||
" GROUP BY cod_mart, " +
|
||||
" mtb_colr.data_ord, " +
|
||||
" mtb_colr.num_ord, " +
|
||||
" mtb_colr.gestione " +
|
||||
" ), " +
|
||||
" custom_mtb_colr AS (SELECT cod_mart, " +
|
||||
" SUM(qta_col) AS qta_col, " +
|
||||
" SUM(num_cnf) AS num_cnf, " +
|
||||
" posizione " +
|
||||
" FROM mvw_sitart_udc_det_inventario " +
|
||||
" GROUP BY cod_mart, posizione), " +
|
||||
" grouped_ord AS ( " +
|
||||
" SELECT dtb_ordr.cod_mart, " +
|
||||
" dtb_ordt.cod_jfas, " +
|
||||
" dtb_ordt.cod_mdep, " +
|
||||
" dtb_ordt.gestione, " +
|
||||
" CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) - " +
|
||||
" SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord, " +
|
||||
" SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord, " +
|
||||
" SUM(ISNULL(withdraw_mtb_colr.qta_col, 0)) AS qta_col_scaricata, " +
|
||||
" SUM(ISNULL(withdraw_mtb_colr.num_cnf, 0)) AS num_cnf_scaricata " +
|
||||
" FROM dtb_ordr " +
|
||||
" INNER JOIN dtb_ordt on dtb_ordr.gestione = dtb_ordt.gestione AND " +
|
||||
" dtb_ordr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" dtb_ordr.num_ord = dtb_ordt.num_ord " +
|
||||
" LEFT OUTER JOIN withdraw_mtb_colr " +
|
||||
" ON withdraw_mtb_colr.gestione = dtb_ordt.gestione AND " +
|
||||
" withdraw_mtb_colr.num_ord = dtb_ordt.num_ord AND " +
|
||||
" withdraw_mtb_colr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" withdraw_mtb_colr.cod_mart = dtb_ordr.cod_mart " +
|
||||
" CROSS APPLY input_values " +
|
||||
" WHERE dtb_ordt.gestione = 'L' " +
|
||||
" AND flag_evaso = 'I' " +
|
||||
" AND flag_evaso_prod = 'I' " +
|
||||
" AND dtb_ordr.flag_evaso_forzato = 'N' " +
|
||||
" AND flag_annulla = 'N' " +
|
||||
" AND dtb_ordt.cod_mdep = input_values.cod_mdep " +
|
||||
" AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine " +
|
||||
" GROUP BY dtb_ordr.cod_mart, dtb_ordt.cod_jfas, dtb_ordt.cod_mdep, dtb_ordt.gestione " +
|
||||
" ), " +
|
||||
" tmp_ord AS (SELECT grouped_ord.cod_mart, " +
|
||||
" mtb_aart.unt_mis, " +
|
||||
" grouped_ord.cod_jfas, " +
|
||||
" SUM(qta_ord) - SUM(qta_col_scaricata) AS qta_ord, " +
|
||||
" SUM(num_cnf_ord) - SUM(num_cnf_scaricata) AS num_cnf_ord " +
|
||||
" FROM grouped_ord " +
|
||||
" INNER JOIN mtb_aart ON grouped_ord.cod_mart = mtb_aart.cod_mart " +
|
||||
" CROSS APPLY input_values " +
|
||||
" GROUP BY grouped_ord.cod_mart, mtb_aart.unt_mis, grouped_ord.cod_jfas " +
|
||||
" ), " +
|
||||
" ord_without_positioned_mtb_colt AS ( " +
|
||||
" SELECT tmp_ord.cod_mart, " +
|
||||
" tmp_ord.cod_jfas, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.posizione, tmp_ord.cod_jfas) AS posizione, " +
|
||||
" unt_mis, " +
|
||||
" qta_ord AS qta_ord_calc, " +
|
||||
" num_cnf_ord AS num_cnf_ord_calc, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " +
|
||||
" qta_ord - ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_fabbisogno, " +
|
||||
" num_cnf_ord - ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_fabbisogno " +
|
||||
" FROM tmp_ord " +
|
||||
" INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " +
|
||||
" AND tmp_ord.cod_jfas = jrl_fase_posizioni.posizione " +
|
||||
" LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " +
|
||||
" ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " +
|
||||
" tmp_ord.cod_jfas = custom_mtb_colr_on_linea.posizione " +
|
||||
" " +
|
||||
" UNION ALL " +
|
||||
" " +
|
||||
" SELECT DISTINCT tmp_ord.cod_mart, " +
|
||||
" null AS cod_jfas, " +
|
||||
" jrl_fase_posizioni.posizione, " +
|
||||
" unt_mis, " +
|
||||
" 0 AS qta_ord_calc, " +
|
||||
" 0 AS num_cnf_ord_calc, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " +
|
||||
" 0 AS qta_fabbisogno, " +
|
||||
" 0 AS num_cnf_fabbisogno " +
|
||||
" FROM tmp_ord " +
|
||||
" INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " +
|
||||
" AND tmp_ord.cod_jfas <> jrl_fase_posizioni.posizione " +
|
||||
" " +
|
||||
" " +
|
||||
" LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " +
|
||||
" ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " +
|
||||
" jrl_fase_posizioni.posizione = custom_mtb_colr_on_linea.posizione " +
|
||||
" ) " +
|
||||
"SELECT cod_mart, " +
|
||||
" unt_mis, " +
|
||||
" input_values.data_inizio, " +
|
||||
" input_values.data_fine, " +
|
||||
" SUM(qta_ord_calc) AS qta_ord, " +
|
||||
" SUM(num_cnf_ord_calc) AS num_cnf_ord, " +
|
||||
" SUM(qta_gia_posizionata) AS qta_col_versata, " +
|
||||
" SUM(num_cnf_gia_posizionata) AS num_cnf_versata, " +
|
||||
" SUM(qta_ord_calc - qta_gia_posizionata) AS qta_fabbisogno, " +
|
||||
" SUM(num_cnf_ord_calc - num_cnf_gia_posizionata) AS num_cnf_fabbisogno " +
|
||||
"FROM ord_without_positioned_mtb_colt " +
|
||||
"CROSS APPLY input_values " +
|
||||
"GROUP BY cod_mart, unt_mis, input_values.data_inizio, input_values.data_fine " +
|
||||
"HAVING SUM(qta_ord_calc - qta_gia_posizionata) > 0 AND SUM(num_cnf_ord_calc - num_cnf_gia_posizionata) > 0 " +
|
||||
"ORDER BY cod_mart";
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Query splittata per cod_jfas (più pesante)
|
||||
WITH input_values AS (SELECT '2021-02-15' AS data_inizio,
|
||||
'2021-02-28' AS data_fine,
|
||||
--'SC06' AS linea_prod,
|
||||
'34' AS cod_mdep),
|
||||
withdraw_mtb_colr AS (
|
||||
SELECT cod_mart,
|
||||
SUM(ISNULL(qta_col, 0)) as qta_col,
|
||||
SUM(ISNULL(num_cnf, 0)) as num_cnf,
|
||||
mtb_colr.data_ord,
|
||||
mtb_colr.num_ord,
|
||||
mtb_colr.gestione
|
||||
FROM mtb_colr
|
||||
INNER JOIN mtb_colt mc on mtb_colr.gestione = mc.gestione and mtb_colr.data_collo = mc.data_collo and
|
||||
mtb_colr.ser_collo = mc.ser_collo and mtb_colr.num_collo = mc.num_collo
|
||||
WHERE segno = -1
|
||||
and cod_dtip IS NULL
|
||||
GROUP BY cod_mart,
|
||||
mtb_colr.data_ord,
|
||||
mtb_colr.num_ord,
|
||||
mtb_colr.gestione
|
||||
),
|
||||
custom_mtb_colr AS (SELECT cod_mart,
|
||||
SUM(qta_col) AS qta_col,
|
||||
SUM(num_cnf) AS num_cnf,
|
||||
posizione
|
||||
FROM mvw_sitart_udc_det_inventario
|
||||
GROUP BY cod_mart, posizione),
|
||||
grouped_ord AS (
|
||||
SELECT dtb_ordr.cod_mart,
|
||||
dtb_ordt.cod_jfas,
|
||||
dtb_ordt.cod_mdep,
|
||||
dtb_ordt.gestione,
|
||||
CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) -
|
||||
SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord,
|
||||
SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord,
|
||||
SUM(ISNULL(withdraw_mtb_colr.qta_col, 0)) AS qta_col_scaricata,
|
||||
SUM(ISNULL(withdraw_mtb_colr.num_cnf, 0)) AS num_cnf_scaricata
|
||||
FROM dtb_ordr
|
||||
INNER JOIN dtb_ordt on dtb_ordr.gestione = dtb_ordt.gestione AND
|
||||
dtb_ordr.data_ord = dtb_ordt.data_ord AND
|
||||
dtb_ordr.num_ord = dtb_ordt.num_ord
|
||||
LEFT OUTER JOIN withdraw_mtb_colr
|
||||
ON withdraw_mtb_colr.gestione = dtb_ordt.gestione AND
|
||||
withdraw_mtb_colr.num_ord = dtb_ordt.num_ord AND
|
||||
withdraw_mtb_colr.data_ord = dtb_ordt.data_ord AND
|
||||
withdraw_mtb_colr.cod_mart = dtb_ordr.cod_mart
|
||||
CROSS APPLY input_values
|
||||
WHERE dtb_ordt.gestione = 'L'
|
||||
AND flag_evaso = 'I'
|
||||
AND dtb_ordr.flag_evaso_forzato = 'N'
|
||||
AND flag_annulla = 'N'
|
||||
AND dtb_ordt.cod_mdep = input_values.cod_mdep
|
||||
AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine
|
||||
GROUP BY dtb_ordr.cod_mart, dtb_ordt.cod_jfas, dtb_ordt.cod_mdep, dtb_ordt.gestione
|
||||
),
|
||||
tmp_ord AS (SELECT grouped_ord.cod_mart,
|
||||
mtb_aart.unt_mis,
|
||||
grouped_ord.cod_jfas,
|
||||
SUM(qta_ord) - SUM(qta_col_scaricata) AS qta_ord,
|
||||
SUM(num_cnf_ord) - SUM(num_cnf_scaricata) AS num_cnf_ord
|
||||
FROM grouped_ord
|
||||
INNER JOIN mtb_aart ON grouped_ord.cod_mart = mtb_aart.cod_mart
|
||||
CROSS APPLY input_values
|
||||
GROUP BY grouped_ord.cod_mart, mtb_aart.unt_mis, grouped_ord.cod_jfas
|
||||
),
|
||||
ord_without_positioned_mtb_colt AS (
|
||||
SELECT tmp_ord.cod_mart,
|
||||
tmp_ord.cod_jfas,
|
||||
ISNULL(custom_mtb_colr_on_linea.posizione, tmp_ord.cod_jfas) AS posizione,
|
||||
unt_mis,
|
||||
qta_ord AS qta_ord_calc,
|
||||
num_cnf_ord AS num_cnf_ord_calc,
|
||||
ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata,
|
||||
ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata,
|
||||
qta_ord - ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_fabbisogno,
|
||||
num_cnf_ord - ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_fabbisogno
|
||||
FROM tmp_ord
|
||||
INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas
|
||||
AND tmp_ord.cod_jfas = jrl_fase_posizioni.posizione
|
||||
LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea
|
||||
ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND
|
||||
tmp_ord.cod_jfas = custom_mtb_colr_on_linea.posizione
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT DISTINCT tmp_ord.cod_mart,
|
||||
null AS cod_jfas,
|
||||
jrl_fase_posizioni.posizione,
|
||||
unt_mis,
|
||||
0 AS qta_ord_calc,
|
||||
0 AS num_cnf_ord_calc,
|
||||
ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata,
|
||||
ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata,
|
||||
0 AS qta_fabbisogno,
|
||||
0 AS num_cnf_fabbisogno
|
||||
FROM tmp_ord
|
||||
INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas
|
||||
AND tmp_ord.cod_jfas <> jrl_fase_posizioni.posizione
|
||||
|
||||
|
||||
LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea
|
||||
ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND
|
||||
jrl_fase_posizioni.posizione = custom_mtb_colr_on_linea.posizione
|
||||
)
|
||||
SELECT cod_mart,
|
||||
cod_jfas,
|
||||
posizione,
|
||||
unt_mis,
|
||||
qta_ord_calc AS qta_ord,
|
||||
num_cnf_ord_calc AS num_cnf_ord,
|
||||
qta_gia_posizionata AS qta_col_versata,
|
||||
num_cnf_gia_posizionata AS num_cnf_versata,
|
||||
qta_ord_calc - qta_gia_posizionata AS qta_fabbisogno,
|
||||
num_cnf_ord_calc - num_cnf_gia_posizionata AS num_cnf_fabbisogno
|
||||
FROM ord_without_positioned_mtb_colt
|
||||
|
||||
ORDER BY cod_mart, posizione
|
||||
* */
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<ProdFabbisognoLineeProdDTO>>() {}.getType();
|
||||
this.mSystemRESTConsumer.processSql(sql, typeOfObjectsList, onComplete, onFailed);
|
||||
}
|
||||
|
||||
|
||||
public void loadFabbisogno(String codMart, Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "WITH input_values AS ( " +
|
||||
" SELECT " + UtilityDB.valueToString(startDate) + " AS data_inizio, " +
|
||||
" " + UtilityDB.valueToString(endDate) + " AS data_fine, " +
|
||||
// " " + UtilityDB.valueToString(lineaProd) + " AS linea_prod, " +
|
||||
" " + UtilityDB.valueToString(codMdep) + " AS cod_mdep)," +
|
||||
" withdraw_mtb_colr AS ( " +
|
||||
" SELECT cod_mart, " +
|
||||
" SUM(ISNULL(qta_col, 0)) as qta_col, " +
|
||||
" SUM(ISNULL(num_cnf, 0)) as num_cnf, " +
|
||||
" mtb_colr.data_ord, " +
|
||||
" mtb_colr.num_ord, " +
|
||||
" mtb_colr.gestione " +
|
||||
" FROM mtb_colr " +
|
||||
" INNER JOIN mtb_colt mc on mtb_colr.gestione = mc.gestione and mtb_colr.data_collo = mc.data_collo and " +
|
||||
" mtb_colr.ser_collo = mc.ser_collo and mtb_colr.num_collo = mc.num_collo " +
|
||||
" WHERE segno = -1 " +
|
||||
" AND cod_dtip IS NULL " +
|
||||
" GROUP BY cod_mart, " +
|
||||
" mtb_colr.data_ord, " +
|
||||
" mtb_colr.num_ord, " +
|
||||
" mtb_colr.gestione " +
|
||||
" ), " +
|
||||
" custom_mtb_colr AS (SELECT cod_mart, " +
|
||||
" SUM(qta_col) AS qta_col, " +
|
||||
" SUM(num_cnf) AS num_cnf, " +
|
||||
" posizione " +
|
||||
" FROM mvw_sitart_udc_det_inventario " +
|
||||
" GROUP BY cod_mart, posizione), " +
|
||||
" grouped_ord AS ( " +
|
||||
" SELECT dtb_ordr.cod_mart, " +
|
||||
" dtb_ordt.cod_jfas, " +
|
||||
" dtb_ordt.cod_mdep, " +
|
||||
" dtb_ordt.gestione, " +
|
||||
" CONVERT(NUMERIC(15, 5), SUM(dtb_ordr.qta_ord * dtb_ordr.rap_conv) - " +
|
||||
" SUM(dtb_ordr.qta_evasa * dtb_ordr.rap_conv)) AS qta_ord, " +
|
||||
" SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa) AS num_cnf_ord, " +
|
||||
" SUM(ISNULL(withdraw_mtb_colr.qta_col, 0)) AS qta_col_scaricata, " +
|
||||
" SUM(ISNULL(withdraw_mtb_colr.num_cnf, 0)) AS num_cnf_scaricata " +
|
||||
" FROM dtb_ordr " +
|
||||
" INNER JOIN dtb_ordt on dtb_ordr.gestione = dtb_ordt.gestione AND " +
|
||||
" dtb_ordr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" dtb_ordr.num_ord = dtb_ordt.num_ord " +
|
||||
" LEFT OUTER JOIN withdraw_mtb_colr " +
|
||||
" ON withdraw_mtb_colr.gestione = dtb_ordt.gestione AND " +
|
||||
" withdraw_mtb_colr.num_ord = dtb_ordt.num_ord AND " +
|
||||
" withdraw_mtb_colr.data_ord = dtb_ordt.data_ord AND " +
|
||||
" withdraw_mtb_colr.cod_mart = dtb_ordr.cod_mart " +
|
||||
" CROSS APPLY input_values " +
|
||||
" WHERE dtb_ordt.gestione = 'L' " +
|
||||
" AND flag_evaso = 'I' " +
|
||||
" AND dtb_ordr.flag_evaso_forzato = 'N' " +
|
||||
" AND flag_annulla = 'N' " +
|
||||
" AND dtb_ordt.cod_mdep = input_values.cod_mdep " +
|
||||
" AND dtb_ordt.data_ord BETWEEN input_values.data_inizio AND input_values.data_fine " +
|
||||
" GROUP BY dtb_ordr.cod_mart, dtb_ordt.cod_jfas, dtb_ordt.cod_mdep, dtb_ordt.gestione " +
|
||||
" ), " +
|
||||
" tmp_ord AS (SELECT grouped_ord.cod_mart, " +
|
||||
" mtb_aart.unt_mis, " +
|
||||
" grouped_ord.cod_jfas, " +
|
||||
" SUM(qta_ord) - SUM(qta_col_scaricata) AS qta_ord, " +
|
||||
" SUM(num_cnf_ord) - SUM(num_cnf_scaricata) AS num_cnf_ord " +
|
||||
" FROM grouped_ord " +
|
||||
" INNER JOIN mtb_aart ON grouped_ord.cod_mart = mtb_aart.cod_mart " +
|
||||
" CROSS APPLY input_values " +
|
||||
" GROUP BY grouped_ord.cod_mart, mtb_aart.unt_mis, grouped_ord.cod_jfas " +
|
||||
" ), " +
|
||||
" ord_without_positioned_mtb_colt AS ( " +
|
||||
" SELECT tmp_ord.cod_mart, " +
|
||||
" tmp_ord.cod_jfas, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.posizione, tmp_ord.cod_jfas) AS posizione, " +
|
||||
" unt_mis, " +
|
||||
" qta_ord AS qta_ord_calc, " +
|
||||
" num_cnf_ord AS num_cnf_ord_calc, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " +
|
||||
" qta_ord - ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_fabbisogno, " +
|
||||
" num_cnf_ord - ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_fabbisogno " +
|
||||
" FROM tmp_ord " +
|
||||
" INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " +
|
||||
" AND tmp_ord.cod_jfas = jrl_fase_posizioni.posizione " +
|
||||
" LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " +
|
||||
" ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " +
|
||||
" tmp_ord.cod_jfas = custom_mtb_colr_on_linea.posizione " +
|
||||
" " +
|
||||
" UNION ALL " +
|
||||
" " +
|
||||
" SELECT DISTINCT tmp_ord.cod_mart, " +
|
||||
" null AS cod_jfas, " +
|
||||
" jrl_fase_posizioni.posizione, " +
|
||||
" unt_mis, " +
|
||||
" 0 AS qta_ord_calc, " +
|
||||
" 0 AS num_cnf_ord_calc, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.qta_col, 0) AS qta_gia_posizionata, " +
|
||||
" ISNULL(custom_mtb_colr_on_linea.num_cnf, 0) AS num_cnf_gia_posizionata, " +
|
||||
" 0 AS qta_fabbisogno, " +
|
||||
" 0 AS num_cnf_fabbisogno " +
|
||||
" FROM tmp_ord " +
|
||||
" INNER JOIN jrl_fase_posizioni ON tmp_ord.cod_jfas = jrl_fase_posizioni.cod_jfas " +
|
||||
" AND tmp_ord.cod_jfas <> jrl_fase_posizioni.posizione " +
|
||||
" " +
|
||||
" " +
|
||||
" LEFT OUTER JOIN custom_mtb_colr custom_mtb_colr_on_linea " +
|
||||
" ON tmp_ord.cod_mart = custom_mtb_colr_on_linea.cod_mart AND " +
|
||||
" jrl_fase_posizioni.posizione = custom_mtb_colr_on_linea.posizione " +
|
||||
" ) " +
|
||||
"SELECT DISTINCT cod_mart, " +
|
||||
" unt_mis, " +
|
||||
" cod_jfas, " +
|
||||
" input_values.data_inizio, " +
|
||||
" input_values.data_fine " +
|
||||
"FROM ord_without_positioned_mtb_colt " +
|
||||
"CROSS APPLY input_values " +
|
||||
"WHERE cod_mart = " + UtilityDB.valueToString(codMart) + " " +
|
||||
"GROUP BY cod_mart, unt_mis, cod_jfas, input_values.data_inizio, input_values.data_fine " +
|
||||
"HAVING SUM(qta_ord_calc - qta_gia_posizionata) > 0 AND SUM(num_cnf_ord_calc - num_cnf_gia_posizionata) > 0 " +
|
||||
"ORDER BY cod_mart";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<ProdFabbisognoLineeProdDTO>>() {}.getType();
|
||||
this.mSystemRESTConsumer.processSql(sql, typeOfObjectsList, onComplete, onFailed);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -29,7 +29,7 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr
|
||||
private ProdRecuperoMaterialeViewModel mViewmodel;
|
||||
private ProdRecuperoMaterialeHelper mHelper;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
public ProdRecuperoMaterialeFragment() {
|
||||
// Required empty public constructor
|
||||
@@ -72,12 +72,6 @@ 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) {
|
||||
@@ -86,4 +80,8 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,10 +42,10 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuper
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
|
||||
|
||||
public class ProdRecuperoMaterialeViewModel {
|
||||
|
||||
@@ -369,7 +369,8 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
};
|
||||
|
||||
if (sourceMtbColt != null) saveRunnable.run(sourceMtbColt, false);
|
||||
else DialogScanOrCreateLU.make(mContext, true, false, saveRunnable).show();
|
||||
else DialogScanOrCreateLUView.newInstance(true, false, saveRunnable)
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
|
||||
}
|
||||
|
||||
@@ -386,13 +387,13 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
}, ex -> {
|
||||
progress.dismiss();
|
||||
String errorMessage = ex.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
mContext,
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
new SpannableString(errorMessage),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
onComplete).show();
|
||||
onComplete)
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
@@ -402,7 +403,9 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
} else {
|
||||
progress.dismiss();
|
||||
String errorMessage = "Nessuna stampante configurata";
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, onComplete).show();
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString(errorMessage), null, onComplete)
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||
|
||||
@@ -26,7 +26,7 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
private ProdVersamentoMaterialViewModel mViewmodel;
|
||||
private ProdVersamentoMaterialHelper mHelper;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
public ProdVersamentoMaterialeFragment() {
|
||||
// Required empty public constructor
|
||||
@@ -87,7 +87,7 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.Observable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -32,7 +33,7 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.FragmentChooseOrdsLavFromListItemModelBinding;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrdsLavFromListAdapter.ViewHolder> {
|
||||
|
||||
@@ -57,11 +58,12 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
|
||||
|
||||
private void onItemChecked(CheckableOrdineLavoro itemModel) {
|
||||
if (itemModel.isChecked() && itemModel.getItem().getOrdineLav().getHrNum() <= 0){
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
DialogSimpleMessageView.makeWarningDialog(
|
||||
new SpannableString(Html.fromHtml("Nessuna risorsa umana registrata per l'ordine selezionato! <br> Per una corretta suddivisione delle quantità registra le risorse.")),
|
||||
null, () -> {
|
||||
itemModel.getChecked().set(false);
|
||||
}).show();
|
||||
})
|
||||
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag");
|
||||
return;
|
||||
}
|
||||
if (!itemModel.isChecked()) {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -44,14 +44,14 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavo
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
|
||||
|
||||
|
||||
public class ProdVersamentoMaterialViewModel {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private FragmentProdVersamentoMaterialeBinding mBinding;
|
||||
private ProdVersamentoMaterialHelper mHelper;
|
||||
@@ -62,7 +62,7 @@ public class ProdVersamentoMaterialViewModel {
|
||||
public MtbColr mMtbColr;
|
||||
|
||||
|
||||
public void init(Activity context, FragmentProdVersamentoMaterialeBinding binding, ProdVersamentoMaterialHelper helper, Runnable onVersamentoCompleted) {
|
||||
public void init(FragmentActivity context, FragmentProdVersamentoMaterialeBinding binding, ProdVersamentoMaterialHelper helper, Runnable onVersamentoCompleted) {
|
||||
mContext = context;
|
||||
mBinding = binding;
|
||||
mHelper = helper;
|
||||
@@ -75,7 +75,7 @@ public class ProdVersamentoMaterialViewModel {
|
||||
mMtbColr = mtbColr;
|
||||
mBinding.descrArt.setText(mtbColr.getDescrizione());
|
||||
mBinding.codArt.setText(mtbColr.getCodMart());
|
||||
mBinding.batch.setText(mtbColr.getPartitaMag() + ((mtbColr.getMtbPartitaMag() != null) ? " - "+ mtbColr.getMtbPartitaMag().getDescrizione() : ""));
|
||||
mBinding.batch.setText(mtbColr.getPartitaMag() + ((mtbColr.getMtbPartitaMag() != null) ? " - " + mtbColr.getMtbPartitaMag().getDescrizione() : ""));
|
||||
if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
String text = UtilityNumber.decimalToString(mtbColr.getQtaCol());
|
||||
|
||||
@@ -90,26 +90,28 @@ public class ProdVersamentoMaterialViewModel {
|
||||
}
|
||||
|
||||
public void openLU() {
|
||||
DialogScanOrCreateLU.make(mContext, false, false, true, false, (mtbColt, created) -> {
|
||||
DialogScanOrCreateLUView.newInstance(false, false, true, false, (mtbColt, created) -> {
|
||||
if (mtbColt == null) {
|
||||
((IPoppableActivity) mContext).pop();
|
||||
} else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE || mtbColt.getGestioneEnum() == GestioneEnum.VENDITA) && mtbColt.getSegno().equals(+1)) {
|
||||
|
||||
if (mtbColt.getMtbColr() == null || mtbColt.getMtbColr().size() == 0) {
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
DialogSimpleMessageView.makeWarningDialog(
|
||||
new SpannableString(Html.fromHtml("E' stata scansionata una UL già vuota")),
|
||||
null, this::openLU).show();
|
||||
null, this::openLU)
|
||||
.show((mContext).getSupportFragmentManager(), "tag");
|
||||
|
||||
} else {
|
||||
setMtbColt(mtbColt);
|
||||
choosePosition();
|
||||
}
|
||||
} else {
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(Html.fromHtml("Sono accettate solamente UL di <b>Acquisto</b> o <b>Lavorazione</b> di <b>CARICO</b>")),
|
||||
null, this::openLU).show();
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString(Html.fromHtml("Sono accettate solamente UL di <b>Acquisto</b> o <b>Lavorazione</b> di <b>CARICO</b>")),
|
||||
null, this::openLU)
|
||||
.show((mContext).getSupportFragmentManager(), "tag");
|
||||
}
|
||||
}).show();
|
||||
}).show(mContext.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
private void choosePosition() {
|
||||
@@ -123,28 +125,36 @@ public class ProdVersamentoMaterialViewModel {
|
||||
createColloScarico(mtbDepoPosizione);
|
||||
} else {
|
||||
if (mtbColt == null || mtbColt.get() == null || mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size() <= 0) {
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")),
|
||||
null, this::openLU).show();
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")),
|
||||
null, this::openLU)
|
||||
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag");
|
||||
return;
|
||||
} else if (mtbColt.get().getMtbColr().size() > 1) {
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(Html.fromHtml("Il collo selezionato contiene più articoli, solo il primo verrà versato in questa sessione. <br> Per versare i colli restanti ripetere l'operazione di versamento.")),
|
||||
null, () -> {
|
||||
cyclicGetOrdiniLavByCollo(mtbColt.get().getMtbColr().iterator(), mtbDepoPosizione);
|
||||
}).show();
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString(Html.fromHtml("Il collo selezionato contiene più articoli, solo il primo verrà versato in questa sessione. <br> Per versare i colli restanti ripetere l'operazione di versamento.")),
|
||||
null, () -> {
|
||||
cyclicGetOrdiniLavByCollo(mtbColt.get().getMtbColr().iterator(), mtbDepoPosizione);
|
||||
})
|
||||
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag");
|
||||
return;
|
||||
|
||||
}
|
||||
MesRESTConsumer.getOrdiniLavorazioneMateriale(mtbDepoPosizione.getPosizione(), getIdMaterialeFromCollo(mtbColt.get()), ordini -> richiediOrdiniPerVersamento(ordini, mtbDepoPosizione), e -> DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(Html.fromHtml(e.getMessage())),
|
||||
null, this::openLU).show());
|
||||
MesRESTConsumer.getOrdiniLavorazioneMateriale(
|
||||
mtbDepoPosizione.getPosizione(),
|
||||
getIdMaterialeFromCollo(mtbColt.get()),
|
||||
ordini -> richiediOrdiniPerVersamento(ordini, mtbDepoPosizione),
|
||||
e -> DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(e.getMessage())),
|
||||
null,
|
||||
this::openLU)
|
||||
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"));
|
||||
}
|
||||
} else {
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(Html.fromHtml("Si è verificato un errore. Riprovare")),
|
||||
null, this::openLU).show();
|
||||
DialogSimpleMessageView
|
||||
.makeWarningDialog(new SpannableString(Html.fromHtml("Si è verificato un errore. Riprovare")),
|
||||
null, this::openLU)
|
||||
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,8 +253,8 @@ public class ProdVersamentoMaterialViewModel {
|
||||
richiediOrdiniPerVersamento(ordini, mtbDepoPosizione);
|
||||
}
|
||||
}
|
||||
, e -> DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(Html.fromHtml(e.getMessage())),
|
||||
null, this::openLU).show());
|
||||
, e -> DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(e.getMessage())),
|
||||
null, this::openLU)
|
||||
.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "tag"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrd
|
||||
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
||||
|
||||
@@ -135,7 +135,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
||||
private void deleteArticolo(ArticoloOrdine articoloOrdine) {
|
||||
String text = "Stai per eliminare l'articolo <b> " + articoloOrdine.getDescrizione() + "</b> dall'ordine, <br> sei sicuro?";
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> {
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> {
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
mhelper.removeArticoloFromOrdine(articoloOrdine, () -> {
|
||||
progress.dismiss();
|
||||
@@ -146,7 +146,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
|
||||
runOnUiThread(() -> UtilityExceptions.defaultException(this, e));
|
||||
});
|
||||
}), () -> {
|
||||
}).show();
|
||||
}).show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
private void handleException(Exception ex) {
|
||||
|
||||
@@ -47,7 +47,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLis
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment {
|
||||
|
||||
@@ -55,7 +55,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
private OrdineAcquistoPvHelper mHelper;
|
||||
private Griglia mGriglia;
|
||||
private OrdineAcquistoPvOpenListAdapter mAdapter;
|
||||
private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
|
||||
private final List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
|
||||
private boolean mRedirectToNewOrder = true;
|
||||
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
@@ -122,11 +122,6 @@ 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);
|
||||
@@ -147,7 +142,9 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
}), (e) -> {
|
||||
progress.dismiss();
|
||||
String errorMessage = e.getMessage();
|
||||
getActivity().runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show());
|
||||
getActivity().runOnUiThread(() -> DialogSimpleMessageView
|
||||
.makeErrorDialog(new SpannableString(errorMessage), null, null)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag"));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -203,12 +200,12 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
private void deleteOrdine(Ordine ordine) {
|
||||
String text = "Stai per eliminare un ordine sei sicuro?";
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(getActivity(), new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> {
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> {
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
mHelper.deleteOrder(ordine, () -> {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
progress.dismiss();
|
||||
Toast.makeText(getActivity(), "Ordine eliminato!", Toast.LENGTH_SHORT);
|
||||
Toast.makeText(getActivity(), "Ordine eliminato!", Toast.LENGTH_SHORT).show();
|
||||
fetchOrders();
|
||||
});
|
||||
}, e -> {
|
||||
@@ -216,7 +213,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e));
|
||||
});
|
||||
}), () -> {
|
||||
}).show();
|
||||
}).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
private void refreshRenderedOrdini(List<OrdineWrapper> ordini) {
|
||||
@@ -238,11 +235,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
@@ -259,4 +251,9 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
onPreDestroy.run();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import android.view.inputmethod.EditorInfo;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.fragment.app.Fragment;
|
||||
@@ -59,11 +60,11 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
|
||||
|
||||
public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener {
|
||||
@@ -215,11 +216,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
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();
|
||||
@@ -250,7 +246,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
|
||||
public void setUIToForn() {
|
||||
mBinding.rettificaGiacenzeFornCheckBox.setChecked(true);
|
||||
mBinding.rettificaGiacenzeFornLayout.setBackground(getActivity().getResources().getDrawable(R.drawable.circular_background_left));
|
||||
mBinding.rettificaGiacenzeFornLayout.setBackground(ResourcesCompat.getDrawable(getActivity().getResources(), R.drawable.circular_background_left, null));
|
||||
mBinding.rettificaGiacenzeFornLayout.setBackgroundTintList(ColorStateList.valueOf(getActivity().getResources().getColor(R.color.alpha_blue_500)));
|
||||
|
||||
mBinding.rettificaGiacenzeArtIntCheckBox.setChecked(false);
|
||||
@@ -261,7 +257,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
|
||||
public void setUIToIntArt() {
|
||||
mBinding.rettificaGiacenzeArtIntCheckBox.setChecked(true);
|
||||
mBinding.rettificaGiacenzeArtIntLayout.setBackground(getActivity().getResources().getDrawable(R.drawable.circular_background_left));
|
||||
mBinding.rettificaGiacenzeArtIntLayout.setBackground(ResourcesCompat.getDrawable(getActivity().getResources(), R.drawable.circular_background_left, null));
|
||||
mBinding.rettificaGiacenzeArtIntLayout.setBackgroundTintList(ColorStateList.valueOf(getActivity().getResources().getColor(R.color.alpha_blue_500)));
|
||||
|
||||
mBinding.rettificaGiacenzeFornCheckBox.setChecked(false);
|
||||
@@ -333,13 +329,13 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
|
||||
@Override
|
||||
public void onLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete) {
|
||||
DialogScanOrCreateLU.make(getActivity(), true, false, (mtbColt, created) -> {
|
||||
DialogScanOrCreateLUView.newInstance(true, false, (mtbColt, created) -> {
|
||||
if (mtbColt == null) {
|
||||
((IPoppableActivity) getActivity()).pop();
|
||||
} else {
|
||||
onComplete.run(mtbColt, created);
|
||||
}
|
||||
}).show();
|
||||
}).show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -364,12 +360,12 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(getActivity(),
|
||||
new SpannableString(text),
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -475,29 +471,31 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
public void onLUSuccessullyPrinted() {
|
||||
Resources res = getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(getActivity(), res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||
DialogSimpleMessageHelper.makeInfoDialog(
|
||||
getActivity(),
|
||||
DialogSimpleMessageView.makeInfoDialog(
|
||||
getActivity().getResources().getString(R.string.action_print_ul),
|
||||
new SpannableString(getActivity().getResources().getString(R.string.ask_print_message)),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)).show();
|
||||
() -> onComplete.run(false))
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
getActivity(),
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
new SpannableString(ex.getMessage()),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
onComplete).show();
|
||||
onComplete)
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -527,7 +525,12 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onComplete) {
|
||||
mViewModel.closeLU(false, onComplete);
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
mViewModel.closeLU(false, onComplete);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,26 +6,37 @@ import android.os.Bundle;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
|
||||
public class MainSettingsFragment extends PreferenceFragmentCompat implements ITitledFragment {
|
||||
|
||||
|
||||
private final ArrayList<Runnable> onPreDestroyList = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.settings_category).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
setPreferencesFromResource(R.xml.app_preferences, rootKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
onPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
for (Runnable onPreDestroy :
|
||||
onPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,14 @@ package it.integry.integrywmsnative.gest.spedizione;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
@@ -55,6 +57,7 @@ import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
|
||||
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
||||
import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListAdapter;
|
||||
import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
@@ -64,11 +67,11 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.camera_barcode_reader.DialogCameraBarcodeReader;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
|
||||
|
||||
@@ -81,7 +84,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||
|
||||
private ObservableArrayList<SpedizioneListModel> mSpedizioneMutableData = new ObservableArrayList<>();
|
||||
private final ObservableArrayList<SpedizioneListModel> mSpedizioneMutableData = new ObservableArrayList<>();
|
||||
|
||||
|
||||
public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false);
|
||||
@@ -93,6 +96,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
private boolean mEnableGiacenza;
|
||||
private boolean mFlagShowCodForn;
|
||||
private boolean mDivideByGrpMerc;
|
||||
private boolean mEnableQuantityReset;
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private ArrayList<SitArtOrdDTO> mSitArtOrd;
|
||||
@@ -101,12 +105,20 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
private GestioneEnum mGestioneCol;
|
||||
private int mSegnoCol;
|
||||
private Integer mDefaultCausaleUL;
|
||||
private Class<? extends BaseDialogRowInfoView> mInfoDialogClassType;
|
||||
|
||||
private boolean mShouldCloseActivity;
|
||||
|
||||
private final int PICK_UL_REQUEST = 1;
|
||||
|
||||
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineUscitaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL) {
|
||||
public static void startActivity(Context context,
|
||||
List<SitArtOrdDTO> ordini,
|
||||
List<OrdineUscitaInevasoDTO> selectedOrders,
|
||||
List<MtbColt> mtbColtList,
|
||||
GestioneEnum gestioneCol,
|
||||
int segnoCol,
|
||||
Integer defaultCausaleUL,
|
||||
Class<? extends BaseDialogRowInfoView> infoDialogClassType) {
|
||||
Intent myIntent = new Intent(context, SpedizioneActivity.class);
|
||||
|
||||
String keyPickingList = DataCache.addItem(ordini);
|
||||
@@ -127,6 +139,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
String keyDefaultCausaleUL = DataCache.addItem(defaultCausaleUL);
|
||||
myIntent.putExtra("keyDefaultCausaleCol", keyDefaultCausaleUL);
|
||||
|
||||
String keyInfoDialogClassType = DataCache.addItem(infoDialogClassType);
|
||||
myIntent.putExtra("keyInfoDialogClassType", keyInfoDialogClassType);
|
||||
|
||||
context.startActivity(myIntent);
|
||||
}
|
||||
|
||||
@@ -140,6 +155,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mGestioneCol = DataCache.retrieveItem(getIntent().getStringExtra("keyGestioneCol"));
|
||||
mSegnoCol = DataCache.retrieveItem(getIntent().getStringExtra("keySegnoCol"));
|
||||
mDefaultCausaleUL = DataCache.retrieveItem(getIntent().getStringExtra("keyDefaultCausaleCol"));
|
||||
mInfoDialogClassType = DataCache.retrieveItem(getIntent().getStringExtra("keyInfoDialogClassType"));
|
||||
|
||||
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione);
|
||||
|
||||
@@ -157,6 +173,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mFlagShowCodForn = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE);
|
||||
mDivideByGrpMerc = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC);
|
||||
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mEnableQuantityReset = sharedPreferences.getBoolean("picking_uscita_enable_quantity_reset", true);
|
||||
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setSpedizioneView(this);
|
||||
|
||||
@@ -179,6 +198,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV();
|
||||
boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione();
|
||||
boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione();
|
||||
boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd();
|
||||
|
||||
if (mEnableGiacenza) this.openProgress();
|
||||
mViewmodel.init(
|
||||
@@ -191,7 +211,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mTestateOrdini,
|
||||
mColliRegistrati,
|
||||
reportNameSpedizioneChiudiOrdine,
|
||||
mGestioneCol, mSegnoCol, mDefaultCausaleUL);
|
||||
mGestioneCol, mSegnoCol, mDefaultCausaleUL,
|
||||
mEnableQuantityReset,
|
||||
useQtaOrd);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -236,16 +258,17 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
this.noItemsToPick.set(!isThereAnyItemToPick(updatedData));
|
||||
});
|
||||
|
||||
SpedizioneListAdapter spedizioneListAdapter = new SpedizioneListAdapter(this, mSpedizioneMutableData);
|
||||
SpedizioneListAdapter spedizioneListAdapter = new SpedizioneListAdapter(this, mSpedizioneMutableData, mInfoDialogClassType, getSupportFragmentManager());
|
||||
this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter);
|
||||
this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> {
|
||||
if (!noLUPresent.get() &&
|
||||
((SettingsManager.iDB().isFlagSpedizioneEnableManualPick() &&
|
||||
clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) ||
|
||||
clickedItem.getTempPickData() != null)) {
|
||||
this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt);
|
||||
clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) ||
|
||||
clickedItem.getTempPickData() != null)) {
|
||||
this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt,
|
||||
SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -261,7 +284,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
List<SpedizioneListModel> sortedList = null;
|
||||
|
||||
if(!mDivideByGrpMerc) {
|
||||
if (!mDivideByGrpMerc) {
|
||||
Stream.of(tmpList)
|
||||
.forEach(x -> {
|
||||
SpedizioneListModel spedizioneListModel = new SpedizioneListModel();
|
||||
@@ -324,10 +347,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
for (MtbColt mtbColtToPick : x.getMtbColts()) {
|
||||
|
||||
if(UtilityBigDecimal.equalsTo(qtaColOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaColOrdCounter, BigDecimal.ZERO))
|
||||
if (UtilityBigDecimal.equalsTo(qtaColOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaColOrdCounter, BigDecimal.ZERO))
|
||||
break;
|
||||
|
||||
if(UtilityBigDecimal.equalsTo(numCnfOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(numCnfOrdCounter, BigDecimal.ZERO))
|
||||
if (UtilityBigDecimal.equalsTo(numCnfOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(numCnfOrdCounter, BigDecimal.ZERO))
|
||||
break;
|
||||
|
||||
SpedizioneListModel cloneModel = (SpedizioneListModel) spedizioneListModel.clone();
|
||||
@@ -348,7 +371,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
|
||||
BigDecimal qtaTot = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
if(UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO)) continue;
|
||||
if (UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO))
|
||||
continue;
|
||||
cloneModel.setQtaTot(qtaTot);
|
||||
|
||||
numCnfOrdCounter = numCnfOrdCounter.subtract(numCnfOrdToSubstract);
|
||||
@@ -372,7 +396,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
BigDecimal qtaOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getQtaCol(), qtaColOrdCounter);
|
||||
|
||||
BigDecimal qtaTot = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getQtaCol(), qtaColOrdCounter);
|
||||
if(UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO)) continue;
|
||||
if (UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO))
|
||||
continue;
|
||||
cloneModel.setQtaTot(qtaTot);
|
||||
qtaColOrdCounter = qtaColOrdCounter.subtract(qtaOrdToSubstract);
|
||||
|
||||
@@ -458,7 +483,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
String groupTitle = String.format("%s - %s", x.getSitArtOrdDTO().getDescrizioneMgrp(), x.getSitArtOrdDTO().getDescrizioneMsgr());
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneMsfa())) {
|
||||
if (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getDescrizioneMsfa())) {
|
||||
groupTitle += " - " + x.getSitArtOrdDTO().getDescrizioneMsfa();
|
||||
}
|
||||
|
||||
@@ -488,10 +513,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
for (MtbColt mtbColtToPick : x.getMtbColts()) {
|
||||
|
||||
if(UtilityBigDecimal.equalsTo(qtaColOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaColOrdCounter, BigDecimal.ZERO))
|
||||
break;
|
||||
if (UtilityBigDecimal.equalsTo(qtaColOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaColOrdCounter, BigDecimal.ZERO))
|
||||
break;
|
||||
|
||||
if(UtilityBigDecimal.equalsTo(numCnfOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(numCnfOrdCounter, BigDecimal.ZERO))
|
||||
if (UtilityBigDecimal.equalsTo(numCnfOrdCounter, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(numCnfOrdCounter, BigDecimal.ZERO))
|
||||
break;
|
||||
|
||||
SpedizioneListModel cloneModel = (SpedizioneListModel) spedizioneListModel.clone();
|
||||
@@ -511,7 +536,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
|
||||
BigDecimal qtaTot = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
if(UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO)) continue;
|
||||
if (UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO))
|
||||
continue;
|
||||
cloneModel.setQtaTot(qtaTot);
|
||||
|
||||
numCnfOrdCounter = numCnfOrdCounter.subtract(numCnfOrdToSubstract);
|
||||
@@ -533,7 +559,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
BigDecimal qtaOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getQtaCol(), qtaColOrdCounter);
|
||||
|
||||
BigDecimal qtaTot = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getQtaCol(), qtaColOrdCounter);
|
||||
if(UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO)) continue;
|
||||
if (UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO) || UtilityBigDecimal.lowerThan(qtaTot, BigDecimal.ZERO))
|
||||
continue;
|
||||
cloneModel.setQtaTot(qtaTot);
|
||||
qtaColOrdCounter = qtaColOrdCounter.subtract(qtaOrdToSubstract);
|
||||
|
||||
@@ -598,7 +625,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
public void addExtraItem() {
|
||||
DialogScanArtView
|
||||
.newInstance((status, mtbAart, ean128Model, mtbColr) -> {
|
||||
if(status == DialogConsts.Results.YES) {
|
||||
if (status == DialogConsts.Results.YES) {
|
||||
this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr);
|
||||
}
|
||||
})
|
||||
@@ -695,7 +722,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
public void onLUSuccessullyPrinted() {
|
||||
Resources res = getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageView
|
||||
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
|
||||
.show(getSupportFragmentManager(), "tag");;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -706,13 +735,14 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
@Override
|
||||
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||
this.closeProgress();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
this,
|
||||
DialogSimpleMessageView.makeErrorDialog(
|
||||
new SpannableString(ex.getMessage()),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
onComplete).show();
|
||||
onComplete)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -730,19 +760,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this,
|
||||
new SpannableString(text),
|
||||
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
)
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
|
||||
if(ex instanceof InvalidPesoKGException) {
|
||||
if (ex instanceof InvalidPesoKGException) {
|
||||
UtilityToast.showToast(ex.getMessage());
|
||||
} else {
|
||||
UtilityExceptions.defaultException(this, ex, mCurrentProgress);
|
||||
@@ -769,6 +799,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
boolean canOverflowOrderQuantity,
|
||||
boolean canPartitaMagBeChanged,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||
.setMtbAart(mtbAart)
|
||||
@@ -787,7 +818,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScad(dataScad)
|
||||
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
||||
.setCanLUBeClosed(true);
|
||||
.setCanLUBeClosed(true)
|
||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged);
|
||||
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
|
||||
@@ -94,6 +94,8 @@ public class SpedizioneViewModel {
|
||||
private boolean mShouldAskPesoLU;
|
||||
private String mReportNameSpedizioneChiudiOrdine;
|
||||
private boolean mIsNewLU;
|
||||
private boolean mEnableQuantityReset;
|
||||
private boolean mUseQtaOrd;
|
||||
|
||||
private MtbColt mCurrentMtbColt = null;
|
||||
|
||||
@@ -135,7 +137,9 @@ public class SpedizioneViewModel {
|
||||
String reportNameSpedizioneChiudiOrdine,
|
||||
GestioneEnum gestioneCol,
|
||||
int segnoCol,
|
||||
Integer defaultCausaleUL) {
|
||||
Integer defaultCausaleUL,
|
||||
boolean enableQuantityReset,
|
||||
boolean useQtaOrd) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mDefaultCodMdep = codMdep;
|
||||
@@ -147,6 +151,8 @@ public class SpedizioneViewModel {
|
||||
this.mShouldAskPesoLU = shouldAskPesoLU;
|
||||
this.mReportNameSpedizioneChiudiOrdine = reportNameSpedizioneChiudiOrdine;
|
||||
this.mDefaultCausaleOfUL = defaultCausaleUL;
|
||||
this.mEnableQuantityReset = enableQuantityReset;
|
||||
this.mUseQtaOrd = useQtaOrd;
|
||||
|
||||
if (enableGiacenza) {
|
||||
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
||||
@@ -358,6 +364,7 @@ public class SpedizioneViewModel {
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
boolean canOverflowOrderQuantity,
|
||||
boolean canBatchLotBeChanged,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||
if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO,
|
||||
mtbAart,
|
||||
@@ -376,6 +383,7 @@ public class SpedizioneViewModel {
|
||||
partitaMag,
|
||||
dataScad,
|
||||
canOverflowOrderQuantity,
|
||||
canBatchLotBeChanged,
|
||||
onComplete);
|
||||
}
|
||||
|
||||
@@ -434,6 +442,9 @@ public class SpedizioneViewModel {
|
||||
this.sendError(new InvalidLUException());
|
||||
onComplete.run();
|
||||
} else {
|
||||
//Reset of existant mtbColrs
|
||||
mtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
this.mCurrentMtbColt = mtbColt;
|
||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
||||
this.mIsNewLU = false;
|
||||
@@ -726,7 +737,7 @@ public class SpedizioneViewModel {
|
||||
this.sendFilterApplied(null);
|
||||
this.getPickingList().postValue(pickingList);
|
||||
} else {
|
||||
this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt());
|
||||
this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt(), false);
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -745,7 +756,7 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
|
||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt) {
|
||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, boolean canPartitaMagBeChanged) {
|
||||
|
||||
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||
@@ -894,7 +905,9 @@ public class SpedizioneViewModel {
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
null, null, null,
|
||||
mUseQtaOrd ? numCnfDaPrelevare : null,
|
||||
mUseQtaOrd ? qtaCnfDaPrelevare : null,
|
||||
mUseQtaOrd ? qtaColDaPrelevare : null,
|
||||
qtaDaEvadere,
|
||||
numCnfDaEvadere,
|
||||
qtaCnfDaEvadere,
|
||||
@@ -907,6 +920,7 @@ public class SpedizioneViewModel {
|
||||
partitaMag,
|
||||
dataScad,
|
||||
mCanOverflowOrderQuantity,
|
||||
canPartitaMagBeChanged,
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
this.saveNewRow(pickingObjectDTO,
|
||||
finalRefMtbColt,
|
||||
@@ -999,6 +1013,12 @@ public class SpedizioneViewModel {
|
||||
if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) {
|
||||
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
|
||||
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
|
||||
|
||||
if (!mtbAart.isFlagQtaCnfFissaBoolean()) {
|
||||
if (UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO))
|
||||
numCnfDaPrelevare = BigDecimal.ONE;
|
||||
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
|
||||
}
|
||||
} else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) {
|
||||
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
|
||||
qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare);
|
||||
@@ -1040,6 +1060,7 @@ public class SpedizioneViewModel {
|
||||
partitaMag,
|
||||
dataScad,
|
||||
mCanOverflowOrderQuantity,
|
||||
true,
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
this.saveNewRow(pickingObjectDTO,
|
||||
finalRefMtbColt,
|
||||
@@ -1176,6 +1197,7 @@ public class SpedizioneViewModel {
|
||||
partitaMag,
|
||||
dataScad,
|
||||
mCanOverflowOrderQuantity,
|
||||
false,
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
this.saveEditedRow(mtbColrToEdit,
|
||||
pickedQuantityDTO.getNumCnf(),
|
||||
@@ -1335,7 +1357,7 @@ public class SpedizioneViewModel {
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setRiga(value.getMtbColr().get(value.getMtbColr().size() - 1).getRiga())
|
||||
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
||||
.setMtbAart(pickingObjectDTO.getMtbAart());
|
||||
|
||||
@@ -1437,12 +1459,17 @@ public class SpedizioneViewModel {
|
||||
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)
|
||||
.setPesoLordoKg(null)
|
||||
.setPesoNettoKg(null);
|
||||
|
||||
if(mCurrentMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) {
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE);
|
||||
} else {
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
mtbColr.setQtaCol(mtbColr.getQtaCol().multiply(new BigDecimal(-1)))
|
||||
.setNumCnf(mtbColr.getNumCnf().multiply(new BigDecimal(-1)))
|
||||
.setRiga(null)
|
||||
.setPesoLordoKg(null)
|
||||
.setPesoNettoKg(null);
|
||||
}
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
@@ -1567,7 +1594,8 @@ public class SpedizioneViewModel {
|
||||
|
||||
IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
|
||||
ordiniVendita.distribuisciCollo(cloneMtbColt, mTestateOrdini, mtbColts -> {
|
||||
mColliMagazzinoRESTConsumer.getMultipleByTestate(mtbColts, false, onComplete, this::sendError);
|
||||
mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(mtbColts, onComplete, this::sendError);
|
||||
// mColliMagazzinoRESTConsumer.getMultipleByTestate(mtbColts, false, onComplete, this::sendError);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
@@ -1674,59 +1702,44 @@ public class SpedizioneViewModel {
|
||||
this.mCurrentMtbColt = null;
|
||||
|
||||
|
||||
for (PickingObjectDTO pickingObjectDTO : mPickingList.getValue()) {
|
||||
if(mEnableQuantityReset) {
|
||||
for (PickingObjectDTO pickingObjectDTO : mPickingList.getValue()) {
|
||||
|
||||
List<MtbColr> withdrawMtbColrList = pickingObjectDTO.getWithdrawMtbColrs();
|
||||
List<MtbColr> withdrawMtbColrList = pickingObjectDTO.getWithdrawMtbColrs();
|
||||
|
||||
for (MtbColr withdrawMtbColr : withdrawMtbColrList) {
|
||||
pickingObjectDTO.getSitArtOrdDTO().setNumCnfOrd(pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(withdrawMtbColr.getNumCnf()));
|
||||
pickingObjectDTO.getSitArtOrdDTO().setQtaOrd(pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(withdrawMtbColr.getQtaCol()));
|
||||
for (MtbColr withdrawMtbColr : withdrawMtbColrList) {
|
||||
pickingObjectDTO.getSitArtOrdDTO().setNumCnfOrd(pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(withdrawMtbColr.getNumCnf()));
|
||||
pickingObjectDTO.getSitArtOrdDTO().setQtaOrd(pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(withdrawMtbColr.getQtaCol()));
|
||||
|
||||
|
||||
if (pickingObjectDTO.getMtbColts() != null) {
|
||||
if (pickingObjectDTO.getMtbColts() != null) {
|
||||
|
||||
Optional<MtbColr> optionalMtbColrReference = Stream.of(pickingObjectDTO.getMtbColts())
|
||||
.filter(y -> withdrawMtbColr.getRefMtbColr() != null &&
|
||||
withdrawMtbColr.getRefMtbColr().getNumCollo().equals(y.getNumCollo()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getDataColloD().equals(y.getDataColloD()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getSerCollo().equals(y.getSerCollo()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getGestioneEnum().equals(y.getGestioneEnum()) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodMart(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodMart() : null) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodTagl(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodTagl() : null) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodCol(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodCol() : null))
|
||||
.map(y -> y.getMtbColr().get(0))
|
||||
.findFirst();
|
||||
Optional<MtbColr> optionalMtbColrReference = Stream.of(pickingObjectDTO.getMtbColts())
|
||||
.filter(y -> withdrawMtbColr.getRefMtbColr() != null &&
|
||||
withdrawMtbColr.getRefMtbColr().getNumCollo().equals(y.getNumCollo()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getDataColloD().equals(y.getDataColloD()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getSerCollo().equals(y.getSerCollo()) &&
|
||||
withdrawMtbColr.getRefMtbColr().getGestioneEnum().equals(y.getGestioneEnum()) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodMart(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodMart() : null) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodTagl(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodTagl() : null) &&
|
||||
UtilityString.equalsIgnoreCase(withdrawMtbColr.getRefMtbColr().getCodCol(), y.getMtbColr() != null && y.getMtbColr().size() > 0 ? y.getMtbColr().get(0).getCodCol() : null))
|
||||
.map(y -> y.getMtbColr().get(0))
|
||||
.findFirst();
|
||||
|
||||
|
||||
if (optionalMtbColrReference.isPresent()) {
|
||||
//looking for real refMtbColr instance
|
||||
MtbColr mtbColr = optionalMtbColrReference.get();
|
||||
if (optionalMtbColrReference.isPresent()) {
|
||||
//looking for real refMtbColr instance
|
||||
MtbColr mtbColr = optionalMtbColrReference.get();
|
||||
|
||||
mtbColr.setNumCnf(mtbColr.getNumCnf().subtract(withdrawMtbColr.getNumCnf()));
|
||||
mtbColr.setQtaCol(mtbColr.getQtaCol().subtract(withdrawMtbColr.getQtaCol()));
|
||||
}
|
||||
|
||||
mtbColr.setNumCnf(mtbColr.getNumCnf().subtract(withdrawMtbColr.getNumCnf()));
|
||||
mtbColr.setQtaCol(mtbColr.getQtaCol().subtract(withdrawMtbColr.getQtaCol()));
|
||||
}
|
||||
|
||||
// Stream.of(pickingObjectDTO.getMtbColts())
|
||||
// .filter(x -> Objects.equals(x.getNumCollo(), withdrawMtbColr.getNumColloRif()) &&
|
||||
// x.getDataColloS().equals(withdrawMtbColr.getDataColloRifS()) &&
|
||||
// x.getSerCollo().equalsIgnoreCase(withdrawMtbColr.getSerColloRif()) &&
|
||||
// x.getGestione().equalsIgnoreCase(withdrawMtbColr.getGestioneRif()))
|
||||
// .forEach(x -> {
|
||||
// List<MtbColr> mtbColrList = x.getMtbColr();
|
||||
|
||||
// Stream.of(mtbColrList)
|
||||
// .filter(y -> y.getCodMart().equalsIgnoreCase(withdrawMtbColr.getCodMart()) &&
|
||||
// UtilityString.equalsIgnoreCase(y.getPartitaMag(), withdrawMtbColr.getPartitaMag()) &&
|
||||
// UtilityString.equalsIgnoreCase(y.getCodCol(), withdrawMtbColr.getCodCol()) &&
|
||||
// UtilityString.equalsIgnoreCase(y.getCodTagl(), withdrawMtbColr.getCodTagl()))
|
||||
// .for
|
||||
|
||||
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
pickingObjectDTO.setWithdrawMtbColrs(new ArrayList<>());
|
||||
pickingObjectDTO.setWithdrawMtbColrs(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
this.mIsNewLU = false;
|
||||
@@ -1846,6 +1859,7 @@ public class SpedizioneViewModel {
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
boolean canOverflowOrderQuantity,
|
||||
boolean canBatchLotBeChanged,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||
|
||||
|
||||
|
||||
@@ -8,29 +8,37 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
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.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding;
|
||||
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupItemBinding;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
|
||||
public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<SpedizioneListAdapter.SubheaderHolder, SpedizioneListAdapter.SingleItemViewHolder> {
|
||||
|
||||
private Context mContext;
|
||||
private final Context mContext;
|
||||
private final Class<? extends BaseDialogRowInfoView> mInfoDialogClassType;
|
||||
private final FragmentManager mFragmentManager;
|
||||
private final List<SpedizioneListModel> mDataset = new ArrayList<>();
|
||||
|
||||
private RunnableArgss<PickingObjectDTO, MtbColt> mOnItemClicked;
|
||||
@@ -57,8 +65,10 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
}
|
||||
|
||||
|
||||
public SpedizioneListAdapter(AppCompatActivity context, ObservableArrayList<SpedizioneListModel> mutableDataSet) {
|
||||
public SpedizioneListAdapter(AppCompatActivity context, ObservableArrayList<SpedizioneListModel> mutableDataSet, Class<? extends BaseDialogRowInfoView> infoDialogClassType, FragmentManager fragmentManager) {
|
||||
this.mContext = context;
|
||||
this.mInfoDialogClassType = infoDialogClassType;
|
||||
this.mFragmentManager = fragmentManager;
|
||||
|
||||
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
@@ -113,8 +123,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
|
||||
holder.mBinding.deactivatedOverBg.setVisibility(!pickingObjectDTO.isActive() ? View.VISIBLE : View.GONE);
|
||||
holder.mBinding.getRoot().setAlpha(!pickingObjectDTO.isActive() ? 0.8f : 1);
|
||||
holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingObjectDTO.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner));
|
||||
holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700));
|
||||
holder.mBinding.badge1.setBackground(ResourcesCompat.getDrawable(mContext.getResources(), !pickingObjectDTO.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner, null));
|
||||
holder.mBinding.qtaEvasa.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700, null));
|
||||
|
||||
holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione());
|
||||
holder.mBinding.descrizione.setTextColor(pickingObjectDTO.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
|
||||
@@ -137,6 +147,16 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
holder.mBinding.untMis.setText(pickingObjectDTO.getUntMis());
|
||||
holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getUntMis()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
if (mInfoDialogClassType != null) {
|
||||
holder.mBinding.infoRow.setVisibility(View.VISIBLE);
|
||||
holder.mBinding.infoRow.setOnClickListener(new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
openInfoDialog(pickingObjectDTO);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
if (this.mOnItemClicked != null)
|
||||
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt());
|
||||
@@ -166,4 +186,20 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
||||
}
|
||||
|
||||
|
||||
private void openInfoDialog(SpedizioneListModel item) {
|
||||
try {
|
||||
Constructor<?> cons = Class.forName(mInfoDialogClassType.getName()).getConstructors()[0];
|
||||
BaseDialogRowInfoView object = (BaseDialogRowInfoView) cons.newInstance(item, (Runnable) () -> {
|
||||
|
||||
}, (Runnable) () -> {
|
||||
|
||||
});
|
||||
object.show(mFragmentManager, "tag");
|
||||
|
||||
} catch (Exception e) {
|
||||
UtilityExceptions.defaultException(this.mContext, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel;
|
||||
|
||||
public abstract class BaseDialogRowInfoView extends BaseDialogFragment implements IBaseDialogRowInfoView {
|
||||
|
||||
private final SpedizioneListModel mSpedizioneListModel;
|
||||
private final Runnable mOnComplete;
|
||||
private final Runnable mOnAbort;
|
||||
|
||||
public BaseDialogRowInfoView(@NotNull SpedizioneListModel spedizioneListModel, @NotNull Runnable onComplete, @NotNull Runnable onAbort) {
|
||||
this.mSpedizioneListModel = spedizioneListModel;
|
||||
this.mOnComplete = onComplete;
|
||||
this.mOnAbort = onAbort;
|
||||
}
|
||||
|
||||
protected SpedizioneListModel getSpedizioneListModel() {
|
||||
return mSpedizioneListModel;
|
||||
}
|
||||
|
||||
protected Runnable getOnComplete() {
|
||||
return mOnComplete;
|
||||
}
|
||||
|
||||
protected Runnable getOnAbort() {
|
||||
return mOnAbort;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info;
|
||||
|
||||
public interface IBaseDialogRowInfoView {
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface DialogRowInfoProdFabbisognoLineeProdComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
DialogRowInfoProdFabbisognoLineeProdComponent create();
|
||||
}
|
||||
|
||||
void inject(DialogRowInfoProdFabbisognoLineeProdView dialogRowInfoProdFabbisognoLineeProdView);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
@Module(subcomponents = DialogRowInfoProdFabbisognoLineeProdComponent.class)
|
||||
public class DialogRowInfoProdFabbisognoLineeProdModule {
|
||||
|
||||
|
||||
@Provides
|
||||
DialogRowInfoProdFabbisognoLineeProdViewModel providesDialogRowInfoProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
return new DialogRowInfoProdFabbisognoLineeProdViewModel(prodFabbisognoLineeProdRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.DialogRowInfoProdFabbisognoLineeProdBinding;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel;
|
||||
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
|
||||
|
||||
public class DialogRowInfoProdFabbisognoLineeProdView extends BaseDialogRowInfoView implements DialogRowInfoProdFabbisognoLineeProdViewModel.Listener {
|
||||
|
||||
|
||||
@Inject
|
||||
DialogRowInfoProdFabbisognoLineeProdViewModel mViewModel;
|
||||
|
||||
private Context mContext;
|
||||
private DialogRowInfoProdFabbisognoLineeProdBinding mBindings;
|
||||
|
||||
public DialogRowInfoProdFabbisognoLineeProdView(@NotNull SpedizioneListModel spedizioneListModel, @NotNull Runnable onComplete, @NotNull Runnable onAbort) {
|
||||
super(spedizioneListModel, onComplete, onAbort);
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
this.mContext = getActivity();
|
||||
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_row_info_prod_fabbisogno_linee_prod, container, false);
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialogRowInfoProdFabbisognoLineeProdComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
setCancelable(true);
|
||||
getDialog().setCanceledOnTouchOutside(true);
|
||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
this.mViewModel.setListener(this);
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
SitArtOrdDTO sitArtOrdDTO = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO();
|
||||
|
||||
this.mViewModel.getFabbisognoList().removeObservers(this);
|
||||
this.mViewModel.getFabbisognoList().observe(this, this::onFabbisognoListLoaded);
|
||||
|
||||
this.mViewModel.init(
|
||||
sitArtOrdDTO.getCodMart(),
|
||||
sitArtOrdDTO.getCodMdep(),
|
||||
(Date) sitArtOrdDTO.getExtraInfo().get("dataInizio"),
|
||||
(Date) sitArtOrdDTO.getExtraInfo().get("dataFine"));
|
||||
}
|
||||
|
||||
private void onFabbisognoListLoaded(List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
|
||||
for (int i = 0; i < fabbisognoList.size(); i++) {
|
||||
String currentKey = fabbisognoList.get(i).getCodJfas();
|
||||
|
||||
ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
TextView tv = new TextView(this.mContext);
|
||||
tv.setLayoutParams(lparams);
|
||||
tv.setText(currentKey);
|
||||
|
||||
this.mBindings.contentView.addView(tv);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
UtilityExceptions.defaultException(this.mContext, ex);
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
this.mBindings.loadingView.setVisibility(View.VISIBLE);
|
||||
this.mBindings.contentView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
this.mBindings.loadingView.setVisibility(View.GONE);
|
||||
this.mBindings.contentView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
public class DialogRowInfoProdFabbisognoLineeProdViewModel {
|
||||
|
||||
private final ProdFabbisognoLineeProdRESTConsumer mProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
private final MutableLiveData<List<ProdFabbisognoLineeProdDTO>> mFabbisognoList = new MutableLiveData<>();
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
|
||||
public DialogRowInfoProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer mProdFabbisognoLineeProdRESTConsumer) {
|
||||
this.mProdFabbisognoLineeProdRESTConsumer = mProdFabbisognoLineeProdRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void init(String codMart, String codMdep, Date startDate, Date endDate) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(codMart, startDate, endDate, codMdep, fabbisognoList -> {
|
||||
this.mFabbisognoList.postValue(fabbisognoList);
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<ProdFabbisognoLineeProdDTO>> getFabbisognoList() {
|
||||
return mFabbisognoList;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnLoadingEnded() {
|
||||
if (this.mListener != null) mListener.onLoadingEnded();
|
||||
}
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public void setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface UltimeConsegneClienteComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory{
|
||||
UltimeConsegneClienteComponent create();
|
||||
}
|
||||
|
||||
void inject(UltimeConsegneClienteFragment ultimeConsegneClienteFragment);
|
||||
}
|
||||
@@ -7,38 +7,62 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
|
||||
public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
public class UltimeConsegneClienteFragment extends BaseFragment implements UltimeConsegneClienteViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private UltimeConsegneClienteViewModel mViewModel;
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private final ObservableArrayList<DocumentoResoDTO> mDocumentiMutableData = new ObservableArrayList<>();
|
||||
|
||||
@Inject
|
||||
UltimeConsegneClienteViewModel mViewModel;
|
||||
|
||||
private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
private FragmentMainUltimeConsegneClienteBinding mBindings;
|
||||
|
||||
public UltimeConsegneClienteFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public static UltimeConsegneClienteFragment newInstance() {
|
||||
UltimeConsegneClienteFragment fragment = new UltimeConsegneClienteFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
return new UltimeConsegneClienteFragment();
|
||||
}
|
||||
|
||||
|
||||
@@ -46,21 +70,158 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false);
|
||||
mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false);
|
||||
|
||||
mViewModel = new UltimeConsegneClienteViewModel(getActivity(), mBinding);
|
||||
MainApplication.appComponent
|
||||
.ultimeConsegneClienteComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mBinding.setViewmodel(mViewModel);
|
||||
mViewModel.setListener(this);
|
||||
|
||||
mToolbar.setRecyclerView(mBinding.recyclerView);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(mViewModel);
|
||||
|
||||
|
||||
this.initRecyclerView();
|
||||
// this.initBarcodeReader();
|
||||
|
||||
// Inflate the layout for this fragment
|
||||
return mBinding.getRoot();
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
mViewModel.init(codMdep);
|
||||
|
||||
this.mBindings.mainFab.hide();
|
||||
this.mBindings.mainFab.setOnClickListener(v -> {
|
||||
dispatchConsegne();
|
||||
});
|
||||
|
||||
this.mViewModel.getDocuments().observe(this, this::refreshList);
|
||||
|
||||
openFilterDialog();
|
||||
}
|
||||
|
||||
|
||||
public void openFilterDialog() {
|
||||
this.mViewModel.loadCodAnagClienti(gtbAnags -> {
|
||||
DialogUltimeConsegneFiltroAvanzato.make(getActivity(), gtbAnags, mAppliedFilterViewModel, (filter) -> {
|
||||
mAppliedFilterViewModel = filter;
|
||||
refreshItems();
|
||||
}).show();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
UltimeConsegneMainListAdapter mAdapter =
|
||||
new UltimeConsegneMainListAdapter(getActivity(), mDocumentiMutableData);
|
||||
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
|
||||
mAdapter.setEmptyView(mBindings.emptyView);
|
||||
|
||||
mBindings.recyclerView.setHasFixedSize(true);
|
||||
mBindings.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
mBindings.recyclerView.setAdapter(mAdapter);
|
||||
// mBindings.fastscroll.setRecyclerView(mBindings.recyclerView);
|
||||
|
||||
|
||||
if(mToolbar != null)
|
||||
mToolbar.setRecyclerView(mBindings.recyclerView);
|
||||
|
||||
}
|
||||
|
||||
private void initBarcodeReader() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
};
|
||||
|
||||
private void refreshList(List<DocumentoResoDTO> documentList) {
|
||||
this.mDocumentiMutableData.clear();
|
||||
this.mDocumentiMutableData.addAll(sort(documentList));
|
||||
}
|
||||
|
||||
private void refreshItems() {
|
||||
this.openProgress();
|
||||
|
||||
String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null;
|
||||
String currentCodAnagFilter = null;
|
||||
|
||||
Optional<GtbAnag> singleGtbAnag = Stream.of(this.mViewModel.getGtbAnagClienti().getValue())
|
||||
.filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter))
|
||||
.findSingle();
|
||||
|
||||
if (singleGtbAnag.isPresent()) {
|
||||
currentCodAnagFilter = singleGtbAnag.get().getCodAnag();
|
||||
}
|
||||
|
||||
this.mViewModel.loadConsegneClienti(currentCodAnagFilter,
|
||||
null,
|
||||
-1,
|
||||
548
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
|
||||
List<DocumentoResoDTO> sortedDataset = Stream.of(dataset)
|
||||
.sortBy(DocumentoResoDTO::getRagSoc)
|
||||
.toList();
|
||||
|
||||
return sortedDataset;
|
||||
}
|
||||
|
||||
|
||||
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
|
||||
List<DocumentoResoDTO> selectedOrders = getSelectedItems();
|
||||
|
||||
if (dto.isSelected()) {
|
||||
Stream.of(selectedOrders)
|
||||
.filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc()))
|
||||
.forEach(x -> x.setSelected(false));
|
||||
}
|
||||
|
||||
if (selectedOrders != null && selectedOrders.size() > 0) {
|
||||
mBindings.mainFab.show();
|
||||
} else {
|
||||
mBindings.mainFab.hide();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<DocumentoResoDTO> getSelectedItems() {
|
||||
return Stream.of(this.mDocumentiMutableData)
|
||||
.filter(DocumentoResoDTO::isSelected)
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
private void dispatchConsegne() {
|
||||
List<DocumentoResoDTO> selectedConsegne = getSelectedItems();
|
||||
|
||||
PickingResiActivity.startActivity(getActivity(), getActivity().getText(R.string.ultime_consegne_cliente_title).toString(), selectedConsegne, +1);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for(Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
@@ -71,23 +232,37 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
|
||||
titleText.setText(context.getText(R.string.ultime_consegne_cliente_title).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
public void onFilterClick() {
|
||||
openFilterDialog();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterClick() {
|
||||
mViewModel.openFilterDialog();
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||
|
||||
@Module(subcomponents = UltimeConsegneClienteComponent.class)
|
||||
public class UltimeConsegneClienteModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
UltimeConsegneClienteRESTConsumer providesUltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new UltimeConsegneClienteRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
UltimeConsegneClienteViewModel providesUltimeConsegneClienteViewModel(
|
||||
UltimeConsegneClienteRESTConsumer ultimeConsegneClienteRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
|
||||
return new UltimeConsegneClienteViewModel(ultimeConsegneClienteRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||
|
||||
public class UltimeConsegneClienteViewModel {
|
||||
|
||||
|
||||
private final MutableLiveData<List<GtbAnag>> mGtbAnagClienti = new MutableLiveData<>();
|
||||
private final MutableLiveData<List<DocumentoResoDTO>> mDocuments = new MutableLiveData<>();
|
||||
|
||||
private final UltimeConsegneClienteRESTConsumer mUltimeConsegneClienteRESTConsumer;
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
private String mCodMdep;
|
||||
|
||||
@Inject
|
||||
public UltimeConsegneClienteViewModel(
|
||||
UltimeConsegneClienteRESTConsumer ultimeConsegneClienteRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
|
||||
this.mUltimeConsegneClienteRESTConsumer = ultimeConsegneClienteRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void init(String codMdep) {
|
||||
this.mCodMdep = codMdep;
|
||||
}
|
||||
|
||||
public void loadCodAnagClienti(RunnableArgs<List<GtbAnag>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mUltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> {
|
||||
mGtbAnagClienti.postValue(gtbAnags);
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
onComplete.run(gtbAnags);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public void loadConsegneClienti(String codAnag, String codMart, int limitDocsForCli, int limitDays) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mUltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays, documentList -> {
|
||||
this.mDocuments.postValue(documentList);
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
RunnableArgs<List<OrdiniUscitaElencoDTO>> onBarcodeScanComplete = orderList -> {
|
||||
onComplete.run();
|
||||
this.sendOnLoadingEnded();
|
||||
};
|
||||
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
|
||||
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
|
||||
this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete);
|
||||
} else {
|
||||
onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaLU(String SSCC, RunnableArgs<List<OrdiniUscitaElencoDTO>> onComplete) {
|
||||
this.mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||
|
||||
if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
|
||||
// if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) {
|
||||
// //GET BY COMMESSA COLLO
|
||||
// this.mOrdiniUscitaElencoRESTConsumer.getOrdiniFromCommessaCollo(mCurrentCodMdep, mtbColt, orderList -> {
|
||||
//
|
||||
// if(orderList != null && orderList.size() > 0) {
|
||||
// List<Integer> numOrds = Stream.of(orderList)
|
||||
// .map(DtbOrdt::getNumOrd)
|
||||
// .toList();
|
||||
//
|
||||
// List<OrdiniUscitaElencoDTO> filteredOrders = Stream.of(mOrderList.getValue())
|
||||
// .filter(x -> numOrds.contains(x.getNumOrd())).toList();
|
||||
//
|
||||
// onComplete.run(filteredOrders);
|
||||
// } else {
|
||||
// this.sendError(new NoOrderFoundException());
|
||||
// }
|
||||
//
|
||||
// }, this::sendError);
|
||||
//
|
||||
// } else {
|
||||
// this.sendError(new InvalidLUGestioneException(GestioneEnum.VENDITA));
|
||||
// }
|
||||
//
|
||||
} else {
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, RunnableArgs<List<OrdiniUscitaElencoDTO>> onComplete) {
|
||||
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
|
||||
String barcodeProd = null;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
|
||||
barcodeProd = ean128Model.Content;
|
||||
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
|
||||
} else {
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
} else {
|
||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<GtbAnag>> getGtbAnagClienti() {
|
||||
return mGtbAnagClienti;
|
||||
}
|
||||
|
||||
public MutableLiveData<List<DocumentoResoDTO>> getDocuments() {
|
||||
return mDocuments;
|
||||
}
|
||||
|
||||
public UltimeConsegneClienteViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnLoadingEnded() {
|
||||
if (this.mListener != null) mListener.onLoadingEnded();
|
||||
}
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
void onError(Exception ex);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,44 +1,31 @@
|
||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel;
|
||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListHeaderBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListSingleItemBinding;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
||||
|
||||
public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<UltimeConsegneMainListAdapter.SubheaderHolder, UltimeConsegneMainListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
|
||||
public class UltimeConsegneMainListAdapter extends ExtendedSectionedRecyclerView<DocumentoResoDTO, UltimeConsegneMainListAdapter.SubheaderHolder, UltimeConsegneMainListAdapter.SingleItemViewHolder> {
|
||||
|
||||
private Context mContext;
|
||||
private List<DocumentoResoDTO> mDataset;
|
||||
private ArrayList<String> mSectionTitleItems;
|
||||
|
||||
private RunnableArgs<DocumentoResoDTO> mOnSelectionChanged;
|
||||
|
||||
@Override
|
||||
public String getSectionTitle(int position) {
|
||||
return mSectionTitleItems.get(position);
|
||||
}
|
||||
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
@@ -65,12 +52,9 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
|
||||
|
||||
|
||||
|
||||
public UltimeConsegneMainListAdapter(Context context, ArrayList<DocumentoResoDTO> dataset) {
|
||||
super();
|
||||
public UltimeConsegneMainListAdapter(Context context, ObservableArrayList<DocumentoResoDTO> mutableDataSet) {
|
||||
super(mutableDataSet);
|
||||
this.mContext = context;
|
||||
this.mDataset = new ArrayList<>();
|
||||
|
||||
updateItems(sort(dataset));
|
||||
}
|
||||
|
||||
|
||||
@@ -146,45 +130,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return this.mDataset.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void updateItems(List<DocumentoResoDTO> updatedDataset) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sort(updatedDataset));
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
}
|
||||
|
||||
|
||||
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
|
||||
this.mSectionTitleItems = new ArrayList<>();
|
||||
|
||||
List<DocumentoResoDTO> sortedDataset = Stream.of(dataset)
|
||||
.sortBy(DocumentoResoDTO::getRagSoc)
|
||||
.toList();
|
||||
|
||||
|
||||
Stream.of(sortedDataset)
|
||||
.map(DocumentoResoDTO::getRagSoc)
|
||||
.distinct()
|
||||
.forEach(x -> {
|
||||
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
|
||||
|
||||
long count = Stream.of(dataset)
|
||||
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
|
||||
.count();
|
||||
|
||||
|
||||
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
|
||||
});
|
||||
|
||||
return sortedDataset;
|
||||
}
|
||||
|
||||
public void setOnSelectionChanged(RunnableArgs<DocumentoResoDTO> mSelectionChanged) {
|
||||
this.mOnSelectionChanged = mSelectionChanged;
|
||||
@@ -8,6 +8,8 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
@@ -20,65 +22,61 @@ import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
|
||||
@Singleton
|
||||
public class UltimeConsegneClienteRESTConsumer {
|
||||
|
||||
public static void getAvailableCodAnagClienti(RunnableArgs<List<GtbAnag>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
private final SystemRESTConsumer systemRESTConsumer;
|
||||
|
||||
public UltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.systemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void getAvailableCodAnagClienti(RunnableArgs<List<GtbAnag>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " +
|
||||
"FROM gtb_anag " +
|
||||
"INNER JOIN vtb_clie ON vtb_clie.cod_anag = gtb_anag.cod_anag " +
|
||||
"WHERE flag_stato = 'A'";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<GtbAnag>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<GtbAnag> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {
|
||||
}.getType();
|
||||
systemRESTConsumer.<ArrayList<GtbAnag>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
public static void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs<ArrayList<DocumentoResoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs<ArrayList<DocumentoResoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
String sql = "SELECT consegne.*, " +
|
||||
" rag_soc," +
|
||||
" dtb_doct.gestione " +
|
||||
"FROM WMS_GetUltimeConsegneClienti(" +
|
||||
UtilityDB.valueToString(limitConsegnePerCli) + ", " +
|
||||
UtilityDB.valueToString(codAnag) + ", " +
|
||||
UtilityDB.valueToString(codMart) + ", " +
|
||||
UtilityDB.valueToString(codMdep) + ", " +
|
||||
UtilityDB.valueToString(limitDays) + ") consegne " +
|
||||
UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " +
|
||||
UtilityDB.valueToString(codAnag) + ", " +
|
||||
UtilityDB.valueToString(codMart) + ", " +
|
||||
UtilityDB.valueToString(codMdep) + ", " +
|
||||
UtilityDB.valueToString(limitDays) + ") consegne " +
|
||||
"INNER JOIN dtb_doct ON consegne.num_doc = dtb_doct.num_doc AND consegne.data_doc = dtb_doct.data_doc AND consegne.cod_anag = dtb_doct.cod_anag AND consegne.cod_dtip = dtb_doct.cod_dtip AND consegne.ser_doc = dtb_doct.ser_doc " +
|
||||
"LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " +
|
||||
"ORDER BY rag_soc, " +
|
||||
" counter_consegna ";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DocumentoResoDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<DocumentoResoDTO> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {
|
||||
}.getType();
|
||||
systemRESTConsumer.<ArrayList<DocumentoResoDTO>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void loadDocRowFromConsegna(List<DocumentoResoDTO> consegne, RunnableArgs<ArrayList<WithdrawableDtbDocr>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> filterCond = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < consegne.size(); i++) {
|
||||
for (int i = 0; i < consegne.size(); i++) {
|
||||
HashMap<String, Object> filter = new HashMap<>();
|
||||
|
||||
filter.put("dtb_docr.data_doc", consegne.get(i).getDataDocD());
|
||||
@@ -172,17 +170,18 @@ public class UltimeConsegneClienteRESTConsumer {
|
||||
" (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " +
|
||||
" dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" +
|
||||
" ( " +
|
||||
UtilityQuery.concatFieldListInWhereCond(filterCond) +
|
||||
UtilityQuery.concatFieldListInWhereCond(filterCond) +
|
||||
" ) " +
|
||||
"ORDER BY cod_mart";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {
|
||||
}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
|
||||
|
||||
if(values != null && values.size() > 0){
|
||||
if (values != null && values.size() > 0) {
|
||||
List<String> codMarts = Stream.of(values)
|
||||
.map(DtbDocr::getCodMart)
|
||||
.withoutNulls()
|
||||
@@ -191,7 +190,7 @@ public class UltimeConsegneClienteRESTConsumer {
|
||||
|
||||
ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
|
||||
|
||||
if(arts != null && arts.size() > 0) {
|
||||
if (arts != null && arts.size() > 0) {
|
||||
for (DtbDocr value : values) {
|
||||
|
||||
MtbAart foundMtbAart = null;
|
||||
@@ -199,7 +198,7 @@ public class UltimeConsegneClienteRESTConsumer {
|
||||
List<MtbAart> mtbAartStream = Stream.of(arts)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList();
|
||||
|
||||
if(mtbAartStream != null && mtbAartStream.size() > 0){
|
||||
if (mtbAartStream != null && mtbAartStream.size() > 0) {
|
||||
foundMtbAart = mtbAartStream.get(0);
|
||||
}
|
||||
|
||||
@@ -207,19 +206,19 @@ public class UltimeConsegneClienteRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
if (onComplete != null) onComplete.run(values);
|
||||
}
|
||||
|
||||
}, onFailed);
|
||||
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
if (onComplete != null) onComplete.run(values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||
|
||||
public class UltimeConsegneClienteViewModel {
|
||||
|
||||
private Context mContext;
|
||||
private FragmentMainUltimeConsegneClienteBinding mBinding;
|
||||
|
||||
private UltimeConsegneMainListAdapter mAdapter;
|
||||
private List<DocumentoResoDTO> mItems;
|
||||
private List<DocumentoResoDTO> mRenderedItems = new ArrayList<>();
|
||||
|
||||
private List<GtbAnag> mAvailableGtbAnags = null;
|
||||
|
||||
private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) {
|
||||
this.mContext = context;
|
||||
this.mBinding = binding;
|
||||
|
||||
this.mBinding.mainFab.hide();
|
||||
this.mBinding.mainFab.setOnClickListener(v -> {
|
||||
dispatchConsegne();
|
||||
});
|
||||
|
||||
openFilterDialog();
|
||||
}
|
||||
|
||||
public void openFilterDialog() {
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
UltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> {
|
||||
mAvailableGtbAnags = gtbAnags;
|
||||
progressDialog.dismiss();
|
||||
|
||||
DialogUltimeConsegneFiltroAvanzato.make(mContext, gtbAnags, mAppliedFilterViewModel, (filter) -> {
|
||||
mAppliedFilterViewModel = filter;
|
||||
refreshItems();
|
||||
}).show();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
|
||||
private void initDataAdapter(ArrayList<DocumentoResoDTO> dataset) {
|
||||
mAdapter = new UltimeConsegneMainListAdapter(mContext, dataset);
|
||||
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
|
||||
|
||||
mBinding.recyclerView.setHasFixedSize(true);
|
||||
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
|
||||
mBinding.recyclerView.setAdapter(mAdapter);
|
||||
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
|
||||
|
||||
}
|
||||
|
||||
private void refreshItems(){
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null;
|
||||
String currentCodAnagFilter = null;
|
||||
|
||||
Optional<GtbAnag> singleGtbAnag = Stream.of(mAvailableGtbAnags)
|
||||
.filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter))
|
||||
.findSingle();
|
||||
|
||||
if(singleGtbAnag.isPresent()) {
|
||||
currentCodAnagFilter = singleGtbAnag.get().getCodAnag();
|
||||
}
|
||||
|
||||
UltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(
|
||||
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
|
||||
currentCodAnagFilter,
|
||||
null,
|
||||
null,
|
||||
548,
|
||||
consegne -> {
|
||||
this.mItems = consegne;
|
||||
|
||||
this.initDataAdapter(consegne);
|
||||
mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE);
|
||||
|
||||
mRenderedItems.clear();
|
||||
if(this.mItems != null) mRenderedItems.addAll(this.mItems);
|
||||
mAdapter.updateItems(mRenderedItems);
|
||||
|
||||
progressDialog.dismiss();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
|
||||
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
|
||||
List<DocumentoResoDTO> selectedOrders = getSelectedItems();
|
||||
|
||||
if(dto.isSelected()) {
|
||||
Stream.of(selectedOrders)
|
||||
.filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc()))
|
||||
.forEach(x -> x.setSelected(false));
|
||||
}
|
||||
|
||||
if(selectedOrders != null && selectedOrders.size() > 0) {
|
||||
mBinding.mainFab.show();
|
||||
}
|
||||
else {
|
||||
mBinding.mainFab.hide();
|
||||
}
|
||||
}
|
||||
|
||||
private List<DocumentoResoDTO> getSelectedItems() {
|
||||
return Stream.of(this.mItems)
|
||||
.filter(DocumentoResoDTO::isSelected)
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
private void dispatchConsegne() {
|
||||
List<DocumentoResoDTO> selectedConsegne = getSelectedItems();
|
||||
|
||||
PickingResiActivity.startActivity(mContext, mContext.getText(R.string.ultime_consegne_cliente_title).toString(), selectedConsegne, +1);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface UltimiArriviFornitoreComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory{
|
||||
UltimiArriviFornitoreComponent create();
|
||||
}
|
||||
|
||||
void inject(UltimiArriviFornitoreFragment ultimiArriviFornitoreFragment);
|
||||
|
||||
}
|
||||
@@ -7,41 +7,70 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* A simple {@link BaseFragment} subclass.
|
||||
*/
|
||||
public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, IFilterableFragment, UltimiArriviFornitoreViewModel.Listener {
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private UltimiArriviFornitoreViewModel mViewModel;
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private final ObservableArrayList<DocumentoResoDTO> mDocumentiMutableData = new ObservableArrayList<>();
|
||||
|
||||
@Inject
|
||||
UltimiArriviFornitoreViewModel mViewModel;
|
||||
|
||||
private FragmentUltimiArriviFornitoreBinding mBindings;
|
||||
private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
public UltimiArriviFornitoreFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public static UltimiArriviFornitoreFragment newInstance() {
|
||||
UltimiArriviFornitoreFragment fragment = new UltimiArriviFornitoreFragment();
|
||||
Bundle args = new Bundle();
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
return new UltimiArriviFornitoreFragment();
|
||||
}
|
||||
|
||||
|
||||
@@ -49,21 +78,155 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
FragmentUltimiArriviFornitoreBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false);
|
||||
mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false);
|
||||
|
||||
mViewModel = new UltimiArriviFornitoreViewModel(getActivity(), mBinding);
|
||||
MainApplication.appComponent
|
||||
.ultimiArriviFornitoreComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mBinding.setViewmodel(mViewModel);
|
||||
mViewModel.setListener(this);
|
||||
|
||||
mToolbar.setRecyclerView(mBinding.recyclerView);
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(mViewModel);
|
||||
|
||||
this.initRecyclerView();
|
||||
this.initBarcodeReader();
|
||||
|
||||
// Inflate the layout for this fragment
|
||||
return mBinding.getRoot();
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
mViewModel.init(codMdep);
|
||||
|
||||
this.mBindings.mainFab.hide();
|
||||
this.mBindings.mainFab.setOnClickListener(v -> {
|
||||
dispatchConsegne();
|
||||
});
|
||||
|
||||
this.mViewModel.getDocuments().observe(this.getViewLifecycleOwner(), this::refreshList);
|
||||
|
||||
openFilterDialog();
|
||||
}
|
||||
|
||||
|
||||
public void openFilterDialog() {
|
||||
this.mViewModel.loadCodAnagFornitori(gtbAnags -> {
|
||||
DialogUltimiArriviFornitoreFiltroAvanzato.make(getActivity(), gtbAnags, mAppliedFilterViewModel, (filter) -> {
|
||||
mAppliedFilterViewModel = filter;
|
||||
filterItems(null);
|
||||
}).show();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
UltimiArriviFornitoreListAdapter mAdapter =
|
||||
new UltimiArriviFornitoreListAdapter(getActivity(), mDocumentiMutableData);
|
||||
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
|
||||
mAdapter.setEmptyView(mBindings.emptyView);
|
||||
|
||||
mBindings.recyclerView.setHasFixedSize(true);
|
||||
mBindings.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
mBindings.recyclerView.setAdapter(mAdapter);
|
||||
// mBindings.fastscroll.setRecyclerView(mBindings.recyclerView);
|
||||
|
||||
if (mToolbar != null)
|
||||
mToolbar.setRecyclerView(mBindings.recyclerView);
|
||||
|
||||
}
|
||||
|
||||
private void initBarcodeReader() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
};
|
||||
|
||||
private void refreshList(List<DocumentoResoDTO> documentList) {
|
||||
this.mDocumentiMutableData.clear();
|
||||
this.mDocumentiMutableData.addAll(sort(documentList));
|
||||
}
|
||||
|
||||
private void filterItems(List<MtbAart> filteredMtbAarts) {
|
||||
this.openProgress();
|
||||
|
||||
String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null;
|
||||
String currentCodAnagFilter = null;
|
||||
|
||||
Optional<GtbAnag> singleGtbAnag = Stream.of(mViewModel.getGtbAnagClienti().getValue())
|
||||
.filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter))
|
||||
.findSingle();
|
||||
|
||||
if (singleGtbAnag.isPresent()) {
|
||||
currentCodAnagFilter = singleGtbAnag.get().getCodAnag();
|
||||
}
|
||||
|
||||
this.mViewModel.loadArriviFornitori(currentCodAnagFilter,
|
||||
filteredMtbAarts,
|
||||
-1,
|
||||
365);
|
||||
}
|
||||
|
||||
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
|
||||
List<DocumentoResoDTO> items = Stream.of(dataset)
|
||||
.sortBy(DocumentoResoDTO::getRagSoc)
|
||||
.toList();
|
||||
return items;
|
||||
|
||||
}
|
||||
|
||||
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
|
||||
List<DocumentoResoDTO> selectedOrders = getSelectedItems();
|
||||
|
||||
if(dto.isSelected()) {
|
||||
Stream.of(selectedOrders)
|
||||
.filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc()))
|
||||
.forEach(x -> x.setSelected(false));
|
||||
}
|
||||
|
||||
if(selectedOrders != null && selectedOrders.size() > 0) {
|
||||
mBindings.mainFab.show();
|
||||
}
|
||||
else {
|
||||
mBindings.mainFab.hide();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<DocumentoResoDTO> getSelectedItems() {
|
||||
return Stream.of(this.mDocumentiMutableData)
|
||||
.filter(DocumentoResoDTO::isSelected)
|
||||
.toList();
|
||||
}
|
||||
|
||||
private void dispatchConsegne() {
|
||||
List<DocumentoResoDTO> selectedConsegne = getSelectedItems();
|
||||
|
||||
PickingResiActivity.startActivity(getActivity(), getActivity().getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for(Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
@@ -74,29 +237,56 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
|
||||
titleText.setText(context.getText(R.string.ultime_arrivi_fornitore_title).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollToolbar(ElevatedToolbar toolbar) {
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onFilterClick() {
|
||||
mViewModel.openFilterDialog();
|
||||
openFilterDialog();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
BarcodeManager.disable();
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
this.closeProgress();
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColtScanned(MtbColt scannedMtbColt) {
|
||||
|
||||
DialogChooseArtsFromListaArts
|
||||
.make(getActivity(), scannedMtbColt.getMtbColr(), items -> {
|
||||
|
||||
List<MtbAart> mtbAarts = Stream.of(items)
|
||||
.map(MtbColr::getMtbAart)
|
||||
.toList();
|
||||
|
||||
filterItems(mtbAarts);
|
||||
|
||||
}, null)
|
||||
.show();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
|
||||
|
||||
@Module(subcomponents = UltimiArriviFornitoreComponent.class)
|
||||
public class UltimiArriviFornitoreModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
UltimiArriviFornitoreRESTConsumer providesUltimiArriviFornitoreRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new UltimiArriviFornitoreRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
UltimiArriviFornitoreViewModel providesUltimiArriviFornitoreViewModel(
|
||||
UltimiArriviFornitoreRESTConsumer ultimiArriviFornitoreRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
|
||||
return new UltimiArriviFornitoreViewModel(ultimiArriviFornitoreRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,38 +6,29 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListHeaderBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListSingleItemBinding;
|
||||
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
||||
|
||||
public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapter<UltimiArriviFornitoreListAdapter.SubheaderHolder, UltimiArriviFornitoreListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
|
||||
public class UltimiArriviFornitoreListAdapter extends ExtendedSectionedRecyclerView<DocumentoResoDTO,
|
||||
UltimiArriviFornitoreListAdapter.SubheaderHolder,
|
||||
UltimiArriviFornitoreListAdapter.SingleItemViewHolder> {
|
||||
|
||||
private Context mContext;
|
||||
private List<DocumentoResoDTO> mDataset;
|
||||
private ArrayList<String> mSectionTitleItems;
|
||||
|
||||
private RunnableArgs<DocumentoResoDTO> mOnSelectionChanged;
|
||||
|
||||
@Override
|
||||
public String getSectionTitle(int position) {
|
||||
return mSectionTitleItems.get(position);
|
||||
}
|
||||
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
@@ -64,13 +55,9 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
|
||||
|
||||
|
||||
|
||||
public UltimiArriviFornitoreListAdapter(Context context, ArrayList<DocumentoResoDTO> dataset) {
|
||||
super();
|
||||
public UltimiArriviFornitoreListAdapter(Context context, ObservableArrayList<DocumentoResoDTO> mutableDataSet) {
|
||||
super(mutableDataSet);
|
||||
this.mContext = context;
|
||||
this.mDataset = new ArrayList<>();
|
||||
this.mSectionTitleItems = new ArrayList<>();
|
||||
|
||||
mDataset.addAll(sort(dataset));
|
||||
}
|
||||
|
||||
|
||||
@@ -152,7 +139,7 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
|
||||
|
||||
public void updateItems(List<DocumentoResoDTO> updatedDataset) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sort(updatedDataset));
|
||||
mDataset.addAll(updatedDataset);
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
}
|
||||
@@ -163,28 +150,5 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
|
||||
}
|
||||
|
||||
|
||||
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
|
||||
List<DocumentoResoDTO> items = Stream.of(dataset)
|
||||
.sortBy(DocumentoResoDTO::getRagSoc)
|
||||
.toList();
|
||||
|
||||
|
||||
Stream.of(items)
|
||||
.map(DocumentoResoDTO::getRagSoc)
|
||||
.distinct()
|
||||
.forEach(x -> {
|
||||
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
|
||||
|
||||
long count = Stream.of(dataset)
|
||||
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
|
||||
.count();
|
||||
|
||||
|
||||
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
|
||||
});
|
||||
return items;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,154 +1,192 @@
|
||||
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUException;
|
||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
|
||||
|
||||
public class UltimiArriviFornitoreViewModel {
|
||||
|
||||
private Context mContext;
|
||||
private FragmentUltimiArriviFornitoreBinding mBinding;
|
||||
private final MutableLiveData<List<GtbAnag>> mGtbAnagClienti = new MutableLiveData<>();
|
||||
private final MutableLiveData<List<DocumentoResoDTO>> mDocuments = new MutableLiveData<>();
|
||||
|
||||
private List<DocumentoResoDTO> mItems;
|
||||
private List<DocumentoResoDTO> mRenderedItems = new ArrayList<>();
|
||||
private final UltimiArriviFornitoreRESTConsumer mUltimiArriviFornitoreRESTConsumer;
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
|
||||
private List<GtbAnag> mAvailableGtbAnags = null;
|
||||
private Listener mListener;
|
||||
|
||||
private UltimiArriviFornitoreListAdapter mAdapter;
|
||||
private String mCodMdep;
|
||||
|
||||
private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||
|
||||
public UltimiArriviFornitoreViewModel(Context context, FragmentUltimiArriviFornitoreBinding binding) {
|
||||
this.mContext = context;
|
||||
this.mBinding = binding;
|
||||
|
||||
this.mBinding.mainFab.hide();
|
||||
this.mBinding.mainFab.setOnClickListener(v -> {
|
||||
dispatchConsegne();
|
||||
});
|
||||
|
||||
openFilterDialog();
|
||||
@Inject
|
||||
public UltimiArriviFornitoreViewModel(
|
||||
UltimiArriviFornitoreRESTConsumer ultimiArriviFornitoreRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
|
||||
this.mUltimiArriviFornitoreRESTConsumer = ultimiArriviFornitoreRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void initDataAdapter(ArrayList<DocumentoResoDTO> dataset) {
|
||||
mAdapter = new UltimiArriviFornitoreListAdapter(mContext, dataset);
|
||||
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
|
||||
|
||||
mBinding.recyclerView.setHasFixedSize(true);
|
||||
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
|
||||
mBinding.recyclerView.setAdapter(mAdapter);
|
||||
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
|
||||
|
||||
public void init(String codMdep) {
|
||||
this.mCodMdep = codMdep;
|
||||
}
|
||||
|
||||
|
||||
public void openFilterDialog() {
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
public void loadCodAnagFornitori(RunnableArgs<List<GtbAnag>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
UltimiArriviFornitoreRESTConsumer.getAvailableCodAnagFornitori(gtbAnags -> {
|
||||
mAvailableGtbAnags = gtbAnags;
|
||||
progressDialog.dismiss();
|
||||
this.mUltimiArriviFornitoreRESTConsumer.getAvailableCodAnagFornitori(gtbAnags -> {
|
||||
mGtbAnagClienti.postValue(gtbAnags);
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
DialogUltimiArriviFornitoreFiltroAvanzato.make(mContext, mAvailableGtbAnags, mAppliedFilterViewModel, (filter) -> {
|
||||
mAppliedFilterViewModel = filter;
|
||||
refreshItems();
|
||||
}).show();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
onComplete.run(gtbAnags);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
public void loadArriviFornitori(String codAnag, List<MtbAart> mtbAarts, int limitDocsForCli, int limitDays) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mUltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(mCodMdep, codAnag, mtbAarts, limitDocsForCli, limitDays, documentList -> {
|
||||
this.mDocuments.postValue(documentList);
|
||||
this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
private void dispatchConsegne() {
|
||||
List<DocumentoResoDTO> selectedConsegne = getSelectedItems();
|
||||
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
|
||||
PickingResiActivity.startActivity(mContext, mContext.getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1);
|
||||
}
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
private List<DocumentoResoDTO> getSelectedItems() {
|
||||
return Stream.of(this.mItems)
|
||||
.filter(DocumentoResoDTO::isSelected)
|
||||
.toList();
|
||||
}
|
||||
Runnable onBarcodeScanComplete = () -> {
|
||||
onComplete.run();
|
||||
this.sendOnLoadingEnded();
|
||||
};
|
||||
|
||||
|
||||
private void refreshItems(){
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null;
|
||||
String currentCodAnagFilter = null;
|
||||
|
||||
Optional<GtbAnag> singleGtbAnag = Stream.of(mAvailableGtbAnags)
|
||||
.filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter))
|
||||
.findSingle();
|
||||
|
||||
if(singleGtbAnag.isPresent()) {
|
||||
currentCodAnagFilter = singleGtbAnag.get().getCodAnag();
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
|
||||
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
|
||||
this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete);
|
||||
} else {
|
||||
onComplete.run();
|
||||
}
|
||||
|
||||
|
||||
UltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(
|
||||
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
|
||||
currentCodAnagFilter,
|
||||
null,
|
||||
null,
|
||||
365,
|
||||
consegne -> {
|
||||
this.mItems = consegne;
|
||||
|
||||
this.initDataAdapter(consegne);
|
||||
|
||||
mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE);
|
||||
|
||||
mRenderedItems.clear();
|
||||
if(this.mItems != null) mRenderedItems.addAll(this.mItems);
|
||||
mAdapter.updateItems(mRenderedItems);
|
||||
|
||||
progressDialog.dismiss();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
|
||||
List<DocumentoResoDTO> selectedOrders = getSelectedItems();
|
||||
private void executeEtichettaLU(String SSCC, Runnable onComplete) {
|
||||
this.mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||
|
||||
if(dto.isSelected()) {
|
||||
Stream.of(selectedOrders)
|
||||
.filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc()))
|
||||
.forEach(x -> x.setSelected(false));
|
||||
}
|
||||
if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
if(mtbColt.getSegno() > 0) {
|
||||
|
||||
if(selectedOrders != null && selectedOrders.size() > 0) {
|
||||
mBinding.mainFab.show();
|
||||
}
|
||||
else {
|
||||
mBinding.mainFab.hide();
|
||||
}
|
||||
this.sendOnMtbColtScanned(mtbColt);
|
||||
|
||||
// this.mOrdiniUscitaElencoRESTConsumer.getOrdiniFromCommessaCollo(mCurrentCodMdep, mtbColt, orderList -> {
|
||||
//
|
||||
// if(orderList != null && orderList.size() > 0) {
|
||||
// List<Integer> numOrds = Stream.of(orderList)
|
||||
// .map(DtbOrdt::getNumOrd)
|
||||
// .toList();
|
||||
//
|
||||
// List<OrdiniUscitaElencoDTO> filteredOrders = Stream.of(mOrderList.getValue())
|
||||
// .filter(x -> numOrds.contains(x.getNumOrd())).toList();
|
||||
//
|
||||
// onComplete.run(filteredOrders);
|
||||
// } else {
|
||||
// this.sendError(new NoOrderFoundException());
|
||||
// }
|
||||
//
|
||||
// }, this::sendError);
|
||||
} else {
|
||||
this.sendError(new InvalidLUException());
|
||||
}
|
||||
} else {
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
|
||||
String barcodeProd = null;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
|
||||
barcodeProd = ean128Model.Content;
|
||||
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
|
||||
} else {
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
} else {
|
||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||
this.sendError(new NoLUFoundException());
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public MutableLiveData<List<GtbAnag>> getGtbAnagClienti() {
|
||||
return mGtbAnagClienti;
|
||||
}
|
||||
|
||||
public MutableLiveData<List<DocumentoResoDTO>> getDocuments() {
|
||||
return mDocuments;
|
||||
}
|
||||
|
||||
public UltimiArriviFornitoreViewModel setListener(UltimiArriviFornitoreViewModel.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 sendOnMtbColtScanned(MtbColt scannedMtbColt) {
|
||||
if (this.mListener != null) mListener.onMtbColtScanned(scannedMtbColt);
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
void onError(Exception ex);
|
||||
|
||||
void onMtbColtScanned(MtbColt scannedMtbColt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,49 +1,62 @@
|
||||
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
|
||||
@Singleton
|
||||
public class UltimiArriviFornitoreRESTConsumer {
|
||||
|
||||
public static void getAvailableCodAnagFornitori(RunnableArgs<List<GtbAnag>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
private final SystemRESTConsumer systemRESTConsumer;
|
||||
|
||||
public UltimiArriviFornitoreRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.systemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void getAvailableCodAnagFornitori(RunnableArgs<List<GtbAnag>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " +
|
||||
"FROM gtb_anag " +
|
||||
"INNER JOIN atb_forn ON atb_forn.cod_anag = gtb_anag.cod_anag " +
|
||||
"WHERE flag_stato = 'A'";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<GtbAnag>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<GtbAnag> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {
|
||||
}.getType();
|
||||
this.systemRESTConsumer.<ArrayList<GtbAnag>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
public static void getUltimeConsegneFornitori(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs<ArrayList<DocumentoResoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
public void getUltimeConsegneFornitori(String codMdep, String codAnag, List<MtbAart> mtbAarts, int limitConsegnePerCli, int limitDays, RunnableArgs<ArrayList<DocumentoResoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String codMarts = null;
|
||||
|
||||
if (mtbAarts != null && mtbAarts.size() > 0) {
|
||||
codMarts = StringUtils.join(Stream.of(mtbAarts)
|
||||
.map(MtbAart::getCodMart)
|
||||
.toList(), "|");
|
||||
}
|
||||
|
||||
String sql = "SELECT consegne.*, " +
|
||||
" rag_soc " +
|
||||
"FROM WMS_GetUltimeConsegneFornitori(" +
|
||||
UtilityDB.valueToString(limitConsegnePerCli) + ", " +
|
||||
UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " +
|
||||
UtilityDB.valueToString(codAnag) + ", " +
|
||||
UtilityDB.valueToString(codMart) + ", " +
|
||||
UtilityDB.valueToString(codMarts) + ", " +
|
||||
UtilityDB.valueToString(codMdep) + ", " +
|
||||
UtilityDB.valueToString(limitDays) + ") consegne " +
|
||||
"LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " +
|
||||
@@ -51,17 +64,12 @@ public class UltimiArriviFornitoreRESTConsumer {
|
||||
" counter_consegna ";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DocumentoResoDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<DocumentoResoDTO> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {
|
||||
}.getType();
|
||||
this.systemRESTConsumer.<ArrayList<DocumentoResoDTO>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, ex -> {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package it.integry.integrywmsnative.gest.versamento_merce;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface VersamentoMerceComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
VersamentoMerceComponent create();
|
||||
}
|
||||
|
||||
|
||||
void inject(VersamentoMerceFragment versamentoMerceFragment);
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user