Compare commits
101 Commits
v1.13.11(1
...
v1.14.3(18
| Author | SHA1 | Date | |
|---|---|---|---|
| 65c0e520c5 | |||
| 062abb4ea3 | |||
| 1d759cdcbf | |||
| 15e1793962 | |||
| 55fee02f36 | |||
| 575ac2577f | |||
| 3fc5cd3660 | |||
| d77fbff509 | |||
| 58865ca34b | |||
| 23aa7f5261 | |||
| 65532a3185 | |||
| 1440c52322 | |||
| 4e36053ba6 | |||
| c7777b261d | |||
| 7b0a86bb81 | |||
| ebf2bd578e | |||
| f90e2acc3e | |||
| 035f058bc3 | |||
| 73e57e9430 | |||
| 13cc9f6053 | |||
| d9844315a3 | |||
| ade37f07d6 | |||
| f02e9921cb | |||
| e8ce7a9eeb | |||
| 61b0049a87 | |||
| 5c4d72dae2 | |||
| 39f52bf3dd | |||
| e50aa1f014 | |||
| b1d06605cd | |||
| ed55eb4279 | |||
| 9ac96ac8fd | |||
| 5be3fd9c25 | |||
| bab558252a | |||
| c256b39119 | |||
| af76627c50 | |||
| f9544566e9 | |||
| 4f02c3a4bc | |||
| ea8d8835cd | |||
| 61e07e8f76 | |||
| 962e1f7fa4 | |||
| 07d889bcd5 | |||
| 170db3eb0a | |||
| 856a807e3e | |||
| c56aa812ff | |||
| 770f014a70 | |||
| f6ff7aa80d | |||
| 4cd3e7e102 | |||
| 69bf5e319e | |||
| 88fe4d82cd | |||
| c8cd794cfc | |||
| 5dcc567eab | |||
| 89eafaf6ca | |||
| 6fc7f80ed4 | |||
| 2464d44222 | |||
| 96d544f2ad | |||
| e85ddc6580 | |||
| 89f6b9ce71 | |||
| c7d0ed1747 | |||
| b84b3c28f3 | |||
| 3a3bf4c2dd | |||
| 4809a96e5b | |||
| 5f206feb12 | |||
| 575762da2f | |||
| a96078c9e6 | |||
| b1941d5c34 | |||
| 4dc688af14 | |||
| 6675757317 | |||
| 1310b34a8d | |||
| 4e8fe26c6b | |||
| 32ff7bfa39 | |||
| c8cfa486e1 | |||
| 0356c912e6 | |||
| 7f448bbbb3 | |||
| f940b6f239 | |||
| a3de73dc66 | |||
| 9fa1aa156e | |||
| 03e1a186b8 | |||
| 598372675f | |||
| ffccd2f3d3 | |||
| 4252e13323 | |||
| 7c55cce6ae | |||
| 45caece076 | |||
| 79dc75fc89 | |||
| f9483e14be | |||
| d3396cdb63 | |||
| 3c0d084c28 | |||
| ba220461db | |||
| 0d9d0ff8b0 | |||
| 74d0369cb5 | |||
| 6fbdce86c7 | |||
| 4bfd68b614 | |||
| b57c452648 | |||
| 0fd4dc668a | |||
| 726afed296 | |||
| 5b04e99c33 | |||
| 5632c6f7ab | |||
| 20a076e705 | |||
| fb85af8bbf | |||
| 6a7f3ee2ed | |||
| de4a87658e | |||
| e87f248a12 |
@@ -7,8 +7,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 157
|
def appVersionCode = 180
|
||||||
def appVersionName = '1.13.11'
|
def appVersionName = '1.14.3'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
@@ -91,27 +91,27 @@ dependencies {
|
|||||||
//Firebase
|
//Firebase
|
||||||
|
|
||||||
// Import the Firebase BoM
|
// Import the Firebase BoM
|
||||||
implementation platform('com.google.firebase:firebase-bom:25.12.0')
|
implementation platform('com.google.firebase:firebase-bom:26.3.0')
|
||||||
|
implementation 'com.google.firebase:firebase-analytics'
|
||||||
implementation 'com.google.firebase:firebase-core'
|
implementation 'com.google.firebase:firebase-core'
|
||||||
implementation 'com.google.firebase:firebase-crash'
|
implementation 'com.google.firebase:firebase-crash'
|
||||||
implementation 'com.google.firebase:firebase-perf'
|
|
||||||
implementation 'com.google.firebase:firebase-crashlytics'
|
implementation 'com.google.firebase:firebase-crashlytics'
|
||||||
implementation 'com.google.firebase:firebase-analytics'
|
implementation 'com.google.firebase:firebase-perf'
|
||||||
implementation 'com.google.android.gms:play-services-basement:17.4.0'
|
implementation 'com.google.android.gms:play-services-basement:17.5.0'
|
||||||
|
|
||||||
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
implementation 'com.google.android.material:material:1.3.0-alpha03'
|
implementation 'com.google.android.material:material:1.3.0-rc01'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||||
implementation 'androidx.cardview:cardview:1.0.0'
|
implementation 'androidx.cardview:cardview:1.0.0'
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||||
implementation 'androidx.preference:preference:1.1.1'
|
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||||
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||||
implementation 'com.annimon:stream:1.2.1'
|
implementation 'com.annimon:stream:1.2.1'
|
||||||
implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
|
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
|
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
|
||||||
implementation 'org.apache.commons:commons-text:1.9'
|
implementation 'org.apache.commons:commons-text:1.9'
|
||||||
|
|||||||
@@ -14,14 +14,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oauth_client": [
|
"oauth_client": [
|
||||||
{
|
|
||||||
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
|
|
||||||
"client_type": 1,
|
|
||||||
"android_info": {
|
|
||||||
"package_name": "it.integry.integrywmsnative",
|
|
||||||
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"client_id": "963231271247-59qdc1vobbnjfp135ce4hv12c53s9hse.apps.googleusercontent.com",
|
"client_id": "963231271247-59qdc1vobbnjfp135ce4hv12c53s9hse.apps.googleusercontent.com",
|
||||||
"client_type": 1,
|
"client_type": 1,
|
||||||
@@ -30,6 +22,14 @@
|
|||||||
"certificate_hash": "3b6d97a981f446f5011049d781aeb9960f9352af"
|
"certificate_hash": "3b6d97a981f446f5011049d781aeb9960f9352af"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
|
||||||
|
"client_type": 1,
|
||||||
|
"android_info": {
|
||||||
|
"package_name": "it.integry.integrywmsnative",
|
||||||
|
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
||||||
"client_type": 3
|
"client_type": 3
|
||||||
@@ -41,20 +41,13 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"services": {
|
"services": {
|
||||||
"analytics_service": {
|
|
||||||
"status": 1
|
|
||||||
},
|
|
||||||
"appinvite_service": {
|
"appinvite_service": {
|
||||||
"status": 2,
|
|
||||||
"other_platform_oauth_client": [
|
"other_platform_oauth_client": [
|
||||||
{
|
{
|
||||||
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
||||||
"client_type": 3
|
"client_type": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"ads_service": {
|
|
||||||
"status": 2
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,10 +25,14 @@
|
|||||||
android:windowSoftInputMode="adjustNothing" />
|
android:windowSoftInputMode="adjustNothing" />
|
||||||
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".gest.picking_resi.PickingResiActivity"
|
android:name=".gest.picking_resi_OLD.PickingResiActivity"
|
||||||
android:label="@string/activity_ultime_consegne_title"
|
android:label="@string/activity_ultime_consegne_title"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/Light" />
|
android:theme="@style/Light" />
|
||||||
|
<activity
|
||||||
|
android:name=".gest.picking_resi.PickingResiActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:theme="@style/Light" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
|
|||||||
@@ -175,8 +175,8 @@ public class MainActivity extends BaseActivity
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case R.id.nav_logout:
|
case R.id.nav_logout:
|
||||||
UtilitySettings.logout(this.mAppDatabase);
|
|
||||||
ServerStatusChecker.dispose();
|
ServerStatusChecker.dispose();
|
||||||
|
UtilitySettings.logout();
|
||||||
|
|
||||||
startLoginActivity();
|
startLoginActivity();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ public class MainApplication extends Application {
|
|||||||
.roomModule(roomModule)
|
.roomModule(roomModule)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
appComponent.inject(appContext);
|
||||||
|
|
||||||
appContext.init();
|
appContext.init();
|
||||||
res = getResources();
|
res = getResources();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,14 @@ package it.integry.integrywmsnative;
|
|||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import dagger.Component;
|
import dagger.Component;
|
||||||
|
import it.integry.integrywmsnative.core.context.AppContext;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
|
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
|
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
|
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
|
||||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
|
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
|
||||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
|
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.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
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_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
|
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
|
||||||
@@ -16,6 +19,8 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComp
|
|||||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
|
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
|
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
|
||||||
|
|
||||||
// Definition of the Application graph
|
// Definition of the Application graph
|
||||||
@Singleton
|
@Singleton
|
||||||
@@ -28,7 +33,9 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
|
|||||||
PickingLiberoModule.class,
|
PickingLiberoModule.class,
|
||||||
RettificaGiacenzeModule.class,
|
RettificaGiacenzeModule.class,
|
||||||
SpedizioneModule.class,
|
SpedizioneModule.class,
|
||||||
AccettazionePickingModule.class})
|
AccettazionePickingModule.class,
|
||||||
|
PickingResiModule.class,
|
||||||
|
DialogInputQuantityV2Module.class})
|
||||||
public interface MainApplicationComponent {
|
public interface MainApplicationComponent {
|
||||||
|
|
||||||
MainActivityComponent.Factory mainActivityComponent();
|
MainActivityComponent.Factory mainActivityComponent();
|
||||||
@@ -38,5 +45,11 @@ public interface MainApplicationComponent {
|
|||||||
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
|
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
|
||||||
SpedizioneComponent.Factory spedizioneComponent();
|
SpedizioneComponent.Factory spedizioneComponent();
|
||||||
AccettazionePickingComponent.Factory accettazionePickingComponent();
|
AccettazionePickingComponent.Factory accettazionePickingComponent();
|
||||||
|
PickingResiComponent.Factory pickingResiComponent();
|
||||||
|
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void inject(AppContext appContext);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,16 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics;
|
|||||||
import com.orhanobut.logger.AndroidLogAdapter;
|
import com.orhanobut.logger.AndroidLogAdapter;
|
||||||
import com.orhanobut.logger.Logger;
|
import com.orhanobut.logger.Logger;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.BuildConfig;
|
import it.integry.integrywmsnative.BuildConfig;
|
||||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
|
||||||
|
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.settings.Stash;
|
import it.integry.integrywmsnative.core.settings.Stash;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||||
|
|
||||||
@@ -20,6 +24,9 @@ public class AppContext {
|
|||||||
//Note: this is the Application Context NOT the Activity Context
|
//Note: this is the Application Context NOT the Activity Context
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
AppDatabase mAppDatabase;
|
||||||
|
|
||||||
public AppContext(Context context) {
|
public AppContext(Context context) {
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
}
|
}
|
||||||
@@ -63,6 +70,7 @@ public class AppContext {
|
|||||||
UtilityContext.initApplicationContext(mContext);
|
UtilityContext.initApplicationContext(mContext);
|
||||||
UtilityResources.init(mContext);
|
UtilityResources.init(mContext);
|
||||||
UtilityToast.init(mContext);
|
UtilityToast.init(mContext);
|
||||||
|
UtilitySettings.init(mAppDatabase);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initLogger() {
|
private void initLogger() {
|
||||||
|
|||||||
@@ -3,15 +3,18 @@ package it.integry.integrywmsnative.core.context;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.class_router.ClassRouter;
|
import it.integry.integrywmsnative.core.class_router.ClassRouter;
|
||||||
|
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilitySettings;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||||
|
|
||||||
public class MainContext {
|
public class MainContext {
|
||||||
@@ -44,7 +47,10 @@ public class MainContext {
|
|||||||
private void initDBData(Runnable onComplete) {
|
private void initDBData(Runnable onComplete) {
|
||||||
SettingsManager.loadDBVariables(onComplete, ex -> {
|
SettingsManager.loadDBVariables(onComplete, ex -> {
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(mContext,
|
DialogSimpleMessageHelper.makeErrorDialog(mContext,
|
||||||
new SpannableString(ex.getMessage()), null, mContext::finish).show();
|
new SpannableString(ex.getMessage()), null, mContext::finish, R.string.logout, () -> {
|
||||||
|
UtilitySettings.logout();
|
||||||
|
MainApplication.exit();
|
||||||
|
}).show();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import androidx.room.ForeignKey;
|
|||||||
import androidx.room.Index;
|
import androidx.room.Index;
|
||||||
import androidx.room.PrimaryKey;
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
import java.util.Date;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
|
||||||
@Entity(
|
@Entity(
|
||||||
tableName = "articoli_griglia",
|
tableName = "articoli_griglia",
|
||||||
@@ -159,7 +159,7 @@ public class ArticoloGriglia {
|
|||||||
articolo.setQtaCnf(this.getQtaCnf());
|
articolo.setQtaCnf(this.getQtaCnf());
|
||||||
articolo.setUntMis(this.getUntMis());
|
articolo.setUntMis(this.getUntMis());
|
||||||
articolo.setDescrizione(this.getDescrizione());
|
articolo.setDescrizione(this.getDescrizione());
|
||||||
articolo.setDataIns(new Date());
|
articolo.setDataIns(UtilityDate.getDateInstance());
|
||||||
articolo.setQtaOrd(0);
|
articolo.setQtaOrd(0);
|
||||||
|
|
||||||
return articolo;
|
return articolo;
|
||||||
|
|||||||
@@ -1,23 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.core.di;
|
package it.integry.integrywmsnative.core.di;
|
||||||
|
|
||||||
import androidx.annotation.ColorRes;
|
|
||||||
import androidx.annotation.IdRes;
|
|
||||||
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
|
|
||||||
import androidx.appcompat.widget.LinearLayoutCompat;
|
|
||||||
import androidx.core.content.res.ResourcesCompat;
|
|
||||||
import androidx.databinding.BindingAdapter;
|
|
||||||
import androidx.databinding.BindingConversion;
|
|
||||||
import androidx.constraintlayout.widget.Guideline;
|
|
||||||
|
|
||||||
import com.google.android.material.textfield.TextInputEditText;
|
|
||||||
import com.google.android.material.textfield.TextInputLayout;
|
|
||||||
|
|
||||||
import androidx.core.util.Pair;
|
|
||||||
import androidx.appcompat.widget.AppCompatCheckBox;
|
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
|
||||||
|
|
||||||
import android.app.DatePickerDialog;
|
import android.app.DatePickerDialog;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -25,10 +8,25 @@ import android.widget.AutoCompleteTextView;
|
|||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.RadioButton;
|
import android.widget.RadioButton;
|
||||||
import android.widget.RadioGroup;
|
import android.widget.RadioGroup;
|
||||||
|
|
||||||
|
import androidx.annotation.ColorRes;
|
||||||
|
import androidx.appcompat.widget.AppCompatCheckBox;
|
||||||
|
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
|
||||||
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
|
import androidx.appcompat.widget.LinearLayoutCompat;
|
||||||
|
import androidx.constraintlayout.widget.Guideline;
|
||||||
|
import androidx.core.content.res.ResourcesCompat;
|
||||||
|
import androidx.core.util.Pair;
|
||||||
|
import androidx.databinding.BindingAdapter;
|
||||||
|
import androidx.databinding.BindingConversion;
|
||||||
|
import androidx.databinding.Observable;
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
|
||||||
|
import com.google.android.material.textfield.TextInputEditText;
|
||||||
|
import com.google.android.material.textfield.TextInputLayout;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.DecimalFormatSymbols;
|
import java.text.DecimalFormatSymbols;
|
||||||
@@ -37,15 +35,10 @@ import java.util.Date;
|
|||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import androidx.databinding.Observable;
|
|
||||||
import androidx.databinding.ObservableField;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.MainApplication;
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityContext;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
@@ -178,7 +171,7 @@ public class Converters {
|
|||||||
view.addTextChangedListener(watcher);
|
view.addTextChangedListener(watcher);
|
||||||
}
|
}
|
||||||
String newValue = observableString.get();
|
String newValue = observableString.get();
|
||||||
String viewValue = view.getText().toString().trim();
|
String viewValue = view.getText().toString();
|
||||||
|
|
||||||
if(!viewValue.equalsIgnoreCase(newValue)) {
|
if(!viewValue.equalsIgnoreCase(newValue)) {
|
||||||
view.setText(newValue);
|
view.setText(newValue);
|
||||||
@@ -386,7 +379,7 @@ public class Converters {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@BindingAdapter({"app:visibility"})
|
@BindingAdapter({"visibility"})
|
||||||
public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) {
|
public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) {
|
||||||
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
|
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
|
||||||
view.setTag(R.id.bound_observable, bindableBoolean);
|
view.setTag(R.id.bound_observable, bindableBoolean);
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
|
|||||||
|
|
||||||
public class NoPrintersFoundException extends Exception {
|
public class NoPrintersFoundException extends Exception {
|
||||||
public NoPrintersFoundException() {
|
public NoPrintersFoundException() {
|
||||||
super(UtilityResources.getString(R.string.exception_printer_not_found));
|
super(UtilityResources.getString(R.string.exception_no_printer_found));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package it.integry.integrywmsnative.core.expansion;
|
||||||
|
|
||||||
|
public interface RunnableArgsWithReturn<T, R> {
|
||||||
|
|
||||||
|
R run(T data);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,15 @@
|
|||||||
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
|
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
|
||||||
public interface ILUBaseOperationsListener {
|
public interface ILUBaseOperationsListener {
|
||||||
|
|
||||||
|
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
||||||
|
|
||||||
void onLUOpened(MtbColt mtbColt);
|
void onLUOpened(MtbColt mtbColt);
|
||||||
|
|
||||||
void onLUClosed();
|
void onLUClosed();
|
||||||
|
|
||||||
|
void onRowSaved();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
|
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
|
||||||
|
|
||||||
public interface ILoadingListener {
|
public interface ILoadingListener {
|
||||||
|
|
||||||
void onLoadingStarted();
|
void onLoadingStarted();
|
||||||
|
|
||||||
void onLoadingEnded();
|
void onLoadingEnded();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,6 +141,8 @@ public class DtbDocr {
|
|||||||
|
|
||||||
private MtbAart mtbAart;
|
private MtbAart mtbAart;
|
||||||
|
|
||||||
|
private String dataScadPartitaMag;
|
||||||
|
|
||||||
public String getCodAnag() {
|
public String getCodAnag() {
|
||||||
return codAnag;
|
return codAnag;
|
||||||
}
|
}
|
||||||
@@ -739,6 +741,19 @@ public class DtbDocr {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDataScadPartitaMag() {
|
||||||
|
return dataScadPartitaMag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataScadPartitaMagD() {
|
||||||
|
return UtilityDate.recognizeDateWithExceptionHandler(getDataScadPartitaMag());
|
||||||
|
}
|
||||||
|
|
||||||
|
public DtbDocr setDataScadPartitaMag(String dataScadPartitaMag) {
|
||||||
|
this.dataScadPartitaMag = dataScadPartitaMag;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public MtbAart getMtbAart() {
|
public MtbAart getMtbAart() {
|
||||||
return mtbAart;
|
return mtbAart;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public class MtbColt extends EntityBase {
|
|||||||
private BigDecimal lunghezzaCm;
|
private BigDecimal lunghezzaCm;
|
||||||
private BigDecimal larghezzaCm;
|
private BigDecimal larghezzaCm;
|
||||||
private BigDecimal altezzaCm;
|
private BigDecimal altezzaCm;
|
||||||
|
private String codJcom;
|
||||||
|
|
||||||
private List<MtbCols> mtbCols;
|
private List<MtbCols> mtbCols;
|
||||||
|
|
||||||
@@ -500,6 +501,15 @@ public class MtbColt extends EntityBase {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCodJcom() {
|
||||||
|
return codJcom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MtbColt setCodJcom(String codJcom) {
|
||||||
|
this.codJcom = codJcom;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public void generaFiltroOrdineFromDTO(List<FiltroOrdineDTO> filtroOrdineDtos) {
|
public void generaFiltroOrdineFromDTO(List<FiltroOrdineDTO> filtroOrdineDtos) {
|
||||||
|
|
||||||
String xmlPrefix = "{\"whereCond\": \"";
|
String xmlPrefix = "{\"whereCond\": \"";
|
||||||
|
|||||||
@@ -10,9 +10,19 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
|||||||
|
|
||||||
public class PickDataDTO {
|
public class PickDataDTO {
|
||||||
|
|
||||||
|
private MtbColt refMtbColt;
|
||||||
private MtbColt sourceMtbColt;
|
private MtbColt sourceMtbColt;
|
||||||
private ManualPickDTO manualPickDTO;
|
private ManualPickDTO manualPickDTO;
|
||||||
|
|
||||||
|
public MtbColt getRefMtbColt() {
|
||||||
|
return refMtbColt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickDataDTO setRefMtbColt(MtbColt refMtbColt) {
|
||||||
|
this.refMtbColt = refMtbColt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public MtbColt getSourceMtbColt() {
|
public MtbColt getSourceMtbColt() {
|
||||||
return sourceMtbColt;
|
return sourceMtbColt;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import retrofit2.http.Query;
|
|||||||
public interface MesRESTConsumerService {
|
public interface MesRESTConsumerService {
|
||||||
|
|
||||||
|
|
||||||
@GET("mes/getOrdiniLavorazioneMateriale")
|
@GET("mes_v2/getOrdiniLavorazioneMateriale")
|
||||||
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazioneMateriale(@Query("codJfas") String codJfas, @Query("idMateriale") String idMateriale);
|
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazioneMateriale(@Query("codJfas") String codJfas, @Query("idMateriale") String idMateriale);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.annimon.stream.Stream;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
@@ -18,6 +17,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|||||||
import it.integry.integrywmsnative.core.model.DtbOrdt;
|
import it.integry.integrywmsnative.core.model.DtbOrdt;
|
||||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityThread;
|
import it.integry.integrywmsnative.core.utility.UtilityThread;
|
||||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
|
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
|
||||||
@@ -84,7 +84,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
|
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
|
||||||
ordineDTO.setDataConsD(new Date());
|
ordineDTO.setDataConsD(UtilityDate.getDateInstance());
|
||||||
ordineDTO.setArtRows(artRows);
|
ordineDTO.setArtRows(artRows);
|
||||||
saveDTO.setGestione("O");
|
saveDTO.setGestione("O");
|
||||||
saveDTO.setOrdineDTO(ordineDTO);
|
saveDTO.setOrdineDTO(ordineDTO);
|
||||||
@@ -101,7 +101,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
if (dtoList.size() > 0){
|
if (dtoList.size() > 0){
|
||||||
DtbOrdt dto = dtoList.get(0);
|
DtbOrdt dto = dtoList.get(0);
|
||||||
ordine.setTransmitted(true);
|
ordine.setTransmitted(true);
|
||||||
ordine.setTransmissionDate(new Date());
|
ordine.setTransmissionDate(UtilityDate.getDateInstance());
|
||||||
ordine.setGestione(dto.getGestione());
|
ordine.setGestione(dto.getGestione());
|
||||||
ordine.setDataOrdS(dto.getDataOrd());
|
ordine.setDataOrdS(dto.getDataOrd());
|
||||||
ordine.setCodMdep(dto.getCodMdep());
|
ordine.setCodMdep(dto.getCodMdep());
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
|
|||||||
public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
|
||||||
|
|
||||||
String sql = "SELECT * FROM mtb_colt WHERE cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());
|
String sql = "SELECT * FROM mtb_colt WHERE segno > 0 AND cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());
|
||||||
|
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.util.Log;
|
|||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
@@ -11,6 +12,8 @@ import javax.inject.Singleton;
|
|||||||
import it.integry.integrywmsnative.BuildConfig;
|
import it.integry.integrywmsnative.BuildConfig;
|
||||||
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
|
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
|
||||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.JasperDTO;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.JasperPairDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
@@ -89,7 +92,10 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
|
|||||||
printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
|
printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
|
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
|
||||||
analyzeAnswer(response, "GetAvailablePrinters", onComplete, onFailed);
|
analyzeAnswer(response, "GetAvailablePrinters", printerList -> {
|
||||||
|
printerList = Stream.of(printerList).filter(x -> !UtilityString.isNullOrEmpty(x)).toList();
|
||||||
|
onComplete.run(printerList);
|
||||||
|
}, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -130,7 +136,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
|
|||||||
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||||
analyzeAnswer(response, "PrintCollo", data -> {
|
analyzeAnswer(response, "printCollo", data -> {
|
||||||
onComplete.run();
|
onComplete.run();
|
||||||
}, onFailed);
|
}, onFailed);
|
||||||
}
|
}
|
||||||
@@ -142,7 +148,38 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
|
|||||||
} else onFailed.run(new Exception(t));
|
} else onFailed.run(new Exception(t));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printReport(String printerName, String reportName, HashMap<String, Object> params, int quantity, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
// if(BuildConfig.DEBUG) {
|
||||||
|
// onComplete.run();
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
JasperDTO jasperDTO = new JasperDTO();
|
||||||
|
jasperDTO.setReportName(reportName);
|
||||||
|
|
||||||
|
Stream.of(params)
|
||||||
|
.forEach(x -> jasperDTO.getParams().add(new JasperPairDTO(x.getKey(), x.getValue())));
|
||||||
|
|
||||||
|
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
|
||||||
|
printerService
|
||||||
|
.processPrintReport(printerName, quantity, jasperDTO)
|
||||||
|
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
|
||||||
|
analyzeAnswer(response, "printReport", data -> {
|
||||||
|
onComplete.run();
|
||||||
|
}, onFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
|
||||||
|
if(t.getMessage().contains("Printer not found")) {
|
||||||
|
onFailed.run(new NoPrintersFoundException());
|
||||||
|
} else onFailed.run(new Exception(t));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,10 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.JasperDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.Field;
|
import retrofit2.http.Field;
|
||||||
import retrofit2.http.FormUrlEncoded;
|
import retrofit2.http.FormUrlEncoded;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
@@ -34,4 +36,11 @@ public interface PrinterRESTConsumerService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@POST("processPrintReport")
|
||||||
|
Call<ServiceRESTResponse<Object>> processPrintReport(
|
||||||
|
@Query("printerName") String printerName,
|
||||||
|
@Query("numberOfCopies") int printQuantity,
|
||||||
|
@Body JasperDTO jasperDTO
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model;
|
|||||||
public class Ean13PesoModel {
|
public class Ean13PesoModel {
|
||||||
|
|
||||||
private String precode;
|
private String precode;
|
||||||
|
//TODO: Change to bigdecimal
|
||||||
private Float peso;
|
private Float peso;
|
||||||
|
|
||||||
public String getPrecode() {
|
public String getPrecode() {
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package it.integry.integrywmsnative.core.rest.model;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class JasperDTO {
|
||||||
|
|
||||||
|
private String reportName;
|
||||||
|
private List<JasperPairDTO> params = new ArrayList<>();
|
||||||
|
|
||||||
|
public String getReportName() {
|
||||||
|
return reportName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JasperDTO setReportName(String reportName) {
|
||||||
|
this.reportName = reportName;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JasperPairDTO> getParams() {
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JasperDTO setParams(List<JasperPairDTO> params) {
|
||||||
|
this.params = params;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package it.integry.integrywmsnative.core.rest.model;
|
||||||
|
|
||||||
|
public class JasperPairDTO {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private Object value;
|
||||||
|
|
||||||
|
public JasperPairDTO(String name, Object value) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JasperPairDTO setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JasperPairDTO setValue(Object value) {
|
||||||
|
this.value = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ public class DBSettingsModel {
|
|||||||
private String defaultCausaleRettificaGiacenze;
|
private String defaultCausaleRettificaGiacenze;
|
||||||
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
|
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
|
||||||
private boolean flagAskClienteInPickingLibero;
|
private boolean flagAskClienteInPickingLibero;
|
||||||
|
private boolean flagAllowEmptyClienteInPickingLibero;
|
||||||
|
|
||||||
private boolean flagCanAddExtraItemSpedizione;
|
private boolean flagCanAddExtraItemSpedizione;
|
||||||
private boolean flagCanAutoOpenNewULAccettazione;
|
private boolean flagCanAutoOpenNewULAccettazione;
|
||||||
@@ -33,6 +34,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagSpedizioneEnableManualPick;
|
private boolean flagSpedizioneEnableManualPick;
|
||||||
private boolean flagSpedizioneCanSelectMultipleOrders;
|
private boolean flagSpedizioneCanSelectMultipleOrders;
|
||||||
private String produzioneDefaultCodAnag;
|
private String produzioneDefaultCodAnag;
|
||||||
|
private String reportNameSpedizionChiudiOrdine;
|
||||||
|
|
||||||
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
public boolean isFlagSpedizioneEnableFakeGiacenza() {
|
||||||
return flagSpedizioneEnableFakeGiacenza;
|
return flagSpedizioneEnableFakeGiacenza;
|
||||||
@@ -132,6 +134,15 @@ public class DBSettingsModel {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagAllowEmptyClienteInPickingLibero() {
|
||||||
|
return flagAllowEmptyClienteInPickingLibero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagAllowEmptyClienteInPickingLibero(boolean flagAllowEmptyClienteInPickingLibero) {
|
||||||
|
this.flagAllowEmptyClienteInPickingLibero = flagAllowEmptyClienteInPickingLibero;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isFlagCanAddExtraItemSpedizione() {
|
public boolean isFlagCanAddExtraItemSpedizione() {
|
||||||
return flagCanAddExtraItemSpedizione;
|
return flagCanAddExtraItemSpedizione;
|
||||||
}
|
}
|
||||||
@@ -231,4 +242,13 @@ public class DBSettingsModel {
|
|||||||
this.produzioneDefaultCodAnag = produzioneDefaultCodAnag;
|
this.produzioneDefaultCodAnag = produzioneDefaultCodAnag;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getReportNameSpedizionChiudiOrdine() {
|
||||||
|
return reportNameSpedizionChiudiOrdine;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setReportNameSpedizionChiudiOrdine(String reportNameSpedizionChiudiOrdine) {
|
||||||
|
this.reportNameSpedizionChiudiOrdine = reportNameSpedizionChiudiOrdine;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -202,6 +202,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("PICKING_LIBERO")
|
.setSection("PICKING_LIBERO")
|
||||||
.setKeySection("FLAG_ASK_CLIENTE"));
|
.setKeySection("FLAG_ASK_CLIENTE"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("PICKING_LIBERO")
|
||||||
|
.setKeySection("FLAG_ALLOW_EMPTY_CLIENTE"));
|
||||||
stbGestSetupList.add(new StbGestSetup()
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("SPEDIZIONE")
|
.setSection("SPEDIZIONE")
|
||||||
@@ -250,6 +254,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PICKING")
|
.setGestName("PICKING")
|
||||||
.setSection("SPEDIZIONE")
|
.setSection("SPEDIZIONE")
|
||||||
.setKeySection("FLAG_CAN_SELECT_MULTIPLE_ORDERS"));
|
.setKeySection("FLAG_CAN_SELECT_MULTIPLE_ORDERS"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PICKING")
|
||||||
|
.setSection("SPEDIZIONE")
|
||||||
|
.setKeySection("REPORT_PACKING_LIST"));
|
||||||
|
|
||||||
|
|
||||||
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
||||||
@@ -259,6 +267,7 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP","COD_ANAG_DEFAULT", String.class));
|
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP","COD_ANAG_DEFAULT", String.class));
|
||||||
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP","DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
|
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP","DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
|
||||||
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
|
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
|
||||||
|
dbSettingsModelIstance.setFlagAllowEmptyClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
|
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
|
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
|
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
|
||||||
@@ -271,6 +280,7 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class));
|
dbSettingsModelIstance.setFlagSpedizioneEnableManualPick(getValueFromList(list, "SPEDIZIONE", "ENABLE_MANUAL_PICK", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class));
|
dbSettingsModelIstance.setFlagSpedizioneEnableFakeGiacenza(getValueFromList(list, "SPEDIZIONE", "ENABLE_FAKE_GIACENZA", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
|
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
|
||||||
|
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
|
||||||
|
|
||||||
if(onComplete != null) onComplete.run();
|
if(onComplete != null) onComplete.run();
|
||||||
}, onFailed);
|
}, onFailed);
|
||||||
|
|||||||
@@ -26,6 +26,14 @@ public class UtilityBigDecimal {
|
|||||||
return input.compareTo(toCompareWith) < 0;
|
return input.compareTo(toCompareWith) < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean equalsOrLowerThan(BigDecimal input, BigDecimal toCompareWith) {
|
||||||
|
return equalsTo(input, toCompareWith) || lowerThan(input, toCompareWith);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean equalsOrGreaterThan(BigDecimal input, BigDecimal toCompareWith) {
|
||||||
|
return equalsTo(input, toCompareWith) || greaterThan(input, toCompareWith);
|
||||||
|
}
|
||||||
|
|
||||||
public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) {
|
public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) {
|
||||||
if(input1 == null) return input2;
|
if(input1 == null) return input2;
|
||||||
if(input2 == null) return input1;
|
if(input2 == null) return input1;
|
||||||
|
|||||||
@@ -6,10 +6,16 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|||||||
public class UtilitySettings {
|
public class UtilitySettings {
|
||||||
|
|
||||||
|
|
||||||
public static void logout(AppDatabase appDatabase){
|
private static AppDatabase mAppDatabase;
|
||||||
|
|
||||||
|
public static void init(AppDatabase appDatabase) {
|
||||||
|
mAppDatabase = appDatabase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void logout(){
|
||||||
SettingsManager.i().setUser(null);
|
SettingsManager.i().setUser(null);
|
||||||
SettingsManager.i().setUserSession(null);
|
SettingsManager.i().setUserSession(null);
|
||||||
UtilityThread.executeParallel(appDatabase::clearAllTables);
|
UtilityThread.executeParallel(mAppDatabase::clearAllTables);
|
||||||
SettingsManager.update();
|
SettingsManager.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
|||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||||
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
|
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
|
||||||
@@ -51,6 +52,7 @@ import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneLi
|
|||||||
import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListModel;
|
import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListModel;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.AccettazioneOrdineInevasoOrderBy;
|
import it.integry.integrywmsnative.gest.accettazione_picking.dto.AccettazioneOrdineInevasoOrderBy;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt;
|
||||||
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
@@ -234,20 +236,34 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
|
|
||||||
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
||||||
|
|
||||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||||
.map(MtbColr::getQtaCol)
|
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||||
|
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
|
.map(MtbColr::getNumCnf)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||||
|
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfDaEvadere());
|
||||||
|
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
|
} else {
|
||||||
|
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||||
|
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
|
.map(MtbColr::getQtaCol)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||||
|
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||||
|
if (x.getMtbAart() != null)
|
||||||
|
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||||
}
|
}
|
||||||
|
|
||||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
|
||||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
|
||||||
|
|
||||||
if (x.getMtbAart() != null)
|
|
||||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
|
||||||
|
|
||||||
accettazioneListModel.setOriginalModel(x);
|
accettazioneListModel.setOriginalModel(x);
|
||||||
|
|
||||||
list.add(accettazioneListModel);
|
list.add(accettazioneListModel);
|
||||||
@@ -271,17 +287,33 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
|
|
||||||
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
accettazioneListModel.setDescrizione(x.getSitArtOrdDTO().getDescrizioneCommessa());
|
||||||
|
|
||||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
|
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||||
|
|
||||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
.map(MtbColr::getQtaCol)
|
.map(MtbColr::getNumCnf)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||||
|
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||||
|
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
|
} else {
|
||||||
|
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||||
|
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
|
.map(MtbColr::getQtaCol)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||||
|
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||||
|
if (x.getMtbAart() != null)
|
||||||
|
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||||
}
|
}
|
||||||
|
|
||||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
|
||||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
|
||||||
|
|
||||||
if (x.getMtbAart() != null)
|
if (x.getMtbAart() != null)
|
||||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||||
|
|
||||||
@@ -309,20 +341,35 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
accettazioneListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
|
accettazioneListModel.setBadge2(String.valueOf(x.getSitArtOrdDTO().getNumOrd()));
|
||||||
|
|
||||||
|
|
||||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
|
BigDecimal numCnfEvasa = BigDecimal.ZERO;
|
||||||
|
|
||||||
if(x.getWithdrawMtbColrs().size() > 0) {
|
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||||
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
numCnfEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
.map(MtbColr::getQtaCol)
|
.map(MtbColr::getNumCnf)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||||
|
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||||
|
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
|
} else {
|
||||||
|
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
if(x.getWithdrawMtbColrs().size() > 0) {
|
||||||
|
qtaEvasa = Stream.of(x.getWithdrawMtbColrs())
|
||||||
|
.map(MtbColr::getQtaCol)
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
||||||
|
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
||||||
|
if (x.getMtbAart() != null)
|
||||||
|
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||||
}
|
}
|
||||||
|
|
||||||
accettazioneListModel.setQtaEvasa(qtaEvasa);
|
|
||||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaDaEvadere());
|
|
||||||
|
|
||||||
if (x.getMtbAart() != null) {
|
if (x.getMtbAart() != null) {
|
||||||
accettazioneListModel.setDescrizione(x.getMtbAart().getDescrizioneEstesa());
|
accettazioneListModel.setDescrizione(x.getMtbAart().getDescrizioneEstesa());
|
||||||
accettazioneListModel.setUntMis(x.getMtbAart().getUntMis());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
accettazioneListModel.setOriginalModel(x);
|
accettazioneListModel.setOriginalModel(x);
|
||||||
@@ -363,7 +410,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
.anyMatch(x -> !x.isHidden());
|
.anyMatch(x -> !x.isHidden());
|
||||||
}
|
}
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
@@ -409,8 +456,13 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void startListaBancaliRegistratiActivity(ArrayList<MtbColt> mtbColts){
|
public void startListaBancaliRegistratiActivity(ArrayList<RecoverMtbColt> mtbColts) {
|
||||||
Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
|
|
||||||
|
Intent myIntent = ListaBancaliActivity.createIntent(this,
|
||||||
|
Stream.of(mtbColts).map(x -> (MtbColt)x).toList(),
|
||||||
|
input -> ((RecoverMtbColt) input).isFlagCanBeRecovered(),
|
||||||
|
PrinterRESTConsumer.Type.SECONDARIA,
|
||||||
|
ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
|
||||||
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
|
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -481,7 +533,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, Date dataScad, boolean canPartitaMagBeChanged, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, Date dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||||
.setMtbAart(mtbAart)
|
.setMtbAart(mtbAart)
|
||||||
.setInitialNumCnf(initialNumCnf)
|
.setInitialNumCnf(initialNumCnf)
|
||||||
@@ -498,7 +550,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
|||||||
.setQtaCnfAvailable(qtaCnfAvailable)
|
.setQtaCnfAvailable(qtaCnfAvailable)
|
||||||
.setPartitaMag(partitaMag)
|
.setPartitaMag(partitaMag)
|
||||||
.setDataScad(dataScad)
|
.setDataScad(dataScad)
|
||||||
.setCanPartitaMagBeChanged(canPartitaMagBeChanged);
|
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
|
||||||
|
.setCanLUBeClosed(true)
|
||||||
|
.setCanOverflowOrderQuantity(canOverflowQuantity);
|
||||||
|
|
||||||
DialogInputQuantityV2
|
DialogInputQuantityV2
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.gest.accettazione_picking;
|
package it.integry.integrywmsnative.gest.accettazione_picking;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
@@ -8,7 +9,9 @@ import com.annimon.stream.Stream;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -48,8 +51,10 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_picking.dto.HistoryMtbAartDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.rest.AccettazionePickingRESTConsumer;
|
import it.integry.integrywmsnative.gest.accettazione_picking.rest.AccettazionePickingRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
@@ -67,12 +72,14 @@ public class AccettazionePickingViewModel {
|
|||||||
|
|
||||||
private List<OrdineAccettazioneInevasoDTO> mOrders;
|
private List<OrdineAccettazioneInevasoDTO> mOrders;
|
||||||
private List<SitArtOrdDTO> mSitArts;
|
private List<SitArtOrdDTO> mSitArts;
|
||||||
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
private final MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
|
||||||
|
|
||||||
private MtbColt mCurrentMtbColt = null;
|
private MtbColt mCurrentMtbColt = null;
|
||||||
private GestioneEnum defaultGestioneOfUL = null;
|
private GestioneEnum defaultGestioneOfUL = null;
|
||||||
private String mDefaultCodMdep = null;
|
private String mDefaultCodMdep = null;
|
||||||
|
|
||||||
|
private final List<HistoryMtbAartDTO> mHistoryUsedAarts = new ArrayList<>();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public AccettazionePickingViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
public AccettazionePickingViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||||
@@ -159,7 +166,7 @@ public class AccettazionePickingViewModel {
|
|||||||
return mPickingList;
|
return mPickingList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void retrieveExistentLU(RunnableArgs<ArrayList<MtbColt>> onComplete) {
|
public void retrieveExistentLU(RunnableArgs<ArrayList<RecoverMtbColt>> onComplete) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mSitArts, mtbColtList -> {
|
this.mAccettazionePickingRESTConsumer.getBancaliGiaRegistrati(this.mSitArts, mtbColtList -> {
|
||||||
@@ -419,7 +426,7 @@ public class AccettazionePickingViewModel {
|
|||||||
|
|
||||||
|
|
||||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) {
|
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) {
|
||||||
if(this.mCurrentMtbColt == null) return;
|
if (this.mCurrentMtbColt == null) return;
|
||||||
|
|
||||||
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||||
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||||
@@ -434,8 +441,8 @@ public class AccettazionePickingViewModel {
|
|||||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||||
});
|
});
|
||||||
|
|
||||||
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfDaEvadere().subtract(numCnfWithdrawRows.getBigDecimalValue());
|
||||||
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaDaEvadere().subtract(qtaColWithdrawRows.getBigDecimalValue());
|
||||||
BigDecimal qtaCnfDaEvadere = qtaCnfOrd;
|
BigDecimal qtaCnfDaEvadere = qtaCnfOrd;
|
||||||
|
|
||||||
numCnfDaEvadere = UtilityBigDecimal.getGreaterBetween(numCnfDaEvadere, BigDecimal.ZERO);
|
numCnfDaEvadere = UtilityBigDecimal.getGreaterBetween(numCnfDaEvadere, BigDecimal.ZERO);
|
||||||
@@ -493,10 +500,47 @@ public class AccettazionePickingViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BigDecimal initialNumCnf;
|
||||||
|
BigDecimal initialQtaCnf;
|
||||||
|
BigDecimal initialQtaTot;
|
||||||
|
|
||||||
|
if (qtaColDaPrelevare != null) {
|
||||||
|
initialNumCnf = numCnfDaPrelevare;
|
||||||
|
initialQtaCnf = qtaCnfDaPrelevare;
|
||||||
|
initialQtaTot = qtaColDaPrelevare;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
initialNumCnf = totalNumCnfOrd;
|
||||||
|
initialQtaCnf = qtaCnfOrd;
|
||||||
|
initialQtaTot = totalQtaOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
|
||||||
|
initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
|
||||||
|
initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
|
||||||
|
dataScad = UtilityDate.getDateInstance();
|
||||||
|
Calendar c = new GregorianCalendar();
|
||||||
|
c.setTime(dataScad);
|
||||||
|
c.add(Calendar.DATE, pickingObjectDTO.getMtbAart().getGgScadPartita());
|
||||||
|
dataScad = c.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(partitaMag == null && dataScad == null) {
|
||||||
|
HistoryMtbAartDTO historyMtbAartDTO = this.getHistoryItemIfExists(pickingObjectDTO.getMtbAart().getCodMart());
|
||||||
|
|
||||||
|
if(historyMtbAartDTO != null) {
|
||||||
|
partitaMag = historyMtbAartDTO.getPartitaMag();
|
||||||
|
dataScad = historyMtbAartDTO.getDataScad();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.sendOnItemDispatched(
|
this.sendOnItemDispatched(
|
||||||
pickingObjectDTO,
|
pickingObjectDTO,
|
||||||
pickingObjectDTO.getMtbAart(),
|
pickingObjectDTO.getMtbAart(),
|
||||||
null, null, null,
|
initialNumCnf, initialQtaCnf, initialQtaTot,
|
||||||
qtaDaEvadere,
|
qtaDaEvadere,
|
||||||
numCnfDaEvadere,
|
numCnfDaEvadere,
|
||||||
qtaCnfDaEvadere,
|
qtaCnfDaEvadere,
|
||||||
@@ -543,6 +587,8 @@ public class AccettazionePickingViewModel {
|
|||||||
.setRigaOrd(pickingObjectDTO.getSitArtOrdDTO().getRigaOrd());
|
.setRigaOrd(pickingObjectDTO.getSitArtOrdDTO().getRigaOrd());
|
||||||
|
|
||||||
|
|
||||||
|
this.addHistoryItem(mtbColr);
|
||||||
|
|
||||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||||
|
|
||||||
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||||
@@ -638,6 +684,8 @@ public class AccettazionePickingViewModel {
|
|||||||
|
|
||||||
mtbColt.getMtbColr().add(mtbColr);
|
mtbColt.getMtbColr().add(mtbColr);
|
||||||
|
|
||||||
|
this.addHistoryItem(mtbColr);
|
||||||
|
|
||||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||||
|
|
||||||
mtbColr.setNumCnf(numCnf)
|
mtbColr.setNumCnf(numCnf)
|
||||||
@@ -648,7 +696,7 @@ public class AccettazionePickingViewModel {
|
|||||||
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate))
|
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate))
|
||||||
.findSingle();
|
.findSingle();
|
||||||
|
|
||||||
if(pickingObjectDTO.isPresent()) {
|
if (pickingObjectDTO.isPresent()) {
|
||||||
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
||||||
pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr);
|
pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr);
|
||||||
}
|
}
|
||||||
@@ -744,7 +792,7 @@ public class AccettazionePickingViewModel {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String reportName = ReportManager.getReportNameLUFromGestione(mCurrentMtbColt.getGestioneEnum());
|
String reportName = ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO);
|
||||||
|
|
||||||
this.mPrinterRESTConsumer.printCollo(
|
this.mPrinterRESTConsumer.printCollo(
|
||||||
printerList.get(0),
|
printerList.get(0),
|
||||||
@@ -783,6 +831,30 @@ public class AccettazionePickingViewModel {
|
|||||||
this.sendFilterRemoved();
|
this.sendFilterRemoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addHistoryItem(@NonNull MtbColr mtbColr) {
|
||||||
|
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
if (optional.isPresent()) {
|
||||||
|
optional.get()
|
||||||
|
.setPartitaMag(mtbColr.getPartitaMag())
|
||||||
|
.setDataScad(mtbColr.getDataScadPartitaD());
|
||||||
|
} else {
|
||||||
|
this.mHistoryUsedAarts.add(new HistoryMtbAartDTO()
|
||||||
|
.setCodMart(mtbColr.getCodMart())
|
||||||
|
.setPartitaMag(mtbColr.getPartitaMag())
|
||||||
|
.setDataScad(mtbColr.getDataScadPartitaD()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private HistoryMtbAartDTO getHistoryItemIfExists(@NonNull String codMart) {
|
||||||
|
Optional<HistoryMtbAartDTO> optional = Stream.of(this.mHistoryUsedAarts)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(codMart))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
return optional.isPresent() ? optional.get() : null;
|
||||||
|
}
|
||||||
|
|
||||||
private void sendOnLoadingStarted() {
|
private void sendOnLoadingStarted() {
|
||||||
if (this.mListener != null) mListener.onLoadingStarted();
|
if (this.mListener != null) mListener.onLoadingStarted();
|
||||||
@@ -851,6 +923,7 @@ public class AccettazionePickingViewModel {
|
|||||||
partitaMag,
|
partitaMag,
|
||||||
dataScad,
|
dataScad,
|
||||||
canPartitaMagBeChanged,
|
canPartitaMagBeChanged,
|
||||||
|
true,
|
||||||
onComplete);
|
onComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -899,17 +972,14 @@ public class AccettazionePickingViewModel {
|
|||||||
BigDecimal qtaCnfAvailable,
|
BigDecimal qtaCnfAvailable,
|
||||||
String partitaMag,
|
String partitaMag,
|
||||||
Date dataScad,
|
Date dataScad,
|
||||||
boolean canOverflowOrderQuantity,
|
boolean canPartitaMagBeChanged,
|
||||||
|
boolean canOverflowQuantity,
|
||||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||||
|
|
||||||
void onRowSaved();
|
|
||||||
|
|
||||||
void onFilterApplied(String newValue);
|
void onFilterApplied(String newValue);
|
||||||
|
|
||||||
void onFilterRemoved();
|
void onFilterRemoved();
|
||||||
|
|
||||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.accettazione_picking.dto;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class HistoryMtbAartDTO {
|
||||||
|
|
||||||
|
private String codMart;
|
||||||
|
private String partitaMag;
|
||||||
|
private Date dataScad;
|
||||||
|
|
||||||
|
public String getCodMart() {
|
||||||
|
return codMart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HistoryMtbAartDTO setCodMart(String codMart) {
|
||||||
|
this.codMart = codMart;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPartitaMag() {
|
||||||
|
return partitaMag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HistoryMtbAartDTO setPartitaMag(String partitaMag) {
|
||||||
|
this.partitaMag = partitaMag;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDataScad() {
|
||||||
|
return dataScad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HistoryMtbAartDTO setDataScad(Date dataScad) {
|
||||||
|
this.dataScad = dataScad;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,18 +5,18 @@ import com.google.gson.reflect.TypeToken;
|
|||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@@ -29,56 +29,87 @@ public class AccettazionePickingRESTConsumer {
|
|||||||
this.mSystemRestConsumer = systemRESTConsumer;
|
this.mSystemRestConsumer = systemRESTConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getBancaliGiaRegistrati(List<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
public void getBancaliGiaRegistrati(List<SitArtOrdDTO> ordiniToShow, RunnableArgs<ArrayList<RecoverMtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
List<HashMap<String, Object>> whereCondListMap = new ArrayList<>();
|
||||||
|
|
||||||
List<String> colliWhereCond = new ArrayList<>();
|
Stream
|
||||||
|
.of(ordiniToShow)
|
||||||
|
.distinctBy(x -> x.getDataOrd() + " " + x.getGestione() + " " + x.getNumOrd())
|
||||||
|
.forEach(x -> {
|
||||||
|
try {
|
||||||
|
HashMap<String, Object> whereCondMap = new HashMap<>();
|
||||||
|
whereCondMap.put("mtb_colr.data_ord", UtilityDate.recognizeDate(x.getDataOrd()));
|
||||||
|
whereCondMap.put("mtb_colr.gestione", x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione());
|
||||||
|
whereCondMap.put("mtb_colr.num_ord", x.getNumOrd());
|
||||||
|
|
||||||
|
whereCondListMap.add(whereCondMap);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
UtilityLogger.errorMe(ex);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
Stream.of(ordiniToShow).forEach(x -> {
|
String sql = "SELECT DISTINCT CAST(CASE WHEN MAX(ISNULL(mtb_colr_scar.num_collo, 0)) = 0 THEN 1 ELSE 0 END AS BIT) AS flagCanBeRecovered, " +
|
||||||
try {
|
" mtb_colt.* " +
|
||||||
Date date = UtilityDate.recognizeDate(x.getDataOrd());
|
"FROM mtb_colt" +
|
||||||
String dateString = UtilityDate.formatDate(date, "yyyy/MM/dd");
|
" INNER JOIN mtb_colr ON " +
|
||||||
|
" mtb_colt.gestione = mtb_colr.gestione AND " +
|
||||||
if (!colliWhereCond.contains(x.getGestione() + " " + dateString + " " + x.getNumOrd())) {
|
" mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
|
||||||
String gestione = x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione();
|
" mtb_colt.data_collo = mtb_colr.data_collo AND " +
|
||||||
colliWhereCond.add(gestione + " " + dateString + " " + x.getNumOrd());
|
" mtb_colt.num_collo = mtb_colr.num_collo " +
|
||||||
}
|
" LEFT OUTER JOIN mtb_colr mtb_colr_scar ON mtb_colr_scar.num_collo_rif = mtb_colr.num_collo AND " +
|
||||||
} catch (Exception ex){
|
" mtb_colr_scar.gestione_rif = mtb_colr.gestione AND " +
|
||||||
UtilityLogger.errorMe(ex);
|
" mtb_colr_scar.ser_collo_rif = mtb_colr.ser_collo AND " +
|
||||||
}
|
" mtb_colr_scar.data_collo_rif = mtb_colr.data_collo " +
|
||||||
});
|
" WHERE (" + UtilityQuery.concatFieldListInWhereCond(whereCondListMap) + ") " +
|
||||||
|
" AND mtb_colt.data_doc IS NULL " +
|
||||||
|
" GROUP BY mtb_colt.gestione," +
|
||||||
|
" mtb_colt.data_collo," +
|
||||||
|
" mtb_colt.num_collo," +
|
||||||
|
" segno," +
|
||||||
|
" peso_kg," +
|
||||||
|
" lunghezza_cm," +
|
||||||
|
" larghezza_cm," +
|
||||||
|
" altezza_cm," +
|
||||||
|
" cod_anag," +
|
||||||
|
" cod_dtip," +
|
||||||
|
" mtb_colt.data_doc," +
|
||||||
|
" mtb_colt.ser_doc," +
|
||||||
|
" mtb_colt.num_doc," +
|
||||||
|
" rif_ord," +
|
||||||
|
" mtb_colt.ser_collo," +
|
||||||
|
" cod_tcol," +
|
||||||
|
" mtb_colt.data_ord," +
|
||||||
|
" mtb_colt.num_ord," +
|
||||||
|
" cod_vdes," +
|
||||||
|
" cod_mdep," +
|
||||||
|
" cod_vlis," +
|
||||||
|
" preparato_da," +
|
||||||
|
" ora_iniz_prep," +
|
||||||
|
" ora_fine_prep," +
|
||||||
|
" filtro_ordini," +
|
||||||
|
" annotazioni," +
|
||||||
|
" posizione," +
|
||||||
|
" cod_dtip_provv," +
|
||||||
|
" data_doc_provv," +
|
||||||
|
" ser_doc_provv," +
|
||||||
|
" num_doc_provv," +
|
||||||
|
" cod_jfas," +
|
||||||
|
" data_vers," +
|
||||||
|
" mtb_colt.peso_netto_kg";
|
||||||
|
|
||||||
|
|
||||||
StringBuilder colliINCondition = new StringBuilder();
|
Type typeOfObjectsList = new TypeToken<ArrayList<RecoverMtbColt>>() {
|
||||||
|
}.getType();
|
||||||
for(int i = 0; i < colliWhereCond.size(); i ++){
|
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<RecoverMtbColt>>() {
|
||||||
colliINCondition.append("'").append(colliWhereCond.get(i)).append("'");
|
|
||||||
|
|
||||||
if(i < (colliWhereCond.size()-1)) colliINCondition.append(",");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String sql = "SELECT DISTINCT mtb_colt.* " +
|
|
||||||
"FROM mtb_colt, mtb_colr " +
|
|
||||||
"WHERE mtb_colt.gestione = mtb_colr.gestione AND " +
|
|
||||||
"mtb_colt.ser_collo = mtb_colr.ser_collo AND " +
|
|
||||||
"mtb_colt.data_collo = mtb_colr.data_collo AND " +
|
|
||||||
"mtb_colt.num_collo = mtb_colr.num_collo AND " +
|
|
||||||
"mtb_colt.gestione + ' ' + CONVERT(VARCHAR(15), mtb_colr.data_ord, 111) + ' ' + CONVERT(VARCHAR, mtb_colr.num_ord) IN (" + colliINCondition +
|
|
||||||
") AND mtb_colt.data_doc IS NULL ";
|
|
||||||
|
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
|
|
||||||
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbColt>>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ArrayList<MtbColt> value) {
|
public void onSuccess(ArrayList<RecoverMtbColt> value) {
|
||||||
if(onComplete != null) onComplete.run(value);
|
if (onComplete != null) onComplete.run(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(Exception ex) {
|
public void onFailed(Exception ex) {
|
||||||
if(onFailed != null) onFailed.run(ex);
|
if (onFailed != null) onFailed.run(ex);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.accettazione_picking.rest;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
|
||||||
|
public class RecoverMtbColt extends MtbColt {
|
||||||
|
|
||||||
|
private boolean flagCanBeRecovered;
|
||||||
|
|
||||||
|
public boolean isFlagCanBeRecovered() {
|
||||||
|
return flagCanBeRecovered;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RecoverMtbColt setFlagCanBeRecovered(boolean flagCanBeRecovered) {
|
||||||
|
this.flagCanBeRecovered = flagCanBeRecovered;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,21 +3,22 @@ package it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel;
|
|||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import androidx.databinding.ObservableField;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
|
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.di.BindableString;
|
import it.integry.integrywmsnative.core.di.BindableString;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||||
@@ -42,7 +43,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
private PrinterRESTConsumer.Type mPrinterType;
|
private PrinterRESTConsumer.Type mPrinterType;
|
||||||
private String mReportName;
|
private String mReportName;
|
||||||
|
|
||||||
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName){
|
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
this.mtbColt = new ObservableField<>(mtbColt);
|
this.mtbColt = new ObservableField<>(mtbColt);
|
||||||
this.isFabVisible.set(true);
|
this.isFabVisible.set(true);
|
||||||
@@ -85,8 +86,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void recoverUL() {
|
||||||
public void recoverUL(){
|
|
||||||
Intent data = new Intent();
|
Intent data = new Intent();
|
||||||
String key = DataCache.addItem(mtbColt.get());
|
String key = DataCache.addItem(mtbColt.get());
|
||||||
data.putExtra("key", key);
|
data.putExtra("key", key);
|
||||||
@@ -102,39 +102,37 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
|
|
||||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> {
|
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> {
|
||||||
|
|
||||||
if(value.size() > 0) {
|
if (value.size() > 0) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> {
|
String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum());
|
||||||
|
|
||||||
reportName = mReportName != null ? mReportName : reportName;
|
reportName = mReportName != null ? mReportName : reportName;
|
||||||
|
|
||||||
PrinterRESTConsumer.printColloStatic(value.get(0),
|
PrinterRESTConsumer.printColloStatic(value.get(0),
|
||||||
mtbColt.get(),
|
mtbColt.get(),
|
||||||
1,
|
1,
|
||||||
reportName,
|
reportName,
|
||||||
() -> {
|
() -> {
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
|
|
||||||
Resources res = mContext.getResources();
|
Resources res = mContext.getResources();
|
||||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||||
DialogSimpleMessageHelper.makeSuccessDialog(mContext, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
DialogSimpleMessageHelper.makeSuccessDialog(mContext, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||||
}, ex -> UtilityExceptions.defaultException(mContext,ex, progress));
|
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||||
|
|
||||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress)
|
} catch (Exception ex) {
|
||||||
);
|
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||||
} catch (Exception ex){
|
|
||||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
progress.dismiss();
|
|
||||||
String errorMessage = "Nessuna stampante configurata";
|
|
||||||
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, null).show();
|
|
||||||
}
|
}
|
||||||
}, ex -> {
|
|
||||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
} else {
|
||||||
});
|
progress.dismiss();
|
||||||
|
String errorMessage = "Nessuna stampante configurata";
|
||||||
|
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, null).show();
|
||||||
|
}
|
||||||
|
}, ex -> {
|
||||||
|
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,18 +2,18 @@ package it.integry.integrywmsnative.gest.lista_bancali;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
|
import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
|
||||||
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
|
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
|
||||||
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
|
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
|
||||||
@@ -25,52 +25,55 @@ public class ListaBancaliActivity extends BaseActivity {
|
|||||||
private static final String CanRecoverUL = "canRecoverUL";
|
private static final String CanRecoverUL = "canRecoverUL";
|
||||||
private static final String PrinterType = "printerType";
|
private static final String PrinterType = "printerType";
|
||||||
private static final String ReportName = "reportName";
|
private static final String ReportName = "reportName";
|
||||||
|
private static final String FlagOnlyResiduo = "flagOnlyResiduo";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActivityListaBancaliBinding bindings;
|
public ActivityListaBancaliBinding bindings;
|
||||||
|
|
||||||
private ListaBancaliViewModel mViewModel;
|
private ListaBancaliViewModel mViewModel;
|
||||||
|
|
||||||
private boolean mCanRecoverUl;
|
private RunnableArgsWithReturn<MtbColt, Boolean> mCanRecoverUl;
|
||||||
private PrinterRESTConsumer.Type mPrinterType;
|
private PrinterRESTConsumer.Type mPrinterType;
|
||||||
private String mReportName;
|
private String mReportName;
|
||||||
|
private boolean mFlagOnlyResiduo;
|
||||||
|
|
||||||
private static final int PICK_UL_REQUEST = 1; // The request code
|
private static final int PICK_UL_REQUEST = 1; // The request code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) {
|
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, String reportName) {
|
||||||
|
return createIntent(context, items, canRecoverUlAction, printerType, true, reportName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Intent createIntent(Context context, List<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
|
||||||
|
return createIntent(context, items, input -> canRecoverUl, printerType, onlyResiduo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) {
|
||||||
|
return createIntent(context, items, canRecoverUlAction, printerType, onlyResiduo, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Intent createIntent(Context context, List<MtbColt> items, RunnableArgsWithReturn<MtbColt, Boolean> canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo, String reportName) {
|
||||||
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
|
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
|
||||||
|
|
||||||
String mtbColtsKey = DataCache.addItem(items);
|
String mtbColtsKey = DataCache.addItem(items);
|
||||||
myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey);
|
myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey);
|
||||||
|
|
||||||
String canRecoverULKey = DataCache.addItem(canRecoverUl);
|
String canRecoverULKey = DataCache.addItem(canRecoverUlAction);
|
||||||
myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey);
|
myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey);
|
||||||
|
|
||||||
String printerTypeKey = DataCache.addItem(printerType);
|
String printerTypeKey = DataCache.addItem(printerType);
|
||||||
myIntent.putExtra(Key.PrinterType, printerTypeKey);
|
myIntent.putExtra(Key.PrinterType, printerTypeKey);
|
||||||
|
|
||||||
|
String flagOnlyResiduoKey = DataCache.addItem(onlyResiduo);
|
||||||
|
myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey);
|
||||||
|
|
||||||
String reportNameKey = DataCache.addItem(reportName);
|
String reportNameKey = DataCache.addItem(reportName);
|
||||||
myIntent.putExtra(Key.ReportName, reportNameKey);
|
myIntent.putExtra(Key.ReportName, reportNameKey);
|
||||||
|
|
||||||
return myIntent;
|
return myIntent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) {
|
|
||||||
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
|
|
||||||
|
|
||||||
String mtbColtsKey = DataCache.addItem(items);
|
|
||||||
myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey);
|
|
||||||
|
|
||||||
String canRecoverULKey = DataCache.addItem(canRecoverUl);
|
|
||||||
myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey);
|
|
||||||
|
|
||||||
String printerTypeKey = DataCache.addItem(printerType);
|
|
||||||
myIntent.putExtra(Key.PrinterType, printerTypeKey);
|
|
||||||
|
|
||||||
return myIntent;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -81,9 +84,10 @@ public class ListaBancaliActivity extends BaseActivity {
|
|||||||
mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
|
mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
|
||||||
mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
|
mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
|
||||||
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
|
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
|
||||||
|
mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo));
|
||||||
|
|
||||||
List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey));
|
List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey));
|
||||||
mViewModel = new ListaBancaliViewModel(this, mtbColts);
|
mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo);
|
||||||
|
|
||||||
|
|
||||||
setSupportActionBar(this.bindings.toolbar);
|
setSupportActionBar(this.bindings.toolbar);
|
||||||
@@ -99,7 +103,7 @@ public class ListaBancaliActivity extends BaseActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startContenutoBancaleActivity(MtbColt item){
|
public void startContenutoBancaleActivity(MtbColt item){
|
||||||
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType, mReportName);
|
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl.run(item), mPrinterType, mReportName);
|
||||||
startActivityForResult(myIntent, PICK_UL_REQUEST);
|
startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,11 +26,15 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
|
|||||||
|
|
||||||
private MainListListaColliAdapter mAdapter;
|
private MainListListaColliAdapter mAdapter;
|
||||||
|
|
||||||
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts){
|
private boolean mLoadOnlyResiduo;
|
||||||
|
|
||||||
|
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts, boolean loadOnlyResiduo){
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mMtbColts = new ObservableArrayList<>();
|
mMtbColts = new ObservableArrayList<>();
|
||||||
mMtbColts.addAll(mtbColts);
|
mMtbColts.addAll(mtbColts);
|
||||||
|
|
||||||
|
this.mLoadOnlyResiduo = loadOnlyResiduo;
|
||||||
|
|
||||||
initRecyclerView();
|
initRecyclerView();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +60,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
|
|||||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ColliMagazzinoRESTConsumer.getByTestataStatic(item, true, false, mtbColt -> {
|
ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> {
|
||||||
|
|
||||||
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
|
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
|
||||||
mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
|
mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
|||||||
mAdapter = null;
|
mAdapter = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
@@ -258,6 +258,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLUOpened(MtbColt mtbColt) {
|
public void onLUOpened(MtbColt mtbColt) {
|
||||||
|
mToolbarTitleText.setText(String.format(getActivity().getText(R.string.lu_number_text).toString(), mtbColt.getNumCollo()));
|
||||||
|
|
||||||
initAdapter();
|
initAdapter();
|
||||||
|
|
||||||
thereIsAnOpenedUL.set(true);
|
thereIsAnOpenedUL.set(true);
|
||||||
@@ -275,6 +277,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLUClosed() {
|
public void onLUClosed() {
|
||||||
|
mToolbarTitleText.setText(getActivity().getText(R.string.free_picking_title_fragment).toString());
|
||||||
destroyAdapter();
|
destroyAdapter();
|
||||||
|
|
||||||
thereIsAnyRowInUL.set(false);
|
thereIsAnyRowInUL.set(false);
|
||||||
@@ -306,10 +309,10 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||||
DialogAskCliente.makeBase(getActivity(), (status, result) -> {
|
DialogAskCliente.makeBase(getActivity(), (status, result, codJcom) -> {
|
||||||
if (status == DialogConsts.Results.YES) {
|
if (status == DialogConsts.Results.YES) {
|
||||||
onComplete.run(result);
|
onComplete.run(result, codJcom);
|
||||||
} else {
|
} else {
|
||||||
onAbort.run();
|
onAbort.run();
|
||||||
}
|
}
|
||||||
@@ -398,7 +401,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPreDestroy(Runnable onComplete) {
|
public void onPreDestroy(Runnable onComplete) {
|
||||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
|
||||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||||
|
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||||
|
else onComplete.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import dagger.Provides;
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
|
||||||
|
|
||||||
@Module(subcomponents = {PickingLiberoComponent.class})
|
@Module(subcomponents = {PickingLiberoComponent.class})
|
||||||
public class PickingLiberoModule {
|
public class PickingLiberoModule {
|
||||||
@@ -16,8 +15,7 @@ public class PickingLiberoModule {
|
|||||||
@Singleton
|
@Singleton
|
||||||
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
PrinterRESTConsumer printerRESTConsumer,
|
|
||||||
BarcodeRESTConsumer barcodeRESTConsumer) {
|
BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||||
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer);
|
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ import it.integry.integrywmsnative.core.model.MtbAart;
|
|||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.VtbDest;
|
import it.integry.integrywmsnative.core.model.VtbDest;
|
||||||
|
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
@@ -37,7 +37,6 @@ import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||||
|
|
||||||
@@ -48,7 +47,6 @@ public class PickingLiberoViewModel {
|
|||||||
|
|
||||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||||
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
|
||||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||||
|
|
||||||
|
|
||||||
@@ -62,11 +60,9 @@ public class PickingLiberoViewModel {
|
|||||||
@Inject
|
@Inject
|
||||||
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
PrinterRESTConsumer printerRESTConsumer,
|
|
||||||
BarcodeRESTConsumer barcodeRESTConsumer) {
|
BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||||
this.mPrinterRESTConsumer = printerRESTConsumer;
|
|
||||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,15 +179,15 @@ public class PickingLiberoViewModel {
|
|||||||
|
|
||||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||||
if (this.mFlagAskCliente) {
|
if (this.mFlagAskCliente) {
|
||||||
this.sendLUClienteRequired(vtbDest -> {
|
this.sendLUClienteRequired((vtbDest, codJcom) -> {
|
||||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
|
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
|
||||||
}, onComplete);
|
}, onComplete);
|
||||||
} else {
|
} else {
|
||||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete);
|
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, null, onComplete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
|
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJcom, Runnable onComplete) {
|
||||||
MtbColt mtbColt = new MtbColt();
|
MtbColt mtbColt = new MtbColt();
|
||||||
mtbColt.initDefaultFields();
|
mtbColt.initDefaultFields();
|
||||||
mtbColt.setGestione(mDefaultGestione)
|
mtbColt.setGestione(mDefaultGestione)
|
||||||
@@ -213,6 +209,10 @@ public class PickingLiberoViewModel {
|
|||||||
mtbColt.setCodVdes(vtbDest.getCodVdes());
|
mtbColt.setCodVdes(vtbDest.getCodVdes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!UtilityString.isNullOrEmpty(codJcom)) {
|
||||||
|
mtbColt.setCodJcom(codJcom);
|
||||||
|
}
|
||||||
|
|
||||||
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
||||||
mtbColt
|
mtbColt
|
||||||
.setNumCollo(value.getNumCollo())
|
.setNumCollo(value.getNumCollo())
|
||||||
@@ -235,9 +235,9 @@ public class PickingLiberoViewModel {
|
|||||||
BigDecimal qtaColDaPrelevare = null;
|
BigDecimal qtaColDaPrelevare = null;
|
||||||
BigDecimal qtaCnfDaPrelevare = null;
|
BigDecimal qtaCnfDaPrelevare = null;
|
||||||
|
|
||||||
BigDecimal initialNumCnf = null;
|
BigDecimal initialNumCnf;
|
||||||
BigDecimal initialQtaCnf = null;
|
BigDecimal initialQtaCnf;
|
||||||
BigDecimal initialQtaTot = null;
|
BigDecimal initialQtaTot;
|
||||||
|
|
||||||
String partitaMag = null;
|
String partitaMag = null;
|
||||||
Date dataScad = null;
|
Date dataScad = null;
|
||||||
@@ -760,7 +760,7 @@ public class PickingLiberoViewModel {
|
|||||||
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
private void sendLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||||
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
|
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -815,11 +815,10 @@ public class PickingLiberoViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener, ILUBaseOperationsListener {
|
public interface Listener extends ILoadingListener, ILUBaseOperationsListener {
|
||||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
|
||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort);
|
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
|
||||||
|
|
||||||
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
|
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
|
||||||
|
|
||||||
@@ -840,8 +839,6 @@ public class PickingLiberoViewModel {
|
|||||||
boolean canPartitaMagBeChanged,
|
boolean canPartitaMagBeChanged,
|
||||||
boolean canLUBeClosed,
|
boolean canLUBeClosed,
|
||||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||||
|
|
||||||
void onRowSaved();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,109 +1,135 @@
|
|||||||
package it.integry.integrywmsnative.gest.picking_resi;
|
package it.integry.integrywmsnative.gest.picking_resi;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.text.SpannableString;
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.databinding.ObservableField;
|
|
||||||
import androidx.databinding.ObservableList;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.text.SpannableString;
|
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.tfb.fbtoast.FBToast;
|
import com.tfb.fbtoast.FBToast;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
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.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||||
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
|
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
|
||||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter;
|
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter;
|
||||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListModel;
|
||||||
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
|
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||||
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
||||||
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
|
||||||
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
||||||
|
|
||||||
public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
|
public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener {
|
||||||
|
|
||||||
|
|
||||||
|
private ActivityPickingResiBinding mBindings;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
PickingResiViewModel mViewmodel;
|
||||||
|
|
||||||
|
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||||
|
|
||||||
|
private ObservableArrayList<PickingResiListModel> mPickingResiMutableData = new ObservableArrayList<>();
|
||||||
|
|
||||||
|
public BindableBoolean noLUPresent = new BindableBoolean(true);
|
||||||
|
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
||||||
|
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
|
||||||
|
|
||||||
|
private String mTitle;
|
||||||
private List<DocumentoResoDTO> mDocumentiResiList;
|
private List<DocumentoResoDTO> mDocumentiResiList;
|
||||||
public ObservableList<WithdrawableDtbDocr> mDtbDocrList;
|
|
||||||
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
|
|
||||||
|
|
||||||
private ActivityPickingResiBinding mBinding;
|
|
||||||
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
|
||||||
|
|
||||||
public ObservableField<MtbColt> currentMtbColt = new ObservableField<>();
|
|
||||||
|
|
||||||
private PickingResiListAdapter mAdapter;
|
|
||||||
|
|
||||||
private int barcodeScannerIstanceID = -1;
|
private int barcodeScannerIstanceID = -1;
|
||||||
|
|
||||||
private String mActivityTitle;
|
private boolean mShouldCloseActivity;
|
||||||
private String mDefaultGestioneOfUL;
|
|
||||||
private String mDefaultCodAnagOfUL;
|
|
||||||
private Integer mDefaultSegnoOfUL;
|
|
||||||
|
|
||||||
|
|
||||||
public static void startActivity(Context context, String activityTitle, List<DocumentoResoDTO> documentoResoDTOList, Integer segno) {
|
public static void startActivity(Context context, String activityTitle, List<DocumentoResoDTO> documentoResoDTOList, Integer segno) {
|
||||||
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
|
||||||
|
|
||||||
Intent intent = new Intent(context, PickingResiActivity.class);
|
Intent intent = new Intent(context, PickingResiActivity.class);
|
||||||
|
|
||||||
intent.putExtra("activity_title", activityTitle);
|
intent.putExtra("activity_title", activityTitle);
|
||||||
|
|
||||||
|
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
||||||
intent.putExtra("key", consegneCacheKey);
|
intent.putExtra("key", consegneCacheKey);
|
||||||
|
|
||||||
intent.putExtra("segno", segno);
|
intent.putExtra("segno", segno);
|
||||||
|
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
|
||||||
mBinding.setViewmodel(this);
|
|
||||||
|
|
||||||
this.mDtbDocrList = new ObservableArrayList<>();
|
|
||||||
|
|
||||||
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
|
|
||||||
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
|
|
||||||
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
|
|
||||||
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
|
|
||||||
|
|
||||||
|
|
||||||
|
mTitle = getIntent().getStringExtra("activity_title");
|
||||||
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
|
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
|
||||||
mDefaultSegnoOfUL = getIntent().getIntExtra("segno", +1);
|
int defaultSegnoLU = getIntent().getIntExtra("segno", +1);
|
||||||
|
|
||||||
mActivityTitle = getIntent().getStringExtra("activity_title");
|
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
||||||
|
|
||||||
this.initView();
|
MainApplication.appComponent
|
||||||
|
.pickingResiComponent()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
|
||||||
|
mViewmodel.setListener(this);
|
||||||
|
|
||||||
|
setSupportActionBar(mBindings.toolbar);
|
||||||
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
|
getSupportActionBar().setTitle(mTitle);
|
||||||
|
|
||||||
|
mBindings.setLifecycleOwner(this);
|
||||||
|
mBindings.setPickingResiView(this);
|
||||||
|
|
||||||
|
mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent, null);
|
||||||
|
mBottomSheetFragmentLUContentViewModel = mBindings.bottomSheetLuContent.getViewModelInstance();
|
||||||
|
mBindings.bottomSheetLuContent.setListener(this);
|
||||||
|
mBottomSheetFragmentLUContentViewModel.setListener(this);
|
||||||
|
|
||||||
|
|
||||||
|
this.initVars();
|
||||||
|
this.initBarcodeReader();
|
||||||
|
this.initRecyclerView();
|
||||||
|
|
||||||
|
|
||||||
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
|
|
||||||
|
this.mViewmodel.init(mDocumentiResiList, defaultSegnoLU, codMdep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -114,435 +140,255 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if(mArticoliInColloBottomSheetViewModel.isExpanded()){
|
|
||||||
mArticoliInColloBottomSheetViewModel.collapse();
|
|
||||||
}
|
|
||||||
else if(thereIsAnOpenedUL()) {
|
|
||||||
mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
|
|
||||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
|
||||||
super.onBackPressed();
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
if (this.mBindings.bottomSheetLuContent.isExpanded()) {
|
||||||
else {
|
this.mBindings.bottomSheetLuContent.collapse();
|
||||||
|
} else if (!noLUPresent.get()) {
|
||||||
|
this.mShouldCloseActivity = true;
|
||||||
|
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||||
|
this.mViewmodel.closeLU(true);
|
||||||
|
} else {
|
||||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initView() {
|
|
||||||
|
private void initVars() {
|
||||||
|
this.noLUPresent.addOnPropertyChangedCallback(() -> {
|
||||||
|
this.bottomSheetEnabled.set(!this.noLUPresent.get());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initBarcodeReader() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(this::onScanSuccessful)
|
.setOnScanSuccessfull(onScanSuccessful)
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initRecyclerView() {
|
||||||
|
this.mBindings.elevatedToolbar.setRecyclerView(this.mBindings.mainList);
|
||||||
|
|
||||||
setSupportActionBar(this.mBinding.toolbar);
|
this.mViewmodel.getPickingList().observe(this, updatedData -> {
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
this.mPickingResiMutableData.clear();
|
||||||
|
this.mPickingResiMutableData.addAll(convertDataModelToListModel(updatedData));
|
||||||
|
this.noItemsToPick.set(updatedData.isEmpty());
|
||||||
|
});
|
||||||
|
|
||||||
getSupportActionBar().setTitle(mActivityTitle);
|
PickingResiListAdapter pickingResiListAdapter = new PickingResiListAdapter(this, mPickingResiMutableData);
|
||||||
|
this.mBindings.mainList.setAdapter(pickingResiListAdapter);
|
||||||
|
this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||||
|
|
||||||
this.mBinding.elevatedToolbar.setRecyclerView(this.mBinding.mainList);
|
pickingResiListAdapter.setOnItemClicked(clickedItem -> {
|
||||||
|
if (!noLUPresent.get()) {
|
||||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
|
this.mViewmodel.dispatchOrdineRow(clickedItem);
|
||||||
UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
|
|
||||||
progressDialog.dismiss();
|
|
||||||
this.mDtbDocrList.addAll(dtbDocrToPick);
|
|
||||||
|
|
||||||
try {
|
|
||||||
this.initDatiPicking();
|
|
||||||
} catch (Exception ex) {
|
|
||||||
DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.initList();
|
|
||||||
}, ex -> {
|
|
||||||
UtilityExceptions.defaultException(this, ex, progressDialog);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initList() {
|
|
||||||
|
|
||||||
mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
|
private List<PickingResiListModel> convertDataModelToListModel(List<WithdrawableDtbDocr> dataList) {
|
||||||
mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
|
List<PickingResiListModel> pickingResiListModels = new ArrayList<>();
|
||||||
|
|
||||||
this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
|
Stream.of(dataList)
|
||||||
this.mBinding.mainList.setAdapter(mAdapter);
|
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||||
|
.forEach(x -> {
|
||||||
|
|
||||||
|
PickingResiListModel pickingResiListModel = new PickingResiListModel();
|
||||||
|
|
||||||
|
pickingResiListModel.setGroupTitle(x.getCodDtip() + " - N° " + x.getNumDoc() + " del " + UtilityDate.formatDate(x.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
||||||
|
pickingResiListModel.setBadge1(x.getCodMart());
|
||||||
|
pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione()));
|
||||||
|
pickingResiListModel.setActive(true);
|
||||||
|
pickingResiListModel.setOriginalModel(x);
|
||||||
|
|
||||||
|
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
||||||
|
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
for (MtbColr mtbColr : x.getWithdrawRows()) {
|
||||||
|
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
||||||
|
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
|
pickingResiListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
|
pickingResiListModel.setQtaEvasa(numCnfColEvasa);
|
||||||
|
pickingResiListModel.setQtaTot(x.getNumCnf());
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (x.getMtbAart() != null)
|
||||||
|
pickingResiListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||||
|
else pickingResiListModel.setUntMis(x.getUntDoc());
|
||||||
|
pickingResiListModel.setQtaEvasa(qtaColEvasa);
|
||||||
|
pickingResiListModel.setQtaTot(x.getQtaDoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pickingResiListModels.add(pickingResiListModel);
|
||||||
|
});
|
||||||
|
|
||||||
|
return pickingResiListModels;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initDatiPicking() throws Exception {
|
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
List<String> foundGestioni = Stream.of(this.mDocumentiResiList)
|
BarcodeManager.disable();
|
||||||
.map(DocumentoResoDTO::getGestione)
|
|
||||||
.distinct()
|
|
||||||
.withoutNulls()
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
if(foundGestioni.size() > 1) {
|
this.openProgress();
|
||||||
throw new Exception("Sono stati caricati documenti con diverse gestioni");
|
|
||||||
} else mDefaultGestioneOfUL = foundGestioni.get(0);
|
|
||||||
|
|
||||||
|
this.mViewmodel.processBarcodeDTO(data, () -> {
|
||||||
|
BarcodeManager.enable();
|
||||||
|
this.closeProgress();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
List<String> foundCodAnags = Stream.of(this.mDocumentiResiList)
|
public void createNewLU() {
|
||||||
.map(DocumentoResoDTO::getCodAnag)
|
this.mBindings.mainFab.close(true);
|
||||||
.distinct()
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
if(foundCodAnags.size() > 1) {
|
this.openProgress();
|
||||||
throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
|
|
||||||
} else mDefaultCodAnagOfUL = foundCodAnags.get(0);
|
|
||||||
|
|
||||||
}
|
this.mViewmodel.createNewLU(null, null, () -> {
|
||||||
|
this.closeProgress();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void onScanSuccessful(BarcodeScanDTO data) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createNewUL() {
|
|
||||||
this.createNewUL(null, null, null, false, true, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createNewUL(Integer customNumCollo, String customSerCollo, Dialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
|
|
||||||
this.mBinding.mainFab.close(true);
|
|
||||||
|
|
||||||
if (progress == null){
|
|
||||||
progress = UtilityProgress.createDefaultProgressDialog(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
MtbColt mtbColt = new MtbColt();
|
|
||||||
mtbColt.initDefaultFields();
|
|
||||||
mtbColt .setGestione(mDefaultGestioneOfUL)
|
|
||||||
.setSegno(mDefaultSegnoOfUL)
|
|
||||||
.setCodAnag(mDefaultCodAnagOfUL)
|
|
||||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
|
||||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
|
||||||
|
|
||||||
|
|
||||||
if(customNumCollo != null) {
|
|
||||||
mtbColt.setNumCollo(customNumCollo);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!UtilityString.isNullOrEmpty(customSerCollo)) {
|
|
||||||
mtbColt.setSerCollo(customSerCollo);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Dialog finalProgress = progress;
|
|
||||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> {
|
|
||||||
|
|
||||||
value.setDisablePrint(disablePrint);
|
|
||||||
|
|
||||||
setULToCurrentContext(value);
|
|
||||||
|
|
||||||
if(closeProgress) finalProgress.dismiss();
|
|
||||||
|
|
||||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
|
||||||
|
|
||||||
if(onComplete != null) onComplete.run();
|
|
||||||
|
|
||||||
}, ex -> {
|
|
||||||
UtilityExceptions.defaultException(this, ex, finalProgress);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setULToCurrentContext(MtbColt mtbColt){
|
|
||||||
if(mtbColt != null && mtbColt.getMtbColr() == null) {
|
|
||||||
mtbColt.setMtbColr(new ObservableArrayList<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
this.currentMtbColt.set(mtbColt);
|
|
||||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
|
|
||||||
if(currentMtbColt.get() != null){
|
|
||||||
|
|
||||||
List<MtbColr> currentMtbColrs = item.getWithdrawRows();
|
|
||||||
|
|
||||||
BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
|
|
||||||
for (MtbColr mtbColr : currentMtbColrs) {
|
|
||||||
qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol());
|
|
||||||
}
|
|
||||||
|
|
||||||
BigDecimal qtaDaEvadere = item.getQtaDoc().subtract(qtaEvasaTotaleInMtbColr);
|
|
||||||
if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
|
||||||
.setBatchLot(item.getPartitaMag())
|
|
||||||
.setCodArtFor(item.getCodArtFor())
|
|
||||||
.setMtbAart(item.getMtbAart())
|
|
||||||
.setQtaDisponibile(qtaDaEvadere)
|
|
||||||
.setQtaTot(qtaDaEvadere)
|
|
||||||
.setQtaEvasa(qtaEvasaTotaleInMtbColr)
|
|
||||||
.setCanPartitaMagBeChanged(false)
|
|
||||||
.setMaxQta(qtaDaEvadere);
|
|
||||||
|
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
|
|
||||||
onOrdineRowDispatched(item, quantityDTO, closeUL);
|
|
||||||
|
|
||||||
}, null).show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
|
|
||||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
|
||||||
|
|
||||||
final MtbColr mtbColr = new MtbColr()
|
|
||||||
.setCodMart(item.getCodMart())
|
|
||||||
.setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
|
|
||||||
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
|
||||||
.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
|
|
||||||
.setNumCnf(quantityDTO.numCnf.getBigDecimal())
|
|
||||||
.setDescrizione(item.getDescrizioneEstesa())
|
|
||||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
|
||||||
|
|
||||||
.setCodAnagDoc(item.getCodAnag())
|
|
||||||
.setCodDtipDoc(item.getCodDtip())
|
|
||||||
.setSerDoc(item.getSerDoc())
|
|
||||||
.setNumDoc(item.getNumDoc())
|
|
||||||
.setDataDoc(item.getDataDocS())
|
|
||||||
.setIdRigaDoc(item.getIdRiga());
|
|
||||||
// .setCodJcom(item.getCodJcom());
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
|
||||||
|
|
||||||
MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
|
|
||||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
|
||||||
|
|
||||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
|
||||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
|
|
||||||
|
|
||||||
mtbColr
|
|
||||||
.setDataCollo(value.getDataColloS())
|
|
||||||
.setNumCollo(value.getNumCollo())
|
|
||||||
.setGestione(value.getGestione())
|
|
||||||
.setSerCollo(value.getSerCollo())
|
|
||||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
|
||||||
.setUntMis(item.getMtbAart().getUntMis())
|
|
||||||
.setMtbAart(item.getMtbAart());
|
|
||||||
|
|
||||||
item.getWithdrawRows().add(mtbColr);
|
|
||||||
|
|
||||||
this.refreshDtbDocrItem(item);
|
|
||||||
|
|
||||||
currentMtbColt.get().getMtbColr().add(mtbColr);
|
|
||||||
|
|
||||||
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
|
|
||||||
removeListFilter();
|
|
||||||
|
|
||||||
FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
|
||||||
|
|
||||||
progress.dismiss();
|
|
||||||
|
|
||||||
// if(closeUL) onColloClosed(null);
|
|
||||||
}, ex -> {
|
|
||||||
UtilityExceptions.defaultException(this, ex, progress);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
|
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||||
if(thereIsAnOpenedUL()) {
|
this.mViewmodel.dispatchRowEdit(mtbColr);
|
||||||
|
}
|
||||||
|
|
||||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
@Override
|
||||||
progress.show();
|
public void onMtbColrDelete(MtbColr mtbColr) {
|
||||||
|
this.mViewmodel.deleteRow(mtbColr);
|
||||||
|
}
|
||||||
|
|
||||||
if(thereIsAnyRowInUL()) {
|
@Override
|
||||||
NoteAggiuntiveLUDialog.make(this, noteString -> {
|
public void onBottomSheetLUClose() {
|
||||||
|
this.mViewmodel.closeLU(true);
|
||||||
|
}
|
||||||
|
|
||||||
MtbColt currentLU = currentMtbColt.get();
|
@Override
|
||||||
|
public void onNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||||
|
NoteAggiuntiveLUDialog.make(this, onComplete, onAbort).show();
|
||||||
|
}
|
||||||
|
|
||||||
Runnable postNoteSave = () -> {
|
@Override
|
||||||
ColliMagazzinoRESTConsumer.updateDataFineStatic(
|
public void onError(Exception ex) {
|
||||||
currentLU,
|
this.closeProgress();
|
||||||
() -> printCollo(progress, currentMtbColt.get(), onComplete),
|
|
||||||
ex -> UtilityExceptions.defaultException(this, ex, progress));
|
|
||||||
};
|
|
||||||
|
|
||||||
if(!UtilityString.isNullOrEmpty(noteString)) {
|
|
||||||
currentLU.setAnnotazioni(noteString);
|
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> {
|
|
||||||
postNoteSave.run();
|
|
||||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress));
|
|
||||||
} else postNoteSave.run();
|
|
||||||
|
|
||||||
|
|
||||||
}, () -> {
|
|
||||||
|
|
||||||
}).show();
|
|
||||||
} else {
|
|
||||||
deleteCollo(progress, onComplete);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if(ex instanceof InvalidPesoKGException) {
|
||||||
|
UtilityToast.showToast(ex.getMessage());
|
||||||
} else {
|
} else {
|
||||||
if(onComplete != null) onComplete.run();
|
UtilityExceptions.defaultException(this, ex, mCurrentProgress);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
|
|
||||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
|
||||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
|
|
||||||
|
|
||||||
if(foundIndex >= 0){
|
|
||||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
|
||||||
mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
|
|
||||||
|
|
||||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onItemDeleted(MtbColr mtbColrDeleted) {
|
|
||||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
|
||||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
|
|
||||||
|
|
||||||
if(foundIndex >= 0){
|
|
||||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
|
||||||
|
|
||||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
|
|
||||||
DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
|
|
||||||
|
|
||||||
if(shouldPrint) {
|
|
||||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
|
||||||
|
|
||||||
if (printerList.size() > 0) {
|
|
||||||
try {
|
|
||||||
singlePrint(mtbColtToPrint, printerList.get(0), () -> {
|
|
||||||
postCloseOperations(mtbColtToPrint, onComplete);
|
|
||||||
progress.dismiss();
|
|
||||||
}, ex -> {
|
|
||||||
progress.dismiss();
|
|
||||||
String errorMessage = ex.getMessage();
|
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(
|
|
||||||
this,
|
|
||||||
new SpannableString(errorMessage),
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
R.string.button_ignore_print,
|
|
||||||
() -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
|
||||||
});
|
|
||||||
|
|
||||||
} catch (Exception ex) {
|
|
||||||
UtilityExceptions.defaultException(this, ex, progress);
|
|
||||||
postCloseOperations(mtbColtToPrint, onComplete);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
progress.dismiss();
|
|
||||||
String errorMessage = "Nessuna stampante configurata";
|
|
||||||
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
|
||||||
}
|
|
||||||
}, ex -> {
|
|
||||||
UtilityExceptions.defaultException(this, ex, progress);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
postCloseOperations(mtbColtToPrint, onComplete);
|
|
||||||
progress.dismiss();
|
|
||||||
}
|
|
||||||
}).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
|
||||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
|
||||||
|
|
||||||
PrinterRESTConsumer.printColloStatic(
|
|
||||||
printerName,
|
|
||||||
mtbColtToPrint,
|
|
||||||
1,
|
|
||||||
reportName, onComplete, onAbort);
|
|
||||||
|
|
||||||
}, onAbort);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
|
|
||||||
this.mColliRegistrati.add(generatedMtbColt);
|
|
||||||
|
|
||||||
setULToCurrentContext(null);
|
|
||||||
|
|
||||||
for(int i = 0; i < this.mDtbDocrList.size(); i++) {
|
|
||||||
WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
|
|
||||||
|
|
||||||
List<MtbColr> withdraws = dtbDocr.getWithdrawRows();
|
|
||||||
|
|
||||||
for(int k = 0; k < withdraws.size(); k++) {
|
|
||||||
MtbColr withdrawRow = withdraws.get(k);
|
|
||||||
|
|
||||||
dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
|
||||||
}
|
|
||||||
|
|
||||||
dtbDocr.getWithdrawRows().clear();
|
|
||||||
|
|
||||||
if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
|
|
||||||
this.mDtbDocrList.remove(dtbDocr);
|
|
||||||
i--;
|
|
||||||
} else this.refreshDtbDocrItem(dtbDocr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
removeListFilter();
|
BarcodeManager.enable();
|
||||||
|
|
||||||
if(onComplete != null) onComplete.run();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemDispatched(MtbAart mtbAart,
|
||||||
|
BigDecimal initialNumCnf,
|
||||||
|
BigDecimal initialQtaCnf,
|
||||||
|
BigDecimal initialQtaTot,
|
||||||
|
BigDecimal totalQtaAvailable,
|
||||||
|
BigDecimal totalNumCnfAvailable,
|
||||||
|
BigDecimal qtaCnfAvailable,
|
||||||
|
String partitaMag,
|
||||||
|
Date dataScad,
|
||||||
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||||
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||||
|
.setMtbAart(mtbAart)
|
||||||
|
.setInitialNumCnf(initialNumCnf)
|
||||||
|
.setInitialQtaCnf(initialQtaCnf)
|
||||||
|
.setInitialQtaTot(initialQtaTot)
|
||||||
|
.setTotalQtaAvailable(totalQtaAvailable)
|
||||||
|
.setTotalNumCnfAvailable(totalNumCnfAvailable)
|
||||||
|
.setQtaCnfAvailable(qtaCnfAvailable)
|
||||||
|
.setPartitaMag(partitaMag)
|
||||||
|
.setDataScad(dataScad)
|
||||||
|
.setCanOverflowOrderQuantity(false)
|
||||||
|
.setCanLUBeClosed(false)
|
||||||
|
.setCanPartitaMagBeChanged(false);
|
||||||
|
|
||||||
private void deleteCollo(Dialog progress, Runnable onComplete) {
|
DialogInputQuantityV2
|
||||||
|
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||||
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
|
.setQtaTot(resultDTO.getQtaTot())
|
||||||
|
.setPartitaMag(resultDTO.getPartitaMag())
|
||||||
|
.setDataScad(resultDTO.getDataScad());
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> {
|
this.openProgress();
|
||||||
setULToCurrentContext(null);
|
onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
|
}, () -> {
|
||||||
progress.dismiss();
|
// this.mViewmodel.resetMatchedRows();
|
||||||
|
})
|
||||||
|
.show(getSupportFragmentManager(), "tag");
|
||||||
if(onComplete != null) onComplete.run();
|
|
||||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean thereIsAnOpenedUL() {
|
public void onRowSaved() {
|
||||||
return currentMtbColt.get() != null;
|
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean thereIsAnyRowInUL() {
|
@Override
|
||||||
return currentMtbColt.get() != null &&
|
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||||
currentMtbColt.get().getMtbColr() != null &&
|
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||||
currentMtbColt.get().getMtbColr().size() > 0;
|
DialogSimpleMessageHelper.makeWarningDialog(this,
|
||||||
|
new SpannableString(text),
|
||||||
|
null,
|
||||||
|
() -> onComplete.run(true),
|
||||||
|
() -> onComplete.run(false)
|
||||||
|
).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLUOpened(MtbColt mtbColt) {
|
||||||
|
noLUPresent.set(false);
|
||||||
|
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||||
|
|
||||||
private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
|
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt);
|
||||||
int index = this.mDtbDocrList.indexOf(dtbDocr);
|
|
||||||
this.mDtbDocrList.remove(dtbDocr);
|
|
||||||
this.mDtbDocrList.add(index, dtbDocr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLUClosed() {
|
||||||
|
noLUPresent.set(true);
|
||||||
|
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
|
||||||
|
|
||||||
public void removeListFilter() {
|
if (this.mShouldCloseActivity) super.onBackPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLUSuccessullyPrinted() {
|
||||||
|
Resources res = getResources();
|
||||||
|
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||||
|
DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||||
|
DialogAskShouldPrint.make(this, "Packing List", onComplete).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||||
|
this.closeProgress();
|
||||||
|
DialogSimpleMessageHelper.makeErrorDialog(
|
||||||
|
this,
|
||||||
|
new SpannableString(ex.getMessage()),
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
R.string.button_ignore_print,
|
||||||
|
onComplete).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadingStarted() {
|
||||||
|
this.openProgress();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadingEnded() {
|
||||||
|
this.closeProgress();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.picking_resi;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface PickingResiComponent {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
PickingResiComponent create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void inject(PickingResiActivity pickingResiActivity);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.picking_resi;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||||
|
|
||||||
|
@Module(subcomponents = PickingResiComponent.class)
|
||||||
|
public class PickingResiModule {
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||||
|
return new PickingResiRESTConsumer(systemRESTConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() {
|
||||||
|
return new BottomSheetFragmentLUContentViewModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
PickingResiViewModel providesPickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PickingResiRESTConsumer pickingResiRESTConsumer) {
|
||||||
|
return new PickingResiViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, pickingResiRESTConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,576 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.picking_resi;
|
||||||
|
|
||||||
|
import androidx.databinding.ObservableArrayList;
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.Optional;
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
|
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||||
|
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener;
|
||||||
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener;
|
||||||
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||||
|
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
|
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
|
import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException;
|
||||||
|
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||||
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
|
|
||||||
|
public class PickingResiViewModel {
|
||||||
|
|
||||||
|
|
||||||
|
private Listener mListener;
|
||||||
|
|
||||||
|
private final MutableLiveData<List<WithdrawableDtbDocr>> mPickingList = new MutableLiveData<>();
|
||||||
|
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
|
||||||
|
|
||||||
|
private MtbColt mCurrentMtbColt = null;
|
||||||
|
|
||||||
|
private String mDefaultGestioneOfLU;
|
||||||
|
private String mDefaultCodAnagOfLU;
|
||||||
|
private int mDefaultSegnoOfLU;
|
||||||
|
private String mDefaultCodMdepOfLU;
|
||||||
|
|
||||||
|
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||||
|
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||||
|
private final ColliDataRecoverService mColliDataRecoverService;
|
||||||
|
private final OrdiniRESTConsumer mOrdiniRestConsumerService;
|
||||||
|
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||||
|
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
||||||
|
private final PickingResiRESTConsumer mPickingResiRESTConsumer;
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
|
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||||
|
ColliDataRecoverService colliDataRecoverService,
|
||||||
|
OrdiniRESTConsumer ordiniRESTConsumer,
|
||||||
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
|
PrinterRESTConsumer printerRESTConsumer,
|
||||||
|
PickingResiRESTConsumer mPickingResiRESTConsumer) {
|
||||||
|
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||||
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
|
this.mColliDataRecoverService = colliDataRecoverService;
|
||||||
|
this.mOrdiniRestConsumerService = ordiniRESTConsumer;
|
||||||
|
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||||
|
this.mPrinterRESTConsumer = printerRESTConsumer;
|
||||||
|
this.mPickingResiRESTConsumer = mPickingResiRESTConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(List<DocumentoResoDTO> documentList, int defaultSegnoLU, String codMdep) {
|
||||||
|
this.mDefaultSegnoOfLU = defaultSegnoLU;
|
||||||
|
this.mDefaultCodMdepOfLU = codMdep;
|
||||||
|
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
this.initDatiPicking(documentList);
|
||||||
|
|
||||||
|
this.mPickingResiRESTConsumer.loadDocRows(documentList, withdrawableDtbDocr -> {
|
||||||
|
this.mPickingList.postValue(withdrawableDtbDocr);
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
}, ex -> this.sendError(new DocumentsLoadException(ex)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initDatiPicking(List<DocumentoResoDTO> documentList) {
|
||||||
|
List<String> foundGestioni = Stream.of(documentList)
|
||||||
|
.map(DocumentoResoDTO::getGestione)
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if (foundGestioni.size() > 1) {
|
||||||
|
this.sendError(new Exception("Sono stati caricati documenti con diverse gestioni"));
|
||||||
|
} else mDefaultGestioneOfLU = foundGestioni.get(0);
|
||||||
|
|
||||||
|
|
||||||
|
List<String> foundCodAnags = Stream.of(documentList)
|
||||||
|
.map(DocumentoResoDTO::getCodAnag)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if (foundCodAnags.size() > 1) {
|
||||||
|
this.sendError(new Exception("Sono stati caricati documenti con diversi codici anagrafici"));
|
||||||
|
} else mDefaultCodAnagOfLU = foundCodAnags.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||||
|
MtbColt mtbColt = new MtbColt();
|
||||||
|
mtbColt.initDefaultFields();
|
||||||
|
mtbColt.setGestione(mDefaultGestioneOfLU)
|
||||||
|
.setSegno(mDefaultSegnoOfLU)
|
||||||
|
.setCodAnag(mDefaultCodAnagOfLU)
|
||||||
|
.setCodMdep(mDefaultCodMdepOfLU)
|
||||||
|
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||||
|
|
||||||
|
if (customNumCollo != null) mtbColt.setNumCollo(customNumCollo);
|
||||||
|
if (!UtilityString.isNullOrEmpty(customSerCollo)) mtbColt.setSerCollo(customSerCollo);
|
||||||
|
|
||||||
|
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
||||||
|
mtbColt
|
||||||
|
.setNumCollo(value.getNumCollo())
|
||||||
|
.setDataCollo(value.getDataColloS())
|
||||||
|
.setMtbColr(new ObservableArrayList<>());
|
||||||
|
|
||||||
|
this.mCurrentMtbColt = mtbColt;
|
||||||
|
|
||||||
|
if (onComplete != null) onComplete.run();
|
||||||
|
this.sendLUOpened(mtbColt);
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void closeLU(boolean shouldPrint) {
|
||||||
|
if (mCurrentMtbColt == null) return;
|
||||||
|
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> {
|
||||||
|
|
||||||
|
if (canBeDeleted) {
|
||||||
|
deleteLU(() -> {
|
||||||
|
this.sendLUClosed();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.sendOnNoteAggiuntiveRequired(noteAggiuntive -> {
|
||||||
|
|
||||||
|
if (!UtilityString.isNullOrEmpty(noteAggiuntive)) {
|
||||||
|
this.mCurrentMtbColt.setAnnotazioni(noteAggiuntive);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> {
|
||||||
|
|
||||||
|
if (shouldPrint) {
|
||||||
|
printCollo(mCurrentMtbColt, () -> {
|
||||||
|
postCloseOperations(mCurrentMtbColt, () -> {
|
||||||
|
this.sendLUClosed();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
postCloseOperations(mCurrentMtbColt, () -> {
|
||||||
|
this.sendLUClosed();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
|
}, () -> {
|
||||||
|
this.sendLUClosed();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteLU(Runnable onComplete) {
|
||||||
|
mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> {
|
||||||
|
|
||||||
|
this.mCurrentMtbColt = null;
|
||||||
|
if (onComplete != null) onComplete.run();
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printCollo(MtbColt mtbColtToPrint, Runnable onComplete) {
|
||||||
|
this.sendLUPrintRequest(shouldPrint -> {
|
||||||
|
if (!shouldPrint) {
|
||||||
|
onComplete.run();
|
||||||
|
} else {
|
||||||
|
this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdepOfLU, PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
||||||
|
if (printerList == null || printerList.size() == 0) {
|
||||||
|
this.sendError(new NoPrintersFoundException());
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
singlePrint(mtbColtToPrint, printerList.get(0), onComplete, ex -> this.sendLUPrintError(ex, onComplete));
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
String reportName = ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum());
|
||||||
|
|
||||||
|
this.mPrinterRESTConsumer.printCollo(
|
||||||
|
printerName,
|
||||||
|
mtbColtToPrint,
|
||||||
|
1,
|
||||||
|
reportName, onComplete, onFailed);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void postCloseOperations(MtbColt mtbColt, Runnable onComplete) {
|
||||||
|
this.mColliRegistrati.add(mtbColt);
|
||||||
|
|
||||||
|
Stream.of(this.mPickingList.getValue())
|
||||||
|
.forEach(x -> {
|
||||||
|
List<MtbColr> withdraws = x.getWithdrawRows();
|
||||||
|
|
||||||
|
for (int k = 0; k < withdraws.size(); k++) {
|
||||||
|
MtbColr withdrawRow = withdraws.get(k);
|
||||||
|
x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||||
|
}
|
||||||
|
|
||||||
|
x.getWithdrawRows().clear();
|
||||||
|
|
||||||
|
if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) {
|
||||||
|
this.mPickingList.getValue().remove(x);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.mPickingList.postValue(this.mPickingList.getValue());
|
||||||
|
onComplete.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||||
|
|
||||||
|
//Se non c'è una UL aperta
|
||||||
|
if (mCurrentMtbColt == null) {
|
||||||
|
|
||||||
|
//Se è un'etichetta anonima
|
||||||
|
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||||
|
//Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
|
||||||
|
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
|
||||||
|
//dell'etichetta anonima
|
||||||
|
// this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
|
||||||
|
} else {
|
||||||
|
// this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||||
|
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||||
|
// this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr) {
|
||||||
|
BigDecimal totalQtaDoc = withdrawableDtbDocr.getQtaDoc();
|
||||||
|
BigDecimal totalNumCnfDoc = withdrawableDtbDocr.getNumCnf();
|
||||||
|
BigDecimal qtaCnfDoc = withdrawableDtbDocr.getQtaCnf();
|
||||||
|
|
||||||
|
|
||||||
|
this.sendOnItemDispatched(
|
||||||
|
withdrawableDtbDocr.getMtbAart(),
|
||||||
|
totalNumCnfDoc,
|
||||||
|
qtaCnfDoc,
|
||||||
|
totalQtaDoc,
|
||||||
|
totalQtaDoc,
|
||||||
|
totalNumCnfDoc,
|
||||||
|
qtaCnfDoc,
|
||||||
|
withdrawableDtbDocr.getPartitaMag(),
|
||||||
|
withdrawableDtbDocr.getDataScadPartitaMagD(),
|
||||||
|
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||||
|
|
||||||
|
this.saveNewRow(withdrawableDtbDocr,
|
||||||
|
pickedQuantityDTO.getNumCnf(),
|
||||||
|
pickedQuantityDTO.getQtaCnf(),
|
||||||
|
pickedQuantityDTO.getQtaTot(),
|
||||||
|
pickedQuantityDTO.getPartitaMag(),
|
||||||
|
pickedQuantityDTO.getDataScad(),
|
||||||
|
shouldCloseLU);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispatchRowEdit(final MtbColr mtbColrToEdit) {
|
||||||
|
|
||||||
|
this.sendOnItemDispatched(
|
||||||
|
mtbColrToEdit.getMtbAart(),
|
||||||
|
mtbColrToEdit.getNumCnf(),
|
||||||
|
mtbColrToEdit.getQtaCnf(),
|
||||||
|
mtbColrToEdit.getQtaCol(),
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
mtbColrToEdit.getPartitaMag(),
|
||||||
|
mtbColrToEdit.getDataScadPartitaD(),
|
||||||
|
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||||
|
|
||||||
|
this.saveEditedRow(mtbColrToEdit,
|
||||||
|
pickedQuantityDTO.getNumCnf(),
|
||||||
|
pickedQuantityDTO.getQtaCnf(),
|
||||||
|
pickedQuantityDTO.getQtaTot(),
|
||||||
|
pickedQuantityDTO.getPartitaMag(),
|
||||||
|
pickedQuantityDTO.getDataScad(),
|
||||||
|
shouldCloseLU);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
final MtbColr mtbColr = new MtbColr()
|
||||||
|
.setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart())
|
||||||
|
.setPartitaMag(partitaMag)
|
||||||
|
.setDataScadPartita(dataScad)
|
||||||
|
.setQtaCol(qtaTot)
|
||||||
|
.setQtaCnf(qtaCnf)
|
||||||
|
.setNumCnf(numCnf)
|
||||||
|
.setDescrizione(withdrawableDtbDocr.getMtbAart().getDescrizioneEstesa())
|
||||||
|
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||||
|
|
||||||
|
.setCodAnagDoc(withdrawableDtbDocr.getCodAnag())
|
||||||
|
.setCodDtipDoc(withdrawableDtbDocr.getCodDtip())
|
||||||
|
.setSerDoc(withdrawableDtbDocr.getSerDoc())
|
||||||
|
.setNumDoc(withdrawableDtbDocr.getNumDoc())
|
||||||
|
.setDataDoc(withdrawableDtbDocr.getDataDocS())
|
||||||
|
.setIdRigaDoc(withdrawableDtbDocr.getIdRiga());
|
||||||
|
|
||||||
|
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||||
|
|
||||||
|
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||||
|
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||||
|
|
||||||
|
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||||
|
cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone());
|
||||||
|
|
||||||
|
boolean shouldPrint = true;
|
||||||
|
|
||||||
|
//Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe)
|
||||||
|
if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
|
||||||
|
shouldPrint = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
if (shouldCloseLU) closeLU(shouldPrint);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean finalShouldPrint = shouldPrint;
|
||||||
|
this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
|
||||||
|
|
||||||
|
mtbColr
|
||||||
|
.setDataCollo(value.getDataColloS())
|
||||||
|
.setNumCollo(value.getNumCollo())
|
||||||
|
.setGestione(value.getGestione())
|
||||||
|
.setSerCollo(value.getSerCollo())
|
||||||
|
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||||
|
.setUntMis(withdrawableDtbDocr.getMtbAart().getUntMis())
|
||||||
|
.setMtbAart(withdrawableDtbDocr.getMtbAart());
|
||||||
|
|
||||||
|
withdrawableDtbDocr.getWithdrawRows().add(mtbColr);
|
||||||
|
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||||
|
|
||||||
|
this.mPickingList.postValue(this.mPickingList.getValue());
|
||||||
|
|
||||||
|
this.sendOnRowSaved();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
if (shouldCloseLU) closeLU(finalShouldPrint);
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||||
|
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
MtbColt mtbColt = new MtbColt()
|
||||||
|
.setNumCollo(mtbColrToUpdate.getNumCollo())
|
||||||
|
.setDataCollo(mtbColrToUpdate.getDataColloS())
|
||||||
|
.setSerCollo(mtbColrToUpdate.getSerCollo())
|
||||||
|
.setGestione(mtbColrToUpdate.getGestione())
|
||||||
|
.setMtbColr(new ObservableArrayList<>());
|
||||||
|
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||||
|
|
||||||
|
final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
|
||||||
|
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||||
|
mtbColr.setRiga(null)
|
||||||
|
.setNumCnf(numCnf.subtract(mtbColrToUpdate.getNumCnf()))
|
||||||
|
.setQtaCnf(qtaCnf)
|
||||||
|
.setQtaCol(qtaTot.subtract(mtbColrToUpdate.getQtaCol()))
|
||||||
|
.setPartitaMag(partitaMag)
|
||||||
|
.setDataScadPartita(dataScad);
|
||||||
|
|
||||||
|
mtbColt.getMtbColr().add(mtbColr);
|
||||||
|
|
||||||
|
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||||
|
|
||||||
|
mtbColr.setNumCnf(numCnf)
|
||||||
|
.setQtaCnf(qtaCnf)
|
||||||
|
.setQtaCol(qtaTot);
|
||||||
|
|
||||||
|
Optional<WithdrawableDtbDocr> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||||
|
.filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToUpdate))
|
||||||
|
.findSingle();
|
||||||
|
|
||||||
|
if (pickingObjectDTO.isPresent()) {
|
||||||
|
pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToUpdate);
|
||||||
|
pickingObjectDTO.get().getWithdrawRows().add(mtbColr);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||||
|
this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||||
|
|
||||||
|
this.sendOnRowSaved();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteRow(MtbColr mtbColrToDelete) {
|
||||||
|
this.sendMtbColrDeleteRequest(canDelete -> {
|
||||||
|
if (canDelete) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
MtbColt mtbColt = new MtbColt()
|
||||||
|
.setNumCollo(mtbColrToDelete.getNumCollo())
|
||||||
|
.setDataCollo(mtbColrToDelete.getDataColloS())
|
||||||
|
.setSerCollo(mtbColrToDelete.getSerCollo())
|
||||||
|
.setGestione(mtbColrToDelete.getGestione())
|
||||||
|
.setMtbColr(new ObservableArrayList<>());
|
||||||
|
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||||
|
|
||||||
|
MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
|
||||||
|
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||||
|
mtbColr.setQtaCol(mtbColr.getQtaCol().multiply(new BigDecimal(-1)))
|
||||||
|
.setNumCnf(mtbColr.getNumCnf().multiply(new BigDecimal(-1)))
|
||||||
|
.setRiga(null);
|
||||||
|
|
||||||
|
mtbColt.getMtbColr().add(mtbColr);
|
||||||
|
|
||||||
|
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||||
|
|
||||||
|
Optional<WithdrawableDtbDocr> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||||
|
.filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToDelete))
|
||||||
|
.findSingle();
|
||||||
|
|
||||||
|
if (pickingObjectDTO.isPresent()) {
|
||||||
|
pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToDelete);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
|
||||||
|
|
||||||
|
this.sendOnRowSaved();
|
||||||
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public MutableLiveData<List<WithdrawableDtbDocr>> getPickingList() {
|
||||||
|
return mPickingList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
|
||||||
|
if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete, onAbort);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnLoadingStarted() {
|
||||||
|
if (this.mListener != null) mListener.onLoadingStarted();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnLoadingEnded() {
|
||||||
|
if (this.mListener != null) mListener.onLoadingEnded();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendError(Exception ex) {
|
||||||
|
if (this.mListener != null) mListener.onError(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendLUOpened(MtbColt mtbColt) {
|
||||||
|
if (this.mListener != null) mListener.onLUOpened(mtbColt);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendLUClosed() {
|
||||||
|
if (this.mListener != null) mListener.onLUClosed();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||||
|
if (this.mListener != null) mListener.onLUPrintRequest(onComplete);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendLUPrintError(Exception ex, Runnable onComplete) {
|
||||||
|
if (this.mListener != null) mListener.onLUPrintError(ex, onComplete);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||||
|
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnItemDispatched(MtbAart mtbAart,
|
||||||
|
BigDecimal initialNumCnf,
|
||||||
|
BigDecimal initialQtaCnf,
|
||||||
|
BigDecimal initialQtaTot,
|
||||||
|
BigDecimal totalQtaAvailable,
|
||||||
|
BigDecimal totalNumCnfAvailable,
|
||||||
|
BigDecimal qtaCnfAvailable,
|
||||||
|
String partitaMag,
|
||||||
|
Date dataScad,
|
||||||
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||||
|
if (this.mListener != null) mListener.onItemDispatched(mtbAart,
|
||||||
|
initialNumCnf,
|
||||||
|
initialQtaCnf,
|
||||||
|
initialQtaTot,
|
||||||
|
totalQtaAvailable,
|
||||||
|
totalNumCnfAvailable,
|
||||||
|
qtaCnfAvailable,
|
||||||
|
partitaMag,
|
||||||
|
dataScad,
|
||||||
|
onComplete);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendOnRowSaved() {
|
||||||
|
if (this.mListener != null) mListener.onRowSaved();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public PickingResiViewModel setListener(Listener listener) {
|
||||||
|
this.mListener = listener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
|
||||||
|
|
||||||
|
void onNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort);
|
||||||
|
|
||||||
|
void onError(Exception ex);
|
||||||
|
|
||||||
|
void onItemDispatched(MtbAart mtbAart,
|
||||||
|
BigDecimal initialNumCnf,
|
||||||
|
BigDecimal initialQtaCnf,
|
||||||
|
BigDecimal initialQtaTot,
|
||||||
|
BigDecimal totalQtaAvailable,
|
||||||
|
BigDecimal totalNumCnfAvailable,
|
||||||
|
BigDecimal qtaCnfAvailable,
|
||||||
|
String partitaMag,
|
||||||
|
Date dataScad,
|
||||||
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,197 +1,149 @@
|
|||||||
package it.integry.integrywmsnative.gest.picking_resi.core;
|
package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.databinding.ObservableList;
|
import androidx.databinding.ObservableList;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemBinding;
|
import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
|
||||||
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemHeaderBinding;
|
import it.integry.integrywmsnative.databinding.PickingResiMainListItemHeaderBinding;
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||||
|
|
||||||
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<PickingResiListAdapter.SubheaderHolder, PickingResiListAdapter.SingleItemViewHolder> {
|
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<PickingResiListAdapter.SubheaderHolder, PickingResiListAdapter.SingleItemViewHolder> {
|
||||||
|
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private final List<PickingResiListModel> mDataset = new ArrayList<>();
|
||||||
private List<WithdrawableDtbDocr> mDataset;
|
|
||||||
|
|
||||||
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
|
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
|
||||||
|
|
||||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||||
|
PickingResiMainListItemHeaderBinding mBinding;
|
||||||
|
|
||||||
UltimeConsegneMainListItemHeaderBinding mBinding;
|
SubheaderHolder(PickingResiMainListItemHeaderBinding binding) {
|
||||||
|
|
||||||
SubheaderHolder(UltimeConsegneMainListItemHeaderBinding binding) {
|
|
||||||
super(binding.getRoot());
|
super(binding.getRoot());
|
||||||
this.mBinding = binding;
|
this.mBinding = binding;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
PickingResiMainListItemBinding mBinding;
|
||||||
|
|
||||||
UltimeConsegneMainListItemBinding mBinding;
|
SingleItemViewHolder(PickingResiMainListItemBinding binding) {
|
||||||
|
|
||||||
SingleItemViewHolder(UltimeConsegneMainListItemBinding binding) {
|
|
||||||
super(binding.getRoot());
|
super(binding.getRoot());
|
||||||
this.mBinding = binding;
|
this.mBinding = binding;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PickingResiListAdapter(AppCompatActivity context, ObservableArrayList<PickingResiListModel> mutableDataSet) {
|
||||||
public PickingResiListAdapter(Context context, ObservableList<WithdrawableDtbDocr> data) {
|
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
this.mDataset = new ArrayList<>();
|
|
||||||
|
|
||||||
refreshData(data);
|
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||||
|
|
||||||
data.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<WithdrawableDtbDocr>>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(ObservableList<WithdrawableDtbDocr> sender) {
|
public void onChanged(ObservableList sender) {
|
||||||
refreshData(sender);
|
mDataset.clear();
|
||||||
}
|
mDataset.addAll(sender);
|
||||||
|
notifyDataSetChanged();
|
||||||
@Override
|
notifyDataChanged();
|
||||||
public void onItemRangeChanged(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
|
||||||
refreshData(sender);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeInserted(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
|
||||||
refreshData(sender);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeMoved(ObservableList<WithdrawableDtbDocr> sender, int fromPosition, int toPosition, int itemCount) {
|
|
||||||
refreshData(sender);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeRemoved(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
|
||||||
refreshData(sender);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshData(List<WithdrawableDtbDocr> data) {
|
|
||||||
this.mDataset.clear();
|
|
||||||
this.mDataset.addAll(Stream.of(data)
|
|
||||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
|
||||||
.toList());
|
|
||||||
|
|
||||||
this.notifyDataChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
|
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
|
||||||
this.mOnItemClicked = onItemClicked;
|
this.mOnItemClicked = onItemClicked;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
public PickingResiListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||||
UltimeConsegneMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item, parent, false);
|
PickingResiMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item, parent, false);
|
||||||
return new SingleItemViewHolder(binding);
|
return new PickingResiListAdapter.SingleItemViewHolder(binding);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
public PickingResiListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||||
UltimeConsegneMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item_header, parent, false);
|
PickingResiMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item_header, parent, false);
|
||||||
return new SubheaderHolder(binding);
|
return new PickingResiListAdapter.SubheaderHolder(binding);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindSubheaderViewHolder(PickingResiListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||||
|
PickingResiListModel pickingResiListModel = this.mDataset.get(nextItemPosition);
|
||||||
|
|
||||||
|
subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getGroupTitle()) ? View.GONE : View.VISIBLE);
|
||||||
|
subheaderHolder.mBinding.groupTitle.setText(pickingResiListModel.getGroupTitle());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
|
public void onBindItemViewHolder(final PickingResiListAdapter.SingleItemViewHolder holder, final int position) {
|
||||||
final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
|
PickingResiListModel pickingResiListModel = this.mDataset.get(position);
|
||||||
|
|
||||||
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
if (pickingResiListModel.getQtaEvasa().subtract(pickingResiListModel.getQtaTot()).floatValue() >= 0) {
|
||||||
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
|
|
||||||
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
|
||||||
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
|
||||||
}
|
|
||||||
|
|
||||||
Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaColEvasa));
|
|
||||||
|
|
||||||
holder.mBinding.badge1.setText(dtbDocr.getCodMart());
|
|
||||||
holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Setting qty with unt_mis
|
|
||||||
if(!SettingsManager.iDB().isFlagForceAllToColli() && (dtbDocr.getMtbAart() == null || dtbDocr.getMtbAart().isFlagQtaCnfFissaBoolean())){
|
|
||||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaColEvasa));
|
|
||||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
|
|
||||||
holder.mBinding.untMis.setText(dtbDocr.getUntDoc());
|
|
||||||
} else {
|
|
||||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(numCnfColEvasa));
|
|
||||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getNumCnf()));
|
|
||||||
holder.mBinding.untMis.setText(UtilityResources.getString(R.string.unt_mis_col));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (qtaDaEvadere <= 0 ) {
|
|
||||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
|
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
|
||||||
} else if (qtaDaEvadere > 0 && qtaColEvasa.floatValue() > 0) {
|
} else if (pickingResiListModel.getQtaEvasa().floatValue() > 0) {
|
||||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
|
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
|
||||||
|
} else if (position % 2 == 1) {
|
||||||
|
holder.mBinding.getRoot().setBackgroundColor(Color.WHITE);
|
||||||
} else {
|
} else {
|
||||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
|
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
holder.mBinding.deactivatedOverBg.setVisibility(!pickingResiListModel.isActive() ? View.VISIBLE : View.GONE);
|
||||||
|
holder.mBinding.getRoot().setAlpha(!pickingResiListModel.isActive() ? 0.8f : 1);
|
||||||
|
holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingResiListModel.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner));
|
||||||
|
holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingResiListModel.isActive() ? R.color.gray_600 : R.color.green_700));
|
||||||
|
|
||||||
|
holder.mBinding.descrizione.setText(pickingResiListModel.getDescrizione());
|
||||||
|
holder.mBinding.descrizione.setTextColor(pickingResiListModel.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
|
||||||
|
|
||||||
|
|
||||||
|
holder.mBinding.badge1.setText(pickingResiListModel.getBadge1());
|
||||||
|
|
||||||
|
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaEvasa()));
|
||||||
|
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaTot()));
|
||||||
|
|
||||||
|
holder.mBinding.untMis.setText(pickingResiListModel.getUntMis());
|
||||||
|
holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getUntMis()) ? View.GONE : View.VISIBLE);
|
||||||
|
|
||||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||||
if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
|
if (this.mOnItemClicked != null)
|
||||||
|
this.mOnItemClicked.run(pickingResiListModel.getOriginalModel());
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
|
|
||||||
DtbDocr nextDtbDocr = this.mDataset.get(nextItemPosition);
|
|
||||||
subheaderHolder.mBinding.descrizione.setText(nextDtbDocr.getCodDtip() + " - N° " + nextDtbDocr.getNumDoc() + " del " + UtilityDate.formatDate(nextDtbDocr.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||||
|
if (getItemSize() == 1) return true;
|
||||||
|
else if (getItemSize() > 1) {
|
||||||
|
PickingResiListModel compare1 = this.mDataset.get(position);
|
||||||
|
PickingResiListModel compare2 = this.mDataset.get(position + 1);
|
||||||
|
|
||||||
DtbDocr compare1 = this.mDataset.get(position);
|
if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
|
||||||
DtbDocr compare2 = this.mDataset.get(position + 1);
|
return false;
|
||||||
|
}
|
||||||
if( !compare1.getDataDocS().equalsIgnoreCase(compare2.getDataDocS()) ||
|
|
||||||
!compare1.getSerDoc().equalsIgnoreCase(compare2.getSerDoc()) ||
|
|
||||||
!compare1.getNumDoc().equals(compare2.getNumDoc()) ||
|
|
||||||
!compare1.getCodAnag().equalsIgnoreCase(compare2.getCodAnag()) ||
|
|
||||||
!compare1.getCodDtip().equalsIgnoreCase(compare2.getCodDtip())) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemSize() {
|
public int getItemSize() {
|
||||||
return this.mDataset.size();
|
return this.mDataset.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||||
|
|
||||||
|
public class PickingResiListModel {
|
||||||
|
|
||||||
|
private String groupTitle;
|
||||||
|
|
||||||
|
private String badge1;
|
||||||
|
|
||||||
|
private String descrizione;
|
||||||
|
private boolean descrizionePresente;
|
||||||
|
private BigDecimal qtaEvasa;
|
||||||
|
private BigDecimal qtaTot;
|
||||||
|
private String untMis;
|
||||||
|
|
||||||
|
private boolean active;
|
||||||
|
|
||||||
|
private WithdrawableDtbDocr mOriginalModel;
|
||||||
|
|
||||||
|
public String getGroupTitle() {
|
||||||
|
return groupTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setGroupTitle(String groupTitle) {
|
||||||
|
this.groupTitle = groupTitle;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBadge1() {
|
||||||
|
return badge1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setBadge1(String badge1) {
|
||||||
|
this.badge1 = badge1;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescrizione() {
|
||||||
|
return descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setDescrizione(String descrizione) {
|
||||||
|
this.descrizione = descrizione;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDescrizionePresente() {
|
||||||
|
return descrizionePresente;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setDescrizionePresente(boolean descrizionePresente) {
|
||||||
|
this.descrizionePresente = descrizionePresente;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaEvasa() {
|
||||||
|
return qtaEvasa;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setQtaEvasa(BigDecimal qtaEvasa) {
|
||||||
|
this.qtaEvasa = qtaEvasa;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaTot() {
|
||||||
|
return qtaTot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setQtaTot(BigDecimal qtaTot) {
|
||||||
|
this.qtaTot = qtaTot;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUntMis() {
|
||||||
|
return untMis;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setUntMis(String untMis) {
|
||||||
|
this.untMis = untMis;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isActive() {
|
||||||
|
return active;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setActive(boolean active) {
|
||||||
|
this.active = active;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WithdrawableDtbDocr getOriginalModel() {
|
||||||
|
return mOriginalModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingResiListModel setOriginalModel(WithdrawableDtbDocr originalModel) {
|
||||||
|
this.mOriginalModel = originalModel;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.picking_resi.exceptions;
|
||||||
|
|
||||||
|
public class DocumentsLoadException extends Exception {
|
||||||
|
|
||||||
|
public DocumentsLoadException(Throwable cause) {
|
||||||
|
super("Errore durante il caricamento dei documenti");
|
||||||
|
initCause(cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
public class PickingResiRESTConsumer {
|
||||||
|
|
||||||
|
|
||||||
|
private final SystemRESTConsumer mSystemRestConsumer;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||||
|
this.mSystemRestConsumer = systemRESTConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadDocRows(List<DocumentoResoDTO> documents, RunnableArgs<ArrayList<WithdrawableDtbDocr>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
List<HashMap<String, Object>> filterCond = new ArrayList<>();
|
||||||
|
|
||||||
|
for(int i = 0; i < documents.size(); i++) {
|
||||||
|
HashMap<String, Object> filter = new HashMap<>();
|
||||||
|
|
||||||
|
filter.put("data_doc", documents.get(i).getDataDocD());
|
||||||
|
filter.put("num_doc", documents.get(i).getNumDoc());
|
||||||
|
filter.put("ser_doc", documents.get(i).getSerDoc());
|
||||||
|
filter.put("cod_anag", documents.get(i).getCodAnag());
|
||||||
|
filter.put("cod_dtip", documents.get(i).getCodDtip());
|
||||||
|
|
||||||
|
filterCond.add(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
String sql = "SELECT * FROM dvw_situazione_qta_docs " +
|
||||||
|
"WHERE " +
|
||||||
|
UtilityQuery.concatFieldListInWhereCond(filterCond) +
|
||||||
|
"ORDER BY cod_mart";
|
||||||
|
|
||||||
|
|
||||||
|
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
|
||||||
|
this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
|
||||||
|
|
||||||
|
if(values != null && values.size() > 0){
|
||||||
|
List<String> codMarts = Stream.of(values)
|
||||||
|
.map(DtbDocr::getCodMart)
|
||||||
|
.withoutNulls()
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
|
||||||
|
|
||||||
|
if(arts != null && arts.size() > 0) {
|
||||||
|
for (DtbDocr value : values) {
|
||||||
|
|
||||||
|
MtbAart foundMtbAart = null;
|
||||||
|
|
||||||
|
List<MtbAart> mtbAartStream = Stream.of(arts)
|
||||||
|
.filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList();
|
||||||
|
|
||||||
|
if(mtbAartStream != null && mtbAartStream.size() > 0){
|
||||||
|
foundMtbAart = mtbAartStream.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
value.setMtbAart(foundMtbAart);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(onComplete != null) onComplete.run(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
}, onFailed);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if(onComplete != null) onComplete.run(values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailed(Exception ex) {
|
||||||
|
if(onFailed != null) onFailed.run(ex);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package it.integry.integrywmsnative.gest.picking_resi.dto;
|
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
package it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel;
|
package it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.databinding.ObservableField;
|
import androidx.databinding.ObservableField;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
@@ -18,6 +17,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
@@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||||
@@ -39,15 +40,16 @@ import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBind
|
|||||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsListAdapter;
|
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsListAdapter;
|
||||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper;
|
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper;
|
||||||
import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO;
|
import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO;
|
||||||
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
|
||||||
|
|
||||||
public class ProdRecuperoMaterialeViewModel {
|
public class ProdRecuperoMaterialeViewModel {
|
||||||
|
|
||||||
private Context mContext;
|
private FragmentActivity mContext;
|
||||||
|
|
||||||
private FragmentProdRecuperoMaterialeBinding mBinding;
|
private FragmentProdRecuperoMaterialeBinding mBinding;
|
||||||
private ProdRecuperoMaterialeHelper mHelper;
|
private ProdRecuperoMaterialeHelper mHelper;
|
||||||
@@ -61,7 +63,7 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
|
|
||||||
private int barcodeScannerIstanceID = -1;
|
private int barcodeScannerIstanceID = -1;
|
||||||
|
|
||||||
public void init(Activity context, FragmentProdRecuperoMaterialeBinding binding, ProdRecuperoMaterialeHelper helper, Runnable onRecuperoCompleted) {
|
public void init(FragmentActivity context, FragmentProdRecuperoMaterialeBinding binding, ProdRecuperoMaterialeHelper helper, Runnable onRecuperoCompleted) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mBinding = binding;
|
mBinding = binding;
|
||||||
mHelper = helper;
|
mHelper = helper;
|
||||||
@@ -79,7 +81,6 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void initBarcode() {
|
private void initBarcode() {
|
||||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
.setOnScanSuccessfull(onScanSuccessful)
|
.setOnScanSuccessfull(onScanSuccessful)
|
||||||
@@ -97,13 +98,12 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
|
|
||||||
if(UtilityBarcode.isEtichettaAnonima(data) || UtilityBarcode.isEtichetta128(data)){
|
if (UtilityBarcode.isEtichettaAnonima(data) || UtilityBarcode.isEtichetta128(data)) {
|
||||||
this.executeEtichettaUL(data, progressDialog);
|
this.executeEtichettaUL(data, progressDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,10 +112,10 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
||||||
ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
|
ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
|
||||||
|
|
||||||
if(mtbColt != null) {
|
if (mtbColt != null) {
|
||||||
|
|
||||||
HistoryVersamentoProdULDTO historyVersamentoProdULRestDTO = this.getHistoryElementFromMtbColt(mtbColt);
|
HistoryVersamentoProdULDTO historyVersamentoProdULRestDTO = this.getHistoryElementFromMtbColt(mtbColt);
|
||||||
if(historyVersamentoProdULRestDTO != null) {
|
if (historyVersamentoProdULRestDTO != null) {
|
||||||
this.dispatchItem(historyVersamentoProdULRestDTO, mtbColt, progressDialog);
|
this.dispatchItem(historyVersamentoProdULRestDTO, mtbColt, progressDialog);
|
||||||
} else {
|
} else {
|
||||||
DialogCommon.showNoULFound(mContext, () -> {
|
DialogCommon.showNoULFound(mContext, () -> {
|
||||||
@@ -144,9 +144,9 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
x.getDataColloRif().equals(mtbColt.getDataColloS()) &&
|
x.getDataColloRif().equals(mtbColt.getDataColloS()) &&
|
||||||
x.getSerColloRif().equalsIgnoreCase(mtbColt.getSerCollo()) &&
|
x.getSerColloRif().equalsIgnoreCase(mtbColt.getSerCollo()) &&
|
||||||
x.getGestioneRif().equalsIgnoreCase(mtbColt.getGestione()))
|
x.getGestioneRif().equalsIgnoreCase(mtbColt.getGestione()))
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
if(filteredItems != null && filteredItems.size() > 0) {
|
if (filteredItems != null && filteredItems.size() > 0) {
|
||||||
return filteredItems.get(0);
|
return filteredItems.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,38 +154,75 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) {
|
||||||
|
// BigDecimal qtaDaEvadere = BigDecimal.ZERO;
|
||||||
|
//
|
||||||
|
// qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||||
|
// .setBatchLot(item.getPartitaMag())
|
||||||
|
// .setQtaDaEvadere(null)
|
||||||
|
// .setQtaOrd(null)
|
||||||
|
// .setMtbAart(item.getMtbAart())
|
||||||
|
// .setCanPartitaMagBeChanged(false)
|
||||||
|
// .setNumCnf(1)
|
||||||
|
// .setQtaCnf(item.getQtaCnf())
|
||||||
|
// .setQtaTot(item.getQtaCnf())
|
||||||
|
// .setMaxQta(qtaDaEvadere)
|
||||||
|
// .setQtaDisponibile(qtaDaEvadere);
|
||||||
|
//
|
||||||
|
// DialogInputQuantity.makeBase(mContext, dto, false, quantity -> {
|
||||||
|
// onItemDispatched(item, quantity.qtaTot.getBigDecimal(), sourceMtbColt, dialogProgress);
|
||||||
|
// }, () -> {
|
||||||
|
// if (dialogProgress != null) dialogProgress.dismiss();
|
||||||
|
// }).show();
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) {
|
private void dispatchItem(HistoryVersamentoProdULDTO item, MtbColt sourceMtbColt, Dialog dialogProgress) {
|
||||||
BigDecimal qtaDaEvadere = BigDecimal.ZERO;
|
BigDecimal qtaDaEvadere = BigDecimal.ZERO;
|
||||||
|
BigDecimal numCnfDaEvadere = BigDecimal.ZERO;
|
||||||
|
|
||||||
qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
|
qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
|
||||||
|
|
||||||
|
if(!UtilityBigDecimal.equalsTo(qtaDaEvadere, BigDecimal.ZERO)) {
|
||||||
|
numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf());
|
||||||
|
}
|
||||||
|
|
||||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||||
.setBatchLot(item.getPartitaMag())
|
|
||||||
.setQtaDaEvadere(null)
|
|
||||||
.setQtaOrd(null)
|
|
||||||
.setMtbAart(item.getMtbAart())
|
.setMtbAart(item.getMtbAart())
|
||||||
.setCanPartitaMagBeChanged(false)
|
.setInitialNumCnf(BigDecimal.ONE)
|
||||||
.setNumCnf(1)
|
.setInitialQtaCnf(item.getQtaCnf())
|
||||||
.setQtaCnf(item.getQtaCnf())
|
.setInitialQtaTot(item.getQtaCnf())
|
||||||
.setQtaTot(item.getQtaCnf())
|
|
||||||
.setMaxQta(qtaDaEvadere)
|
|
||||||
.setQtaDisponibile(qtaDaEvadere);
|
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, dto, false, quantity -> {
|
.setTotalQtaAvailable(qtaDaEvadere)
|
||||||
onItemDispatched(item, quantity.qtaTot.getBigDecimal(), sourceMtbColt, dialogProgress);
|
.setTotalNumCnfAvailable(numCnfDaEvadere)
|
||||||
}, () -> {
|
.setQtaCnfAvailable(item.getQtaCnf())
|
||||||
if(dialogProgress != null) dialogProgress.dismiss();
|
.setPartitaMag(item.getPartitaMag())
|
||||||
}).show();
|
// .setDataScad(item.getDa)
|
||||||
|
.setCanOverflowOrderQuantity(false)
|
||||||
|
.setCanLUBeClosed(false);
|
||||||
|
|
||||||
|
DialogInputQuantityV2
|
||||||
|
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||||
|
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
|
.setQtaTot(resultDTO.getQtaTot())
|
||||||
|
.setPartitaMag(resultDTO.getPartitaMag())
|
||||||
|
.setDataScad(resultDTO.getDataScad());
|
||||||
|
|
||||||
|
onItemDispatched(item, resultDTO.getQtaTot(), sourceMtbColt, dialogProgress);
|
||||||
|
}, () -> {
|
||||||
|
if (dialogProgress != null) dialogProgress.dismiss();
|
||||||
|
})
|
||||||
|
.show(mContext.getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal quantity, MtbColt sourceMtbColt, Dialog progress) {
|
private void onItemDispatched(HistoryVersamentoProdULDTO item, BigDecimal quantity, MtbColt sourceMtbColt, Dialog progress) {
|
||||||
|
|
||||||
if(progress == null) {
|
if (progress == null) {
|
||||||
progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
}
|
}
|
||||||
Dialog finalProgress = progress;
|
Dialog finalProgress = progress;
|
||||||
@@ -197,7 +234,7 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
.setGestione(item.getGestione())
|
.setGestione(item.getGestione())
|
||||||
.setMtbColr(new ObservableArrayList<>());
|
.setMtbColr(new ObservableArrayList<>());
|
||||||
|
|
||||||
for(HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) {
|
for (HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) {
|
||||||
BigDecimal qtaCol = quantity.multiply(new BigDecimal(-1).multiply(new BigDecimal(ordine.getPercentageHr()))).divide(new BigDecimal(100), 3, RoundingMode.HALF_EVEN);
|
BigDecimal qtaCol = quantity.multiply(new BigDecimal(-1).multiply(new BigDecimal(ordine.getPercentageHr()))).divide(new BigDecimal(100), 3, RoundingMode.HALF_EVEN);
|
||||||
|
|
||||||
final MtbColr mtbColrScarico = new MtbColr()
|
final MtbColr mtbColrScarico = new MtbColr()
|
||||||
@@ -220,18 +257,17 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||||
|
|
||||||
|
|
||||||
RunnableArgss<MtbColt, Boolean> saveRunnable = (mtbColt, createdLU) -> {
|
RunnableArgss<MtbColt, Boolean> saveRunnable = (mtbColt, createdLU) -> {
|
||||||
|
|
||||||
if(mtbColt != null) {
|
if (mtbColt != null) {
|
||||||
|
|
||||||
List<MtbColt> colliToSave = new ArrayList<>();
|
List<MtbColt> colliToSave = new ArrayList<>();
|
||||||
boolean shouldPrint = false;
|
boolean shouldPrint = false;
|
||||||
|
|
||||||
if(!Objects.equals(mtbColt.getNumCollo(), item.getNumColloRif()) ||
|
if (!Objects.equals(mtbColt.getNumCollo(), item.getNumColloRif()) ||
|
||||||
!Objects.equals(mtbColt.getSerCollo(), item.getSerColloRif()) ||
|
!Objects.equals(mtbColt.getSerCollo(), item.getSerColloRif()) ||
|
||||||
!Objects.equals(mtbColt.getDataColloS(), item.getDataColloRif()) ||
|
!Objects.equals(mtbColt.getDataColloS(), item.getDataColloRif()) ||
|
||||||
!Objects.equals(mtbColt.getGestione(), item.getGestioneRif())) {
|
!Objects.equals(mtbColt.getGestione(), item.getGestioneRif())) {
|
||||||
@@ -267,7 +303,7 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
|
|
||||||
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||||
|
|
||||||
if(finalShouldPrint) {
|
if (finalShouldPrint) {
|
||||||
printCollo(finalProgress, value.get(0), () -> {
|
printCollo(finalProgress, value.get(0), () -> {
|
||||||
this.refreshAdapter();
|
this.refreshAdapter();
|
||||||
mOnRecuperoCompleted.run();
|
mOnRecuperoCompleted.run();
|
||||||
@@ -287,7 +323,7 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if(sourceMtbColt != null) saveRunnable.run(sourceMtbColt, false);
|
if (sourceMtbColt != null) saveRunnable.run(sourceMtbColt, false);
|
||||||
else DialogScanOrCreateLU.make(mContext, true, false, saveRunnable).show();
|
else DialogScanOrCreateLU.make(mContext, true, false, saveRunnable).show();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -329,21 +365,18 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
String reportName = ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum());
|
||||||
|
|
||||||
PrinterRESTConsumer.printColloStatic(
|
PrinterRESTConsumer.printColloStatic(
|
||||||
printerName,
|
printerName,
|
||||||
mtbColtToPrint,
|
mtbColtToPrint,
|
||||||
1,
|
1,
|
||||||
reportName, onComplete, onAbort);
|
reportName, onComplete, onAbort);
|
||||||
|
|
||||||
}, onAbort);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void refreshAdapter() {
|
private void refreshAdapter() {
|
||||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
|
|
||||||
@@ -360,5 +393,4 @@ public class ProdRecuperoMaterialeViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class DialogScanLisA {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
|
||||||
@@ -16,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepositor
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
|
||||||
public class OrdineAcquistoPvHelper {
|
public class OrdineAcquistoPvHelper {
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ public class OrdineAcquistoPvHelper {
|
|||||||
|
|
||||||
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
|
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
|
||||||
Ordine ordine = new Ordine();
|
Ordine ordine = new Ordine();
|
||||||
ordine.setDataIns(new Date());
|
ordine.setDataIns(UtilityDate.getDateInstance());
|
||||||
ordine.setIdGriglia(griglia.getGrigliaId());
|
ordine.setIdGriglia(griglia.getGrigliaId());
|
||||||
mOrdineRepository.insert(ordine, id -> {
|
mOrdineRepository.insert(ordine, id -> {
|
||||||
ordine.setOrdineId(id);
|
ordine.setOrdineId(id);
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package it.integry.integrywmsnative.gest.rettifica_giacenze;
|
package it.integry.integrywmsnative.gest.rettifica_giacenze;
|
||||||
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -25,12 +25,12 @@ import it.integry.integrywmsnative.core.model.MtbColr;
|
|||||||
import it.integry.integrywmsnative.core.model.MtbCols;
|
import it.integry.integrywmsnative.core.model.MtbCols;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||||
|
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
@@ -38,7 +38,6 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
|
|||||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer;
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
|
||||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||||
|
|
||||||
@@ -59,6 +58,8 @@ public class RettificaGiacenzeViewModel {
|
|||||||
private String mCurrentCodMdep;
|
private String mCurrentCodMdep;
|
||||||
private boolean mIsCreatedLU;
|
private boolean mIsCreatedLU;
|
||||||
|
|
||||||
|
private boolean mAnyEditDone = false;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public RettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
public RettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
@@ -277,6 +278,14 @@ public class RettificaGiacenzeViewModel {
|
|||||||
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) {
|
||||||
|
dataScad = UtilityDate.getDateInstance();
|
||||||
|
Calendar c = new GregorianCalendar();
|
||||||
|
c.setTime(dataScad);
|
||||||
|
c.add(Calendar.DATE, pickingObjectDTO.getMtbAart().getGgScadPartita());
|
||||||
|
dataScad = c.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
this.sendOnItemDispatched(
|
this.sendOnItemDispatched(
|
||||||
pickingObjectDTO,
|
pickingObjectDTO,
|
||||||
pickingObjectDTO.getMtbAart(),
|
pickingObjectDTO.getMtbAart(),
|
||||||
@@ -317,7 +326,7 @@ public class RettificaGiacenzeViewModel {
|
|||||||
|
|
||||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||||
|
|
||||||
if (!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
// if (!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
||||||
mtbColr
|
mtbColr
|
||||||
.setQtaCol(BigDecimal.ZERO)
|
.setQtaCol(BigDecimal.ZERO)
|
||||||
.setNumCnf(BigDecimal.ZERO)
|
.setNumCnf(BigDecimal.ZERO)
|
||||||
@@ -340,42 +349,46 @@ public class RettificaGiacenzeViewModel {
|
|||||||
|
|
||||||
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||||
|
|
||||||
|
this.mAnyEditDone = true;
|
||||||
|
|
||||||
this.sendOnRowSaved();
|
this.sendOnRowSaved();
|
||||||
this.sendOnLoadingEnded();
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
if (shouldCloseLU) closeLU(false, null);
|
if (shouldCloseLU) closeLU(true, null);
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
} else {
|
// } else {
|
||||||
mtbColr
|
// mtbColr
|
||||||
.setQtaCol(qtaTot)
|
// .setQtaCol(qtaTot)
|
||||||
.setQtaCnf(qtaCnf)
|
// .setQtaCnf(qtaCnf)
|
||||||
.setNumCnf(numCnf);
|
// .setNumCnf(numCnf);
|
||||||
|
//
|
||||||
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
// MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
|
||||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||||
|
//
|
||||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
// cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||||
|
//
|
||||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
// cloneMtbColt.getMtbColr().add(mtbColr);
|
||||||
|
//
|
||||||
mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
|
// mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
|
||||||
mtbColr
|
// mtbColr
|
||||||
.setDataCollo(value.getDataColloS())
|
// .setDataCollo(value.getDataColloS())
|
||||||
.setNumCollo(value.getNumCollo())
|
// .setNumCollo(value.getNumCollo())
|
||||||
.setGestione(value.getGestione())
|
// .setGestione(value.getGestione())
|
||||||
.setSerCollo(value.getSerCollo())
|
// .setSerCollo(value.getSerCollo())
|
||||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
// .setRiga(value.getMtbColr().get(0).getRiga())
|
||||||
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
// .setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
||||||
.setMtbAart(pickingObjectDTO.getMtbAart());
|
// .setMtbAart(pickingObjectDTO.getMtbAart());
|
||||||
|
//
|
||||||
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
// mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||||
|
//
|
||||||
this.sendOnRowSaved();
|
// this.mAnyEditDone = true;
|
||||||
this.sendOnLoadingEnded();
|
//
|
||||||
|
// this.sendOnRowSaved();
|
||||||
if (shouldCloseLU) closeLU(false, null);
|
// this.sendOnLoadingEnded();
|
||||||
}, this::sendError);
|
//
|
||||||
}
|
// if (shouldCloseLU) closeLU(true, null);
|
||||||
|
// }, this::sendError);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -407,9 +420,11 @@ public class RettificaGiacenzeViewModel {
|
|||||||
|
|
||||||
if(shouldChangePosition) {
|
if(shouldChangePosition) {
|
||||||
this.savePosizione(mtbDepoPosizione, () -> {
|
this.savePosizione(mtbDepoPosizione, () -> {
|
||||||
|
this.mAnyEditDone = false;
|
||||||
postSaveBehaviour(onComplete);
|
postSaveBehaviour(onComplete);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
this.mAnyEditDone = false;
|
||||||
postSaveBehaviour(onComplete);
|
postSaveBehaviour(onComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,7 +432,7 @@ public class RettificaGiacenzeViewModel {
|
|||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!UtilityString.isNullOrEmpty(mDefaultCausale) && saveCausale) {
|
if (!UtilityString.isNullOrEmpty(mDefaultCausale) && (saveCausale || mAnyEditDone)) {
|
||||||
this.saveCausaleRettificaGiacenze(saveAction);
|
this.saveCausaleRettificaGiacenze(saveAction);
|
||||||
} else {
|
} else {
|
||||||
saveAction.run();
|
saveAction.run();
|
||||||
@@ -538,7 +553,7 @@ public class RettificaGiacenzeViewModel {
|
|||||||
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
if(!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
// if(!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
||||||
|
|
||||||
this.mColliMagazzinoRESTConsumer.creaRettificaCollo(
|
this.mColliMagazzinoRESTConsumer.creaRettificaCollo(
|
||||||
mtbColrToUpdate,
|
mtbColrToUpdate,
|
||||||
@@ -554,49 +569,53 @@ public class RettificaGiacenzeViewModel {
|
|||||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||||
this.mCurrentMtbColt.getMtbColr().add(mtbColrToUpdate);
|
this.mCurrentMtbColt.getMtbColr().add(mtbColrToUpdate);
|
||||||
|
|
||||||
|
this.mAnyEditDone = true;
|
||||||
|
|
||||||
this.sendOnRowSaved();
|
this.sendOnRowSaved();
|
||||||
},
|
},
|
||||||
this::sendError
|
this::sendError
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
// } else {
|
||||||
|
//
|
||||||
MtbColt mtbColt = new MtbColt()
|
// MtbColt mtbColt = new MtbColt()
|
||||||
.setNumCollo(mtbColrToUpdate.getNumCollo())
|
// .setNumCollo(mtbColrToUpdate.getNumCollo())
|
||||||
.setDataCollo(mtbColrToUpdate.getDataColloS())
|
// .setDataCollo(mtbColrToUpdate.getDataColloS())
|
||||||
.setSerCollo(mtbColrToUpdate.getSerCollo())
|
// .setSerCollo(mtbColrToUpdate.getSerCollo())
|
||||||
.setGestione(mtbColrToUpdate.getGestione())
|
// .setGestione(mtbColrToUpdate.getGestione())
|
||||||
.setMtbColr(new ObservableArrayList<>());
|
// .setMtbColr(new ObservableArrayList<>());
|
||||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
// mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||||
|
//
|
||||||
final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
|
// final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
|
||||||
mtbColr.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
// mtbColr
|
||||||
mtbColr
|
// .setNumCnf(numCnf.subtract(mtbColr.getNumCnf()))
|
||||||
.setNumCnf(numCnf)
|
// .setQtaCnf(qtaCnf)
|
||||||
.setQtaCnf(qtaCnf)
|
// .setQtaCol(qtaTot.subtract(mtbColr.getQtaCol()))
|
||||||
.setQtaCol(qtaTot)
|
// .setPartitaMag(partitaMag)
|
||||||
.setPartitaMag(partitaMag)
|
// .setDataScadPartita(dataScad)
|
||||||
.setDataScadPartita(dataScad)
|
// .setUtente(SettingsManager.i().getUser().getFullname())
|
||||||
.setUtente(SettingsManager.i().getUser().getFullname())
|
// .setCausale(MtbColr.Causale.RETTIFICA)
|
||||||
.setCausale(MtbColr.Causale.RETTIFICA)
|
// .setDatetimeRow(UtilityDate.getDateInstance())
|
||||||
.setDatetimeRow(UtilityDate.getDateInstance());
|
// .setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||||
|
//
|
||||||
mtbColt.getMtbColr().add(mtbColr);
|
// mtbColt.getMtbColr().add(mtbColr);
|
||||||
|
//
|
||||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
// this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||||
|
//
|
||||||
mtbColr.setNumCnf(numCnf)
|
// mtbColr.setNumCnf(numCnf)
|
||||||
.setQtaCnf(qtaCnf)
|
// .setQtaCnf(qtaCnf)
|
||||||
.setQtaCol(qtaTot);
|
// .setQtaCol(qtaTot);
|
||||||
|
//
|
||||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
// this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||||
this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
// this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||||
|
//
|
||||||
this.sendOnRowSaved();
|
// this.mAnyEditDone = true;
|
||||||
this.sendOnLoadingEnded();
|
//
|
||||||
|
// this.sendOnRowSaved();
|
||||||
}, this::sendError);
|
// this.sendOnLoadingEnded();
|
||||||
}
|
//
|
||||||
|
// }, this::sendError);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteRow(MtbColr mtbColrToDelete) {
|
public void deleteRow(MtbColr mtbColrToDelete) {
|
||||||
@@ -604,7 +623,7 @@ public class RettificaGiacenzeViewModel {
|
|||||||
if (shouldDelete) {
|
if (shouldDelete) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
if(!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
// if(!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
|
||||||
this.mColliMagazzinoRESTConsumer.creaRettificaCollo(
|
this.mColliMagazzinoRESTConsumer.creaRettificaCollo(
|
||||||
mtbColrToDelete,
|
mtbColrToDelete,
|
||||||
BigDecimal.ZERO,
|
BigDecimal.ZERO,
|
||||||
@@ -616,28 +635,37 @@ public class RettificaGiacenzeViewModel {
|
|||||||
},
|
},
|
||||||
this::sendError
|
this::sendError
|
||||||
);
|
);
|
||||||
} else {
|
// } else {
|
||||||
MtbColt mtbColt = new MtbColt()
|
// MtbColt mtbColt = new MtbColt()
|
||||||
.setNumCollo(mtbColrToDelete.getNumCollo())
|
// .setNumCollo(mtbColrToDelete.getNumCollo())
|
||||||
.setDataCollo(mtbColrToDelete.getDataColloS())
|
// .setDataCollo(mtbColrToDelete.getDataColloS())
|
||||||
.setSerCollo(mtbColrToDelete.getSerCollo())
|
// .setSerCollo(mtbColrToDelete.getSerCollo())
|
||||||
.setGestione(mtbColrToDelete.getGestione())
|
// .setGestione(mtbColrToDelete.getGestione())
|
||||||
.setMtbColr(new ObservableArrayList<>());
|
// .setMtbColr(new ObservableArrayList<>());
|
||||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
// mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||||
|
//
|
||||||
MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
|
// MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
|
||||||
|
// mtbColr
|
||||||
mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE);
|
// .setNumCnf(mtbColr.getNumCnf().multiply(new BigDecimal(-1)))
|
||||||
mtbColt.getMtbColr().add(mtbColr);
|
// .setQtaCnf(mtbColr.getQtaCnf())
|
||||||
|
// .setQtaCol(mtbColr.getQtaCol().multiply(new BigDecimal(-1)))
|
||||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
// .setPartitaMag(mtbColr.getPartitaMag())
|
||||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
|
// .setDataScadPartita(mtbColr.getDataScadPartitaD())
|
||||||
|
// .setUtente(SettingsManager.i().getUser().getFullname())
|
||||||
this.sendOnRowSaved();
|
// .setCausale(MtbColr.Causale.RETTIFICA)
|
||||||
this.sendOnLoadingEnded();
|
// .setDatetimeRow(UtilityDate.getDateInstance())
|
||||||
|
// .setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||||
}, this::sendError);
|
//
|
||||||
}
|
// mtbColt.getMtbColr().add(mtbColr);
|
||||||
|
//
|
||||||
|
// this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||||
|
// this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
|
||||||
|
//
|
||||||
|
// this.sendOnRowSaved();
|
||||||
|
// this.sendOnLoadingEnded();
|
||||||
|
//
|
||||||
|
// }, this::sendError);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.gest.spedizione;
|
package it.integry.integrywmsnative.gest.spedizione;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -44,6 +45,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||||
import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
|
import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
|
||||||
@@ -82,6 +84,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
||||||
public BindableBoolean noLUPresent = new BindableBoolean(true);
|
public BindableBoolean noLUPresent = new BindableBoolean(true);
|
||||||
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
|
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
|
||||||
|
public BindableBoolean closeOrderButtonEnabled = new BindableBoolean(false);
|
||||||
|
|
||||||
private boolean mEnableGiacenza;
|
private boolean mEnableGiacenza;
|
||||||
private boolean mFlagShowCodForn;
|
private boolean mFlagShowCodForn;
|
||||||
@@ -96,6 +99,21 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
|
|
||||||
private final int PICK_UL_REQUEST = 1;
|
private final int PICK_UL_REQUEST = 1;
|
||||||
|
|
||||||
|
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
|
||||||
|
Intent myIntent = new Intent(context, SpedizioneActivity.class);
|
||||||
|
|
||||||
|
String keyPickingList = DataCache.addItem(ordini);
|
||||||
|
myIntent.putExtra("keyPickingList", keyPickingList);
|
||||||
|
|
||||||
|
String keyTestateOrdini = DataCache.addItem(selectedOrders);
|
||||||
|
myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
|
||||||
|
|
||||||
|
String keyColliRegistrati = DataCache.addItem(mtbColtList);
|
||||||
|
myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
|
||||||
|
|
||||||
|
context.startActivity(myIntent);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -133,6 +151,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
this.initRecyclerView();
|
this.initRecyclerView();
|
||||||
|
|
||||||
|
|
||||||
|
String reportNameSpedizioneChiudiOrdine = SettingsManager.iDB().getReportNameSpedizionChiudiOrdine();
|
||||||
|
closeOrderButtonEnabled.set(!UtilityString.isNullOrEmpty(reportNameSpedizioneChiudiOrdine));
|
||||||
|
|
||||||
|
|
||||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
mEnableGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza();
|
mEnableGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza();
|
||||||
boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV();
|
boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV();
|
||||||
@@ -140,7 +162,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione();
|
boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione();
|
||||||
|
|
||||||
if (mEnableGiacenza) this.openProgress();
|
if (mEnableGiacenza) this.openProgress();
|
||||||
mViewmodel.init(codMdep, mEnableGiacenza, enableCheckPartitaMag, shouldAskPesoLU, canOverflowOrderQuantity, mSitArtOrd, mTestateOrdini, mColliRegistrati);
|
mViewmodel.init(
|
||||||
|
codMdep,
|
||||||
|
mEnableGiacenza,
|
||||||
|
enableCheckPartitaMag,
|
||||||
|
shouldAskPesoLU,
|
||||||
|
canOverflowOrderQuantity,
|
||||||
|
mSitArtOrd,
|
||||||
|
mTestateOrdini,
|
||||||
|
mColliRegistrati,
|
||||||
|
reportNameSpedizioneChiudiOrdine);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -187,9 +218,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter);
|
this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter);
|
||||||
this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this));
|
this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this));
|
||||||
|
|
||||||
spedizioneListAdapter.setOnItemClicked(clickedItem -> {
|
spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt) -> {
|
||||||
if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) {
|
if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) {
|
||||||
this.mViewmodel.dispatchOrdineRow(clickedItem);
|
this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -249,7 +280,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
||||||
|
|
||||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
spedizioneListModel.setUntMis("col");
|
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||||
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
||||||
} else {
|
} else {
|
||||||
@@ -287,7 +318,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||||
|
|
||||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
cloneModel.setUntMis("col");
|
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
|
|
||||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||||
|
|
||||||
@@ -412,7 +443,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
||||||
|
|
||||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
spedizioneListModel.setUntMis("col");
|
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||||
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
||||||
} else {
|
} else {
|
||||||
@@ -450,7 +481,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||||
|
|
||||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||||
cloneModel.setUntMis("col");
|
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||||
|
|
||||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||||
|
|
||||||
@@ -528,7 +559,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
@@ -584,11 +615,17 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
|
|
||||||
ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts();
|
ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts();
|
||||||
|
|
||||||
Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA);
|
Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA, false);
|
||||||
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
|
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void closeOrder() {
|
||||||
|
this.mBindings.spedizioneFab.close(true);
|
||||||
|
|
||||||
|
this.mViewmodel.closeOrder();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadingStarted() {
|
public void onLoadingStarted() {
|
||||||
this.openProgress();
|
this.openProgress();
|
||||||
@@ -603,6 +640,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
public void onLUOpened(MtbColt mtbColt) {
|
public void onLUOpened(MtbColt mtbColt) {
|
||||||
this.addExtraItemsEnabled.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
|
this.addExtraItemsEnabled.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
|
||||||
noLUPresent.set(false);
|
noLUPresent.set(false);
|
||||||
|
closeOrderButtonEnabled.set(false);
|
||||||
|
|
||||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||||
|
|
||||||
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt);
|
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt);
|
||||||
@@ -613,6 +652,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
this.addExtraItemsEnabled.set(false);
|
this.addExtraItemsEnabled.set(false);
|
||||||
noLUPresent.set(true);
|
noLUPresent.set(true);
|
||||||
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
|
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
|
||||||
|
closeOrderButtonEnabled.set(!UtilityString.isNullOrEmpty(SettingsManager.iDB().getReportNameSpedizionChiudiOrdine()));
|
||||||
|
|
||||||
if (this.mShouldCloseActivity) super.onBackPressed();
|
if (this.mShouldCloseActivity) super.onBackPressed();
|
||||||
}
|
}
|
||||||
@@ -719,7 +759,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
|||||||
.setQtaCnfAvailable(qtaCnfAvailable)
|
.setQtaCnfAvailable(qtaCnfAvailable)
|
||||||
.setPartitaMag(partitaMag)
|
.setPartitaMag(partitaMag)
|
||||||
.setDataScad(dataScad)
|
.setDataScad(dataScad)
|
||||||
.setCanOverflowOrderQuantity(canOverflowOrderQuantity);
|
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
||||||
|
.setCanLUBeClosed(true);
|
||||||
|
|
||||||
DialogInputQuantityV2
|
DialogInputQuantityV2
|
||||||
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -91,6 +92,7 @@ public class SpedizioneViewModel {
|
|||||||
private boolean mEnableCheckPartitaMag;
|
private boolean mEnableCheckPartitaMag;
|
||||||
private boolean mCanOverflowOrderQuantity;
|
private boolean mCanOverflowOrderQuantity;
|
||||||
private boolean mShouldAskPesoLU;
|
private boolean mShouldAskPesoLU;
|
||||||
|
private String mReportNameSpedizioneChiudiOrdine;
|
||||||
|
|
||||||
private MtbColt mCurrentMtbColt = null;
|
private MtbColt mCurrentMtbColt = null;
|
||||||
|
|
||||||
@@ -103,12 +105,12 @@ public class SpedizioneViewModel {
|
|||||||
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public SpedizioneViewModel( ArticoloRESTConsumer articoloRESTConsumer,
|
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||||
ColliDataRecoverService colliDataRecoverService,
|
ColliDataRecoverService colliDataRecoverService,
|
||||||
OrdiniRESTConsumer ordiniRESTConsumer,
|
OrdiniRESTConsumer ordiniRESTConsumer,
|
||||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||||
PrinterRESTConsumer printerRESTConsumer) {
|
PrinterRESTConsumer printerRESTConsumer) {
|
||||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
this.mColliDataRecoverService = colliDataRecoverService;
|
this.mColliDataRecoverService = colliDataRecoverService;
|
||||||
@@ -125,7 +127,8 @@ public class SpedizioneViewModel {
|
|||||||
boolean canOverflowOrderQuantity,
|
boolean canOverflowOrderQuantity,
|
||||||
List<SitArtOrdDTO> pickingList,
|
List<SitArtOrdDTO> pickingList,
|
||||||
List<OrdineVenditaInevasoDTO> testateOrdini,
|
List<OrdineVenditaInevasoDTO> testateOrdini,
|
||||||
List<MtbColt> colliRegistrati) {
|
List<MtbColt> colliRegistrati,
|
||||||
|
String reportNameSpedizioneChiudiOrdine) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
this.mDefaultCodMdep = codMdep;
|
this.mDefaultCodMdep = codMdep;
|
||||||
@@ -135,6 +138,7 @@ public class SpedizioneViewModel {
|
|||||||
this.mEnableCheckPartitaMag = enableCheckPartitaMag;
|
this.mEnableCheckPartitaMag = enableCheckPartitaMag;
|
||||||
this.mCanOverflowOrderQuantity = canOverflowOrderQuantity;
|
this.mCanOverflowOrderQuantity = canOverflowOrderQuantity;
|
||||||
this.mShouldAskPesoLU = shouldAskPesoLU;
|
this.mShouldAskPesoLU = shouldAskPesoLU;
|
||||||
|
this.mReportNameSpedizioneChiudiOrdine = reportNameSpedizioneChiudiOrdine;
|
||||||
|
|
||||||
if (enableGiacenza) {
|
if (enableGiacenza) {
|
||||||
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
|
||||||
@@ -298,7 +302,8 @@ public class SpedizioneViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) {
|
private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) {
|
||||||
if (this.mListener != null) mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete);
|
if (this.mListener != null)
|
||||||
|
mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||||
@@ -489,7 +494,7 @@ public class SpedizioneViewModel {
|
|||||||
mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||||
|
|
||||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||||
if(mtbColt.getSegno() != -1) {
|
if (mtbColt.getSegno() != -1) {
|
||||||
searchArtFromUL(mtbColt, onComplete);
|
searchArtFromUL(mtbColt, onComplete);
|
||||||
} else this.sendError(new InvalidLUException());
|
} else this.sendError(new InvalidLUException());
|
||||||
} else {
|
} else {
|
||||||
@@ -587,7 +592,7 @@ public class SpedizioneViewModel {
|
|||||||
if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getSitArtOrdDTO().getCodMart()) &&
|
if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getSitArtOrdDTO().getCodMart()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getSitArtOrdDTO().getCodTagl()) &&
|
UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getSitArtOrdDTO().getCodTagl()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getSitArtOrdDTO().getCodCol()) &&
|
UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getSitArtOrdDTO().getCodCol()) &&
|
||||||
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getSitArtOrdDTO().getPartitaMag()))) {
|
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(pickingObject.getSitArtOrdDTO().getPartitaMag()))) {
|
||||||
|
|
||||||
if (!matchPickingObject.contains(pickingObject)) {
|
if (!matchPickingObject.contains(pickingObject)) {
|
||||||
matchPickingObject.add(pickingObject);
|
matchPickingObject.add(pickingObject);
|
||||||
@@ -606,7 +611,7 @@ public class SpedizioneViewModel {
|
|||||||
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
|
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
|
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
|
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
|
||||||
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()))))
|
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag()))))
|
||||||
.forEach(cloneMtbColrs::remove);
|
.forEach(cloneMtbColrs::remove);
|
||||||
|
|
||||||
cloneMtbColt.setMtbColr(cloneMtbColrs);
|
cloneMtbColt.setMtbColr(cloneMtbColrs);
|
||||||
@@ -647,7 +652,23 @@ public class SpedizioneViewModel {
|
|||||||
if (matchedRows == null || matchedRows.size() == 0) {
|
if (matchedRows == null || matchedRows.size() == 0) {
|
||||||
this.sendError(new NoArtsFoundException());
|
this.sendError(new NoArtsFoundException());
|
||||||
} else if (matchedRows.size() == 1) {
|
} else if (matchedRows.size() == 1) {
|
||||||
this.dispatchOrdineRow(matchedRows.get(0));
|
PickingObjectDTO matchedItem = matchedRows.get(0);
|
||||||
|
|
||||||
|
|
||||||
|
if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() > 1) {
|
||||||
|
|
||||||
|
List<PickingObjectDTO> pickingList = mPickingList.getValue();
|
||||||
|
|
||||||
|
Stream.of(pickingList)
|
||||||
|
.filter(x -> x != matchedItem)
|
||||||
|
.forEach(x -> x.setHidden(true));
|
||||||
|
|
||||||
|
this.sendFilterApplied(null);
|
||||||
|
this.getPickingList().postValue(pickingList);
|
||||||
|
} else {
|
||||||
|
this.dispatchOrdineRow(matchedItem, matchedItem.getRefMtbColt());
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
List<PickingObjectDTO> pickingList = mPickingList.getValue();
|
List<PickingObjectDTO> pickingList = mPickingList.getValue();
|
||||||
|
|
||||||
@@ -664,7 +685,7 @@ public class SpedizioneViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) {
|
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt) {
|
||||||
|
|
||||||
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||||
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||||
@@ -700,27 +721,47 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
|
|
||||||
//TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
|
//TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
|
||||||
MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null &&
|
MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData() != null &&
|
||||||
pickingObjectDTO.getTempPickData().getSourceMtbColt() != null &&
|
pickingObjectDTO.getTempPickData().getSourceMtbColt() != null &&
|
||||||
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null &&
|
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null &&
|
||||||
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ?
|
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ?
|
||||||
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
||||||
|
|
||||||
|
|
||||||
if (mtbColrToDispatch != null) {
|
if (refMtbColt == null && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() == 1) {
|
||||||
if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) {
|
refMtbColt = pickingObjectDTO.getMtbColts().get(0);
|
||||||
numCnfDaPrelevare = mtbColrToDispatch.getNumCnf();
|
}
|
||||||
qtaColDaPrelevare = mtbColrToDispatch.getQtaCol();
|
|
||||||
|
MtbColr refMtbColr = null;
|
||||||
|
|
||||||
|
if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) {
|
||||||
|
Optional<MtbColr> optionalMtbColr = Stream.of(refMtbColt.getMtbColr())
|
||||||
|
.filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) &&
|
||||||
|
UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) &&
|
||||||
|
UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) &&
|
||||||
|
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag())))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
if (optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
MtbColr mtbColrToUse = refMtbColr != null ? refMtbColr : scannedMtbColr;
|
||||||
|
|
||||||
|
if (mtbColrToUse != null) {
|
||||||
|
if (UtilityBigDecimal.equalsOrLowerThan(mtbColrToUse.getQtaCol(), qtaDaEvadere)) {
|
||||||
|
numCnfDaPrelevare = mtbColrToUse.getNumCnf();
|
||||||
|
qtaColDaPrelevare = mtbColrToUse.getQtaCol();
|
||||||
} else {
|
} else {
|
||||||
numCnfDaPrelevare = numCnfDaEvadere;
|
numCnfDaPrelevare = numCnfDaEvadere;
|
||||||
qtaColDaPrelevare = qtaDaEvadere;
|
qtaColDaPrelevare = qtaDaEvadere;
|
||||||
}
|
}
|
||||||
qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf();
|
|
||||||
|
qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf();
|
||||||
|
|
||||||
|
|
||||||
totalQtaAvailable = mtbColrToDispatch.getQtaCol();
|
totalQtaAvailable = mtbColrToUse.getQtaCol();
|
||||||
totalNumCnfAvailable = mtbColrToDispatch.getNumCnf();
|
totalNumCnfAvailable = mtbColrToUse.getNumCnf();
|
||||||
qtaCnfAvailable = mtbColrToDispatch.getQtaCnf();
|
qtaCnfAvailable = mtbColrToUse.getQtaCnf();
|
||||||
|
|
||||||
|
|
||||||
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
|
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
|
||||||
@@ -729,8 +770,8 @@ public class SpedizioneViewModel {
|
|||||||
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
|
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
|
||||||
qtaColDaPrelevare = BigDecimal.ZERO;
|
qtaColDaPrelevare = BigDecimal.ZERO;
|
||||||
|
|
||||||
partitaMag = mtbColrToDispatch.getPartitaMag();
|
partitaMag = scannedMtbColr.getPartitaMag();
|
||||||
dataScad = mtbColrToDispatch.getDataScadPartitaD();
|
dataScad = scannedMtbColr.getDataScadPartitaD();
|
||||||
|
|
||||||
} else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
} else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
||||||
//Oppure le info del barcode scansionato
|
//Oppure le info del barcode scansionato
|
||||||
@@ -744,8 +785,8 @@ public class SpedizioneViewModel {
|
|||||||
if (mtbAart.isFlagQtaCnfFissaBoolean()) {
|
if (mtbAart.isFlagQtaCnfFissaBoolean()) {
|
||||||
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
|
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
|
||||||
|
|
||||||
if(manualPickDTO.isEanPeso()) {
|
if (manualPickDTO.isEanPeso()) {
|
||||||
if(mtbAart.getUntMisRifPeso() == MtbAart.UntMisRifPesoEnum.M) {
|
if (mtbAart.getUntMisRifPeso() == MtbAart.UntMisRifPesoEnum.M) {
|
||||||
if (UtilityBigDecimal.equalsTo(mtbAart.getPesoKg(), BigDecimal.ZERO)) {
|
if (UtilityBigDecimal.equalsTo(mtbAart.getPesoKg(), BigDecimal.ZERO)) {
|
||||||
this.sendError(new InvalidPesoKGException());
|
this.sendError(new InvalidPesoKGException());
|
||||||
} else {
|
} else {
|
||||||
@@ -761,8 +802,9 @@ public class SpedizioneViewModel {
|
|||||||
if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) {
|
if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) {
|
||||||
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
|
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
|
||||||
|
|
||||||
if(!mtbAart.isFlagQtaCnfFissaBoolean()) {
|
if (!mtbAart.isFlagQtaCnfFissaBoolean()) {
|
||||||
if(UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO)) numCnfDaPrelevare = BigDecimal.ONE;
|
if (UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO))
|
||||||
|
numCnfDaPrelevare = BigDecimal.ONE;
|
||||||
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
|
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
|
||||||
}
|
}
|
||||||
} else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) {
|
} else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) {
|
||||||
@@ -776,6 +818,7 @@ public class SpedizioneViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MtbColt finalRefMtbColt = refMtbColt;
|
||||||
this.sendOnItemDispatched(
|
this.sendOnItemDispatched(
|
||||||
pickingObjectDTO,
|
pickingObjectDTO,
|
||||||
pickingObjectDTO.getMtbAart(),
|
pickingObjectDTO.getMtbAart(),
|
||||||
@@ -794,6 +837,7 @@ public class SpedizioneViewModel {
|
|||||||
mCanOverflowOrderQuantity,
|
mCanOverflowOrderQuantity,
|
||||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||||
this.saveNewRow(pickingObjectDTO,
|
this.saveNewRow(pickingObjectDTO,
|
||||||
|
finalRefMtbColt,
|
||||||
pickedQuantityDTO.getNumCnf(),
|
pickedQuantityDTO.getNumCnf(),
|
||||||
pickedQuantityDTO.getQtaCnf(),
|
pickedQuantityDTO.getQtaCnf(),
|
||||||
pickedQuantityDTO.getQtaTot(),
|
pickedQuantityDTO.getQtaTot(),
|
||||||
@@ -853,7 +897,7 @@ public class SpedizioneViewModel {
|
|||||||
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(numCnfDaPrelevare == null && qtaColDaPrelevare == null && initialNumCnf == null && initialQtaTot == null) {
|
if (numCnfDaPrelevare == null && qtaColDaPrelevare == null && initialNumCnf == null && initialQtaTot == null) {
|
||||||
initialNumCnf = BigDecimal.ONE;
|
initialNumCnf = BigDecimal.ONE;
|
||||||
initialQtaCnf = mtbAart.getQtaCnf();
|
initialQtaCnf = mtbAart.getQtaCnf();
|
||||||
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
|
||||||
@@ -880,6 +924,7 @@ public class SpedizioneViewModel {
|
|||||||
mCanOverflowOrderQuantity,
|
mCanOverflowOrderQuantity,
|
||||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||||
this.saveNewRow(pickingObjectDTO,
|
this.saveNewRow(pickingObjectDTO,
|
||||||
|
null,
|
||||||
pickedQuantityDTO.getNumCnf(),
|
pickedQuantityDTO.getNumCnf(),
|
||||||
pickedQuantityDTO.getQtaCnf(),
|
pickedQuantityDTO.getQtaCnf(),
|
||||||
pickedQuantityDTO.getQtaTot(),
|
pickedQuantityDTO.getQtaTot(),
|
||||||
@@ -899,7 +944,7 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
PickingObjectDTO pickingObjectDTO = null;
|
PickingObjectDTO pickingObjectDTO = null;
|
||||||
|
|
||||||
if(optionalPickingObjectDTO.isPresent()) {
|
if (optionalPickingObjectDTO.isPresent()) {
|
||||||
pickingObjectDTO = optionalPickingObjectDTO.get();
|
pickingObjectDTO = optionalPickingObjectDTO.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -915,7 +960,7 @@ public class SpedizioneViewModel {
|
|||||||
BigDecimal qtaDaEvadere = null;
|
BigDecimal qtaDaEvadere = null;
|
||||||
BigDecimal qtaCnfDaEvadere = null;
|
BigDecimal qtaCnfDaEvadere = null;
|
||||||
|
|
||||||
if(finalPickingObjectDTO != null) {
|
if (finalPickingObjectDTO != null) {
|
||||||
totalQtaOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
totalQtaOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||||
totalNumCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
totalNumCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||||
qtaCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd();
|
qtaCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd();
|
||||||
@@ -954,12 +999,14 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
if (mtbColrRifs != null && mtbColrRifs.size() > 0) {
|
if (mtbColrRifs != null && mtbColrRifs.size() > 0) {
|
||||||
//TODO: Da capire se è necessario controllare anche il cod_jcom
|
//TODO: Da capire se è necessario controllare anche il cod_jcom
|
||||||
mtbColrRif = Stream.of(mtbColrRifs)
|
Optional<MtbColr> optionalMtbColr = Stream.of(mtbColrRifs)
|
||||||
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) &&
|
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) &&
|
UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) &&
|
UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) &&
|
||||||
UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag()))
|
UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag()))
|
||||||
.single();
|
.findSingle();
|
||||||
|
|
||||||
|
mtbColrRif = optionalMtbColr.isPresent() ? optionalMtbColr.get() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -969,6 +1016,9 @@ public class SpedizioneViewModel {
|
|||||||
totalNumCnfAvailable = mtbColrRif.getNumCnf();
|
totalNumCnfAvailable = mtbColrRif.getNumCnf();
|
||||||
qtaCnfAvailable = mtbColrRif.getQtaCnf();
|
qtaCnfAvailable = mtbColrRif.getQtaCnf();
|
||||||
|
|
||||||
|
totalNumCnfAvailable = totalNumCnfAvailable.add(mtbColrToEdit.getNumCnf());
|
||||||
|
totalQtaAvailable = totalQtaAvailable.add(mtbColrToEdit.getQtaCol());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
totalQtaAvailable = mtbColrToEdit.getQtaCol();
|
totalQtaAvailable = mtbColrToEdit.getQtaCol();
|
||||||
@@ -977,9 +1027,6 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
totalNumCnfAvailable = totalNumCnfAvailable.add(mtbColrToEdit.getNumCnf());
|
|
||||||
totalQtaAvailable = totalQtaAvailable.add(mtbColrToEdit.getQtaCol());
|
|
||||||
|
|
||||||
|
|
||||||
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
|
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
|
||||||
numCnfDaPrelevare = BigDecimal.ZERO;
|
numCnfDaPrelevare = BigDecimal.ZERO;
|
||||||
@@ -1082,7 +1129,7 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
public void saveNewRow(PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
final MtbColr mtbColr = new MtbColr()
|
final MtbColr mtbColr = new MtbColr()
|
||||||
@@ -1103,7 +1150,8 @@ public class SpedizioneViewModel {
|
|||||||
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
||||||
|
|
||||||
if (mtbColrToDispatch != null) {
|
if (mtbColrToDispatch != null) {
|
||||||
|
if (UtilityString.isNullOrEmpty(mCurrentMtbColt.getCodTcol()))
|
||||||
|
mCurrentMtbColt.setCodTcol(UtilityString.empty2null(pickingObjectDTO.getTempPickData().getSourceMtbColt().getCodTcol()));
|
||||||
|
|
||||||
mtbColr
|
mtbColr
|
||||||
.setCodJcom(UtilityString.empty2null(mtbColrToDispatch.getCodJcom()))
|
.setCodJcom(UtilityString.empty2null(mtbColrToDispatch.getCodJcom()))
|
||||||
@@ -1113,13 +1161,13 @@ public class SpedizioneViewModel {
|
|||||||
.setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS()));
|
.setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS()));
|
||||||
|
|
||||||
|
|
||||||
if(mtbColrToDispatch.getPesoNettoKg() != null) {
|
if (mtbColrToDispatch.getPesoNettoKg() != null) {
|
||||||
//Proporzione
|
//Proporzione
|
||||||
BigDecimal pesoNettoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoNettoKg()), mtbColrToDispatch.getQtaCol());
|
BigDecimal pesoNettoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoNettoKg()), mtbColrToDispatch.getQtaCol());
|
||||||
mtbColr.setPesoNettoKg(pesoNettoKg);
|
mtbColr.setPesoNettoKg(pesoNettoKg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mtbColrToDispatch.getPesoLordoKg() != null) {
|
if (mtbColrToDispatch.getPesoLordoKg() != null) {
|
||||||
//Proporzione
|
//Proporzione
|
||||||
BigDecimal pesoLordoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoLordoKg()), mtbColrToDispatch.getQtaCol());
|
BigDecimal pesoLordoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoLordoKg()), mtbColrToDispatch.getQtaCol());
|
||||||
mtbColr.setPesoLordoKg(pesoLordoKg);
|
mtbColr.setPesoLordoKg(pesoLordoKg);
|
||||||
@@ -1149,14 +1197,10 @@ public class SpedizioneViewModel {
|
|||||||
//Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe)
|
//Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe)
|
||||||
if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
|
if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
|
||||||
shouldPrint = false;
|
shouldPrint = false;
|
||||||
// if(UtilityString.isNullOrEmpty(cloneMtbColt.getCodTcol())) {
|
|
||||||
// cloneMtbColt.setCodTcol(pickingObjectDTO.getSitArtOrdDTO().getCodTcol());
|
|
||||||
// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
|
if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
|
||||||
resetMatchedRows();
|
resetMatchedRows();
|
||||||
this.sendOnLoadingEnded();
|
this.sendOnLoadingEnded();
|
||||||
|
|
||||||
@@ -1176,7 +1220,23 @@ public class SpedizioneViewModel {
|
|||||||
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
|
||||||
.setMtbAart(pickingObjectDTO.getMtbAart());
|
.setMtbAart(pickingObjectDTO.getMtbAart());
|
||||||
|
|
||||||
mtbColr.setRefMtbColr(mtbColrToDispatch);
|
|
||||||
|
if (mEnableGiacenza) {
|
||||||
|
MtbColr refMtbColr = new MtbColr()
|
||||||
|
.setCodMart(mtbColr.getCodMart())
|
||||||
|
.setPartitaMag(mtbColr.getPartitaMag())
|
||||||
|
.setCodTagl(mtbColr.getCodTagl())
|
||||||
|
.setCodCol(mtbColr.getCodCol());
|
||||||
|
|
||||||
|
if(refMtbColt != null) {
|
||||||
|
refMtbColr
|
||||||
|
.setNumCollo(refMtbColt.getNumCollo())
|
||||||
|
.setDataCollo(refMtbColt.getDataColloS())
|
||||||
|
.setSerCollo(refMtbColt.getSerCollo())
|
||||||
|
.setGestione(refMtbColt.getGestione());
|
||||||
|
}
|
||||||
|
mtbColr.setRefMtbColr(refMtbColr);
|
||||||
|
}
|
||||||
|
|
||||||
pickingObjectDTO.getWithdrawMtbColrs().add(mtbColr);
|
pickingObjectDTO.getWithdrawMtbColrs().add(mtbColr);
|
||||||
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||||
@@ -1225,7 +1285,7 @@ public class SpedizioneViewModel {
|
|||||||
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate))
|
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate))
|
||||||
.findSingle();
|
.findSingle();
|
||||||
|
|
||||||
if(pickingObjectDTO.isPresent()) {
|
if (pickingObjectDTO.isPresent()) {
|
||||||
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate);
|
||||||
pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr);
|
pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr);
|
||||||
}
|
}
|
||||||
@@ -1269,7 +1329,7 @@ public class SpedizioneViewModel {
|
|||||||
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete))
|
.filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete))
|
||||||
.findSingle();
|
.findSingle();
|
||||||
|
|
||||||
if(pickingObjectDTO.isPresent()) {
|
if (pickingObjectDTO.isPresent()) {
|
||||||
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete);
|
pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1379,15 +1439,14 @@ public class SpedizioneViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
String reportName = ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum());
|
||||||
|
|
||||||
PrinterRESTConsumer.printColloStatic(
|
this.mPrinterRESTConsumer.printCollo(
|
||||||
printerName,
|
printerName,
|
||||||
mtbColtToPrint,
|
mtbColtToPrint,
|
||||||
1,
|
1,
|
||||||
reportName, onComplete, onFailed);
|
reportName, onComplete, onFailed);
|
||||||
|
|
||||||
}, onFailed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1395,14 +1454,18 @@ public class SpedizioneViewModel {
|
|||||||
this.mCurrentMtbColt = mtbColt;
|
this.mCurrentMtbColt = mtbColt;
|
||||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
||||||
|
|
||||||
|
this.mCurrentMtbColt.generaFiltroOrdineFromDTO(mDefaultFiltroOrdine);
|
||||||
|
|
||||||
this.resetMatchedRows();
|
this.resetMatchedRows();
|
||||||
this.sendLUOpened(this.mCurrentMtbColt);
|
this.sendLUOpened(this.mCurrentMtbColt);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void postCloseOperations(List<MtbColt> mtbColtList) {
|
private void postCloseOperations(List<MtbColt> mtbColtList) {
|
||||||
this.mColliRegistrati.addAll(mtbColtList);
|
Stream.of(mtbColtList)
|
||||||
|
.filter(x -> !this.mColliRegistrati.contains(x))
|
||||||
|
.forEach(x -> this.mColliRegistrati.add(x));
|
||||||
|
|
||||||
for(MtbColt mtbColt : mtbColtList) {
|
for (MtbColt mtbColt : mtbColtList) {
|
||||||
Stream.of(mTestateOrdini)
|
Stream.of(mTestateOrdini)
|
||||||
.filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum())
|
.filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum())
|
||||||
.forEach(x -> x.setExistColloBoolean(true));
|
.forEach(x -> x.setExistColloBoolean(true));
|
||||||
@@ -1436,7 +1499,7 @@ public class SpedizioneViewModel {
|
|||||||
.findFirst();
|
.findFirst();
|
||||||
|
|
||||||
|
|
||||||
if(optionalMtbColrReference.isPresent()) {
|
if (optionalMtbColrReference.isPresent()) {
|
||||||
//looking for real refMtbColr instance
|
//looking for real refMtbColr instance
|
||||||
MtbColr mtbColr = optionalMtbColrReference.get();
|
MtbColr mtbColr = optionalMtbColrReference.get();
|
||||||
|
|
||||||
@@ -1492,6 +1555,56 @@ public class SpedizioneViewModel {
|
|||||||
this.sendFilterRemoved();
|
this.sendFilterRemoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void closeOrder() {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
|
||||||
|
Runnable onComplete = () -> this.sendOnLoadingEnded();
|
||||||
|
|
||||||
|
this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
||||||
|
|
||||||
|
if (printerList == null || printerList.size() == 0) {
|
||||||
|
this.sendError(new NoPrintersFoundException());
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cyclicPrintPackingList(
|
||||||
|
this.mTestateOrdini.iterator(),
|
||||||
|
printerList.get(0),
|
||||||
|
onComplete,
|
||||||
|
ex -> this.sendLUPrintError(ex, onComplete));
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cyclicPrintPackingList(@NotNull Iterator<OrdineVenditaInevasoDTO> sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||||
|
if (sourceTestateOrdineVenditaIterator.hasNext()) {
|
||||||
|
singlePrintPackingList(sourceTestateOrdineVenditaIterator.next(), printerName, () -> {
|
||||||
|
cyclicPrintPackingList(sourceTestateOrdineVenditaIterator, printerName, onComplete, onAbort);
|
||||||
|
}, onAbort);
|
||||||
|
} else {
|
||||||
|
onComplete.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void singlePrintPackingList(OrdineVenditaInevasoDTO ordineVenditaInevasoDTO, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
HashMap<String, Object> params = new HashMap<>();
|
||||||
|
params.put("gestione", ordineVenditaInevasoDTO.getGestione());
|
||||||
|
params.put("num_ord", ordineVenditaInevasoDTO.getNumOrd());
|
||||||
|
params.put("data_ord", UtilityDate.formatDate(ordineVenditaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH));
|
||||||
|
|
||||||
|
this.mPrinterRESTConsumer.printReport(
|
||||||
|
printerName,
|
||||||
|
this.mReportNameSpedizioneChiudiOrdine,
|
||||||
|
params,
|
||||||
|
1,
|
||||||
|
onComplete,
|
||||||
|
onFailed);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public MutableLiveData<List<PickingObjectDTO>> getPickingList() {
|
public MutableLiveData<List<PickingObjectDTO>> getPickingList() {
|
||||||
return mPickingList;
|
return mPickingList;
|
||||||
}
|
}
|
||||||
@@ -1507,15 +1620,12 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
|
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
|
||||||
|
|
||||||
|
|
||||||
void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete);
|
void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete);
|
||||||
|
|
||||||
void onFilterApplied(String newValue);
|
void onFilterApplied(String newValue);
|
||||||
|
|
||||||
void onFilterRemoved();
|
void onFilterRemoved();
|
||||||
|
|
||||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
|
||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
void onItemDispatched(PickingObjectDTO pickingObjectDTO,
|
void onItemDispatched(PickingObjectDTO pickingObjectDTO,
|
||||||
@@ -1536,8 +1646,6 @@ public class SpedizioneViewModel {
|
|||||||
Date dataScad,
|
Date dataScad,
|
||||||
boolean canOverflowOrderQuantity,
|
boolean canOverflowOrderQuantity,
|
||||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
|
||||||
|
|
||||||
void onRowSaved();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ import java.util.List;
|
|||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding;
|
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding;
|
||||||
@@ -29,11 +30,10 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
|||||||
|
|
||||||
public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<SpedizioneListAdapter.SubheaderHolder, SpedizioneListAdapter.SingleItemViewHolder> {
|
public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<SpedizioneListAdapter.SubheaderHolder, SpedizioneListAdapter.SingleItemViewHolder> {
|
||||||
|
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private List<SpedizioneListModel> mDataset = new ArrayList<>();
|
private final List<SpedizioneListModel> mDataset = new ArrayList<>();
|
||||||
|
|
||||||
private RunnableArgs<PickingObjectDTO> mOnItemClicked;
|
private RunnableArgss<PickingObjectDTO, MtbColt> mOnItemClicked;
|
||||||
|
|
||||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOnItemClicked(RunnableArgs<PickingObjectDTO> onItemClicked) {
|
public void setOnItemClicked(RunnableArgss<PickingObjectDTO, MtbColt> onItemClicked) {
|
||||||
this.mOnItemClicked = onItemClicked;
|
this.mOnItemClicked = onItemClicked;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
|
|||||||
|
|
||||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||||
if (this.mOnItemClicked != null)
|
if (this.mOnItemClicked != null)
|
||||||
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel());
|
this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.gest.spedizione.model;
|
package it.integry.integrywmsnative.gest.spedizione.model;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -9,17 +11,32 @@ import it.integry.integrywmsnative.core.model.MtbColt;
|
|||||||
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
||||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||||
|
|
||||||
public class PickingObjectDTO {
|
public class PickingObjectDTO implements Cloneable {
|
||||||
|
|
||||||
private SitArtOrdDTO sitArtOrdDTO;
|
private SitArtOrdDTO sitArtOrdDTO;
|
||||||
private MtbAart mtbAart;
|
private MtbAart mtbAart;
|
||||||
private List<MtbColt> mtbColts;
|
private List<MtbColt> mtbColts;
|
||||||
|
|
||||||
private PickDataDTO tempPickData;
|
private PickDataDTO tempPickData;
|
||||||
|
private MtbColt refMtbColt;
|
||||||
private List<MtbColr> withdrawMtbColrs = new ArrayList<>();
|
private List<MtbColr> withdrawMtbColrs = new ArrayList<>();
|
||||||
|
|
||||||
private boolean hidden = false;
|
private boolean hidden = false;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Object clone() {
|
||||||
|
try {
|
||||||
|
return super.clone();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingObjectDTO cloneObject() {
|
||||||
|
return (PickingObjectDTO) this.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public SitArtOrdDTO getSitArtOrdDTO() {
|
public SitArtOrdDTO getSitArtOrdDTO() {
|
||||||
return sitArtOrdDTO;
|
return sitArtOrdDTO;
|
||||||
@@ -66,6 +83,15 @@ public class PickingObjectDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MtbColt getRefMtbColt() {
|
||||||
|
return refMtbColt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PickingObjectDTO setRefMtbColt(MtbColt refMtbColt) {
|
||||||
|
this.refMtbColt = refMtbColt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public List<MtbColr> getWithdrawMtbColrs() {
|
public List<MtbColr> getWithdrawMtbColrs() {
|
||||||
return withdrawMtbColrs;
|
return withdrawMtbColrs;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import it.integry.integrywmsnative.core.model.DtbDocr;
|
|||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
|
|
||||||
public class UltimeConsegneClienteRESTConsumer {
|
public class UltimeConsegneClienteRESTConsumer {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel;
|
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel;
|
||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
@@ -15,14 +14,14 @@ import java.util.List;
|
|||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
|
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
|
||||||
|
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
|
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
|
||||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
|
||||||
|
|
||||||
public class UltimeConsegneClienteViewModel {
|
public class UltimeConsegneClienteViewModel {
|
||||||
|
|
||||||
@@ -96,9 +95,8 @@ public class UltimeConsegneClienteViewModel {
|
|||||||
currentCodAnagFilter,
|
currentCodAnagFilter,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
365,
|
548,
|
||||||
consegne -> {
|
consegne -> {
|
||||||
|
|
||||||
this.mItems = consegne;
|
this.mItems = consegne;
|
||||||
|
|
||||||
this.initDataAdapter(consegne);
|
this.initDataAdapter(consegne);
|
||||||
@@ -109,7 +107,6 @@ public class UltimeConsegneClienteViewModel {
|
|||||||
mAdapter.updateItems(mRenderedItems);
|
mAdapter.updateItems(mRenderedItems);
|
||||||
|
|
||||||
progressDialog.dismiss();
|
progressDialog.dismiss();
|
||||||
|
|
||||||
}, ex -> {
|
}, ex -> {
|
||||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,40 +1,23 @@
|
|||||||
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
|
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
|
||||||
|
|
||||||
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import com.annimon.stream.Optional;
|
|
||||||
import com.annimon.stream.Stream;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
|
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
|
||||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
|
|
||||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
|
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
|
||||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
|
|
||||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.gest.vendita;
|
|||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
@@ -25,13 +24,11 @@ import java.util.List;
|
|||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||||
import it.integry.integrywmsnative.core.rest.CommonRESTException;
|
import it.integry.integrywmsnative.core.rest.CommonRESTException;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||||
@@ -234,7 +231,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
|
|||||||
+ "<br />" +
|
+ "<br />" +
|
||||||
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
|
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
|
||||||
null,
|
null,
|
||||||
() -> startVenditaActivity(sitArtsDTO, selectedOrders, mtbColtList)
|
() -> SpedizioneActivity.startActivity(getActivity(), sitArtsDTO, selectedOrders, mtbColtList)
|
||||||
).show();
|
).show();
|
||||||
|
|
||||||
}, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress));
|
}, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress));
|
||||||
@@ -350,19 +347,4 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
|
|||||||
onComplete.run();
|
onComplete.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startVenditaActivity(List<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
|
|
||||||
Intent myIntent = new Intent(getActivity(), SpedizioneActivity.class);
|
|
||||||
|
|
||||||
String keyPickingList = DataCache.addItem(ordini);
|
|
||||||
myIntent.putExtra("keyPickingList", keyPickingList);
|
|
||||||
|
|
||||||
String keyTestateOrdini = DataCache.addItem(selectedOrders);
|
|
||||||
myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
|
|
||||||
|
|
||||||
String keyColliRegistrati = DataCache.addItem(mtbColtList);
|
|
||||||
myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
|
|
||||||
|
|
||||||
getActivity().startActivity(myIntent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
package it.integry.integrywmsnative.gest.versamento_merce.viewmodel;
|
package it.integry.integrywmsnative.gest.versamento_merce.viewmodel;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.databinding.ObservableField;
|
import androidx.databinding.ObservableField;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
@@ -43,13 +42,14 @@ import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
|
|||||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
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.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||||
|
|
||||||
public class VersamentoMerceViewModel {
|
public class VersamentoMerceViewModel {
|
||||||
|
|
||||||
|
|
||||||
private Context mContext;
|
private FragmentActivity mContext;
|
||||||
private FragmentMainVersamentoMerceBinding mBinding;
|
private FragmentMainVersamentoMerceBinding mBinding;
|
||||||
private VersamentoMerceHelper mHelper;
|
private VersamentoMerceHelper mHelper;
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ public class VersamentoMerceViewModel {
|
|||||||
|
|
||||||
private Runnable mOnVersamentoCompleted;
|
private Runnable mOnVersamentoCompleted;
|
||||||
|
|
||||||
public void init(Activity context, FragmentMainVersamentoMerceBinding binding, VersamentoMerceHelper helper, Runnable onVersamentoCompleted) {
|
public void init(FragmentActivity context, FragmentMainVersamentoMerceBinding binding, VersamentoMerceHelper helper, Runnable onVersamentoCompleted) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mBinding = binding;
|
mBinding = binding;
|
||||||
mHelper = helper;
|
mHelper = helper;
|
||||||
@@ -137,6 +137,10 @@ public class VersamentoMerceViewModel {
|
|||||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||||
BarcodeManager.enable();
|
BarcodeManager.enable();
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
progressDialog.dismiss();
|
||||||
|
BarcodeManager.enable();
|
||||||
|
showTooMuchULFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
}, ex -> {
|
}, ex -> {
|
||||||
@@ -148,6 +152,12 @@ public class VersamentoMerceViewModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showTooMuchULFound() {
|
||||||
|
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||||
|
new SpannableString(mContext.getResources().getText(R.string.too_much_lu_found_message_in_mono_lu)),
|
||||||
|
null, null).show();
|
||||||
|
}
|
||||||
|
|
||||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
||||||
BarcodeRESTConsumer.decodeEan128Static(barcodeScanDTO, ean128Model -> {
|
BarcodeRESTConsumer.decodeEan128Static(barcodeScanDTO, ean128Model -> {
|
||||||
|
|
||||||
@@ -356,27 +366,65 @@ public class VersamentoMerceViewModel {
|
|||||||
|
|
||||||
|
|
||||||
private void askSingleQuantity(MtbColr mtbColr, RunnableArgs<MtbColr> onComplete, Runnable onAbort) {
|
private void askSingleQuantity(MtbColr mtbColr, RunnableArgs<MtbColr> onComplete, Runnable onAbort) {
|
||||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||||
.setBatchLot(mtbColr.getPartitaMag())
|
|
||||||
.setDataScad(mtbColr.getDataScadPartitaD())
|
|
||||||
.setMtbAart(mtbColr.getMtbAart())
|
.setMtbAart(mtbColr.getMtbAart())
|
||||||
.setQtaTot(mtbColr.getQtaCol())
|
.setInitialNumCnf(mtbColr.getNumCnf())
|
||||||
.setQtaOrd(mtbColr.getQtaCol())
|
.setInitialQtaCnf(mtbColr.getQtaCnf())
|
||||||
.setQtaDaEvadere(new BigDecimal(-1))
|
.setInitialQtaTot(mtbColr.getQtaCol())
|
||||||
.setQtaEvasa(BigDecimal.ZERO)
|
.setTotalQtaAvailable(mtbColr.getQtaCol())
|
||||||
|
.setTotalNumCnfAvailable(mtbColr.getNumCnf())
|
||||||
|
.setQtaCnfAvailable(mtbColr.getQtaCnf())
|
||||||
|
.setPartitaMag(mtbColr.getPartitaMag())
|
||||||
|
.setDataScad(mtbColr.getDataScadPartitaD())
|
||||||
|
.setCanOverflowOrderQuantity(false)
|
||||||
.setCanPartitaMagBeChanged(false)
|
.setCanPartitaMagBeChanged(false)
|
||||||
.setCanDataScadBeChanged(false)
|
.setCanLUBeClosed(false);
|
||||||
.setMaxQta(mtbColr.getQtaCol());
|
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
DialogInputQuantityV2
|
||||||
mtbColr
|
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
|
||||||
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
// PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
|
||||||
.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
|
// .setNumCnf(resultDTO.getNumCnf())
|
||||||
.setNumCnf(quantityDTO.numCnf.getBigDecimal())
|
// .setQtaCnf(resultDTO.getQtaCnf())
|
||||||
.setDatetimeRow(UtilityDate.getDateInstance());
|
// .setQtaTot(resultDTO.getQtaTot())
|
||||||
|
// .setPartitaMag(resultDTO.getPartitaMag())
|
||||||
|
// .setDataScad(resultDTO.getDataScad());
|
||||||
|
//
|
||||||
|
// onComplete.run(pickedQuantityDTO, shouldCloseLU);
|
||||||
|
|
||||||
onComplete.run(mtbColr);
|
mtbColr
|
||||||
}, onAbort).show();
|
.setQtaCol(resultDTO.getQtaTot())
|
||||||
|
.setQtaCnf(resultDTO.getQtaCnf())
|
||||||
|
.setNumCnf(resultDTO.getNumCnf())
|
||||||
|
.setDatetimeRow(UtilityDate.getDateInstance());
|
||||||
|
|
||||||
|
onComplete.run(mtbColr);
|
||||||
|
}, onAbort)
|
||||||
|
.show(mContext.getSupportFragmentManager(), "tag");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||||
|
// .setBatchLot(mtbColr.getPartitaMag())
|
||||||
|
// .setDataScad(mtbColr.getDataScadPartitaD())
|
||||||
|
// .setMtbAart(mtbColr.getMtbAart())
|
||||||
|
// .setQtaTot(mtbColr.getQtaCol())
|
||||||
|
// .setQtaOrd(mtbColr.getQtaCol())
|
||||||
|
// .setQtaDaEvadere(new BigDecimal(-1))
|
||||||
|
// .setQtaEvasa(BigDecimal.ZERO)
|
||||||
|
// .setCanPartitaMagBeChanged(false)
|
||||||
|
// .setCanDataScadBeChanged(false)
|
||||||
|
// .setMaxQta(mtbColr.getQtaCol());
|
||||||
|
//
|
||||||
|
// DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
||||||
|
// mtbColr
|
||||||
|
// .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
||||||
|
// .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
|
||||||
|
// .setNumCnf(quantityDTO.numCnf.getBigDecimal())
|
||||||
|
// .setDatetimeRow(UtilityDate.getDateInstance());
|
||||||
|
//
|
||||||
|
// onComplete.run(mtbColr);
|
||||||
|
// }, onAbort).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -93,12 +93,14 @@ public class SimpleAutoCompleteDropdownAdapter extends ArrayAdapter {
|
|||||||
protected void publishResults(CharSequence constraint,
|
protected void publishResults(CharSequence constraint,
|
||||||
FilterResults results) {
|
FilterResults results) {
|
||||||
// NOTE: this function is *always* called from the UI thread.
|
// NOTE: this function is *always* called from the UI thread.
|
||||||
ArrayList<T> filtered = (ArrayList<T>) results.values;
|
if(constraint != null && constraint.length() > 2) {
|
||||||
notifyDataSetChanged();
|
ArrayList<T> filtered = (ArrayList<T>) results.values;
|
||||||
clear();
|
notifyDataSetChanged();
|
||||||
for (int i = 0, l = filtered.size(); i < l; i++)
|
clear();
|
||||||
add(filtered.get(i));
|
for (int i = 0, l = filtered.size(); i < l; i++)
|
||||||
notifyDataSetInvalidated();
|
add(filtered.get(i));
|
||||||
|
notifyDataSetInvalidated();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.view.bottom_sheet__lu_content;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
@@ -14,6 +15,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||||
import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentBinding;
|
import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentBinding;
|
||||||
import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView;
|
import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView;
|
||||||
@@ -42,6 +44,13 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
|
|||||||
mBinding.bottomSheetMtbColrEdit.setListener(this);
|
mBinding.bottomSheetMtbColrEdit.setListener(this);
|
||||||
mBinding.bottomSheetMtbColrEdit.init(mBinding.bottomSheetMtbColrEdit, mBinding.bottomSheetMtbColrEditBackground);
|
mBinding.bottomSheetMtbColrEdit.init(mBinding.bottomSheetMtbColrEdit, mBinding.bottomSheetMtbColrEditBackground);
|
||||||
|
|
||||||
|
mBinding.titleLayout.setOnClickListener(new OnSingleClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onSingleClick(View v) {
|
||||||
|
toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.initCallbacks();
|
this.initCallbacks();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,6 +101,10 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
|
|||||||
mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size()));
|
mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void collapseMtbColrActionSheet(){
|
||||||
|
this.mBinding.bottomSheetMtbColrEdit.collapse();
|
||||||
|
}
|
||||||
|
|
||||||
public BottomSheetFragmentLUContentView setListener(Listener listener) {
|
public BottomSheetFragmentLUContentView setListener(Listener listener) {
|
||||||
this.mListener = listener;
|
this.mListener = listener;
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.bottomsheet;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.RelativeLayout;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
|
|
||||||
|
|
||||||
|
|
||||||
public class ArticoliInColloBottomSheetHelper extends BottomSheetBehavior.BottomSheetCallback {
|
|
||||||
|
|
||||||
private AppCompatActivity mActivity;
|
|
||||||
private FragmentArticoliInColloBottomSheetBinding mBinding;
|
|
||||||
|
|
||||||
private BottomSheetBehavior mBottomSheetBehavior;
|
|
||||||
|
|
||||||
|
|
||||||
public ArticoliInColloBottomSheetHelper(AppCompatActivity context, FragmentArticoliInColloBottomSheetBinding binding){
|
|
||||||
mActivity = context;
|
|
||||||
mBinding = binding;
|
|
||||||
|
|
||||||
mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.getRoot());
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
mBottomSheetBehavior.setBottomSheetCallback(this);
|
|
||||||
|
|
||||||
mBinding.appbarBottomSheet.setVisibility(View.INVISIBLE);
|
|
||||||
|
|
||||||
mBinding.toolbarBottomSheet.setNavigationIcon(R.drawable.ic_close_24dp);
|
|
||||||
mBinding.toolbarBottomSheet.setNavigationOnClickListener(view -> {
|
|
||||||
if(mBottomSheetBehavior.getState()==BottomSheetBehavior.STATE_EXPANDED) {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
mBinding.tapActionLayout.setOnClickListener(v -> {
|
|
||||||
if(mBottomSheetBehavior.getState()==BottomSheetBehavior.STATE_COLLAPSED) {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
mBinding.articoliInColloCloseCollo.setText(mActivity.getText(R.string.action_close_ul));
|
|
||||||
updateRigheNumber(0);
|
|
||||||
|
|
||||||
mBinding.articoliInColloSheetButton.setOnClickListener(view -> {
|
|
||||||
if (mBottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
|
||||||
} else {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initCollo(MtbColt mtbColt){
|
|
||||||
|
|
||||||
mBinding.articoliInColloTitle.setText(String.format(mActivity.getText(R.string.articoli_in_collo_sheet_title).toString(), mtbColt.getNumCollo()));
|
|
||||||
mBinding.articoliInColloDetailsDate.setText(mtbColt.getDataColloHumanLong());
|
|
||||||
|
|
||||||
|
|
||||||
mBinding.articoliInColloDetailsPosizione.setText(mtbColt.getPosizione() != null ? mtbColt.getPosizione() : "N/A");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateRigheNumber(int newRigheNumber){
|
|
||||||
mBinding.articoliInColloSheetButton.setText(newRigheNumber + " " + mActivity.getResources().getQuantityString(R.plurals.articles, newRigheNumber));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStateChanged(@NonNull View bottomSheet, int newState) {
|
|
||||||
switch (newState) {
|
|
||||||
case BottomSheetBehavior.STATE_HIDDEN:
|
|
||||||
// mRootView.scrollTo(0, 0);
|
|
||||||
break;
|
|
||||||
case BottomSheetBehavior.STATE_EXPANDED:
|
|
||||||
mBinding.appbarBottomSheet.setClickable(true);
|
|
||||||
mBinding.appbarBottomSheet.setFocusable(true);
|
|
||||||
mBinding.tapActionLayout.setClickable(false);
|
|
||||||
mBinding.tapActionLayout.setFocusable(false);
|
|
||||||
break;
|
|
||||||
case BottomSheetBehavior.STATE_COLLAPSED:
|
|
||||||
mBinding.appbarBottomSheet.setVisibility(View.INVISIBLE);
|
|
||||||
mBinding.appbarBottomSheet.setClickable(false);
|
|
||||||
mBinding.appbarBottomSheet.setFocusable(false);
|
|
||||||
mBinding.tapActionLayout.setClickable(true);
|
|
||||||
mBinding.tapActionLayout.setFocusable(true);
|
|
||||||
break;
|
|
||||||
case BottomSheetBehavior.STATE_DRAGGING:
|
|
||||||
mBinding.appbarBottomSheet.setVisibility(View.VISIBLE);
|
|
||||||
// mRootView.scrollTo(0, 0);
|
|
||||||
break;
|
|
||||||
case BottomSheetBehavior.STATE_SETTLING:
|
|
||||||
mBinding.appbarBottomSheet.setVisibility(View.VISIBLE);
|
|
||||||
// mRootView.scrollTo(0, 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isExpanded() {
|
|
||||||
return mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void expand() {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void collapse() {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
|
|
||||||
mBinding.appbarBottomSheet.setAlpha(slideOffset);
|
|
||||||
mBinding.tapActionLayout.setAlpha(1-slideOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.bottomsheet.interfaces;
|
|
||||||
|
|
||||||
public interface IOnColloClosedCallback {
|
|
||||||
|
|
||||||
void onColloClosed(Runnable onComplete, boolean shouldPrint);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.bottomsheet.interfaces;
|
|
||||||
|
|
||||||
public interface IOnSimpleListChangedCallback {
|
|
||||||
|
|
||||||
void onChange();
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.bottomsheet.view;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.BaseAdapter;
|
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import androidx.databinding.ObservableField;
|
|
||||||
import androidx.databinding.ObservableList;
|
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.WeakReferenceOnListChangedCallback;
|
|
||||||
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.UtilityNumber;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetMtbcolrItemBinding;
|
|
||||||
|
|
||||||
public class ArticoliInColloBottomSheetMtbColrAdapter extends BaseAdapter {
|
|
||||||
|
|
||||||
|
|
||||||
private final WeakReferenceOnListChangedCallback onListChangedCallback;
|
|
||||||
private Context mContext;
|
|
||||||
private ObservableField<MtbColt> mtbColt;
|
|
||||||
|
|
||||||
|
|
||||||
public ArticoliInColloBottomSheetMtbColrAdapter(Context context, ObservableField<MtbColt> mtbColt) {
|
|
||||||
super();
|
|
||||||
this.mContext = context;
|
|
||||||
this.mtbColt = mtbColt;
|
|
||||||
this.onListChangedCallback = new WeakReferenceOnListChangedCallback(this);
|
|
||||||
|
|
||||||
this.mtbColt.get().getMtbColr().addOnListChangedCallback(onListChangedCallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public View getView(int position, View convertView, ViewGroup parent) {
|
|
||||||
|
|
||||||
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
|
|
||||||
|
|
||||||
FragmentArticoliInColloBottomSheetMtbcolrItemBinding binding = DataBindingUtil.inflate(inflater, R.layout.fragment_articoli_in_collo_bottom_sheet__mtbcolr_item, parent, false);
|
|
||||||
|
|
||||||
final MtbColr mtbColr = mtbColt.get().getMtbColr().get(position);
|
|
||||||
binding.setMtbColr(mtbColr);
|
|
||||||
|
|
||||||
//Setting qty with unt_mis
|
|
||||||
if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())){
|
|
||||||
String text = UtilityNumber.decimalToString(mtbColr.getQtaCol());
|
|
||||||
|
|
||||||
|
|
||||||
if(mtbColr.getMtbAart() != null) {
|
|
||||||
text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.qtaTextview.setText(text);
|
|
||||||
} else {
|
|
||||||
binding.qtaTextview.setText(UtilityNumber.decimalToString(mtbColr.getNumCnf()) + "\n" + UtilityResources.getString(R.string.unt_mis_col));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
binding.executePendingBindings();
|
|
||||||
|
|
||||||
if(position % 2 == 1) binding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
|
|
||||||
|
|
||||||
return binding.getRoot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getItemId(int position) {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getItem(int position) {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getCount() {
|
|
||||||
if(mtbColt.get() != null && mtbColt.get().getMtbColr() != null) {
|
|
||||||
|
|
||||||
return mtbColt.get().getMtbColr().size();
|
|
||||||
} else return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,247 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.bottomsheet.viewmodel;
|
|
||||||
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
import androidx.databinding.Observable;
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
|
||||||
import androidx.databinding.ObservableField;
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import android.text.SpannableString;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
|
||||||
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.UtilityProgress;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
|
|
||||||
import it.integry.integrywmsnative.view.bottomsheet.ArticoliInColloBottomSheetHelper;
|
|
||||||
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
|
|
||||||
import it.integry.integrywmsnative.view.bottomsheet.view.ArticoliInColloBottomSheetMtbColrAdapter;
|
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
|
||||||
|
|
||||||
public class ArticoliInColloBottomSheetViewModel {
|
|
||||||
|
|
||||||
public ObservableField<MtbColt> mtbColt = new ObservableField<>();
|
|
||||||
|
|
||||||
private Context mContext;
|
|
||||||
private ArticoliInColloBottomSheetHelper mArticoliInColloBottomSheetHelper;
|
|
||||||
|
|
||||||
private IOnColloClosedCallback onCloseColloCallback;
|
|
||||||
|
|
||||||
|
|
||||||
private FragmentArticoliInColloBottomSheetBinding mBindings;
|
|
||||||
|
|
||||||
private BottomSheetBehavior mBottomSheetBehavior;
|
|
||||||
|
|
||||||
private RunnableArgs<MtbColr> mOnItemDeletedCallback;
|
|
||||||
private RunnableArgss<MtbColr, MtbColr> mOnItemEditedCallback;
|
|
||||||
|
|
||||||
|
|
||||||
public ArticoliInColloBottomSheetViewModel(AppCompatActivity context, final FragmentArticoliInColloBottomSheetBinding bindings){
|
|
||||||
mContext = context;
|
|
||||||
mBindings = bindings;
|
|
||||||
mArticoliInColloBottomSheetHelper = new ArticoliInColloBottomSheetHelper(context, mBindings);
|
|
||||||
|
|
||||||
mBindings.setViewModel(this);
|
|
||||||
|
|
||||||
mtbColt.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
|
||||||
@Override
|
|
||||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
|
||||||
|
|
||||||
if(mtbColt.get() != null) {
|
|
||||||
|
|
||||||
mBindings.linearListview.setAdapter(new ArticoliInColloBottomSheetMtbColrAdapter(mContext, mtbColt));
|
|
||||||
|
|
||||||
mBindings.linearListview.setOnItemClickListener((parent, view, position, id) -> {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
|
||||||
|
|
||||||
onItemClicked.run(position);
|
|
||||||
});
|
|
||||||
|
|
||||||
mArticoliInColloBottomSheetHelper.updateRigheNumber(mtbColt.get().getMtbColr().size());
|
|
||||||
mArticoliInColloBottomSheetHelper.initCollo(mtbColt.get());
|
|
||||||
|
|
||||||
mtbColt.get().getMtbColr().addOnListChangedCallback(new SimpleListChangedCallback(() -> {
|
|
||||||
mArticoliInColloBottomSheetHelper.updateRigheNumber(mtbColt.get().getMtbColr().size());
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
initBottomSheetActions();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOnItemEditedCallback(RunnableArgss<MtbColr, MtbColr> onItemEditedCallback) {
|
|
||||||
this.mOnItemEditedCallback = onItemEditedCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOnItemDeletedCallback(RunnableArgs<MtbColr> onItemDeletedCallback) {
|
|
||||||
this.mOnItemDeletedCallback = onItemDeletedCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initBottomSheetActions() {
|
|
||||||
mBindings.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED));
|
|
||||||
|
|
||||||
mBottomSheetBehavior = BottomSheetBehavior.from(mBindings.bottomSheetActions);
|
|
||||||
|
|
||||||
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
|
|
||||||
@Override
|
|
||||||
public void onStateChanged(@NonNull View bottomSheet, int newState) {
|
|
||||||
if (newState == BottomSheetBehavior.STATE_COLLAPSED)
|
|
||||||
mBindings.bg.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
|
|
||||||
mBindings.bg.setVisibility(View.VISIBLE);
|
|
||||||
mBindings.bg.setAlpha(slideOffset);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOnCloseColloCallbackListener(final IOnColloClosedCallback onCloseColloCallback){
|
|
||||||
this.onCloseColloCallback = onCloseColloCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void closeCurrentUL(){
|
|
||||||
closeCurrentUL(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void closeCurrentUL(Runnable onComplete){
|
|
||||||
if(onCloseColloCallback != null) onCloseColloCallback.onColloClosed(onComplete, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isExpanded() {
|
|
||||||
return mArticoliInColloBottomSheetHelper.isExpanded();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void expand() {
|
|
||||||
mArticoliInColloBottomSheetHelper.expand();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void collapse() {
|
|
||||||
mArticoliInColloBottomSheetHelper.collapse();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<Integer> onItemClicked = (position) -> {
|
|
||||||
|
|
||||||
MtbColr clickedItem = mtbColt.get().getMtbColr().get(position);
|
|
||||||
|
|
||||||
mBindings.bottomSheetActionsTitle.setText(clickedItem.getDescrizione());
|
|
||||||
mBindings.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart());
|
|
||||||
|
|
||||||
|
|
||||||
//Setting qty with unt_mis
|
|
||||||
if(clickedItem.getMtbAart() != null) {
|
|
||||||
if (clickedItem.getMtbAart().isFlagQtaCnfFissaBoolean()) {
|
|
||||||
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + (!UtilityString.isNullOrEmpty(clickedItem.getMtbAart().getUntMis()) ? ("" + clickedItem.getMtbAart().getUntMis()) : ""));
|
|
||||||
} else {
|
|
||||||
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getNumCnf()) + " " + mContext.getString(R.string.unt_mis_col));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()));
|
|
||||||
}
|
|
||||||
|
|
||||||
mBindings.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(position));
|
|
||||||
|
|
||||||
mBindings.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(position));
|
|
||||||
};
|
|
||||||
|
|
||||||
private void onItemEdit(int position) {
|
|
||||||
|
|
||||||
MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position);
|
|
||||||
MtbColr cloneItemToEdit = (MtbColr) itemToEdit.clone();
|
|
||||||
|
|
||||||
MtbColr originalItem = (MtbColr) itemToEdit.clone();
|
|
||||||
|
|
||||||
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
|
|
||||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
|
||||||
.setBatchLot(itemToEdit.getPartitaMag())
|
|
||||||
.setQtaDaEvadere(null)
|
|
||||||
.setQtaOrd(null)
|
|
||||||
.setMtbAart(itemToEdit.getMtbAart())
|
|
||||||
.setCanPartitaMagBeChanged(false)
|
|
||||||
.setQtaTot(itemToEdit.getQtaCol())
|
|
||||||
.setMaxQta(itemToEdit.getQtaCol());
|
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
|
||||||
|
|
||||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
|
||||||
|
|
||||||
|
|
||||||
cloneItemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
|
|
||||||
cloneItemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
|
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.updateRigaStatic(cloneItemToEdit, () ->{
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
|
|
||||||
itemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
|
|
||||||
itemToEdit.setNumCnf(quantityDTO.numCnf.getBigDecimal());
|
|
||||||
|
|
||||||
progress.dismiss();
|
|
||||||
mtbColt.get().getMtbColr().set(position, itemToEdit);
|
|
||||||
|
|
||||||
if(mOnItemEditedCallback != null) mOnItemEditedCallback.run(originalItem, itemToEdit);
|
|
||||||
},
|
|
||||||
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
|
||||||
|
|
||||||
}, null).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onItemDelete(int position) {
|
|
||||||
|
|
||||||
|
|
||||||
String text = mContext.getResources().getString(R.string.alert_delete_mtb_colr);
|
|
||||||
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(text), null, () -> {
|
|
||||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
|
||||||
|
|
||||||
MtbColt mtbColtClone = (MtbColt) mtbColt.get().clone();
|
|
||||||
mtbColtClone.setMtbColr(new ObservableArrayList<>());
|
|
||||||
mtbColtClone.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
|
||||||
|
|
||||||
MtbColr itemToDelete = (MtbColr) mtbColt.get().getMtbColr().get(position).clone();
|
|
||||||
itemToDelete.setQtaCol(itemToDelete.getQtaCol().multiply(new BigDecimal(-1)));
|
|
||||||
itemToDelete.setNumCnf(itemToDelete.getNumCnf().multiply(new BigDecimal(-1)));
|
|
||||||
itemToDelete.setRiga(null);
|
|
||||||
itemToDelete.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
|
||||||
|
|
||||||
mtbColtClone.getMtbColr().add(itemToDelete);
|
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, (newMtbColt) -> {
|
|
||||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
|
||||||
|
|
||||||
MtbColr deletedItem = mtbColt.get().getMtbColr().get(position);
|
|
||||||
mtbColt.get().getMtbColr().remove(deletedItem);
|
|
||||||
|
|
||||||
progress.dismiss();
|
|
||||||
|
|
||||||
if(this.mOnItemDeletedCallback != null) this.mOnItemDeletedCallback.run(deletedItem);
|
|
||||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
|
||||||
}, null).show();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.bottomsheet.viewmodel;
|
|
||||||
|
|
||||||
import androidx.databinding.ObservableList;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnSimpleListChangedCallback;
|
|
||||||
|
|
||||||
public class SimpleListChangedCallback extends ObservableList.OnListChangedCallback {
|
|
||||||
|
|
||||||
private IOnSimpleListChangedCallback mOnSimpleListChangedCallback;
|
|
||||||
|
|
||||||
public SimpleListChangedCallback(IOnSimpleListChangedCallback onSimpleListChangedCallback) {
|
|
||||||
mOnSimpleListChangedCallback = onSimpleListChangedCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onChanged(ObservableList sender) {
|
|
||||||
mOnSimpleListChangedCallback.onChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
|
|
||||||
mOnSimpleListChangedCallback.onChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
|
|
||||||
mOnSimpleListChangedCallback.onChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
|
|
||||||
mOnSimpleListChangedCallback.onChange();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
|
|
||||||
mOnSimpleListChangedCallback.onChange();
|
|
||||||
mOnSimpleListChangedCallback.onChange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,6 +16,7 @@ import com.google.android.material.textfield.TextInputLayout;
|
|||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityFocus;
|
import it.integry.integrywmsnative.core.utility.UtilityFocus;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
||||||
|
|
||||||
@@ -55,6 +56,8 @@ public class DialogAskLivelloPosizione {
|
|||||||
mDialog.setCancelable(false);
|
mDialog.setCancelable(false);
|
||||||
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||||
|
|
||||||
|
UtilityDialog.setTo90PercentWidth(mContext, mDialog);
|
||||||
|
|
||||||
mDialog.setOnDismissListener(dialog -> {
|
mDialog.setOnDismissListener(dialog -> {
|
||||||
if(!completedFLow) onComplete.run(null);
|
if(!completedFLow) onComplete.run(null);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,11 +15,13 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||||
import it.integry.integrywmsnative.core.model.VtbDest;
|
import it.integry.integrywmsnative.core.model.VtbDest;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.databinding.DialogAskClienteBinding;
|
import it.integry.integrywmsnative.databinding.DialogAskClienteBinding;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||||
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
|
||||||
|
|
||||||
@@ -32,11 +34,11 @@ public class DialogAskCliente {
|
|||||||
private DialogAskClienteBinding mBinding;
|
private DialogAskClienteBinding mBinding;
|
||||||
|
|
||||||
|
|
||||||
public static Dialog makeBase(final Context context, RunnableArgss<DialogConsts.Results, VtbDest> onComplete) {
|
public static Dialog makeBase(final Context context, RunnableArgsss<DialogConsts.Results, VtbDest, String> onComplete) {
|
||||||
return new DialogAskCliente(context, onComplete).mDialog;
|
return new DialogAskCliente(context, onComplete).mDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogAskCliente(Context context, RunnableArgss<DialogConsts.Results, VtbDest> onComplete) {
|
public DialogAskCliente(Context context, RunnableArgsss<DialogConsts.Results, VtbDest, String> onComplete) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
|
||||||
|
|
||||||
@@ -72,25 +74,33 @@ public class DialogAskCliente {
|
|||||||
|
|
||||||
viewModel1
|
viewModel1
|
||||||
.setOnConfirmClickListener(() -> {
|
.setOnConfirmClickListener(() -> {
|
||||||
|
String codAnag = viewModel1.getCurrentCliente();
|
||||||
|
|
||||||
viewModel2.setCodAnag(viewModel1.getCurrentCliente().getCodAnag());
|
if(UtilityString.isNullOrEmpty(codAnag)) {
|
||||||
|
mDialog.dismiss();
|
||||||
|
onComplete.run(DialogConsts.Results.YES, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModel2.setCodAnag(codAnag);
|
||||||
|
|
||||||
mBinding.viewpager.setCurrentItem(mBinding.viewpager.getCurrentItem() + 1, true);
|
mBinding.viewpager.setCurrentItem(mBinding.viewpager.getCurrentItem() + 1, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
viewModel1.setOnAbortClickListener(() -> {
|
viewModel1.setOnAbortClickListener(() -> {
|
||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
onComplete.run(DialogConsts.Results.ABORT, null);
|
onComplete.run(DialogConsts.Results.ABORT, null, null);
|
||||||
});
|
});
|
||||||
|
|
||||||
viewModel2.setOnConfirmClickListener(() -> {
|
viewModel2.setOnConfirmClickListener(() -> {
|
||||||
onComplete.run(DialogConsts.Results.YES, viewModel2.getCurrentDestinatario().toVtbDestModel());
|
DialogAskClienteDestinatarioDTO cliente = viewModel2.getCurrentDestinatario();
|
||||||
|
|
||||||
|
onComplete.run(DialogConsts.Results.YES, cliente != null ? cliente.toVtbDestModel() : null, viewModel1.getCurrentCommessa());
|
||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
viewModel2.setOnAbortClickListener(() -> {
|
viewModel2.setOnAbortClickListener(() -> {
|
||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
onComplete.run(DialogConsts.Results.ABORT, null);
|
onComplete.run(DialogConsts.Results.ABORT, null, null);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto;
|
package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class DialogAskClienteClienteDTO {
|
public class DialogAskClienteClienteDTO {
|
||||||
|
|
||||||
private String codAnag;
|
private String codAnag;
|
||||||
|
|
||||||
private String ragSoc;
|
private String ragSoc;
|
||||||
|
private ArrayList<String> codJcoms = new ArrayList<>();
|
||||||
|
|
||||||
public String getCodAnag() {
|
public String getCodAnag() {
|
||||||
return codAnag;
|
return codAnag;
|
||||||
@@ -24,6 +26,14 @@ public class DialogAskClienteClienteDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getCodJcoms() {
|
||||||
|
return codJcoms;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogAskClienteClienteDTO setCodJcoms(ArrayList<String> codJcoms) {
|
||||||
|
this.codJcoms = codJcoms;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|||||||
@@ -2,18 +2,33 @@ package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.widget.AutoCompleteTextView;
|
import android.widget.AutoCompleteTextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.databinding.ObservableArrayList;
|
||||||
|
import androidx.databinding.ObservableList;
|
||||||
import androidx.databinding.ViewDataBinding;
|
import androidx.databinding.ViewDataBinding;
|
||||||
|
|
||||||
|
import com.annimon.stream.Optional;
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import com.tfb.fbtoast.FBToast;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.R;
|
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.OnListGeneralChangedCallback;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
|
||||||
import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding;
|
import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
||||||
|
|
||||||
@@ -22,7 +37,10 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private DialogAskClientePage1Binding mBinding;
|
private DialogAskClientePage1Binding mBinding;
|
||||||
|
|
||||||
private List<DialogAskClienteClienteDTO> availableClienti;
|
private int mBarcodeScannerInstanceID;
|
||||||
|
|
||||||
|
private ArrayList<DialogAskClienteClienteDTO> availableClienti;
|
||||||
|
private ObservableArrayList<String> codJcoms = new ObservableArrayList<>();
|
||||||
|
|
||||||
public DialogAskCliente_Page1ViewModel() {
|
public DialogAskCliente_Page1ViewModel() {
|
||||||
|
|
||||||
@@ -41,18 +59,43 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
@Override
|
@Override
|
||||||
public void onShow() {
|
public void onShow() {
|
||||||
|
|
||||||
String sql = "SELECT gtb_anag.cod_anag, rag_soc " +
|
String sql = "SELECT gtb_anag.cod_anag, rag_soc, jtb_comt.cod_jcom " +
|
||||||
"FROM gtb_anag " +
|
"FROM gtb_anag " +
|
||||||
|
"LEFT OUTER JOIN jtb_comt ON gtb_anag.cod_anag = jtb_comt.cod_anag " +
|
||||||
"INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " +
|
"INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " +
|
||||||
"WHERE vtb_clie.flag_stato = 'A' " +
|
"WHERE vtb_clie.flag_stato = 'A' " +
|
||||||
"ORDER BY rag_soc";
|
"ORDER BY rag_soc";
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteClienteDTO>>() {}.getType();
|
Type typeOfObjectsList = new TypeToken<ArrayList<HashMap<String, Object>>>() {
|
||||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteClienteDTO>>() {
|
}.getType();
|
||||||
|
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<HashMap<String, Object>>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ArrayList<DialogAskClienteClienteDTO> value) {
|
public void onSuccess(ArrayList<HashMap<String, Object>> value) {
|
||||||
availableClienti = value;
|
|
||||||
initializeAdapter(value);
|
availableClienti = new ArrayList<>();
|
||||||
|
|
||||||
|
Stream.of(value)
|
||||||
|
.groupBy(x -> x.get("codAnag").toString() + " " + x.get("ragSoc").toString())
|
||||||
|
.forEach(x -> {
|
||||||
|
DialogAskClienteClienteDTO dialogAskClienteClienteDTO = new DialogAskClienteClienteDTO();
|
||||||
|
dialogAskClienteClienteDTO.setCodAnag(UtilityHashMap.getValueIfExists(x.getValue().get(0), "codAnag"));
|
||||||
|
dialogAskClienteClienteDTO.setRagSoc(UtilityHashMap.getValueIfExists(x.getValue().get(0), "ragSoc"));
|
||||||
|
|
||||||
|
for (HashMap<String, Object> group : x.getValue()) {
|
||||||
|
if (group.containsKey("codJcom")) {
|
||||||
|
dialogAskClienteClienteDTO.getCodJcoms().add(UtilityHashMap.getValueIfExists(group, "codJcom"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
availableClienti.add(dialogAskClienteClienteDTO);
|
||||||
|
});
|
||||||
|
|
||||||
|
initializeAdapter(availableClienti);
|
||||||
|
|
||||||
|
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
|
.setOnScanSuccessfull(onScanSuccessful)
|
||||||
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||||
|
BarcodeManager.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -66,9 +109,10 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
@Override
|
@Override
|
||||||
public void setOnConfirmClickListener(Runnable onConfirm) {
|
public void setOnConfirmClickListener(Runnable onConfirm) {
|
||||||
this.mBinding.buttonYes.setOnClickListener(v -> {
|
this.mBinding.buttonYes.setOnClickListener(v -> {
|
||||||
if(validateCliente()) {
|
if (validateCliente()) {
|
||||||
this.resetClienteError();
|
this.resetClienteError();
|
||||||
if(onConfirm != null) onConfirm.run();
|
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
|
||||||
|
if (onConfirm != null) onConfirm.run();
|
||||||
} else {
|
} else {
|
||||||
this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString());
|
this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString());
|
||||||
}
|
}
|
||||||
@@ -76,45 +120,127 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
|
BarcodeManager.disable();
|
||||||
|
|
||||||
|
String barcode = data.getStringValue();
|
||||||
|
|
||||||
|
DialogAskClienteClienteDTO resultCodAnag = searchBarcodeInCodAnag(barcode);
|
||||||
|
|
||||||
|
if (resultCodAnag != null) {
|
||||||
|
mBinding.dropdownCliente.setText(resultCodAnag.toString());
|
||||||
|
refreshCodJcoms(resultCodAnag);
|
||||||
|
} else {
|
||||||
|
DialogAskClienteClienteDTO resultCodJcom = searchBarcodeInCodJcom(barcode);
|
||||||
|
|
||||||
|
if(resultCodJcom != null) {
|
||||||
|
mBinding.dropdownCliente.setText(resultCodJcom.toString());
|
||||||
|
refreshCodJcoms(resultCodJcom);
|
||||||
|
mBinding.dropdownCommessa.setText(barcode);
|
||||||
|
} else {
|
||||||
|
FBToast.errorToast(mContext, "Nessun risultato trovato", Toast.LENGTH_LONG);
|
||||||
|
mBinding.dropdownCliente.setText("");
|
||||||
|
mBinding.dropdownCommessa.setText("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BarcodeManager.enable();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private DialogAskClienteClienteDTO searchBarcodeInCodAnag(String barcode) {
|
||||||
|
List<DialogAskClienteClienteDTO> resultCodAnag = Stream.of(availableClienti)
|
||||||
|
.filter(x -> barcode.equalsIgnoreCase(x.getCodAnag()))
|
||||||
|
.toList();
|
||||||
|
if (resultCodAnag.size() > 0) {
|
||||||
|
return resultCodAnag.get(0);
|
||||||
|
} else return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogAskClienteClienteDTO searchBarcodeInCodJcom(String barcode) {
|
||||||
|
List<DialogAskClienteClienteDTO> resultCodJcom = Stream.of(availableClienti)
|
||||||
|
.filter(x -> x.getCodJcoms().contains(barcode))
|
||||||
|
.toList();
|
||||||
|
if (resultCodJcom.size() > 0) {
|
||||||
|
return resultCodJcom.get(0);
|
||||||
|
} else return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOnAbortClickListener(Runnable onAbort) {
|
public void setOnAbortClickListener(Runnable onAbort) {
|
||||||
this.mBinding.buttonNo.setOnClickListener(v -> {
|
this.mBinding.buttonNo.setOnClickListener(v -> {
|
||||||
if(onAbort != null) onAbort.run();
|
if (onAbort != null) onAbort.run();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void initializeAdapter(ArrayList<DialogAskClienteClienteDTO> items) {
|
private void initializeAdapter(ArrayList<DialogAskClienteClienteDTO> items) {
|
||||||
|
DialogAskCliente_Page1_Cliente_ArrayAdapter adapter = new DialogAskCliente_Page1_Cliente_ArrayAdapter(mContext, items);
|
||||||
|
|
||||||
DialogAskCliente_Page1_ArrayAdapter adapter = new DialogAskCliente_Page1_ArrayAdapter(mContext, items);
|
AutoCompleteTextView editTextDropdownCliente = mBinding.dropdownCliente;
|
||||||
|
editTextDropdownCliente.setThreshold(0);
|
||||||
|
editTextDropdownCliente.setAdapter(adapter);
|
||||||
|
editTextDropdownCliente.setOnItemClickListener((parent, view, position, id) -> {
|
||||||
|
refreshCodJcoms(items.get(position));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown;
|
DialogAskCliente_Page1_Commessa_ArrayAdapter commessaAdapter = new DialogAskCliente_Page1_Commessa_ArrayAdapter(mContext);
|
||||||
editTextFilledExposedDropdown.setThreshold(0);
|
|
||||||
editTextFilledExposedDropdown.setAdapter(adapter);
|
AutoCompleteTextView editTextDropdownCommessa = mBinding.dropdownCommessa;
|
||||||
|
editTextDropdownCommessa.setThreshold(0);
|
||||||
|
editTextDropdownCommessa.setAdapter(commessaAdapter);
|
||||||
|
|
||||||
|
codJcoms.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(ObservableList sender) {
|
||||||
|
commessaAdapter.clear();
|
||||||
|
commessaAdapter.addAll(codJcoms);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshCodJcoms(DialogAskClienteClienteDTO item) {
|
||||||
|
codJcoms.clear();
|
||||||
|
codJcoms.addAll(item.getCodJcoms());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private boolean validateCliente() {
|
private boolean validateCliente() {
|
||||||
return getCurrentCliente() != null;
|
if(SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) {
|
||||||
|
return true;
|
||||||
|
} else return getCurrentCliente() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogAskClienteClienteDTO getCurrentCliente() {
|
public String getCurrentCliente() {
|
||||||
for (DialogAskClienteClienteDTO cliente : availableClienti) {
|
Optional<DialogAskClienteClienteDTO> result = Stream.of(availableClienti)
|
||||||
if(cliente.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString())) {
|
.filter(x -> x.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString()))
|
||||||
return cliente;
|
.findFirst();
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
if(result.isPresent()) return result.get().getCodAnag();
|
||||||
|
else return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCurrentCommessa() {
|
||||||
|
String codAnag = getCurrentCliente();
|
||||||
|
Optional<ArrayList<String>> result = Stream.of(availableClienti)
|
||||||
|
.filter(x -> x.getCodAnag().equalsIgnoreCase(codAnag))
|
||||||
|
.map(DialogAskClienteClienteDTO::getCodJcoms)
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
if(result.isPresent() && Stream.of(result.get()).anyMatch(x -> x.equalsIgnoreCase(mBinding.inputCommessa.getEditText().getText().toString()))) {
|
||||||
|
return mBinding.inputCommessa.getEditText().getText().toString();
|
||||||
|
} else return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void setClienteError(String message){
|
private void setClienteError(String message) {
|
||||||
mBinding.inputCliente.setErrorEnabled(true);
|
mBinding.inputCliente.setErrorEnabled(true);
|
||||||
mBinding.inputCliente.setError(message);
|
mBinding.inputCliente.setError(message);
|
||||||
mBinding.inputCliente.setErrorIconDrawable(null);
|
mBinding.inputCliente.setErrorIconDrawable(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetClienteError() {
|
private void resetClienteError() {
|
||||||
mBinding.inputCliente.setError(null);
|
mBinding.inputCliente.setError(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
|
package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Movie;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -9,7 +8,6 @@ import android.widget.ArrayAdapter;
|
|||||||
import android.widget.Filter;
|
import android.widget.Filter;
|
||||||
import android.widget.Filterable;
|
import android.widget.Filterable;
|
||||||
|
|
||||||
import androidx.annotation.LayoutRes;
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
@@ -20,7 +18,7 @@ import java.util.List;
|
|||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
||||||
|
|
||||||
public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter<DialogAskClienteClienteDTO> implements Filterable {
|
public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<DialogAskClienteClienteDTO> implements Filterable {
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private List<DialogAskClienteClienteDTO> mDataset;
|
private List<DialogAskClienteClienteDTO> mDataset;
|
||||||
@@ -28,7 +26,7 @@ public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter<DialogAskC
|
|||||||
|
|
||||||
private ListFilter listFilter = new ListFilter();
|
private ListFilter listFilter = new ListFilter();
|
||||||
|
|
||||||
public DialogAskCliente_Page1_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteClienteDTO> list) {
|
public DialogAskCliente_Page1_Cliente_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteClienteDTO> list) {
|
||||||
super(context, 0 , list);
|
super(context, 0 , list);
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mDataset = list;
|
mDataset = list;
|
||||||
@@ -43,13 +41,13 @@ public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter<DialogAskC
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(position < mDataset.size()) {
|
if(position < mDataset.size()) {
|
||||||
|
|
||||||
AppCompatTextView textView = listItem.findViewById(R.id.text);
|
AppCompatTextView textView = listItem.findViewById(R.id.text);
|
||||||
|
|
||||||
textView.setText(mDataset.get(position).getRagSoc());
|
textView.setText(mDataset.get(position).getRagSoc());
|
||||||
|
|
||||||
return listItem;
|
return listItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<String> implements Filterable {
|
||||||
|
|
||||||
|
private Context mContext;
|
||||||
|
private List<String> mDataset = new ArrayList<>();
|
||||||
|
private List<String> mDatasetAllItems;
|
||||||
|
|
||||||
|
private DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter listFilter = new DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter();
|
||||||
|
|
||||||
|
public DialogAskCliente_Page1_Commessa_ArrayAdapter(@NonNull Context context) {
|
||||||
|
super(context, 0);
|
||||||
|
mContext = context;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@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.dialog_ask_cliente__dropdown_item, parent, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(position < getCount()) {
|
||||||
|
AppCompatTextView textView = listItem.findViewById(R.id.text);
|
||||||
|
textView.setText(getItem(position));
|
||||||
|
return listItem;
|
||||||
|
}
|
||||||
|
return convertView;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@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<String> matchValues = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String dataItem : mDatasetAllItems) {
|
||||||
|
if (dataItem.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<String>) results.values);
|
||||||
|
} else {
|
||||||
|
mDataset.clear();
|
||||||
|
}
|
||||||
|
if (results.count > 0) {
|
||||||
|
notifyDataSetChanged();
|
||||||
|
} else {
|
||||||
|
notifyDataSetInvalidated();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -24,6 +24,8 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
private DialogAskClientePage2Binding mBinding;
|
private DialogAskClientePage2Binding mBinding;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
|
private Runnable mOnConfirm;
|
||||||
|
|
||||||
private List<DialogAskClienteDestinatarioDTO> availableDestinatari;
|
private List<DialogAskClienteDestinatarioDTO> availableDestinatari;
|
||||||
|
|
||||||
private String mCodAnag;
|
private String mCodAnag;
|
||||||
@@ -44,17 +46,22 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onShow() {
|
public void onShow() {
|
||||||
|
|
||||||
String sql = "SELECT cod_anag, cod_vdes, destinatario, indirizzo, cap, citta, prov, nazione " +
|
String sql = "SELECT cod_anag, cod_vdes, destinatario, indirizzo, cap, citta, prov, nazione " +
|
||||||
"FROM vtb_dest " +
|
"FROM vtb_dest " +
|
||||||
"WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag);
|
"WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag);
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {}.getType();
|
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
||||||
|
}.getType();
|
||||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> value) {
|
public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> value) {
|
||||||
availableDestinatari = value;
|
availableDestinatari = value;
|
||||||
initializeAdapter(value);
|
initializeAdapter(value);
|
||||||
|
|
||||||
|
if(value == null || value.size() == 0) {
|
||||||
|
mOnConfirm.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -66,10 +73,11 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOnConfirmClickListener(Runnable onConfirm) {
|
public void setOnConfirmClickListener(Runnable onConfirm) {
|
||||||
|
this.mOnConfirm = onConfirm;
|
||||||
this.mBinding.buttonYes.setOnClickListener(v -> {
|
this.mBinding.buttonYes.setOnClickListener(v -> {
|
||||||
if(validateDestinatario()) {
|
if (validateDestinatario()) {
|
||||||
this.resetClienteError();
|
this.resetClienteError();
|
||||||
if(onConfirm != null) onConfirm.run();
|
if (onConfirm != null) onConfirm.run();
|
||||||
} else {
|
} else {
|
||||||
this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString());
|
this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString());
|
||||||
}
|
}
|
||||||
@@ -80,7 +88,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
@Override
|
@Override
|
||||||
public void setOnAbortClickListener(Runnable onAbort) {
|
public void setOnAbortClickListener(Runnable onAbort) {
|
||||||
this.mBinding.buttonNo.setOnClickListener(v -> {
|
this.mBinding.buttonNo.setOnClickListener(v -> {
|
||||||
if(onAbort != null) onAbort.run();
|
if (onAbort != null) onAbort.run();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,12 +96,13 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
this.mCodAnag = codAnag;
|
this.mCodAnag = codAnag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void initializeAdapter(ArrayList<DialogAskClienteDestinatarioDTO> items) {
|
private void initializeAdapter(ArrayList<DialogAskClienteDestinatarioDTO> items) {
|
||||||
|
|
||||||
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
|
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
|
||||||
|
|
||||||
|
|
||||||
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown;
|
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.dropdownDestinatario;
|
||||||
editTextFilledExposedDropdown.setThreshold(0);
|
editTextFilledExposedDropdown.setThreshold(0);
|
||||||
editTextFilledExposedDropdown.setAdapter(adapter);
|
editTextFilledExposedDropdown.setAdapter(adapter);
|
||||||
}
|
}
|
||||||
@@ -105,7 +114,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
|
|
||||||
public DialogAskClienteDestinatarioDTO getCurrentDestinatario() {
|
public DialogAskClienteDestinatarioDTO getCurrentDestinatario() {
|
||||||
for (DialogAskClienteDestinatarioDTO destinatarioDTO : availableDestinatari) {
|
for (DialogAskClienteDestinatarioDTO destinatarioDTO : availableDestinatari) {
|
||||||
if(destinatarioDTO.toString().equalsIgnoreCase(mBinding.inputDestinatario.getEditText().getText().toString())) {
|
if (destinatarioDTO.toString().equalsIgnoreCase(mBinding.inputDestinatario.getEditText().getText().toString())) {
|
||||||
return destinatarioDTO;
|
return destinatarioDTO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,11 +123,12 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void setClienteError(String message){
|
private void setClienteError(String message) {
|
||||||
mBinding.inputDestinatario.setErrorEnabled(true);
|
mBinding.inputDestinatario.setErrorEnabled(true);
|
||||||
mBinding.inputDestinatario.setError(message);
|
mBinding.inputDestinatario.setError(message);
|
||||||
mBinding.inputDestinatario.setErrorIconDrawable(null);
|
mBinding.inputDestinatario.setErrorIconDrawable(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetClienteError() {
|
private void resetClienteError() {
|
||||||
mBinding.inputDestinatario.setError(null);
|
mBinding.inputDestinatario.setError(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ public class DialogAskPositionOfLU {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||||
|
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs.base;
|
package it.integry.integrywmsnative.view.dialogs.base;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
@@ -9,22 +8,20 @@ import android.graphics.Color;
|
|||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import androidx.annotation.StringRes;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.appcompat.widget.AppCompatImageView;
|
|
||||||
|
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.text.Spanned;
|
import android.text.Spanned;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.databinding.DialogBaseBinding;
|
import it.integry.integrywmsnative.databinding.DialogBaseBinding;
|
||||||
|
|
||||||
@@ -41,9 +38,11 @@ public class DialogSimpleMessageHelper {
|
|||||||
ERROR(4);
|
ERROR(4);
|
||||||
|
|
||||||
private int value;
|
private int value;
|
||||||
|
|
||||||
TYPE(int value) {
|
TYPE(int value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getValue() {
|
public int getValue() {
|
||||||
return this.value;
|
return this.value;
|
||||||
}
|
}
|
||||||
@@ -56,15 +55,15 @@ public class DialogSimpleMessageHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Dialog makeBase(TYPE type, Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick){
|
private static Dialog makeBase(TYPE type, Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) {
|
||||||
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
|
|
||||||
int colorBackgroundTitle = -1;
|
int colorBackgroundTitle = -1;
|
||||||
Drawable titleIconRes = null;
|
Drawable titleIconRes = null;
|
||||||
|
|
||||||
Dialog dialog = new Dialog(mContext);
|
Dialog dialog = new Dialog(mContext);
|
||||||
|
|
||||||
switch (type){
|
switch (type) {
|
||||||
case INFO:
|
case INFO:
|
||||||
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300);
|
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300);
|
||||||
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_info_78dp);
|
titleIconRes = mContext.getResources().getDrawable(R.drawable.ic_info_78dp);
|
||||||
@@ -91,7 +90,11 @@ public class DialogSimpleMessageHelper {
|
|||||||
viewModel
|
viewModel
|
||||||
.setOnPositive(onPositiveClick)
|
.setOnPositive(onPositiveClick)
|
||||||
.setOnNeutral(onNeutralClick)
|
.setOnNeutral(onNeutralClick)
|
||||||
.setOnNegative(onNegativeClick);
|
.setOnNegative(onNegativeClick)
|
||||||
|
|
||||||
|
.setPositiveButtonText(mContext.getText(R.string.ok).toString())
|
||||||
|
.setNeutralButtonText(rNeutralButtonString != null && rNeutralButtonString != -1 ? mContext.getText(rNeutralButtonString).toString() : null)
|
||||||
|
.setNegativeButtonText(mContext.getText(R.string.no).toString());
|
||||||
|
|
||||||
|
|
||||||
DialogBaseBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_base, null, false);
|
DialogBaseBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_base, null, false);
|
||||||
@@ -99,12 +102,10 @@ public class DialogSimpleMessageHelper {
|
|||||||
mBinding.setViewmodel(viewModel);
|
mBinding.setViewmodel(viewModel);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Rect displayRectangle = new Rect();
|
Rect displayRectangle = new Rect();
|
||||||
Window window = ((Activity) mContext).getWindow();
|
Window window = ((Activity) mContext).getWindow();
|
||||||
window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);
|
window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle);
|
||||||
mBinding.titleContainer.setMinimumWidth((int)(displayRectangle.width() * 0.8f));
|
mBinding.titleContainer.setMinimumWidth((int) (displayRectangle.width() * 0.8f));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Title VIEW
|
//Title VIEW
|
||||||
@@ -120,7 +121,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
|
|
||||||
LinearLayout hashMapContainer = mBinding.dialogContentHashmap;
|
LinearLayout hashMapContainer = mBinding.dialogContentHashmap;
|
||||||
|
|
||||||
if(hashmapContent != null) {
|
if (hashmapContent != null) {
|
||||||
for (int i = 0; i < hashmapContent.keySet().size(); i++) {
|
for (int i = 0; i < hashmapContent.keySet().size(); i++) {
|
||||||
String currentKey = hashmapContent.keySet().toArray()[i].toString();
|
String currentKey = hashmapContent.keySet().toArray()[i].toString();
|
||||||
String currentValue = hashmapContent.get(currentKey);
|
String currentValue = hashmapContent.get(currentKey);
|
||||||
@@ -142,7 +143,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
|
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
|
||||||
return makeBase(TYPE.INFO,
|
return makeBase(TYPE.INFO,
|
||||||
mContext,
|
mContext,
|
||||||
titleText,
|
titleText,
|
||||||
@@ -153,7 +154,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick){
|
public static Dialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) {
|
||||||
return makeBase(TYPE.INFO,
|
return makeBase(TYPE.INFO,
|
||||||
mContext,
|
mContext,
|
||||||
titleText,
|
titleText,
|
||||||
@@ -164,7 +165,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static Dialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
|
public static Dialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
|
||||||
return makeBase(TYPE.SUCCESS,
|
return makeBase(TYPE.SUCCESS,
|
||||||
mContext,
|
mContext,
|
||||||
titleText,
|
titleText,
|
||||||
@@ -175,18 +176,20 @@ public class DialogSimpleMessageHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick){
|
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) {
|
||||||
return makeBase(TYPE.WARNING,
|
return makeBase(TYPE.WARNING,
|
||||||
mContext,
|
mContext,
|
||||||
mContext.getText(R.string.warning).toString(),
|
mContext.getText(R.string.warning).toString(),
|
||||||
messageText,
|
messageText,
|
||||||
hashmapContent,
|
hashmapContent,
|
||||||
onPositiveClick,
|
onPositiveClick,
|
||||||
() -> { if(onNegativeClick != null) onNegativeClick.run(); }, -1, null);
|
() -> {
|
||||||
|
if (onNegativeClick != null) onNegativeClick.run();
|
||||||
|
}, -1, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
|
public static Dialog makeWarningDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
|
||||||
return makeBase(TYPE.WARNING,
|
return makeBase(TYPE.WARNING,
|
||||||
mContext,
|
mContext,
|
||||||
mContext.getText(R.string.warning).toString(),
|
mContext.getText(R.string.warning).toString(),
|
||||||
@@ -196,7 +199,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
null, -1, null);
|
null, -1, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showSimpleWarningDialog(Context context, String message){
|
public static void showSimpleWarningDialog(Context context, String message) {
|
||||||
makeErrorDialog(
|
makeErrorDialog(
|
||||||
context,
|
context,
|
||||||
new SpannableString(message),
|
new SpannableString(message),
|
||||||
@@ -204,7 +207,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
null).show();
|
null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
|
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
|
||||||
|
|
||||||
return makeBase(TYPE.ERROR,
|
return makeBase(TYPE.ERROR,
|
||||||
mContext,
|
mContext,
|
||||||
@@ -215,7 +218,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
null, -1, null);
|
null, -1, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void showSimpleErrorDialog(Context context, String message){
|
public static void showSimpleErrorDialog(Context context, String message) {
|
||||||
makeErrorDialog(
|
makeErrorDialog(
|
||||||
context,
|
context,
|
||||||
new SpannableString(message),
|
new SpannableString(message),
|
||||||
@@ -223,7 +226,7 @@ public class DialogSimpleMessageHelper {
|
|||||||
null).show();
|
null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick){
|
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick) {
|
||||||
|
|
||||||
return makeBase(TYPE.ERROR,
|
return makeBase(TYPE.ERROR,
|
||||||
mContext,
|
mContext,
|
||||||
@@ -236,5 +239,4 @@ public class DialogSimpleMessageHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ public class DialogSimpleMessageViewModel {
|
|||||||
private Runnable onNeutral;
|
private Runnable onNeutral;
|
||||||
private Runnable onNegative;
|
private Runnable onNegative;
|
||||||
|
|
||||||
|
private String positiveButtonText;
|
||||||
|
private String neutralButtonText;
|
||||||
|
private String negativeButtonText;
|
||||||
|
|
||||||
public DialogSimpleMessageViewModel(Dialog dialog) {
|
public DialogSimpleMessageViewModel(Dialog dialog) {
|
||||||
mDialog = dialog;
|
mDialog = dialog;
|
||||||
@@ -46,6 +49,33 @@ public class DialogSimpleMessageViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getPositiveButtonText() {
|
||||||
|
return positiveButtonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSimpleMessageViewModel setPositiveButtonText(String positiveButtonText) {
|
||||||
|
this.positiveButtonText = positiveButtonText;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNeutralButtonText() {
|
||||||
|
return neutralButtonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSimpleMessageViewModel setNeutralButtonText(String neutralButtonText) {
|
||||||
|
this.neutralButtonText = neutralButtonText;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNegativeButtonText() {
|
||||||
|
return negativeButtonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DialogSimpleMessageViewModel setNegativeButtonText(String negativeButtonText) {
|
||||||
|
this.negativeButtonText = negativeButtonText;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public void onPositiveClick() {
|
public void onPositiveClick() {
|
||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
if(onPositive != null) onPositive.run();
|
if(onPositive != null) onPositive.run();
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class DialogChooseArtsFromListaArts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
|
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
|
||||||
|
|||||||
@@ -1,755 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
|
||||||
|
|
||||||
import android.app.DatePickerDialog;
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.ColorStateList;
|
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import androidx.databinding.Observable;
|
|
||||||
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.graphics.drawable.ColorDrawable;
|
|
||||||
import android.os.Handler;
|
|
||||||
import com.google.android.material.textfield.TextInputLayout;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.appcompat.widget.AppCompatTextView;
|
|
||||||
import android.text.Html;
|
|
||||||
import android.text.SpannableString;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.inputmethod.InputMethodManager;
|
|
||||||
import android.widget.EditText;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
|
||||||
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.RunnableArgss;
|
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
|
||||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityArticoloBinding;
|
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
|
||||||
|
|
||||||
public class DialogInputQuantity {
|
|
||||||
|
|
||||||
public static class DTO {
|
|
||||||
private MtbAart mtbAart;
|
|
||||||
private String batchLot;
|
|
||||||
private BigDecimal qtaDaEvadere;
|
|
||||||
private BigDecimal qtaDisponibile;
|
|
||||||
private BigDecimal qtaEvasa;
|
|
||||||
private BigDecimal qtaOrd;
|
|
||||||
private BigDecimal qtaTot;
|
|
||||||
private BigDecimal qtaCnf;
|
|
||||||
private Integer numCnf;
|
|
||||||
private BigDecimal maxQta;
|
|
||||||
private String codArtFor;
|
|
||||||
private Date dataScad;
|
|
||||||
private boolean canPartitaMagBeChanged;
|
|
||||||
private Boolean canDataScadBeChanged;
|
|
||||||
private Boolean shouldAskDataScad;
|
|
||||||
|
|
||||||
public MtbAart getMtbAart() {
|
|
||||||
return mtbAart;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setMtbAart(MtbAart mtbAart) {
|
|
||||||
this.mtbAart = mtbAart;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBatchLot() {
|
|
||||||
return batchLot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setBatchLot(String batchLot) {
|
|
||||||
this.batchLot = batchLot;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getQtaDaEvadere() {
|
|
||||||
return qtaDaEvadere;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setQtaDaEvadere(BigDecimal qtaDaEvadere) {
|
|
||||||
this.qtaDaEvadere = qtaDaEvadere;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getQtaDisponibile() {
|
|
||||||
return qtaDisponibile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setQtaDisponibile(BigDecimal qtaDisponibile) {
|
|
||||||
this.qtaDisponibile = qtaDisponibile;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getQtaOrd() {
|
|
||||||
return qtaOrd;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setQtaOrd(BigDecimal qtaOrd) {
|
|
||||||
this.qtaOrd = qtaOrd;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getQtaTot() {
|
|
||||||
return qtaTot;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setQtaTot(BigDecimal qtaTot) {
|
|
||||||
this.qtaTot = qtaTot;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getQtaCnf() {
|
|
||||||
return qtaCnf;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setQtaCnf(BigDecimal qtaCnf) {
|
|
||||||
this.qtaCnf = qtaCnf;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getNumCnf() {
|
|
||||||
return numCnf;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setNumCnf(Integer numCnf) {
|
|
||||||
this.numCnf = numCnf;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getQtaEvasa() {
|
|
||||||
return qtaEvasa;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setQtaEvasa(BigDecimal qtaEvasa) {
|
|
||||||
this.qtaEvasa = qtaEvasa;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getMaxQta() {
|
|
||||||
return maxQta;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setMaxQta(BigDecimal maxQta) {
|
|
||||||
this.maxQta = maxQta;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCodArtFor() {
|
|
||||||
return codArtFor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setCodArtFor(String codArtFor) {
|
|
||||||
this.codArtFor = codArtFor;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDataScad() {
|
|
||||||
return dataScad;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setDataScad(Date dataScad) {
|
|
||||||
this.dataScad = dataScad;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getCanPartitaMagBeChanged() {
|
|
||||||
return canPartitaMagBeChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setCanPartitaMagBeChanged(boolean canPartitaMagBeChanged) {
|
|
||||||
this.canPartitaMagBeChanged = canPartitaMagBeChanged;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean isCanDataScadBeChanged() {
|
|
||||||
return canDataScadBeChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setCanDataScadBeChanged(boolean canDataScadBeChanged) {
|
|
||||||
this.canDataScadBeChanged = canDataScadBeChanged;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean getShouldAskDataScad() {
|
|
||||||
return shouldAskDataScad;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DTO setShouldAskDataScad(Boolean shouldAskDataScad) {
|
|
||||||
this.shouldAskDataScad = shouldAskDataScad;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private ColorStateList originalColorStateList = null;
|
|
||||||
|
|
||||||
private String scadenzaString = "Scadenza";
|
|
||||||
|
|
||||||
private Dialog currentDialog;
|
|
||||||
private Context currentContext;
|
|
||||||
|
|
||||||
private DialogInputQuantityArticoloBinding currentBinding;
|
|
||||||
|
|
||||||
private MtbAart currentMtbAart;
|
|
||||||
private QuantityDTO currentQuantityDto;
|
|
||||||
private DTO currentDTO;
|
|
||||||
|
|
||||||
public static Dialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final RunnableArgs<QuantityDTO> dialogCallback, final Runnable onAbort) {
|
|
||||||
return new DialogInputQuantity(context, dto, canOverflowQuantity, false, (quantityDto, closeUL) -> {
|
|
||||||
dialogCallback.run(quantityDto);
|
|
||||||
}, onAbort).currentDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Dialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final RunnableArgss<QuantityDTO, Boolean> dialogCallback, final Runnable onAbort) {
|
|
||||||
return new DialogInputQuantity(context, dto, canOverflowQuantity, true, dialogCallback, onAbort).currentDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DialogInputQuantity(@NotNull Context context, @NotNull final DTO dto, boolean canOverflowQuantity, boolean showCloseUL, final RunnableArgss<QuantityDTO, Boolean> dialogCallback, final Runnable onAbort) {
|
|
||||||
currentContext = context;
|
|
||||||
currentMtbAart = dto.getMtbAart();
|
|
||||||
currentDTO = dto;
|
|
||||||
|
|
||||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
|
||||||
currentBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_articolo, null, false);
|
|
||||||
|
|
||||||
final TextInputLayout txlInputBatchLot = currentBinding.inputPartitaMag;
|
|
||||||
|
|
||||||
final TextInputLayout txlInputNumDiCnf = currentBinding.inputNumCnf;
|
|
||||||
final TextInputLayout txlInputQtaPerCnf = currentBinding.inputQtaCnf;
|
|
||||||
final TextInputLayout txlInputQtaTot = currentBinding.inputQtaTot;
|
|
||||||
|
|
||||||
txlInputNumDiCnf.getEditText().setSelectAllOnFocus(true);
|
|
||||||
txlInputQtaPerCnf.getEditText().setSelectAllOnFocus(true);
|
|
||||||
txlInputQtaTot.getEditText().setSelectAllOnFocus(true);
|
|
||||||
|
|
||||||
|
|
||||||
originalColorStateList = txlInputNumDiCnf.getEditText().getTextColors();
|
|
||||||
|
|
||||||
currentQuantityDto = new QuantityDTO();
|
|
||||||
currentQuantityDto.canOverflowQuantity = canOverflowQuantity;
|
|
||||||
|
|
||||||
setupQuantities(dto, currentQuantityDto);
|
|
||||||
|
|
||||||
setupQuantityListener(currentQuantityDto, txlInputNumDiCnf, txlInputQtaPerCnf, txlInputQtaTot);
|
|
||||||
|
|
||||||
currentBinding.setViewmodel(dto);
|
|
||||||
currentBinding.setQuantityViewModel(currentQuantityDto);
|
|
||||||
|
|
||||||
|
|
||||||
currentDialog = new Dialog(context);
|
|
||||||
currentDialog.setContentView(currentBinding.getRoot());
|
|
||||||
|
|
||||||
currentDialog.setCanceledOnTouchOutside(false);
|
|
||||||
currentDialog.setCancelable(false);
|
|
||||||
currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
|
||||||
|
|
||||||
currentDialog.setCanceledOnTouchOutside(false);
|
|
||||||
|
|
||||||
currentDialog.setOnShowListener(dialogInterface -> {
|
|
||||||
|
|
||||||
final Handler handler = new Handler();
|
|
||||||
handler.postDelayed(() -> {
|
|
||||||
EditText editTextToFocus;
|
|
||||||
if(currentQuantityDto.canPartitaMagBeChanged.get()) {
|
|
||||||
editTextToFocus = txlInputBatchLot.getEditText();
|
|
||||||
} else {
|
|
||||||
editTextToFocus = txlInputNumDiCnf.getEditText();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
editTextToFocus.requestFocus();
|
|
||||||
|
|
||||||
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
|
||||||
imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT);
|
|
||||||
|
|
||||||
}, 100);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
currentBinding.saveBtn.setOnClickListener(view -> {
|
|
||||||
onConfirm(context, currentQuantityDto, dialogCallback, false);
|
|
||||||
currentDialog.dismiss();
|
|
||||||
});
|
|
||||||
currentBinding.abortBtn.setOnClickListener(view -> {
|
|
||||||
if(onAbort != null) onAbort.run();
|
|
||||||
currentDialog.dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
currentBinding.closeLuBtn.setVisibility(showCloseUL ? View.VISIBLE : View.INVISIBLE);
|
|
||||||
currentBinding.closeLuBtn.setOnClickListener(view -> {
|
|
||||||
onConfirm(context, currentQuantityDto, dialogCallback, true);
|
|
||||||
currentDialog.dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
initDatePicker(context, currentQuantityDto, currentBinding.getRoot().findViewById(R.id.input_data_scad));
|
|
||||||
|
|
||||||
setupBarcode(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setupQuantities(@NotNull DTO dto, QuantityDTO quantityDTO){
|
|
||||||
if(dto.getQtaTot() != null) quantityDTO.qtaTot.set(dto.getQtaTot().floatValue());
|
|
||||||
if(dto.getMaxQta() != null) quantityDTO.maxQta.set(dto.getMaxQta().floatValue());
|
|
||||||
|
|
||||||
float qtaDisponibile = dto.getQtaDisponibile() != null ? dto.getQtaDisponibile().floatValue() : 0f;
|
|
||||||
if (qtaDisponibile < 0) {
|
|
||||||
currentBinding.layoutQtaDisponibile.setVisibility(View.GONE);
|
|
||||||
qtaDisponibile = 0;
|
|
||||||
}
|
|
||||||
if(qtaDisponibile > 0) quantityDTO.qtaDisponibile.set(qtaDisponibile);
|
|
||||||
|
|
||||||
float qtaDaEvadere = dto.qtaDaEvadere != null ? dto.qtaDaEvadere.floatValue() : 0f;
|
|
||||||
if (qtaDaEvadere < 0) {
|
|
||||||
currentBinding.layoutQtaDaEvadere.setVisibility(View.GONE);
|
|
||||||
qtaDaEvadere = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(qtaDaEvadere > 0) quantityDTO.qtaDaEvadere.set(qtaDaEvadere);
|
|
||||||
quantityDTO.qtaEvasa.set(dto.qtaEvasa != null ? dto.qtaEvasa.floatValue() : null);
|
|
||||||
|
|
||||||
quantityDTO.batchLot.set(dto.batchLot);
|
|
||||||
if(quantityDTO.qtaCnf.get(false) == null) {
|
|
||||||
if(dto.getQtaCnf() != null) {
|
|
||||||
|
|
||||||
quantityDTO.qtaCnf.set(dto.getQtaCnf().floatValue());
|
|
||||||
|
|
||||||
} else if(dto.numCnf != null && dto.qtaTot != null &&
|
|
||||||
dto.numCnf > 0 && dto.qtaTot.compareTo(BigDecimal.ZERO) > 0) {
|
|
||||||
|
|
||||||
quantityDTO.qtaCnfNotificationEnabled = false;
|
|
||||||
quantityDTO.qtaCnf.set(dto.qtaTot.divide(new BigDecimal(dto.numCnf), RoundingMode.HALF_EVEN).floatValue());
|
|
||||||
quantityDTO.qtaCnfNotificationEnabled = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
quantityDTO.qtaCnf.set(dto.mtbAart.getQtaCnf().floatValue());
|
|
||||||
|
|
||||||
if(dto.getMtbAart().isFlagQtaCnfFissaBoolean()) {
|
|
||||||
quantityDTO.blockedQtaPerCnf.set(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(quantityDTO.qtaTot.get(false) == null) {
|
|
||||||
quantityDTO.qtaTot.set(qtaDaEvadere);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dto.getNumCnf() != null) {
|
|
||||||
quantityDTO.numCnf.set(new BigDecimal(dto.getNumCnf()).floatValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
if(quantityDTO.numCnf.get(false) == null) {
|
|
||||||
float numCnf = (float) Math.ceil(UtilityNumber.truncateToDecimal(quantityDTO.qtaTot.get() / quantityDTO.qtaCnf.get(),3));
|
|
||||||
if(numCnf < 1) numCnf = 1;
|
|
||||||
quantityDTO.numCnf.set(numCnf);
|
|
||||||
}
|
|
||||||
|
|
||||||
quantityDTO.canPartitaMagBeChanged.set(dto.getCanPartitaMagBeChanged());
|
|
||||||
|
|
||||||
if(dto.isCanDataScadBeChanged() != null){
|
|
||||||
quantityDTO.canDataScadBeChanged.set(dto.isCanDataScadBeChanged());
|
|
||||||
}
|
|
||||||
|
|
||||||
quantityDTO.shouldAskDataScad.set(dto.mtbAart.isFlagTracciabilitaBoolean() && dto.mtbAart.getGgScadPartita() != null && dto.mtbAart.getGgScadPartita() > 0);
|
|
||||||
|
|
||||||
if(dto.getShouldAskDataScad() != null) {
|
|
||||||
quantityDTO.shouldAskDataScad.set(dto.getShouldAskDataScad());
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dto.getDataScad() != null) {
|
|
||||||
quantityDTO.expireDate = dto.getDataScad();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(quantityDTO.expireDate == null && dto.mtbAart.getGgScadPartita() != null && dto.mtbAart.getGgScadPartita() > 0) {
|
|
||||||
Calendar c = UtilityDate.getCalendarInstance();
|
|
||||||
c.add(Calendar.DATE, dto.mtbAart.getGgScadPartita()); // number of days to add
|
|
||||||
|
|
||||||
quantityDTO.expireDate = c.getTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshQtaDescriptionText();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void setupBarcode(Context context) {
|
|
||||||
|
|
||||||
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
|
||||||
.setOnScanSuccessfull(onScanSuccessfull)
|
|
||||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
|
|
||||||
|
|
||||||
currentDialog.setOnDismissListener(dialog -> {
|
|
||||||
BarcodeManager.removeCallback(barcodeIstanceID);
|
|
||||||
});
|
|
||||||
|
|
||||||
BarcodeManager.enable();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
|
||||||
BarcodeManager.disable();
|
|
||||||
|
|
||||||
if(UtilityBarcode.isEanPeso(data)){
|
|
||||||
|
|
||||||
try {
|
|
||||||
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(data.getStringValue());
|
|
||||||
|
|
||||||
if(ean13PesoModel.getPrecode().contains(currentMtbAart.getBarCode())) {
|
|
||||||
|
|
||||||
currentQuantityDto.numCnf.set(1f);
|
|
||||||
currentQuantityDto.qtaCnf.set(ean13PesoModel.getPeso());
|
|
||||||
currentQuantityDto.qtaTot.set(ean13PesoModel.getPeso());
|
|
||||||
|
|
||||||
BarcodeManager.enable();
|
|
||||||
} else {
|
|
||||||
BarcodeManager.enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
UtilityLogger.errorMe(e);
|
|
||||||
BarcodeManager.enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if(UtilityBarcode.isEtichetta128(data)){
|
|
||||||
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
|
|
||||||
|
|
||||||
BarcodeRESTConsumer.decodeEan128Static(data, ean128Model -> {
|
|
||||||
progressDialog.dismiss();
|
|
||||||
BarcodeManager.enable();
|
|
||||||
|
|
||||||
if(ean128Model != null){
|
|
||||||
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
|
||||||
currentQuantityDto.batchLot.set(ean128Model.BatchLot);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
|
|
||||||
currentQuantityDto.expireDate = UtilityDate.recognizeDate(ean128Model.BestBefore);
|
|
||||||
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
|
||||||
currentQuantityDto.expireDate = UtilityDate.recognizeDate(ean128Model.Expiry);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(currentQuantityDto.expireDate != null) {
|
|
||||||
currentQuantityDto.expireDateString.set(UtilityDate.formatDate(currentQuantityDto.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
UtilityLogger.errorMe(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(ean128Model.Count != null && ean128Model.Count > 0) {
|
|
||||||
currentQuantityDto.numCnf.set((float) ean128Model.Count);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
|
||||||
currentQuantityDto.qtaTot.set(ean128Model.NetWeightKg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(currentQuantityDto.qtaTot.get() > 0 && currentQuantityDto.numCnf.get() > 0) {
|
|
||||||
currentQuantityDto.qtaCnf.set(currentQuantityDto.qtaTot.get() / currentQuantityDto.numCnf.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}, ex -> {
|
|
||||||
UtilityExceptions.defaultException(currentContext, ex, progressDialog);
|
|
||||||
|
|
||||||
BarcodeManager.enable();
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
BarcodeManager.enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
private void setupQuantityListener(final QuantityDTO quantityDTO, final TextInputLayout txlInputNumDiCnf, final TextInputLayout txlInputQtaPerCnf, final TextInputLayout txlInputQtaTot) {
|
|
||||||
|
|
||||||
quantityDTO.numCnf.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
|
||||||
@Override
|
|
||||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
|
||||||
|
|
||||||
if(quantityDTO.numCnfNotificationEnabled) {
|
|
||||||
|
|
||||||
quantityDTO.blockedNumDiCnf.set(!(quantityDTO.numCnf.get(true) == 0 || quantityDTO.numCnf.get().toString().equals("")));
|
|
||||||
|
|
||||||
toggleTextInputLayoutError(txlInputNumDiCnf, quantityDTO.blockedNumDiCnf.get());
|
|
||||||
|
|
||||||
if (!quantityDTO.blockedQtaTot.get()) {
|
|
||||||
|
|
||||||
quantityDTO.qtaTotNotificationEnabled = false;
|
|
||||||
quantityDTO.qtaTot.set((float) Math.round(quantityDTO.qtaCnf.get(true) * quantityDTO.numCnf.get(true) * 1000) / 1000);
|
|
||||||
quantityDTO.qtaTotNotificationEnabled = true;
|
|
||||||
|
|
||||||
|
|
||||||
} else if (!quantityDTO.blockedQtaPerCnf.get()) {
|
|
||||||
|
|
||||||
quantityDTO.qtaCnfNotificationEnabled = false;
|
|
||||||
if(quantityDTO.numCnf.get(true) != 0) {
|
|
||||||
quantityDTO.qtaCnf.set((float) Math.round(quantityDTO.qtaTot.get(true) / quantityDTO.numCnf.get(true) * 1000) / 1000);
|
|
||||||
} else {
|
|
||||||
quantityDTO.qtaCnf.set((float) Math.round(quantityDTO.qtaTot.get(true) / 1 * 1000) / 1000);
|
|
||||||
}
|
|
||||||
quantityDTO.qtaCnfNotificationEnabled = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Log.e("DialogInputQuantity", "Tutti i campi sono bloccati, non è possibile modificare il numero di confezioni");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// refreshQtaDescriptionText();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
quantityDTO.qtaCnf.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
|
||||||
@Override
|
|
||||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
|
||||||
|
|
||||||
if(quantityDTO.qtaCnfNotificationEnabled) {
|
|
||||||
|
|
||||||
quantityDTO.blockedQtaPerCnf.set(!(quantityDTO.qtaCnf.get(true) == 0 || quantityDTO.qtaCnf.get().toString().equals("")));
|
|
||||||
|
|
||||||
toggleTextInputLayoutError(txlInputQtaPerCnf, quantityDTO.blockedQtaPerCnf.get());
|
|
||||||
|
|
||||||
if (!quantityDTO.blockedQtaTot.get()) {
|
|
||||||
|
|
||||||
quantityDTO.qtaTotNotificationEnabled = false;
|
|
||||||
float qtaTot = (float) Math.round(quantityDTO.qtaCnf.get(true) * quantityDTO.numCnf.get(true) * 1000) / 1000;
|
|
||||||
if(qtaTot > quantityDTO.maxQta.get() && !quantityDTO.canOverflowQuantity) qtaTot = quantityDTO.maxQta.get();
|
|
||||||
quantityDTO.qtaTot.set(qtaTot);
|
|
||||||
quantityDTO.qtaTotNotificationEnabled = true;
|
|
||||||
|
|
||||||
} else if (!quantityDTO.blockedNumDiCnf.get()) {
|
|
||||||
|
|
||||||
quantityDTO.numCnfNotificationEnabled = false;
|
|
||||||
if(quantityDTO.qtaCnf.get(true) != 0){
|
|
||||||
quantityDTO.numCnf.set((float) Math.ceil(quantityDTO.qtaTot.get(true) / quantityDTO.qtaCnf.get(true)));
|
|
||||||
} else {
|
|
||||||
quantityDTO.numCnf.set((float) Math.ceil(quantityDTO.qtaTot.get(true)));
|
|
||||||
}
|
|
||||||
|
|
||||||
quantityDTO.numCnfNotificationEnabled = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Log.e("DialogInputQuantity", "Tutti i campi sono bloccati, non è possibile modificare la quantità per confezione");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// refreshQtaDescriptionText();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
quantityDTO.qtaTot.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
|
||||||
@Override
|
|
||||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
|
||||||
|
|
||||||
if (quantityDTO.qtaTotNotificationEnabled) {
|
|
||||||
|
|
||||||
quantityDTO.blockedQtaTot.set(!(quantityDTO.qtaTot.get(true) == 0 || quantityDTO.qtaTot.get().toString().equals("")));
|
|
||||||
|
|
||||||
toggleTextInputLayoutError(txlInputQtaTot, quantityDTO.blockedQtaTot.get());
|
|
||||||
|
|
||||||
if(!quantityDTO.blockedQtaPerCnf.get()){
|
|
||||||
|
|
||||||
quantityDTO.qtaCnfNotificationEnabled = false;
|
|
||||||
quantityDTO.qtaCnf.set((float) Math.round(quantityDTO.qtaTot.get(true) / quantityDTO.numCnf.get(true) *1000)/1000);
|
|
||||||
quantityDTO.qtaCnfNotificationEnabled = true;
|
|
||||||
|
|
||||||
} else if(!quantityDTO.blockedNumDiCnf.get()) {
|
|
||||||
|
|
||||||
quantityDTO.numCnfNotificationEnabled = false;
|
|
||||||
quantityDTO.numCnf.set((float) Math.ceil(quantityDTO.qtaTot.get(true) / quantityDTO.qtaCnf.get(true)));
|
|
||||||
quantityDTO.numCnfNotificationEnabled = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Log.e("DialogInputQuantity", "Tutti i campi sono bloccati, non è possibile modificare la quantità totale");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// refreshQtaDescriptionText();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void toggleTextInputLayoutError(TextInputLayout textInputLayout, boolean isError) {
|
|
||||||
if(isError){
|
|
||||||
textInputLayout.setErrorEnabled(true);
|
|
||||||
textInputLayout.setError(" ");
|
|
||||||
textInputLayout.getEditText().setTextColor(ContextCompat.getColor(currentContext, R.color.red_600));
|
|
||||||
textInputLayout.setHintTextAppearance(R.style.ErrorFloatingLabel);
|
|
||||||
textInputLayout.setErrorIconDrawable(null);
|
|
||||||
|
|
||||||
if (textInputLayout.getChildCount() == 2) {
|
|
||||||
textInputLayout.getChildAt(1).setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
textInputLayout.setErrorEnabled(false);
|
|
||||||
textInputLayout.setError(null);
|
|
||||||
textInputLayout.getEditText().setTextColor(originalColorStateList);
|
|
||||||
textInputLayout.setHintTextAppearance(R.style.NormalFloatingLabel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initDatePicker(Context context, QuantityDTO quantityDTO, AppCompatTextView textInputLayout) {
|
|
||||||
quantityDTO.expireDateString.set(scadenzaString);
|
|
||||||
|
|
||||||
if(quantityDTO.expireDate != null) {
|
|
||||||
quantityDTO.expireDateString.set(UtilityDate.formatDate(quantityDTO.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Runnable onTextClicked = () -> {
|
|
||||||
// Get Current Date
|
|
||||||
Calendar c = UtilityDate.getCalendarInstance();
|
|
||||||
|
|
||||||
if(quantityDTO.expireDate != null) {
|
|
||||||
c.setTime(quantityDTO.expireDate);
|
|
||||||
}
|
|
||||||
|
|
||||||
int mYear = c.get(Calendar.YEAR);
|
|
||||||
int mMonth = c.get(Calendar.MONTH);
|
|
||||||
int mDay = c.get(Calendar.DAY_OF_MONTH);
|
|
||||||
|
|
||||||
DatePickerDialog datePickerDialog = new DatePickerDialog(context,
|
|
||||||
(view, year, month, day) -> {
|
|
||||||
|
|
||||||
quantityDTO.expireDate = new GregorianCalendar(year, month, day).getTime();
|
|
||||||
quantityDTO.expireDateString.set(UtilityDate.formatDate(quantityDTO.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
|
||||||
|
|
||||||
}, mYear, mMonth, mDay);
|
|
||||||
datePickerDialog.show();
|
|
||||||
};
|
|
||||||
|
|
||||||
textInputLayout.setOnClickListener(v -> onTextClicked.run());
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void refreshQtaDescriptionText() {
|
|
||||||
|
|
||||||
int numConf = (int) (currentQuantityDto.qtaDaEvadere.get() / currentQuantityDto.qtaCnf.get());
|
|
||||||
float qtaTot = currentQuantityDto.qtaDaEvadere.get();
|
|
||||||
|
|
||||||
float mod = qtaTot % numConf;
|
|
||||||
|
|
||||||
String text = "";
|
|
||||||
|
|
||||||
if(numConf > 0) {
|
|
||||||
text += "<b>" + numConf + " " + currentContext.getResources().getQuantityString(R.plurals.item_package, numConf).toUpperCase() + "</b>";
|
|
||||||
}
|
|
||||||
if(numConf > 0 && mod > 0) {
|
|
||||||
text += " e ";
|
|
||||||
}
|
|
||||||
if(mod > 0) {
|
|
||||||
|
|
||||||
text += "<b>" + UtilityNumber.decimalToString(mod) + " ";
|
|
||||||
if(mod == 1) {
|
|
||||||
text += currentContext.getResources().getQuantityString(R.plurals.pieces, (int) mod).toUpperCase();
|
|
||||||
} else {
|
|
||||||
text += currentContext.getString(R.string.piece).toUpperCase();
|
|
||||||
}
|
|
||||||
|
|
||||||
text += "</b>";
|
|
||||||
}
|
|
||||||
|
|
||||||
currentBinding.qtaDescriptionText.setText(Html.fromHtml(text));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void onConfirm(Context context, QuantityDTO quantityDTO, RunnableArgss<QuantityDTO, Boolean> dialogCallback, boolean closeUL){
|
|
||||||
if(currentDTO.mtbAart.isFlagTracciabilitaBoolean() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
|
|
||||||
|
|
||||||
showBatchLotErrorPrompt(context);
|
|
||||||
|
|
||||||
} else if(quantityDTO.shouldAskDataScad.get() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
|
|
||||||
|
|
||||||
showBatchLotErrorPrompt(context);
|
|
||||||
|
|
||||||
} else if(quantityDTO.shouldAskDataScad.get() && quantityDTO.expireDate == null){
|
|
||||||
|
|
||||||
showExpireDateErrorPrompt(context);
|
|
||||||
|
|
||||||
} else if(!quantityDTO.canOverflowQuantity && quantityDTO.qtaTot.get() > quantityDTO.maxQta.get()) {
|
|
||||||
|
|
||||||
showQuantityOverflowErrorPrompt(context);
|
|
||||||
|
|
||||||
} else if(quantityDTO.qtaCnf.get() <= 0 || quantityDTO.numCnf.get() <= 0 || quantityDTO.qtaTot.get() <= 0) {
|
|
||||||
|
|
||||||
showQuantityErrorDialog(context);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if(quantityDTO.batchLot != null && !quantityDTO.batchLot.isEmpty()) {
|
|
||||||
quantityDTO.batchLot.set(quantityDTO.batchLot.get().toUpperCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
dialogCallback.run(quantityDTO, closeUL);
|
|
||||||
currentDialog.dismiss();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void showQuantityErrorDialog(Context mContext){
|
|
||||||
|
|
||||||
String errorMessage = mContext.getText(R.string.wrong_quantity_input_message).toString();
|
|
||||||
|
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void showQuantityOverflowErrorPrompt(Context mContext){
|
|
||||||
|
|
||||||
String errorMessage = mContext.getText(R.string.available_quantity_overflow_error_message).toString();
|
|
||||||
|
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void showExpireDateErrorPrompt(Context mContext){
|
|
||||||
|
|
||||||
String errorMessage = mContext.getText(R.string.expire_date_error_message).toString();
|
|
||||||
|
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void showBatchLotErrorPrompt(Context mContext){
|
|
||||||
|
|
||||||
String errorMessage = mContext.getText(R.string.batch_lot_error_message).toString();
|
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableFloat;
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableString;
|
|
||||||
|
|
||||||
public class QuantityDTO {
|
|
||||||
|
|
||||||
public BindableString batchLot = new BindableString();
|
|
||||||
public BindableString expireDateString = new BindableString();
|
|
||||||
|
|
||||||
public Date expireDate = null;
|
|
||||||
|
|
||||||
public BindableFloat numCnf = new BindableFloat();
|
|
||||||
public BindableFloat qtaCnf = new BindableFloat();
|
|
||||||
public BindableFloat qtaTot = new BindableFloat();
|
|
||||||
|
|
||||||
public BindableFloat qtaEvasa = new BindableFloat();
|
|
||||||
public BindableFloat qtaDaEvadere = new BindableFloat();
|
|
||||||
public BindableFloat qtaDisponibile = new BindableFloat();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public BindableBoolean blockedNumDiCnf = new BindableBoolean();
|
|
||||||
public BindableBoolean blockedQtaTot = new BindableBoolean();
|
|
||||||
public BindableBoolean blockedQtaPerCnf = new BindableBoolean();
|
|
||||||
|
|
||||||
public boolean numCnfNotificationEnabled = true;
|
|
||||||
public boolean qtaCnfNotificationEnabled = true;
|
|
||||||
public boolean qtaTotNotificationEnabled = true;
|
|
||||||
public boolean canOverflowQuantity = false;
|
|
||||||
public BindableFloat maxQta = new BindableFloat();
|
|
||||||
|
|
||||||
|
|
||||||
public BindableBoolean canPartitaMagBeChanged = new BindableBoolean(true);
|
|
||||||
public BindableBoolean canDataScadBeChanged = new BindableBoolean(true);
|
|
||||||
public BindableBoolean shouldAskDataScad = new BindableBoolean();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
@@ -27,16 +28,26 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
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.R;
|
||||||
|
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.RunnableArgss;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||||
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
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.UtilityObservable;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||||
|
|
||||||
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
||||||
|
|
||||||
private DialogInputQuantityV2ViewModel mViewModel;
|
@Inject
|
||||||
|
DialogInputQuantityV2ViewModel mViewModel;
|
||||||
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
||||||
private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
|
private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
|
||||||
private Runnable mOnAbort;
|
private Runnable mOnAbort;
|
||||||
@@ -60,6 +71,9 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
|||||||
private DialogInputQuantityV2Binding mBindings;
|
private DialogInputQuantityV2Binding mBindings;
|
||||||
private boolean mEnableDataCallback = true;
|
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) {
|
public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
|
||||||
return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort);
|
return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort);
|
||||||
}
|
}
|
||||||
@@ -74,6 +88,8 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
|||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
|
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
|
||||||
|
|
||||||
|
this.initBarcode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -85,7 +101,12 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
|||||||
|
|
||||||
mBindings.toolbar.setTitle("Inserimento articolo");
|
mBindings.toolbar.setTitle("Inserimento articolo");
|
||||||
|
|
||||||
this.mViewModel = new DialogInputQuantityV2ViewModel()
|
MainApplication.appComponent
|
||||||
|
.dialogInputQuantityV2Component()
|
||||||
|
.create()
|
||||||
|
.inject(this);
|
||||||
|
|
||||||
|
this.mViewModel
|
||||||
.setMtbAart(mDialogInputQuantityV2DTO.getMtbAart())
|
.setMtbAart(mDialogInputQuantityV2DTO.getMtbAart())
|
||||||
.setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf())
|
.setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf())
|
||||||
.setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf())
|
.setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf())
|
||||||
@@ -114,6 +135,35 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
|||||||
return mBindings.getRoot();
|
return mBindings.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initBarcode() {
|
||||||
|
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||||
|
.setOnScanSuccessfull(onScanSuccessful)
|
||||||
|
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||||
|
BarcodeManager.disable();
|
||||||
|
|
||||||
|
this.openProgress();
|
||||||
|
|
||||||
|
this.mViewModel.processBarcodeDTO(data, () -> {
|
||||||
|
BarcodeManager.enable();
|
||||||
|
this.closeProgress();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
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() {
|
public void save() {
|
||||||
if (this.mViewModel.validate()) {
|
if (this.mViewModel.validate()) {
|
||||||
@@ -131,6 +181,7 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||||
|
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
|
||||||
this.mOnAbort.run();
|
this.mOnAbort.run();
|
||||||
super.onDismiss(dialog);
|
super.onDismiss(dialog);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
||||||
|
|
||||||
|
import dagger.Subcomponent;
|
||||||
|
|
||||||
|
@Subcomponent
|
||||||
|
public interface DialogInputQuantityV2Component {
|
||||||
|
|
||||||
|
@Subcomponent.Factory
|
||||||
|
interface Factory {
|
||||||
|
DialogInputQuantityV2Component create();
|
||||||
|
}
|
||||||
|
|
||||||
|
void inject(DialogInputQuantityV2 dialogInputQuantityV2);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
|
|
||||||
|
@Module(subcomponents = DialogInputQuantityV2Component.class)
|
||||||
|
public class DialogInputQuantityV2Module {
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||||
|
return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,8 +5,15 @@ import androidx.databinding.ObservableField;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException;
|
||||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException;
|
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException;
|
||||||
@@ -55,6 +62,13 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
|
|
||||||
private Listener mListener;
|
private Listener mListener;
|
||||||
|
|
||||||
|
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
|
||||||
|
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
if(this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) {
|
if(this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) {
|
||||||
this.internalNumCnf = this.initialNumCnf;
|
this.internalNumCnf = this.initialNumCnf;
|
||||||
@@ -87,6 +101,61 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
this.mListener.onDataChanged();
|
this.mListener.onDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||||
|
if(UtilityBarcode.isEanPeso(barcodeScanDTO)) {
|
||||||
|
Ean13PesoModel ean13PesoModel;
|
||||||
|
|
||||||
|
try {
|
||||||
|
ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
this.mListener.onError(ex);
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(this.mtbAart.get() != null && this.mtbAart.get().getBarCode() != null && ean13PesoModel.getPrecode().contains(this.mtbAart.get().getBarCode())) {
|
||||||
|
this.setQtaTot(BigDecimal.valueOf(ean13PesoModel.getPeso()));
|
||||||
|
}
|
||||||
|
|
||||||
|
onComplete.run();
|
||||||
|
} else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
|
||||||
|
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
|
||||||
|
|
||||||
|
if(ean128Model == null) {
|
||||||
|
onComplete.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
||||||
|
this.setPartitaMag(ean128Model.BatchLot);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
|
||||||
|
this.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
|
||||||
|
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
||||||
|
this.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
this.mListener.onError(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ean128Model.Count != null && ean128Model.Count > 0) {
|
||||||
|
this.setNumCnf(BigDecimal.valueOf(ean128Model.Count));
|
||||||
|
} else if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
||||||
|
this.setQtaTot(BigDecimal.valueOf(ean128Model.NetWeightKg));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
onComplete.run();
|
||||||
|
|
||||||
|
}, ex -> {
|
||||||
|
this.mListener.onError(ex);
|
||||||
|
onComplete.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String getPartitaMag() {
|
public String getPartitaMag() {
|
||||||
return internalPartitaMag;
|
return internalPartitaMag;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public class DialogScanArt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||||
|
|
||||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
|
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class DialogScanOrCreateLU {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||||
BarcodeManager.disable();
|
BarcodeManager.disable();
|
||||||
|
|
||||||
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||||
@@ -288,7 +288,7 @@ public class DialogScanOrCreateLU {
|
|||||||
|
|
||||||
private void showTooMuchULFound() {
|
private void showTooMuchULFound() {
|
||||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||||
new SpannableString(mContext.getResources().getText(R.string.too_much_lu_found_message)),
|
new SpannableString(mContext.getResources().getText(R.string.too_much_lu_found_message_in_mono_lu)),
|
||||||
null, null).show();
|
null, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24"
|
||||||
|
android:tint="@color/colorPrimary">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,3c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM10,17l-4,-4 1.41,-1.41L10,14.17l6.59,-6.59L18,9l-8,8z"/>
|
||||||
|
</vector>
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/spedizione_empty_view"
|
android:id="@+id/accettazione_empty_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:alpha="0.3"
|
android:alpha="0.3"
|
||||||
|
|||||||
@@ -4,9 +4,11 @@
|
|||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="viewmodel"
|
name="pickingResiView"
|
||||||
type="it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity" />
|
type="it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
@@ -24,8 +26,7 @@
|
|||||||
|
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:layout_above="@id/empty_space_padding">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
@@ -62,72 +63,14 @@
|
|||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
<net.cachapa.expandablelayout.ExpandableLayout
|
|
||||||
android:id="@+id/filtered_arts_in_list_expandable_layout"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:el_duration="400"
|
|
||||||
app:el_expanded="false">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingTop="12dp"
|
|
||||||
android:paddingBottom="12dp"
|
|
||||||
android:paddingLeft="8dp"
|
|
||||||
android:paddingRight="8dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:layout_toStartOf="@+id/remove_art_filter_list"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:text="@string/filtered_arts_in_list" />
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/description_filter_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:maxLines="1"
|
|
||||||
tools:text="COD_ART_HERE"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/remove_art_filter_list"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/Button.DangerOutline"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:text="@string/remove_filter_button"
|
|
||||||
android:onClick="@{() -> viewmodel.removeListFilter()}"
|
|
||||||
app:strokeColor="@color/red_600"/>
|
|
||||||
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</net.cachapa.expandablelayout.ExpandableLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/main_list"
|
android:id="@+id/main_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
android:clipToPadding="false"/>
|
android:clipToPadding="false"
|
||||||
|
android:paddingBottom="72dp"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -137,7 +80,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:alpha="0.3"
|
android:alpha="0.3"
|
||||||
android:visibility="@{viewmodel.mDtbDocrList.size() > 0 ? View.GONE : View.VISIBLE}"
|
app:visibility="@{pickingResiView.noItemsToPick}"
|
||||||
tools:context=".gest.lista_bancali.ListaBancaliActivity">
|
tools:context=".gest.lista_bancali.ListaBancaliActivity">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
<androidx.constraintlayout.widget.Guideline
|
||||||
@@ -192,7 +135,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:visibility="@{viewmodel.currentMtbColt == null ? View.VISIBLE : View.GONE}"
|
app:visibility="@{pickingResiView.noLUPresent}"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|
||||||
@@ -233,36 +176,33 @@
|
|||||||
app:fab_colorNormal="@color/white"
|
app:fab_colorNormal="@color/white"
|
||||||
app:fab_colorPressed="@color/white_pressed"
|
app:fab_colorPressed="@color/white_pressed"
|
||||||
app:fab_colorRipple="#66FFFFFF"
|
app:fab_colorRipple="#66FFFFFF"
|
||||||
app:onClick="@{() -> viewmodel.createNewUL()}"
|
app:onClick="@{() -> pickingResiView.createNewLU()}"
|
||||||
fab:fab_label="@string/action_create_ul" />
|
fab:fab_label="@string/action_create_ul" />
|
||||||
|
|
||||||
</com.github.clans.fab.FloatingActionMenu>
|
</com.github.clans.fab.FloatingActionMenu>
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<!-- <RelativeLayout-->
|
||||||
android:id="@+id/empty_space_padding"
|
<!-- android:id="@+id/empty_space_padding"-->
|
||||||
android:layout_width="match_parent"
|
<!-- android:layout_width="match_parent"-->
|
||||||
android:layout_height="?attr/actionBarSize"
|
<!-- android:layout_height="?attr/actionBarSize"-->
|
||||||
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"
|
<!-- android:visibility="@{pickingResiView.bottomSheetEnabled ? View.VISIBLE : View.GONE}"-->
|
||||||
android:layout_alignParentBottom="true">
|
<!-- android:layout_alignParentBottom="true">-->
|
||||||
|
|
||||||
</RelativeLayout>
|
<!-- </RelativeLayout>-->
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/shadow"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="16dp"
|
|
||||||
android:background="@drawable/shape_gradient_top_shadow"
|
|
||||||
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"
|
|
||||||
app:layout_anchor="@id/bottom_sheet_include" />
|
|
||||||
|
|
||||||
<include
|
<it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView
|
||||||
android:id="@+id/bottom_sheet_include"
|
android:id="@+id/bottom_sheet_lu_content"
|
||||||
layout="@layout/fragment_articoli_in_collo_bottom_sheet"
|
android:layout_width="match_parent"
|
||||||
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}" />
|
android:layout_height="match_parent"
|
||||||
|
app:visibility="@{pickingResiView.bottomSheetEnabled}"
|
||||||
|
app:behavior_hideable="false"
|
||||||
|
app:behavior_peekHeight="66dp"
|
||||||
|
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" />
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -265,7 +265,17 @@
|
|||||||
app:visibility="@{spedizioneView.noLUPresent}">
|
app:visibility="@{spedizioneView.noLUPresent}">
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.github.clans.fab.FloatingActionButton
|
||||||
android:id="@+id/spedizione_fab_item1"
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/ic_baseline_assignment_turned_in_24"
|
||||||
|
app:visibility="@{spedizioneView.closeOrderButtonEnabled}"
|
||||||
|
app:fab_colorNormal="@color/white"
|
||||||
|
app:fab_colorPressed="@color/white_pressed"
|
||||||
|
app:fab_colorRipple="#66FFFFFF"
|
||||||
|
app:fab_label="@string/action_close_order"
|
||||||
|
app:onClick="@{() -> spedizioneView.closeOrder()}" />
|
||||||
|
|
||||||
|
<com.github.clans.fab.FloatingActionButton
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@drawable/ic_box"
|
android:src="@drawable/ic_box"
|
||||||
@@ -276,7 +286,6 @@
|
|||||||
app:onClick="@{() -> spedizioneView.showCreatedUL()}" />
|
app:onClick="@{() -> spedizioneView.showCreatedUL()}" />
|
||||||
|
|
||||||
<com.github.clans.fab.FloatingActionButton
|
<com.github.clans.fab.FloatingActionButton
|
||||||
android:id="@+id/spedizione_fab_item2"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@drawable/ic_add_24dp"
|
android:src="@drawable/ic_add_24dp"
|
||||||
|
|||||||
@@ -390,7 +390,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="#99000000"
|
android:background="#99000000"
|
||||||
android:visibility="gone" />
|
android:visibility="gone"
|
||||||
|
singleClick="@{() -> view.collapseMtbColrActionSheet()}"/>
|
||||||
|
|
||||||
<it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView
|
<it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView
|
||||||
android:id="@+id/bottom_sheet__mtb_colr_edit"
|
android:id="@+id/bottom_sheet__mtb_colr_edit"
|
||||||
|
|||||||
@@ -1,16 +1,25 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityDate.COMMONS_DATE_FORMATS" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.settings.SettingsManager" />
|
<import type="it.integry.integrywmsnative.core.settings.SettingsManager" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="mtbColr"
|
name="mtbColr"
|
||||||
type="it.integry.integrywmsnative.core.model.MtbColr"/>
|
type="it.integry.integrywmsnative.core.model.MtbColr" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
@@ -18,101 +27,290 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="8dp">
|
android:padding="8dp">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
<LinearLayout
|
android:id="@+id/art_detail"
|
||||||
android:id="@+id/linearLayout"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/qta_box"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/qta_box"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{mtbColr.codMart}"
|
||||||
|
android:textColor="@color/colorPrimary"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="COD MART" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:background="@drawable/badge2_round_corner"
|
||||||
|
android:paddingStart="6dp"
|
||||||
|
android:paddingEnd="6dp"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol) + mtbColr.mtbAart.untMis}"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null && !mtbColr.mtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}"
|
||||||
|
tools:text="PESO KG" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:text="@{mtbColr.getDescrizione()}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:text="Descrizione lunga articolo" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}"
|
||||||
|
tools:text="Lotto: ABCDE" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/qta_box"
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@{mtbColr.codMart}"
|
|
||||||
android:textColor="@color/colorPrimary"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
tools:text="COD MART" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol) + mtbColr.mtbAart.untMis}"
|
|
||||||
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null && !mtbColr.mtbAart.flagQtaCnfFissaBoolean) ? View.VISIBLE : View.GONE}"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:paddingStart="6dp"
|
|
||||||
android:paddingEnd="6dp"
|
|
||||||
android:background="@drawable/badge2_round_corner"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
tools:text="PESO KG" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:text="@{mtbColr.getDescrizione()}"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:paddingStart="0dp"
|
|
||||||
android:paddingEnd="8dp"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
tools:text="Descrizione lunga articolo" />
|
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}"
|
android:paddingStart="12dp"
|
||||||
android:textSize="14sp"
|
android:paddingEnd="12dp"
|
||||||
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
tools:text="Lotto: ABCDE" />
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
</LinearLayout>
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/qta_textview"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/badge1_round_corner"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingLeft="6dp"
|
||||||
|
android:paddingTop="2dp"
|
||||||
|
android:paddingRight="6dp"
|
||||||
|
android:paddingBottom="2dp"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="280.45\nCONF" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/qta_box"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="12dp"
|
android:layout_marginEnd="10dp"
|
||||||
android:paddingEnd="12dp"
|
android:visibility="@{mtbColr.numColloRif != null ? View.VISIBLE : View.GONE}"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent">
|
app:layout_constraintTop_toBottomOf="@id/art_detail">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:id="@+id/qta_textview"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
android:background="@drawable/badge1_round_corner"
|
android:background="@drawable/badge1_round_corner"
|
||||||
android:gravity="center"
|
android:backgroundTint="@color/green_600"
|
||||||
android:paddingLeft="6dp"
|
android:orientation="horizontal"
|
||||||
android:paddingTop="2dp"
|
android:padding="2dp">
|
||||||
android:paddingRight="6dp"
|
|
||||||
android:paddingBottom="2dp"
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:textSize="16sp"
|
android:layout_width="match_parent"
|
||||||
android:textColor="@android:color/white"
|
android:layout_height="wrap_content"
|
||||||
android:textStyle="bold"
|
android:background="@drawable/badge1_round_corner"
|
||||||
android:textAllCaps="true"
|
android:backgroundTint="@android:color/white"
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
android:orientation="horizontal"
|
||||||
tools:text="280.45\nCONF" />
|
android:padding="0dp">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingStart="2dp"
|
||||||
|
android:paddingEnd="4dp">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/image"
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:src="@drawable/ic_box"
|
||||||
|
android:tint="@color/green_600" />
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/refs_title"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Prelevato da"
|
||||||
|
android:textColor="@color/green_600"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:layout_width="2dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/green_600" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:weightSum="2">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Num: "
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{mtbColr.numColloRif.toString()}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="5230" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Gest: "
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{mtbColr.gestioneRif}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="V" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="0"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Data: "
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{UtilityDate.formatDate(mtbColr.dataColloRifD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="02 mar 2020" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Serie: "
|
||||||
|
android:textColor="@android:color/black" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{mtbColr.serColloRif}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="UL" />
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -34,9 +34,10 @@
|
|||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginBottom="8dp" />
|
android:layout_marginBottom="8dp" />
|
||||||
|
|
||||||
<RelativeLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:id="@+id/input_cliente"
|
android:id="@+id/input_cliente"
|
||||||
@@ -46,14 +47,30 @@
|
|||||||
android:hint="@string/customer">
|
android:hint="@string/customer">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
android:id="@+id/filled_exposed_dropdown"
|
android:id="@+id/dropdown_cliente"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:ellipsize="end"/>
|
android:ellipsize="end"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</RelativeLayout>
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_commessa"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/job">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
|
android:id="@+id/dropdown_commessa"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"/>
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
android:hint="@string/recipient">
|
android:hint="@string/recipient">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||||
android:id="@+id/filled_exposed_dropdown"
|
android:id="@+id/dropdown_destinatario"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
app:layout_constraintEnd_toStartOf="@id/center_guideline"
|
app:layout_constraintEnd_toStartOf="@id/center_guideline"
|
||||||
app:strokeColor="@color/colorPrimary"
|
app:strokeColor="@color/colorPrimary"
|
||||||
android:onClick="@{() -> viewmodel.onNegativeClick()}"
|
android:onClick="@{() -> viewmodel.onNegativeClick()}"
|
||||||
android:text="@string/no"/>
|
android:text="@{viewmodel.negativeButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
app:layout_constraintStart_toStartOf="@id/center_guideline"
|
app:layout_constraintStart_toStartOf="@id/center_guideline"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
||||||
android:text="@string/yes"/>
|
android:text="@{viewmodel.positiveButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -173,7 +173,7 @@
|
|||||||
app:layout_constraintStart_toStartOf="@id/ok_left_buttons_guideline"
|
app:layout_constraintStart_toStartOf="@id/ok_left_buttons_guideline"
|
||||||
app:layout_constraintEnd_toEndOf="@id/ok_right_buttons_guideline"
|
app:layout_constraintEnd_toEndOf="@id/ok_right_buttons_guideline"
|
||||||
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
||||||
android:text="@string/ok"/>
|
android:text="@{viewmodel.positiveButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:visibility="@{viewmodel.neutralVisible ? View.VISIBLE : View.GONE}">
|
android:visibility="@{viewmodel.negativeVisible && viewmodel.neutralVisible ? View.VISIBLE : View.GONE}">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
<androidx.constraintlayout.widget.Guideline
|
||||||
android:id="@+id/left_buttons_guideline"
|
android:id="@+id/left_buttons_guideline"
|
||||||
@@ -211,7 +211,7 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@id/left_buttons_guideline"
|
app:layout_constraintEnd_toStartOf="@id/left_buttons_guideline"
|
||||||
android:onClick="@{() -> viewmodel.onNegativeClick()}"
|
android:onClick="@{() -> viewmodel.onNegativeClick()}"
|
||||||
android:text="@string/no"/>
|
android:text="@{viewmodel.negativeButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
app:layout_constraintEnd_toStartOf="@id/right_buttons_guideline"
|
app:layout_constraintEnd_toStartOf="@id/right_buttons_guideline"
|
||||||
app:strokeColor="@color/colorPrimary"
|
app:strokeColor="@color/colorPrimary"
|
||||||
android:onClick="@{() -> viewmodel.onNeutralClick()}"
|
android:onClick="@{() -> viewmodel.onNeutralClick()}"
|
||||||
android:text="@string/abort"/>
|
android:text="@{viewmodel.neutralButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
@@ -238,7 +238,50 @@
|
|||||||
app:layout_constraintStart_toStartOf="@id/right_buttons_guideline"
|
app:layout_constraintStart_toStartOf="@id/right_buttons_guideline"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
||||||
android:text="@string/yes"/>
|
android:text="@{viewmodel.positiveButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:visibility="@{!viewmodel.negativeVisible && viewmodel.neutralVisible ? View.VISIBLE : View.GONE}">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/center_guideline2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_percent="0.5"/>
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/Button.PrimaryOutline"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/center_guideline2"
|
||||||
|
app:strokeColor="@color/colorPrimary"
|
||||||
|
android:onClick="@{() -> viewmodel.onNeutralClick()}"
|
||||||
|
android:text="@{viewmodel.neutralButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/Button.PrimaryFull"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/center_guideline2"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:onClick="@{() -> viewmodel.onPositiveClick()}"
|
||||||
|
android:text="@{viewmodel.positiveButtonText}"/>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|||||||
@@ -1,425 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
|
||||||
|
|
||||||
<data>
|
|
||||||
<import type="android.view.View" />
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="viewmodel"
|
|
||||||
type="it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity.DTO"/>
|
|
||||||
<variable
|
|
||||||
name="quantityViewModel"
|
|
||||||
type="it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO"/>
|
|
||||||
|
|
||||||
<import type="androidx.core.content.ContextCompat" />
|
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.MainApplication" />
|
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.R" />
|
|
||||||
|
|
||||||
<import type="androidx.databinding.adapters.Converters"/>
|
|
||||||
|
|
||||||
<import type="android.graphics.Color" />
|
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
|
||||||
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:cardCornerRadius="12dp"
|
|
||||||
app:cardElevation="0dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:padding="16dp">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/dialog_title"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/dialog_title_text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:text='@{viewmodel.mtbAart.codMart + (!UtilityString.isNullOrEmpty(viewmodel.batchLot) ? " (" + viewmodel.batchLot + ")" : "") }'
|
|
||||||
android:textColor="@color/colorPrimary"
|
|
||||||
android:textStyle="bold"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Medium"
|
|
||||||
tools:text="AV25D200010B"/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_below="@id/dialog_title_text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:text='@{!UtilityString.isNullOrEmpty(viewmodel.mtbAart.diacod) ? viewmodel.mtbAart.diacod : ""}'
|
|
||||||
android:textColor="@color/red_600"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:visibility="@{UtilityString.isNullOrEmpty(viewmodel.mtbAart.diacod) ? View.GONE : View.VISIBLE}"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Medium"
|
|
||||||
tools:text="DIACOD HERE"/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:paddingStart="8dp"
|
|
||||||
android:paddingEnd="0dp"
|
|
||||||
android:text='@{viewmodel.mtbAart.untMis != null ? "(" + viewmodel.mtbAart.untMis + ")" : ""}'
|
|
||||||
android:textColor="#000"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="(PZ)"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Medium"
|
|
||||||
app:layout_constraintRight_toRightOf="parent" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@+id/dialog_title"
|
|
||||||
android:layout_marginTop="6dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<!--<androidx.appcompat.widget.AppCompatTextView-->
|
|
||||||
<!--android:layout_width="wrap_content"-->
|
|
||||||
<!--android:layout_height="wrap_content"-->
|
|
||||||
<!--android:text="@string/description"-->
|
|
||||||
<!--android:textSize="16sp"-->
|
|
||||||
<!--tools:text="Descrizione" />-->
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@{viewmodel.mtbAart.descrizioneEstesa}"
|
|
||||||
android:textStyle="bold"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
tools:text="RAD 25 D H/L 200 - 10 EL B BIANCO" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:visibility="@{viewmodel.qtaOrd == null ? View.GONE : View.VISIBLE}"
|
|
||||||
android:text="@string/ordered_abbr"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:visibility="@{viewmodel.qtaOrd == null ? View.GONE : View.VISIBLE}"
|
|
||||||
android:text='@{UtilityNumber.decimalToString(viewmodel.qtaOrd)}'
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:paddingStart="4dp"
|
|
||||||
tools:text="1200" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="12dp"
|
|
||||||
android:text="@string/dispatched_abbr"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:visibility="@{quantityViewModel.qtaEvasa.get() == 0 ? View.GONE : View.VISIBLE}" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text='@{UtilityNumber.decimalToString(quantityViewModel.qtaEvasa.get())}'
|
|
||||||
android:visibility="@{quantityViewModel.qtaEvasa.get() == 0 ? View.GONE : View.VISIBLE}"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:paddingLeft="4dp"
|
|
||||||
tools:text="1200" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/layout_qta_da_evadere"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/to_dispatch_abbr"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text='@{UtilityNumber.decimalToString(quantityViewModel.qtaDaEvadere.get())}'
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:paddingLeft="4dp"
|
|
||||||
tools:text="1200" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/layout_qta_disponibile"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="12dp"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="("
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/available_abbr"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text='@{UtilityNumber.decimalToString(quantityViewModel.qtaDisponibile.get())}'
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:paddingStart="4dp"
|
|
||||||
tools:text="1200" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text=")"
|
|
||||||
android:textSize="16sp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/qta_description_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:layout_gravity="center_horizontal"
|
|
||||||
android:paddingTop="4dp"
|
|
||||||
tools:text="2 CARTONI e 3 PEZZI"/>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/guideline_partita_data"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent='@{quantityViewModel.shouldAskDataScad.get() == false ? 1.0f : 0.5f}'/>
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:id="@+id/input_partita_mag"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:enabled="@{quantityViewModel.canPartitaMagBeChanged}"
|
|
||||||
app:hintTextAppearance="@style/hint_text"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/guideline_partita_data"
|
|
||||||
android:nextFocusRight="@+id/input_data_scad"
|
|
||||||
style="@style/TextInputLayout.NoLine">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:inputType="textNoSuggestions"
|
|
||||||
android:hint="@string/batch_lot"
|
|
||||||
android:textAllCaps="true"
|
|
||||||
app:binding="@{quantityViewModel.batchLot}"/>
|
|
||||||
|
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/input_data_scad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:text="11 nov 2018"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:enabled="@{quantityViewModel.canDataScadBeChanged}"
|
|
||||||
android:visibility="@{quantityViewModel.shouldAskDataScad.get() == false ? View.GONE : View.VISIBLE}"
|
|
||||||
app:binding="@{quantityViewModel.expireDateString}"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/guideline_partita_data"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"/>
|
|
||||||
|
|
||||||
|
|
||||||
<!--<android.support.design.widget.TextInputLayout-->
|
|
||||||
<!--android:id="@+id/input_data_scad_layout"-->
|
|
||||||
<!--android:layout_width="0dp"-->
|
|
||||||
<!--android:layout_height="wrap_content"-->
|
|
||||||
<!--android:enabled="@{quantityViewModel.shouldAskDataScad.get()}"-->
|
|
||||||
<!--app:hintTextAppearance="@style/hint_text"-->
|
|
||||||
<!--app:layout_constraintStart_toEndOf="@id/guideline_partita_data"-->
|
|
||||||
<!--app:layout_constraintEnd_toEndOf="parent">-->
|
|
||||||
|
|
||||||
<!--<android.support.design.widget.TextInputEditText-->
|
|
||||||
<!--android:id="@+id/input_data_scad"-->
|
|
||||||
<!--android:layout_width="match_parent"-->
|
|
||||||
<!--android:layout_height="wrap_content"-->
|
|
||||||
<!--android:inputType="textNoSuggestions"-->
|
|
||||||
<!--android:hint="@string/expire_date"-->
|
|
||||||
<!--app:binding="@{quantityViewModel.expireDate}"/>-->
|
|
||||||
|
|
||||||
|
|
||||||
<!--</android.support.design.widget.TextInputLayout>-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:weightSum="3">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:id="@+id/input_num_cnf"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:enabled="@{!(quantityViewModel.blockedQtaTot.get() && quantityViewModel.blockedQtaPerCnf.get())}"
|
|
||||||
style="@style/TextInputLayout.NoLine">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:inputType="number"
|
|
||||||
android:hint="@string/num_pcks"
|
|
||||||
android:gravity="end"
|
|
||||||
app:binding="@{quantityViewModel.numCnf}" >
|
|
||||||
</com.google.android.material.textfield.TextInputEditText>
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:id="@+id/input_qta_cnf"
|
|
||||||
android:enabled="@{!(quantityViewModel.blockedQtaTot.get() && quantityViewModel.blockedNumDiCnf.get())}"
|
|
||||||
style="@style/TextInputLayout.NoLine">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:inputType="numberDecimal"
|
|
||||||
android:hint="@string/qty_x_pck"
|
|
||||||
android:gravity="end"
|
|
||||||
app:binding="@{quantityViewModel.qtaCnf}"/>
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:id="@+id/input_qta_tot"
|
|
||||||
android:enabled="@{!(quantityViewModel.blockedNumDiCnf.get() && quantityViewModel.blockedQtaPerCnf.get())}"
|
|
||||||
style="@style/TextInputLayout.NoLine">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:inputType="numberDecimal"
|
|
||||||
android:hint="@string/tot_qty"
|
|
||||||
android:gravity="end"
|
|
||||||
app:binding="@{quantityViewModel.qtaTot}"/>
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:weightSum="1">
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/close_lu_btn"
|
|
||||||
android:layout_weight="0.4"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/Button.PrimaryOutline"
|
|
||||||
android:layout_marginStart="0dp"
|
|
||||||
android:layout_marginEnd="4dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/left_buttons_guideline"
|
|
||||||
app:strokeColor="@color/colorPrimary"
|
|
||||||
android:text="@string/action_close_ul"/>
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/abort_btn"
|
|
||||||
android:layout_weight="0.3"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/Button.DangerFull"
|
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:layout_marginEnd="4dp"
|
|
||||||
android:paddingEnd="3dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/left_buttons_guideline"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/right_buttons_guideline"
|
|
||||||
app:icon="@drawable/ic_close_24dp"
|
|
||||||
app:iconGravity="textStart"/>
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/save_btn"
|
|
||||||
android:layout_weight="0.3"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/Button.PrimaryFull"
|
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:layout_marginEnd="0dp"
|
|
||||||
android:paddingEnd="3dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/right_buttons_guideline"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:icon="@drawable/ic_save_24"
|
|
||||||
app:iconGravity="textStart"/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
</layout>
|
|
||||||
@@ -1,540 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<data>
|
|
||||||
<variable
|
|
||||||
name="viewModel"
|
|
||||||
type="it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel"
|
|
||||||
/>
|
|
||||||
<import type="android.view.View" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
||||||
android:id="@+id/bottom_sheet1"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="@android:color/white"
|
|
||||||
app:behavior_peekHeight="?attr/actionBarSize"
|
|
||||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
|
|
||||||
app:behavior_hideable="false">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/tap_action_layout"
|
|
||||||
android:padding="4dp"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:minHeight="?attr/actionBarSize"
|
|
||||||
android:background="@android:color/white">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/articoli_in_collo_sheet_button"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:drawableStart="@drawable/ic_box"
|
|
||||||
tools:text="2 REFERENCES"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:drawablePadding="12dp"
|
|
||||||
android:textColor="@color/colorPrimary"
|
|
||||||
android:paddingTop="12dp"
|
|
||||||
android:paddingBottom="8dp"
|
|
||||||
android:paddingLeft="16dp"
|
|
||||||
android:paddingRight="16dp"
|
|
||||||
android:elevation="0dp"
|
|
||||||
android:textAllCaps="true"
|
|
||||||
android:textSize="16sp"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text"/>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/articoli_in_collo_close_collo"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/Button.DangerOutline"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginRight="8dp"
|
|
||||||
android:text="@string/action_close_ul"
|
|
||||||
android:onClick="@{() -> viewModel.closeCurrentUL()}"
|
|
||||||
app:strokeColor="@color/red_600"/>
|
|
||||||
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<androidx.core.widget.NestedScrollView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
|
||||||
app:cardBackgroundColor="@android:color/white"
|
|
||||||
app:cardCornerRadius="4dp"
|
|
||||||
android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginRight="8dp"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginStart="10dp"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/details_text"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text"
|
|
||||||
android:textAllCaps="true"
|
|
||||||
android:textStyle="bold"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:padding="15dp"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/guideline1"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent="0.40" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:text="@string/date_text"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/guideline1"
|
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/articoli_in_collo_details_date"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/guideline1"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
tools:text="TextView" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/guideline2"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent="0.40" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/articoli_in_collo_details_posizione"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:text="@string/position_text"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/guideline2"
|
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:text="@{viewModel.mtbColt.posizione}"
|
|
||||||
style="@style/AppTheme.NewMaterial"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/guideline2"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
tools:text="TextView" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/guideline3"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent="0.40" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:text="@string/prepared_by_text"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/guideline3"
|
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:text="@{viewModel.mtbColt.preparatoDa}"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/guideline3"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
tools:text="TextView" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/guideline4"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent="0.40" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:text="@string/customer"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/guideline4"
|
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:text="@{viewModel.mtbColt.ragSocCliente}"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/guideline4"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
tools:text="TextView" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
|
||||||
app:cardBackgroundColor="@android:color/white"
|
|
||||||
app:cardCornerRadius="4dp"
|
|
||||||
android:layout_margin="8dp"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginStart="10dp"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/already_read_articles"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text"
|
|
||||||
android:textAllCaps="true"
|
|
||||||
android:textStyle="bold"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingTop="14dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:gravity="center"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:visibility="@{viewModel.mtbColt == null || viewModel.mtbColt.mtbColr.size() == 0 ? View.VISIBLE : View.GONE}">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:tint="@color/empty_view_gray"
|
|
||||||
android:src="@drawable/ic_info_78dp"/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/empty_rows_in_mtbcolt"
|
|
||||||
android:textSize="20sp"
|
|
||||||
android:gravity="center"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text"
|
|
||||||
android:textColor="@color/empty_view_gray"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<com.linearlistview.LinearListView
|
|
||||||
android:id="@+id/linear_listview"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:dividerThickness="0.5dp" />
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.core.widget.NestedScrollView>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
|
||||||
android:id="@+id/appbar_bottom_sheet"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:minHeight="?attr/actionBarSize"
|
|
||||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
|
||||||
android:background="?attr/colorPrimary"
|
|
||||||
android:alpha="0">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
|
||||||
android:id="@+id/toolbar_bottom_sheet"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:minHeight="?attr/actionBarSize"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:background="?attr/colorPrimary"
|
|
||||||
app:titleTextColor="@android:color/white"
|
|
||||||
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
|
||||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/articoli_in_collo_title"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textAppearance="@android:style/TextAppearance.Material.Title"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.ToolbarTitle.DarkActionBar"
|
|
||||||
tools:text="Num UL"/>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
</androidx.appcompat.widget.Toolbar>
|
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
|
||||||
</RelativeLayout>
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:visibility="gone"
|
|
||||||
android:id="@+id/bg"
|
|
||||||
android:background="#99000000"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/bottom_sheet_actions"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="#fff"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:padding="16dp"
|
|
||||||
app:behavior_hideable="true"
|
|
||||||
app:behavior_peekHeight="160dp"
|
|
||||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center_vertical">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/bottom_sheet_actions_quantity"
|
|
||||||
app:layout_constraintStart_toStartOf="parent">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/bottom_sheet_actions_title"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:text="Descrizione articolo"
|
|
||||||
android:textColor="#444"
|
|
||||||
android:maxLines="2"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:paddingStart="0dp"
|
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Medium"/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/bottom_sheet_actions_subtitle"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:text="ABF52IL"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/bottom_sheet_actions_quantity"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:gravity="end"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="250 PZ"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"/>
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.Guideline
|
|
||||||
android:id="@+id/guideline_action"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintGuide_percent="0.50" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/guideline_action"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
android:gravity="center">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/bottom_sheet_actions_edit_btn"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:background="@android:color/white"
|
|
||||||
android:scaleX="1.5"
|
|
||||||
android:scaleY="1.5"
|
|
||||||
android:src="@drawable/ic_edit_24dp"
|
|
||||||
android:tint="@color/green_600" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:text="@string/edit"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="@id/guideline_action"
|
|
||||||
android:gravity="center">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
|
||||||
android:id="@+id/bottom_sheet_actions_delete_btn"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:background="@android:color/white"
|
|
||||||
android:scaleX="1.5"
|
|
||||||
android:scaleY="1.5"
|
|
||||||
android:src="@drawable/ic_delete_24dp"
|
|
||||||
android:tint="@color/red_600" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
|
||||||
android:text="@string/delete"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
||||||
</layout>
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user