diff --git a/.idea/runConfigurations/app_base.xml b/.idea/runConfigurations/app_base.xml
new file mode 100644
index 00000000..cb6b1f97
--- /dev/null
+++ b/.idea/runConfigurations/app_base.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app_frudis.xml b/.idea/runConfigurations/app_frudis.xml
new file mode 100644
index 00000000..b1e25bb1
--- /dev/null
+++ b/.idea/runConfigurations/app_frudis.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app_ime.xml b/.idea/runConfigurations/app_ime.xml
new file mode 100644
index 00000000..d8aca230
--- /dev/null
+++ b/.idea/runConfigurations/app_ime.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app_vglimenti.xml b/.idea/runConfigurations/app_vglimenti.xml
new file mode 100644
index 00000000..e0f97c85
--- /dev/null
+++ b/.idea/runConfigurations/app_vglimenti.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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 a66082b7..cb83f66f 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
@@ -100,6 +100,7 @@ public class BarcodeManager {
}
public static boolean onKeyDown(int keyCode, KeyEvent keyEvent){
+ if (mCurrentBarcodeInterface != null)
mCurrentBarcodeInterface.onKeyEvent(keyEvent);
return true;
}
@@ -152,6 +153,7 @@ public class BarcodeManager {
}
-
-
+ public static boolean isKeyboardEmulator() {
+ return mCurrentBarcodeInterface instanceof KeyboardEmulatorBarcodeReader;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java
index 0a83e2df..f250a0f3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java
@@ -33,4 +33,7 @@ public interface ArticoloGrigliaDao {
@Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan )AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia);
+
+ @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1")
+ Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java
index 7929014a..32b13095 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java
@@ -24,7 +24,7 @@ public class ArticoliGrigliaRepository extends Repository{
List toUpdate = new ArrayList<>();
List toInsert = new ArrayList<>();
for (ArticoloGriglia art : articoli){
- Integer id = mRepository.getIdArticoloByGrigliaAndCodMart(art.getIdGriglia(),art.getCodMart());
+ Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(art.getIdGriglia(),art.getBarCode(),art.getCodMart());
if (id != null){
art.setArticoloGrigliaId(id);
toUpdate.add(art);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
index e4ae0100..f73e4cb1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
@@ -11,11 +11,10 @@ public class BaseActivity extends AppCompatActivity {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
- if (event.getDeviceId() != -1 && event.getDeviceId() != 0) {
+ if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
- BarcodeManager.onKeyDown(event.getKeyCode(), event);
+ return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
- return false;
}
return super.dispatchKeyEvent(event);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java
index 11bfe361..2ce56ac8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java
@@ -2,26 +2,42 @@ package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
public class BaseDialog extends Dialog {
+ private boolean mBarcodeListener = false;
public BaseDialog(@NonNull Context context) {
super(context);
+ if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()){
+ setOnKeyListener((dialog, keyCode, event) -> {
+ if (mBarcodeListener && event.getAction() == KeyEvent.ACTION_DOWN && !isControlKey(event)) {
+ return BarcodeManager.onKeyDown(event.getKeyCode(), event);
+ }
+ return false;
+ });
+ }
}
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){
- BarcodeManager.onKeyDown(event.getKeyCode(),event);
- return false;
- }
- return super.dispatchKeyEvent(event);
+ private boolean isControlKey(KeyEvent keyEvent) {
+ int keyCode = keyEvent.getKeyCode();
+ return (
+ keyCode == KeyEvent.KEYCODE_BACK ||
+ keyCode == KeyEvent.KEYCODE_SHIFT_LEFT
+
+ );
+ }
+
+ public void setBarcodeListener(boolean listen) {
+ this.mBarcodeListener = listen;
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java
index 4f4f53e9..c40cc742 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java
@@ -5,6 +5,7 @@ import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.utility.UtilityWindow;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
index 907b6b08..78da5e19 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
@@ -34,6 +34,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdineAcquistoEditActivity extends BaseActivity {
@@ -219,4 +220,23 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
}
+ public void manualSearch(){
+ BarcodeManager.disable();
+ DialogSimpleInputHelper.makeInputDialog(this,"Inserisci il codice a barre/codice articolo da cercare",codice->{
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+ mhelper.checkArticolo(
+ mOrdine,
+ codice,
+ articoloOrdine -> {
+ progress.dismiss();
+ addArticolo(articoloOrdine);
+ },
+ e -> {
+ progress.dismiss();
+ handleException(e);
+ }
+ );
+ }, BarcodeManager::enable).show();
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java
index 691e1b73..122b63dc 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java
@@ -3,8 +3,10 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
+import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
@@ -26,7 +28,7 @@ public class DialogScanLisA {
private Activity mContext;
- private Dialog mDialog;
+ private BaseDialog mDialog;
private DialogScanCodiceGrigliaBinding mBinding;
@@ -55,12 +57,15 @@ public class DialogScanLisA {
return new DialogScanLisA(context, onDialogDismiss).mDialog;
}
+
+
private void initBarcode() {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
+ mDialog.setBarcodeListener(true);
mDialog.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
BarcodeManager.enable();
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java
new file mode 100644
index 00000000..19901d73
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java
@@ -0,0 +1,80 @@
+package it.integry.integrywmsnative.view.dialogs.base;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.Rect;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.view.LayoutInflater;
+import android.view.Window;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.annotation.StringRes;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+
+import java.util.HashMap;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
+import it.integry.integrywmsnative.databinding.DialogBaseBinding;
+import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding;
+
+/**
+ * Created by GiuseppeS on 22/03/2018.
+ */
+
+public class DialogSimpleInputHelper {
+
+
+ private static Dialog makeBase(Context mContext, String titleText, RunnableArgs onPositiveClick, Runnable onNegativeClick){
+ Dialog dialog = new Dialog(mContext);
+ DialogSimpleInputViewModel viewModel = new DialogSimpleInputViewModel(dialog);
+
+
+
+ DialogInputGeneralBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_input_general, null, false);
+ viewModel
+ .setOnPositive(()->{
+
+ onPositiveClick.run(mBinding.generalInput.getText().toString());
+ })
+ .setOnNegative(onNegativeClick);
+
+ mBinding.setViewmodel(viewModel);
+
+ //Title VIEW
+ mBinding.titleText.setText(titleText);
+ ColorStateList colorStateList = ColorStateList.valueOf(Color.WHITE);
+
+ //Content View
+ dialog.setCancelable(true);
+ dialog.setCanceledOnTouchOutside(false);
+ dialog.setContentView(mBinding.getRoot());
+ dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ UtilityDialog.setTo90PercentSize(mContext,dialog);
+
+ return dialog;
+ }
+
+
+ public static Dialog makeInputDialog(Context mContext, String title, RunnableArgs onPositiveClick, Runnable onNegativeClick){
+
+ return makeBase(mContext,
+ title,
+ onPositiveClick,
+ onNegativeClick);
+
+ }
+
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputViewModel.java
new file mode 100644
index 00000000..d57a3c63
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputViewModel.java
@@ -0,0 +1,49 @@
+package it.integry.integrywmsnative.view.dialogs.base;
+
+import android.app.Dialog;
+
+public class DialogSimpleInputViewModel {
+
+
+ private Dialog mDialog;
+ private Runnable onPositive;
+ private Runnable onNegative;
+
+
+ public DialogSimpleInputViewModel(Dialog dialog) {
+ mDialog = dialog;
+ }
+
+ public DialogSimpleInputViewModel setOnPositive(Runnable onPositive) {
+ this.onPositive = onPositive;
+ return this;
+ }
+
+
+
+ public DialogSimpleInputViewModel setOnNegative(Runnable onNegative) {
+ this.onNegative = onNegative;
+ return this;
+ }
+
+
+
+ public boolean isPositiveVisible() {
+ return onPositive != null;
+ }
+
+
+ public boolean isNegativeVisible() {
+ return onNegative != null;
+ }
+
+
+ public void onPositiveClick() {
+ mDialog.dismiss();
+ if(onPositive != null) onPositive.run();
+ }
+ public void onNegativeClick() {
+ mDialog.dismiss();
+ if(onNegative != null) onNegative.run();
+ }
+}
diff --git a/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml
index d3ccc757..b893d79e 100644
--- a/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml
+++ b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml
@@ -52,13 +52,16 @@
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:layout_gravity="start" />
-
+ android:layout_height="50dp"
+ android:layout_gravity="end"
+ android:background="@drawable/ripple_effect"
+ android:adjustViewBounds="true"
+ android:src="@drawable/ic_search_black_24dp"
+ android:onClick="@{()->viewModel.manualSearch()}"
+ android:tint="@color/colorPrimaryGray"/>
diff --git a/app/src/main/res/layout/dialog_input_general.xml b/app/src/main/res/layout/dialog_input_general.xml
new file mode 100644
index 00000000..70a5a1c3
--- /dev/null
+++ b/app/src/main/res/layout/dialog_input_general.xml
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java
index e98db0ec..6bc32e4c 100644
--- a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java
+++ b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java
@@ -62,7 +62,9 @@ public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface {
if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_ENTER){
if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_SHIFT_LEFT){
mLastCharInsertTime =keyEvent.getEventTime();
- mTextBarcode+= (char) keyEvent.getUnicodeChar();
+ if (keyEvent.getUnicodeChar() > 0){
+ mTextBarcode+= (char) keyEvent.getUnicodeChar();
+ }
}
}else{
if (mTextBarcode.length() > 0){