From f6fae0e51bbddbfdc19d636c1f8882ee613000b2 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Fri, 8 Nov 2019 10:12:59 +0100 Subject: [PATCH 1/2] modifiche sapori veri --- .idea/assetWizardSettings.xml | 125 +--- .idea/caches/build_file_checksums.ser | Bin 1162 -> 0 bytes .idea/codeStyles/Project.xml | 48 -- .idea/dbnavigator.xml | 549 ------------------ .idea/misc.xml | 39 -- .idea/runConfigurations/app.xml | 55 -- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 1 + .../integrywmsnative/MainApplication.java | 12 +- .../core/data_store/db/AppDatabase.java | 2 +- .../data_store/db/dao/ArticoloGrigliaDao.java | 9 + .../data_store/db/dao/ArticoloOrdineDao.java | 35 ++ .../core/data_store/db/dao/GrigliaDao.java | 6 +- .../core/data_store/db/dao/OrdineDao.java | 11 +- .../data_store/db/entity/ArticoloGriglia.java | 32 +- .../data_store/db/entity/ArticoloOrdine.java | 26 +- .../core/data_store/db/entity/Ordine.java | 14 +- .../repository/ArticoliGrigliaRepository.java | 29 +- .../repository/ArticoliOrdineRepository.java | 75 +++ .../db/repository/GrigliaRepository.java | 14 +- .../db/repository/OrdineRepository.java | 26 +- .../data_store/db/view_model/ArticoloDTO.java | 12 +- .../db/view_model/OrdineWithGriglia.java | 15 - .../db/wrappers/GrigliaWrapper.java | 28 + .../data_store/db/wrappers/OrdineWrapper.java | 29 + .../PVOrdiniAcquistoRESTConsumer.java | 31 +- .../core/utility/UtilityProgress.java | 5 + .../core/utility/UtilitySettings.java | 3 +- .../PVOrdiniAcquistoGrigliaFragment.java | 118 +++- ...OrdiniAcquistoTransmittedListFragment.java | 5 - .../core/OrdineAcquistoPvOpenListAdapter.java | 135 +++++ .../core/OrdiniAcquistoElencoHelper.java | 13 - .../dialogs/DialogScanLisA.java | 55 +- .../helper/OrdineAcquistoPvHelper.java | 20 +- .../PVOrdineAcquistoEditActivity.java | 134 +++++ .../dialog/EditArticoloDialog.java | 127 ++++ .../helper/PVEditOrderHelper.java | 82 +++ .../view/dialogs/DialogProgress.java | 12 +- app/src/main/res/drawable/ic_save_24.xml | 9 + .../activity_pvordine_acquisto_edit.xml | 202 +++++++ .../res/layout/dialog_pv_edit_articolo.xml | 237 ++++++++ ...fragment_ordini_a_pv__list_single_item.xml | 3 +- .../layout/fragment_pv_ordini_acquisto.xml | 133 +++-- ...agment_pv_ordini_acquisto__list_header.xml | 37 ++ ...t_pv_ordini_acquisto__list_single_item.xml | 70 +++ app/src/main/res/values-it/strings.xml | 9 + app/src/main/res/values/strings.xml | 9 + build.gradle | 4 +- 48 files changed, 1669 insertions(+), 977 deletions(-) delete mode 100644 .idea/caches/build_file_checksums.ser delete mode 100644 .idea/dbnavigator.xml delete mode 100644 .idea/runConfigurations/app.xml create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdiniAcquistoElencoHelper.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java create mode 100644 app/src/main/res/drawable/ic_save_24.xml create mode 100644 app/src/main/res/layout/activity_pvordine_acquisto_edit.xml create mode 100644 app/src/main/res/layout/dialog_pv_edit_articolo.xml create mode 100644 app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml create mode 100644 app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index 96beb22f..4c3dfb58 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -3,124 +3,6 @@ diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser deleted file mode 100644 index 6d4c0e1e7531e92247b6abee29aad4bc20458eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1162 zcma)*Uq}=|9LJ|C|6E+27MPWxMqP-pM`juQ!OIgZQ82uc=-`^$o$gj=ceb6`(+iR^ zdI+oxD(WHhL9ss;WG{*&rA0>wAxWi0S6E?UnMPm_W_#ut5+^R~?!#|Cv)}oCzti#+ zL{Syw@I>OEET}{jI7SGjoG2j3c~mH1#3?E%M?B+7{=RcH5exYuMs_daE2t*Xyt1qp zPgi)-4Zu(cR!ROMNLj%&Tk4m2hbSS+prjN5v*e!xGGHz$hdyZ4n24>#P}y0f0I*0- zJH_gCT?wHX7n*TsF;CA-HAtf7Xw2+Sc(Z0@*&TNx(^tcS4GrIuu!Gs*g)t? zs*Kg2srntyz-qxSLrLUaE;ppe=?-mTW`mjv42N@Deyp5`j&-~@01y%Z;@eH%E?u#7 zT3_{AEpLB*cj#g%Voa1hGz=aC)gU_b?Q`o3Q^wGi%Y$+dr`Upz8OW$We&U9zfFun= zT_WY7EF%?*ZWXHjxdLX_F`Lph4-B7p*k!p>wk+%V9tPHhbyKJiRrDcMbSb_Fcmr)* z9@zfowqxK|eoy?>mkd}GBFao6ZauFBDcHM<2JZLu1SYe$wLkIaU1K2OUkwzbG7(X2 zR_{oo_06#TLvOd%u<3RC#4iTcdx?zvl?dYn{mytkx?^LfY#tjV!^cLk%s}dKq&u`A zIN=7_rnPdVThon0Q<>xA48%i4iQtXx?#FY_>TZr|-gloi{J!;$fpk3{o(O2V5w4m3 zyXFt5V{m^_&15sZmw^(CGq+nAFwLpbtTSlJ9B4CS_ZPOECPCXOx2_En9^%kx`p?Ex zTWXLiDY*Vh3k0L$#%lHY*mpP&P^41lL5TItiQPF-4 z&A^&)eU7S{Akqll{NJ0DFz53?tRG;Ri4oZ5pF diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 554ffcdb..ae78c113 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,53 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml deleted file mode 100644 index d39f1b0e..00000000 --- a/.idea/dbnavigator.xml +++ /dev/null @@ -1,549 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
\ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 4896e0c9..b6ea2b11 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,44 +1,5 @@ - - - - diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app.xml deleted file mode 100644 index 6c4702c4..00000000 --- a/.idea/runConfigurations/app.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4c1272ce..65fafba6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -113,6 +113,7 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-runtime:2.1.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0' implementation 'androidx.lifecycle:lifecycle-common-java8:2.1.0' + implementation 'org.apache.commons:commons-text:1.6' //kapt "androidx.lifecycle:lifecycle-compiler:2.0.0" implementation 'com.danielpuiu:ghostfish:2.0.0' annotationProcessor "com.danielpuiu:ghostfish-compiler:2.0.0" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e72614ee..9c827172 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,6 +18,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> + appDb.clearAllTables()).start(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index 1b658568..78f788e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -17,7 +17,7 @@ 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; -@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 3, exportSchema = false) +@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 2, exportSchema = false) @TypeConverters({ DateConverter.class }) 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 7b1c20f0..0a83e2df 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 @@ -24,4 +24,13 @@ public interface ArticoloGrigliaDao { void updateAll(List articoli); @Update void update(ArticoloGriglia articolo); + + @Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1") + ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia); + + @Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1") + ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia); + + @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); } 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 300b1c73..93052e4e 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,15 +1,50 @@ package it.integry.integrywmsnative.core.data_store.db.dao; import androidx.room.Dao; +import androidx.room.Insert; import androidx.room.Query; +import androidx.room.Update; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; @Dao public interface ArticoloOrdineDao { + @Query("SELECT * from articoli_ordine") List getAll(); + + @Insert + void insertAll(List toInsert); + + @Insert + void insert(ArticoloOrdine articolo); + + @Query("SELECT * FROM articoli_ordine where bar_code = :barcode and id_ordine = :ordine LIMIT 1") + ArticoloOrdine findArticoloByOrdineAndBarcode(int ordine, String barcode); + + @Query( " SELECT articoli_ordine.* " + + " FROM articoli_ordine " + + " LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " + + " WHERE " + + " (" + + " articoli_ordine.cod_mart = :scan" + + " OR articoli_ordine.bar_code = :scan" + + " OR articoli_griglia.bar_code = :scan" + + " )" + + " AND articoli_ordine.id_ordine = :ordine " + + " LIMIT 1") + ArticoloOrdine findArticoloByScanAndGriglia(int ordine, String scan); + + @Update + void updateAll(List toUpdate); + + @Update + void update(ArticoloOrdine articolo); + + @Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId") + List findArticoliByOrdine(int ordineId); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java index 864966db..8cdf61ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java @@ -10,6 +10,7 @@ import java.util.List; 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.wrappers.GrigliaWrapper; @Dao public interface GrigliaDao { @@ -17,7 +18,7 @@ public interface GrigliaDao { List getAll(); @Query("SELECT *, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id") - Griglia findByCodAlis(String codAlis); + GrigliaWrapper findByCodAlis(String codAlis); @Insert long insert(Griglia griglia); @@ -33,4 +34,7 @@ public interface GrigliaDao { @Delete void delete(Griglia griglia); + + @Query("SELECT * from griglie where griglia_id = :idGriglia") + Griglia findGrigliaById(int idGriglia); } 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 c8b76fe2..328e28de 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,19 +1,26 @@ package it.integry.integrywmsnative.core.data_store.db.dao; import androidx.room.Dao; +import androidx.room.Insert; import androidx.room.Query; import java.util.List; -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.view_model.OrdineWithGriglia; +import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; @Dao public interface OrdineDao { @Query("SELECT * from ordini ") List getAll(); - @Query("SELECT ordini.*, griglie.* from ordini inner join griglie ON id_griglia = griglie.griglia_id") + @Query("SELECT ordini.*, griglie.* from ordini inner join griglie ON id_griglia = griglie.griglia_id where ordini.transmitted = 1") List getAllTrasnmitted(); + + @Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ordini.id_griglia = :idGriglia group by ordini.ordine_id") + List getAllOpenOrdersByGriglia(int idGriglia); + + @Insert + Long insert(Ordine ordine); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java index 763941be..ce7d88ba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java @@ -19,7 +19,7 @@ import androidx.room.PrimaryKey; onDelete = ForeignKey.CASCADE ) } - ) +) public class ArticoloGriglia { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "articolo_griglia_id") @@ -41,7 +41,7 @@ public class ArticoloGriglia { private String barCode; @ColumnInfo(name = "merce_da_ric") - private int merceDaRic; + private float merceDaRic; @ColumnInfo(name = "media_sett") private float mediaSett; @@ -50,7 +50,7 @@ public class ArticoloGriglia { private String flagQtaMultipla; @ColumnInfo(name = "qta_min_ordinabile") - private int qtaMinOrdinabile; + private float qtaMinOrdinabile; @ColumnInfo(name = "id_griglia") private int idGriglia; @@ -103,11 +103,11 @@ public class ArticoloGriglia { this.barCode = barCode; } - public int getMerceDaRic() { + public float getMerceDaRic() { return merceDaRic; } - public void setMerceDaRic(int merceDaRic) { + public void setMerceDaRic(float merceDaRic) { this.merceDaRic = merceDaRic; } @@ -127,11 +127,11 @@ public class ArticoloGriglia { this.flagQtaMultipla = flagQtaMultipla; } - public int getQtaMinOrdinabile() { + public float getQtaMinOrdinabile() { return qtaMinOrdinabile; } - public void setQtaMinOrdinabile(int qtaMinOrdinabile) { + public void setQtaMinOrdinabile(float qtaMinOrdinabile) { this.qtaMinOrdinabile = qtaMinOrdinabile; } @@ -142,4 +142,22 @@ public class ArticoloGriglia { public void setIdGriglia(int idGriglia) { this.idGriglia = idGriglia; } + + public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { + ArticoloOrdine articolo = new ArticoloOrdine(); + + articolo.setIdOrdine(ordine.getOrdineId()); + + articolo.setBarCode(this.getBarCode()); + articolo.setCodMart(this.getCodMart()); + articolo.setMediaSett(this.getMediaSett()); + articolo.setFlagQtaMultipla(this.getFlagQtaMultipla()); + articolo.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); + articolo.setMerceDaRic(this.getMerceDaRic()); + articolo.setQtaCnf(this.getQtaCnf()); + articolo.setUntMis(this.getUntMis()); + articolo.setDescrizione(this.getDescrizione()); + + return articolo; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java index 5fe50c30..13755e84 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java @@ -9,7 +9,8 @@ import androidx.room.PrimaryKey; @Entity( tableName = "articoli_ordine", indices = { - @Index(value = "id_ordine") + @Index(value = "id_ordine"), + @Index(value = {"id_ordine","cod_mart"}, unique = true) }, foreignKeys = { @ForeignKey( @@ -41,7 +42,7 @@ public class ArticoloOrdine { private String barCode; @ColumnInfo(name = "merce_da_ric") - private int merceDaRic; + private float merceDaRic; @ColumnInfo(name = "media_sett") private float mediaSett; @@ -50,11 +51,14 @@ public class ArticoloOrdine { private String flagQtaMultipla; @ColumnInfo(name = "qta_min_ordinabile") - private int qtaMinOrdinabile; + private float qtaMinOrdinabile; @ColumnInfo(name = "id_ordine") private int idOrdine; + @ColumnInfo(name = "qta_ord") + private float qtaOtd; + public int getArticoloOrdineId() { return articoloOrdineId; } @@ -103,11 +107,11 @@ public class ArticoloOrdine { this.barCode = barCode; } - public int getMerceDaRic() { + public float getMerceDaRic() { return merceDaRic; } - public void setMerceDaRic(int merceDaRic) { + public void setMerceDaRic(float merceDaRic) { this.merceDaRic = merceDaRic; } @@ -127,11 +131,11 @@ public class ArticoloOrdine { this.flagQtaMultipla = flagQtaMultipla; } - public int getQtaMinOrdinabile() { + public float getQtaMinOrdinabile() { return qtaMinOrdinabile; } - public void setQtaMinOrdinabile(int qtaMinOrdinabile) { + public void setQtaMinOrdinabile(float qtaMinOrdinabile) { this.qtaMinOrdinabile = qtaMinOrdinabile; } @@ -142,4 +146,12 @@ public class ArticoloOrdine { public void setIdOrdine(int idOrdine) { this.idOrdine = idOrdine; } + + public float getQtaOtd() { + return qtaOtd; + } + + public void setQtaOtd(float qtaOtd) { + this.qtaOtd = qtaOtd; + } } 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 a0f9a2e4..31313e85 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 @@ -3,9 +3,8 @@ package it.integry.integrywmsnative.core.data_store.db.entity; import androidx.annotation.Nullable; import androidx.room.ColumnInfo; import androidx.room.Entity; +import androidx.room.Ignore; import androidx.room.PrimaryKey; -import androidx.room.TypeConverter; -import androidx.room.TypeConverters; import java.util.Date; @@ -30,6 +29,9 @@ public class Ordine { @Nullable private Date transmissionDate; + @Ignore + private int countArticoli = 0; + @ColumnInfo(name = "id_griglia") private int idGriglia; @@ -81,4 +83,12 @@ public class Ordine { public void setTransmissionDate(@Nullable Date transmissionDate) { this.transmissionDate = transmissionDate; } + + public int getCountArticoli() { + return countArticoli; + } + + public void setCountArticoli(int countArticoli) { + this.countArticoli = countArticoli; + } } 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 76b10e76..c263551c 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 @@ -25,7 +25,6 @@ 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()); if (id != null){ art.setArticoloGrigliaId(id); @@ -37,8 +36,34 @@ public class ArticoliGrigliaRepository extends Repository{ mRepository.insertAll(toInsert); mRepository.updateAll(toUpdate); onSuccess.run(); + }catch (Exception e){ + onFail.run(e); + } + }); + } - + public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){ + execute(()->{ + try{ + onSuccess.run(mRepository.findArticoloByBarcodeAndGriglia(barcode, idGriglia)); + }catch (Exception e){ + onFail.run(e); + } + }); + } + public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){ + execute(()->{ + try{ + onSuccess.run(mRepository.findArticoloByCodMartAndGriglia(codMart, idGriglia)); + }catch (Exception e){ + onFail.run(e); + } + }); + } + public void findArticoloByScanAndGriglia(String scan, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){ + execute(()->{ + try{ + onSuccess.run(mRepository.findArticoloByScanAndGriglia(scan, idGriglia)); }catch (Exception e){ onFail.run(e); } 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 new file mode 100644 index 00000000..45bc4740 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java @@ -0,0 +1,75 @@ +package it.integry.integrywmsnative.core.data_store.db.repository; + +import java.util.ArrayList; +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.dao.ArticoloOrdineDao; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; + +public class ArticoliOrdineRepository extends Repository { + + ArticoloOrdineDao mRepository; + + public ArticoliOrdineRepository() { + this.mRepository = MainApplication.getArticoliOrdineRepository(); + } + + public void saveArticoliToOrdine(List articoli, Runnable onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + for (ArticoloOrdine art : articoli) { + if (art.getArticoloOrdineId() > 0) { + toUpdate.add(art); + } else { + toInsert.add(art); + } + } + mRepository.insertAll(toInsert); + mRepository.updateAll(toUpdate); + onSuccess.run(); + + + } catch (Exception e) { + onFail.run(e); + } + }); + } + + public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + ArticoloOrdine articolo = mRepository.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode); + onSuccess.run(articolo); + } catch (Exception e) { + onFail.run(e); + } + }); + } +public void findArticoloByScanAndGriglia(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + ArticoloOrdine articolo = mRepository.findArticoloByScanAndGriglia(ordine.getOrdineId(), barcode); + onSuccess.run(articolo); + } catch (Exception e) { + onFail.run(e); + } + }); + } + + public void findArticoliByOrdine(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) { + execute(() -> { + try { + onLoad.run(mRepository.findArticoliByOrdine(ordine.getOrdineId())); + } catch (Exception e) { + onError.run(e); + } + }); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java index 33896dff..437d9e65 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java @@ -5,6 +5,8 @@ import java.util.List; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; +import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper; +import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgs; public class GrigliaRepository extends Repository{ @@ -26,7 +28,7 @@ public class GrigliaRepository extends Repository{ execute(query); } - public void findByCodAlis(String codAlis ,RunnableArgs onSuccess, RunnableArgs onError){ + public void findByCodAlis(String codAlis , RunnableArgs onSuccess, RunnableArgs onError){ Runnable query = ()->{ try{ onSuccess.run(mRepository.findByCodAlis(codAlis)); @@ -52,4 +54,14 @@ public class GrigliaRepository extends Repository{ } }); } + + public void findGrigliaById(int idGriglia, RunnableArgs onLoad, RunnableArgs onFail) { + execute(()->{ + try{ + onLoad.run(mRepository.findGrigliaById(idGriglia)); + }catch (Exception e){ + onFail.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 c22b925b..3e36a6ae 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 @@ -4,13 +4,15 @@ import java.util.List; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao; +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.view_model.OrdineWithGriglia; +import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.expansion.RunnableArgs; public class OrdineRepository extends Repository{ - OrdineDao mRepository; + private OrdineDao mRepository; public OrdineRepository() { this.mRepository = MainApplication.getOrdiniRepository(); @@ -37,5 +39,27 @@ public class OrdineRepository extends Repository{ execute(query); } + public void selectAllOpenOrders(Griglia griglia, RunnableArgs> onSuccess, RunnableArgs onError){ + Runnable query = ()->{ + try{ + onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId())); + }catch (Exception e){ + onError.run(e); + } + }; + execute(query); + } + + public void insert(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError){ + execute(()->{ + try{ + Long id = mRepository.insert(ordine); + onSuccess.run(id.intValue()); + }catch (Exception e){ + onError.run(e); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java index 7aa4b6e7..9dc95f6b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java @@ -19,7 +19,7 @@ public class ArticoloDTO { private String barcode; - private int merceDaRic; + private float merceDaRic; private float mediaSett; @@ -27,7 +27,7 @@ public class ArticoloDTO { private String flagQtaMultipla; - private int qtaMinOrdinabile; + private float qtaMinOrdinabile; public String getCodMart() { return codMart; @@ -69,11 +69,11 @@ public class ArticoloDTO { this.barcode = barCode; } - public int getMerceDaRic() { + public float getMerceDaRic() { return merceDaRic; } - public void setMerceDaRic(int merceDaRic) { + public void setMerceDaRic(float merceDaRic) { this.merceDaRic = merceDaRic; } @@ -93,11 +93,11 @@ public class ArticoloDTO { this.flagQtaMultipla = flagQtaMultipla; } - public int getQtaMinOrdinabile() { + public float getQtaMinOrdinabile() { return qtaMinOrdinabile; } - public void setQtaMinOrdinabile(int qtaMinOrdinabile) { + public void setQtaMinOrdinabile(float qtaMinOrdinabile) { this.qtaMinOrdinabile = qtaMinOrdinabile; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java index aaf1337b..e9c0a785 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java @@ -14,12 +14,6 @@ public class OrdineWithGriglia { @Embedded private Griglia griglia; - @Ignore - public BindableBoolean selected; - - public OrdineWithGriglia() { - this.selected = new BindableBoolean(false); - } public Ordine getOrdine() { return ordine; @@ -36,13 +30,4 @@ public class OrdineWithGriglia { public void setGriglia(Griglia griglia) { this.griglia = griglia; } - - public boolean isSelected() { - return selected.get(); - } - - public OrdineWithGriglia setSelected(boolean selected) { - this.selected.set(selected); - return this; - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java new file mode 100644 index 00000000..0640a799 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java @@ -0,0 +1,28 @@ +package it.integry.integrywmsnative.core.data_store.db.wrappers; + +import androidx.room.Embedded; + +import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; + +public class GrigliaWrapper { + @Embedded + private Griglia griglia; + + private int countArticoli = 0; + + public Griglia getGriglia() { + return griglia; + } + + public void setGriglia(Griglia griglia) { + this.griglia = griglia; + } + + public int getCountArticoli() { + return countArticoli; + } + + public void setCountArticoli(int countArticoli) { + this.countArticoli = countArticoli; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java new file mode 100644 index 00000000..c50209b1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java @@ -0,0 +1,29 @@ +package it.integry.integrywmsnative.core.data_store.db.wrappers; + +import androidx.room.Embedded; + +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; + +public class OrdineWrapper { + + @Embedded + private Ordine ordine; + + private int countArticoli = 0; + + public Ordine getOrdine() { + return ordine; + } + + public void setOrdine(Ordine ordine) { + this.ordine = ordine; + } + + public int getCountArticoli() { + return countArticoli; + } + + public void setCountArticoli(int countArticoli) { + this.countArticoli = countArticoli; + } +} 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 717813d8..5541eba9 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 @@ -2,6 +2,13 @@ package it.integry.integrywmsnative.core.rest.consumers; import android.util.Log; +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.RESTBuilder; @@ -18,14 +25,34 @@ 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) .enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - analyzeAnswer(response,"getArticoliListino",onSuccess,onFailed); + analyzeAnswer(response, "getArticoliListino", griglia -> { + + List listaArticoli = new ArrayList<>(); + Stream.of(griglia.getGrigliaAcquistiChild()) + .map(ArticoloDTO::getCodMart) + .distinct() + .withoutNulls() + .forEach(art -> { + List inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList(); + if (inList.size() > 1){ + for (ArticoloDTO articolo : inList){ + if (!articolo.getBarCode().endsWith(articolo.getCodMart())){ + listaArticoli.add(articolo); + } + } + }else{ + listaArticoli.add(inList.get(0)); + } + }); + griglia.setGrigliaAcquistiChild(listaArticoli); + onSuccess.run(griglia); + }, onFailed); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java index 6ac2a5e2..23faedda 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java @@ -20,6 +20,11 @@ public class UtilityProgress { progress.show(); return progress; } + public static Dialog createDefaultProgressDialog(Context mContext,String subtitle) { + Dialog progress = DialogProgress.make(mContext,subtitle); + progress.show(); + return progress; + } public static Thread makeProgressBarIndeterminate(ProgressBar progressBar) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java index 7c41cb75..4d111d95 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.utility; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsModel; @@ -9,7 +10,7 @@ public class UtilitySettings { public static void logout(){ SettingsManager.i().user = null; SettingsManager.i().userSession = null; - + MainApplication.clearDB(); SettingsManager.update(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java index 67945929..d461dc7e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java @@ -1,35 +1,60 @@ package it.integry.integrywmsnative.gest.ordini_acquisto_pv; +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 androidx.appcompat.widget.AppCompatTextView; +import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; + +import java.util.ArrayList; +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.Griglia; +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; +import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; +import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; +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.model.MtbColt; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdiniAcquistoElencoHelper; +import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.gest.ordini_acquisto_pv.dialogs.DialogScanLisA; +import it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper.OrdineAcquistoPvHelper; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; +import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; -public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment { +public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment { private FragmentPvOrdiniAcquistoBinding mBinding; - private OrdiniAcquistoElencoHelper mHelper; + private OrdineAcquistoPvHelper mHelper; private Griglia mGriglia; + private OrdineAcquistoPvOpenListAdapter mAdapter; + private List mRenderedOrderList = new ArrayList<>(); public PVOrdiniAcquistoGrigliaFragment() { + mHelper = new OrdineAcquistoPvHelper(getActivity()); } public static PVOrdiniAcquistoGrigliaFragment newInstance() { @@ -40,12 +65,14 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_acquisto, container, false); + mBinding.setViewmodel(this); init(); + initRecyclerView(); return mBinding.getRoot(); } @@ -53,7 +80,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled BarcodeManager.enable(); DialogScanLisA.make(getActivity(), griglia -> { - if(griglia == null) { + if (griglia == null) { ((IPoppableActivity) getActivity()).pop(); } else { setGriglia(griglia); @@ -67,7 +94,84 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString()); } - private void setGriglia(Griglia griglia){ + private void setGriglia(Griglia griglia) { mGriglia = griglia; + mBinding.fabNewOrder.setVisibility(View.VISIBLE); + mBinding.codAlis.setText(griglia.getCodAlis()); + mBinding.descrLis.setText(griglia.getDescrLisa()); + mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli())); + + fetchOrders(); + } + + private void fetchOrders() { + final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress)); + OrdineRepository repository = new OrdineRepository(); + repository.selectAllOpenOrders(mGriglia, (ordini) -> getActivity().runOnUiThread(() -> { + progress.dismiss(); + setOrdini(ordini); + }), (e) -> { + progress.dismiss(); + String errorMessage = e.getMessage(); + getActivity().runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show()); + }); + } + + private void setOrdini(List ordini) { + mBinding.ordiniAApertiMainList.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE); + mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE); + refreshRenderedOrdini(ordini); + mAdapter.updateItems(mRenderedOrderList); + } + + public Griglia getGriglia() { + return mGriglia; + } + + private void initRecyclerView() { + mBinding.ordiniAApertiMainList.setHasFixedSize(true); + + mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(getActivity())); + + 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); + mBinding.ordiniAApertiMainList.setAdapter(mAdapter); + } + + private RunnableArgs selectOrdine = ordine -> { + + Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class); + + String keyOrdine = DataCache.addItem(ordine); + myIntent.putExtra("keyOrdine", keyOrdine); + + getActivity().startActivity(myIntent); + + }; + + private void refreshRenderedOrdini(List ordini) { + mRenderedOrderList.clear(); + if (ordini != null) 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(this::fetchOrders); + + }, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress))); + } + + @Override + public void setScrollToolbar(ElevatedToolbar toolbar) { + + } + + @Override + public void setOnPreDestroy(Runnable onPreDestroy) { + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java index ec82aa7a..65bab43a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java @@ -24,7 +24,6 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding; import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdineAcquistoPvTransmittedListAdapter; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdiniAcquistoElencoHelper; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; @@ -32,15 +31,11 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; public class PVOrdiniAcquistoTransmittedListFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { private FragmentPvOrdiniATrasmessiElencoBinding mBinding; - private OrdiniAcquistoElencoHelper mHelper; - private ElevatedToolbar mToolbar; private OrdineAcquistoPvTransmittedListAdapter mAdapter; private List mOriginalOrderList; private List mRenderedOrderList = new ArrayList<>(); - private AppCompatTextView mAppBarTitle; - private DialogOrdineProduzioneFiltroAvanzato.DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel; public PVOrdiniAcquistoTransmittedListFragment() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java new file mode 100644 index 00000000..51b31cd3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java @@ -0,0 +1,135 @@ +package it.integry.integrywmsnative.gest.ordini_acquisto_pv.core; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.annimon.stream.Stream; +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; +import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia; +import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding; +import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding; +import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding; +import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding; +import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; + +public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { + + + private Context mContext; + + private List mDataset; + RunnableArgs mOnItemSelect; + + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + FragmentPvOrdiniAcquistoListHeaderBinding binding; + + SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + FragmentPvOrdiniAcquistoListSingleItemBinding binding; + + SingleItemViewHolder(FragmentPvOrdiniAcquistoListSingleItemBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + + + public OrdineAcquistoPvOpenListAdapter(Context context, List myDataset, RunnableArgs onItemSelect) { + mContext = context; + mDataset = orderItems(myDataset); + mOnItemSelect = onItemSelect; + } + + public void updateItems(List updatedDataset) { + mDataset.clear(); + mDataset.addAll(orderItems(updatedDataset)); + notifyDataSetChanged(); + notifyDataChanged(); + } + + + private List orderItems(List dataset) { + return Stream.of(dataset) + .distinctBy(OrdineWrapper::getOrdine) + .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .toList(); + + } + + + @Override + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false); + return new SubheaderHolder(binding); + } + + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + FragmentPvOrdiniAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_single_item, parent, false); + return new SingleItemViewHolder(binding); + } + + + @Override + public void onBindSubheaderViewHolder(OrdineAcquistoPvOpenListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { + subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti)); + } + + @Override + public void onBindItemViewHolder(OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder h, int itemPosition) { + final OrdineWrapper ordineWrapper = mDataset.get(itemPosition); + final Ordine ordine = ordineWrapper.getOrdine(); + final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h; + + + String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataOrd(), 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.orderIdentifier.setText(Html.fromHtml(testataOrdString)); + + holder.binding.getRoot().setOnClickListener(v -> { + mOnItemSelect.run(ordine); + }); + + } + + + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + return false; + } + + @Override + public int getItemSize() { + return mDataset.size(); + } + + @Override + public String getSectionTitle(int position) { + return null; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdiniAcquistoElencoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdiniAcquistoElencoHelper.java deleted file mode 100644 index 28ec5c47..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdiniAcquistoElencoHelper.java +++ /dev/null @@ -1,13 +0,0 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv.core; - -import android.content.Context; - -public class OrdiniAcquistoElencoHelper { - - private Context mContext; - - public OrdiniAcquistoElencoHelper(Context context) { - this.mContext = context; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java index 0f3e4f2e..fdfc435b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java @@ -1,11 +1,13 @@ package it.integry.integrywmsnative.gest.ordini_acquisto_pv.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.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; @@ -14,6 +16,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; +import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.BaseDialog; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -23,7 +26,7 @@ import it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper.OrdineAcquisto public class DialogScanLisA { - private Context mContext; + private Activity mContext; private Dialog mDialog; @@ -32,34 +35,28 @@ public class DialogScanLisA { private RunnableArgs mOnDialogDismiss; private OrdineAcquistoPvHelper mHelper; + private Griglia mGriglia; - private DialogScanLisA(Context context, RunnableArgs onDialogDismiss) { + private DialogScanLisA(Activity context, RunnableArgs onDialogDismiss) { mOnDialogDismiss = null; mContext = context; mHelper = new OrdineAcquistoPvHelper(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - + mGriglia = null; mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_codice_griglia, null, false); mDialog = new BaseDialog(context); mDialog.setContentView(mBinding.getRoot()); mDialog.setCanceledOnTouchOutside(false); -// mDialog.setCancelable(false); mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - init(onDialogDismiss); + mOnDialogDismiss = onDialogDismiss; initBarcode(); } - public static Dialog make(Context context, RunnableArgs onDialogDismiss) { + public static Dialog make(Activity context, RunnableArgs onDialogDismiss) { return new DialogScanLisA(context, onDialogDismiss).mDialog; } - - private void init(RunnableArgs onDialogDismiss) { - mOnDialogDismiss = onDialogDismiss; - } - private void initBarcode() { int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() @@ -69,34 +66,44 @@ public class DialogScanLisA { mDialog.setOnDismissListener(dialog -> { BarcodeManager.removeCallback(barcodeIstanceID); BarcodeManager.enable(); - mOnDialogDismiss.run(null); + mOnDialogDismiss.run(mGriglia); }); } private RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); + final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); + Context context = mContext; RunnableArgs mOnError = exception -> { - UtilityExceptions.defaultException(mContext,exception,progressDialog); - BarcodeManager.enable(); + mContext.runOnUiThread(()->{ + progressDialog.dismiss(); + UtilityExceptions.defaultException(context,exception); + BarcodeManager.enable(); + }); }; + + RunnableArgs onGrigliaAvaialable = griglia->{ + mContext.runOnUiThread(()->{ + progressDialog.dismiss(); + mGriglia = griglia; + mDialog.dismiss(); + }); + }; + GrigliaRepository repository = new GrigliaRepository(); + repository.findByCodAlis(data.getStringValue(),griglia->{ if (griglia != null){ + griglia.getGriglia().setCountArticoli(griglia.getCountArticoli()); if (griglia.getCountArticoli() >0){ - mOnDialogDismiss.run(griglia); + onGrigliaAvaialable.run(griglia.getGriglia()); }else{ - mHelper.updateGriglia(griglia,(grigliaEntity)->{ - progressDialog.dismiss(); - mOnDialogDismiss.run(grigliaEntity); - },mOnError); + mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvaialable,mOnError); } }else{ - mHelper.downloadAndSaveLisA(data.getStringValue(),(grigliaEntity)->{ - progressDialog.dismiss(); - mOnDialogDismiss.run(grigliaEntity); - },mOnError); + mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvaialable,mOnError); } },mOnError); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java index f436f304..67aa3c1d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java @@ -3,12 +3,15 @@ package it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper; import android.content.Context; import java.util.ArrayList; +import java.util.Date; import java.util.List; 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.GrigliaRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; @@ -18,11 +21,13 @@ public class OrdineAcquistoPvHelper { private Context mContext; private GrigliaRepository mGrigliaRepository; private ArticoliGrigliaRepository mArticoliGrigliaRepository; - + private OrdineRepository mOrdineRepository; public OrdineAcquistoPvHelper(Context mContext) { this.mContext = mContext; this.mGrigliaRepository = new GrigliaRepository(); this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository(); + this.mOrdineRepository = new OrdineRepository(); + } public void downloadAndSaveLisA(String codAlis, RunnableArgs onSave, RunnableArgs onFail) { @@ -40,6 +45,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); @@ -47,7 +53,7 @@ public class OrdineAcquistoPvHelper { }, onFail); } - public void saveLisAToGriglia(List articoli, Griglia griglia, RunnableArgs onSave, RunnableArgs onFail) { + private void saveLisAToGriglia(List articoli, Griglia griglia, RunnableArgs onSave, RunnableArgs onFail) { List articoliGriglia = new ArrayList<>(); for (ArticoloDTO articolo : articoli) { ArticoloGriglia toSave = articolo.toArticoloGriglia(); @@ -56,4 +62,14 @@ public class OrdineAcquistoPvHelper { } mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, () -> onSave.run(griglia), onFail); } + + public void createNewOrder(Griglia griglia, RunnableArgs onSuccess, RunnableArgs onError) { + Ordine ordine = new Ordine(); + ordine.setDataOrd(new Date()); + ordine.setIdGriglia(griglia.getGrigliaId()); + mOrdineRepository.insert(ordine,id->{ + ordine.setOrdineId(id); + onSuccess.run(ordine); + },onError); + } } 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 new file mode 100644 index 00000000..3573cf11 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -0,0 +1,134 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit; + +import android.app.Dialog; +import android.os.Bundle; +import android.view.View; +import android.widget.Toast; + +import androidx.databinding.DataBindingUtil; + +import java.util.List; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.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.expansion.BaseActivity; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; + +public class PVOrdineAcquistoEditActivity extends BaseActivity { + + private Ordine mOrdine; + private Griglia mGriglia; + private List mArticoli; + private PVEditOrderHelper mhelper; + private ActivityPvordineAcquistoEditBinding mBinding; + private int mBarcodeScannerIstanceID; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + mhelper = new PVEditOrderHelper(this); + mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit); + mBinding.setViewModel(this); + mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine")); + setTitle("aaaa"); + fetchDetails(); + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(this::onScanSuccessful) + .setOnScanFailed(this::handleException)); + + } + + private void handleException(Exception ex) { + runOnUiThread(()->{ + BarcodeManager.enable(); + UtilityExceptions.defaultException(this, ex, false); + }); + } + + private void onScanSuccessful(BarcodeScanDTO dto) { + BarcodeManager.disable(); + final Dialog progress = UtilityProgress.createDefaultProgressDialog(this); + mhelper.checkArticolo( + mOrdine, + dto.getStringValue(), + articoloOrdine -> { + progress.dismiss(); + addArticolo(articoloOrdine); + }, + e -> { + progress.dismiss(); + handleException(e); + } + ); + } + + 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 { + Toast.makeText(this, "Articolo inserito", Toast.LENGTH_SHORT).show(); + } + }).show(); + }); + } + + private void fetchDetails() { + fetchGriglia(); + fetchArticoli(); + } + + private void fetchGriglia() { + mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> { + runOnUiThread(()->{ + mGriglia = griglia; + mBinding.codAlis.setText(mGriglia.getCodAlis()); + }); + }, this::handleException); + } + + private void fetchArticoli() { + final Dialog progress = UtilityProgress.createDefaultProgressDialog(this); + mhelper.loadArticoli(mOrdine, articoli -> { + progress.dismiss(); + mArticoli = articoli; + runOnUiThread(()->{ + mBinding.countArtOrd.setText(String.valueOf(mArticoli.size())); + mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE); + }); + }, this::handleException); + } + + + public void addArticoloToOrdine(ArticoloOrdine articolo) { + + } + + public void closeEdit() { + onBackPressed(); + } + + public void exportOrdine() { + onBackPressed(); + } + + @Override + public void onBackPressed() { + BarcodeManager.removeCallback(mBarcodeScannerIstanceID); + super.onBackPressed(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java new file mode 100644 index 00000000..e851dd2b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java @@ -0,0 +1,127 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.expansion.BaseDialog; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; + +public class EditArticoloDialog { + + private Activity mContext; + + private Dialog mDialog; + + private DialogPvEditArticoloBinding mBinding; + + private PVEditOrderHelper mHelper; + + private ArticoloOrdine mArticolo; + + private ArticoloOrdine mSavedArt; + + private boolean mLockedInput = false; + + private EditArticoloDialog(Activity context, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) { + mContext = context; + mArticolo = articolo; + mHelper = new PVEditOrderHelper(context); + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false); + mBinding.setViewmodel(this); + mDialog = new BaseDialog(context); + mDialog.setContentView(mBinding.getRoot()); + mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + mSavedArt = null; + mDialog.setOnDismissListener(dialog -> { + onDialogDismiss.run(mSavedArt); + }); + setListeners(); + } + + private void setListeners() { + mBinding.qtaTot.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (mLockedInput){ + mLockedInput = false; + }else{ + mLockedInput = true; + float qtaTot = Float.parseFloat(s.toString()); + float qtaCnf = qtaTot * mArticolo.getQtaCnf(); + mBinding.qtaCnf.setText(String.valueOf(qtaCnf)); + } + } + + @Override + public void afterTextChanged(Editable s) { + } + }); + mBinding.qtaCnf.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (mLockedInput){ + mLockedInput = false; + }else{ + mLockedInput = true; + float qtaCnf = Float.parseFloat(s.toString()); + float qtaTot = qtaCnf / mArticolo.getQtaCnf(); + mBinding.qtaTot.setText(String.valueOf(qtaTot)); + } + + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } + + public static Dialog make(Activity context, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) { + return new EditArticoloDialog(context, articolo, onDialogDismiss).mDialog; + } + + public void saveAndExit(){ + final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); + mHelper.saveArticoloToOrdine(mArticolo, ()->{ + mSavedArt = mArticolo; + progress.dismiss(); + mDialog.dismiss(); + }); + } + + public ArticoloOrdine getArticolo() { + return mArticolo; + } + + public void cancel() { + mArticolo = null; + mDialog.dismiss(); + } + +} 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 new file mode 100644 index 00000000..607bf436 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java @@ -0,0 +1,82 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper; + +import android.content.Context; +import android.text.TextUtils; + +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +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.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.expansion.RunnableArgs; + +public class PVEditOrderHelper { + private Context mContext; + private GrigliaRepository mGrigliaRepository; + private ArticoliOrdineRepository mArticoliOrdineRepository; + private ArticoliGrigliaRepository mArticoliGrigliaRepository ; + + public PVEditOrderHelper(Context mContext) { + this.mContext = mContext; + mGrigliaRepository = new GrigliaRepository(); + mArticoliOrdineRepository = new ArticoliOrdineRepository(); + mArticoliGrigliaRepository = new ArticoliGrigliaRepository(); + } + + public void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail){ + try{ + mArticoliOrdineRepository.findArticoloByScanAndGriglia(ordine,barcode,(articolo)->{ + if (articolo != null) { + onSuccess.run(articolo); + }else{ + mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(),artGrid->{ + if (artGrid != null){ + onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); + }else{ + if (barcode.length() < 13){ + String newbarcode = StringUtils.leftPad(barcode,13,'0'); + mArticoliGrigliaRepository.findArticoloByScanAndGriglia(newbarcode, ordine.getIdGriglia(),aartGrid->{ + if (aartGrid != null){ + onSuccess.run(aartGrid.convertToArticoloOrdine(ordine)); + }else{ + onFail.run(new Exception("L' articolo ( "+barcode+" ) non è presente nella griglia")); + } + },onFail); + }else{ + onFail.run(new Exception("L' articolo ( "+barcode+" ) non è presente nella griglia")); + } + } + },onFail); + } + },onFail); + + }catch (Exception e){ + onFail.run(e); + } + } + + public void loadGriglia(int idGriglia, RunnableArgs onLoad, RunnableArgs onError) { + try{ + mGrigliaRepository.findGrigliaById(idGriglia,onLoad,onError); + }catch (Exception e){ + onError.run(e); + } + } + public void loadArticoli(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError){ + try{ + mArticoliOrdineRepository.findArticoliByOrdine(ordine,onLoad,onError); + }catch (Exception e){ + onError.run(e); + } + } + + + public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSsve) { + onSsve.run(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java index b5fcd238..629d7283 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java @@ -22,13 +22,19 @@ public class DialogProgress { private Dialog mDialog; + public static Dialog make(Context context,String subtitle) { + DialogProgress progress = new DialogProgress(context); + progress.setSubtitle(subtitle); + return progress.mDialog; + } + public static Dialog make(Context context) { return new DialogProgress(context).mDialog; } - public DialogProgress(Context context) { + private DialogProgress(Context context) { mContext = context; LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); @@ -52,8 +58,8 @@ public class DialogProgress { }); } - public void setSubtitle(String subtitle){ - mBinding.setSubtitle(subtitle); + private void setSubtitle(String subtitle){ + mBinding.subtitleText.setText(subtitle); } } diff --git a/app/src/main/res/drawable/ic_save_24.xml b/app/src/main/res/drawable/ic_save_24.xml new file mode 100644 index 00000000..a561d632 --- /dev/null +++ b/app/src/main/res/drawable/ic_save_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml new file mode 100644 index 00000000..9b490678 --- /dev/null +++ b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 new file mode 100644 index 00000000..1015ab10 --- /dev/null +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml b/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml index fd2b2a4b..4b3bad10 100644 --- a/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml +++ b/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml @@ -21,8 +21,7 @@ android:paddingTop="8dp" android:paddingBottom="8dp" android:orientation="horizontal" - android:background="@drawable/bg_checked_layout" - app:backgroundTintResID="@{ordine.isSelected() ? R.color.bg_checked_layout : android.R.color.transparent}" > + android:background="@drawable/bg_checked_layout"> + type="it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoGrigliaFragment" /> @@ -26,46 +26,11 @@ android:orientation="vertical" android:background="@color/full_white"> - - - - - - - - - - - - - - - + android:paddingTop="8dp"> - + + android:paddingEnd="2dp"/> - + + + + + + + + + + + + + + + + + + - - @@ -175,7 +199,7 @@ android:layout_width="0dp" android:layout_height="0dp" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.35"/> + app:layout_constraintGuide_percent="0.3"/> diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml new file mode 100644 index 00000000..726cef3e --- /dev/null +++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml new file mode 100644 index 00000000..74516a07 --- /dev/null +++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3cd7d677..4da56f40 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -116,6 +116,7 @@ Creazione UL Quantità + Confezioni Qtà Ord @@ -268,4 +269,12 @@ Altro Home Logout + Ordini aperti + Controllo ordini aperti + %s articoli]]> + Descrizione griglia: + Articoli in griglia: + Griglia: + Seleziona / Crea ordine + Agigungi \ 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 32723e73..817a557a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,6 +113,7 @@ LU Creation Quantity + Packages Qty Ord @@ -273,4 +274,12 @@ Transmitted Orders Select grid scan the barcode for the wanted grid + Open orders + Checking for open orders + %s items]]> + Grid description: + Items in grid: + Grid: + Select/Create order + Add diff --git a/build.gradle b/build.gradle index 9ceb8929..772ddfdf 100644 --- a/build.gradle +++ b/build.gradle @@ -16,8 +16,8 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.2.0' - classpath 'com.google.firebase:perf-plugin:1.2.1' + classpath 'com.google.gms:google-services:4.3.2' + classpath 'com.google.firebase:perf-plugin:1.3.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From ac7cd74d7e3888d6dd153678fc2cbcc65187b195 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 11 Nov 2019 09:30:26 +0100 Subject: [PATCH 2/2] [SAPORI_VERI] Ordini di Acquisto da Punto vendita --- .../core/data_store/db/AppDatabase.java | 2 +- .../data_store/db/dao/ArticoloOrdineDao.java | 27 ++-- .../core/data_store/db/dao/OrdineDao.java | 4 + .../data_store/db/entity/ArticoloGriglia.java | 4 + .../data_store/db/entity/ArticoloOrdine.java | 23 ++- .../core/data_store/db/entity/Ordine.java | 69 ++++++++- .../repository/ArticoliGrigliaRepository.java | 15 +- .../repository/ArticoliOrdineRepository.java | 30 +++- .../db/repository/OrdineRepository.java | 10 ++ .../PVOrdiniAcquistoRESTConsumer.java | 87 +++++++++++- .../PVOrdiniAcquistoRESTConsumerService.java | 8 +- .../rest/consumers/_BaseRESTConsumer.java | 56 ++++++-- .../PVOrdineAcquistoEditActivity.java | 63 ++++++-- .../adapter/OrdineAcquistoArtListAdapter.java | 125 ++++++++++++++++ .../dialog/EditArticoloDialog.java | 60 +++++--- .../pv_ordine_acquisto_edit/dto/ArtDTO.java | 134 ++++++++++++++++++ .../dto/OrdineDTO.java | 46 ++++++ .../pv_ordine_acquisto_edit/dto/SaveDTO.java | 24 ++++ .../helper/PVEditOrderHelper.java | 58 +++----- .../PVOrdiniAcquistoGrigliaFragment.java | 23 +-- ...OrdiniAcquistoTransmittedListFragment.java | 4 +- .../core/OrdineAcquistoPvOpenListAdapter.java | 9 +- ...rdineAcquistoPvTransmittedListAdapter.java | 6 +- .../dialogs/DialogScanLisA.java | 6 +- .../helper/OrdineAcquistoPvHelper.java | 4 +- .../activity_pvordine_acquisto_edit.xml | 8 +- .../res/layout/dialog_pv_edit_articolo.xml | 117 ++++++++------- ...coli_ordine_acquisto__list_single_item.xml | 92 ++++++++++++ .../fragment_pv_ordini_a_trasmessi_elenco.xml | 4 +- .../layout/fragment_pv_ordini_acquisto.xml | 24 +++- app/src/main/res/values-it/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + .../MenuConfigurationSAPORIVERIPV.java | 15 +- 33 files changed, 959 insertions(+), 204 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java rename app/src/main/java/it/integry/integrywmsnative/gest/{ordini_acquisto_pv => pv_ordini_acquisto}/PVOrdiniAcquistoGrigliaFragment.java (91%) rename app/src/main/java/it/integry/integrywmsnative/gest/{ordini_acquisto_pv => pv_ordini_acquisto}/PVOrdiniAcquistoTransmittedListFragment.java (97%) rename app/src/main/java/it/integry/integrywmsnative/gest/{ordini_acquisto_pv => pv_ordini_acquisto}/core/OrdineAcquistoPvOpenListAdapter.java (91%) rename app/src/main/java/it/integry/integrywmsnative/gest/{ordini_acquisto_pv => pv_ordini_acquisto}/core/OrdineAcquistoPvTransmittedListAdapter.java (96%) rename app/src/main/java/it/integry/integrywmsnative/gest/{ordini_acquisto_pv => pv_ordini_acquisto}/dialogs/DialogScanLisA.java (94%) rename app/src/main/java/it/integry/integrywmsnative/gest/{ordini_acquisto_pv => pv_ordini_acquisto}/helper/OrdineAcquistoPvHelper.java (97%) create mode 100644 app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index 78f788e7..39dd708d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -17,7 +17,7 @@ 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; -@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 2, exportSchema = false) +@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 1, exportSchema = false) @TypeConverters({ DateConverter.class }) 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 93052e4e..fee0cfb1 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 @@ -26,18 +26,6 @@ public interface ArticoloOrdineDao { @Query("SELECT * FROM articoli_ordine where bar_code = :barcode and id_ordine = :ordine LIMIT 1") ArticoloOrdine findArticoloByOrdineAndBarcode(int ordine, String barcode); - @Query( " SELECT articoli_ordine.* " + - " FROM articoli_ordine " + - " LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " + - " WHERE " + - " (" + - " articoli_ordine.cod_mart = :scan" + - " OR articoli_ordine.bar_code = :scan" + - " OR articoli_griglia.bar_code = :scan" + - " )" + - " AND articoli_ordine.id_ordine = :ordine " + - " LIMIT 1") - ArticoloOrdine findArticoloByScanAndGriglia(int ordine, String scan); @Update void updateAll(List toUpdate); @@ -47,4 +35,19 @@ public interface ArticoloOrdineDao { @Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId") List findArticoliByOrdine(int ordineId); + + @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.* " + + " FROM articoli_ordine " + + " LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " + + " WHERE " + + " (" + + " articoli_ordine.bar_code = :barcode" + + " OR articoli_griglia.bar_code = :barcode" + + " )" + + " AND articoli_ordine.id_ordine = :ordineId " + + " LIMIT 1") + ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode); } 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 328e28de..f4484d6f 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 @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.data_store.db.dao; import androidx.room.Dao; import androidx.room.Insert; import androidx.room.Query; +import androidx.room.Update; import java.util.List; @@ -23,4 +24,7 @@ public interface OrdineDao { @Insert Long insert(Ordine ordine); + + @Update + void update(Ordine ordine); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java index ce7d88ba..5d1d42df 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java @@ -6,6 +6,8 @@ import androidx.room.ForeignKey; import androidx.room.Index; import androidx.room.PrimaryKey; +import java.util.Date; + @Entity( tableName = "articoli_griglia", indices = { @@ -157,6 +159,8 @@ public class ArticoloGriglia { articolo.setQtaCnf(this.getQtaCnf()); articolo.setUntMis(this.getUntMis()); articolo.setDescrizione(this.getDescrizione()); + articolo.setDataIns(new Date()); + articolo.setQtaOrd(0); return articolo; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java index 13755e84..6b0c8f16 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java @@ -6,6 +6,8 @@ import androidx.room.ForeignKey; import androidx.room.Index; import androidx.room.PrimaryKey; +import java.util.Date; + @Entity( tableName = "articoli_ordine", indices = { @@ -57,7 +59,10 @@ public class ArticoloOrdine { private int idOrdine; @ColumnInfo(name = "qta_ord") - private float qtaOtd; + private float qtaOrd; + + @ColumnInfo(name = "data_ins") + private Date dataIns; public int getArticoloOrdineId() { return articoloOrdineId; @@ -147,11 +152,19 @@ public class ArticoloOrdine { this.idOrdine = idOrdine; } - public float getQtaOtd() { - return qtaOtd; + public float getQtaOrd() { + return qtaOrd; } - public void setQtaOtd(float qtaOtd) { - this.qtaOtd = qtaOtd; + public void setQtaOrd(float qtaOrd) { + this.qtaOrd = qtaOrd; + } + + public Date getDataIns() { + return dataIns; + } + + public void setDataIns(Date dataIns) { + this.dataIns = dataIns; } } 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 31313e85..ae68bda0 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 @@ -8,6 +8,8 @@ import androidx.room.PrimaryKey; import java.util.Date; +import it.integry.integrywmsnative.core.utility.UtilityDate; + @Entity(tableName = "ordini") public class Ordine { @@ -16,8 +18,8 @@ public class Ordine { @ColumnInfo(name = "ordine_id") private int ordineId; - @ColumnInfo(name = "data_ord") - private Date dataOrd; + @ColumnInfo(name = "data_ins") + private Date dataIns; @ColumnInfo(name = "annotazioni") private String annotazioni; @@ -29,6 +31,22 @@ public class Ordine { @Nullable private Date transmissionDate; + @ColumnInfo(name = "gestione") + @Nullable + private String gestione; + + @ColumnInfo(name = "data_ord") + @Nullable + private Date dataOrd; + + @ColumnInfo(name = "num_ord") + @Nullable + private Integer numOrd; + + @ColumnInfo(name = "cod_mdep") + @Nullable + private String codMdep; + @Ignore private int countArticoli = 0; @@ -43,12 +61,12 @@ public class Ordine { this.ordineId = ordineId; } - public Date getDataOrd() { - return dataOrd; + public Date getDataIns() { + return dataIns; } - public void setDataOrd(Date dataOrd) { - this.dataOrd = dataOrd; + public void setDataIns(Date dataIns) { + this.dataIns = dataIns; } public String getAnnotazioni() { @@ -91,4 +109,43 @@ public class Ordine { public void setCountArticoli(int countArticoli) { this.countArticoli = countArticoli; } + + @Nullable + public String getGestione() { + return gestione; + } + + public void setGestione(@Nullable String gestione) { + this.gestione = gestione; + } + + @Nullable + public Date getDataOrd() { + return dataOrd; + } + + public void setDataOrd(@Nullable Date dataOrd) { + this.dataOrd = dataOrd; + } + + @Nullable + public Integer getNumOrd() { + return numOrd; + } + + public void setNumOrd(@Nullable Integer numOrd) { + this.numOrd = numOrd; + } + + @Nullable + public String getCodMdep() { + return codMdep; + } + + public void setCodMdep(@Nullable String 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 c263551c..7929014a 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,14 +1,13 @@ package it.integry.integrywmsnative.core.data_store.db.repository; +import org.apache.commons.lang3.StringUtils; + import java.util.ArrayList; 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.dao.GrigliaDao; 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.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; public class ArticoliGrigliaRepository extends Repository{ @@ -63,7 +62,15 @@ public class ArticoliGrigliaRepository extends Repository{ public void findArticoloByScanAndGriglia(String scan, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){ execute(()->{ try{ - onSuccess.run(mRepository.findArticoloByScanAndGriglia(scan, idGriglia)); + ArticoloGriglia articolo = mRepository.findArticoloByCodMartAndGriglia(scan, idGriglia); + if (articolo == null){ + articolo = mRepository.findArticoloByBarcodeAndGriglia(scan,idGriglia); + if (articolo==null){ + String barcode= StringUtils.leftPad(scan,13,"0"); + articolo = mRepository.findArticoloByBarcodeAndGriglia(barcode,idGriglia); + } + } + onSuccess.run(articolo); }catch (Exception e){ onFail.run(e); } 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 45bc4740..57689e86 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 @@ -1,12 +1,12 @@ package it.integry.integrywmsnative.core.data_store.db.repository; +import org.apache.commons.lang3.StringUtils; + import java.util.ArrayList; 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.dao.ArticoloOrdineDao; -import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -41,6 +41,20 @@ public class ArticoliOrdineRepository extends Repository { } }); } + public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + if (articolo.getArticoloOrdineId() > 0) { + mRepository.update(articolo); + } else { + mRepository.insert(articolo); + } + onSuccess.run(); + } catch (Exception e) { + onFail.run(e); + } + }); + } public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { execute(() -> { @@ -52,10 +66,18 @@ public class ArticoliOrdineRepository extends Repository { } }); } -public void findArticoloByScanAndGriglia(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { +public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { execute(() -> { try { - ArticoloOrdine articolo = mRepository.findArticoloByScanAndGriglia(ordine.getOrdineId(), barcode); + String scannedCode = barcode; + ArticoloOrdine articolo = mRepository.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode); + if (articolo == null){ + articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode); + if (articolo == null){ + scannedCode= StringUtils.leftPad(scannedCode,13,'0'); + articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode); + } + } onSuccess.run(articolo); } catch (Exception e) { onFail.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 3e36a6ae..6b220cd3 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 @@ -62,4 +62,14 @@ public class OrdineRepository extends Repository{ } + public void updateOrder(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) { + execute(()->{ + try{ + mRepository.update(ordine); + onSuccess.run(ordine); + }catch (Exception e){ + onError.run(e); + } + }); + } } 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 5541eba9..5e438ca2 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 @@ -4,17 +4,27 @@ import android.util.Log; import com.annimon.stream.Stream; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; +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; import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.OrdineDTO; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -40,13 +50,13 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { .withoutNulls() .forEach(art -> { List inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList(); - if (inList.size() > 1){ - for (ArticoloDTO articolo : inList){ - if (!articolo.getBarCode().endsWith(articolo.getCodMart())){ + if (inList.size() > 1) { + for (ArticoloDTO articolo : inList) { + if (!articolo.getBarCode().endsWith(articolo.getCodMart())) { listaArticoli.add(articolo); } } - }else{ + } else { listaArticoli.add(inList.get(0)); } }); @@ -64,4 +74,73 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { }); } + public static void saveOrdine(Ordine ordine, List articoli, Griglia griglia, RunnableArgs onSuccess, RunnableArgs onFailed) { + SaveDTO saveDTO = new SaveDTO(); + OrdineDTO ordineDTO = new OrdineDTO(); + List artRows = new ArrayList<>(); + + int i = 0; + for (ArticoloOrdine art : articoli) { + i++; + artRows.add(convertArtToDTO(art,i)); + } + + ordineDTO.setChiaveGriglia(griglia.getCodAlis()); + ordineDTO.setDataConsD(new Date()); + ordineDTO.setArtRows(artRows); + saveDTO.setGestione("O"); + saveDTO.setOrdineDTO(ordineDTO); + + + PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); + ordiniARestService + .saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password) + .enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + if (response.body() != null && response.body().size() > 0){ + analyzeListOfAnswers(response, "getArticoliListino", dtoList-> { + if (dtoList.size() > 0){ + DtbOrdt dto = dtoList.get(0); + ordine.setTransmitted(true); + ordine.setTransmissionDate(new Date()); + ordine.setGestione(dto.getGestione()); + ordine.setDataOrdS(dto.getDataOrd()); + ordine.setCodMdep(dto.getCodMdep()); + ordine.setNumOrd(dto.getNumOrd()); + OrdineRepository repository = new OrdineRepository(); + repository.updateOrder(ordine,onSuccess,onFailed); + }else{ + onFailed.run(new Exception("Nessun ordine generato")); + } + }, onFailed); + } + } + + @Override + public void onFailure(Call>>call, Throwable t) { + Log.e("saveOrdineTerminale_pv", t.toString()); + UtilityLogger.errorMe(new Exception(t)); + onFailed.run(new Exception(t)); + } + }); + + + + } + + private static ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) { + ArtDTO dto = new ArtDTO(); + dto.setRigaOrd(rigaOrd); + dto.setCodMart(art.getCodMart()); + dto.setBarcode(art.getBarCode()); + dto.setDescrizione(art.getDescrizione()); + dto.setDataInsD(art.getDataIns()); + dto.setUntMis(art.getUntMis()); + dto.setQta(BigDecimal.valueOf(art.getQtaOrd())); + dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf())); + dto.setColli(BigDecimal.ZERO); + return dto; + } + } 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 ec53b2e2..30ff9292 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 @@ -1,9 +1,13 @@ package it.integry.integrywmsnative.core.rest.consumers; -import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; +import java.util.List; + import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO; +import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO; import retrofit2.Call; +import retrofit2.http.Body; import retrofit2.http.Header; import retrofit2.http.POST; import retrofit2.http.Query; @@ -14,5 +18,5 @@ public interface PVOrdiniAcquistoRESTConsumerService { Call> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); @POST("SM2SaveTerminalino") - Call> saveOrdine(@Query("barcode") String barcodeProd,@Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); + Call>> saveOrdine(@Body SaveDTO saveDTO, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java index ba413697..9257eefb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers; import android.util.Log; +import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.rest.CommonRESTException; @@ -14,11 +15,11 @@ import retrofit2.Response; public class _BaseRESTConsumer { - public static void analyzeAnswer(Response> response, String logTitle, final ISimpleOperationCallback callback){ - if(response.isSuccessful()) { - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){ + public static void analyzeAnswer(Response> response, String logTitle, final ISimpleOperationCallback callback) { + if (response.isSuccessful()) { + if (response.body() != null) { + if (response.body().getEsito() == EsitoType.OK) { + if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { callback.onFailed(new Exception(response.body().getErrorMessage())); } else { @@ -43,7 +44,7 @@ public class _BaseRESTConsumer { } } - public static void analyzeAnswer(Response> response, String logTitle, RunnableArgs onComplete, RunnableArgs onFailed){ + public static void analyzeAnswer(Response> response, String logTitle, RunnableArgs onComplete, RunnableArgs onFailed) { analyzeAnswer(response, logTitle, new ISimpleOperationCallback() { @Override public void onSuccess(T value) { @@ -58,11 +59,11 @@ public class _BaseRESTConsumer { } - public static void analyzeAnswerList(Response> response, String logTitle, final ISimpleOperationCallback> callback){ - if(response.isSuccessful()) { - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){ + public static void analyzeAnswerList(Response> response, String logTitle, final ISimpleOperationCallback> callback) { + if (response.isSuccessful()) { + if (response.body() != null) { + if (response.body().getEsito() == EsitoType.OK) { + if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { callback.onFailed(new Exception(response.body().getErrorMessage())); } else { @@ -84,7 +85,7 @@ public class _BaseRESTConsumer { } } - public static void analyzeAnswerList(Response> response, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed){ + public static void analyzeAnswerList(Response> response, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed) { analyzeAnswerList(response, logTitle, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { @@ -98,4 +99,35 @@ public class _BaseRESTConsumer { }); } + public static void analyzeListOfAnswers(Response>> responseList, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed) { + if (responseList.isSuccessful()) { + if (responseList.body() != null) { + List analyzedList = new ArrayList<>(); + for (ServiceRESTResponse response : responseList.body()){ + if (response.getEsito() == EsitoType.OK) { + if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) { + onFailed.run(new Exception(response.getErrorMessage())); + } else { + T dataObj = response.getDto() != null ? + response.getDto() : + response.getEntity(); + if (dataObj !=null ) analyzedList.add(dataObj); + + } + } else { + Log.e(logTitle, response.getErrorMessage()); + onFailed.run(CommonRESTException.tryRecognizeException(response.getErrorMessage())); + return; + } + } + onComplete.run(analyzedList); + } else { + Log.e(logTitle, responseList.message()); + onFailed.run(new Exception(responseList.message())); + } + } else { + Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message()); + onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message())); + } + } } 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 3573cf11..43077dc7 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 @@ -2,11 +2,17 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit; import android.app.Dialog; import android.os.Bundle; +import android.text.Html; +import android.text.SpannableString; import android.view.View; import android.widget.Toast; +import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import java.util.ArrayList; import java.util.List; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; @@ -18,20 +24,25 @@ 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.expansion.BaseActivity; +import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +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.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter; 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.view.dialogs.base.DialogSimpleMessageHelper; public class PVOrdineAcquistoEditActivity extends BaseActivity { private Ordine mOrdine; private Griglia mGriglia; - private List mArticoli; + private List mArticoli = new ArrayList<>(); private PVEditOrderHelper mhelper; private ActivityPvordineAcquistoEditBinding mBinding; private int mBarcodeScannerIstanceID; + private OrdineAcquistoArtListAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,7 +52,13 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit); mBinding.setViewModel(this); mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine")); - setTitle("aaaa"); + 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)); + initRecyclerView(); fetchDetails(); mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(this::onScanSuccessful) @@ -49,6 +66,18 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { } + private void initRecyclerView() { + mBinding.articoliOrdineList.setHasFixedSize(true); + + mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this)); + + 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); + mBinding.articoliOrdineList.setAdapter(mAdapter); + } + private void handleException(Exception ex) { runOnUiThread(()->{ BarcodeManager.enable(); @@ -80,7 +109,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { if (articolo == null) { Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show(); } else { - Toast.makeText(this, "Articolo inserito", Toast.LENGTH_SHORT).show(); + fetchArticoli(); } }).show(); }); @@ -106,23 +135,29 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { progress.dismiss(); mArticoli = articoli; runOnUiThread(()->{ + mAdapter.updateItems(mArticoli); mBinding.countArtOrd.setText(String.valueOf(mArticoli.size())); mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE); }); }, this::handleException); } - - public void addArticoloToOrdine(ArticoloOrdine articolo) { - - } - public void closeEdit() { onBackPressed(); } public void exportOrdine() { - onBackPressed(); + final Dialog progress = UtilityProgress.createDefaultProgressDialog(this); + PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{ + progress.dismiss(); + runOnUiThread(()-> { + Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show(); + onBackPressed(); + }); + },e-> runOnUiThread(()-> { + progress.dismiss(); + UtilityExceptions.defaultException(this,e); + })); } @Override @@ -131,4 +166,14 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { super.onBackPressed(); } + private void showDataSavedDialog() { + + DialogSimpleMessageHelper.makeSuccessDialog( + this, + getString(R.string.completed), + new SpannableString(getString(R.string.data_saved)), + null, null).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 new file mode 100644 index 00000000..ed070376 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java @@ -0,0 +1,125 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import com.annimon.stream.Stream; +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; +import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; +import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding; +import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding; +import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; + +public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { + + + private Context mContext; + + private List mDataset; + RunnableArgs mOnItemSelect; + + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + FragmentPvOrdiniAcquistoListHeaderBinding binding; + + SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding; + + SingleItemViewHolder(FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + + + public OrdineAcquistoArtListAdapter(Context context, List myDataset, RunnableArgs onItemSelect) { + mContext = context; + mDataset = orderItems(myDataset); + mOnItemSelect = onItemSelect; + } + + public void updateItems(List updatedDataset) { + mDataset.clear(); + mDataset.addAll(orderItems(updatedDataset)); + notifyDataSetChanged(); + notifyDataChanged(); + } + + + private List orderItems(List dataset) { + return Stream.of(dataset) + .distinctBy(ArticoloOrdine::getArticoloOrdineId) + .sortBy(x -> UtilityDate.formatDate(x.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .toList(); + + } + + + @Override + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false); + return new SubheaderHolder(binding); + } + + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_articoli_ordine_acquisto__list_single_item, parent, false); + return new SingleItemViewHolder(binding); + } + + + @Override + public void onBindSubheaderViewHolder(OrdineAcquistoArtListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { + subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti)); + } + + @Override + public void onBindItemViewHolder(OrdineAcquistoArtListAdapter.SingleItemViewHolder h, int itemPosition) { + final ArticoloOrdine articoloOrdine = mDataset.get(itemPosition); + final OrdineAcquistoArtListAdapter.SingleItemViewHolder holder = h; + + holder.binding.setArticolo(articoloOrdine); + holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(articoloOrdine)); + + } + + + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + return false; + } + + @Override + public int getItemSize() { + return mDataset.size(); + } + + @Override + public String getSectionTitle(int position) { + return null; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java index e851dd2b..a44fe39b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java @@ -12,10 +12,11 @@ import android.view.LayoutInflater; import androidx.databinding.DataBindingUtil; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.expansion.BaseDialog; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; @@ -40,13 +41,19 @@ public class EditArticoloDialog { mContext = context; mArticolo = articolo; mHelper = new PVEditOrderHelper(context); + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, 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.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd())); mSavedArt = null; + mDialog.setOnDismissListener(dialog -> { onDialogDismiss.run(mSavedArt); }); @@ -62,14 +69,7 @@ public class EditArticoloDialog { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - if (mLockedInput){ - mLockedInput = false; - }else{ - mLockedInput = true; - float qtaTot = Float.parseFloat(s.toString()); - float qtaCnf = qtaTot * mArticolo.getQtaCnf(); - mBinding.qtaCnf.setText(String.valueOf(qtaCnf)); - } + setQtaOrd(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0); } @Override @@ -84,15 +84,7 @@ public class EditArticoloDialog { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - if (mLockedInput){ - mLockedInput = false; - }else{ - mLockedInput = true; - float qtaCnf = Float.parseFloat(s.toString()); - float qtaTot = qtaCnf / mArticolo.getQtaCnf(); - mBinding.qtaTot.setText(String.valueOf(qtaTot)); - } - + setQtaCnf(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0); } @Override @@ -101,6 +93,26 @@ public class EditArticoloDialog { } }); } + public void setQtaCnf(float qtaCnf){ + if (mLockedInput){ + mLockedInput = false; + }else{ + mLockedInput = true; + + float qtaTot = qtaCnf * mArticolo.getQtaCnf(); + mBinding.qtaTot.setText(String.valueOf(qtaTot)); + } + } + public void setQtaOrd(float qtaOrd){ + mArticolo.setQtaOrd(qtaOrd); + if (mLockedInput){ + mLockedInput = false; + }else{ + mLockedInput = true; + float qtaCnf = qtaOrd / mArticolo.getQtaCnf(); + mBinding.qtaCnf.setText(String.valueOf(qtaCnf)); + } + } public static Dialog make(Activity context, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) { return new EditArticoloDialog(context, articolo, onDialogDismiss).mDialog; @@ -108,11 +120,21 @@ public class EditArticoloDialog { public void saveAndExit(){ final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); + try{ + float qtaOrd = Float.parseFloat(mBinding.qtaTot.getText().toString()); + if (qtaOrd <= 0){ + throw new Exception("La quantità ordinata deve essere maggiore di 0"); + } + mArticolo.setQtaOrd(qtaOrd); + + }catch (Exception e){ + mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e)); + } mHelper.saveArticoloToOrdine(mArticolo, ()->{ mSavedArt = mArticolo; progress.dismiss(); mDialog.dismiss(); - }); + },e-> mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e))); } public ArticoloOrdine getArticolo() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java new file mode 100644 index 00000000..1a8d5d9e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java @@ -0,0 +1,134 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto; + +import java.math.BigDecimal; +import java.util.Date; + +import it.integry.integrywmsnative.core.utility.UtilityDate; + +public class ArtDTO { + private Integer rigaOrd; + + private String codMart; + + private String barcode; + + private String descrizione; + + private String dataIns; + + private String untMis; + + private BigDecimal qta; + + private BigDecimal qtaCnf; + + private BigDecimal colli; + + private String partitaMag; + + private String dataScad; + + public Integer getRigaOrd() { + return rigaOrd; + } + + public void setRigaOrd(Integer rigaOrd) { + this.rigaOrd = rigaOrd; + } + + public String getCodMart() { + return codMart; + } + + public void setCodMart(String codMart) { + this.codMart = codMart; + } + + public String getBarcode() { + return barcode; + } + + public void setBarcode(String barcode) { + this.barcode = barcode; + } + + public String getDescrizione() { + return descrizione; + } + + public void setDescrizione(String descrizione) { + this.descrizione = descrizione; + } + + public String getDataIns() { + return dataIns; + } + public Date getDataInsD() { + return UtilityDate.recognizeDateWithExceptionHandler(getDataIns()); + } + + public void setDataIns(String dataIns) { + this.dataIns = dataIns; + } + public void setDataInsD(Date dataIns) { + setDataIns(UtilityDate.formatDate(dataIns, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); + } + + + public String getUntMis() { + return untMis; + } + + public void setUntMis(String untMis) { + this.untMis = untMis; + } + + public BigDecimal getQta() { + return qta; + } + + public void setQta(BigDecimal qta) { + this.qta = qta; + } + + public BigDecimal getQtaCnf() { + return qtaCnf; + } + + public void setQtaCnf(BigDecimal qtaCnf) { + this.qtaCnf = qtaCnf; + } + + public BigDecimal getColli() { + return colli; + } + + public void setColli(BigDecimal colli) { + this.colli = colli; + } + + public String getPartitaMag() { + return partitaMag; + } + + public void setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + } + + public String getDataScad() { + return dataScad; + } + + public void setDataScad(String dataScad) { + this.dataScad = dataScad; + } + public Date getDataScadD() { + return UtilityDate.recognizeDateWithExceptionHandler(getDataScad()); + } + + public void setDataScadD(Date dataScad) { + setDataScad(UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java new file mode 100644 index 00000000..1fe38bb4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java @@ -0,0 +1,46 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto; + +import java.util.Date; +import java.util.List; + +import it.integry.integrywmsnative.core.utility.UtilityDate; + +public class OrdineDTO { + private String chiaveGriglia; + private String dataCons; + + private List artRows; + + public String getChiaveGriglia() { + return chiaveGriglia; + } + + public void setChiaveGriglia(String chiaveGriglia) { + this.chiaveGriglia = chiaveGriglia; + } + + public String getDataCons() { + return dataCons; + } + + public void setDataCons(String dataCons) { + this.dataCons = dataCons; + } + + public List getArtRows() { + return artRows; + } + + public void setArtRows(List artRows) { + this.artRows = artRows; + } + public Date getDataConsD() { + return UtilityDate.recognizeDateWithExceptionHandler(getDataCons()); + } + + public void setDataConsD(Date dataCons) { + setDataCons(UtilityDate.formatDate(dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java new file mode 100644 index 00000000..442ed0a5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto; + +public class SaveDTO { + private String gestione = "O"; + + + private OrdineDTO ordineDTO; + + public String getGestione() { + return gestione; + } + + public void setGestione(String gestione) { + this.gestione = gestione; + } + + public OrdineDTO getOrdineDTO() { + return ordineDTO; + } + + public void setOrdineDTO(OrdineDTO ordineDTO) { + this.ordineDTO = ordineDTO; + } +} 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 607bf436..13fb0d5c 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 @@ -1,9 +1,6 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper; import android.content.Context; -import android.text.TextUtils; - -import org.apache.commons.lang3.StringUtils; import java.util.List; @@ -14,12 +11,13 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGriglia 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.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; public class PVEditOrderHelper { private Context mContext; private GrigliaRepository mGrigliaRepository; private ArticoliOrdineRepository mArticoliOrdineRepository; - private ArticoliGrigliaRepository mArticoliGrigliaRepository ; + private ArticoliGrigliaRepository mArticoliGrigliaRepository; public PVEditOrderHelper(Context mContext) { this.mContext = mContext; @@ -28,55 +26,45 @@ public class PVEditOrderHelper { mArticoliGrigliaRepository = new ArticoliGrigliaRepository(); } - public void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail){ - try{ - mArticoliOrdineRepository.findArticoloByScanAndGriglia(ordine,barcode,(articolo)->{ + public void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { + try { + mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> { if (articolo != null) { onSuccess.run(articolo); - }else{ - mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(),artGrid->{ - if (artGrid != null){ + } else { + mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> { + if (artGrid != null) { onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); - }else{ - if (barcode.length() < 13){ - String newbarcode = StringUtils.leftPad(barcode,13,'0'); - mArticoliGrigliaRepository.findArticoloByScanAndGriglia(newbarcode, ordine.getIdGriglia(),aartGrid->{ - if (aartGrid != null){ - onSuccess.run(aartGrid.convertToArticoloOrdine(ordine)); - }else{ - onFail.run(new Exception("L' articolo ( "+barcode+" ) non è presente nella griglia")); - } - },onFail); - }else{ - onFail.run(new Exception("L' articolo ( "+barcode+" ) non è presente nella griglia")); - } + } else { + onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); } - },onFail); + }, onFail); } - },onFail); + }, onFail); - }catch (Exception e){ + } catch (Exception e) { onFail.run(e); } } public void loadGriglia(int idGriglia, RunnableArgs onLoad, RunnableArgs onError) { - try{ - mGrigliaRepository.findGrigliaById(idGriglia,onLoad,onError); - }catch (Exception e){ + try { + mGrigliaRepository.findGrigliaById(idGriglia, onLoad, onError); + } catch (Exception e) { onError.run(e); } } - public void loadArticoli(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError){ - try{ - mArticoliOrdineRepository.findArticoliByOrdine(ordine,onLoad,onError); - }catch (Exception e){ + + public void loadArticoli(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) { + try { + mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, onError); + } catch (Exception e) { onError.run(e); } } - public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSsve) { - onSsve.run(); + public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onFail) { + mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java similarity index 91% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index d461dc7e..12793b9f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto; import android.app.Dialog; import android.content.Context; @@ -30,17 +30,13 @@ 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.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdineAcquistoPvOpenListAdapter; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.dialogs.DialogScanLisA; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper.OrdineAcquistoPvHelper; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvOpenListAdapter; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; @@ -99,6 +95,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled mBinding.fabNewOrder.setVisibility(View.VISIBLE); mBinding.codAlis.setText(griglia.getCodAlis()); mBinding.descrLis.setText(griglia.getDescrLisa()); + mBinding.descrDepo.setText(griglia.getDescrDepo()); mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli())); fetchOrders(); @@ -160,7 +157,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress)); mHelper.createNewOrder(mGriglia, order -> { progress.dismiss(); - getActivity().runOnUiThread(this::fetchOrders); + getActivity().runOnUiThread(()-> selectOrdine.run(order)); }, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress))); } @@ -174,4 +171,12 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled public void setOnPreDestroy(Runnable onPreDestroy) { } + + @Override + public void onResume() { + super.onResume(); + if (mGriglia != null){ + fetchOrders(); + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java similarity index 97% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java index 65bab43a..93a9d429 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/PVOrdiniAcquistoTransmittedListFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto; import android.app.Dialog; import android.content.Context; @@ -23,7 +23,7 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdineAcquistoPvTransmittedListAdapter; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvTransmittedListAdapter; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java similarity index 91% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java index 51b31cd3..bdec5020 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvOpenListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv.core; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core; import android.content.Context; import android.text.Html; @@ -15,12 +15,9 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; -import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding; -import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding; import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; @@ -73,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().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) .toList(); } @@ -104,7 +101,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h; - String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + 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()))); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvTransmittedListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java similarity index 96% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvTransmittedListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java index d519cf6f..d7f4449e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/core/OrdineAcquistoPvTransmittedListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv.core; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core; import android.content.Context; import android.text.Html; @@ -68,7 +68,7 @@ public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerVie private List orderItems(List dataset) { return Stream.of(dataset) .distinctBy(OrdineWithGriglia::getGriglia) - .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) .toList(); } @@ -100,7 +100,7 @@ public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerVie final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h; - String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO"); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java similarity index 94% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index fdfc435b..6cd28d4b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv.dialogs; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs; import android.app.Activity; import android.app.Dialog; @@ -7,7 +7,6 @@ import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; -import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; @@ -16,13 +15,12 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; -import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.BaseDialog; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper.OrdineAcquistoPvHelper; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; public class DialogScanLisA { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java similarity index 97% rename from app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java index 67aa3c1d..9df45f2d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_acquisto_pv/helper/OrdineAcquistoPvHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper; +package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper; import android.content.Context; @@ -65,7 +65,7 @@ public class OrdineAcquistoPvHelper { public void createNewOrder(Griglia griglia, RunnableArgs onSuccess, RunnableArgs onError) { Ordine ordine = new Ordine(); - ordine.setDataOrd(new Date()); + ordine.setDataIns(new Date()); ordine.setIdGriglia(griglia.getGrigliaId()); mOrdineRepository.insert(ordine,id->{ ordine.setOrdineId(id); diff --git a/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml index 9b490678..d8bf2236 100644 --- a/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml +++ b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml @@ -30,7 +30,7 @@ android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="8dp" - android:focusableInTouchMode="true" + android:background="@color/full_white" tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity"> @@ -181,7 +181,7 @@ app:fab_colorPressed="@color/white_pressed" app:fab_colorRipple="#66FFFFFF" app:onClick="@{() -> viewModel.exportOrdine()}" - fab:fab_label="@string/action_recover_ul" + fab:fab_label="@string/close_and_export" /> 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 1015ab10..f2470965 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -2,9 +2,11 @@ + + @@ -12,40 +14,34 @@ + - - - - + tools:text="codMart" /> + tools:text="DESCR ART" /> + app:layout_constraintRight_toRightOf="parent" + tools:text="(UM)" /> + + + android:layout_marginTop="16dp" + android:orientation="vertical"> + android:layout_weight="1" + app:layout_constraintEnd_toStartOf="@id/guide_right" + app:layout_constraintStart_toStartOf="@id/guide_left" + app:layout_constraintTop_toTopOf="parent"> + android:selectAllOnFocus="true" /> + android:layout_weight="1" + app:layout_constraintEnd_toStartOf="@id/guide_right" + app:layout_constraintStart_toStartOf="@id/guide_left" + app:layout_constraintTop_toTopOf="parent"> + android:selectAllOnFocus="true" /> - - + android:layout_marginTop="8dp"> + + + android:text="@string/no"/> - + android:text="@string/yes"/> + + + + + + diff --git a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml new file mode 100644 index 00000000..ec3fc9c1 --- /dev/null +++ b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml b/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml index 5c9bf84b..33800c29 100644 --- a/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml +++ b/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml @@ -4,7 +4,7 @@ - + + tools:context="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoTransmittedListFragment"> + type="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment" /> @@ -86,6 +86,28 @@ android:textSize="14sp" android:textStyle="italic" /> + + + + + + Controllo ordini aperti %s articoli]]> Descrizione griglia: + Descrizione deposito: Articoli in griglia: Griglia: Seleziona / Crea ordine Agigungi + Chiudi ed esporta ordine + Chiudi ordine \ 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 817a557a..6f482fc1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -278,8 +278,11 @@ Checking for open orders %s items]]> Grid description: + Storage description: Items in grid: Grid: Select/Create order Add + Close and export + Close order diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java index 948f4a6e..adc468ed 100644 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java +++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java @@ -1,8 +1,7 @@ package it.integry.wms.dynamic_customization.extensions; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoGrigliaFragment; -import it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoTransmittedListFragment; +import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration { @@ -20,12 +19,12 @@ public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration { .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) .setFragmentClass(PVOrdiniAcquistoGrigliaFragment.newInstance())) - .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) - .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) - .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance())) +// .addItem(new MenuItem() +// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) +// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders) +// .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) +// .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) +// .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance())) );