diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml
index 6bbe2aee..e9268407 100644
--- a/.idea/appInsightsSettings.xml
+++ b/.idea/appInsightsSettings.xml
@@ -2,5 +2,26 @@
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 0c0c3383..464d8c59 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -2,6 +2,9 @@
+
+
+
diff --git a/.idea/fileTemplates/Android Activity.java b/.idea/fileTemplates/Android Activity.java
new file mode 100644
index 00000000..d9fe5858
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java
@@ -0,0 +1,97 @@
+#set( $regex = "([a-z])([A-Z]+)")
+#set( $replacement = "$1_$2")
+#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
+#set( $variableName = $NAME.replace($NAME.substring(0, 1), $NAME.substring(0, 1).toLowerCase()))
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.content.Intent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.databinding.DataBindingUtil;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
+
+public class ${NAME}Activity extends BaseActivity {
+
+/*
+- Create the following layout resource file [activity_${dashName}.xml]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+- Create an entry in AndroidManifest.xml
+Fix the android:name tag with current path
+
+
+
+
+*/
+
+
+ @Inject
+ ${NAME}ViewModel mViewModel;
+
+ //private Activity${NAME}Binding mBindings;
+
+ //Pass here all external parameters
+ public static void startActivity(Context context) {
+ Intent myIntent = new Intent(context, ${NAME}Activity.class);
+
+ //String keyExtraItem = DataCache.addItem(var);
+ //myIntent.putExtra("keyExtraItem", keyExtraItem);
+
+ context.startActivity(myIntent);
+ }
+
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ //mBindings = DataBindingUtil.setContentView(this, R.layout.activity_${dashName});
+ //mBindings.setLifecycleOwner(this);
+
+
+ /*
+ - Add following lines into MainApplicationComponent
+
+ [a] into @Component
+ ${NAME}Module.class
+
+ [b] into interface body
+ ${NAME}Component.Factory ${variableName}Component();
+ */
+ MainApplication.appComponent
+ .${variableName}Component()
+ .create()
+ .inject(this);
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Activity.java.child.0.java b/.idea/fileTemplates/Android Activity.java.child.0.java
new file mode 100644
index 00000000..a9dd07dc
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java.child.0.java
@@ -0,0 +1,12 @@
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = ${NAME}Component.class)
+public class ${NAME}Module {
+
+ @Provides
+ ${NAME}ViewModel provides${NAME}ViewModel() {
+ return new ${NAME}ViewModel();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Activity.java.child.1.java b/.idea/fileTemplates/Android Activity.java.child.1.java
new file mode 100644
index 00000000..3d83ef50
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java.child.1.java
@@ -0,0 +1,12 @@
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface ${NAME}Component {
+
+ @Subcomponent.Factory
+ interface Factory {
+ ${NAME}Component create();
+ }
+
+ void inject(${NAME}Activity ${NAME}Activity);
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Activity.java.child.2.java b/.idea/fileTemplates/Android Activity.java.child.2.java
new file mode 100644
index 00000000..23b591d2
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java.child.2.java
@@ -0,0 +1,3 @@
+public class ${NAME}ViewModel {
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java b/.idea/fileTemplates/Android Dialog.java
new file mode 100644
index 00000000..910c9533
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java
@@ -0,0 +1,125 @@
+#set( $regex = "([a-z])([A-Z]+)")
+#set( $replacement = "$1_$2")
+#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
+
+public class Dialog${NAME}View extends BaseDialogFragment {
+
+/*
+Create the following layout resource file [dialog_${dashName}.xml]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*/
+
+
+ @Inject
+ Dialog${NAME}ViewModel mViewModel;
+
+ //private Dialog${NAME}Binding mBindings;
+ private Context mContext;
+
+ //Pass here all external parameters
+ public static Dialog${NAME}View newInstance() {
+ return new Dialog${NAME}View();
+ }
+
+ private Dialog${NAME}View() {
+ super();
+ }
+
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ this.mContext = requireContext();
+
+ //mBindings = Dialog${NAME}Binding.inflate(LayoutInflater.from(this.mContext), null, false);
+ //mBindings.setLifecycleOwner(this);
+
+
+ /*
+ - Add following lines into MainApplicationComponent
+
+ [a] into @Component
+ Dialog${NAME}Module.class
+
+ [b] into interface body
+ Dialog${NAME}Component.Factory dialog${NAME}Component();
+ */
+ MainApplication.appComponent
+ .dialog${NAME}Component()
+ .create()
+ .inject(this);
+
+ setCancelable(false);
+
+ var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
+ .setView(mBindings.getRoot())
+ .setCancelable(isCancelable())
+ .create();
+
+ alertDialog.setCanceledOnTouchOutside(isCancelable());
+ alertDialog.setOnShowListener(this);
+ return alertDialog;
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java.child.0.java b/.idea/fileTemplates/Android Dialog.java.child.0.java
new file mode 100644
index 00000000..b5d03e92
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java.child.0.java
@@ -0,0 +1,12 @@
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = Dialog${NAME}Component.class)
+public class Dialog${NAME}Module {
+
+ @Provides
+ Dialog${NAME}ViewModel providesDialog${NAME}ViewModel() {
+ return new Dialog${NAME}ViewModel();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java.child.1.java b/.idea/fileTemplates/Android Dialog.java.child.1.java
new file mode 100644
index 00000000..84dd3231
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java.child.1.java
@@ -0,0 +1,12 @@
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface Dialog${NAME}Component {
+
+ @Subcomponent.Factory
+ interface Factory {
+ Dialog${NAME}Component create();
+ }
+
+ void inject(Dialog${NAME}View dialog${NAME}View);
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java.child.2.java b/.idea/fileTemplates/Android Dialog.java.child.2.java
new file mode 100644
index 00000000..9f0c3961
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java.child.2.java
@@ -0,0 +1,3 @@
+public class Dialog${NAME}ViewModel {
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java b/.idea/fileTemplates/Android Fragment.java
new file mode 100644
index 00000000..efc1d287
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java
@@ -0,0 +1,82 @@
+#set( $regex = "([a-z])([A-Z]+)")
+#set( $replacement = "$1_$2")
+#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
+#set( $variableName = $NAME.replace($NAME.substring(0, 1), $NAME.substring(0, 1).toLowerCase()))
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.expansion.BaseFragment;
+
+public class ${NAME}Fragment extends BaseFragment {
+
+/*
+- Create the following layout resource file [fragment_${dashName}.xml]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*/
+
+
+ @Inject
+ ${NAME}ViewModel mViewModel;
+
+ //private Fragment${NAME}Binding mBindings;
+
+
+ public ${NAME}Fragment() {
+ // Required empty public constructor
+ }
+
+ public static ${NAME}Fragment newInstance() {
+ return new ${NAME}Fragment();
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ setRetainInstance(true);
+
+ //mBindings = Fragment${NAME}Binding.inflate(inflater, container, false);
+ //mBindings.setLifecycleOwner(this);
+
+
+ /*
+ - Add following lines into MainApplicationComponent
+
+ [a] into @Component
+ ${NAME}Module.class
+
+ [b] into interface body
+ ${NAME}Component.Factory ${variableName}Component();
+ */
+ MainApplication.appComponent
+ .${variableName}Component()
+ .create()
+ .inject(this);
+
+ return mBindings.getRoot();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java.child.0.java b/.idea/fileTemplates/Android Fragment.java.child.0.java
new file mode 100644
index 00000000..23b591d2
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java.child.0.java
@@ -0,0 +1,3 @@
+public class ${NAME}ViewModel {
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java.child.1.java b/.idea/fileTemplates/Android Fragment.java.child.1.java
new file mode 100644
index 00000000..f07fde4f
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java.child.1.java
@@ -0,0 +1,12 @@
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface ${NAME}Component {
+
+ @Subcomponent.Factory
+ interface Factory {
+ ${NAME}Component create();
+ }
+
+ void inject(${NAME}Fragment ${NAME}Fragment);
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java.child.2.java b/.idea/fileTemplates/Android Fragment.java.child.2.java
new file mode 100644
index 00000000..a9dd07dc
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java.child.2.java
@@ -0,0 +1,12 @@
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = ${NAME}Component.class)
+public class ${NAME}Module {
+
+ @Provides
+ ${NAME}ViewModel provides${NAME}ViewModel() {
+ return new ${NAME}ViewModel();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app.xml
index e0479975..72c17371 100644
--- a/.idea/runConfigurations/app.xml
+++ b/.idea/runConfigurations/app.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index b9fe557f..f85ec42f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 407
- def appVersionName = '1.36.14'
+ def appVersionCode = 415
+ def appVersionName = '1.39.02'
signingConfigs {
release {
@@ -25,8 +25,8 @@ android {
}
}
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach { output ->
output.outputFileName = "android-release.apk"
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
index 1e5fcc52..586a56b5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
@@ -67,6 +67,10 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMate
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailComponent;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdComponent;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdModule;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaComponent;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaModule;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferComponent;
@@ -200,7 +204,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
ProdVersamentoMaterialeInBufferModule.class,
DialogInputQuantityToReturnModule.class,
DialogInfoAggiuntiveLUModule.class,
- DialogAskLineaProdModule.class
+ DialogAskLineaProdModule.class,
+ ProdRiposizionamentoDaProdModule.class,
+ DialogInfoGiacenzaModule.class
})
public interface MainApplicationComponent {
@@ -336,6 +342,10 @@ public interface MainApplicationComponent {
DialogAskLineaProdComponent.Factory dialogAskLineaProdComponent();
+ ProdRiposizionamentoDaProdComponent.Factory prodRiposizionamentoDaprodComponent();
+
+ DialogInfoGiacenzaComponent.Factory dialogInfoGiacenzaComponent();
+
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
index a86f047a..e07a6e5d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
@@ -16,6 +16,7 @@ import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
+import it.integry.integrywmsnative.core.ean128.Ean128Service;
import it.integry.integrywmsnative.core.menu.MenuRESTConsumer;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
@@ -43,6 +44,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsum
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.sound.SoundAlertService;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
@@ -102,6 +104,12 @@ public class MainApplicationModule {
return colliDataRecoverService;
}
+ @Provides
+ @Singleton
+ Ean128Service provideEan128Service() {
+ return new Ean128Service();
+ }
+
@Provides
@Singleton
MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) {
@@ -197,8 +205,8 @@ public class MainApplicationModule {
@Provides
@Singleton
- BarcodeRESTConsumer provideBarcodeRESTConsumer() {
- return new BarcodeRESTConsumer();
+ BarcodeRESTConsumer provideBarcodeRESTConsumer(Ean128Service ean128Service) {
+ return new BarcodeRESTConsumer(ean128Service);
}
@Provides
@@ -291,4 +299,12 @@ public class MainApplicationModule {
return new MagazzinoBufferRESTConsumer();
}
+ @Provides
+ @Singleton
+ SoundAlertService provideSoundAlertService() {
+ SoundAlertService soundAlertService = new SoundAlertService(mApplication.getApplicationContext());
+ soundAlertService.init();
+ return soundAlertService;
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java
index 24889430..df16aa11 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java
@@ -75,7 +75,7 @@ public class BarcodeManager {
var scanMode = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_MODE, null);
var scanModeSetting = new Pair(BarcodeSetting.P_TRIGGER_SCAN_MODE, scanMode);
additionalSettings.add(scanModeSetting);
-
+
BarcodeManager.changeSettings(additionalSettings);
});
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/base/Callable.java b/app/src/main/java/it/integry/integrywmsnative/core/base/Callable.java
new file mode 100644
index 00000000..2e03ad43
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/base/Callable.java
@@ -0,0 +1,5 @@
+package it.integry.integrywmsnative.core.base;
+
+public interface Callable {
+ O call(I input);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/base/CallableII.java b/app/src/main/java/it/integry/integrywmsnative/core/base/CallableII.java
new file mode 100644
index 00000000..18c982a8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/base/CallableII.java
@@ -0,0 +1,5 @@
+package it.integry.integrywmsnative.core.base;
+
+public interface CallableII {
+ O call(I input, L input2);
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
index 70526fa5..04d06c80 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
@@ -14,6 +14,7 @@ import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisogn
import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
@@ -86,7 +87,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
- .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
@@ -122,7 +123,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
- .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
.addItem(new MenuItem()
.setID(R.id.nav_prod_posizionamento_da_ord)
@@ -171,6 +172,22 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdVersamentoMaterialeInBufferFragment::newInstance))
+
+ .addItem(new MenuItem()
+ .setID(R.id.nav_prod_versamento_su_ordine)
+ .setCodMenu("MG068")
+ .setTitleText(R.string.prod_versamento_su_ordine_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_su_ord)
+ .setDrawerIcon(R.drawable.ic_black_external)
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true)))
+
+ .addItem(new MenuItem()
+ .setID(R.id.nav_prod_riposizionamento_da_ord)
+ .setCodMenu("MG069")
+ .setTitleText(R.string.prod_riposizionamento_da_prod_title)
+ .setTitleIcon(R.drawable.ic_production_line_produzione)
+ .setDrawerIcon(R.drawable.ic_black_load_shelf)
+ .setFragmentFactory(ProdRiposizionamentoDaProdFragment::newInstance))
).addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AI.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AI.java
new file mode 100644
index 00000000..9cd47532
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AI.java
@@ -0,0 +1,127 @@
+package it.integry.integrywmsnative.core.ean128;
+
+public enum Ean128AI {
+
+
+ NULL, //Valore nullo (usato solo in logica)
+ SSCC, //Numero sequenziale del collo n2+n18
+ GTIN, //Codice EAN/UCC unità logistica n2+n14
+ CONTENT, //Codice EAN/UCC dei prodotti contenuti all'interno di unità log n2+n14
+ BATCH_LOT, //Numero del lotto di fabbricazione n2+an.20
+ PROD_DATE, //Data di produzione (yymmdd) 0~50 (2000~2050) - 51~99 (1951~1999) n2+n6
+ DUE_DATE, //Data di scadenza pagamento fattura n2+n6
+ PACK_DATE, //Data di confezionamento n2+n6
+ BEST_BEFORE,//Data minima di validità n2+n6
+ EXPIRY, //Data massima di validità n2+n6
+ VARIANT, //Variante di prodotto - uso interno aziendale n2+n2
+ SERIAL, //Numero di serie n2+an.20
+ QTY_DATE_BATCH, //Dati supplementari per prodotti farmaceutici n2+an.29
+ ADDITIONAL_ID, //Numedi di identificazione supplementare del prodotto n3+an.30
+ CUST_PART_NO, //Codice prodotto interno del cliente n3+an.30
+ SECONDARY_SERIAL, //Numero di serie secondario n3+an.30
+ REF_TO_SOURCE, //Entità di origine o marca auricolare n3+an.30
+ VAR_COUNT, //Quantità variabile n2+n.8
+
+ //Misure commerciali e logistiche FORMATO: n4+n6
+ NET_WEIGHT_KG, //Peso netto in Kg
+ LENGTH_M, //Lunghezza o 1° dimensione, in mt, uso commerciale
+ WIDTH_M, //Larghezza, diametro o 2° dimensione, in mt, uso commerciale
+ HEIGHT_M, //Profondità, spessore, altezza o 3° dimensione, in mt, uso commerciale
+ AREA_M2, //Superficie, in metriquadri, uso commerciale
+ NET_VOLUME_L, //Volume, in litri, uso commerciale
+ NET_VOLUME_M3, //Volume, in metricubi, uso commerciale
+ NET_WEIGHT_LB, //Peso netto, in libbre, uso commerciale
+ LENGTH_I, //Lunghezza o 1° dimensione, in pollici, uso commerciale
+ LENGTH_F, //Lunghezza o 1° dimensione, in piedi, uso commerciale
+ LENGTH_Y, //Lunghezza o 1° dimensione, in yards, uso commerciale
+ WIDTH_I, //Larghezza, diametro o 2° dimensione, in pollici, uso commerciale
+ WIDTH_F, //Larghezza, diametro o 2° dimensione, in piedi, uso commerciale
+ WIDTH_Y, //Larghezza, diametro o 2° dimensione, in yards, uso commerciale
+ HEIGHT_I, //Profondità, spessore, altezza o 3° dimensione, in pollici, uso commerciale
+ HEIGHT_F, //Profondità, spessore, altezza o 3° dimensione, in piedi, uso commerciale
+ HEIGHT_Y, //Profondità, spessore, altezza o 3° dimensione, in yards, uso commerciale
+ CROSSWEIGHT_KG_LOG, //Peso lordo, in Kg, uso logistico
+ LENGTH_M_LOG, //Lunghezza o 1° dimensione, in metri, uso logistico
+ WIDTH_M_LOG, //Larghezza, diametro o 2° dimensione, in metri, uso logistico
+ HEIGHT_M_LOG, //Profondità, spessore, altezza o 3° dimensione, in metri, uso logistico
+ AREA_M2_LOG, //Superficie, in metriquadri, uso logistico
+ VOLUME_L_LOG, //Volume lordo, in litri, uso logistico
+ VOLUME_M3_LOG, //Volume lordo, in metricubi, uso logistico
+ CROSSWEIGHT_LB_LOG, //Peso lordo, in libbre, uso logistico
+ LENGTH_I_LOG, //Lunghezza o 1° dimensione, in pollici, uso logistico
+ LENGTH_F_LOG, //Lunghezza o 1° dimensione, in piedi, uso logistico
+ LENGTH_Y_LOG, //Lunghezza o 1° dimensione, in yards, uso logistico
+ WIDTH_I_LOG, //Larghezza, diametro o 2° dimensione, in pollici, uso logistico
+ WIDTH_F_LOG, //Larghezza, diametro o 2° dimensione, in piedi, uso logistico
+ WIDTH_Y_LOG, //Larghezza, diametro o 2° dimensione, in yards, uso logistico
+ HEIGHT_I_LOG, //Profondità, spessore, altezza o 3° dimensione, in pollici, uso logistico
+ HEIGHT_F_LOG, //Profondità, spessore, altezza o 3° dimensione, in piedi, uso logistico
+ HEIGHT_Y_LOG, //Profondità, spessore, altezza o 3° dimensione, in yards, uso logistico
+ AREA_I2, //Superficie, in pollici quadrati, uso commerciale
+ AREA_F2, //Superficie, in piedi quadrati, uso commerciale
+ AREA_Y2, //Superficie, in yards quadrati, uso commerciale
+ AREA_I2_LOG, //Superficie, in pollici quadrati, uso logistico
+ AREA_F2_LOG, //Superficie, in piedi quadrati, uso logistico
+ AREA_Y2_LOG, //Superficie, in yards quadrati, uso logistico
+ NET_WEIGHT_T, //Peso netto, in once troy, uso commerciale
+ NET_VOLUME_OZ, //Volume netto, in once (U.S.), uso commerciale
+ NET_VOLUME_LB, //Volume netto, in quarti di gallone, uso commerciale
+ NET_VOLUME_G, //Volume netto, in galloni (U.S.), uso commerciale
+ VOLUME_Q_LOG, //Volume lordo, in quarti di gallone, uso logistico
+ VOLUME_G_LOG, //Volume lordo, in galloni (U.S.), uso logistico
+ NET_VOLUME_I3, //Volume netto, in pollici cubi, uso commerciale
+ NET_VOLUME_F3, //Volume netto, in piedi cubi, uso commerciale
+ NET_VOLUME_Y3, //Volume netto, in yards cubi, uso commerciale
+ VOLUME_I3_LOG, //Volume lordo, in pollici cubi, uso logistico
+ VOLUME_F3_LOG, //Volume lordo, in piedi cubi, uso logistico
+ VOLUME_Y3_LOG, //Volume lordo, in yards cubi, uso logistico
+ COUNT, //Quantità prodotti contenuti in un'unità logistica
+ AMOUNT, //Importo da pagare singola area monetaria
+ AMOUNT_ISO, //Importo da pagare con codice valuta ISO
+ PRICE, //Importo da pagare singola unità monetaria (prodotti a peso variabile)
+ PRICE_ISO, //Importo da pagare con codice valuta ISO (prodotti a peso variabile)
+ ORDER_NUMBER, //Numero d'ordine d'acquisto cliente
+ CONSIGNMENT, //Numero di consegna
+ SHIPMENT_NO, //Numero di spedizione
+ ROUTE, //Codice di smistamento pacchi
+ SHIP_TO_LOC, //Codice di locazione EAN/UCC "Spedire a, Consegnare a"
+ BILL_TO_LOC, //Codice di locazione EAN/UCC "Fatturare a"
+ PURCHASE_FROM_LOC, //Codice di locazione EAN/UCC "Acquistato da"
+ SHIP_FOR_LOC, //Codice di locazione EAN/UCC "Sperdire per, Consegnare per, Inoltrare a"
+ LOC_NO, //Codice di locazione EAN/UCC: identificazione di una locazione fisica
+ PAY_TO_LOC, //Codice di locazione EAN/UCC di chi emette la fattura
+ SHIP_TO_POST, //Codice postale "Spedire a, Consegnare a" (nazionale)
+ SHIP_TO_POST_ISO, //Codice postale "Spedire a, Consegnare a" con codice nazione ISO
+ ORIGIN, //Paese di origine del prodotto
+ COUNTRY_INITIAL_PROCESS, //Paese di lavorazione iniziale del prodotto con codice nazionale ISO
+ COUNTRY_PROCESS, //Paese di lavorazione con codice nazionale ISO
+ COUNTRY_DISASSEMBLY, //Paese di scomposizione con codice nazionale ISO
+ COUNTRY_FULL_PROCESS,//Paese di lavorazione completa con codice nazionale ISO
+ NSN, //Numero di stock NATO
+ MEAT_CUT, //Carcasse animali e classificazione dei tagli UN/ECE
+ PROCESSORS, //Numero di approvazione del laboratorio di lavorazione intermedio con codice nazionale ISO
+ DIMENSIONS, //Prodotti in rotoli - larghezza, lunghezza, diametro interno, senso di svolgimento e giunte
+ CMT_NO, //Numero sequenziale elettronico per applicazioni di telefonia cellulare
+ GRAI, //Numero di identificazione per beni a rendere,
+ GIAI, //Numero di identificazione globale per beni individuali
+ PRICE_PER_UNIT, //Prezzo per unità di misura
+ GCTIN, //Identificazione dei componenti di un prodotto
+ IBAN, //Numero di contocorrente bancario internazionale
+ PROD_TIME, //Data e ora di produzione
+ GSRN, //Numedo Globale di Relazione di Servizio
+ REF_NO, //Numero del bollettino di pagamento
+ COUPON_1, //Codice esteso per i coupons, UCC
+ COUPON_2, //Codice esteso per i coupons, UCC
+ COUPON_3, //Codice esteso per i coupons, UCC
+ INTERNAL_PART, //Informazioni concordate tra i partners commerciali
+ INTERNAL_1, //Informazioni interne
+ INTERNAL_2, //Informazioni interne
+ INTERNAL_3, //Informazioni interne
+ INTERNAL_4, //Informazioni interne
+ INTERNAL_5, //Informazioni interne
+ INTERNAL_6, //Informazioni interne
+ INTERNAL_7, //Informazioni interne
+ INTERNAL_8, //Informazioni interne
+ INTERNAL_9, //Informazioni interne
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModel.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModel.java
new file mode 100644
index 00000000..c7cb5aea
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModel.java
@@ -0,0 +1,40 @@
+package it.integry.integrywmsnative.core.ean128;
+
+public class Ean128AIModel implements Cloneable {
+
+
+ public Ean128AI AI;
+
+ public String code;
+
+ public int dataLength;
+
+ public boolean flagVariableLength;
+
+ public boolean flagOnlyNumeric;
+
+ public int decimalDigits;
+
+ public Ean128AIModel(Ean128AI AI, String code, int dataLength, boolean flagVariableLength, boolean flagOnlyNumeric, int decimalDigits) {
+ this.AI = AI;
+ this.code = code;
+ this.dataLength = dataLength;
+ this.flagVariableLength = flagVariableLength;
+ this.flagOnlyNumeric = flagOnlyNumeric;
+ this.decimalDigits = decimalDigits;
+ }
+
+ public Ean128AIModel(Ean128AI AI, String code, int dataLength, boolean flagVariableLength, boolean flagOnlyNumeric) {
+ this.AI = AI;
+ this.code = code;
+ this.dataLength = dataLength;
+ this.flagVariableLength = flagVariableLength;
+ this.flagOnlyNumeric = flagOnlyNumeric;
+ }
+
+ protected Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModelBij.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModelBij.java
new file mode 100644
index 00000000..a4a99183
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128AIModelBij.java
@@ -0,0 +1,209 @@
+package it.integry.integrywmsnative.core.ean128;
+
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Ean128AIModelBij {
+
+ private final Ean128AIModel[] _aiModelArray = new Ean128AIModel[]{
+ new Ean128AIModel(Ean128AI.SSCC, "^00", 18, false, true),
+ new Ean128AIModel(Ean128AI.GTIN, "^01", 14, false, true),
+ new Ean128AIModel(Ean128AI.CONTENT, "^02", 14, false, true),
+ new Ean128AIModel(Ean128AI.BATCH_LOT, "^10", 20, true, false),
+ new Ean128AIModel(Ean128AI.PROD_DATE, "^11", 6, false, true),
+ new Ean128AIModel(Ean128AI.DUE_DATE, "^12", 6, false, true),
+ new Ean128AIModel(Ean128AI.PACK_DATE, "^13", 6, false, true),
+ new Ean128AIModel(Ean128AI.BEST_BEFORE, "^15", 6, false, true),
+ new Ean128AIModel(Ean128AI.EXPIRY, "^17", 6, false, true),
+ new Ean128AIModel(Ean128AI.VARIANT, "^20", 2, false, true),
+ new Ean128AIModel(Ean128AI.SERIAL, "^21", 20, true, false),
+ new Ean128AIModel(Ean128AI.QTY_DATE_BATCH, "^22", 29, true, false),
+ new Ean128AIModel(Ean128AI.ADDITIONAL_ID, "^240", 30, true, false),
+ new Ean128AIModel(Ean128AI.CUST_PART_NO, "^241", 30, true, false),
+ new Ean128AIModel(Ean128AI.SECONDARY_SERIAL, "^250", 30, true, false),
+ new Ean128AIModel(Ean128AI.REF_TO_SOURCE, "^251", 30, true, false),
+ new Ean128AIModel(Ean128AI.VAR_COUNT, "^30", 8, true, true),
+ new Ean128AIModel(Ean128AI.NET_WEIGHT_KG, "^310(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_M, "^311(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_M, "^312(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_M, "^313(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_M2, "^314(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_L, "^315(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_M3, "^316(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_WEIGHT_LB, "^320(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_I, "^321(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_F, "^322(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_Y, "^323(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_I, "^324(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_F, "^325(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_Y, "^326(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_I, "^327(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_F, "^328(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_Y, "^329(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.CROSSWEIGHT_KG_LOG, "^330(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_M_LOG, "^331(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_M_LOG, "^332(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_M_LOG, "^333(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_M2_LOG, "^334(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_L_LOG, "^335(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_M3_LOG, "^336(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.CROSSWEIGHT_LB_LOG, "^340(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_I_LOG, "^341(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_F_LOG, "^342(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.LENGTH_Y_LOG, "^343(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_I_LOG, "^344(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_F_LOG, "^345(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.WIDTH_Y_LOG, "^346(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_I_LOG, "^347(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_F_LOG, "^348(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.HEIGHT_Y_LOG, "^349(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_I2, "^350(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_F2, "^351(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_Y2, "^352(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_I2_LOG, "^353(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_F2_LOG, "^354(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.AREA_Y2_LOG, "^355(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_WEIGHT_T, "^356(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_OZ, "^357(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_LB, "^360(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_G, "^361(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_Q_LOG, "^362(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_G_LOG, "^363(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_I3, "^364(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_F3, "^365(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.NET_VOLUME_Y3, "^366(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_I3_LOG, "^367(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_F3_LOG, "^368(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.VOLUME_Y3_LOG, "^369(\\d{1})", 6, false, true),
+ new Ean128AIModel(Ean128AI.COUNT, "^37", 8, true, true),
+ new Ean128AIModel(Ean128AI.AMOUNT, "^390(\\d{1})", 15, true, true),
+ new Ean128AIModel(Ean128AI.AMOUNT_ISO, "^391(\\d{1})", 18, true, true),
+ new Ean128AIModel(Ean128AI.PRICE, "^392(\\d{1})", 15, true, true),
+ new Ean128AIModel(Ean128AI.PRICE_ISO, "^393(\\d{1})", 18, true, true),
+ new Ean128AIModel(Ean128AI.ORDER_NUMBER, "^400", 30, true, false),
+ new Ean128AIModel(Ean128AI.CONSIGNMENT, "^401", 30, true, false),
+ new Ean128AIModel(Ean128AI.SHIPMENT_NO, "^402", 17, false, true),
+ new Ean128AIModel(Ean128AI.ROUTE, "^403", 30, true, false),
+ new Ean128AIModel(Ean128AI.SHIP_TO_LOC, "^410", 13, false, true),
+ new Ean128AIModel(Ean128AI.BILL_TO_LOC, "^411", 13, false, true),
+ new Ean128AIModel(Ean128AI.PURCHASE_FROM_LOC, "^412", 13, false, true),
+ new Ean128AIModel(Ean128AI.SHIP_FOR_LOC, "^413", 13, false, true),
+ new Ean128AIModel(Ean128AI.LOC_NO, "^414", 13, false, true),
+ new Ean128AIModel(Ean128AI.PAY_TO_LOC, "^415", 13, false, true),
+ new Ean128AIModel(Ean128AI.SHIP_TO_POST, "^420", 20, true, false),
+ new Ean128AIModel(Ean128AI.SHIP_TO_POST_ISO, "^421", 12, true, false),
+ new Ean128AIModel(Ean128AI.ORIGIN, "^422", 3, false, true),
+ new Ean128AIModel(Ean128AI.COUNTRY_INITIAL_PROCESS, "^423", 15, true, true),
+ new Ean128AIModel(Ean128AI.COUNTRY_PROCESS, "^424", 3, false, true),
+ new Ean128AIModel(Ean128AI.COUNTRY_DISASSEMBLY, "^425", 3, false, true),
+ new Ean128AIModel(Ean128AI.COUNTRY_FULL_PROCESS, "^426", 3, false, true),
+ new Ean128AIModel(Ean128AI.NSN, "^7001", 13, false, true),
+ new Ean128AIModel(Ean128AI.MEAT_CUT, "^7002", 30, true, false),
+ new Ean128AIModel(Ean128AI.DIMENSIONS, "^8001", 14, false, true),
+ new Ean128AIModel(Ean128AI.CMT_NO, "^8002", 20, true, false),
+ new Ean128AIModel(Ean128AI.GRAI, "^8003", 30, true, false),
+ new Ean128AIModel(Ean128AI.GIAI, "^8004", 30, true, false),
+ new Ean128AIModel(Ean128AI.PRICE_PER_UNIT, "^8005", 6, false, true),
+ new Ean128AIModel(Ean128AI.GCTIN, "^8006", 18, false, false),
+ new Ean128AIModel(Ean128AI.IBAN, "^8007", 30, true, false),
+ new Ean128AIModel(Ean128AI.PROD_TIME, "^8008", 12, true, true),
+ new Ean128AIModel(Ean128AI.GSRN, "^8018", 18, false, true),
+ new Ean128AIModel(Ean128AI.REF_NO, "^8020", 25, true, false),
+ new Ean128AIModel(Ean128AI.COUPON_1, "^8100", 6, false, true),
+ new Ean128AIModel(Ean128AI.COUPON_2, "^8101", 10, false, true),
+ new Ean128AIModel(Ean128AI.COUPON_3, "^8102", 2, false, true),
+ new Ean128AIModel(Ean128AI.INTERNAL_PART, "^90", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_1, "^91", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_2, "^92", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_3, "^93", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_4, "^94", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_5, "^95", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_6, "^96", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_7, "^97", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_8, "^98", 30, true, false),
+ new Ean128AIModel(Ean128AI.INTERNAL_9, "^99", 30, true, false)
+ };
+
+
+ public int checkAI(String aiToCheck) {
+ int count = -1;
+
+ if (aiToCheck.length() > 1) {
+ for (int i = 0; i < _aiModelArray.length; i++) {
+ final String groupSeparatorCharInHexForRegex = "\\x1D";
+ String codePattern = "";
+
+ if (aiToCheck.charAt(0) == (char) 29) {
+ codePattern += groupSeparatorCharInHexForRegex;
+ }
+
+ codePattern += _aiModelArray[i].code;
+
+
+ Pattern pattern = Pattern.compile(codePattern, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(aiToCheck);
+
+
+ if (matcher.find()) {
+ count = i;
+ MatchResult matchResult = matcher.toMatchResult();
+
+ if (matchResult.groupCount() >= 1) {
+ String digitsString = matchResult.group(1);
+ _aiModelArray[i].decimalDigits = Integer.parseInt(digitsString);
+ }
+
+ break;
+ }
+
+ }
+
+ }
+ return count;
+ }
+
+
+ public Ean128AIModel readAI(String aiToSearch) {
+
+ Ean128AIModel barcodeAIModel = null;
+
+ for (Ean128AIModel singleBarcodeAIModel : _aiModelArray) {
+ final String groupSeparatorCharInHexForRegex = "\\x1D";
+ String codePattern = "";
+
+ if (aiToSearch.charAt(0) == (char) 29) {
+ codePattern += groupSeparatorCharInHexForRegex;
+ }
+
+ codePattern += singleBarcodeAIModel.code;
+
+
+ Pattern pattern = Pattern.compile(codePattern, Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(aiToSearch);
+
+ if (matcher.matches()) {
+ try {
+ barcodeAIModel = (Ean128AIModel) singleBarcodeAIModel.clone();
+
+ MatchResult matchResult = matcher.toMatchResult();
+
+ if (matchResult.groupCount() > 1) {
+ String digitsString = matchResult.group(1);
+ barcodeAIModel.decimalDigits = Integer.parseInt(digitsString);
+ }
+ break;
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ return barcodeAIModel;
+ }
+
+ public Ean128AIModel getAI(int index) {
+ return _aiModelArray[index];
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128ISOValueModel.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128ISOValueModel.java
new file mode 100644
index 00000000..82aa3688
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128ISOValueModel.java
@@ -0,0 +1,8 @@
+package it.integry.integrywmsnative.core.ean128;
+
+public class Ean128ISOValueModel {
+
+ public String ISOCode;
+ public T Value;
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java
new file mode 100644
index 00000000..9286180c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java
@@ -0,0 +1,331 @@
+package it.integry.integrywmsnative.core.ean128;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.base.Callable;
+import it.integry.integrywmsnative.core.base.CallableII;
+import it.integry.integrywmsnative.core.rest.model.Ean128Model;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+
+public class Ean128Service {
+
+ public Ean128Model decode(BarcodeScanDTO barcodeScanDTO) throws Exception {
+ byte[] inputEan128ByteArr = barcodeScanDTO.getStringValue().replaceAll("" + ((char) 29), "|").getBytes();
+ Ean128AIModelBij ean128AIModelBij = new Ean128AIModelBij();
+
+ String aiCodeBuffer = "";
+
+ Ean128Model model = new Ean128Model();
+
+ for (int i = 0; i < inputEan128ByteArr.length; i++) {
+ aiCodeBuffer += (char) inputEan128ByteArr[i];
+
+ if (aiCodeBuffer.startsWith("|")) {
+ aiCodeBuffer = aiCodeBuffer.substring(1);
+ }
+
+ if (aiCodeBuffer.length() <= 5) {
+ int aiIndex = ean128AIModelBij.checkAI(aiCodeBuffer);
+
+ if (aiIndex != -1) {
+
+ Ean128AIModel aiModel = ean128AIModelBij.getAI(aiIndex);
+
+ StringBuilder aiValue = new StringBuilder();
+
+ if (!aiModel.flagVariableLength) {
+
+ for (int j = (i + 1); j < (i + 1) + aiModel.dataLength; j++) {
+ aiValue.append((char) inputEan128ByteArr[j]);
+ }
+
+ //aiValue = barcodeAsString.Substring(i + 1, aiModel.DataLength);
+ i += aiModel.dataLength;
+ } else {
+ String tempBuffer = "";
+
+ i++;
+
+ while (i < inputEan128ByteArr.length && i < (aiModel.dataLength + i)) {
+ byte currentChar = inputEan128ByteArr[i];
+
+ if (currentChar != 29 && currentChar != '|') { //Controllo carattere FNC1
+ tempBuffer += (char) currentChar;
+ } else {
+ break;
+ }
+
+ i++;
+ }
+
+ aiValue = new StringBuilder(tempBuffer.replace("\r", "").replace("\n", ""));
+ }
+
+ switch (aiModel.AI) {
+ case SSCC -> {
+ if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
+ aiValue = new StringBuilder(aiValue.substring(1));
+ }
+ model.Sscc = aiValue.toString();
+ }
+ case GTIN -> {
+ if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
+ aiValue = new StringBuilder(aiValue.substring(1));
+ }
+ model.Gtin = aiValue.toString();
+ }
+ case CONTENT -> {
+ if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
+ aiValue = new StringBuilder(aiValue.substring(1));
+ }
+ model.Content = aiValue.toString();
+ }
+ case BATCH_LOT -> model.BatchLot = aiValue.toString();
+ case PROD_DATE -> model.ProdDate = convertToDateTime(aiValue.toString());
+ case DUE_DATE -> model.DueDate = convertToDateTime(aiValue.toString());
+ case PACK_DATE -> model.PackDate = convertToDateTime(aiValue.toString());
+ case BEST_BEFORE ->
+ model.BestBefore = UtilityDate.formatDate(convertToDateTime(aiValue.toString()), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
+ case EXPIRY -> model.Expiry = UtilityDate.formatDate(convertToDateTime(aiValue.toString()), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
+ case VARIANT -> model.Variant = aiValue.toString();
+ case SERIAL -> model.Serial = aiValue.toString();
+ case QTY_DATE_BATCH -> model.QtyDateBatch = aiValue.toString();
+ case ADDITIONAL_ID -> model.AdditionalID = aiValue.toString();
+ case CUST_PART_NO -> model.CustPartNumber = aiValue.toString();
+ case SECONDARY_SERIAL -> model.SecondarySerial = aiValue.toString();
+ case REF_TO_SOURCE -> model.RefToSource = aiValue.toString();
+ case VAR_COUNT -> model.VarCount = aiValue.toString();
+ case NET_WEIGHT_KG ->
+ model.NetWeightKg = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_M ->
+ model.LengthM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_M ->
+ model.WidthM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_M ->
+ model.HeightM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_M2 ->
+ model.AreaM2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_L ->
+ model.NetVolumeL = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_M3 ->
+ model.NetVolumeM3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_WEIGHT_LB ->
+ model.NetWeightLb = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_I ->
+ model.LengthI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_F ->
+ model.LengthF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_Y ->
+ model.LengthY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_I ->
+ model.WidthI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_F ->
+ model.WidthF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_Y ->
+ model.WidthY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_I ->
+ model.HeightI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_F ->
+ model.HeightF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_Y ->
+ model.HeightY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case CROSSWEIGHT_KG_LOG ->
+ model.CrossweightKgLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case CROSSWEIGHT_LB_LOG ->
+ model.CrossweightLbLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_M_LOG ->
+ model.LengthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_M_LOG ->
+ model.WidthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_M_LOG ->
+ model.HeigthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_M2_LOG ->
+ model.AreaM2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_L_LOG ->
+ model.VolumeLLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_M3_LOG ->
+ model.VolumeM3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_I_LOG ->
+ model.LengthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_F_LOG ->
+ model.LengthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case LENGTH_Y_LOG ->
+ model.LengthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_I_LOG ->
+ model.WidthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_F_LOG ->
+ model.WidthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case WIDTH_Y_LOG ->
+ model.WidthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_I_LOG ->
+ model.HeigthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_F_LOG ->
+ model.HeigthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case HEIGHT_Y_LOG ->
+ model.HeigthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_I2 ->
+ model.AreaI2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_F2 ->
+ model.AreaF2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_Y2 ->
+ model.AreaY2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_I2_LOG ->
+ model.AreaI2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_F2_LOG ->
+ model.AreaF2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AREA_Y2_LOG ->
+ model.AreaY2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_WEIGHT_T ->
+ model.NetWeightT = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_OZ ->
+ model.NetVolumeOz = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_LB ->
+ model.NetVolumeLb = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_G ->
+ model.NetVolumeG = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_Q_LOG ->
+ model.VolumeQLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_G_LOG ->
+ model.VolumeGLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_I3 ->
+ model.NetVolumeI3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_F3 ->
+ model.NetVolumeF3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case NET_VOLUME_Y3 ->
+ model.NetVolumeY3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_I3_LOG ->
+ model.VolumeI3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_F3_LOG ->
+ model.VolumeF3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case VOLUME_Y3_LOG ->
+ model.VolumeY3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case COUNT -> model.Count = Integer.parseInt(aiValue.toString());
+ case AMOUNT ->
+ model.Amount = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case AMOUNT_ISO ->
+ model.AmountISO = convertToIsoValueModel(aiValue.toString(), aiModel.decimalDigits,
+ Double::parseDouble,
+ (input, input2) -> String.valueOf(convertToDecimalString(input, input2)));
+ case PRICE ->
+ model.Price = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
+ case PRICE_ISO ->
+ model.PriceISO = convertToIsoValueModel(aiValue.toString(), aiModel.decimalDigits,
+ Double::parseDouble,
+ (input, input2) -> String.valueOf(convertToDecimalString(input, input2)));
+ case ORDER_NUMBER -> model.OrderNumber = aiValue.toString();
+ case CONSIGNMENT -> model.Consignment = aiValue.toString();
+ case SHIPMENT_NO -> model.ShipmentNo = aiValue.toString();
+ case ROUTE -> model.Route = aiValue.toString();
+ case SHIP_TO_LOC -> model.ShipToLoc = aiValue.toString();
+ case BILL_TO_LOC -> model.BillToLoc = aiValue.toString();
+ case PURCHASE_FROM_LOC -> model.PurchaseFromLoc = aiValue.toString();
+ case SHIP_FOR_LOC -> model.ShipForLoc = aiValue.toString();
+ case LOC_NO -> model.LocationNumber = aiValue.toString();
+ case PAY_TO_LOC -> model.PayToLoc = aiValue.toString();
+ case SHIP_TO_POST -> model.ShipToPost = aiValue.toString();
+ case SHIP_TO_POST_ISO ->
+ model.ShipToPostISO = convertToIsoValueModel(aiValue.toString(), 0,
+ new Callable() {
+ @Override
+ public String call(String input) {
+ return input;
+ }
+ },
+ new CallableII() {
+ @Override
+ public String call(String input, Integer input2) {
+ return input;
+ }
+ });
+ case ORIGIN -> model.Origin = aiValue.toString();
+ case COUNTRY_INITIAL_PROCESS ->
+ model.ShipToPostISO = convertToIsoValueModel(aiValue.toString(), 0,
+ input -> input,
+ (input, input2) -> input);
+ case COUNTRY_PROCESS -> model.CountryProcess = aiValue.toString();
+ case COUNTRY_DISASSEMBLY -> model.CountryDisassembly = aiValue.toString();
+ case COUNTRY_FULL_PROCESS -> model.CountryFullProcess = aiValue.toString();
+ case NSN -> model.NSN = aiValue.toString();
+ case MEAT_CUT -> model.MeatCut = aiValue.toString();
+ case DIMENSIONS -> model.Dimensions = aiValue.toString();
+ case CMT_NO -> model.CmtNo = aiValue.toString();
+ case GRAI -> model.Grai = aiValue.toString();
+ case GIAI -> model.Giai = aiValue.toString();
+ case PRICE_PER_UNIT -> model.PricePerUnit = aiValue.toString();
+ case GCTIN -> model.Gctin = aiValue.toString();
+ case IBAN -> model.Iban = aiValue.toString();
+ case PROD_TIME -> model.ProdTime = convertToDateTime(aiValue.toString());
+ case GSRN -> model.Gsrn = aiValue.toString();
+ case REF_NO -> model.RefNo = aiValue.toString();
+ case COUPON_1 -> model.Coupon1 = aiValue.toString();
+ case COUPON_2 -> model.Coupon2 = aiValue.toString();
+ case COUPON_3 -> model.Coupon3 = aiValue.toString();
+ case INTERNAL_PART -> model.InternalPart = aiValue.toString();
+ case INTERNAL_1 -> model.Internal1 = aiValue.toString();
+ case INTERNAL_2 -> model.Internal2 = aiValue.toString();
+ case INTERNAL_3 -> model.Internal3 = aiValue.toString();
+ case INTERNAL_4 -> model.Internal4 = aiValue.toString();
+ case INTERNAL_5 -> model.Internal5 = aiValue.toString();
+ case INTERNAL_6 -> model.Internal6 = aiValue.toString();
+ case INTERNAL_7 -> model.Internal7 = aiValue.toString();
+ case INTERNAL_8 -> model.Internal8 = aiValue.toString();
+ case INTERNAL_9 -> model.Internal9 = aiValue.toString();
+ default -> {
+ }
+ }
+
+ aiCodeBuffer = "";
+ }
+ } else {
+ throw new Exception(String.format("Il barcode non è un EAN128 valido (%s)", new String(inputEan128ByteArr)));
+ }
+ }
+
+ return model;
+ }
+
+
+ private float convertToDecimalString(String sourceString, int numberOfdecimalDigits) {
+
+ int divider = (int) Math.pow(10, numberOfdecimalDigits);
+
+ return Float.parseFloat(sourceString) / divider;
+ }
+
+ private Ean128ISOValueModel convertToIsoValueModel(String sourceString, int numberOfDecimalDigits, Callable castFunc, CallableII splitFunc) {
+ String isoCode = sourceString.substring(0, 3);
+
+ T value = castFunc.call(splitFunc.call(sourceString.substring(3), numberOfDecimalDigits));
+
+ Ean128ISOValueModel isoModel = new Ean128ISOValueModel();
+ isoModel.ISOCode = isoCode;
+ isoModel.Value = value;
+
+ return isoModel;
+ }
+
+ private Date convertToDateTime(String sourceString) {
+ int year = Integer.parseInt(sourceString.substring(0, 2));
+
+ //Se l'anno è minore di 50 indica 2000-2050 altrimenti 1951-1999
+ int correctedYear = year <= 50 ? (2000 + year) : (1900 + year);
+
+ int month = Integer.parseInt(sourceString.substring(2, 4));
+ int day = Integer.parseInt(sourceString.substring(4, 6));
+
+ Date d = null;
+
+ try {
+ SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
+ d = formatter.parse(day + "/" + month + "/" + correctedYear);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ return d;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java
new file mode 100644
index 00000000..82d3d8a4
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java
@@ -0,0 +1,10 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public final class InvalidCodMdepException extends Exception {
+ public InvalidCodMdepException() {
+ super(UtilityResources.getString(R.string.invalid_codmdep));
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
index ffaf32b9..e1b424d0 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
@@ -7,6 +7,7 @@ import java.util.Date;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityString;
public class MtbColr extends EntityBase {
@@ -372,7 +373,7 @@ public class MtbColr extends EntityBase {
}
public String getDescrizione() {
- return descrizione;
+ return UtilityString.isNull(descrizione, getMtbAart() != null ? UtilityString.isNull(getMtbAart().getDescrizioneEstesa(), getMtbAart().getDescrizione()) : null);
}
public MtbColr setDescrizione(String descrizione) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java
index acfd8b69..dcaaa84a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java
@@ -38,6 +38,7 @@ public class MvwSitArtUdcDetInventario {
private BigDecimal pesoLordoKg;
private String codJfas;
private MtbAart mtbAart;
+ private Integer numOrd;
public String getGestione() {
return gestione;
@@ -282,6 +283,15 @@ public class MvwSitArtUdcDetInventario {
return this;
}
+ public Integer getNumOrd() {
+ return numOrd;
+ }
+
+ public MvwSitArtUdcDetInventario setNumOrd(Integer numOrd) {
+ this.numOrd = numOrd;
+ return this;
+ }
+
public MtbColr toMtbColr() {
return new MtbColr()
.setCodJcom(getCodJcom())
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
index f6e5bacf..51474031 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
@@ -3,32 +3,24 @@ package it.integry.integrywmsnative.core.rest.consumers;
import javax.inject.Singleton;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.ean128.Ean128Service;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
-import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
@Singleton
public class BarcodeRESTConsumer extends _BaseRESTConsumer {
+ private final Ean128Service ean128Service;
+
+ public BarcodeRESTConsumer(Ean128Service ean128Service) {
+ this.ean128Service = ean128Service;
+ }
+
public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
-
- String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|");
-
- BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class);
- barcodeRESTConsumerService.decodeEan128(ean128).enqueue(new Callback<>() {
- @Override
- public void onResponse(Call> call, Response> response) {
- analyzeAnswer(response, "DecodeEan128", onComplete, onFailed);
- }
-
- @Override
- public void onFailure(Call> call, Throwable t) {
- onFailed.run(new Exception(t));
- }
- });
+ try {
+ onComplete.run(this.ean128Service.decode(barcodeObj));
+ } catch (Exception e){
+ onFailed.run(e);
+ }
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java
index ad4bb337..93853e04 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DepositoRESTConsumer.java
@@ -9,7 +9,6 @@ import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbDepo;
@Singleton
@@ -28,27 +27,4 @@ public class DepositoRESTConsumer extends _BaseRESTConsumer {
}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_depo", typeOfObjectsList, onComplete, onFailed);
}
-
- public void getDepoByCodMdep(String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) {
-
- MtbDepo mtbDepo = new MtbDepo();
- mtbDepo.setCodMdep(codMdep);
- mtbDepo.setOperation(CommonModelConsts.OPERATION.SELECT);
- mtbDepo.setOnlyPkMaster(false);
-
- this.entityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback<>() {
- @Override
- public void onSuccess(List value) {
- if (value != null && value.size() > 0) {
- onComplete.run(value.get(0));
- }
- }
-
- @Override
- public void onFailed(Exception ex) {
- onFailed.run(ex);
- }
- }, MtbDepo.class);
- }
-
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java
index 15a94255..1a23b78f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/EntityRESTConsumer.java
@@ -121,11 +121,12 @@ public class EntityRESTConsumer extends _BaseRESTConsumer {
}
+ @Deprecated
public void selectEntity(T entityToSave, final ISimpleOperationCallback> callback, Class type) {
EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class);
Call> request = service.processEntity(entityToSave);
- request.enqueue(new Callback>() {
+ request.enqueue(new Callback<>() {
@Override
public void onResponse(Call> call, Response> response) {
if (response.isSuccessful()) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
index d0a00e42..01b67698 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
@@ -17,6 +17,7 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -71,6 +72,48 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
});
}
+ public void getGiacenzeInPosizione(List posizioni, boolean withTestataCollo, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
+ giacenzaRESTConsumerService.retrieveAvailableItems(posizioni, withTestataCollo).enqueue(new Callback<>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "getGiacenzeInPosizione", inventarioList -> {
+
+ List codMarts = Stream.of(inventarioList)
+ .map(x -> x.getCodMart().trim())
+ .toList();
+
+ mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
+ for (var articoli : inventarioList) {
+ List mvwSitArtUdcDetInventario = articoli.getMvwSitArtUdcDetInventarioDTO();
+ if (mvwSitArtUdcDetInventario != null && !mvwSitArtUdcDetInventario.isEmpty()){
+ for (var row : mvwSitArtUdcDetInventario){
+ MtbAart foundMtbAart = null;
+ Optional mtbAartOpt = Stream.of(mtbAarts)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
+ .findFirst();
+
+ if (mtbAartOpt.isPresent()) {
+ foundMtbAart = mtbAartOpt.get();
+ }
+
+ row.setMtbAart(foundMtbAart);
+ }
+ }
+ }
+
+ onComplete.run(inventarioList);
+ }, onFailed);
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
public void getGiacenzeByArticolo(String codMart, String partitaMag, RunnableArgs> onComplete, RunnableArgs onFailed) {
GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
var serviceRESTResponseCall =
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java
index a965d535..1a0705f9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java
@@ -2,11 +2,16 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
+import it.integry.integrywmsnative.core.model.DtbDoct;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
+import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
+import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
import retrofit2.Call;
+import retrofit2.http.Body;
import retrofit2.http.GET;
+import retrofit2.http.POST;
import retrofit2.http.Query;
public interface GiacenzaRESTConsumerService {
@@ -15,6 +20,9 @@ public interface GiacenzaRESTConsumerService {
Call>> retrieveAvailableItems(
@Query("posizione") String posizione);
+ @POST("wms/giacenza/availableItemsByPosizione")
+ Call>> retrieveAvailableItems(@Body List posizioni, @Query("withTestataCollo") boolean withTestataCollo);
+
@GET("wms/giacenza/availableItemsByArticolo")
Call>> retrieveAvailableItemsByArt(
@Query("codMart") String codMart);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java
index 6ff91204..53c70d65 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java
@@ -64,10 +64,10 @@ public class MesRESTConsumer extends _BaseRESTConsumer {
}
- public void getOrdiniLavorazione(Date dateStart, String flagEvaso, String codJfas, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void getOrdiniLavorazione(String flagEvaso, RunnableArgs> onComplete, RunnableArgs onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
- mesRESTConsumerService.getOrdiniLavorazione(UtilityDate.formatDate(dateStart, UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH), flagEvaso, codJfas)
+ mesRESTConsumerService.getOrdiniLavorazione(flagEvaso)
.enqueue(new Callback>>() {
@Override
public void onResponse(Call>> call, Response>> response) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java
index bf919418..43422dad 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java
@@ -20,7 +20,7 @@ public interface MesRESTConsumerService {
@GET("mes_v2/getOrdiniLavorazione")
- Call>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
+ Call>> getOrdiniLavorazione(@Query("flagEvaso") String flagEvaso);
@GET("mes_v2/getOrdiniLavorazione")
Call>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas, @Query("codAnag") String codAnag);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java
index e7d9e757..98bcacec 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java
@@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.rest.model;
+import java.util.Date;
+
+import it.integry.integrywmsnative.core.ean128.Ean128ISOValueModel;
public class Ean128Model {
@@ -16,13 +19,13 @@ public class Ean128Model {
public String BatchLot;
///Data di produzione (yymmdd) 0~50 (2000~2050) - 51~99 (1951~1999)
- public String ProdString;
+ public Date ProdDate;
///Data di scadenza pagamento fattura
- public String DueString;
+ public Date DueDate;
///Data di confezionamento
- public String PackString;
+ public Date PackDate;
///Data minima di validità
public String BestBefore;
@@ -37,7 +40,7 @@ public class Ean128Model {
public String Serial;
///Dati supplementari per prodotti farmaceutici
- public String QtyStringBatch;
+ public String QtyDateBatch;
///Numedi di identificazione supplementare del prodotto
public String AdditionalID;
@@ -216,9 +219,15 @@ public class Ean128Model {
///Importo da pagare singola area monetaria
public Float Amount;
+ ///Importo da pagare con codice valuta ISO
+ public Ean128ISOValueModel AmountISO;
+
///Importo da pagare singola unità monetaria (prodotti a peso variabile)
public Float Price;
+ ///Importo da pagare con codice valuta ISO (prodotti a peso variabile)
+ public Ean128ISOValueModel PriceISO;
+
///Numero d'ordine d'acquisto cliente
public String OrderNumber;
@@ -252,9 +261,15 @@ public class Ean128Model {
///Codice postale "Spedire a, Consegnare a" (nazionale)
public String ShipToPost;
+ ///Codice postale "Spedire a, Consegnare a" con codice nazione ISO
+ public Ean128ISOValueModel ShipToPostISO;
+
///Paese di origine del prodotto
public String Origin;
+ ///Paese di lavorazione iniziale del prodotto con codice nazionale ISO
+ public Ean128ISOValueModel CountryInitialProcess;
+
///Paese di lavorazione con codice nazionale ISO
public String CountryProcess;
@@ -292,7 +307,7 @@ public class Ean128Model {
public String Iban;
///Data e ora di produzione
- public String ProdTime;
+ public Date ProdTime;
///Numedo Globale di Relazione di Servizio
public String Gsrn;
@@ -313,7 +328,7 @@ public class Ean128Model {
public String InternalPart;
///Informazioni interne
- public String Internal1; //USED FOR COD_MART
+ public String Internal1;
///Informazioni interne
public String Internal2;
@@ -338,5 +353,4 @@ public class Ean128Model {
///Informazioni interne
public String Internal9;
-
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/udc/CreateUDCRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/udc/CreateUDCRequestDTO.java
index 119da115..f43e56c9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/udc/CreateUDCRequestDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/udc/CreateUDCRequestDTO.java
@@ -9,7 +9,7 @@ public class CreateUDCRequestDTO {
private String serCollo;
private String codAnag;
private String codTcol;
-
+ private String barcodeUl;
private String annotazioni;
private List orders;
@@ -60,6 +60,15 @@ public class CreateUDCRequestDTO {
return this;
}
+ public String getBarcodeUl() {
+ return barcodeUl;
+ }
+
+ public CreateUDCRequestDTO setBarcodeUl(String barcodeUl) {
+ this.barcodeUl = barcodeUl;
+ return this;
+ }
+
public String getAnnotazioni() {
return annotazioni;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
index e9abf04a..0de59f8e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
@@ -71,6 +71,9 @@ public class DBSettingsModel {
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
private boolean flagAllowULRecoverAccettazioneBolla = true;
private boolean flagOverflowQuantityWarning = false;
+ private String viewPosizioni;
+ private boolean flagDeleteRowOnClose = false;
+ private boolean flagAllowBarcodeFornitore = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -576,4 +579,31 @@ public class DBSettingsModel {
this.groupPoductionByCommodityGroup = groupPoductionByCommodityGroup;
return this;
}
+
+ public String getViewPosizioni() {
+ return viewPosizioni;
+ }
+
+ public DBSettingsModel setViewPosizioni(String viewPosizioni) {
+ this.viewPosizioni = viewPosizioni;
+ return this;
+ }
+
+ public boolean isFlagDeleteRowOnClose() {
+ return flagDeleteRowOnClose;
+ }
+
+ public DBSettingsModel setFlagDeleteRowOnClose(boolean flagDeleteRowOnClose) {
+ this.flagDeleteRowOnClose = flagDeleteRowOnClose;
+ return this;
+ }
+
+ public boolean isFlagAllowBarcodeFornitore() {
+ return flagAllowBarcodeFornitore;
+ }
+
+ public DBSettingsModel setFlagAllowBarcodeFornitore(boolean flagAllowBarcodeFornitore) {
+ this.flagAllowBarcodeFornitore = flagAllowBarcodeFornitore;
+ return this;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
index 97fe2c86..11193892 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
@@ -242,6 +242,11 @@ public class SettingsManager {
.setSection("ACCETTAZIONE")
.setKeySection("FLAG_AUTO_OPEN_NEW_UL")
.setSetter(dbSettingsModelIstance::setFlagCanAutoOpenNewULAccettazione));
+ stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
+ .setGestName("PICKING")
+ .setSection("ACCETTAZIONE")
+ .setKeySection("FLAG_DELETE_ROW_ON_CLOSE")
+ .setSetter(dbSettingsModelIstance::setFlagDeleteRowOnClose));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
@@ -278,6 +283,11 @@ public class SettingsManager {
.setKeySection("FLAG_GROUP_BY_GRP_MERC")
.setSetter(dbSettingsModelIstance::setGroupPoductionByCommodityGroup)
.setDefaultValue(false));
+ stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
+ .setGestName("PICKING")
+ .setSection("PRODUZIONE")
+ .setKeySection("VIEW_POSIZIONI")
+ .setSetter(dbSettingsModelIstance::setViewPosizioni));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
@@ -483,6 +493,12 @@ public class SettingsManager {
.setKeySection("FLAG_OVERFLOW_QUANTITY_WARNING")
.setSetter(dbSettingsModelIstance::setFlagOverflowQuantityWarning)
.setDefaultValue(false));
+ stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
+ .setGestName("PICKING")
+ .setSection("ACCETTAZIONE")
+ .setKeySection("FLAG_ALLOW_BARCODE_FORNITORE")
+ .setSetter(dbSettingsModelIstance::setFlagAllowBarcodeFornitore)
+ .setDefaultValue(false));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/sound/SoundAlertService.java b/app/src/main/java/it/integry/integrywmsnative/core/sound/SoundAlertService.java
new file mode 100644
index 00000000..04cb10d8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/sound/SoundAlertService.java
@@ -0,0 +1,40 @@
+package it.integry.integrywmsnative.core.sound;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+
+import it.integry.integrywmsnative.R;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+@Singleton
+public class SoundAlertService {
+
+ private final Context mApplicationContext;
+
+ private MediaPlayer successPlayer;
+ private MediaPlayer warningPlayer;
+
+ public SoundAlertService(Context context) {
+ this.mApplicationContext = context;
+ }
+
+ @Inject
+ public void init() {
+ successPlayer = MediaPlayer.create(this.mApplicationContext, R.raw.success_sound);
+ warningPlayer = MediaPlayer.create(this.mApplicationContext, R.raw.warning_sound);
+ }
+
+ public void success() {
+ if (successPlayer != null) {
+ successPlayer.start();
+ }
+ }
+
+ public void warning() {
+ if (warningPlayer != null) {
+ warningPlayer.start();
+ }
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
index 2d8437da..2d8bec0e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
@@ -25,7 +25,7 @@ public class UtilityBarcode {
int currentYear = calendar.get(Calendar.YEAR);
String fullYear = "20" + UtilityBarcode.getAnnoColloFromULAnonima(barcode);
- return fullYear.equalsIgnoreCase("" + currentYear);
+ return fullYear.equalsIgnoreCase(String.valueOf(currentYear));
}
public static boolean isEtichetta128(BarcodeScanDTO barcodeScanDTO) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDB.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDB.java
index c80cc30e..5aa577b8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDB.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDB.java
@@ -1,7 +1,12 @@
package it.integry.integrywmsnative.core.utility;
+import com.annimon.stream.Stream;
+
+import org.apache.commons.lang3.StringUtils;
+
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.List;
public class UtilityDB {
@@ -32,4 +37,9 @@ public class UtilityDB {
return valueString;
}
+ public static String listValueToString(List lista) {
+ lista = Stream.of(lista).map(UtilityDB::valueToString).toList();
+ return StringUtils.join(lista,",");
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java
index 9173db1c..20ff7fc9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java
@@ -184,6 +184,16 @@ public class UtilityDate {
} else return null;
}
+ public static String formatDate(String dateToFormat, String format) {
+ if (dateToFormat != null) {
+ LocalDateTime data = recognizeLocalDateTimeWithExceptionHandler(dateToFormat);
+ if (data != null) {
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
+ return data.format(dateTimeFormatter);
+ }else return null;
+ } else return null;
+ }
+
public static boolean isBeforeToday(LocalDateTime inputDate) {
return inputDate != null && inputDate.toLocalDate().isBefore(getNow());
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySHA1.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySHA1.java
new file mode 100644
index 00000000..746b9e4e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySHA1.java
@@ -0,0 +1,31 @@
+package it.integry.integrywmsnative.core.utility;
+
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+
+public class UtilitySHA1 {
+
+
+ public static String getSha1Hex(String clearString)
+ {
+ try
+ {
+ MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
+ messageDigest.update(clearString.getBytes(StandardCharsets.UTF_8));
+ byte[] bytes = messageDigest.digest();
+ StringBuilder buffer = new StringBuilder();
+ for (byte b : bytes)
+ {
+ buffer.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
+ }
+ return buffer.toString();
+ }
+ catch (Exception ignored)
+ {
+ ignored.printStackTrace();
+ return null;
+ }
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java
index c051a2b8..d726e2d4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java
@@ -713,7 +713,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
this.fabPopupMenu.dismiss();
this.onLoadingStarted();
- this.mViewModel.createNewLU(null, null, false, () -> {
+ this.mViewModel.createNewLU(null, null, null, false, () -> {
this.onLoadingEnded();
});
}
@@ -929,6 +929,9 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
noLUPresent.set(true);
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
+
+ this.refreshList();
+
if (this.mShouldCloseActivity) super.onBackPressed();
});
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java
index a83b471a..cbd87f03 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordini_picking;
import dagger.Module;
import dagger.Provides;
+import it.integry.integrywmsnative.core.ean128.Ean128Service;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer;
@@ -33,14 +34,15 @@ public class AccettazioneOrdiniPickingModule {
PrinterRESTConsumer printerRESTConsumer,
AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
- ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) {
+ ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
+ Ean128Service ean128Service) {
return new AccettazioneOrdiniPickingViewModel(articoloRESTConsumer,
barcodeRESTConsumer,
colliMagazzinoRESTConsumer,
printerRESTConsumer,
accettazioneOrdiniPickingRESTConsumer,
colliAccettazioneRESTConsumer,
- colliLavorazioneRESTConsumer);
+ colliLavorazioneRESTConsumer, ean128Service);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java
index 85095aec..e628e7c5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java
@@ -16,6 +16,7 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
+import it.integry.integrywmsnative.core.ean128.Ean128Service;
import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException;
import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException;
import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException;
@@ -31,6 +32,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol;
+import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
@@ -40,6 +42,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsu
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliCaricoRESTConsumerInterface;
+import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
import it.integry.integrywmsnative.core.rest.model.udc.CloseUDCRequestDTO;
@@ -55,7 +58,6 @@ 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.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.HistoryMtbAartDTO;
@@ -74,6 +76,7 @@ public class AccettazioneOrdiniPickingViewModel {
private final AccettazioneOrdiniPickingRESTConsumer mAccettazioneOrdiniPickingRESTConsumer;
private final ColliAccettazioneRESTConsumer mColliAccettazioneRESTConsumer;
private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
+ private final Ean128Service mEan128Service;
private ColliCaricoRESTConsumerInterface mColliCaricoRESTConsumer;
@@ -95,7 +98,8 @@ public class AccettazioneOrdiniPickingViewModel {
PrinterRESTConsumer printerRESTConsumer,
AccettazioneOrdiniPickingRESTConsumer accettazioneOrdiniPickingRESTConsumer,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
- ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) {
+ ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
+ Ean128Service ean128Service) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
@@ -103,6 +107,7 @@ public class AccettazioneOrdiniPickingViewModel {
this.mAccettazioneOrdiniPickingRESTConsumer = accettazioneOrdiniPickingRESTConsumer;
this.mColliAccettazioneRESTConsumer = colliAccettazioneRESTConsumer;
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
+ this.mEan128Service = ean128Service;
}
@@ -209,7 +214,11 @@ public class AccettazioneOrdiniPickingViewModel {
//dell'etichetta anonima
this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
} else {
- this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
+ if (SettingsManager.iDB().isFlagAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
+ this.executeSSCCFornitore(barcodeScanDTO, onComplete);
+ } else {
+ this.processBarcodeNotOpenedLU(barcodeScanDTO, null, onComplete);
+ }
}
} else {
@@ -221,6 +230,18 @@ public class AccettazioneOrdiniPickingViewModel {
}
}
+ private void executeSSCCFornitore(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
+ try {
+ Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO);
+
+ //Nel caso trovo un SSCC lo aggiungo
+ this.processBarcodeNotOpenedLU(barcodeScanDTO, ean128Model.Sscc, onComplete);
+
+ } catch (Exception e) {
+ this.sendError(e);
+ }
+ }
+
private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
@@ -233,6 +254,7 @@ public class AccettazioneOrdiniPickingViewModel {
try {
numCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue());
this.createNewLU(
+ null,
numCollo,
CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, true, onComplete);
} catch (Exception ex) {
@@ -246,12 +268,17 @@ public class AccettazioneOrdiniPickingViewModel {
}, this::sendError);
}
- private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
+ private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, String customSSCC, Runnable onComplete) {
this.createNewLU(
+ customSSCC,
null,
null,
false,
- () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete));
+ () -> {
+ if(UtilityString.isNullOrEmpty(customSSCC))
+ processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
+ else onComplete.run();
+ });
}
private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
@@ -260,7 +287,6 @@ public class AccettazioneOrdiniPickingViewModel {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
-
} else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) {
//Applico filtro per posizione
this.executeEtichettaPosizione(barcodeScanDTO, onComplete);
@@ -269,7 +295,6 @@ public class AccettazioneOrdiniPickingViewModel {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
-
} else {
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
}
@@ -367,7 +392,7 @@ public class AccettazioneOrdiniPickingViewModel {
}
}
- public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) {
+ public void createNewLU(String customSSCC, Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) {
this.sendOnInfoAggiuntiveRequest((additionalNotes, tCol) -> {
final List orders = Stream.of(this.mOrders)
@@ -377,8 +402,8 @@ public class AccettazioneOrdiniPickingViewModel {
.setDataOrd(UtilityDate.toLocalDate(x.getDataD()))
.setNumOrd(x.getNumero());
- if(x.getGestioneEnum() == GestioneEnum.PRODUZIONE) {
- if(x.isOrdTrasf())
+ if (x.getGestioneEnum() == GestioneEnum.PRODUZIONE) {
+ if (x.isOrdTrasf())
createUDCRequestOrderDTO.setGestione(GestioneEnum.ACQUISTO.getText());
else
createUDCRequestOrderDTO.setGestione(GestioneEnum.LAVORAZIONE.getText());
@@ -396,6 +421,7 @@ public class AccettazioneOrdiniPickingViewModel {
.setCodTcol(tCol != null ? tCol.getCodTcol() : null)
.setNumCollo(customNumCollo)
.setSerCollo(customSerCollo)
+ .setBarcodeUl(customSSCC)
.setOrders(orders);
this.mColliCaricoRESTConsumer.createUDC(createUDCRequestDTO, createdUDS -> {
@@ -782,11 +808,40 @@ public class AccettazioneOrdiniPickingViewModel {
}
private void postCloseOperations() {
+ this.calculateQtaDaEvadere();
this.mCurrentMtbColt = null;
this.sendLUClosed();
this.sendOnLoadingEnded();
}
+ private void calculateQtaDaEvadere() {
+ if (SettingsManager.iDB().isFlagDeleteRowOnClose()) {
+ for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) {
+ List withdrawMtbColrs = pickingObjectDTO.getWithdrawMtbColrs();
+ BigDecimal qtaEvasa = BigDecimal.ZERO;
+ BigDecimal numCnf = BigDecimal.ZERO;
+
+ if (withdrawMtbColrs.size() > 0) {
+ qtaEvasa = Stream.of(withdrawMtbColrs)
+ .map(MtbColr::getQtaCol)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ numCnf = Stream.of(withdrawMtbColrs)
+ .map(MtbColr::getNumCnf)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+
+ BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaDaEvadere();
+ pickingObjectDTO.getSitArtOrdDTO().setQtaDaEvadere(qtaDaEvadere.subtract(qtaEvasa));
+
+ BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfDaEvadere();
+ pickingObjectDTO.getSitArtOrdDTO().setNumCnfDaEvadere(numCnfDaEvadere.subtract(numCnf));
+
+ pickingObjectDTO.setWithdrawMtbColrs(new ArrayList<>());
+ }
+ }
+ }
+
private void deleteLU(Runnable onComplete) {
DeleteULRequestDTO deleteULRequestDTO = new DeleteULRequestDTO()
.setMtbColt(this.mCurrentMtbColt);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java
index 60a694e3..3edb1a81 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java
@@ -3,10 +3,9 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
-import com.annimon.stream.Stream;
-
import java.util.Date;
import java.util.List;
+import java.util.stream.Collectors;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException;
@@ -34,24 +33,11 @@ public class DialogSelectDocInfoViewModel extends ViewModel {
private final MutableLiveData noteRequired = new MutableLiveData<>(false);
public DialogSelectDocInfoViewModel() {
- tipoDoc.observeForever(val ->
- fornitoreRequired.postValue(
- val != null &&
- (val.getGestioneDoc().equals("T") ||
- val.getGestioneDoc().equals("A") ||
- (val.getGestioneDoc().equals("P") &&
- !val.getGestione().equals("L")))));
+ tipoDoc.observeForever(val -> fornitoreRequired.postValue(val != null && (val.getGestioneDoc().equals("T") || val.getGestioneDoc().equals("A") || (val.getGestioneDoc().equals("P") && !val.getGestione().equals("L")))));
- tipoDoc.observeForever(val ->
- documentRequired.postValue(
- val != null &&
- val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L")));
+ tipoDoc.observeForever(val -> documentRequired.postValue(val != null && val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L")));
- tipoDoc.observeForever(val ->
- noteRequired.postValue(
- val != null &&
- val.getGestioneDoc().equals("P") &&
- val.getGestione().equals("L")));
+ tipoDoc.observeForever(val -> noteRequired.postValue(val != null && val.getGestioneDoc().equals("P") && val.getGestione().equals("L")));
}
public MutableLiveData> getAvailableFornitori() {
@@ -60,18 +46,15 @@ public class DialogSelectDocInfoViewModel extends ViewModel {
public void setFornitori(List fornitori) {
tipoDoc.observeForever(val -> {
- availableFornitori.postValue(Stream.of(fornitori)
- .filter(forn -> {
- if (val.getGestioneDoc().equalsIgnoreCase("T")) {
- return forn.getTipoAnag().equalsIgnoreCase("D") &&
- forn.getGestioneAnag().equalsIgnoreCase(
- val.getGestione().equalsIgnoreCase("V") ? "V" : "L"
- );
- } else {
- return forn.getTipoAnag().equalsIgnoreCase("F");
- }
- })
- .toList());
+ List availableFornitoriList = fornitori.stream().filter(forn -> {
+ if (val.getGestioneDoc().equalsIgnoreCase("T")) {
+ return forn.getTipoAnag().equalsIgnoreCase("D") && forn.getGestioneAnag().equalsIgnoreCase(val.getGestione().equalsIgnoreCase("V") ? "V" : "L");
+ } else {
+ return forn.getTipoAnag().equalsIgnoreCase("F");
+ }
+ }).collect(Collectors.toList());
+
+ availableFornitori.postValue(availableFornitoriList);
});
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java
index b96a38e6..2b55bb45 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java
@@ -22,8 +22,10 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilitySHA1;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.CheckFornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO;
@@ -201,8 +203,12 @@ public class DocInterniEditFormViewModel {
private SaveDTO getSaveDto() {
SqlMtbColt document = this.getDocument();
+
+ String UUID = SettingsManager.i().getUserSession().getDeviceId() + "-" + document.getId();
+ UUID = UtilitySHA1.getSha1Hex(UUID);
+
SaveDTO saveDTO = new SaveDTO();
- saveDTO.setUUID(String.valueOf(document.getId()));
+ saveDTO.setUUID(UUID);
saveDTO.setIdDisp("1");
saveDTO.setGestione(document.getGestione());
saveDTO.setCodMdep(document.getCodMdep());
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java
index 7af712ed..bbb66d67 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java
@@ -25,6 +25,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.ui.ContenutoBancaleListAdapter;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
@@ -124,9 +125,10 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
}
private void initColloInfo() {
- mDepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> {
- descrizioneDepo.set("(" + depo.getDescrizione() + ")");
- }, this::onError);
+ SettingsManager.iDB().getAvailableCodMdep().stream()
+ .filter(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.get().getCodMdep()))
+ .findFirst()
+ .ifPresent(x -> descrizioneDepo.set("(" + x.getDescrizione() + ")"));
}
private void initFab() {
@@ -138,7 +140,7 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.contenuto_bancale_fab_menu, fabPopupMenu.getMenu());
- if(mtbColt.get().isDocumentPresent()){
+ if (mtbColt.get().isDocumentPresent()) {
fabPopupMenu.getMenu().removeItem(R.id.delete_ul);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java
index 6f28e59c..9b9e05f4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliViewModel.java
@@ -26,18 +26,16 @@ public class ListaBancaliViewModel {
public void dispatchMtbColt(MtbColt mtbColtToDispatch, boolean onlyResiduo, RunnableArgs onComplete) {
this.sendOnLoadingStarted();
- new Thread(() -> {
- mColliMagazzinoRESTConsumer.getByTestata(mtbColtToDispatch, onlyResiduo, false, mtbColt -> {
- this.sendOnLoadingEnded();
+ mColliMagazzinoRESTConsumer.getByTestata(mtbColtToDispatch, onlyResiduo, false, mtbColt -> {
+ this.sendOnLoadingEnded();
- ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>();
- if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
- mtbColtToDispatch.setMtbColr(mtbColrObservableArrayList);
+ ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>();
+ if (mtbColt != null && mtbColt.getMtbColr() != null)
+ mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
+ mtbColtToDispatch.setMtbColr(mtbColrObservableArrayList);
- onComplete.run(mtbColtToDispatch);
- }, this::sendError);
-
- }).start();
+ onComplete.run(mtbColtToDispatch);
+ }, this::sendError);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
index de821f7b..2686d2b0 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
@@ -213,10 +213,16 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
(recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA ||
recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) {
+ String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
+ if(recoveredMtbColtDto.getTestateOrdini() != null &&
+ !recoveredMtbColtDto.getTestateOrdini().isEmpty()){
+ codMdep = recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep();
+ }
+
var closeUDSRequestDto = new CloseUDSRequestDTO()
.setMtbColt(recoveredMtbColt)
//.setPrintSSCC(shouldPrint)
- .setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep());
+ .setOrderCodMdep(codMdep);
RunnableArgs onRequestComplete = closeUDSResponseDto -> {
colliDataRecoverService.closeSession(recoveredMtbColtID);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoBindings.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoBindings.java
index 14683904..b4426983 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoBindings.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoBindings.java
@@ -7,7 +7,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutom
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterClienteLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterDepositoLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
-import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
+import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaeseLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java
index e3fe910c..04534562 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java
@@ -60,7 +60,7 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterAutom
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterClienteLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterDepositoLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
-import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
+import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaeseLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
index b9007129..4d3c07f1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
@@ -8,6 +8,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.StringRes;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
@@ -93,10 +94,11 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
// Required empty public constructor
}
- public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) {
+ public static PickingLiberoFragment newInstance(@StringRes int title, GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) {
PickingLiberoFragment fragment = new PickingLiberoFragment();
Bundle args = new Bundle();
+ args.putInt("title", title);
args.putString("gestione", gestioneEnum.getText());
args.putBoolean("askCliente", askCliente);
args.putBoolean("askLineaProd", askLineaProd);
@@ -108,7 +110,6 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
mToolbarTitleText = titleText;
- mToolbarTitleText.setText(context.getText(R.string.free_picking_title_fragment).toString());
}
@Override
@@ -119,6 +120,9 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione"));
mAskCliente = getArguments().getBoolean("askCliente");
mAskLineaProd = getArguments().getBoolean("askLineaProd");
+
+
+ mToolbarTitleText.setText(getText(getArguments().getInt("title")).toString());
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
index 6d727dbb..48c17530 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
@@ -13,6 +13,7 @@ import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
@@ -211,7 +212,14 @@ public class PickingLiberoViewModel {
}
} else if (mtbColtList.size() == 1) {
this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
- pickMerceULtoUL(mtbColt, articolo, onComplete);
+
+ boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
+ .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColt.getCodMdep()));
+
+ if (codMdepIsValid) {
+ pickMerceULtoUL(mtbColt, articolo, onComplete);
+ } else this.sendError(new InvalidCodMdepException());
+
}, this::sendError);
} else {
this.sendError(new TooManyLUFoundInMonoLUPositionException());
@@ -235,7 +243,14 @@ public class PickingLiberoViewModel {
if (mtbColtScanned == null) {
this.sendError(new NoLUFoundException());
} else if ((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) {
- pickMerceULtoUL(mtbColtScanned, onComplete);
+
+ boolean codMdepIsValid = Stream.of(SettingsManager.iDB().getAvailableCodMdep())
+ .anyMatch(x -> x.getCodMdep().equalsIgnoreCase(mtbColtScanned.getCodMdep()));
+
+ if (codMdepIsValid) {
+ pickMerceULtoUL(mtbColtScanned, onComplete);
+ } else this.sendError(new InvalidCodMdepException());
+
} else {
this.sendError(new NoLUFoundException());
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoBindings.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoBindings.java
index ee2fb0e6..ecc01702 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoBindings.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoBindings.java
@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione;
import java.util.HashMap;
-import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
+import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java
index 57f1df05..fed528ba 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java
@@ -19,6 +19,7 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -41,7 +42,7 @@ import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneElenc
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity;
-import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
+import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.OrdineProduzioneFilterViewModel;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
@@ -302,7 +303,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
private List convertDataModelToListModel(List dataList) {
return Stream.of(dataList)
- .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
+ //.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
.sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : ""))
.map(x -> {
MainListProdOrdineProduzioneElencoListModel listModel = new MainListProdOrdineProduzioneElencoListModel();
@@ -313,15 +314,20 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
- List clienti = Stream.of(dataList)
- .filter(y -> y.getBarcode().equals(x.getBarcode()))
- .map(y -> new MainListProdOrdineProduzioneElencoClienteListModel()
- .setPrimaryText(y.getRifOrd())
- .setRightText(y.getCodJcom())
- .setOriginalModel(y))
- .toList();
+// List clienti = Stream.of(dataList)
+// .filter(y -> y.getBarcode().equals(x.getBarcode()))
+// .map(y -> new MainListProdOrdineProduzioneElencoClienteListModel()
+// .setPrimaryText(y.getRifOrd())
+// .setRightText(y.getCodJcom())
+// .setOriginalModel(y))
+// .toList();
- listModel.setClientiListModel(clienti);
+ MainListProdOrdineProduzioneElencoClienteListModel cliente = new MainListProdOrdineProduzioneElencoClienteListModel()
+ .setPrimaryText(x.getRifOrd())
+ .setRightText(x.getCodJcom())
+ .setOriginalModel(x);
+
+ listModel.setClientiListModel(Collections.singletonList(cliente));
return listModel;
})
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java
new file mode 100644
index 00000000..02834f8c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java
@@ -0,0 +1,20 @@
+package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
+
+import java.util.HashMap;
+
+import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
+import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
+import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
+
+public class ProdFabbisognoLineeProdBindings {
+ public static final int NUM_ORD_FILTER_ID = 0;
+
+ public static final HashMap AVAILABLE_FILTERS = new HashMap<>() {{
+
+ put(NUM_ORD_FILTER_ID, new FilterChipDTO()
+ .setID(NUM_ORD_FILTER_ID)
+ .setFilterChipText("Numero ordine")
+ .setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
+
+ }};
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java
index 31fe9ee3..2be22253 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java
@@ -8,29 +8,54 @@ import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
+import com.ravikoradiya.liveadapter.LiveAdapter;
+import com.ravikoradiya.liveadapter.Type;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
import javax.inject.Inject;
+import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
+import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeListSingleItemBinding;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
-import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaView;
+import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
+import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
+import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
+import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
+import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
+import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
+import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.filters.ProdFabbisognoLineeProdFilterViewModel;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdView;
+import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
+import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
+import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
/**
* A simple {@link Fragment} subclass.
@@ -39,12 +64,15 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbiso
*/
public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITitledFragment, ProdFabbisognoLineeProdViewModel.Listener {
+ public BindableBoolean fabVisible = new BindableBoolean(false);
+
@Inject
ProdFabbisognoLineeProdViewModel mViewModel;
private final ArrayList mOnPreDestroyList = new ArrayList<>();
-
+ private final ObservableArrayList