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 f250a0f3..c501cc7f 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 @@ -1,10 +1,12 @@ 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; +import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; @@ -13,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; public interface ArticoloGrigliaDao { @Query("SELECT * from articoli_griglia") List getAll(); + @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia") Integer getIdArticoloByGrigliaAndCodMart(int idGriglia, String codMart); @@ -25,6 +28,9 @@ public interface ArticoloGrigliaDao { @Update void update(ArticoloGriglia articolo); + @Delete + void deleteList(List toDelete); + @Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1") ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia); @@ -36,4 +42,7 @@ public interface ArticoloGrigliaDao { @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); + + @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") + List getArticoliFromGriglia(int grigliaId); } 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 32b13095..593515bf 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 @@ -1,5 +1,8 @@ package it.integry.integrywmsnative.core.data_store.db.repository; +import com.annimon.stream.Collectors; +import com.annimon.stream.Stream; + import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; @@ -8,6 +11,7 @@ import java.util.List; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao; 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.expansion.RunnableArgs; public class ArticoliGrigliaRepository extends Repository{ @@ -18,13 +22,15 @@ public class ArticoliGrigliaRepository extends Repository{ this.mRepository = MainApplication.getArticoliGrigliaRepository(); } - public void saveArticoliToGriglia(List articoli, Runnable onSuccess, RunnableArgs onFail) { + public void saveArticoliToGriglia(List articoli, Griglia griglia, Runnable onSuccess, RunnableArgs onFail) { execute(()->{ try{ List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); + List codMarts = new ArrayList<>(); for (ArticoloGriglia art : articoli){ - Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(art.getIdGriglia(),art.getBarCode(),art.getCodMart()); + Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(griglia.getGrigliaId(),art.getBarCode(),art.getCodMart()); + codMarts.add(art.getCodMart()); if (id != null){ art.setArticoloGrigliaId(id); toUpdate.add(art); @@ -34,6 +40,9 @@ public class ArticoliGrigliaRepository extends Repository{ } mRepository.insertAll(toInsert); mRepository.updateAll(toUpdate); + List articoliGriglia = mRepository.getArticoliFromGriglia(griglia.getGrigliaId()); + List toDelete =Stream.of(articoliGriglia).filter(articolo-> !codMarts.contains(articolo.getCodMart())).toList(); + mRepository.deleteList(toDelete); onSuccess.run(); }catch (Exception e){ onFail.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 23103b9b..96fc38d7 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 @@ -12,10 +12,20 @@ public class BaseActivity extends AppCompatActivity { @Override public boolean dispatchKeyEvent(KeyEvent event) { if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) { - if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) { + if (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE && !isControlKey(event)) { return BarcodeManager.onKeyDown(event.getKeyCode(), event); } } return super.dispatchKeyEvent(event); } + + private boolean isControlKey(KeyEvent keyEvent) { + int keyCode = keyEvent.getKeyCode(); + return ( + keyCode == KeyEvent.KEYCODE_BACK || + keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || + keyCode == KeyEvent.KEYCODE_DEL + + ); + } } 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 278c3380..593338a8 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 @@ -18,7 +18,7 @@ public class BaseDialog extends Dialog { public BaseDialog(@NonNull Context context) { super(context); - if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()){ + if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) { setOnKeyListener((dialog, keyCode, event) -> { if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) { return BarcodeManager.onKeyDown(event.getKeyCode(), event); @@ -32,8 +32,8 @@ public class BaseDialog extends Dialog { int keyCode = keyEvent.getKeyCode(); return ( keyCode == KeyEvent.KEYCODE_BACK || - keyCode == KeyEvent.KEYCODE_SHIFT_LEFT - + keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || + keyCode == KeyEvent.KEYCODE_DEL ); } 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 e0bfc964..0b953e1c 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 @@ -50,9 +50,7 @@ public class OrdineAcquistoPvHelper { griglia.setDescrLisa(dto.getDescrLisa()); griglia.setDescrDepo(dto.getDescrDepo()); griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size()); - mGrigliaRepository.saveGriglia(griglia, id -> { - saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail); - }, onFail); + mGrigliaRepository.saveGriglia(griglia, id -> saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail), onFail); }, onFail); } @@ -64,7 +62,7 @@ public class OrdineAcquistoPvHelper { toSave.setIdGriglia(griglia.getGrigliaId()); articoliGriglia.add(toSave); } - mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, () -> onSave.run(griglia), onFail); + mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia,griglia, () -> onSave.run(griglia), onFail); } public void createNewOrder(Griglia griglia, RunnableArgs onSuccess, RunnableArgs onError) {