diff --git a/.idea/runConfigurations/app_base.xml b/.idea/runConfigurations/app_base.xml
new file mode 100644
index 00000000..ea7e0c82
--- /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..b81d38bb
--- /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..49781a95
--- /dev/null
+++ b/.idea/runConfigurations/app_ime.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app_saporiveri.xml b/.idea/runConfigurations/app_saporiveri.xml
new file mode 100644
index 00000000..5db7ea6d
--- /dev/null
+++ b/.idea/runConfigurations/app_saporiveri.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app_saporiveri_pv.xml b/.idea/runConfigurations/app_saporiveri_pv.xml
index 75269e92..42c223ff 100644
--- a/.idea/runConfigurations/app_saporiveri_pv.xml
+++ b/.idea/runConfigurations/app_saporiveri_pv.xml
@@ -1,12 +1,12 @@
-
+
-
+
diff --git a/.idea/runConfigurations/app_vglimenti.xml b/.idea/runConfigurations/app_vglimenti.xml
new file mode 100644
index 00000000..a3b3823b
--- /dev/null
+++ b/.idea/runConfigurations/app_vglimenti.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 3a9f7b4a..fb827529 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 95
- def appVersionName = '1.9.1'
+ def appVersionCode = 98
+ def appVersionName = '1.9.4'
signingConfigs {
release {
@@ -83,7 +83,7 @@ android {
abortOnError false
}
- dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv"]
+ dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri"]
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
index d426b46a..2bd0ca9c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
@@ -12,16 +12,13 @@ import com.google.android.material.navigation.NavigationView;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.ActionBarDrawerToggle;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
-import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
-import android.widget.Toast;
import androidx.fragment.app.FragmentTransaction;
@@ -169,7 +166,7 @@ public class MainActivity extends BaseActivity
private void initGestMenu() {
Menu menu = mBinding.navView.getMenu();
- ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List menuGroups = menuConfiguration.getGroups();
@@ -196,7 +193,7 @@ public class MainActivity extends BaseActivity
}
private MenuConfiguration.MenuItem getMenuItem(@IdRes int menuId) {
- ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List menuGroups = menuConfiguration.getGroups();
@@ -315,7 +312,7 @@ public class MainActivity extends BaseActivity
private void init(){
- ServerStatusChecker.getIstance().addCallback(value -> {
+ ServerStatusChecker.getInstance().addCallback(value -> {
if(value && (!mIsOnline || firstCheckExecution)){
SettingsManager.loadDBVariables(() -> {
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/class_router/BaseCustomConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java
index 8ea19d7e..f8787b21 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java
@@ -12,6 +12,7 @@ public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys {
public static int MENU_CONFIGURATION = 0;
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
+ public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
}
protected HashMap configurations = new HashMap() {{
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
index d5050fbf..d1412345 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
@@ -14,7 +14,8 @@ public class ClassRouter {
public enum PATH {
FILTRO_ORDINI_VENDITA,
ORDINI_VENDITA,
- CUSTOM_CONFIGURATION
+ CUSTOM_CONFIGURATION,
+ BARCODE_CUSTOMIZATION
}
private static Context context;
@@ -59,7 +60,7 @@ public class ClassRouter {
}
- public static T getIstance(PATH path) {
+ public static T getInstance(PATH path) {
try {
if (!checkIClassExists(path)) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IBarcodeCustomization.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IBarcodeCustomization.java
new file mode 100644
index 00000000..21a8c92c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IBarcodeCustomization.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.class_router.interfaces;
+
+public interface IBarcodeCustomization {
+
+ boolean shouldForceToEan13(String barcode);
+
+}
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/dao/ArticoloOrdineDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java
index fee0cfb1..e053f4ef 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java
@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
+import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
@@ -39,7 +40,7 @@ public interface ArticoloOrdineDao {
@Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
- @Query( " SELECT articoli_ordine.* " +
+ @Query(" SELECT articoli_ordine.* " +
" FROM articoli_ordine " +
" LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
" WHERE " +
@@ -50,4 +51,8 @@ public interface ArticoloOrdineDao {
" AND articoli_ordine.id_ordine = :ordineId " +
" LIMIT 1")
ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode);
+
+ @Delete
+ void delete(ArticoloOrdine articolo);
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java
index f4484d6f..22ae973d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java
@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
+import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
@@ -27,4 +28,7 @@ public interface OrdineDao {
@Update
void update(Ordine ordine);
+
+ @Delete
+ void delete(Ordine ordine);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java
index ae68bda0..34407354 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java
@@ -143,7 +143,8 @@ public class Ordine {
}
public void setCodMdep(@Nullable String codMdep) {
- this.codMdep = codMdep; }
+ this.codMdep = codMdep;
+ }
public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
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/data_store/db/repository/ArticoliOrdineRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java
index 57689e86..bf5287ca 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java
@@ -94,4 +94,16 @@ public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableA
}
});
}
+
+ public void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError) {
+ execute(()->{
+ try{
+ mRepository.delete(articolo);
+ onSave.run();
+ }catch (Exception e){
+ onError.run(e);
+ }
+ });
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java
index 6b220cd3..67f3c4cc 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java
@@ -10,7 +10,7 @@ import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGrigl
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-public class OrdineRepository extends Repository{
+public class OrdineRepository extends Repository {
private OrdineDao mRepository;
@@ -18,44 +18,45 @@ public class OrdineRepository extends Repository{
this.mRepository = MainApplication.getOrdiniRepository();
}
- public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError){
- Runnable query = ()->{
- try{
+ public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
onSuccess.run(mRepository.getAll());
- }catch (Exception e){
+ } catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
- public void selectAllTransmitted(RunnableArgs> onSuccess, RunnableArgs onError){
- Runnable query = ()->{
- try{
+
+ public void selectAllTransmitted(RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
onSuccess.run(mRepository.getAllTrasnmitted());
- }catch (Exception e){
+ } catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
- public void selectAllOpenOrders(Griglia griglia, RunnableArgs> onSuccess, RunnableArgs onError){
- Runnable query = ()->{
- try{
+ public void selectAllOpenOrders(Griglia griglia, RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
- }catch (Exception e){
+ } catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
- public void insert(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError){
- execute(()->{
- try{
+ public void insert(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) {
+ execute(() -> {
+ try {
Long id = mRepository.insert(ordine);
onSuccess.run(id.intValue());
- }catch (Exception e){
+ } catch (Exception e) {
onError.run(e);
}
});
@@ -63,11 +64,22 @@ public class OrdineRepository extends Repository{
public void updateOrder(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) {
- execute(()->{
- try{
+ execute(() -> {
+ try {
mRepository.update(ordine);
onSuccess.run(ordine);
- }catch (Exception e){
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ });
+ }
+
+ public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs onError) {
+ execute(() -> {
+ try {
+ mRepository.delete(ordine);
+ onSuccess.run();
+ } catch (Exception e) {
onError.run(e);
}
});
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 2169fd3c..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,9 +11,10 @@ public class BaseActivity extends AppCompatActivity {
@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;
+ if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
+ return BarcodeManager.onKeyDown(event.getKeyCode(), event);
+ }
}
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/core/rest/consumers/BarcodeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
index 34036200..39e20897 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
@@ -1,6 +1,8 @@
package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.class_router.interfaces.IBarcodeCustomization;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
@@ -13,6 +15,15 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
public static void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
+ IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION);
+
+ if(barcodeCustomization != null && barcodeCustomization.shouldForceToEan13(barcodeObj.getStringValue())){
+ Ean128Model ean128Model = new Ean128Model();
+ ean128Model.Gtin = barcodeObj.getStringValue();
+ onComplete.run(ean128Model);
+ return;
+ }
+
String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|");
BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
index 5e438ca2..32a30960 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
@@ -37,7 +37,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
public static void getArticoliListino(String codAlis, RunnableArgs onSuccess, RunnableArgs onFailed) {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService
- .getArticoliListino(codAlis, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
+ .getArticoliListino(codAlis)
.enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
@@ -94,7 +94,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService
- .saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
+ .saveOrdine(saveDTO)
.enqueue(new Callback>>() {
@Override
public void onResponse(Call>> call, Response>> response) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java
index 30ff9292..427e65ec 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java
@@ -15,8 +15,8 @@ import retrofit2.http.Query;
public interface PVOrdiniAcquistoRESTConsumerService {
@POST("SM2GetElencoArticoli")
- Call> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
+ Call> getArticoliListino(@Query("chiaveGriglia") String codAlis);
@POST("SM2SaveTerminalino")
- Call>> saveOrdine(@Body SaveDTO saveDTO, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
+ Call>> saveOrdine(@Body SaveDTO saveDTO);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java
index e3996587..2c40d281 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java
@@ -12,7 +12,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class ServerStatusChecker {
- private static ServerStatusChecker istance = new ServerStatusChecker();
+ private static ServerStatusChecker instance = new ServerStatusChecker();
private List> mCallback = new ArrayList<>();
@@ -47,17 +47,17 @@ public class ServerStatusChecker {
public static void init(){
- istance.shouldExecute = true;
+ instance.shouldExecute = true;
- istance.handler.post(istance.runnableCode);
+ instance.handler.post(instance.runnableCode);
}
public static void dispose() {
- istance.shouldExecute = false;
+ instance.shouldExecute = false;
}
- public static ServerStatusChecker getIstance() {
- return istance;
+ public static ServerStatusChecker getInstance() {
+ return instance;
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
index 930b4f6f..bca2182f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
@@ -4,7 +4,6 @@ import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
@@ -12,23 +11,33 @@ import android.os.Build;
import android.os.Environment;
import com.github.javiersantos.appupdater.AppUpdater;
-import com.github.javiersantos.appupdater.AppUpdaterUtils;
-import com.github.javiersantos.appupdater.enums.AppUpdaterError;
import com.github.javiersantos.appupdater.enums.Display;
import com.github.javiersantos.appupdater.enums.UpdateFrom;
-import com.github.javiersantos.appupdater.objects.Update;
import java.io.File;
-import androidx.core.content.FileProvider;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UpdatesManager {
public static void init(Activity context) {
+ String suffix;
+ ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ try{
+ suffix = customConfiguration.getConfig(BaseCustomConfiguration.Keys.CUSTOM_DYNAMIC_VERSION_PATH);
+ if (suffix == null){
+ suffix = "";
+ }
+ }catch (Exception e){
+ suffix = "";
+ }
+
String currentVersionUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/currentVersion";
- String currentDownloadUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/android-release_v2.apk";
+ String currentDownloadUrl = "http://" + SettingsManager.i().server.host + ":" + SettingsManager.i().server.port + "/ems-api/wms/android-release"+suffix+"_v2.apk";
AppUpdater appUpdater = new AppUpdater(context)
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/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
index c8f80e5b..91f42d91 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
@@ -94,7 +94,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void init(){
- ServerStatusChecker.getIstance().addCallback(value -> {
+ ServerStatusChecker.getInstance().addCallback(value -> {
if(value && mBindings.noConnectionTopLayout.isExpanded()){
collapseNoConnectionLayout();
@@ -215,7 +215,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void initGestMenu() {
- ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List menuGroups = menuConfiguration.getGroups();
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 43077dc7..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
@@ -28,10 +28,13 @@ import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsu
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
-import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding;
+import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter;
+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 {
@@ -40,7 +43,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
private Griglia mGriglia;
private List mArticoli = new ArrayList<>();
private PVEditOrderHelper mhelper;
- private ActivityPvordineAcquistoEditBinding mBinding;
+ private ActivityPvOrdineAcquistoEditBinding mBinding;
private int mBarcodeScannerIstanceID;
private OrdineAcquistoArtListAdapter mAdapter;
@@ -49,15 +52,22 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
super.onCreate(savedInstanceState);
mhelper = new PVEditOrderHelper(this);
- mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit);
+ mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit);
mBinding.setViewModel(this);
mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine"));
- if (mOrdine.isTransmitted()){
+ setSupportActionBar(mBinding.toolbar);
+ mBinding.toolbar.setTitle(R.string.edit_order);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ if (mOrdine.isTransmitted()) {
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
closeEdit();
}
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
+ FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
+
+
initRecyclerView();
fetchDetails();
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
@@ -66,6 +76,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
}
+ @Override
+ public boolean onSupportNavigateUp() {
+ onBackPressed();
+ return true;
+ }
+
private void initRecyclerView() {
mBinding.articoliOrdineList.setHasFixedSize(true);
@@ -74,18 +90,47 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
- mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::addArticolo);
+ mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::selectAction);
mBinding.articoliOrdineList.setAdapter(mAdapter);
}
+ private void selectAction(ArticoloOrdine articoloOrdine) {
+ mBinding.closeActivityFab.close(false);
+ BarcodeManager.disable();
+ runOnUiThread(() -> DialogAskAction.make(this,
+ articoloOrdine.getDescrizione(),
+ articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
+ () -> this.addArticolo(articoloOrdine),
+ () -> this.deleteArticolo(articoloOrdine)).show());
+
+ }
+
+ private void deleteArticolo(ArticoloOrdine articoloOrdine) {
+ String text = "Stai per eliminare l'articolo " + articoloOrdine.getDescrizione() + " dall'ordine,
sei sicuro?";
+
+ DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> {
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+ mhelper.removeArticoloFromOrdine(articoloOrdine, () -> {
+ progress.dismiss();
+ BarcodeManager.enable();
+ runOnUiThread(this::fetchArticoli);
+ }, e -> {
+ progress.dismiss();
+ runOnUiThread(() -> UtilityExceptions.defaultException(this, e));
+ });
+ }), () -> {
+ }).show();
+ }
+
private void handleException(Exception ex) {
- runOnUiThread(()->{
+ runOnUiThread(() -> {
BarcodeManager.enable();
UtilityExceptions.defaultException(this, ex, false);
});
}
private void onScanSuccessful(BarcodeScanDTO dto) {
+ mBinding.closeActivityFab.close(false);
BarcodeManager.disable();
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
mhelper.checkArticolo(
@@ -103,16 +148,13 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
}
private void addArticolo(ArticoloOrdine articoloOrdine) {
- runOnUiThread(()->{
- EditArticoloDialog.make(this, articoloOrdine, articolo -> {
- BarcodeManager.enable();
- if (articolo == null) {
- Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show();
- } else {
- fetchArticoli();
- }
- }).show();
- });
+ runOnUiThread(() -> EditArticoloDialog.make(this, articoloOrdine, articolo -> {
+ BarcodeManager.enable();
+ if (articolo != null) {
+ Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
+ }
+ fetchArticoli();
+ }).show());
}
private void fetchDetails() {
@@ -122,7 +164,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
private void fetchGriglia() {
mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> {
- runOnUiThread(()->{
+ runOnUiThread(() -> {
mGriglia = griglia;
mBinding.codAlis.setText(mGriglia.getCodAlis());
});
@@ -134,10 +176,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
mhelper.loadArticoli(mOrdine, articoli -> {
progress.dismiss();
mArticoli = articoli;
- runOnUiThread(()->{
+ runOnUiThread(() -> {
mAdapter.updateItems(mArticoli);
mBinding.countArtOrd.setText(String.valueOf(mArticoli.size()));
- mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE);
+ mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE);
+ mBinding.closeActivityFab.close(false);
+ mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE);
});
}, this::handleException);
}
@@ -148,15 +192,15 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
public void exportOrdine() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
- PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{
+ PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine, mArticoli, mGriglia, (ordine) -> {
progress.dismiss();
- runOnUiThread(()-> {
+ runOnUiThread(() -> {
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
onBackPressed();
});
- },e-> runOnUiThread(()-> {
+ }, e -> runOnUiThread(() -> {
progress.dismiss();
- UtilityExceptions.defaultException(this,e);
+ UtilityExceptions.defaultException(this, e);
}));
}
@@ -176,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_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java
index ed070376..f00c8bc4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java
@@ -93,7 +93,7 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter {
+ UtilityFocus.focusTextBox(mContext,mBinding.qtaTot);
+ });
mDialog.setOnDismissListener(dialog -> {
onDialogDismiss.run(mSavedArt);
@@ -84,7 +92,7 @@ public class EditArticoloDialog {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
- setQtaCnf(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
+ setQtaCnf(s.toString().length() >0 ? Integer.parseInt(s.toString()) : 0);
}
@Override
@@ -93,7 +101,7 @@ public class EditArticoloDialog {
}
});
}
- public void setQtaCnf(float qtaCnf){
+ public void setQtaCnf(int qtaCnf){
if (mLockedInput){
mLockedInput = false;
}else{
@@ -109,8 +117,7 @@ public class EditArticoloDialog {
mLockedInput = false;
}else{
mLockedInput = true;
- float qtaCnf = qtaOrd / mArticolo.getQtaCnf();
- mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
+ mBinding.qtaCnf.setText(String.valueOf((int)Math.ceil(qtaOrd / mArticolo.getQtaCnf())));
}
}
@@ -129,6 +136,8 @@ public class EditArticoloDialog {
}catch (Exception e){
mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e));
+ progress.dismiss();
+ return;
}
mHelper.saveArticoloToOrdine(mArticolo, ()->{
mSavedArt = mArticolo;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java
index 13fb0d5c..a778db12 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java
@@ -67,4 +67,8 @@ public class PVEditOrderHelper {
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onFail) {
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail);
}
+
+ public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError){
+ mArticoliOrdineRepository.deleteArticolo(articolo, onSave, onError);
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
index 12793b9f..9cce5f01 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
@@ -4,10 +4,12 @@ import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
+import android.text.Html;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Toast;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
@@ -22,6 +24,7 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
@@ -30,6 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
@@ -38,6 +42,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLis
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment {
@@ -47,6 +52,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
private Griglia mGriglia;
private OrdineAcquistoPvOpenListAdapter mAdapter;
private List mRenderedOrderList = new ArrayList<>();
+ private boolean mRedirectToNewOrder = true;
public PVOrdiniAcquistoGrigliaFragment() {
@@ -119,6 +125,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE);
refreshRenderedOrdini(ordini);
mAdapter.updateItems(mRenderedOrderList);
+ if (mRenderedOrderList.size() <= 0 && mRedirectToNewOrder) {
+ createNewOrder();
+ }else{
+ mRedirectToNewOrder = false;
+ }
}
public Griglia getGriglia() {
@@ -133,11 +144,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator);
- mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, selectOrdine);
+ mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, this::selectAction);
mBinding.ordiniAApertiMainList.setAdapter(mAdapter);
}
- private RunnableArgs selectOrdine = ordine -> {
+ private void editOrdine(Ordine ordine) {
Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class);
@@ -146,18 +157,50 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
getActivity().startActivity(myIntent);
- };
+ }
+
+
+
+ private void selectAction(Ordine ordine) {
+ getActivity().runOnUiThread(() -> DialogAskAction.make(getActivity(),
+ Html.fromHtml(String.format(this.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString(),
+ ordine.getCountArticoli() + " articoli",
+ () -> this.editOrdine(ordine),
+ () -> this.deleteOrdine(ordine)).show());
+
+ }
+
+ private void deleteOrdine(Ordine ordine) {
+
+
+ String text = "Stai per eliminare un ordine sei sicuro?";
+
+ DialogSimpleMessageHelper.makeWarningDialog(getActivity(), new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> {
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
+ mHelper.deleteOrder(ordine, () -> {
+ getActivity().runOnUiThread(() -> {
+ progress.dismiss();
+ Toast.makeText(getActivity(), "Ordine eliminato!", Toast.LENGTH_SHORT);
+ fetchOrders();
+ });
+ }, e -> {
+ progress.dismiss();
+ getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e));
+ });
+ }), () -> {
+ }).show();
+ }
private void refreshRenderedOrdini(List ordini) {
mRenderedOrderList.clear();
- if (ordini != null) mRenderedOrderList.addAll(ordini);
+ mRenderedOrderList.addAll(ordini);
}
public void createNewOrder() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
mHelper.createNewOrder(mGriglia, order -> {
progress.dismiss();
- getActivity().runOnUiThread(()-> selectOrdine.run(order));
+ getActivity().runOnUiThread(() -> editOrdine(order));
}, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress)));
}
@@ -175,7 +218,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
@Override
public void onResume() {
super.onResume();
- if (mGriglia != null){
+ if (mGriglia != null) {
fetchOrders();
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java
index bdec5020..2c3f7517 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java
@@ -28,7 +28,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private Context mContext;
private List mDataset;
- RunnableArgs mOnItemSelect;
+ private RunnableArgs mOnItemSelect;
static class SubheaderHolder extends RecyclerView.ViewHolder {
@@ -70,7 +70,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private List orderItems(List dataset) {
return Stream.of(dataset)
.distinctBy(OrdineWrapper::getOrdine)
- .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
+ .sortBy(x -> x.getOrdine().getOrdineId())
.toList();
}
@@ -103,13 +103,11 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
- holder.binding.numArts.setText(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli())));
+ holder.binding.numArts.setText(Html.fromHtml(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli()))));
holder.binding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
- holder.binding.getRoot().setOnClickListener(v -> {
- mOnItemSelect.run(ordine);
- });
+ holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(ordine));
}
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 6cd28d4b..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();
@@ -82,7 +87,7 @@ public class DialogScanLisA {
});
};
- RunnableArgs onGrigliaAvaialable = griglia->{
+ RunnableArgs onGrigliaAvailable = griglia->{
mContext.runOnUiThread(()->{
progressDialog.dismiss();
mGriglia = griglia;
@@ -95,13 +100,9 @@ public class DialogScanLisA {
repository.findByCodAlis(data.getStringValue(),griglia->{
if (griglia != null){
griglia.getGriglia().setCountArticoli(griglia.getCountArticoli());
- if (griglia.getCountArticoli() >0){
- onGrigliaAvaialable.run(griglia.getGriglia());
- }else{
- mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvaialable,mOnError);
- }
+ mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvailable,mOnError);
}else{
- mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvaialable,mOnError);
+ mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvailable,mOnError);
}
},mOnError);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
index 9df45f2d..e0bfc964 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
@@ -10,6 +10,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
@@ -21,11 +22,14 @@ public class OrdineAcquistoPvHelper {
private Context mContext;
private GrigliaRepository mGrigliaRepository;
private ArticoliGrigliaRepository mArticoliGrigliaRepository;
+ private ArticoliOrdineRepository mArticoliOrdineRepository;
private OrdineRepository mOrdineRepository;
+
public OrdineAcquistoPvHelper(Context mContext) {
this.mContext = mContext;
this.mGrigliaRepository = new GrigliaRepository();
this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
+ this.mArticoliOrdineRepository = new ArticoliOrdineRepository();
this.mOrdineRepository = new OrdineRepository();
}
@@ -67,9 +71,13 @@ public class OrdineAcquistoPvHelper {
Ordine ordine = new Ordine();
ordine.setDataIns(new Date());
ordine.setIdGriglia(griglia.getGrigliaId());
- mOrdineRepository.insert(ordine,id->{
+ mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id);
onSuccess.run(ordine);
- },onError);
+ }, onError);
+ }
+
+ public void deleteOrder(Ordine ordine, Runnable onSuccess, RunnableArgs onFail) {
+ mOrdineRepository.delete(ordine, onSuccess, onFail);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java
index bd49de29..85f3f8c1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java
@@ -12,7 +12,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
-import android.widget.Button;
import android.widget.MultiAutoCompleteTextView;
import com.annimon.stream.Stream;
@@ -131,7 +130,7 @@ public class DialogVenditaFiltroAvanzato {
}
private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
- IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getIstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
+ IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> {
// bindings.filledExposedDropdownDataCons.callOnClick();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java
index 51f0fbed..a6c30e0f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java
@@ -100,7 +100,7 @@ public class VenditaOrdineInevasoHelper {
public List getListViewModelPerPosizione(List> groupedRighe, List mtbColrs) {
- ICustomConfiguration customConfiguration = ClassRouter.getIstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
+ ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
List listModel = new ArrayList<>();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
index 2f7e445d..b0ba7938 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
@@ -1,7 +1,7 @@
package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel;
import android.app.Dialog;
-import android.app.ProgressDialog;
+
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -921,7 +921,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
- IOrdiniVendita ordiniVendita = ClassRouter.getIstance(ClassRouter.PATH.ORDINI_VENDITA);
+ IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
ordiniVendita.distribuisciCollo(progress, cloneMtbColt, mTestateOrdini, mtbColts -> {
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/FabMenuCustomAnimations.java b/app/src/main/java/it/integry/integrywmsnative/ui/FabMenuCustomAnimations.java
new file mode 100644
index 00000000..bbaa871e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/FabMenuCustomAnimations.java
@@ -0,0 +1,44 @@
+package it.integry.integrywmsnative.ui;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.view.animation.OvershootInterpolator;
+
+import com.github.clans.fab.FloatingActionMenu;
+
+public class FabMenuCustomAnimations {
+
+ public static void changeIconOnFocus(FloatingActionMenu fabMenu, int iconOpen, int iconClose) {
+ AnimatorSet set = new AnimatorSet();
+
+ ObjectAnimator scaleOutX = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleX", 1.0f, 0.2f);
+ ObjectAnimator scaleOutY = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleY", 1.0f, 0.2f);
+
+ ObjectAnimator scaleInX = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleX", 0.2f, 1.0f);
+ ObjectAnimator scaleInY = ObjectAnimator.ofFloat(fabMenu.getMenuIconView(), "scaleY", 0.2f, 1.0f);
+
+ scaleOutX.setDuration(50);
+ scaleOutY.setDuration(50);
+
+ scaleInX.setDuration(150);
+ scaleInY.setDuration(150);
+
+ scaleInX.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ fabMenu.getMenuIconView().setImageResource(fabMenu.isOpened() ? iconOpen:iconClose);
+ }
+ });
+
+ set.play(scaleOutX).with(scaleOutY);
+ set.play(scaleInX).with(scaleInY).after(scaleOutX);
+ set.setInterpolator(new OvershootInterpolator(2));
+
+ fabMenu.setIconToggleAnimatorSet(set);
+ }
+ public static void changeIconOnFocus(FloatingActionMenu fabMenu, int iconOpen) {
+ changeIconOnFocus(fabMenu,iconOpen,iconOpen);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskAction.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskAction.java
new file mode 100644
index 00000000..247271f3
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskAction.java
@@ -0,0 +1,58 @@
+package it.integry.integrywmsnative.view.dialogs;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+
+import androidx.databinding.DataBindingUtil;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseDialog;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
+import it.integry.integrywmsnative.databinding.DialogAskActionEditDeleteBinding;
+
+public class DialogAskAction {
+ private Activity mContext;
+ private Dialog mDialog;
+ private Runnable mOnEditSelected;
+ private Runnable mOnDeleteSelected;
+
+ private DialogAskAction(Activity context,String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected) {
+ mContext = context;
+ mOnEditSelected = onEditSelected;
+ mOnDeleteSelected = onDeleteSelected;
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ DialogAskActionEditDeleteBinding mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_action_edit_delete, null, false);
+ mBinding.setViewmodel(this);
+
+ mDialog = new BaseDialog(context);
+ mDialog.setContentView(mBinding.getRoot());
+ UtilityDialog.setTo90PercentSize(mContext, mDialog);
+ mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ mBinding.bottomSheetActionsTitle.setText(title);
+ mBinding.bottomSheetActionsSubtitle.setText(subTitle);
+
+ }
+
+
+ public static Dialog make(Activity context, String title, String subtitle, Runnable onEdit, Runnable onDelete) {
+ return new DialogAskAction(context, title,subtitle,onEdit,onDelete).mDialog;
+ }
+
+
+ public void onEdit(){
+ mDialog.dismiss();
+ mOnEditSelected.run();
+ }
+ public void onDelete(){
+ mDialog.dismiss();
+ mOnDeleteSelected.run();
+ }
+
+}
+
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
new file mode 100644
index 00000000..b893d79e
--- /dev/null
+++ b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml
deleted file mode 100644
index d8bf2236..00000000
--- a/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_action_edit_delete.xml b/app/src/main/res/layout/dialog_ask_action_edit_delete.xml
new file mode 100644
index 00000000..055aa010
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_action_edit_delete.xml
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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/app/src/main/res/layout/dialog_pv_edit_articolo.xml b/app/src/main/res/layout/dialog_pv_edit_articolo.xml
index f2470965..c897933e 100644
--- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml
+++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml
@@ -1,18 +1,20 @@
-
+
-
+ android:padding="24dp">
+
+
+
+
+
@@ -53,10 +74,10 @@
android:id="@+id/cod_mart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:textColor="@color/colorPrimary"
android:layout_marginBottom="8dp"
android:ellipsize="end"
android:text="@{viewmodel.articolo.codMart}"
- android:textColor="@color/colorPrimary"
android:textSize="18sp"
android:textStyle="bold"
tools:text="codMart" />
@@ -68,26 +89,33 @@
android:layout_below="@id/cod_mart"
android:ellipsize="end"
android:text="@{viewmodel.articolo.descrizione}"
- android:textColor="@color/red_600"
android:textSize="16sp"
android:textStyle="bold"
tools:text="DESCR ART" />
+
+
+
+
-
-
+
@@ -219,12 +247,12 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/center_guideline"
android:onClick="@{()->viewmodel.cancel()}"
- app:icon="@drawable/ic_clear_24dp"
app:strokeColor="@color/colorPrimary"
- android:text="@string/no"/>
+ android:text="@string/abort"/>
+ android:text="@string/add"/>
diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml
index b9706a7e..bd43c6bc 100644
--- a/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml
+++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml
@@ -30,6 +30,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
+ android:descendantFocusability="blocksDescendants"
android:paddingTop="8dp">
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index c4803b3c..03c0767c 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -260,7 +260,6 @@
Il lotto %s non è attivo. Continuare?
Punto Vendita
- Dynamic SaporiVeri
SaporiVeri PV
Genera ordini di acqusito
Ordini di acquisto trasmessi
@@ -283,4 +282,11 @@
Aggiungi
Chiudi ed esporta ordine
Chiudi ordine
+ Scansiona il codice di un articolo per aggiungerlo all\' ordine
+ Modifica ordine
+ Lista articoli
+ Inserisci quantità
+ Seleziona una azione
+ Elimina
+ Modifica
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d3956a31..f8fc5b9f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -268,7 +268,6 @@
Home
Logout
- Dynamic SaporiVeri
SaporiVeri PV
Sale point
Generate purchase orders
@@ -288,4 +287,12 @@
Add
Close and export
Close order
+ Scan an item barcode to add it to the order
+ Edit order
+ Items list
+ Insert Quantity
+ Choose action
+ Delete
+ Edit
+ SaporVeri Customization
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index bd5dfdd5..1092d0ff 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -156,4 +156,5 @@
+
diff --git a/build_all.bat b/build_all.bat
index 121f6fee..fdc7d8b5 100644
--- a/build_all.bat
+++ b/build_all.bat
@@ -1,4 +1,6 @@
call build_azienda.bat _base
call build_azienda.bat vgalimenti
call build_azienda.bat ime
-call build_azienda.bat frudis
\ No newline at end of file
+call build_azienda.bat frudis
+call build_azienda.bat saporiveri_pv
+call build_azienda.bat saporiveri
\ No newline at end of file
diff --git a/dynamic_saporiveri/.gitignore b/dynamic_saporiveri/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/dynamic_saporiveri/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/dynamic_saporiveri/build.gradle b/dynamic_saporiveri/build.gradle
new file mode 100644
index 00000000..7af41264
--- /dev/null
+++ b/dynamic_saporiveri/build.gradle
@@ -0,0 +1,24 @@
+apply plugin: 'com.android.dynamic-feature'
+
+android {
+ compileSdkVersion 28
+
+
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ }
+
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation project(':app')
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+}
diff --git a/dynamic_saporiveri/src/main/AndroidManifest.xml b/dynamic_saporiveri/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..7990c852
--- /dev/null
+++ b/dynamic_saporiveri/src/main/AndroidManifest.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
new file mode 100644
index 00000000..e373a3d5
--- /dev/null
+++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
@@ -0,0 +1,31 @@
+package it.integry.wms.dynamic_customization;
+
+import android.content.Context;
+import android.util.Log;
+
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.wms.dynamic_customization.extensions.BarcodeCustomization;
+import it.integry.wms.dynamic_customization.extensions.CustomConfiguration;
+import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita;
+import it.integry.wms.dynamic_customization.extensions.OrdiniVendita;
+
+public class DynamicContext {
+
+ public void init(Context context) {
+ Log.d("DynamicContext", "Caricamento personalizzazioni per SaporiVeri");
+
+ try {
+ ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class);
+ ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class);
+ ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class);
+ ClassRouter.registerPath(ClassRouter.PATH.BARCODE_CUSTOMIZATION, BarcodeCustomization.class);
+ } catch (Exception ex) {
+ UtilityExceptions.defaultException(context, ex);
+ }
+
+ Log.d("DynamicContext", "Caricamento personalizzazioni per SaporiVeri COMPLETATO");
+
+ }
+
+}
diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/BarcodeCustomization.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/BarcodeCustomization.java
new file mode 100644
index 00000000..48f469d8
--- /dev/null
+++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/BarcodeCustomization.java
@@ -0,0 +1,14 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IBarcodeCustomization;
+
+public class BarcodeCustomization implements IBarcodeCustomization {
+
+ @Override
+ public boolean shouldForceToEan13(String barcode) {
+
+ return barcode != null && barcode.length() == 13;
+
+ }
+
+}
diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
new file mode 100644
index 00000000..5c3ab3cd
--- /dev/null
+++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
@@ -0,0 +1,11 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
+import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
+
+public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration {
+
+ public CustomConfiguration() {
+ }
+
+}
diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java
new file mode 100644
index 00000000..77adb537
--- /dev/null
+++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java
@@ -0,0 +1,21 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
+
+public class FiltroOrdiniVendita implements IFiltroOrdiniVendita {
+
+ @Override
+ public boolean shoudShowCodMdepFilter() {
+ return false;
+ }
+
+ @Override
+ public boolean shoudShowIdViaggioFilter() {
+ return false;
+ }
+
+ @Override
+ public boolean shoudShowAgenteFilter() {
+ return false;
+ }
+}
diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
new file mode 100644
index 00000000..bbf8cefb
--- /dev/null
+++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
@@ -0,0 +1,26 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import android.app.Dialog;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityToast;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
+
+public class OrdiniVendita implements IOrdiniVendita {
+
+
+ @Override
+ public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ UtilityToast.showToast("Avviato metodo in BaseFeature");
+
+ ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
+ onComplete,
+ onFailed);
+ }
+}
diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
index 1b645f98..46389f8a 100644
--- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
+++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
@@ -7,6 +7,7 @@ public class CustomConfiguration extends BaseCustomConfiguration implements ICus
public CustomConfiguration() {
configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationSAPORIVERIPV());
+ configurations.put(Keys.CUSTOM_DYNAMIC_VERSION_PATH,"_pv");
}
}
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){
diff --git a/settings.gradle b/settings.gradle
index 75c1404c..bf3f1d7e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellscannerlibrary', ':dynamic_ime', ':dynamic_frudis', ':dynamic_saporiveri_pv', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library'
+include ':app', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellscannerlibrary', ':dynamic_ime', ':dynamic_frudis', ':dynamic_saporiveri_pv', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library', ':dynamic_saporiveri'