Compare commits
70 Commits
v1.15.0(18
...
v1.16.14(1
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| 843679620b | |||
| 7346357b8e | |||
| b29a64a75a | |||
| 163a8cb27a | |||
| 8311f56154 | |||
| 0a76cc856c | |||
| 0ed536b0d5 | |||
| c8f8ccd64f | |||
| ecd0678aab | |||
| 3d7fb9e14f | |||
| 489687d392 | |||
| 5aa360af7c | |||
| e43ba3341f | |||
| db21ce554a | |||
| 86c9f3464c | |||
| 6376668d15 | |||
| 669bc1a8f5 | |||
| d78d99094f | |||
| c2c23c37a4 | |||
| b30bdb3df1 | |||
| 8e7ad53ec9 | |||
| e36441db73 | |||
| 97c63fb01d | |||
| cddc7681b0 | |||
| 3663b2bf4e | |||
| 91f4658fe3 | |||
| 8fba80c764 | |||
| 6dbc0c5894 | |||
| 14035b4c92 | |||
| 278f13ca6d | |||
| 52eb9ee0b7 | |||
| e89c786233 | |||
| 96439282cf | |||
| 13577f3c43 | |||
| f6dcbace57 | |||
| 2d0115723c | |||
| 5f90810a0f | |||
| b4fd56d8e2 | |||
| ed2a36d66a | |||
| 702ce4b79e | |||
| 99aac144f5 | |||
| 766ae1ae01 |
@@ -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 = 181
|
||||
def appVersionName = '1.15.0'
|
||||
def appVersionCode = 196
|
||||
def appVersionName = '1.16.14'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
@@ -97,7 +96,7 @@ 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'
|
||||
@@ -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"
|
||||
|
||||
@@ -277,6 +277,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 +294,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 +305,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 +318,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 +332,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);
|
||||
|
||||
@@ -13,8 +13,10 @@ import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
|
||||
import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdComponent;
|
||||
import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdModule;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
|
||||
@@ -23,8 +25,12 @@ 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.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
|
||||
|
||||
// Definition of the Application graph
|
||||
@Singleton
|
||||
@@ -39,9 +45,12 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
|
||||
SpedizioneModule.class,
|
||||
AccettazionePickingModule.class,
|
||||
PickingResiModule.class,
|
||||
ProdPosizionamentoDaOrdModule.class,
|
||||
OrdiniUscitaElencoModule.class,
|
||||
DialogInputQuantityV2Module.class})
|
||||
DialogInputQuantityV2Module.class,
|
||||
DialogScanArtModule.class,
|
||||
ProdFabbisognoLineeProdModule.class,
|
||||
DialogAskMagazzinoProssimitaModule.class,
|
||||
DialogRowInfoProdFabbisognoLineeProdModule.class})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
MainActivityComponent.Factory mainActivityComponent();
|
||||
@@ -52,10 +61,12 @@ public interface MainApplicationComponent {
|
||||
SpedizioneComponent.Factory spedizioneComponent();
|
||||
AccettazionePickingComponent.Factory accettazionePickingComponent();
|
||||
PickingResiComponent.Factory pickingResiComponent();
|
||||
ProdPosizionamentoDaOrdComponent.Factory prodPosizionamentoDaOrdComponent();
|
||||
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
|
||||
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
|
||||
|
||||
DialogScanArtComponent.Factory dialogScanArtComponent();
|
||||
ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();
|
||||
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 {
|
||||
@@ -88,5 +89,12 @@ public class MainApplicationModule {
|
||||
return new PosizioniRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
|
||||
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
|
||||
@@ -47,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, GestioneEnum.VENDITA, -1)))
|
||||
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null)))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_free_picking)
|
||||
@@ -78,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)
|
||||
@@ -89,10 +90,10 @@ 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(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, 1)))
|
||||
.setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
|
||||
|
||||
.addItem(new MenuItem()
|
||||
.setID(R.id.nav_prod_versamento_materiale)
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package it.integry.integrywmsnative.core.exception;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public class NoOrderFoundException extends Exception {
|
||||
|
||||
public NoOrderFoundException() {
|
||||
super(UtilityResources.getString(R.string.no_orders_found_message));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import android.view.KeyEvent;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.exception.MyExceptionHandler;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
|
||||
public class BaseActivity extends AppCompatActivity {
|
||||
@@ -15,7 +14,7 @@ public class BaseActivity extends AppCompatActivity {
|
||||
protected Dialog mCurrentProgress;
|
||||
|
||||
public BaseActivity() {
|
||||
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class));
|
||||
//Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
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;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
|
||||
public class BaseDialogFragment extends DialogFragment {
|
||||
|
||||
private boolean mBarcodeListener = false;
|
||||
private Dialog mCurrentProgress;
|
||||
|
||||
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)) {
|
||||
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isControlKey(KeyEvent keyEvent) {
|
||||
int keyCode = keyEvent.getKeyCode();
|
||||
return (
|
||||
keyCode == KeyEvent.KEYCODE_BACK ||
|
||||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
|
||||
keyCode == KeyEvent.KEYCODE_DEL
|
||||
);
|
||||
}
|
||||
|
||||
public void setBarcodeListener(boolean listen) {
|
||||
this.mBarcodeListener = listen;
|
||||
}
|
||||
|
||||
protected void openProgress() {
|
||||
if (this.mCurrentProgress == null) {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
}
|
||||
}
|
||||
|
||||
protected void closeProgress() {
|
||||
if (mCurrentProgress != null) {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
import android.app.Dialog;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
|
||||
public class BaseFragment extends Fragment {
|
||||
|
||||
protected Dialog mCurrentProgress;
|
||||
|
||||
|
||||
protected void openProgress() {
|
||||
if (this.mCurrentProgress == null) {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected void closeProgress() {
|
||||
if (mCurrentProgress != null) {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
public interface RunnableArgssss<S, T, U, V> {
|
||||
|
||||
void run(S data1, T data2, U data3, V data4);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package it.integry.integrywmsnative.core.model;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
public class GtbAnag {
|
||||
public class GtbAnag extends EntityBase {
|
||||
|
||||
private String codAnag;
|
||||
private String ragSoc;
|
||||
@@ -45,6 +45,10 @@ public class GtbAnag {
|
||||
private String precode;
|
||||
private Boolean insDestinatario;
|
||||
|
||||
public GtbAnag() {
|
||||
this.type = "gtb_anag";
|
||||
}
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class JtbFasi extends EntityBase {
|
||||
|
||||
private String codJfas;
|
||||
private String codJfasParent;
|
||||
private String descrizione;
|
||||
private String descrizEstesa;
|
||||
private String codMfas;
|
||||
private String pathIcona;
|
||||
private String umAllocazione;
|
||||
private BigDecimal maxAllocazione;
|
||||
private String codJCal;
|
||||
private String idJfas;
|
||||
private String flagAttivo;
|
||||
private String flagCheck;
|
||||
private String umProd;
|
||||
private BigDecimal prodStd;
|
||||
private String codMdepLav;
|
||||
private String tipoProd;
|
||||
|
||||
public JtbFasi() {
|
||||
this.type = "jtb_fasi";
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public JtbFasi setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfasParent() {
|
||||
return codJfasParent;
|
||||
}
|
||||
|
||||
public JtbFasi setCodJfasParent(String codJfasParent) {
|
||||
this.codJfasParent = codJfasParent;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public JtbFasi setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizEstesa() {
|
||||
return descrizEstesa;
|
||||
}
|
||||
|
||||
public JtbFasi setDescrizEstesa(String descrizEstesa) {
|
||||
this.descrizEstesa = descrizEstesa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMfas() {
|
||||
return codMfas;
|
||||
}
|
||||
|
||||
public JtbFasi setCodMfas(String codMfas) {
|
||||
this.codMfas = codMfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPathIcona() {
|
||||
return pathIcona;
|
||||
}
|
||||
|
||||
public JtbFasi setPathIcona(String pathIcona) {
|
||||
this.pathIcona = pathIcona;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUmAllocazione() {
|
||||
return umAllocazione;
|
||||
}
|
||||
|
||||
public JtbFasi setUmAllocazione(String umAllocazione) {
|
||||
this.umAllocazione = umAllocazione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getMaxAllocazione() {
|
||||
return maxAllocazione;
|
||||
}
|
||||
|
||||
public JtbFasi setMaxAllocazione(BigDecimal maxAllocazione) {
|
||||
this.maxAllocazione = maxAllocazione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJCal() {
|
||||
return codJCal;
|
||||
}
|
||||
|
||||
public JtbFasi setCodJCal(String codJCal) {
|
||||
this.codJCal = codJCal;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getIdJfas() {
|
||||
return idJfas;
|
||||
}
|
||||
|
||||
public JtbFasi setIdJfas(String idJfas) {
|
||||
this.idJfas = idJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagAttivo() {
|
||||
return flagAttivo;
|
||||
}
|
||||
|
||||
public JtbFasi setFlagAttivo(String flagAttivo) {
|
||||
this.flagAttivo = flagAttivo;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagCheck() {
|
||||
return flagCheck;
|
||||
}
|
||||
|
||||
public JtbFasi setFlagCheck(String flagCheck) {
|
||||
this.flagCheck = flagCheck;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUmProd() {
|
||||
return umProd;
|
||||
}
|
||||
|
||||
public JtbFasi setUmProd(String umProd) {
|
||||
this.umProd = umProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getProdStd() {
|
||||
return prodStd;
|
||||
}
|
||||
|
||||
public JtbFasi setProdStd(BigDecimal prodStd) {
|
||||
this.prodStd = prodStd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodMdepLav() {
|
||||
return codMdepLav;
|
||||
}
|
||||
|
||||
public JtbFasi setCodMdepLav(String codMdepLav) {
|
||||
this.codMdepLav = codMdepLav;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getTipoProd() {
|
||||
return tipoProd;
|
||||
}
|
||||
|
||||
public JtbFasi setTipoProd(String tipoProd) {
|
||||
this.tipoProd = tipoProd;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%s - %s", getCodJfas(), getDescrizione());
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
* Created by GiuseppeS on 06/03/2018.
|
||||
*/
|
||||
|
||||
public class MtbAart extends EntityBase{
|
||||
public class MtbAart extends EntityBase {
|
||||
|
||||
private String codMart;
|
||||
private String descrizione;
|
||||
|
||||
@@ -66,7 +66,10 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
.enqueue(new Callback<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> response) {
|
||||
analyzeAnswer(response, "getOrdiniInevasi", onComplete, ex -> {
|
||||
analyzeAnswer(response, "getOrdiniInevasi", responseDtoList -> {
|
||||
if(responseDtoList == null) responseDtoList = new ArrayList<>();
|
||||
onComplete.run(responseDtoList);
|
||||
}, ex -> {
|
||||
Logger.e(ex, "Errore durante il caricamento degli ordini di lavorazione");
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
@@ -108,6 +111,14 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
|
||||
public void getBancaliGiaRegistrati(List<OrdineInevasoDTO> orders, GestioneEnum gestione, int segno, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String whereCondGestione = "";
|
||||
|
||||
if(gestione != null) {
|
||||
whereCondGestione = "mtb_colt.gestione = " + UtilityDB.valueToString(gestione.getText()) + " ";
|
||||
} else {
|
||||
whereCondGestione = "(mtb_colt.gestione = 'V' OR mtb_colt.gestione = 'L') ";
|
||||
}
|
||||
|
||||
String baseSql = "SELECT DISTINCT mtb_colt.* " +
|
||||
"FROM mtb_colt, " +
|
||||
" mtb_colr " +
|
||||
@@ -115,7 +126,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
" AND mtb_colt.ser_collo = mtb_colr.ser_collo " +
|
||||
" AND mtb_colt.data_collo = mtb_colr.data_collo " +
|
||||
" AND mtb_colt.num_collo = mtb_colr.num_collo " +
|
||||
" AND mtb_colt.gestione = " + UtilityDB.valueToString(gestione.getText()) + " " +
|
||||
" AND " + whereCondGestione +
|
||||
" AND mtb_colt.segno = " + UtilityDB.valueToString(segno) + " " +
|
||||
" AND mtb_colt.data_doc IS NULL AND ";
|
||||
|
||||
@@ -132,16 +143,10 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
|
||||
baseSql += "(" + UtilityQuery.concatFieldListInWhereCond(whereCondMapList) + ")";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
||||
this.mSystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MtbColt> value) {
|
||||
this.mSystemRESTConsumer.<List<MtbColt>>processSql(baseSql, typeOfObjectsList, value -> {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
}, ex -> {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
onFailed.run(ex);
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -81,12 +81,8 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
}
|
||||
|
||||
public <T> void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) {
|
||||
|
||||
processSqlStatic(nativeSql, clazz, data -> {
|
||||
callback.onSuccess((T) data);
|
||||
}, callback::onFailed);
|
||||
|
||||
public <T> void processSql(String nativeSql, final Type clazz, final RunnableArgs<T> onComplete, final RunnableArgs<Exception> onFailed) {
|
||||
processSqlStatic(nativeSql, clazz, onComplete, onFailed);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,17 +27,17 @@ public class UpdatesManager {
|
||||
public static void init(Activity context) {
|
||||
String suffix;
|
||||
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
|
||||
try{
|
||||
try {
|
||||
suffix = customConfiguration.getConfig(BaseCustomConfiguration.Keys.CUSTOM_DYNAMIC_VERSION_PATH);
|
||||
if (suffix == null){
|
||||
if (suffix == null) {
|
||||
suffix = "";
|
||||
}
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
suffix = "";
|
||||
}
|
||||
|
||||
String currentVersionUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/currentVersion";
|
||||
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release"+suffix+"_v2.apk";
|
||||
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk";
|
||||
|
||||
|
||||
AppUpdater appUpdater = new AppUpdater(context)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.core.utility;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
public class UtilityBigDecimal {
|
||||
|
||||
@@ -50,23 +51,28 @@ public class UtilityBigDecimal {
|
||||
|
||||
|
||||
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return divide(input1, divisor, RoundingMode.HALF_EVEN);
|
||||
}
|
||||
|
||||
return input1.divide(divisor, 3, BigDecimal.ROUND_HALF_EVEN);
|
||||
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return input1.divide(divisor, 3, roundingMode);
|
||||
}
|
||||
|
||||
|
||||
public static BigDecimal divideToInteger(BigDecimal input1, BigDecimal divisor) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
|
||||
return new BigDecimal(input1.divide(divisor,3, BigDecimal.ROUND_HALF_EVEN).intValue());
|
||||
}
|
||||
|
||||
|
||||
public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return divideAndRoundToInteger(input1, divisor, RoundingMode.HALF_EVEN);
|
||||
}
|
||||
|
||||
return new BigDecimal(input1.divide(divisor,0, BigDecimal.ROUND_HALF_EVEN).intValue());
|
||||
public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) {
|
||||
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||
return new BigDecimal(input1.divide(divisor,0, roundingMode).intValue());
|
||||
}
|
||||
|
||||
public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) {
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -45,7 +45,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
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,24 +81,14 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
|
||||
mAppBarTitle.setText(context.getText(R.string.accettazione_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false);
|
||||
|
||||
init();
|
||||
|
||||
mBinding.setView(this);
|
||||
mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
mBinding.accettazioneMainFab.hide();
|
||||
@@ -159,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()) {
|
||||
@@ -254,8 +244,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;
|
||||
@@ -59,7 +61,7 @@ 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.input_quantity_v2.DialogInputQuantityV2;
|
||||
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,8 +242,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
||||
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
@@ -246,10 +251,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
@@ -258,10 +260,26 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.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));
|
||||
}
|
||||
|
||||
accettazioneListModel.setOriginalModel(x);
|
||||
@@ -287,7 +305,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
@@ -296,10 +314,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
@@ -308,14 +323,27 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.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());
|
||||
}
|
||||
|
||||
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,8 +368,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
accettazioneListModel.setBadge1(x.getSitArtOrdDTO().getCodArtFor());
|
||||
accettazioneListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
|
||||
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
//Calc Num CNF
|
||||
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
@@ -350,10 +377,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
//Calc qta col
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||
@@ -362,10 +386,25 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.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) {
|
||||
@@ -389,8 +428,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());
|
||||
@@ -554,7 +630,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
.setCanLUBeClosed(true)
|
||||
.setCanOverflowOrderQuantity(canOverflowQuantity);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
|
||||
@@ -482,7 +482,7 @@ public class AccettazionePickingViewModel {
|
||||
|
||||
|
||||
if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) {
|
||||
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
|
||||
numCnfDaPrelevare = UtilityBigDecimal.divideAndRoundToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
|
||||
|
||||
if (!mtbAart.isFlagQtaCnfFissaBoolean()) {
|
||||
if (UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO))
|
||||
@@ -612,7 +612,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;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
@@ -134,17 +133,9 @@ public class AccettazionePickingRESTConsumer {
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<RecoverMtbColt>>() {
|
||||
}.getType();
|
||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<RecoverMtbColt>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<RecoverMtbColt> value) {
|
||||
mSystemRestConsumer.<ArrayList<RecoverMtbColt>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}, onFailed);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -11,9 +10,9 @@ 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;
|
||||
@@ -24,15 +23,21 @@ 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.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;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
@@ -40,17 +45,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;
|
||||
|
||||
public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener {
|
||||
public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener {
|
||||
|
||||
public BindableBoolean fabVisible = new BindableBoolean(false);
|
||||
|
||||
@@ -59,31 +64,34 @@ 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();
|
||||
|
||||
args.putString("gestioneOrd", gestioneOrd.getText());
|
||||
args.putString("gestioneCol", gestioneCol.getText());
|
||||
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;
|
||||
}
|
||||
@@ -92,8 +100,12 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mCurrentGestioneOrd = GestioneEnum.fromString(getArguments().getString("gestioneOrd"));
|
||||
mCurrentGestioneCol = GestioneEnum.fromString(getArguments().getString("gestioneCol"));
|
||||
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
|
||||
@@ -114,6 +126,7 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
mBindings.setViewmodel(mViewModel);
|
||||
|
||||
this.initRecyclerView();
|
||||
this.initBarcodeReader();
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
@@ -126,6 +139,14 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
|
||||
boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders();
|
||||
@@ -169,6 +190,24 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
mToolbar.setRecyclerView(this.mBindings.venditaMainList);
|
||||
}
|
||||
|
||||
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.openProgress();
|
||||
|
||||
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||
BarcodeManager.enable();
|
||||
this.closeProgress();
|
||||
});
|
||||
};
|
||||
|
||||
private void refreshList(List<OrdiniUscitaElencoDTO> orderList) {
|
||||
this.mOrdiniInevasiMutableData.clear();
|
||||
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(orderList));
|
||||
@@ -186,6 +225,14 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
.map(x -> {
|
||||
OrdiniUscitaElencoListModel listModel = new OrdiniUscitaElencoListModel();
|
||||
|
||||
if (x.isFlagEvaso()) {
|
||||
listModel.setEtichettaColor(ResourcesCompat.getColor(getResources(), R.color.mainGreen, null));
|
||||
} else if (x.isExistColloBoolean()) {
|
||||
listModel.setEtichettaColor(ResourcesCompat.getColor(getResources(), R.color.colorPrimary, null));
|
||||
} else {
|
||||
listModel.setEtichettaColor(ResourcesCompat.getColor(getResources(), android.R.color.transparent, null));
|
||||
}
|
||||
|
||||
listModel.setGroupTitle(x.getRagSocOrd());
|
||||
|
||||
String testataOrdString = String.format(getString(R.string.ord_ven_testata), String.valueOf(x.getNumOrd()), UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
@@ -214,10 +261,6 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onComplete) {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
onComplete.run();
|
||||
}
|
||||
@@ -227,14 +270,8 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
titleText.setText(context.getText(R.string.prod_ordine_lavorazione_title_fragment).toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
public void dispatchOrders() {
|
||||
|
||||
List<OrdiniUscitaElencoDTO> selectedOrders = Stream.of(this.mOrdiniInevasiMutableData)
|
||||
.filter(x -> x.getSelectedObservable().get())
|
||||
.map(OrdiniUscitaElencoListModel::getOriginalModel)
|
||||
@@ -245,23 +282,6 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
@@ -281,6 +301,11 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) {
|
||||
refreshList(filteredOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
|
||||
List<String> codMarts = Stream.of(sitArts)
|
||||
@@ -298,7 +323,7 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
+ "<br />" +
|
||||
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
|
||||
null,
|
||||
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol)
|
||||
() -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol, MtbColr.Causale.DEFAULT, mDialogRowInfo)
|
||||
).show();
|
||||
}
|
||||
|
||||
@@ -307,11 +332,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();
|
||||
@@ -327,11 +347,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;
|
||||
|
||||
@@ -351,4 +366,9 @@ public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragm
|
||||
|
||||
}).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,26 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
|
||||
|
||||
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.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.rest.OrdiniUscitaElencoRESTConsumer;
|
||||
|
||||
@Module(subcomponents = OrdiniUscitaElencoComponent.class)
|
||||
public class OrdiniUscitaElencoModule {
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
OrdiniUscitaElencoViewModel providesProdOrdineLavorazioneElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer) {
|
||||
return new OrdiniUscitaElencoViewModel(ordiniRESTConsumer);
|
||||
OrdiniUscitaElencoRESTConsumer providesOrdiniUscitaElencoRESTConsumer() {
|
||||
return new OrdiniUscitaElencoRESTConsumer();
|
||||
}
|
||||
|
||||
@Provides
|
||||
OrdiniUscitaElencoViewModel providesProdOrdineLavorazioneElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, OrdiniUscitaElencoRESTConsumer ordiniUscitaElencoRESTConsumer) {
|
||||
return new OrdiniUscitaElencoViewModel(ordiniRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, ordiniUscitaElencoRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,25 +4,42 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUMultiCodMdepException;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException;
|
||||
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.model.DtbOrdt;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.rest.OrdiniUscitaElencoRESTConsumer;
|
||||
|
||||
public class OrdiniUscitaElencoViewModel {
|
||||
|
||||
private final MutableLiveData<List<OrdiniUscitaElencoDTO>> mOrderList = new MutableLiveData<>();
|
||||
|
||||
private final OrdiniRESTConsumer mOrdiniRESTConsumer;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final OrdiniUscitaElencoRESTConsumer mOrdiniUscitaElencoRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
private String mCurrentCodMdep;
|
||||
private GestioneEnum mCurrentGestioneOrd;
|
||||
@@ -30,8 +47,11 @@ public class OrdiniUscitaElencoViewModel {
|
||||
private int mCurrentSegnoCol;
|
||||
|
||||
@Inject
|
||||
public OrdiniUscitaElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer) {
|
||||
public OrdiniUscitaElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, OrdiniUscitaElencoRESTConsumer ordiniUscitaElencoRESTConsumer) {
|
||||
this.mOrdiniRESTConsumer = ordiniRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mOrdiniUscitaElencoRESTConsumer = ordiniUscitaElencoRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
@@ -121,6 +141,118 @@ public class OrdiniUscitaElencoViewModel {
|
||||
}
|
||||
|
||||
|
||||
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
|
||||
RunnableArgs<List<OrdiniUscitaElencoDTO>> onBarcodeScanComplete = orderList -> {
|
||||
onComplete.run();
|
||||
this.sendOnOrderFiltered(orderList);
|
||||
};
|
||||
|
||||
if(UtilityBarcode.isBarcodeOrdineV(barcodeScanDTO)) {
|
||||
this.executeEtichettaOrdineV(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
|
||||
} else if(UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete);
|
||||
} else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)){
|
||||
this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete);
|
||||
} else {
|
||||
onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void executeEtichettaOrdineV(String barcode, RunnableArgs<List<OrdiniUscitaElencoDTO>> onComplete) {
|
||||
String gestione = "";
|
||||
|
||||
char c = barcode.charAt(0);
|
||||
if (c == '1')
|
||||
gestione = "A";
|
||||
else if (c == '2')
|
||||
gestione = "L";
|
||||
else if (c == '3')
|
||||
gestione = "V";
|
||||
|
||||
int numOrd = Integer.parseInt(UtilityString.mid(barcode, 10));
|
||||
|
||||
Date date = null;
|
||||
try {
|
||||
date = new SimpleDateFormat("ddMMyyyy")
|
||||
.parse(UtilityString.mid(barcode, 2, 8));
|
||||
} catch (ParseException ex) {
|
||||
this.sendError(ex);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
final String finalGestione = gestione;
|
||||
final Date finalDate = date;
|
||||
|
||||
List<OrdiniUscitaElencoDTO> filteredOrders = Stream.of(mOrderList.getValue())
|
||||
.filter(x -> x.getNumOrd() == numOrd && x.getGestione().equalsIgnoreCase(finalGestione) && x.getDataOrdD().equals(finalDate)).toList();
|
||||
|
||||
onComplete.run(filteredOrders);
|
||||
}
|
||||
|
||||
|
||||
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<OrdiniUscitaElencoDTO>> getOrderList() {
|
||||
return mOrderList;
|
||||
}
|
||||
@@ -142,6 +274,10 @@ public class OrdiniUscitaElencoViewModel {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
private void sendOnOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders) {
|
||||
if (this.mListener != null) mListener.onOrderFiltered(filteredOrders);
|
||||
}
|
||||
|
||||
private void sendOnOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
|
||||
if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts);
|
||||
}
|
||||
@@ -153,6 +289,8 @@ public class OrdiniUscitaElencoViewModel {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onOrderFiltered(List<OrdiniUscitaElencoDTO> filteredOrders);
|
||||
|
||||
void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
@@ -127,6 +128,10 @@ public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter<Ordi
|
||||
|
||||
listModel.getSelectedObservable().resetOnPropertyChangedCallback();
|
||||
|
||||
if(listModel.getEtichettaColor() != null)
|
||||
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()))
|
||||
holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription()));
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.list;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
||||
|
||||
@@ -11,6 +13,8 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
|
||||
private String rightDescription;
|
||||
private String rightSubDescription;
|
||||
|
||||
private @ColorInt Integer etichettaColor;
|
||||
|
||||
private boolean hidden;
|
||||
private BindableBoolean selected = new BindableBoolean();
|
||||
|
||||
@@ -63,6 +67,15 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public @ColorInt Integer getEtichettaColor() {
|
||||
return etichettaColor;
|
||||
}
|
||||
|
||||
public OrdiniUscitaElencoListModel setEtichettaColor(@ColorInt Integer etichettaColor) {
|
||||
this.etichettaColor = etichettaColor;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.rest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbOrdt;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
@Singleton
|
||||
public class OrdiniUscitaElencoRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
public void getOrdiniFromCommessaCollo(String codMdep, MtbColt testataCollo, RunnableArgs<List<DtbOrdt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
OrdiniUscitaElencoRESTConsumerService service = RESTBuilder.getService(OrdiniUscitaElencoRESTConsumerService.class);
|
||||
service.getOrdiniInCommessaCollo(
|
||||
testataCollo.getDataColloS(),
|
||||
testataCollo.getNumCollo(),
|
||||
testataCollo.getSerCollo(),
|
||||
testataCollo.getGestione(),
|
||||
GestioneEnum.VENDITA.getText(),
|
||||
codMdep)
|
||||
.enqueue(new Callback<ServiceRESTResponse<List<DtbOrdt>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<DtbOrdt>>> call, Response<ServiceRESTResponse<List<DtbOrdt>>> response) {
|
||||
analyzeAnswer(response, "getOrdiniFromCommessaCollo", (m) -> {
|
||||
onComplete.run(response.body().getEntity());
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<List<DtbOrdt>>> call, Throwable t) {
|
||||
onFailed.run(new Exception(t));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.rest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.DtbOrdt;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
public interface OrdiniUscitaElencoRESTConsumerService {
|
||||
|
||||
@GET("getOrdiniInCommCollo")
|
||||
Call<ServiceRESTResponse<List<DtbOrdt>>> getOrdiniInCommessaCollo(@Query("dataCollo") String dataCollo, @Query("numCollo") Integer numCollo, @Query("serCollo") String serCollo, @Query("gestioneCollo") String gestioneCollo, @Query("gestioneOrdine") String gestioneOrdine, @Query("codMdep") String codMdep);
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
@@ -58,13 +57,13 @@ 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.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.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 +83,6 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private Dialog mCurrentProgress;
|
||||
|
||||
private GestioneEnum mCurrentGestione;
|
||||
|
||||
public PickingLiberoFragment() {
|
||||
@@ -108,11 +105,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 +213,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 +226,6 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
mToolbar = toolbar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScrollableOnPreDestroy(Runnable onPreDestroy) {
|
||||
mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
@@ -373,7 +346,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||
.setCanLUBeClosed(canLUBeClosed);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
@@ -413,4 +386,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
else onComplete.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -512,7 +512,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());
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
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;
|
||||
|
||||
@@ -309,7 +309,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
|
||||
.setCanLUBeClosed(false)
|
||||
.setCanPartitaMagBeChanged(false);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
|
||||
@@ -378,7 +378,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());
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -105,8 +106,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);
|
||||
|
||||
@@ -15,7 +15,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
@@ -55,9 +54,7 @@ public class PickingResiRESTConsumer {
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
|
||||
this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
|
||||
this.mSystemRestConsumer.<ArrayList<WithdrawableDtbDocr>>processSql(sql, typeOfObjectsList, values -> {
|
||||
|
||||
if(values != null && values.size() > 0){
|
||||
List<String> codMarts = Stream.of(values)
|
||||
@@ -92,13 +89,7 @@ public class PickingResiRESTConsumer {
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
@@ -152,12 +147,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);
|
||||
@@ -260,4 +249,9 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
|
||||
mRenderedOrderList.clear();
|
||||
mRenderedOrderList.addAll(ordini);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface ProdFabbisognoLineeProdComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
ProdFabbisognoLineeProdComponent create();
|
||||
}
|
||||
|
||||
void inject(ProdFabbisognoLineeProdFragment prodFabbisognoLineeProdFragment);
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
|
||||
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, ProdFabbisognoLineeProdViewModel.Listener {
|
||||
|
||||
@Inject
|
||||
ProdFabbisognoLineeProdViewModel mViewModel;
|
||||
|
||||
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
private FragmentProdFabbisognoLineeProdBinding mBindings;
|
||||
|
||||
public ProdFabbisognoLineeProdFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public static ProdFabbisognoLineeProdFragment newInstance() {
|
||||
ProdFabbisognoLineeProdFragment fragment = new ProdFabbisognoLineeProdFragment();
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_fabbisogno_linee_prod, container, false);
|
||||
|
||||
mBindings.setLifecycleOwner(this);
|
||||
|
||||
MainApplication.appComponent
|
||||
.prodFabbisognoLineeProdComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
this.mViewModel.setListener(this);
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
DialogAskMagazzinoProssimitaView
|
||||
.newInstance((jtbFase, startDate, endDate) -> {
|
||||
// if (jtbFase == null) {
|
||||
// ((IPoppableActivity) getActivity()).pop();
|
||||
// } else {
|
||||
//Load fabbisogno
|
||||
this.mViewModel.loadFabbisogno(startDate, endDate, codMdep, this::startPickingActivity);
|
||||
// }
|
||||
})
|
||||
.show(getActivity().getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
for (Runnable onPreDestroy : mOnPreDestroyList) {
|
||||
onPreDestroy.run();
|
||||
}
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
titleText.setText(context.getText(R.string.prod_fabbisogno_linee_prod_title).toString());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(getActivity(), ex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
this.closeProgress();
|
||||
}
|
||||
|
||||
|
||||
private void startPickingActivity(List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
List<SitArtOrdDTO> sitArtOrdDTOS = Stream.of(fabbisognoList)
|
||||
.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(),
|
||||
sitArtOrdDTOS,
|
||||
null,
|
||||
new ArrayList<>(),
|
||||
GestioneEnum.LAVORAZIONE,
|
||||
+1,
|
||||
MtbColr.Causale.VERSAMENTO,
|
||||
DialogRowInfoProdFabbisognoLineeProdView.class);
|
||||
|
||||
((IPoppableActivity) getActivity()).pop();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
@Module(subcomponents = ProdFabbisognoLineeProdComponent.class)
|
||||
public class ProdFabbisognoLineeProdModule {
|
||||
|
||||
@Provides
|
||||
ProdFabbisognoLineeProdViewModel providesProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
return new ProdFabbisognoLineeProdViewModel(prodFabbisognoLineeProdRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
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.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
|
||||
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
public class ProdFabbisognoLineeProdViewModel {
|
||||
|
||||
private final ProdFabbisognoLineeProdRESTConsumer mProdFabbisognoLineeProdRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
public ProdFabbisognoLineeProdViewModel(ProdFabbisognoLineeProdRESTConsumer prodFabbisognoLineeProdRESTConsumer) {
|
||||
this.mProdFabbisognoLineeProdRESTConsumer = prodFabbisognoLineeProdRESTConsumer;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void loadFabbisogno(Date startDate, Date endDate, String codMdep, RunnableArgs<List<ProdFabbisognoLineeProdDTO>> onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mProdFabbisognoLineeProdRESTConsumer.loadFabbisogno(startDate, endDate, codMdep, jtbFasi -> {
|
||||
if (jtbFasi != null) Stream.of(jtbFasi)
|
||||
.forEach(x -> x
|
||||
.setDataInizio(startDate)
|
||||
.setDataFine(endDate));
|
||||
|
||||
this.sendOnLoadingEnded();
|
||||
onComplete.run(jtbFasi);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
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,114 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Filter;
|
||||
import android.widget.Filterable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.model.JtbFasi;
|
||||
|
||||
public class DialogAskMagazzinoProssimitaAdapter extends ArrayAdapter<JtbFasi> implements Filterable {
|
||||
|
||||
private final Context mContext;
|
||||
private final List<JtbFasi> mDataset;
|
||||
private List<JtbFasi> mDatasetAllItems;
|
||||
|
||||
private final ListFilter listFilter = new ListFilter();
|
||||
|
||||
public DialogAskMagazzinoProssimitaAdapter(@NonNull Context context, @NonNull List<JtbFasi> list) {
|
||||
super(context, 0, list);
|
||||
mContext = context;
|
||||
mDataset = list;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
View listItem = convertView;
|
||||
if (listItem == null) {
|
||||
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false);
|
||||
}
|
||||
|
||||
if (position < mDataset.size()) {
|
||||
AppCompatTextView textView = listItem.findViewById(R.id.text);
|
||||
textView.setText(mDataset.get(position).toString());
|
||||
return listItem;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Filter getFilter() {
|
||||
return listFilter;
|
||||
}
|
||||
|
||||
public class ListFilter extends Filter {
|
||||
private Object lock = new Object();
|
||||
|
||||
@Override
|
||||
protected FilterResults performFiltering(CharSequence prefix) {
|
||||
FilterResults results = new FilterResults();
|
||||
if (mDatasetAllItems == null) {
|
||||
synchronized (lock) {
|
||||
mDatasetAllItems = new ArrayList<>(mDataset);
|
||||
}
|
||||
}
|
||||
|
||||
if (prefix == null || prefix.length() == 0) {
|
||||
synchronized (lock) {
|
||||
results.values = mDatasetAllItems;
|
||||
results.count = mDatasetAllItems.size();
|
||||
}
|
||||
} else {
|
||||
final String searchStrLowerCase = prefix.toString().toLowerCase();
|
||||
|
||||
ArrayList<JtbFasi> matchValues = new ArrayList<>();
|
||||
|
||||
for (JtbFasi dataItem : mDatasetAllItems) {
|
||||
if (dataItem.getCodJfas().toLowerCase().startsWith(searchStrLowerCase) ||
|
||||
dataItem.getDescrizione().toLowerCase().startsWith(searchStrLowerCase)) {
|
||||
matchValues.add(dataItem);
|
||||
}
|
||||
}
|
||||
|
||||
results.values = matchValues;
|
||||
results.count = matchValues.size();
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void publishResults(CharSequence constraint, FilterResults results) {
|
||||
if (results.values != null) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll((ArrayList<JtbFasi>) results.values);
|
||||
} else {
|
||||
mDataset.clear();
|
||||
}
|
||||
if (results.count > 0) {
|
||||
notifyDataSetChanged();
|
||||
} else {
|
||||
notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface DialogAskMagazzinoProssimitaComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
DialogAskMagazzinoProssimitaComponent create();
|
||||
}
|
||||
|
||||
void inject(DialogAskMagazzinoProssimitaView dialogAskMagazzinoProssimitaView);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
|
||||
@Module
|
||||
public class DialogAskMagazzinoProssimitaModule {
|
||||
|
||||
@Provides
|
||||
DialogAskMagazzinoProssimitaViewModel providesDialogAskMagazzinoProssimitaViewModel(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new DialogAskMagazzinoProssimitaViewModel(systemRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
import it.integry.integrywmsnative.core.model.JtbFasi;
|
||||
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.databinding.DialogAskMagazzinoProssimitaBinding;
|
||||
|
||||
public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment implements DialogAskMagazzinoProssimitaViewModel.Listener {
|
||||
|
||||
@Inject
|
||||
DialogAskMagazzinoProssimitaViewModel mViewModel;
|
||||
|
||||
private final RunnableArgsss<JtbFasi, Date, Date> mOnItemSelected;
|
||||
|
||||
private Context mContext;
|
||||
private DialogAskMagazzinoProssimitaBinding mBindings;
|
||||
|
||||
// private JtbFasi mSelectedItem;
|
||||
|
||||
public static DialogAskMagazzinoProssimitaView newInstance(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) {
|
||||
return new DialogAskMagazzinoProssimitaView(onItemSelected);
|
||||
}
|
||||
|
||||
|
||||
private DialogAskMagazzinoProssimitaView(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) {
|
||||
super();
|
||||
|
||||
this.mOnItemSelected = onItemSelected;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
this.mContext = getActivity();
|
||||
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_magazzino_prossimita, container, false);
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialogAskMagazzinoProssimitaComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mBindings.setView(this);
|
||||
mBindings.setViewmodel(this.mViewModel);
|
||||
|
||||
getDialog().setCanceledOnTouchOutside(false);
|
||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
|
||||
mBindings.buttonConfirm.setOnClickListener(new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
// if(mSelectedItem != null) {
|
||||
getDialog().dismiss();
|
||||
// } else {
|
||||
// FBToast.warningToast(mContext, getResources().getString(R.string.please_select_an_item), Toast.LENGTH_LONG);
|
||||
// }
|
||||
}
|
||||
});
|
||||
|
||||
mBindings.buttonAbort.setOnClickListener(new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
getDialog().dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
mBindings.filledExposedDropdownStartDate.setOnClickListener(onStartDateClickListener);
|
||||
mBindings.filledExposedDropdownEndDate.setOnClickListener(onEndDateClickListener);
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
|
||||
this.mViewModel.setListener(this);
|
||||
this.mViewModel.init(codMdep);
|
||||
|
||||
// this.mViewModel.getJtbFasi().observe(getViewLifecycleOwner(), this::onPosizioniLoaded);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
mOnItemSelected.run(null, mViewModel.startDate, mViewModel.endDate);
|
||||
}
|
||||
|
||||
private final View.OnClickListener onStartDateClickListener = new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
Calendar c = UtilityDate.getCalendarInstance();
|
||||
|
||||
|
||||
if(mViewModel.startDateBindable != null) {
|
||||
c.setTime(mViewModel.startDate);
|
||||
}
|
||||
|
||||
int mYear = c.get(Calendar.YEAR);
|
||||
int mMonth = c.get(Calendar.MONTH);
|
||||
int mDay = c.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
|
||||
(view2, year, month, day) -> {
|
||||
|
||||
mViewModel.startDate = new GregorianCalendar(year, month, day).getTime();
|
||||
mViewModel.startDateBindable.set(UtilityDate.formatDate(mViewModel.startDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
}, mYear, mMonth, mDay);
|
||||
datePickerDialog.show();
|
||||
}
|
||||
};
|
||||
|
||||
private final View.OnClickListener onEndDateClickListener = new OnSingleClickListener() {
|
||||
@Override
|
||||
public void onSingleClick(View v) {
|
||||
Calendar c = UtilityDate.getCalendarInstance();
|
||||
|
||||
if(mViewModel.endDateBindable != null) {
|
||||
c.setTime(mViewModel.endDate);
|
||||
}
|
||||
|
||||
int mYear = c.get(Calendar.YEAR);
|
||||
int mMonth = c.get(Calendar.MONTH);
|
||||
int mDay = c.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
|
||||
(view2, year, month, day) -> {
|
||||
|
||||
mViewModel.endDate = new GregorianCalendar(year, month, day).getTime();
|
||||
mViewModel.endDateBindable.set(UtilityDate.formatDate(mViewModel.endDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
}, mYear, mMonth, mDay);
|
||||
datePickerDialog.show();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// 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) {
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(mContext, ex);
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
this.openProgress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
this.closeProgress();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
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.UtilityDate;
|
||||
|
||||
public class DialogAskMagazzinoProssimitaViewModel {
|
||||
|
||||
public BindableString startDateBindable = new BindableString();
|
||||
public BindableString endDateBindable = new BindableString();
|
||||
|
||||
public Date startDate = new Date();
|
||||
public Date endDate = new Date();
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
private final MutableLiveData<List<JtbFasi>> mJtbFasi = new MutableLiveData<>();
|
||||
|
||||
private final SystemRESTConsumer mSystemRESTConsumer;
|
||||
|
||||
public DialogAskMagazzinoProssimitaViewModel(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.mSystemRESTConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void init(String codMdep) {
|
||||
|
||||
Calendar c = UtilityDate.getCalendarInstance();
|
||||
c.set(Calendar.DAY_OF_WEEK, c.getActualMinimum(Calendar.DAY_OF_WEEK));
|
||||
c.add(Calendar.DAY_OF_MONTH, -7);
|
||||
startDate = c.getTime();
|
||||
startDateBindable.set(UtilityDate.formatDate(startDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
c.add(Calendar.DAY_OF_MONTH, 7);
|
||||
endDate = c.getTime();
|
||||
endDateBindable.set(UtilityDate.formatDate(endDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
// 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;
|
||||
// }
|
||||
|
||||
|
||||
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,121 @@
|
||||
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;
|
||||
private BigDecimal qtaColVersata;
|
||||
private BigDecimal numCnfVersata;
|
||||
private BigDecimal qtaFabbisogno;
|
||||
private BigDecimal numCnfFabbisogno;
|
||||
private Date dataInizio;
|
||||
private Date dataFine;
|
||||
|
||||
public ProdFabbisognoLineeProdDTO() {
|
||||
}
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJfas() {
|
||||
return codJfas;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setCodJfas(String codJfas) {
|
||||
this.codJfas = codJfas;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaOrd() {
|
||||
return qtaOrd;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setQtaOrd(BigDecimal qtaOrd) {
|
||||
this.qtaOrd = qtaOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfOrd() {
|
||||
return numCnfOrd;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setNumCnfOrd(BigDecimal numCnfOrd) {
|
||||
this.numCnfOrd = numCnfOrd;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaColVersata() {
|
||||
return qtaColVersata;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setQtaColVersata(BigDecimal qtaColVersata) {
|
||||
this.qtaColVersata = qtaColVersata;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfVersata() {
|
||||
return numCnfVersata;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setNumCnfVersata(BigDecimal numCnfVersata) {
|
||||
this.numCnfVersata = numCnfVersata;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaFabbisogno() {
|
||||
return qtaFabbisogno;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setQtaFabbisogno(BigDecimal qtaFabbisogno) {
|
||||
this.qtaFabbisogno = qtaFabbisogno;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getNumCnfFabbisogno() {
|
||||
return numCnfFabbisogno;
|
||||
}
|
||||
|
||||
public ProdFabbisognoLineeProdDTO setNumCnfFabbisogno(BigDecimal numCnfFabbisogno) {
|
||||
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 " +
|
||||
"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 " +
|
||||
"ORDER BY cod_mart";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<ProdFabbisognoLineeProdDTO>>() {}.getType();
|
||||
this.mSystemRESTConsumer.processSql(sql, typeOfObjectsList, onComplete, onFailed);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface ProdPosizionamentoDaOrdComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
|
||||
ProdPosizionamentoDaOrdComponent create();
|
||||
}
|
||||
|
||||
void inject(ProdPosizionamentoDaOrdFragment prodPosizionamentoDaOrdFragment);
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.databinding.FragmentProdPosizionamentoDaOrdBinding;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ProdPosizionamentoDaOrdFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ProdPosizionamentoDaOrdFragment extends Fragment {
|
||||
|
||||
private FragmentProdPosizionamentoDaOrdBinding mBinding = null;
|
||||
|
||||
@Inject
|
||||
ProdPosizionamentoDaOrdViewModel mViewModel;
|
||||
|
||||
public ProdPosizionamentoDaOrdFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
|
||||
public static ProdPosizionamentoDaOrdFragment newInstance() {
|
||||
ProdPosizionamentoDaOrdFragment fragment = new ProdPosizionamentoDaOrdFragment();
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_posizionamento_da_ord, container,false);
|
||||
|
||||
MainApplication.appComponent
|
||||
.prodPosizionamentoDaOrdComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
// mViewModel.setListener(this);
|
||||
|
||||
mBinding.setLifecycleOwner(this);
|
||||
mBinding.setView(this);
|
||||
mBinding.setViewmodel(mViewModel);
|
||||
|
||||
return mBinding.getRoot();
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
@Module(subcomponents = ProdPosizionamentoDaOrdComponent.class)
|
||||
public class ProdPosizionamentoDaOrdModule {
|
||||
|
||||
|
||||
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
ProdPosizionamentoDaOrdViewModel providesProdPosizionamentoDaOrdViewModel() {
|
||||
return new ProdPosizionamentoDaOrdViewModel();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class ProdPosizionamentoDaOrdViewModel {
|
||||
|
||||
|
||||
@Inject
|
||||
public ProdPosizionamentoDaOrdViewModel() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,8 +43,8 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersa
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
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;
|
||||
|
||||
public class ProdRecuperoMaterialeViewModel {
|
||||
@@ -82,6 +82,7 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
|
||||
|
||||
private void initBarcode() {
|
||||
BarcodeManager.enable();
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||
@@ -204,7 +205,7 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
.setCanOverflowOrderQuantity(false)
|
||||
.setCanLUBeClosed(false);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
@@ -213,14 +214,15 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
.setPartitaMag(resultDTO.getPartitaMag())
|
||||
.setDataScad(resultDTO.getDataScad());
|
||||
|
||||
onItemDispatched(item, resultDTO.getQtaTot(), sourceMtbColt, dialogProgress);
|
||||
onItemDispatched(item, resultDTO.getQtaTot(), resultDTO.getNumCnf(), resultDTO.getQtaCnf(), sourceMtbColt, dialogProgress);
|
||||
}, () -> {
|
||||
if (dialogProgress != null) dialogProgress.dismiss();
|
||||
BarcodeManager.enable();
|
||||
})
|
||||
.show(mContext.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal quantity, MtbColt sourceMtbColt, Dialog progress) {
|
||||
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal inputQtaTot, BigDecimal inputNumCnf, BigDecimal inputQtaCnf, MtbColt sourceMtbColt, Dialog progress) {
|
||||
|
||||
if (progress == null) {
|
||||
progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
@@ -234,14 +236,37 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
.setGestione(item.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
|
||||
BigDecimal totalSumOfQtaCol = BigDecimal.ZERO;
|
||||
BigDecimal totalSumOfNumCnf = BigDecimal.ZERO;
|
||||
|
||||
for (HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) {
|
||||
BigDecimal qtaCol = quantity.multiply(new BigDecimal(-1).multiply(new BigDecimal(ordine.getPercentageHr()))).divide(new BigDecimal(100), 3, RoundingMode.HALF_EVEN);
|
||||
|
||||
BigDecimal qtaColToSave;
|
||||
BigDecimal numCnfToSave;
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (item.getMtbAart() != null && !item.getMtbAart().isFlagQtaCnfFissaBoolean()) ){
|
||||
numCnfToSave = UtilityBigDecimal.divideAndRoundToInteger(inputNumCnf.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR);
|
||||
qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, BigDecimal.ROUND_FLOOR);
|
||||
} else {
|
||||
qtaColToSave = UtilityBigDecimal.divideAndRoundToInteger(inputQtaTot.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR);
|
||||
numCnfToSave = UtilityBigDecimal.divide(qtaColToSave, item.getQtaCnf(), RoundingMode.FLOOR);
|
||||
}
|
||||
|
||||
|
||||
totalSumOfQtaCol = totalSumOfQtaCol.add(qtaColToSave);
|
||||
totalSumOfNumCnf = totalSumOfNumCnf.add(numCnfToSave);
|
||||
|
||||
numCnfToSave = numCnfToSave.multiply(BigDecimal.valueOf(-1));
|
||||
qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1));
|
||||
|
||||
|
||||
final MtbColr mtbColrScarico = new MtbColr()
|
||||
.setCodMart(item.getCodMart())
|
||||
.setPartitaMag(UtilityString.empty2null(item.getPartitaMag()))
|
||||
.setQtaCol(qtaCol)
|
||||
.setQtaCnf(ordine.getQtaCnf())
|
||||
.setQtaCol(qtaColToSave)
|
||||
.setQtaCnf(inputQtaCnf)
|
||||
.setNumCnf(numCnfToSave)
|
||||
.setDescrizione(UtilityString.isNullOrEmpty(item.getMtbAart().getDescrizioneEstesa()) ? item.getMtbAart().getDescrizione() : item.getMtbAart().getDescrizioneEstesa())
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setNumColloRif(item.getNumColloRif())
|
||||
@@ -256,6 +281,24 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
mtbColtScarico.getMtbColr().add(mtbColrScarico);
|
||||
}
|
||||
|
||||
boolean updateQtaCnfFirstRow = false;
|
||||
|
||||
if(UtilityBigDecimal.lowerThan(totalSumOfNumCnf, inputNumCnf)) {
|
||||
BigDecimal diff = inputNumCnf.subtract(totalSumOfNumCnf).multiply(BigDecimal.valueOf(-1));
|
||||
mtbColtScarico.getMtbColr().get(0).setNumCnf(mtbColtScarico.getMtbColr().get(0).getNumCnf().add(diff));
|
||||
updateQtaCnfFirstRow = true;
|
||||
}
|
||||
|
||||
if(UtilityBigDecimal.lowerThan(totalSumOfQtaCol, inputQtaTot)) {
|
||||
BigDecimal diff = inputQtaTot.subtract(totalSumOfQtaCol).multiply(BigDecimal.valueOf(-1));
|
||||
mtbColtScarico.getMtbColr().get(0).setQtaCol(mtbColtScarico.getMtbColr().get(0).getQtaCol().add(diff));
|
||||
updateQtaCnfFirstRow = true;
|
||||
}
|
||||
|
||||
if(updateQtaCnfFirstRow) {
|
||||
mtbColtScarico.getMtbColr().get(0).setQtaCnf(
|
||||
UtilityBigDecimal.divide(mtbColtScarico.getMtbColr().get(0).getQtaCol(), mtbColtScarico.getMtbColr().get(0).getNumCnf()));
|
||||
}
|
||||
|
||||
mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
@@ -280,7 +323,9 @@ public class ProdRecuperoMaterialeViewModel {
|
||||
final MtbColr mtbColrCarico = new MtbColr()
|
||||
.setCodMart(item.getCodMart())
|
||||
.setPartitaMag(UtilityString.empty2null(item.getPartitaMag()))
|
||||
.setQtaCol(quantity)
|
||||
.setQtaCol(inputQtaTot)
|
||||
.setNumCnf(inputNumCnf)
|
||||
.setQtaCnf(inputQtaCnf)
|
||||
.setDescrizione(UtilityString.isNullOrEmpty(item.getMtbAart().getDescrizioneEstesa()) ? item.getMtbAart().getDescrizione() : item.getMtbAart().getDescrizioneEstesa())
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setNumColloRif(item.getNumColloRif())
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,18 +13,19 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.ParseException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
|
||||
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
|
||||
import it.integry.integrywmsnative.core.model.CheckableOrdineLavoro;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
@@ -76,38 +77,52 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
|
||||
MtbColr mtbColr = mMtbColr;
|
||||
BigDecimal residuoCol = mtbColr.getQtaCol();
|
||||
BigDecimal residuoCnf = mtbColr.getNumCnf();
|
||||
BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol);
|
||||
BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf);
|
||||
mtbColr.setQtaCnf(mtbColr.getQtaCol().divide(mtbColr.getNumCnf(),5,BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
BigDecimal offsetCol = BigDecimal.ZERO.add(residuoCol); //Forced clone
|
||||
BigDecimal offsetCnf = BigDecimal.ZERO.add(residuoCnf); //Forced clone
|
||||
|
||||
mtbColr.setQtaCnf(UtilityBigDecimal.divide(mtbColr.getQtaCol(), mtbColr.getNumCnf()));
|
||||
|
||||
List<CheckableOrdineLavoro> ordiniSelezionati = getSelectedData();
|
||||
int totalHr = Stream.of(ordiniSelezionati).mapToInt(x -> x.getItem().getOrdineLav().getHrNum()).sum();
|
||||
int totalHr = Stream.of(ordiniSelezionati)
|
||||
.mapToInt(x -> x.getItem().getOrdineLav().getHrNum())
|
||||
.sum();
|
||||
|
||||
for (CheckableOrdineLavoro c : ordiniSelezionati) {
|
||||
BigDecimal usedCol, usedCnf;
|
||||
float perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr;
|
||||
int perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr;
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean()) ){
|
||||
usedCnf = residuoCnf.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
|
||||
if (usedCnf.compareTo(BigDecimal.ZERO) <= 0 && offsetCnf.compareTo(BigDecimal.ZERO) > 0){
|
||||
usedCnf = UtilityBigDecimal.divideAndRoundToInteger(residuoCnf.multiply(BigDecimal.valueOf(perc)), BigDecimal.valueOf(100), RoundingMode.FLOOR);
|
||||
|
||||
if(UtilityBigDecimal.equalsOrLowerThan(usedCnf, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCnf, BigDecimal.ZERO)) {
|
||||
usedCnf = BigDecimal.ONE;
|
||||
}
|
||||
|
||||
usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR);
|
||||
} else {
|
||||
usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
|
||||
if (usedCol.compareTo(BigDecimal.ZERO) <= 0 && offsetCol.compareTo(BigDecimal.ZERO) > 0){
|
||||
usedCol = UtilityBigDecimal.divideAndRoundToInteger(residuoCol.multiply(BigDecimal.valueOf(perc)), BigDecimal.valueOf(100), RoundingMode.FLOOR);
|
||||
|
||||
if (UtilityBigDecimal.equalsOrLowerThan(usedCol, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(offsetCol, BigDecimal.ZERO)){
|
||||
usedCol = BigDecimal.ONE;
|
||||
}
|
||||
usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(3, BigDecimal.ROUND_FLOOR);
|
||||
|
||||
usedCnf = UtilityBigDecimal.divide(usedCol, mtbColr.getQtaCnf(), RoundingMode.FLOOR);
|
||||
}
|
||||
|
||||
offsetCol = offsetCol.subtract(usedCol);
|
||||
offsetCnf = offsetCnf.subtract(usedCnf);
|
||||
|
||||
c.setQtaCol(usedCol.floatValue());
|
||||
c.setNumCnf(usedCnf.floatValue());
|
||||
}
|
||||
|
||||
if (ordiniSelezionati.size() > 0) {
|
||||
CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get();
|
||||
if (majorOrder == null) {
|
||||
majorOrder = ordiniSelezionati.get(0);
|
||||
}
|
||||
|
||||
if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){
|
||||
if ( SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
majorOrder.setNumCnf(majorOrder.getNumCnf().get() + offsetCnf.floatValue());
|
||||
@@ -116,8 +131,6 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrd
|
||||
majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue());
|
||||
majorOrder.setNumCnf(majorOrder.getQtaCol().get() / mtbColr.getQtaCnf().floatValue());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
@@ -208,7 +203,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
|
||||
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 -> {
|
||||
@@ -238,11 +233,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 +249,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;
|
||||
@@ -61,7 +62,7 @@ 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.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
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.yes_no.DialogYesNo;
|
||||
@@ -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);
|
||||
@@ -416,7 +412,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
|
||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||
.setCanLUBeClosed(canLUBeClosed);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
@@ -527,7 +523,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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,11 +10,9 @@ import javax.inject.Singleton;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
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.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
|
||||
|
||||
@Singleton
|
||||
@@ -29,19 +27,12 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
|
||||
public void loadListaFornitori(RunnableArgs<ArrayList<FornitoreDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<FornitoreDTO>>() {}.getType();
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<FornitoreDTO>>() {
|
||||
}.getType();
|
||||
|
||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<FornitoreDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<FornitoreDTO> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
mSystemRestConsumer.<ArrayList<FornitoreDTO>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,18 +46,11 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
|
||||
" ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {}.getType();
|
||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAartWithFornitore>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<MtbAartWithFornitore> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {
|
||||
}.getType();
|
||||
mSystemRestConsumer.<ArrayList<MtbAartWithFornitore>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
|
||||
@@ -84,18 +68,11 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
|
||||
"OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " +
|
||||
"OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {}.getType();
|
||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAart>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<MtbAart> value) {
|
||||
if(onComplete != null) onComplete.run(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {
|
||||
}.getType();
|
||||
mSystemRestConsumer.<ArrayList<MtbAart>>processSql(sql, typeOfObjectsList, value -> {
|
||||
if (onComplete != null) onComplete.run(value);
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -67,9 +70,9 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
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.DialogInputQuantityV2;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
|
||||
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;
|
||||
|
||||
public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener {
|
||||
@@ -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;
|
||||
@@ -100,12 +104,21 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
private ArrayList<MtbColt> mColliRegistrati;
|
||||
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) {
|
||||
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);
|
||||
@@ -123,6 +136,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
String keySegnoCol = DataCache.addItem(segnoCol);
|
||||
myIntent.putExtra("keySegnoCol", keySegnoCol);
|
||||
|
||||
String keyDefaultCausaleUL = DataCache.addItem(defaultCausaleUL);
|
||||
myIntent.putExtra("keyDefaultCausaleCol", keyDefaultCausaleUL);
|
||||
|
||||
String keyInfoDialogClassType = DataCache.addItem(infoDialogClassType);
|
||||
myIntent.putExtra("keyInfoDialogClassType", keyInfoDialogClassType);
|
||||
|
||||
context.startActivity(myIntent);
|
||||
}
|
||||
|
||||
@@ -135,6 +154,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mColliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati"));
|
||||
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);
|
||||
|
||||
@@ -152,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);
|
||||
|
||||
@@ -186,7 +210,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mTestateOrdini,
|
||||
mColliRegistrati,
|
||||
reportNameSpedizioneChiudiOrdine,
|
||||
mGestioneCol, mSegnoCol);
|
||||
mGestioneCol, mSegnoCol, mDefaultCausaleUL,
|
||||
mEnableQuantityReset);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -220,6 +245,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
@@ -229,12 +256,15 @@ 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()) {
|
||||
if (!noLUPresent.get() &&
|
||||
((SettingsManager.iDB().isFlagSpedizioneEnableManualPick() &&
|
||||
clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) ||
|
||||
clickedItem.getTempPickData() != null)) {
|
||||
this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt);
|
||||
}
|
||||
});
|
||||
@@ -251,7 +281,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();
|
||||
@@ -314,10 +344,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();
|
||||
@@ -338,7 +368,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);
|
||||
@@ -362,7 +393,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);
|
||||
|
||||
@@ -448,7 +480,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();
|
||||
}
|
||||
|
||||
@@ -478,10 +510,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();
|
||||
@@ -501,7 +533,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);
|
||||
@@ -523,7 +556,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);
|
||||
|
||||
@@ -586,11 +620,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
};
|
||||
|
||||
public void addExtraItem() {
|
||||
DialogScanArt.make(this, (status, mtbAart, ean128Model) -> {
|
||||
if(status == DialogConsts.Results.YES) {
|
||||
this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model);
|
||||
DialogScanArtView
|
||||
.newInstance((status, mtbAart, ean128Model, mtbColr) -> {
|
||||
if (status == DialogConsts.Results.YES) {
|
||||
this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr);
|
||||
}
|
||||
}).show();
|
||||
})
|
||||
.show(getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
public void startManualSearch() {
|
||||
@@ -730,7 +766,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
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);
|
||||
@@ -777,7 +813,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
||||
.setCanLUBeClosed(true);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
.setNumCnf(resultDTO.getNumCnf())
|
||||
|
||||
@@ -63,7 +63,6 @@ import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.NoOrdersSelectedException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
@@ -87,12 +86,15 @@ public class SpedizioneViewModel {
|
||||
private Integer mDefaultNumOrdOfUL = null;
|
||||
private Date mDefaultDataOrdOfUL = null;
|
||||
private String mDefaultCodJFasOfUL = null;
|
||||
private Integer mDefaultCausaleOfUL = null;
|
||||
|
||||
private boolean mEnableGiacenza;
|
||||
private boolean mEnableCheckPartitaMag;
|
||||
private boolean mCanOverflowOrderQuantity;
|
||||
private boolean mShouldAskPesoLU;
|
||||
private String mReportNameSpedizioneChiudiOrdine;
|
||||
private boolean mIsNewLU;
|
||||
private boolean mEnableQuantityReset;
|
||||
|
||||
private MtbColt mCurrentMtbColt = null;
|
||||
|
||||
@@ -133,7 +135,9 @@ public class SpedizioneViewModel {
|
||||
List<MtbColt> colliRegistrati,
|
||||
String reportNameSpedizioneChiudiOrdine,
|
||||
GestioneEnum gestioneCol,
|
||||
int segnoCol) {
|
||||
int segnoCol,
|
||||
Integer defaultCausaleUL,
|
||||
boolean enableQuantityReset) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mDefaultCodMdep = codMdep;
|
||||
@@ -144,6 +148,8 @@ public class SpedizioneViewModel {
|
||||
this.mCanOverflowOrderQuantity = canOverflowOrderQuantity;
|
||||
this.mShouldAskPesoLU = shouldAskPesoLU;
|
||||
this.mReportNameSpedizioneChiudiOrdine = reportNameSpedizioneChiudiOrdine;
|
||||
this.mDefaultCausaleOfUL = defaultCausaleUL;
|
||||
this.mEnableQuantityReset = enableQuantityReset;
|
||||
|
||||
if (enableGiacenza) {
|
||||
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
||||
@@ -192,10 +198,7 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
private void initDefaultVars() {
|
||||
if (this.mTestateOrdini == null || this.mTestateOrdini.size() == 0) {
|
||||
sendError(new NoOrdersSelectedException());
|
||||
return;
|
||||
}
|
||||
if (this.mTestateOrdini != null && this.mTestateOrdini.size() > 0) {
|
||||
|
||||
if (mDefaultGestioneOfUL == null) {
|
||||
//Definizione della gestione collo di default
|
||||
@@ -294,6 +297,7 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
@@ -435,6 +439,7 @@ public class SpedizioneViewModel {
|
||||
} else {
|
||||
this.mCurrentMtbColt = mtbColt;
|
||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
||||
this.mIsNewLU = false;
|
||||
|
||||
this.sendLUOpened(mtbColt);
|
||||
|
||||
@@ -918,7 +923,7 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
|
||||
public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model) {
|
||||
public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model, MtbColr mtbColrToUse) {
|
||||
|
||||
PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
|
||||
.setMtbAart(mtbAart)
|
||||
@@ -928,6 +933,10 @@ public class SpedizioneViewModel {
|
||||
BigDecimal qtaColDaPrelevare = null;
|
||||
BigDecimal qtaCnfDaPrelevare = null;
|
||||
|
||||
BigDecimal totalQtaAvailable = null;
|
||||
BigDecimal totalNumCnfAvailable = null;
|
||||
BigDecimal qtaCnfAvailable = null;
|
||||
|
||||
BigDecimal initialNumCnf = null;
|
||||
BigDecimal initialQtaCnf = null;
|
||||
BigDecimal initialQtaTot = null;
|
||||
@@ -935,7 +944,48 @@ public class SpedizioneViewModel {
|
||||
String partitaMag = null;
|
||||
Date dataScad = null;
|
||||
|
||||
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
||||
MtbColt refMtbColt = null;
|
||||
|
||||
if (mtbColrToUse != null) {
|
||||
refMtbColt = new MtbColt()
|
||||
.setDataCollo(mtbColrToUse.getDataColloD())
|
||||
.setSerCollo(mtbColrToUse.getSerCollo())
|
||||
.setNumCollo(mtbColrToUse.getNumCollo())
|
||||
.setGestione(mtbColrToUse.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
refMtbColt.getMtbColr().add(mtbColrToUse);
|
||||
|
||||
pickingObjectDTO
|
||||
.setMtbAart(mtbColrToUse.getMtbAart())
|
||||
.setTempPickData(new PickDataDTO().setSourceMtbColt(refMtbColt));
|
||||
|
||||
if (mtbColrToUse.getMtbAart().isFlagQtaCnfFissaBoolean()) {
|
||||
numCnfDaPrelevare = mtbColrToUse.getNumCnf();
|
||||
qtaColDaPrelevare = mtbColrToUse.getQtaCol();
|
||||
qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf();
|
||||
} else {
|
||||
numCnfDaPrelevare = mtbColrToUse.getNumCnf();
|
||||
qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf();
|
||||
qtaColDaPrelevare = mtbColrToUse.getQtaCol();
|
||||
}
|
||||
|
||||
|
||||
totalQtaAvailable = mtbColrToUse.getQtaCol();
|
||||
totalNumCnfAvailable = mtbColrToUse.getNumCnf();
|
||||
qtaCnfAvailable = mtbColrToUse.getQtaCnf();
|
||||
|
||||
|
||||
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
|
||||
numCnfDaPrelevare = BigDecimal.ZERO;
|
||||
|
||||
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
|
||||
qtaColDaPrelevare = BigDecimal.ZERO;
|
||||
|
||||
partitaMag = mtbColrToUse.getPartitaMag();
|
||||
dataScad = mtbColrToUse.getDataScadPartitaD();
|
||||
|
||||
} else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
||||
//Oppure le info del barcode scansionato
|
||||
PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO();
|
||||
|
||||
@@ -952,6 +1002,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);
|
||||
@@ -974,6 +1030,7 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
|
||||
MtbColt finalRefMtbColt = refMtbColt;
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
@@ -986,15 +1043,15 @@ public class SpedizioneViewModel {
|
||||
qtaColDaPrelevare,
|
||||
numCnfDaPrelevare,
|
||||
qtaCnfDaPrelevare,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
totalQtaAvailable,
|
||||
totalNumCnfAvailable,
|
||||
qtaCnfAvailable,
|
||||
partitaMag,
|
||||
dataScad,
|
||||
mCanOverflowOrderQuantity,
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
this.saveNewRow(pickingObjectDTO,
|
||||
null,
|
||||
finalRefMtbColt,
|
||||
pickedQuantityDTO.getNumCnf(),
|
||||
pickedQuantityDTO.getQtaCnf(),
|
||||
pickedQuantityDTO.getQtaTot(),
|
||||
@@ -1190,8 +1247,8 @@ public class SpedizioneViewModel {
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
this.mCurrentMtbColt = mtbColt;
|
||||
|
||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
||||
this.mIsNewLU = true;
|
||||
|
||||
if (onComplete != null) onComplete.run();
|
||||
this.sendLUOpened(mtbColt);
|
||||
@@ -1203,6 +1260,7 @@ public class SpedizioneViewModel {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCausale(mDefaultCausaleOfUL)
|
||||
.setCodMart(pickingObjectDTO.getMtbAart().getCodMart())
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScadPartita(dataScad)
|
||||
@@ -1286,7 +1344,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());
|
||||
|
||||
@@ -1429,6 +1487,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
if (canBeDeleted) {
|
||||
deleteLU(() -> {
|
||||
this.mIsNewLU = false;
|
||||
this.sendLUClosed();
|
||||
this.sendOnLoadingEnded();
|
||||
});
|
||||
@@ -1463,6 +1522,7 @@ public class SpedizioneViewModel {
|
||||
} else {
|
||||
|
||||
distribuisciLU(mtbColts -> {
|
||||
if(this.mIsNewLU) {
|
||||
this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> {
|
||||
|
||||
if (shouldChangePosition) {
|
||||
@@ -1497,8 +1557,10 @@ public class SpedizioneViewModel {
|
||||
} else {
|
||||
postCloseOperations(mtbColts);
|
||||
}
|
||||
|
||||
});
|
||||
} else {
|
||||
postCloseOperations(mtbColts);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1621,6 +1683,7 @@ public class SpedizioneViewModel {
|
||||
this.mCurrentMtbColt = null;
|
||||
|
||||
|
||||
if(mEnableQuantityReset) {
|
||||
for (PickingObjectDTO pickingObjectDTO : mPickingList.getValue()) {
|
||||
|
||||
List<MtbColr> withdrawMtbColrList = pickingObjectDTO.getWithdrawMtbColrs();
|
||||
@@ -1653,28 +1716,14 @@ public class SpedizioneViewModel {
|
||||
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<>());
|
||||
}
|
||||
}
|
||||
|
||||
this.mIsNewLU = false;
|
||||
|
||||
this.resetMatchedRows();
|
||||
this.sendLUClosed();
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,12 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione.exceptions;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
|
||||
public final class NoOrdersSelectedException extends Exception {
|
||||
|
||||
public NoOrdersSelectedException() {
|
||||
super(UtilityResources.getString(R.string.no_one_order_selected));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
|
||||
public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private UltimeConsegneClienteViewModel mViewModel;
|
||||
@@ -71,23 +71,18 @@ 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) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFilterClick() {
|
||||
mViewModel.openFilterDialog();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
*/
|
||||
public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private ElevatedToolbar mToolbar;
|
||||
|
||||
private UltimiArriviFornitoreViewModel mViewModel;
|
||||
@@ -74,20 +74,11 @@ 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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -98,5 +89,8 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment
|
||||
private VersamentoMerceViewModel mVersamentoMerceViewModel;
|
||||
private VersamentoMerceHelper mHelper;
|
||||
|
||||
private List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
@@ -92,7 +92,7 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onActionBarPreDestroy);
|
||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||
this.mOnPreDestroyList.add(onPreDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
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;
|
||||
|
||||
@@ -379,7 +379,7 @@ public class VersamentoMerceViewModel {
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setCanLUBeClosed(false);
|
||||
|
||||
DialogInputQuantityV2
|
||||
DialogInputQuantityV2View
|
||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||
// PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||
// .setNumCnf(resultDTO.getNumCnf())
|
||||
|
||||
@@ -37,7 +37,7 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<Di
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
View listItem = convertView;
|
||||
if(listItem == null) {
|
||||
listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item, parent, false);
|
||||
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false);
|
||||
}
|
||||
|
||||
if(position < mDataset.size()) {
|
||||
|
||||
@@ -37,7 +37,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<S
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
View listItem = convertView;
|
||||
if(listItem == null) {
|
||||
listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item, parent, false);
|
||||
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false);
|
||||
}
|
||||
|
||||
if(position < getCount()) {
|
||||
|
||||
@@ -18,6 +18,7 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -66,22 +67,22 @@ public class DialogSimpleMessageHelper {
|
||||
switch (type) {
|
||||
case INFO:
|
||||
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300);
|
||||
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_info_78dp);
|
||||
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_info_78dp, null);
|
||||
break;
|
||||
|
||||
case SUCCESS:
|
||||
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.green_300);
|
||||
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_done_white_24dp);
|
||||
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_done_white_24dp, null);
|
||||
break;
|
||||
|
||||
case WARNING:
|
||||
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.yellow_600);
|
||||
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_warning_white_24dp);
|
||||
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_warning_white_24dp, null);
|
||||
break;
|
||||
|
||||
case ERROR:
|
||||
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.red_300);
|
||||
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_mood_bad_24dp);
|
||||
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_mood_bad_24dp, null);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtItemModelBinding;
|
||||
|
||||
public class DialogChooseArtFromListaMtbColrAdapter extends RecyclerView.Adapter<DialogChooseArtFromListaMtbColrAdapter.ViewHolder> {
|
||||
|
||||
protected Context mContext;
|
||||
|
||||
private final List<MtbColr> mDataset;
|
||||
private final IRecyclerItemClicked<MtbColr> mOnItemClickListener;
|
||||
|
||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
protected DialogChooseArtFromListaArtItemModelBinding mViewDataBinding;
|
||||
|
||||
|
||||
public ViewHolder(DialogChooseArtFromListaArtItemModelBinding v) {
|
||||
super(v.getRoot());
|
||||
mViewDataBinding = v;
|
||||
}
|
||||
|
||||
public void bind(MtbAart mtbAart) {
|
||||
mViewDataBinding.setMtbAart(mtbAart);
|
||||
mViewDataBinding.executePendingBindings();
|
||||
}
|
||||
}
|
||||
|
||||
public DialogChooseArtFromListaMtbColrAdapter(Context context, List<MtbColr> myDataset, IRecyclerItemClicked<MtbColr> onItemClickListener) {
|
||||
mContext = context;
|
||||
mDataset = myDataset;
|
||||
mOnItemClickListener = onItemClickListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialogChooseArtFromListaMtbColrAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
// create a new view
|
||||
DialogChooseArtFromListaArtItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_art_from_lista_art__item_model, parent, false);
|
||||
|
||||
return new ViewHolder(viewDataBinding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(DialogChooseArtFromListaMtbColrAdapter.ViewHolder holder, int position) {
|
||||
MtbColr item = mDataset.get(position);
|
||||
holder.bind(item.getMtbAart());
|
||||
|
||||
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
|
||||
if(mOnItemClickListener != null) {
|
||||
mOnItemClickListener.onItemClick(item, position);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(DialogChooseArtFromListaMtbColrAdapter.ViewHolder holder) {
|
||||
super.onViewRecycled(holder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mDataset.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
||||
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
|
||||
|
||||
public class DialogChooseArtFromListaMtbColrView {
|
||||
|
||||
|
||||
private Context currentContext;
|
||||
private Dialog mDialog;
|
||||
|
||||
private DialogChooseArtFromListaMtbColrAdapter currentAdapter;
|
||||
|
||||
private RunnableArgs<MtbColr> mOnItemChoosed;
|
||||
|
||||
public static Dialog make(final Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
|
||||
return new DialogChooseArtFromListaMtbColrView(context, mtbColrList, onItemChoosed).mDialog;
|
||||
}
|
||||
|
||||
|
||||
private DialogChooseArtFromListaMtbColrView(Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
|
||||
currentContext = context;
|
||||
mOnItemChoosed = onItemChoosed;
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
DialogChooseArtFromListaArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_art_from_lista_art, null, false);
|
||||
|
||||
mDialog = new Dialog(context);
|
||||
|
||||
mDialog.setContentView(bindings.getRoot());
|
||||
|
||||
mDialog.setCanceledOnTouchOutside(false);
|
||||
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
UtilityDialog.setTo90PercentWidth(context, mDialog);
|
||||
|
||||
initRecyclerView(bindings, mtbColrList);
|
||||
}
|
||||
|
||||
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbColr> dataset) {
|
||||
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
|
||||
|
||||
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
|
||||
|
||||
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
|
||||
|
||||
DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL);
|
||||
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
|
||||
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
|
||||
|
||||
currentAdapter = new DialogChooseArtFromListaMtbColrAdapter(currentContext, dataset, onItemClicked);
|
||||
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
|
||||
}
|
||||
|
||||
private IRecyclerItemClicked<MtbColr> onItemClicked = (item, position) -> {
|
||||
if(mOnItemChoosed != null) {
|
||||
mOnItemChoosed.run(item);
|
||||
}
|
||||
|
||||
mDialog.dismiss();
|
||||
};
|
||||
|
||||
}
|
||||
@@ -10,5 +10,5 @@ public interface DialogInputQuantityV2Component {
|
||||
DialogInputQuantityV2Component create();
|
||||
}
|
||||
|
||||
void inject(DialogInputQuantityV2 dialogInputQuantityV2);
|
||||
void inject(DialogInputQuantityV2View dialogInputQuantityV2);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.ColorStateList;
|
||||
@@ -35,19 +34,20 @@ import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
|
||||
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
||||
public class DialogInputQuantityV2View extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
||||
|
||||
@Inject
|
||||
DialogInputQuantityV2ViewModel mViewModel;
|
||||
|
||||
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
||||
private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
|
||||
private Runnable mOnAbort;
|
||||
@@ -72,13 +72,14 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
||||
private boolean mEnableDataCallback = true;
|
||||
|
||||
private int mBarcodeScannerIstanceID;
|
||||
private Dialog mCurrentProgress;
|
||||
|
||||
public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
||||
return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort);
|
||||
public static DialogInputQuantityV2View newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
||||
return new DialogInputQuantityV2View(dialogInputQuantityV2DTO, onComplete, onAbort);
|
||||
}
|
||||
|
||||
private DialogInputQuantityV2(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
||||
private DialogInputQuantityV2View(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
||||
super();
|
||||
|
||||
this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO;
|
||||
this.mOnComplete = onComplete;
|
||||
this.mOnAbort = onAbort;
|
||||
@@ -152,19 +153,6 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
||||
});
|
||||
};
|
||||
|
||||
private void openProgress() {
|
||||
if (this.mCurrentProgress == null) {
|
||||
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this.context);
|
||||
}
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
if (mCurrentProgress != null) {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void save() {
|
||||
if (this.mViewModel.validate()) {
|
||||
this.mOnComplete.run(this.mViewModel.getResult(), false);
|
||||
@@ -117,6 +117,13 @@ public class DialogInputQuantityV2ViewModel {
|
||||
this.mtbAart.get().getBarCode() != null &&
|
||||
(ean13PesoModel.getPrecode().contains(this.mtbAart.get().getBarCode()) || this.mtbAart.get().getBarCode().contains(ean13PesoModel.getPrecode()))) {
|
||||
this.setQtaTot(BigDecimal.valueOf(ean13PesoModel.getPeso()));
|
||||
this.setNumCnf(UtilityBigDecimal.divideAndRoundToInteger(this.getQtaTot(), this.mtbAart.get().getQtaCnf()));
|
||||
|
||||
if (!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||
if (UtilityBigDecimal.equalsTo(this.getNumCnf(), BigDecimal.ZERO))
|
||||
this.setNumCnf(BigDecimal.ONE);
|
||||
this.setQtaCnf(UtilityBigDecimal.divide(this.getQtaTot(), this.getNumCnf()));
|
||||
}
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
@@ -146,6 +153,13 @@ public class DialogInputQuantityV2ViewModel {
|
||||
this.setNumCnf(BigDecimal.valueOf(ean128Model.Count));
|
||||
} else if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
||||
this.setQtaTot(BigDecimal.valueOf(ean128Model.NetWeightKg));
|
||||
this.setNumCnf(UtilityBigDecimal.divideAndRoundToInteger(this.getQtaTot(), this.mtbAart.get().getQtaCnf()));
|
||||
|
||||
if (!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||
if (UtilityBigDecimal.equalsTo(this.getNumCnf(), BigDecimal.ZERO))
|
||||
this.setNumCnf(BigDecimal.ONE);
|
||||
this.setQtaCnf(UtilityBigDecimal.divide(this.getQtaTot(), this.getNumCnf()));
|
||||
}
|
||||
}
|
||||
|
||||
this.mListener.onDataChanged();
|
||||
@@ -306,7 +320,7 @@ public class DialogInputQuantityV2ViewModel {
|
||||
newValue = UtilityBigDecimal.getLowerBetween(newValue, totalQtaAvailable);
|
||||
|
||||
//Se è piu' grande della qta da prelevare e non posso aggiungere qta extra allora ricalcolo
|
||||
if (!canOverflowOrderQuantity) {
|
||||
if (!canOverflowOrderQuantity && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||
newValue = UtilityBigDecimal.getLowerBetween(newValue, totalQtaOrd);
|
||||
this.internalQtaTot = newValue;
|
||||
this.mListener.onDataChanged();
|
||||
|
||||
@@ -1,180 +0,0 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.scan_art;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialog;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
|
||||
public class DialogScanArt {
|
||||
|
||||
private Context mContext;
|
||||
private BaseDialog mDialog;
|
||||
|
||||
private RunnableArgsss<DialogConsts.Results, MtbAart, Ean128Model> mOnItemChoosed;
|
||||
|
||||
public static Dialog make(final Context context, RunnableArgsss<DialogConsts.Results, MtbAart, Ean128Model> onItemChoosed) {
|
||||
return new DialogScanArt(context, onItemChoosed).mDialog;
|
||||
}
|
||||
|
||||
|
||||
private DialogScanArt(Context context, RunnableArgsss<DialogConsts.Results, MtbAart, Ean128Model> onItemChoosed) {
|
||||
mContext = context;
|
||||
mOnItemChoosed = onItemChoosed;
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
DialogScanArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, null, false);
|
||||
|
||||
mDialog = new BaseDialog(context);
|
||||
|
||||
mDialog.setContentView(bindings.getRoot());
|
||||
|
||||
mDialog.setCanceledOnTouchOutside(false);
|
||||
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
|
||||
bindings.buttonNo.setOnClickListener(v -> {
|
||||
mOnItemChoosed.run(DialogConsts.Results.ABORT, null, null);
|
||||
mDialog.dismiss();
|
||||
});
|
||||
|
||||
|
||||
initBarcode(context);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void initBarcode(Context context) {
|
||||
|
||||
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
|
||||
|
||||
mDialog.setBarcodeListener(true);
|
||||
mDialog.setOnDismissListener(dialog -> {
|
||||
BarcodeManager.removeCallback(barcodeIstanceID);
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
BarcodeManager.disable();
|
||||
|
||||
if(UtilityBarcode.isEtichetta128(data)) {
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
} else if(UtilityBarcode.isEanPeso(data)){
|
||||
this.executeEtichettaEanPeso(data, progressDialog);
|
||||
} else {
|
||||
this.loadArticolo(data.getStringValue(), null, progressDialog);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
||||
BarcodeRESTConsumer.decodeEan128Static(barcodeScanDTO, ean128Model -> {
|
||||
|
||||
String barcodeProd = null;
|
||||
|
||||
if(ean128Model.Sscc != null) barcodeProd = ean128Model.Sscc;
|
||||
if(ean128Model.Gtin != null) barcodeProd = ean128Model.Gtin;
|
||||
if(ean128Model.Content != null) barcodeProd = ean128Model.Content;
|
||||
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
|
||||
barcodeProd = barcodeProd.substring(1, barcodeProd.length());
|
||||
}
|
||||
this.loadArticolo(barcodeProd, ean128Model, progressDialog);
|
||||
} else {
|
||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||
progressDialog.dismiss();
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
}, ex-> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
}
|
||||
|
||||
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
||||
|
||||
try {
|
||||
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
|
||||
|
||||
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128(), progressDialog);
|
||||
} catch (Exception ex) {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Dialog progressDialog) {
|
||||
if(barcodeProd.length() == 14) {
|
||||
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
|
||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||
}
|
||||
|
||||
ArticoloRESTConsumer.getByBarcodeProdStatic(barcodeProd, mtbAartList -> {
|
||||
|
||||
if(mtbAartList != null && mtbAartList.size() > 0) {
|
||||
BarcodeManager.enable();
|
||||
progressDialog.dismiss();
|
||||
|
||||
mOnItemChoosed.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model);
|
||||
mDialog.dismiss();
|
||||
|
||||
|
||||
} else {
|
||||
BarcodeManager.enable();
|
||||
progressDialog.dismiss();
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(mContext.getResources().getText(R.string.no_result_from_barcode)),
|
||||
null, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
}, ex -> {
|
||||
BarcodeManager.enable();
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.scan_art;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface DialogScanArtComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
DialogScanArtComponent create();
|
||||
}
|
||||
|
||||
void inject(DialogScanArtView dialogScanArtView);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.scan_art;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
|
||||
@Module(subcomponents = DialogScanArtComponent.class)
|
||||
public class DialogScanArtModule {
|
||||
|
||||
@Provides
|
||||
DialogScanArtViewModel providesDialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
|
||||
return new DialogScanArtViewModel(barcodeRESTConsumer, colliMagazzinoRESTConsumer, articoloRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.scan_art;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgssss;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView;
|
||||
|
||||
public class DialogScanArtView extends BaseDialogFragment implements DialogScanArtViewModel.Listener {
|
||||
|
||||
@Inject
|
||||
DialogScanArtViewModel mViewModel;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private DialogScanArtBinding mBindings;
|
||||
|
||||
private int mBarcodeScannerIstanceID;
|
||||
|
||||
private RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> mOnItemChoosed = null;
|
||||
|
||||
|
||||
public static DialogScanArtView newInstance(@NotNull RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onComplete) {
|
||||
return new DialogScanArtView(onComplete);
|
||||
}
|
||||
|
||||
private DialogScanArtView(RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onItemChoosed) {
|
||||
super();
|
||||
mOnItemChoosed = onItemChoosed;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
this.mContext = getActivity();
|
||||
this.initBarcode();
|
||||
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, container, false);
|
||||
|
||||
MainApplication.appComponent
|
||||
.dialogScanArtComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
this.mViewModel
|
||||
.setListener(this);
|
||||
|
||||
getDialog().setCanceledOnTouchOutside(false);
|
||||
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
mBindings.buttonNo.setOnClickListener(v -> {
|
||||
mOnItemChoosed.run(DialogConsts.Results.ABORT, null, null, null);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
|
||||
BarcodeManager.enable();
|
||||
super.onDismiss(dialog);
|
||||
}
|
||||
|
||||
|
||||
private void initBarcode() {
|
||||
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this.mContext, ex, false)));
|
||||
|
||||
setBarcodeListener(true);
|
||||
}
|
||||
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
BarcodeManager.disable();
|
||||
this.openProgress();
|
||||
|
||||
this.mViewModel.processBarcodeDTO(data, (status, mtbAart, ean128Model, mtbColrList) -> {
|
||||
if(mtbColrList != null && mtbColrList.size() > 0) {
|
||||
DialogChooseArtFromListaMtbColrView.make(mContext, mtbColrList, mtbColrChose -> {
|
||||
mOnItemChoosed.run(status, mtbAart, ean128Model, mtbColrChose);
|
||||
}).show();
|
||||
} else {
|
||||
mOnItemChoosed.run(status, mtbAart, ean128Model, null);
|
||||
}
|
||||
|
||||
BarcodeManager.enable();
|
||||
this.closeProgress();
|
||||
|
||||
dismiss();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(mContext, ex);
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.scan_art;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidLUException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgssss;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
|
||||
public class DialogScanArtViewModel {
|
||||
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
public DialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
}
|
||||
|
||||
|
||||
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
|
||||
|
||||
} else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) {
|
||||
//Cerco l'UL presente all'interno della posizione
|
||||
// this.executeEtichettaPosizione(barcodeScanDTO.getStringValue(), onComplete);
|
||||
|
||||
} else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
|
||||
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
|
||||
} else if(UtilityBarcode.isEanPeso(barcodeScanDTO)){
|
||||
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
|
||||
} else {
|
||||
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
|
||||
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
|
||||
|
||||
String barcodeProd = null;
|
||||
|
||||
if(ean128Model.Sscc != null) barcodeProd = ean128Model.Sscc;
|
||||
if(ean128Model.Gtin != null) barcodeProd = ean128Model.Gtin;
|
||||
if(ean128Model.Content != null) barcodeProd = ean128Model.Content;
|
||||
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
|
||||
} else {
|
||||
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
|
||||
barcodeProd = barcodeProd.substring(1);
|
||||
}
|
||||
|
||||
this.loadArticolo(barcodeProd, ean128Model, onComplete);
|
||||
}
|
||||
} else {
|
||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||
this.sendError(new NoResultFromBarcodeException());
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
|
||||
|
||||
try {
|
||||
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
|
||||
|
||||
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128(), onComplete);
|
||||
} catch (Exception ex) {
|
||||
this.sendError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaLU(String SSCC, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
|
||||
mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
if (mtbColt.getSegno() != -1) {
|
||||
onComplete.run(DialogConsts.Results.YES, null, null, mtbColt.getMtbColr());
|
||||
} else this.sendError(new InvalidLUException());
|
||||
} else {
|
||||
this.sendError(new NoArtsFoundException());
|
||||
}
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
private void loadArticolo(@NotNull String barcodeProd, Ean128Model ean128Model, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
|
||||
if(barcodeProd.length() == 14) {
|
||||
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
|
||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||
}
|
||||
|
||||
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
||||
if(mtbAartList != null && mtbAartList.size() > 0) {
|
||||
onComplete.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model, null);
|
||||
} else {
|
||||
this.sendError(new NoResultFromBarcodeException());
|
||||
}
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public void setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
|
||||
void onError(Exception ex);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:width="128dp"
|
||||
android:height="128dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:width="128dp"
|
||||
android:height="128dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user