diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 4e3f1957..d168708f 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -147,8 +147,8 @@
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 99d57087..4c9a812b 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/build.gradle b/app/build.gradle
index 20fd5c64..dcb09b85 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 55
- def appVersionName = '1.2.2'
+ def appVersionCode = 56
+ def appVersionName = '1.3.0'
signingConfigs {
release {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e32bacf7..c16498b9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,7 +22,14 @@
android:name=".MainActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
- android:windowSoftInputMode="adjustPan">
+ android:windowSoftInputMode="adjustPan">
+
+
+
+
+
+
+
mBarcodeCallbacksStacktrace = new ArrayList<>();
@@ -27,11 +29,11 @@ public class BarcodeManager {
private static Class extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
PointMobileBarcodeReader.class,
ZebraBarcodeReader.class,
- // HoneyWellBarcodeReader.class
+ HoneyWellBarcodeReader.class
};
- public static void init(Context context) {
+ public static void init(AppCompatActivity context) {
BarcodeManager.context = context;
initBarcodeReader();
@@ -60,22 +62,26 @@ public class BarcodeManager {
if(mCurrentBarcodeInterface != null) {
try {
- mCurrentBarcodeInterface.init();
+ mCurrentBarcodeInterface.init(() -> {
+
+ mCurrentBarcodeInterface.register(data -> {
+ BarcodeCallbackDTO callback = getValidCallback();
+ if(callback != null && mEnabled) {
+ callback.getOnScanSuccessfull().run(data);
+ }
+ }, ex -> {
+ BarcodeCallbackDTO callback = getValidCallback();
+ if(callback != null && mEnabled) {
+ callback.getOnScanFailed().run(ex);
+ }
+ });
+
+ });
} catch (BarcodeAdapterNotFoundException ex) {
UtilityExceptions.defaultException(context, ex);
}
- mCurrentBarcodeInterface.register(data -> {
- BarcodeCallbackDTO callback = getValidCallback();
- if(callback != null && mEnabled) {
- callback.getOnScanSuccessfull().run(data);
- }
- }, ex -> {
- BarcodeCallbackDTO callback = getValidCallback();
- if(callback != null && mEnabled) {
- callback.getOnScanFailed().run(ex);
- }
- });
+
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java
index 79df7b92..45141b68 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java
@@ -31,14 +31,12 @@ public class AppContext {
public void init() {
+ this.initUtilities();
+
this.initSettings();
this.initCrashlytics();
- this.initBarcode();
-
- this.initUtilities();
-
this.initLogger();
this.initRecoverColli();
@@ -65,10 +63,6 @@ public class AppContext {
}
}
- private void initBarcode() {
- BarcodeManager.init(mContext);
- }
-
private void initUtilities() {
UtilityResources.init(mContext);
UtilityToast.init(mContext);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java
index eed2350a..47eb4330 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java
@@ -6,7 +6,9 @@ import android.text.SpannableString;
import java.lang.reflect.Method;
import androidx.appcompat.app.AppCompatActivity;
+
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@@ -22,6 +24,9 @@ public class MainContext {
public void init(Runnable onContextInitialized) {
+
+ BarcodeManager.init(mContext);
+
this.initDBData(() -> {
onContextInitialized.run();
});
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java b/app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java
new file mode 100644
index 00000000..45efd882
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java
@@ -0,0 +1,141 @@
+package it.integry.integrywmsnative.core.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class VtbDest extends EntityBase implements Parcelable {
+
+
+ public VtbDest() {
+ type = "vtb_dest";
+ }
+
+ private String codAnag;
+
+ private String codVdes;
+
+ private String destinatario;
+
+ private String indirizzo;
+
+ private String cap;
+
+ private String citta;
+
+ private String prov;
+
+ private String nazione;
+
+
+ protected VtbDest(Parcel in) {
+ codAnag = in.readString();
+ codVdes = in.readString();
+ destinatario = in.readString();
+ indirizzo = in.readString();
+ cap = in.readString();
+ citta = in.readString();
+ prov = in.readString();
+ nazione = in.readString();
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(codAnag);
+ dest.writeString(codVdes);
+ dest.writeString(destinatario);
+ dest.writeString(indirizzo);
+ dest.writeString(cap);
+ dest.writeString(citta);
+ dest.writeString(prov);
+ dest.writeString(nazione);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public VtbDest createFromParcel(Parcel in) {
+ return new VtbDest(in);
+ }
+
+ @Override
+ public VtbDest[] newArray(int size) {
+ return new VtbDest[size];
+ }
+ };
+
+ public String getCodAnag() {
+ return codAnag;
+ }
+
+ public VtbDest setCodAnag(String codAnag) {
+ this.codAnag = codAnag;
+ return this;
+ }
+
+ public String getCodVdes() {
+ return codVdes;
+ }
+
+ public VtbDest setCodVdes(String codVdes) {
+ this.codVdes = codVdes;
+ return this;
+ }
+
+ public String getDestinatario() {
+ return destinatario;
+ }
+
+ public VtbDest setDestinatario(String destinatario) {
+ this.destinatario = destinatario;
+ return this;
+ }
+
+ public String getIndirizzo() {
+ return indirizzo;
+ }
+
+ public VtbDest setIndirizzo(String indirizzo) {
+ this.indirizzo = indirizzo;
+ return this;
+ }
+
+ public String getCap() {
+ return cap;
+ }
+
+ public VtbDest setCap(String cap) {
+ this.cap = cap;
+ return this;
+ }
+
+ public String getCitta() {
+ return citta;
+ }
+
+ public VtbDest setCitta(String citta) {
+ this.citta = citta;
+ return this;
+ }
+
+ public String getProv() {
+ return prov;
+ }
+
+ public VtbDest setProv(String prov) {
+ this.prov = prov;
+ return this;
+ }
+
+ public String getNazione() {
+ return nazione;
+ }
+
+ public VtbDest setNazione(String nazione) {
+ this.nazione = nazione;
+ return this;
+ }
+}
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 34c64775..a8167f64 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
@@ -21,6 +21,7 @@ public class DBSettingsModel {
private String defaultCodAnag;
private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
+ private boolean flagAskClienteInPickingLibero;
public List getAvailableProfiles() {
return availableProfiles;
@@ -99,4 +100,13 @@ public class DBSettingsModel {
this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione);
return this;
}
+
+ public boolean isFlagAskClienteInPickingLibero() {
+ return flagAskClienteInPickingLibero;
+ }
+
+ public DBSettingsModel setFlagAskClienteInPickingLibero(boolean flagAskClienteInPickingLibero) {
+ this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero;
+ 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 04fdaffa..fb0b331b 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
@@ -189,7 +189,14 @@ public class SettingsManager {
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", valueDefaultCriterioDistribuzione -> {
dbSettingsModelIstance.setDefaultCriterioDistribuzione(valueDefaultCriterioDistribuzione.value);
- if(onComplete != null) onComplete.run();
+ GestSetupRESTConsumer.getBooleanValue("PICKING", "PICKING_LIBERO", "FLAG_ASK_CLIENTE", valueAskClientePickingLibero -> {
+ dbSettingsModelIstance.setFlagAskClienteInPickingLibero(valueAskClientePickingLibero);
+
+ if(onComplete != null) onComplete.run();
+
+ }, ex -> {
+ if(onFailed != null) onFailed.run(ex);
+ });
}, ex -> {
if(onFailed != null) onFailed.run(ex);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java
new file mode 100644
index 00000000..7c7bc2e4
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java
@@ -0,0 +1,16 @@
+package it.integry.integrywmsnative.core.utility;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.widget.LinearLayout;
+
+public class UtilityDialog {
+
+ public static void setTo90PercentSize(Context context, Dialog dialog) {
+ int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.90);
+ //int height = (int)(context.getResources().getDisplayMetrics().heightPixels*0.90);
+
+ dialog.getWindow().setLayout(width, LinearLayout.LayoutParams.WRAP_CONTENT);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java
index eabd9478..fde33e5c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java
@@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.utility;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* Created by GiuseppeS on 07/03/2018.
*/
@@ -14,4 +17,13 @@ public class UtilityString {
return (stringToCheck != null && stringToCheck.trim().length() == 0 || stringToCheck == null) ? null : stringToCheck.trim();
}
+ public static String capitalizeWords(String capString){
+ StringBuffer capBuffer = new StringBuffer();
+ Matcher capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString);
+ while (capMatcher.find()){
+ capMatcher.appendReplacement(capBuffer, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase());
+ }
+
+ return capMatcher.appendTail(capBuffer).toString();
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java
index e2d91441..82434428 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java
@@ -130,8 +130,13 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
helper.loadOrdini(new ILoadOrdiniCallback() {
@Override
public void onLoadSuccess(List ordini) {
- Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show();
- groupOrdiniAndMakeRecycler(ordini);
+ if(ordini != null) {
+ Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show();
+ groupOrdiniAndMakeRecycler(ordini);
+ }
+
+ mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE);
+
progress.dismiss();
}
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 a95a9027..ecafcc2c 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
@@ -16,6 +16,7 @@ import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
@@ -68,7 +69,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment {
mHelper = new PickingLiberoHelper(getActivity());
mViewModel = new PickingLiberoViewModel();
- mViewModel.init(getActivity(), mBindings, mHelper, mAppCompatActionBar);
+ mViewModel.init(getActivity(), mBindings, mHelper, mAppCompatActionBar, () -> {
+ ((IPoppableActivity) getActivity()).pop();
+ });
mBindings.setViewmodel(mViewModel);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java
index 3df7a429..2817c6dd 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java
@@ -35,7 +35,9 @@ import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.model.VtbDest;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
@@ -44,6 +46,8 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper;
import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter;
+import it.integry.integrywmsnative.view.dialogs.DialogConsts;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
@@ -68,7 +72,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked {
private PickingLiberoListAdapter mAdapter;
- public void init(Activity context, FragmentPickingLiberoBinding binding, PickingLiberoHelper helper, AppCompatTextView titleText) {
+ public void init(Activity context, FragmentPickingLiberoBinding binding, PickingLiberoHelper helper, AppCompatTextView titleText, Runnable onComplete) {
mContext = context;
mBinding = binding;
mHelper = helper;
@@ -460,6 +464,22 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked {
private void createNewLU(Integer customNumCollo, String customSerCollo, ProgressDialog progressDialog, Runnable onComplete, Runnable onFailed) {
+ if(SettingsManager.iDB().isFlagAskClienteInPickingLibero()){
+
+ DialogAskCliente.makeBase(mContext, (status, result) -> {
+ if(status == DialogConsts.Results.YES) {
+ createNewLUInternal(customNumCollo, customSerCollo, result, progressDialog, onComplete, onFailed);
+ }
+ }).show();
+ } else {
+ createNewLUInternal(customNumCollo, customSerCollo, null, progressDialog, onComplete, onFailed);
+ }
+
+
+ }
+
+ private void createNewLUInternal(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, ProgressDialog progressDialog, Runnable onComplete, Runnable onFailed) {
+
boolean shouldCloseProgress = progressDialog == null;
final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog;
@@ -476,6 +496,11 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked {
mtbColt.setSerCollo(customSerCollo);
}
+ if(vtbDest != null) {
+ mtbColt.setCodAnag(vtbDest.getCodAnag());
+ mtbColt.setCodVdes(vtbDest.getCodVdes());
+ }
+
ColliMagazzinoRESTConsumer.saveCollo(mtbColt, savedMtbColt -> {
savedMtbColt.setMtbColr(new ObservableArrayList<>());
setULToCurrentContext(savedMtbColt);
@@ -484,15 +509,6 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked {
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT);
-
-// new StatusBarAlert.Builder(mContext)
-// .autoHide(true)
-// .withDuration(2500)
-// .showProgress(false)
-// .withText(R.string.data_saved)
-// .withAlertColor(R.color.mainGreen)
-// .build();
-
if(onComplete != null) onComplete.run();
}, ex -> {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
index 003da239..2d9469b3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
@@ -121,7 +121,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
ButterKnife.bind(this, mBinding.getRoot());
// if(mWaterfallToolbar != null) mWaterfallToolbar.setRecyclerView(mBinding.venditaMainList);
- mToolbar.setRecyclerView(mBinding.venditaMainList);
+ if(mToolbar != null) mToolbar.setRecyclerView(mBinding.venditaMainList);
return mBinding.getRoot();
}
@@ -156,9 +156,14 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
mHelper.loadOrdini(new VenditaHelper.ILoadOrdiniCallback() {
@Override
public void onLoadSuccess(List ordini) {
- UtilityToast.showToast("Caricati " + ordini.size() + " ordini");
- mOriginalOrderList = ordini;
- mViewModel.setListOrder(ordini);
+ if(ordini != null) {
+ UtilityToast.showToast("Caricati " + ordini.size() + " ordini");
+ mOriginalOrderList = ordini;
+ mViewModel.setListOrder(ordini);
+ }
+
+
+ mBinding.ordiniVenditaEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE);
groupOrdini(ordini);
initRecyclerView();
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java
new file mode 100644
index 00000000..9378c821
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java
@@ -0,0 +1,107 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.LinearLayout;
+
+import androidx.databinding.DataBindingUtil;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
+import it.integry.integrywmsnative.core.model.VtbDest;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
+import it.integry.integrywmsnative.databinding.DialogAskClienteBinding;
+import it.integry.integrywmsnative.view.dialogs.DialogConsts;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
+
+public class DialogAskCliente {
+
+ private Context mContext;
+
+ private Dialog mDialog;
+
+ private DialogAskClienteBinding mBinding;
+
+
+ public static Dialog makeBase(final Context context, RunnableArgss onComplete) {
+ return new DialogAskCliente(context, onComplete).mDialog;
+ }
+
+ public DialogAskCliente(Context context, RunnableArgss onComplete) {
+ mContext = context;
+
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_cliente, null, false);
+
+ List> views = new ArrayList<>();
+ views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page1, DialogAskCliente_Page1ViewModel.class));
+ views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page2, DialogAskCliente_Page2ViewModel.class));
+
+
+
+ DialogAskClienteAdapter adapter = new DialogAskClienteAdapter(mContext, views);
+ mBinding.viewpager.setAdapter(adapter);
+ mBinding.viewpager.beginFakeDrag();
+ mBinding.viewpager.addOnPageChangeListener(adapter);
+
+
+
+ mDialog = new Dialog(mContext);
+ mDialog.setContentView(mBinding.getRoot());
+ mDialog.setCanceledOnTouchOutside(false);
+// mDialog.setCancelable(false);
+ UtilityDialog.setTo90PercentSize(mContext, mDialog);
+ mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+
+
+ mDialog.setOnShowListener(dialog -> {
+
+ DialogAskCliente_Page1ViewModel viewModel1 = (DialogAskCliente_Page1ViewModel) adapter.getViewModel(R.layout.dialog_ask_cliente__page1);
+ DialogAskCliente_Page2ViewModel viewModel2 = (DialogAskCliente_Page2ViewModel) adapter.getViewModel(R.layout.dialog_ask_cliente__page2);
+
+ viewModel1
+ .setOnConfirmClickListener(() -> {
+
+ viewModel2.setCodAnag(viewModel1.getCurrentCliente().getCodAnag());
+
+ mBinding.viewpager.setCurrentItem(mBinding.viewpager.getCurrentItem() + 1, true);
+ });
+
+ viewModel1.setOnAbortClickListener(() -> {
+ mDialog.dismiss();
+ onComplete.run(DialogConsts.Results.ABORT, null);
+ });
+
+ viewModel2.setOnConfirmClickListener(() -> {
+ onComplete.run(DialogConsts.Results.YES, viewModel2.getCurrentDestinatario().toVtbDestModel());
+ mDialog.dismiss();
+ });
+
+ viewModel2.setOnAbortClickListener(() -> {
+ mDialog.dismiss();
+ onComplete.run(DialogConsts.Results.ABORT, null);
+ });
+
+ });
+
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
new file mode 100644
index 00000000..184f454b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
@@ -0,0 +1,120 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import it.integry.integrywmsnative.BR;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.ui.DeactivatableViewPager;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel;
+
+public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener {
+
+ private Context mContext;
+
+ private List> mDatasetLayout;
+ private List> mDatasetViews;
+
+ private DeactivatableViewPager viewPager;
+
+ public DialogAskClienteAdapter(Context context, List> datasetLayouts) {
+ this.mContext = context;
+ this.mDatasetLayout = datasetLayouts;
+ this.mDatasetViews = new ArrayList<>();
+ }
+
+
+ @Override
+ public View instantiateItem(ViewGroup container, int position) {
+ viewPager = (DeactivatableViewPager) container;
+
+ Integer viewId = mDatasetLayout.get(position).getKey();
+
+
+ LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false);
+
+ Class viewModelClass = mDatasetLayout.get(position).getValue();
+ IDialogAskClienteViewModel viewModel = null;
+
+ try {
+ viewModel = (IDialogAskClienteViewModel) viewModelClass.newInstance();
+ viewModel.setBinding(mBinding);
+ viewModel.setContext(mContext);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ }
+
+ mBinding.setVariable(BR.viewmodel, viewModel);
+
+ container.addView(mBinding.getRoot());
+ this.mDatasetViews.add(new AbstractMap.SimpleEntry<>(mBinding, viewModel));
+
+ return mBinding.getRoot();
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ container.removeView((LinearLayout)object);
+ }
+
+ @Override
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
+ return view == o;
+ }
+
+
+ @Override
+ public int getCount() {
+ return mDatasetLayout.size();
+ }
+
+ public IDialogAskClienteViewModel getViewModel(@NonNull int layoutID) {
+ for(int i = 0; i < mDatasetLayout.size(); i++) {
+ if(mDatasetLayout.get(i).getKey() == layoutID) {
+ return this.mDatasetViews.get(i).getValue();
+ }
+ }
+ return null;
+ }
+
+ private int lastPage = -1;
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ if(position != lastPage) {
+ viewPager.measureCurrentView(mDatasetViews.get(position).getKey().getRoot());
+ mDatasetViews.get(position).getValue().onShow();
+ lastPage = position;
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ // mDatasetViews.get(position).getValue().onShow();
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java
new file mode 100644
index 00000000..4bbbe8d2
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java
@@ -0,0 +1,32 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto;
+
+public class DialogAskClienteClienteDTO {
+
+ private String codAnag;
+
+ private String ragSoc;
+
+ public String getCodAnag() {
+ return codAnag;
+ }
+
+ public DialogAskClienteClienteDTO setCodAnag(String codAnag) {
+ this.codAnag = codAnag;
+ return this;
+ }
+
+ public String getRagSoc() {
+ return ragSoc;
+ }
+
+ public DialogAskClienteClienteDTO setRagSoc(String ragSoc) {
+ this.ragSoc = ragSoc;
+ return this;
+ }
+
+
+ @Override
+ public String toString() {
+ return getRagSoc();
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java
new file mode 100644
index 00000000..7ada1130
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java
@@ -0,0 +1,111 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto;
+
+import it.integry.integrywmsnative.core.model.VtbDest;
+
+public class DialogAskClienteDestinatarioDTO {
+
+ private String codAnag;
+
+ private String codVdes;
+
+ private String destinatario;
+
+ private String indirizzo;
+
+ private String cap;
+
+ private String citta;
+
+ private String prov;
+
+ private String nazione;
+
+ public String getCodAnag() {
+ return codAnag;
+ }
+
+ public DialogAskClienteDestinatarioDTO setCodAnag(String codAnag) {
+ this.codAnag = codAnag;
+ return this;
+ }
+
+ public String getCodVdes() {
+ return codVdes;
+ }
+
+ public DialogAskClienteDestinatarioDTO setCodVdes(String codVdes) {
+ this.codVdes = codVdes;
+ return this;
+ }
+
+ public String getDestinatario() {
+ return destinatario;
+ }
+
+ public DialogAskClienteDestinatarioDTO setDestinatario(String destinatario) {
+ this.destinatario = destinatario;
+ return this;
+ }
+
+ public String getIndirizzo() {
+ return indirizzo;
+ }
+
+ public DialogAskClienteDestinatarioDTO setIndirizzo(String indirizzo) {
+ this.indirizzo = indirizzo;
+ return this;
+ }
+
+ public String getCap() {
+ return cap;
+ }
+
+ public DialogAskClienteDestinatarioDTO setCap(String cap) {
+ this.cap = cap;
+ return this;
+ }
+
+ public String getCitta() {
+ return citta;
+ }
+
+ public DialogAskClienteDestinatarioDTO setCitta(String citta) {
+ this.citta = citta;
+ return this;
+ }
+
+ public String getProv() {
+ return prov;
+ }
+
+ public DialogAskClienteDestinatarioDTO setProv(String prov) {
+ this.prov = prov;
+ return this;
+ }
+
+ public String getNazione() {
+ return nazione;
+ }
+
+ public DialogAskClienteDestinatarioDTO setNazione(String nazione) {
+ this.nazione = nazione;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s (%s)", getDestinatario(), getCodVdes());
+ }
+
+ public VtbDest toVtbDestModel() {
+ return new VtbDest()
+ .setCap(getCap())
+ .setCitta(getCitta())
+ .setCodAnag(getCodAnag())
+ .setCodVdes(getCodVdes())
+ .setDestinatario(getDestinatario())
+ .setProv(getProv())
+ .setIndirizzo(getIndirizzo())
+ .setNazione(getNazione());
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java
new file mode 100644
index 00000000..304e7b77
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java
@@ -0,0 +1,120 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
+
+import android.content.Context;
+import android.widget.AutoCompleteTextView;
+
+import androidx.databinding.ViewDataBinding;
+
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
+import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
+
+public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewModel {
+
+ private Context mContext;
+ private DialogAskClientePage1Binding mBinding;
+
+ private List availableClienti;
+
+ public DialogAskCliente_Page1ViewModel() {
+
+ }
+
+ @Override
+ public void setContext(Context context) {
+ this.mContext = context;
+ }
+
+ @Override
+ public void setBinding(ViewDataBinding binding) {
+ this.mBinding = (DialogAskClientePage1Binding) binding;
+ }
+
+ @Override
+ public void onShow() {
+
+ String sql = "SELECT gtb_anag.cod_anag, rag_soc " +
+ "FROM gtb_anag " +
+ "INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " +
+ "WHERE vtb_clie.flag_stato = 'A' " +
+ "ORDER BY rag_soc";
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(ArrayList value) {
+ availableClienti = value;
+ initializeAdapter(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+
+ }
+ });
+
+ }
+
+ @Override
+ public void setOnConfirmClickListener(Runnable onConfirm) {
+ this.mBinding.buttonYes.setOnClickListener(v -> {
+ if(validateCliente()) {
+ this.resetClienteError();
+ if(onConfirm != null) onConfirm.run();
+ } else {
+ this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString());
+ }
+
+ });
+ }
+
+ @Override
+ public void setOnAbortClickListener(Runnable onAbort) {
+ this.mBinding.buttonNo.setOnClickListener(v -> {
+ if(onAbort != null) onAbort.run();
+ });
+ }
+
+
+ private void initializeAdapter(ArrayList items) {
+
+ DialogAskCliente_Page1_ArrayAdapter adapter = new DialogAskCliente_Page1_ArrayAdapter(mContext, items);
+
+
+ AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown;
+ editTextFilledExposedDropdown.setThreshold(0);
+ editTextFilledExposedDropdown.setAdapter(adapter);
+ }
+
+
+ private boolean validateCliente() {
+ return getCurrentCliente() != null;
+ }
+
+ public DialogAskClienteClienteDTO getCurrentCliente() {
+ for (DialogAskClienteClienteDTO cliente : availableClienti) {
+ if(cliente.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString())) {
+ return cliente;
+ }
+ }
+
+ return null;
+ }
+
+
+ private void setClienteError(String message){
+ mBinding.inputCliente.setErrorEnabled(true);
+ mBinding.inputCliente.setError(message);
+ }
+ private void resetClienteError() {
+ mBinding.inputCliente.setError(null);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java
new file mode 100644
index 00000000..f591466d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java
@@ -0,0 +1,115 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
+
+import android.content.Context;
+import android.graphics.Movie;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.Filter;
+import android.widget.Filterable;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
+
+public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter implements Filterable {
+
+ private Context mContext;
+ private List mDataset;
+ private List mDatasetAllItems;
+
+ private ListFilter listFilter = new ListFilter();
+
+ public DialogAskCliente_Page1_ArrayAdapter(@NonNull Context context, @NonNull ArrayList list) {
+ super(context, 0 , list);
+ mContext = context;
+ mDataset = list;
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ View listItem = convertView;
+ if(listItem == null) {
+ listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item, parent, false);
+ }
+
+ if(position < mDataset.size()) {
+
+ AppCompatTextView textView = listItem.findViewById(R.id.text);
+
+ textView.setText(mDataset.get(position).getRagSoc());
+
+ return listItem;
+ }
+ return null;
+ }
+
+
+ @NonNull
+ @Override
+ public Filter getFilter() {
+ return listFilter;
+ }
+
+ public class ListFilter extends Filter {
+ private Object lock = new Object();
+
+ @Override
+ protected FilterResults performFiltering(CharSequence prefix) {
+ FilterResults results = new FilterResults();
+ if (mDatasetAllItems == null) {
+ synchronized (lock) {
+ mDatasetAllItems = new ArrayList<>(mDataset);
+ }
+ }
+
+ if (prefix == null || prefix.length() == 0) {
+ synchronized (lock) {
+ results.values = mDatasetAllItems;
+ results.count = mDatasetAllItems.size();
+ }
+ } else {
+ final String searchStrLowerCase = prefix.toString().toLowerCase();
+
+ ArrayList matchValues = new ArrayList<>();
+
+ for (DialogAskClienteClienteDTO dataItem : mDatasetAllItems) {
+ if (dataItem.getRagSoc().toLowerCase().startsWith(searchStrLowerCase)) {
+ matchValues.add(dataItem);
+ }
+ }
+
+ results.values = matchValues;
+ results.count = matchValues.size();
+ }
+
+ return results;
+ }
+
+ @Override
+ protected void publishResults(CharSequence constraint, FilterResults results) {
+ if (results.values != null) {
+ mDataset.clear();
+ mDataset.addAll((ArrayList) results.values);
+ } else {
+ mDataset.clear();
+ }
+ if (results.count > 0) {
+ notifyDataSetChanged();
+ } else {
+ notifyDataSetInvalidated();
+ }
+ }
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java
new file mode 100644
index 00000000..de88b82c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java
@@ -0,0 +1,125 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
+
+import android.content.Context;
+import android.widget.AutoCompleteTextView;
+
+import androidx.databinding.ViewDataBinding;
+
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
+import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
+
+public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewModel {
+
+
+ private DialogAskClientePage2Binding mBinding;
+ private Context mContext;
+
+ private List availableDestinatari;
+
+ private String mCodAnag;
+
+ public DialogAskCliente_Page2ViewModel() {
+
+ }
+
+ @Override
+ public void setBinding(ViewDataBinding binding) {
+ this.mBinding = (DialogAskClientePage2Binding) binding;
+ }
+
+ @Override
+ public void setContext(Context context) {
+ this.mContext = context;
+ }
+
+ @Override
+ public void onShow() {
+
+ String sql = "SELECT cod_anag, cod_vdes, destinatario, indirizzo, cap, citta, prov, nazione " +
+ "FROM vtb_dest " +
+ "WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag);
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(ArrayList value) {
+ availableDestinatari = value;
+ initializeAdapter(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+
+ }
+ });
+ }
+
+ @Override
+ public void setOnConfirmClickListener(Runnable onConfirm) {
+ this.mBinding.buttonYes.setOnClickListener(v -> {
+ if(validateDestinatario()) {
+ this.resetClienteError();
+ if(onConfirm != null) onConfirm.run();
+ } else {
+ this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString());
+ }
+
+ });
+ }
+
+ @Override
+ public void setOnAbortClickListener(Runnable onAbort) {
+ this.mBinding.buttonNo.setOnClickListener(v -> {
+ if(onAbort != null) onAbort.run();
+ });
+ }
+
+ public void setCodAnag(String codAnag) {
+ this.mCodAnag = codAnag;
+ }
+
+ private void initializeAdapter(ArrayList items) {
+
+ DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
+
+
+ AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown;
+ editTextFilledExposedDropdown.setThreshold(0);
+ editTextFilledExposedDropdown.setAdapter(adapter);
+ }
+
+
+ private boolean validateDestinatario() {
+ return getCurrentDestinatario() != null;
+ }
+
+ public DialogAskClienteDestinatarioDTO getCurrentDestinatario() {
+ for (DialogAskClienteDestinatarioDTO destinatarioDTO : availableDestinatari) {
+ if(destinatarioDTO.toString().equalsIgnoreCase(mBinding.inputDestinatario.getEditText().getText().toString())) {
+ return destinatarioDTO;
+ }
+ }
+
+ return null;
+ }
+
+
+ private void setClienteError(String message){
+ mBinding.inputDestinatario.setErrorEnabled(true);
+ mBinding.inputDestinatario.setError(message);
+ }
+ private void resetClienteError() {
+ mBinding.inputDestinatario.setError(null);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java
new file mode 100644
index 00000000..fc52aaf2
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java
@@ -0,0 +1,127 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.Filter;
+import android.widget.Filterable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
+
+public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter implements Filterable {
+
+ private Context mContext;
+ private List mDataset;
+ private List mDatasetAllItems;
+
+ private ListFilter listFilter = new ListFilter();
+
+ public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull ArrayList list) {
+ super(context, 0 , list);
+ mContext = context;
+ mDataset = list;
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ View listItem = convertView;
+ if(listItem == null) {
+ listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item_destinatario, parent, false);
+ }
+
+ if(position < mDataset.size()) {
+
+ AppCompatTextView destinatario = listItem.findViewById(R.id.destinatario);
+ destinatario.setText(UtilityString.capitalizeWords(mDataset.get(position).toString()));
+
+ AppCompatTextView subtitle = listItem.findViewById(R.id.subtitle);
+
+ StringBuilder subtitleStr = new StringBuilder();
+ if(!UtilityString.isNullOrEmpty(mDataset.get(position).getCitta())) {
+ subtitleStr.append(UtilityString.capitalizeWords(mDataset.get(position).getCitta()) + " - ");
+ }
+
+ if(!UtilityString.isNullOrEmpty(mDataset.get(position).getIndirizzo())) {
+ subtitleStr.append(UtilityString.capitalizeWords(mDataset.get(position).getIndirizzo()));
+ }
+
+ subtitle.setText(subtitleStr);
+
+
+ return listItem;
+ }
+ return null;
+ }
+
+
+ @NonNull
+ @Override
+ public Filter getFilter() {
+ return listFilter;
+ }
+
+ public class ListFilter extends Filter {
+ private Object lock = new Object();
+
+ @Override
+ protected FilterResults performFiltering(CharSequence prefix) {
+ FilterResults results = new FilterResults();
+ if (mDatasetAllItems == null) {
+ synchronized (lock) {
+ mDatasetAllItems = new ArrayList<>(mDataset);
+ }
+ }
+
+ if (prefix == null || prefix.length() == 0) {
+ synchronized (lock) {
+ results.values = mDatasetAllItems;
+ results.count = mDatasetAllItems.size();
+ }
+ } else {
+ final String searchStrLowerCase = prefix.toString().toLowerCase();
+
+ ArrayList matchValues = new ArrayList<>();
+
+ for (DialogAskClienteDestinatarioDTO dataItem : mDatasetAllItems) {
+ if (dataItem.toString().toLowerCase().startsWith(searchStrLowerCase)) {
+ matchValues.add(dataItem);
+ }
+ }
+
+ results.values = matchValues;
+ results.count = matchValues.size();
+ }
+
+ return results;
+ }
+
+ @Override
+ protected void publishResults(CharSequence constraint, FilterResults results) {
+ if (results.values != null) {
+ mDataset.clear();
+ mDataset.addAll((ArrayList) results.values);
+ } else {
+ mDataset.clear();
+ }
+ if (results.count > 0) {
+ notifyDataSetChanged();
+ } else {
+ notifyDataSetInvalidated();
+ }
+ }
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java
new file mode 100644
index 00000000..57271d6d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java
@@ -0,0 +1,18 @@
+package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
+
+import android.content.Context;
+
+import androidx.databinding.ViewDataBinding;
+
+public interface IDialogAskClienteViewModel {
+
+ void setContext(Context context);
+
+ void setBinding(ViewDataBinding binding);
+
+ void onShow();
+
+ void setOnConfirmClickListener(Runnable onConfirm);
+
+ void setOnAbortClickListener(Runnable onAbort);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
index 245fd0d8..3148c251 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
@@ -55,7 +55,7 @@ public class DialogAskPositionOfLU {
return new DialogAskPositionOfLU(context, mtbColtToUpdate, onComplete, onFailed).mDialog;
}
- public DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, RunnableArgss onComplete, RunnableArgs onFailed) {
+ private DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, RunnableArgss onComplete, RunnableArgs onFailed) {
mContext = context;
mtbColt = mtbColtToUpdate;
diff --git a/app/src/main/res/drawable/ic_barcode_96.png b/app/src/main/res/drawable/ic_barcode_96.png
deleted file mode 100644
index 05971ffb..00000000
Binary files a/app/src/main/res/drawable/ic_barcode_96.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_black_barcode.xml b/app/src/main/res/drawable/ic_black_barcode.xml
new file mode 100644
index 00000000..33e8f061
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_barcode.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_barcode_scanner.xml b/app/src/main/res/drawable/ic_black_barcode_scanner.xml
new file mode 100644
index 00000000..0058aea8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_barcode_scanner.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_download.xml b/app/src/main/res/drawable/ic_black_download.xml
new file mode 100644
index 00000000..42e84916
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_download.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_empty_box.xml b/app/src/main/res/drawable/ic_black_empty_box.xml
new file mode 100644
index 00000000..acd54434
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_empty_box.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_external.xml b/app/src/main/res/drawable/ic_black_external.xml
new file mode 100644
index 00000000..62bb2fae
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_external.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_home.xml b/app/src/main/res/drawable/ic_black_home.xml
new file mode 100644
index 00000000..4d5dcf67
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_home.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_internal.xml b/app/src/main/res/drawable/ic_black_internal.xml
new file mode 100644
index 00000000..94e02013
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_internal.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_latest_delivery.xml b/app/src/main/res/drawable/ic_black_latest_delivery.xml
new file mode 100644
index 00000000..214d19e2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_latest_delivery.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_load_shelf.xml b/app/src/main/res/drawable/ic_black_load_shelf.xml
new file mode 100644
index 00000000..3062a0f3
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_load_shelf.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_recover.xml b/app/src/main/res/drawable/ic_black_recover.xml
new file mode 100644
index 00000000..6612722f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_recover.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_black_upload.xml b/app/src/main/res/drawable/ic_black_upload.xml
new file mode 100644
index 00000000..6edadf8e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_black_upload.xml
@@ -0,0 +1,4 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_download_black_24dp.xml b/app/src/main/res/drawable/ic_download_black_24dp.xml
deleted file mode 100644
index 492b41d3..00000000
--- a/app/src/main/res/drawable/ic_download_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_empty_box_96.png b/app/src/main/res/drawable/ic_empty_box_96.png
deleted file mode 100644
index bf75102d..00000000
Binary files a/app/src/main/res/drawable/ic_empty_box_96.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml
deleted file mode 100644
index 70fb2910..00000000
--- a/app/src/main/res/drawable/ic_home_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/ic_latest_delivery.xml b/app/src/main/res/drawable/ic_latest_delivery.xml
new file mode 100644
index 00000000..9e415ce0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_latest_delivery.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_load_shelf_96.png b/app/src/main/res/drawable/ic_load_shelf_96.png
deleted file mode 100644
index 7586f3a9..00000000
Binary files a/app/src/main/res/drawable/ic_load_shelf_96.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_recover_96.png b/app/src/main/res/drawable/ic_recover_96.png
deleted file mode 100644
index 3fdf95d8..00000000
Binary files a/app/src/main/res/drawable/ic_recover_96.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_upload_black_24dp.xml b/app/src/main/res/drawable/ic_upload_black_24dp.xml
deleted file mode 100644
index d6339722..00000000
--- a/app/src/main/res/drawable/ic_upload_black_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 9d8811bf..d7703683 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -102,48 +102,23 @@
app:binding="@{loginViewModel.codAzienda}"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_marginTop="24dp"
+ android:layout_marginBottom="24dp"/>
+
diff --git a/app/src/main/res/layout/dialog_ask_cliente.xml b/app/src/main/res/layout/dialog_ask_cliente.xml
new file mode 100644
index 00000000..a98e4009
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_cliente.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml
new file mode 100644
index 00000000..177f556b
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml
new file mode 100644
index 00000000..e384cfd4
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_cliente__page1.xml b/app/src/main/res/layout/dialog_ask_cliente__page1.xml
new file mode 100644
index 00000000..624cac08
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_cliente__page1.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_cliente__page2.xml b/app/src/main/res/layout/dialog_ask_cliente__page2.xml
new file mode 100644
index 00000000..ade75caa
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_cliente__page2.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_position_of_lu.xml b/app/src/main/res/layout/dialog_ask_position_of_lu.xml
index 4c30f378..81eded53 100644
--- a/app/src/main/res/layout/dialog_ask_position_of_lu.xml
+++ b/app/src/main/res/layout/dialog_ask_position_of_lu.xml
@@ -55,7 +55,6 @@
android:gravity="center_horizontal"/>
-
@@ -286,7 +286,7 @@
android:layout_marginTop="16dp"
android:text="@string/vendita_title_fragment"
android:textAllCaps="true"
- android:textColor="@color/grey_700"
+ android:textColor="@color/gray_700"
android:textStyle="bold" />
@@ -330,7 +330,7 @@
android:gravity="center_horizontal"
android:text="@string/rettifica_giacenze_fragment_title"
android:textAllCaps="true"
- android:textColor="@color/grey_700"
+ android:textColor="@color/gray_700"
android:textStyle="bold" />
@@ -375,7 +375,7 @@
android:gravity="center_horizontal"
android:text="@string/versamento_merce_fragment_title"
android:textAllCaps="true"
- android:textColor="@color/grey_700"
+ android:textColor="@color/gray_700"
android:textStyle="bold" />
@@ -421,53 +421,59 @@
android:gravity="center_horizontal"
android:text="@string/free_picking"
android:textAllCaps="true"
- android:textColor="@color/grey_700"
+ android:textColor="@color/gray_700"
android:textStyle="bold" />
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
@@ -532,7 +538,7 @@
android:gravity="center_horizontal"
android:text="@string/prod_versamento_materiale_title_fragment"
android:textAllCaps="true"
- android:textColor="@color/grey_700"
+ android:textColor="@color/gray_700"
android:textStyle="bold" />
@@ -577,7 +583,7 @@
android:gravity="center_horizontal"
android:text="@string/prod_recupero_materiale_title_fragment"
android:textAllCaps="true"
- android:textColor="@color/grey_700"
+ android:textColor="@color/gray_700"
android:textStyle="bold" />
diff --git a/app/src/main/res/layout/fragment_main_accettazione.xml b/app/src/main/res/layout/fragment_main_accettazione.xml
index 084b0ba5..5a851576 100644
--- a/app/src/main/res/layout/fragment_main_accettazione.xml
+++ b/app/src/main/res/layout/fragment_main_accettazione.xml
@@ -25,6 +25,60 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
@@ -38,11 +38,11 @@
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index bf5310ef..47beecda 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -12,6 +12,7 @@
%s del %s]]>
%s]]>
Cerca...
+ Login
Accettazione
Ordine di accettazione
Ordini di accettazione
@@ -136,6 +137,7 @@
Nessuna UL registrata a magazzino
Nessun articolo da prelevare
+ Nessun ordine da evadere
Nessun articolo
@@ -156,6 +158,7 @@
Numero ordine
Cliente
+ Destinatario
Data consegna
Termini di consegna
Automezzo
@@ -208,4 +211,9 @@
Produzione
Versamento materiale
Recupero materiale
+
+ Prima di procedere seleziona un cliente
+ Prima di procedere seleziona un destinatario
+ Cliente non valido
+ Destinatario non valido
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index ac7c680e..8d337f0c 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -42,8 +42,11 @@
#388E3C
- #616161
- #424242
+ #BDBDBD
+ #9E9E9E
+ #757575
+ #616161
+ #424242
#813f51b5
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3363cc63..ae3af675 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,6 +13,7 @@
Loading
Completed
Search...
+ Login
Permissions are required for app to work properly
@@ -141,6 +142,7 @@
No LU already registered
No items to pick
+ No orders to dispatch
No items
The scanned label has already been used
@@ -162,6 +164,7 @@
Orders number
Customer
+ Recipient
Ship date
Terms of delivery
Vehicle
@@ -214,4 +217,10 @@
Recover raw material
+ Please, select a customer before proceeding
+ Please, select a recipient before proceeding
+ Invalid customer
+ Invalid recipient
+
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 954361d1..1c1d7141 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -24,6 +24,10 @@
- @font/product_sans_regular
- normal
+
+
+
+
+
@@ -127,5 +138,4 @@
-
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
index 616869f3..0451cb2e 100644
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
+++ b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
@@ -8,7 +8,7 @@ public interface BarcodeReaderInterface {
boolean isRightAdapter();
- void init() throws BarcodeAdapterNotFoundException;
+ void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException;
void deinit();
diff --git a/ext_sources/9DBDE980.png b/ext_sources/9DBDE980.png
deleted file mode 100644
index ab966c21..00000000
Binary files a/ext_sources/9DBDE980.png and /dev/null differ
diff --git a/ext_sources/ICONS/icons8-barcode-scanner.svg b/ext_sources/ICONS/icons8-barcode-scanner.svg
new file mode 100644
index 00000000..7f089028
--- /dev/null
+++ b/ext_sources/ICONS/icons8-barcode-scanner.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-barcode.svg b/ext_sources/ICONS/icons8-barcode.svg
new file mode 100644
index 00000000..9e2776ab
--- /dev/null
+++ b/ext_sources/ICONS/icons8-barcode.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-database-restore.svg b/ext_sources/ICONS/icons8-database-restore.svg
new file mode 100644
index 00000000..3fe607f5
--- /dev/null
+++ b/ext_sources/ICONS/icons8-database-restore.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-deliver-food (1).svg b/ext_sources/ICONS/icons8-deliver-food (1).svg
new file mode 100644
index 00000000..fbdec32d
--- /dev/null
+++ b/ext_sources/ICONS/icons8-deliver-food (1).svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-deliver-food.svg b/ext_sources/ICONS/icons8-deliver-food.svg
new file mode 100644
index 00000000..b8bff51d
--- /dev/null
+++ b/ext_sources/ICONS/icons8-deliver-food.svg
@@ -0,0 +1,18 @@
+
+
diff --git a/ext_sources/ICONS/icons8-download.svg b/ext_sources/ICONS/icons8-download.svg
new file mode 100644
index 00000000..8441369e
--- /dev/null
+++ b/ext_sources/ICONS/icons8-download.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-empty-box.svg b/ext_sources/ICONS/icons8-empty-box.svg
new file mode 100644
index 00000000..d08c794e
--- /dev/null
+++ b/ext_sources/ICONS/icons8-empty-box.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-external.svg b/ext_sources/ICONS/icons8-external.svg
new file mode 100644
index 00000000..e62d9b49
--- /dev/null
+++ b/ext_sources/ICONS/icons8-external.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-home-page.svg b/ext_sources/ICONS/icons8-home-page.svg
new file mode 100644
index 00000000..0720cca3
--- /dev/null
+++ b/ext_sources/ICONS/icons8-home-page.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-internal.svg b/ext_sources/ICONS/icons8-internal.svg
new file mode 100644
index 00000000..96c06bcd
--- /dev/null
+++ b/ext_sources/ICONS/icons8-internal.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-restart.svg b/ext_sources/ICONS/icons8-restart.svg
new file mode 100644
index 00000000..53559186
--- /dev/null
+++ b/ext_sources/ICONS/icons8-restart.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/ICONS/icons8-upload.svg b/ext_sources/ICONS/icons8-upload.svg
new file mode 100644
index 00000000..b964c1e7
--- /dev/null
+++ b/ext_sources/ICONS/icons8-upload.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/ext_sources/Screenshots/0_Home.png b/ext_sources/Screenshots/0_Home.png
new file mode 100644
index 00000000..394afa7d
Binary files /dev/null and b/ext_sources/Screenshots/0_Home.png differ
diff --git a/ext_sources/Screenshots/0a_Menu Laterale.png b/ext_sources/Screenshots/0a_Menu Laterale.png
new file mode 100644
index 00000000..13886a2b
Binary files /dev/null and b/ext_sources/Screenshots/0a_Menu Laterale.png differ
diff --git a/ext_sources/Screenshots/1a_Elenco ordini.png b/ext_sources/Screenshots/1a_Elenco ordini.png
new file mode 100644
index 00000000..14063ff0
Binary files /dev/null and b/ext_sources/Screenshots/1a_Elenco ordini.png differ
diff --git a/ext_sources/Screenshots/1b_Elenco articoli accettazione.png b/ext_sources/Screenshots/1b_Elenco articoli accettazione.png
new file mode 100644
index 00000000..0c1a52f8
Binary files /dev/null and b/ext_sources/Screenshots/1b_Elenco articoli accettazione.png differ
diff --git a/ext_sources/Screenshots/1c_Input quantita accettazione.png b/ext_sources/Screenshots/1c_Input quantita accettazione.png
new file mode 100644
index 00000000..c243d87a
Binary files /dev/null and b/ext_sources/Screenshots/1c_Input quantita accettazione.png differ
diff --git a/ext_sources/Screenshots/2a_Elenco ordini spedizione.png b/ext_sources/Screenshots/2a_Elenco ordini spedizione.png
new file mode 100644
index 00000000..7e0370b1
Binary files /dev/null and b/ext_sources/Screenshots/2a_Elenco ordini spedizione.png differ
diff --git a/ext_sources/Screenshots/2b_Elenco articoli spedizione.png b/ext_sources/Screenshots/2b_Elenco articoli spedizione.png
new file mode 100644
index 00000000..97b4f88f
Binary files /dev/null and b/ext_sources/Screenshots/2b_Elenco articoli spedizione.png differ
diff --git a/ext_sources/Screenshots/2c_Input quantita spedizione.png b/ext_sources/Screenshots/2c_Input quantita spedizione.png
new file mode 100644
index 00000000..9328a8a6
Binary files /dev/null and b/ext_sources/Screenshots/2c_Input quantita spedizione.png differ
diff --git a/ext_sources/box.svg b/ext_sources/box.svg
deleted file mode 100644
index 6cd0dc12..00000000
--- a/ext_sources/box.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle
index fb28ef3b..b141d6c4 100644
--- a/honeywellscannerlibrary/build.gradle
+++ b/honeywellscannerlibrary/build.gradle
@@ -20,6 +20,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
+ compileOptions {
+ sourceCompatibility = '1.8'
+ targetCompatibility = '1.8'
+ }
}
diff --git a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java
index 357301e4..7632d255 100644
--- a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java
+++ b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java
@@ -1,8 +1,24 @@
package it.integry.honeywellscannerlibrary;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Build;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
import com.honeywell.aidc.AidcManager;
+import com.honeywell.aidc.BarcodeFailureEvent;
+import com.honeywell.aidc.BarcodeReadEvent;
+import com.honeywell.aidc.BarcodeReader;
+import com.honeywell.aidc.InvalidScannerNameException;
+import com.honeywell.aidc.ScannerUnavailableException;
+import com.honeywell.aidc.UnsupportedPropertyException;
+
+import java.util.HashMap;
+import java.util.Map;
import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
import it.integry.plugins.barcode_base_library.extension.RunnableArgs;
@@ -11,51 +27,156 @@ import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class HoneyWellBarcodeReader implements BarcodeReaderInterface {
- private Context mContext;
+ private final AppCompatActivity mContext;
+ private AidcManager manager;
+ private BarcodeReader barcodeReader;
- private boolean canGoOn = false;
+ private static RunnableArgs mOnScanSuccessfull;
+ private static RunnableArgs mOnScanFailed;
- public HoneyWellBarcodeReader(Context context) {
+ private static final String TAG = HoneyWellBarcodeReader.class.getName();
+
+ public HoneyWellBarcodeReader(final AppCompatActivity context) {
this.mContext = context;
-
- AidcManager.create(context, new AidcManager.CreatedCallback() {
- @Override
- public void onCreated(AidcManager aidcManager) {
- canGoOn = true;
- }
- });
-
- while(!canGoOn) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
}
@Override
public boolean isRightAdapter() {
- return false;
+ String model = Build.MODEL;
+ if(model.equalsIgnoreCase("EDA50")) {
+ return true;
+ } else return false;
}
@Override
- public void init() throws BarcodeAdapterNotFoundException {
+ public void init(final Runnable onDeviceReady) throws BarcodeAdapterNotFoundException {
+ if(isRightAdapter()) {
+ AidcManager.create(mContext, new AidcManager.CreatedCallback() {
+
+ @Override
+ public void onCreated(AidcManager aidcManager) {
+
+ manager = aidcManager;
+
+ try{
+ barcodeReader = manager.createBarcodeReader();
+ registerListenersInternal();
+ }
+ catch (InvalidScannerNameException e){
+ Toast.makeText(mContext, "Invalid Scanner Name Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show();
+ }
+ catch (Exception e){
+ Toast.makeText(mContext, "Exception: " + e.getMessage(), Toast.LENGTH_SHORT).show();
+ }
+
+
+ onDeviceReady.run();
+ }
+ });
+
+ } else {
+ throw new BarcodeAdapterNotFoundException(getAdapterName());
+ }
}
@Override
public void deinit() {
+ if (barcodeReader != null) {
+ // close BarcodeReader to clean up resources.
+ barcodeReader.close();
+ barcodeReader = null;
+ }
+ if (manager != null) {
+ // close AidcManager to disconnect from the scanner service.
+ // once closed, the object can no longer be used.
+ manager.close();
+ }
}
+
@Override
public void register(RunnableArgs onScanSuccessfull, RunnableArgs onScanFailed) {
-
+ mOnScanSuccessfull = onScanSuccessfull;
+ mOnScanFailed = onScanFailed;
}
+
@Override
public String getAdapterName() {
- return null;
+ return "Honeywell";
+ }
+
+
+
+
+
+
+ private void registerListenersInternal() {
+ // register bar code event listener
+ barcodeReader.addBarcodeListener(new BarcodeReader.BarcodeListener() {
+ @Override
+ public void onBarcodeEvent(BarcodeReadEvent barcodeReadEvent) {
+ dispatchEvent(barcodeReadEvent);
+ }
+
+ @Override
+ public void onFailureEvent(BarcodeFailureEvent barcodeFailureEvent) {
+
+ }
+ });
+
+
+ // set the trigger mode to client control
+ try {
+ barcodeReader.setProperty(BarcodeReader.PROPERTY_TRIGGER_CONTROL_MODE,
+ BarcodeReader.TRIGGER_CONTROL_MODE_CLIENT_CONTROL);
+ } catch (UnsupportedPropertyException e) {
+ Toast.makeText(mContext, "Failed to apply properties", Toast.LENGTH_SHORT).show();
+ }
+
+ Map properties = new HashMap<>();
+
+ // Set Symbologies On/Off
+ properties.put(BarcodeReader.PROPERTY_EAN_8_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_EAN_13_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_CODE_39_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_CODE_128_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_GS1_128_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_UPC_A_ENABLE, true);
+
+
+ properties.put(BarcodeReader.PROPERTY_EAN_8_CHECK_DIGIT_TRANSMIT_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_EAN_13_CHECK_DIGIT_TRANSMIT_ENABLED, true);
+ properties.put(BarcodeReader.PROPERTY_UPC_A_CHECK_DIGIT_TRANSMIT_ENABLED, true);
+
+ properties.put(BarcodeReader.PROPERTY_TRIGGER_CONTROL_MODE, BarcodeReader.TRIGGER_CONTROL_MODE_AUTO_CONTROL);
+
+ // Apply the settings
+ barcodeReader.setProperties(properties);
+
+
+ try {
+ barcodeReader.claim();
+ } catch (ScannerUnavailableException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+
+ private void dispatchEvent(BarcodeReadEvent barcodeReadEvent)
+ {
+ mContext.runOnUiThread(() -> {
+
+ BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO()
+ .setByteValue(barcodeReadEvent.getBarcodeData().getBytes())
+ .setStringValue(barcodeReadEvent.getBarcodeData())
+ .setType(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId()))
+ .setName(HoneywellBarcodeTypeMapper.map(barcodeReadEvent.getCodeId()).toString());
+
+ mOnScanSuccessfull.run(barcodeScanDTO);
+ });
}
}
diff --git a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java
new file mode 100644
index 00000000..4b55a929
--- /dev/null
+++ b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java
@@ -0,0 +1,35 @@
+package it.integry.honeywellscannerlibrary;
+
+import android.util.Log;
+
+import it.integry.plugins.barcode_base_library.model.BarcodeType;
+
+public class HoneywellBarcodeTypeMapper {
+
+ public static BarcodeType map(String inputType) {
+
+ switch (inputType) {
+ case "h":
+ return BarcodeType.CODE11;
+ case "j":
+ return BarcodeType.CODE128;
+ case "b":
+ return BarcodeType.CODE39;
+
+ case "d":
+ return BarcodeType.EAN13;
+ case "D":
+ return BarcodeType.EAN8;
+
+ case "c":
+ return BarcodeType.UPCA;
+ case "E":
+ return BarcodeType.UPCE;
+ default:
+ Log.d("SCAN TYPE", inputType);
+ return null;
+ }
+
+ }
+
+}
diff --git a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java
index bedac4db..566feba7 100644
--- a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java
+++ b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java
@@ -5,6 +5,8 @@ import android.content.Context;
import android.content.Intent;
import android.util.Log;
+import androidx.appcompat.app.AppCompatActivity;
+
import java.nio.charset.StandardCharsets;
import device.common.DecodeResult;
@@ -18,7 +20,7 @@ import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class PointMobileBarcodeReader implements BarcodeReaderInterface {
- private Context mContext;
+ private AppCompatActivity mContext;
private static ScanManager mScanManager;
private static DecodeResult mDecodeResult;
@@ -27,7 +29,7 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface {
private static String TAG = PointMobileBarcodeReader.class.getName();
- public PointMobileBarcodeReader(Context context) {
+ public PointMobileBarcodeReader(AppCompatActivity context) {
this.mContext = context;
mScanManager = new ScanManager();
@@ -45,11 +47,13 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface {
}
@Override
- public void init() throws BarcodeAdapterNotFoundException {
+ public void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException {
if(isRightAdapter()){
try{
mScanManager.aDecodeSetTerminator(ScanConst.Terminator.DCD_TERMINATOR_NONE);
mScanManager.aDecodeSetResultType(ScanConst.ResultType.DCD_RESULT_USERMSG);
+
+ onDeviceReady.run();
} catch (Exception ex) {
throw new BarcodeAdapterNotFoundException(getAdapterName());
}
diff --git a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java
index 44d8e3c7..56a9ef0f 100644
--- a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java
+++ b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java
@@ -6,6 +6,8 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
+import androidx.appcompat.app.AppCompatActivity;
+
import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
import it.integry.plugins.barcode_base_library.extension.RunnableArgs;
import it.integry.plugins.barcode_base_library.interfaces.BarcodeReaderInterface;
@@ -13,7 +15,7 @@ import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class ZebraBarcodeReader implements BarcodeReaderInterface {
- private final Context mContext;
+ private final AppCompatActivity mContext;
private static RunnableArgs mOnScanSuccessfull;
private static RunnableArgs mOnScanFailed;
@@ -21,7 +23,7 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface {
private static final String TAG = ZebraBarcodeReader.class.getName();
private static final String INTENT_FILTER_STRING = "it.integry.scan_filter";
- public ZebraBarcodeReader(Context context) {
+ public ZebraBarcodeReader(AppCompatActivity context) {
this.mContext = context;
}
@@ -34,12 +36,14 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface {
}
@Override
- public void init() throws BarcodeAdapterNotFoundException {
+ public void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException {
if(isRightAdapter()) {
IntentFilter filter = new IntentFilter();
filter.addCategory(Intent.CATEGORY_DEFAULT);
filter.addAction(INTENT_FILTER_STRING);
mContext.registerReceiver(myBroadcastReceiver, filter);
+
+ onDeviceReady.run();
} else {
throw new BarcodeAdapterNotFoundException(getAdapterName());
}