From 66f117186ca10927fb545f750fa7cd722aedb5e1 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 28 Jan 2022 10:23:46 +0100 Subject: [PATCH 01/32] Piccoli fix su doc interni --- .../dialog/DialogSelectDocInfoViewModel.java | 11 +- .../edit_form/DocInterniEditFormActivity.java | 24 +-- .../DocInterniEditFormViewModel.java | 2 +- .../dialogs/base/DialogSimpleInputHelper.java | 20 +- .../main/res/layout/dialog_input_general.xml | 184 ++++++++---------- .../dialog_versamento_automatico_ul_done.xml | 75 ------- .../main/res/layout/fragment_doc_interni.xml | 2 +- 7 files changed, 113 insertions(+), 205 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java index ed158cf7..8ac7bfe0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java @@ -6,14 +6,11 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniViewModel; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; @@ -94,11 +91,11 @@ public class DialogSelectDocInfoViewModel { } public List getAvailableCodDtips() { - return Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList(); + return mDocInterniSetupDTO.getTipiDoc() != null ? Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList() : new ArrayList<>(); } public List getAvailableCodMgrps() { - return Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList(); + return mDocInterniSetupDTO.getGruppiArt() != null ? Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList() : new ArrayList<>(); } public List getAvailableFornitori() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 603ad11f..67ca2042 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -101,22 +101,22 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter SqlMtbColt document = this.viewModel.getDocument(); this.codDtip.set(document.getCodDtipProvv()); this.note.set(document.getAnnotazioni()); - if(document.getCodMgrp() != null){ + if (document.getCodMgrp() != null) { this.codMgrp.set(document.getCodMgrp()); - }else{ + } else { binding.mtbGrupContainer.setVisibility(View.GONE); } - if (document.getCodAnag() != null){ - this.codAnag.set(document.getCodAnag() + (document.getCodVdes()!=null?" - "+document.getCodVdes():"")); - }else{ + if (document.getCodAnag() != null) { + this.codAnag.set(document.getCodAnag() + (document.getCodVdes() != null ? " - " + document.getCodVdes() : "")); + } else { this.binding.supplierLayout.setVisibility(View.GONE); } this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv())); - if (document.getNumDoc() != null && document.getDataDoc() != null){ + if (document.getNumDoc() != null && document.getDataDoc() != null) { this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), document.getDataDoc())); - }else{ + } else { this.binding.docRifLayout.setVisibility(View.GONE); } } @@ -138,6 +138,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter this.viewModel.setProductsList(productList); } + private void initRecyclerView() { this.viewModel.docRows.observe(this, this::refreshList); DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList); @@ -156,14 +157,13 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } - public void closeEdit() { this.onBackPressed(); } public void manualSearch() { BarcodeManager.disable(); - DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", null, this.viewModel::onSearch, BarcodeManager::enable).show(); + DialogSimpleInputHelper.makeInputDialog(this, "Ricerca articolo", null, "Cod articolo / Barcode", this.viewModel::onSearch, BarcodeManager::enable).show(); } @@ -217,7 +217,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter mtbAart.setQtaCnf(BigDecimal.valueOf(row.getQtaCnf())); mtbAart.setDescrizione(row.getDescrizione()); mtbAart.setDescrizioneEstesa(row.getDescrizione()); - mtbAart.setFlagTracciabilita(flagTracciabilita? "S" : "N"); + mtbAart.setFlagTracciabilita(flagTracciabilita ? "S" : "N"); mtbAart.setUntMis(row.getUntMis()); DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() @@ -236,7 +236,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter .setSuggestPartitaMag(data -> { Date dataScad = data.getDataScad(); String partitaMag = null; - if (dataScad != null){ + if (dataScad != null) { partitaMag = new SimpleDateFormat("yyyymmdd").format(dataScad); } return partitaMag; @@ -271,7 +271,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter @Override public void onMtbColrEdit(MtbColr mtbColr) { GrigliaAcquistiChildDTO articolo = viewModel.getArticoloByCodMart(mtbColr.getCodMart()); - this.viewModel.editRow(entityToSql(mtbColr),articolo.getFlagTracciabilita().equalsIgnoreCase("S")); + this.viewModel.editRow(entityToSql(mtbColr), articolo.getFlagTracciabilita().equalsIgnoreCase("S")); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 3cc8ae14..566368aa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -147,7 +147,7 @@ public void deleteDocument() { } private GrigliaAcquistiChildDTO searchArticolo(String filter) { - return Stream.of(this.productsList).filter(dto -> dto.getCodMart().equalsIgnoreCase(filter) || dto.getBarcode().equalsIgnoreCase(filter)).findFirstOrElse(null); + return Stream.of(this.productsList).filter(dto -> filter.equalsIgnoreCase(dto.getCodMart()) || filter.equalsIgnoreCase(dto.getBarcode())).findFirstOrElse(null); } private SaveDTO getSaveDto() { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java index 351619a1..1ad3cfae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleInputHelper.java @@ -2,7 +2,6 @@ package it.integry.integrywmsnative.view.dialogs.base; import android.app.Dialog; import android.content.Context; -import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; @@ -12,6 +11,7 @@ import androidx.databinding.DataBindingUtil; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding; /** @@ -21,7 +21,7 @@ import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding; public class DialogSimpleInputHelper { - private static Dialog makeBase(Context mContext, String titleText, String valueText, RunnableArgs onPositiveClick, Runnable onNegativeClick){ + private static Dialog makeBase(Context mContext, String titleText, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick){ Dialog dialog = new Dialog(mContext); DialogSimpleInputViewModel viewModel = new DialogSimpleInputViewModel(dialog); @@ -39,10 +39,14 @@ public class DialogSimpleInputHelper { //Title VIEW mBinding.titleText.setText(titleText); - if (valueText != null){ - mBinding.generalInput.setText(valueText); + + if (!UtilityString.isNullOrEmpty(hintText)){ + mBinding.generalInput.setHint(hintText); + } + + if (!UtilityString.isNullOrEmpty(defaultTextValue)){ + mBinding.generalInput.setText(defaultTextValue); } - ColorStateList colorStateList = ColorStateList.valueOf(Color.WHITE); //Content View dialog.setCancelable(true); @@ -60,17 +64,19 @@ public class DialogSimpleInputHelper { return makeBase(mContext, title, null, + null, onPositiveClick, onNegativeClick); } - public static Dialog makeInputDialog(Context mContext, String title,String value, RunnableArgs onPositiveClick, Runnable onNegativeClick){ + public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs onPositiveClick, Runnable onNegativeClick){ return makeBase(mContext, title, - value, + defaultTextValue, + hintText, onPositiveClick, onNegativeClick); diff --git a/app/src/main/res/layout/dialog_input_general.xml b/app/src/main/res/layout/dialog_input_general.xml index 14456ed0..d155b2a7 100644 --- a/app/src/main/res/layout/dialog_input_general.xml +++ b/app/src/main/res/layout/dialog_input_general.xml @@ -1,142 +1,122 @@ - + + - - + android:layout_gravity="center_horizontal" + android:orientation="vertical" + app:cardBackgroundColor="@color/light_blue_300" + app:cardCornerRadius="24dp" + app:cardElevation="0dp"> - - - - - + android:layout_margin="4dp" + android:background="@drawable/dialog_card_child_bg" + android:padding="24dp"> - - - - - - - + android:gravity="center_horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:text="Insert here" /> - + + + android:layout_height="wrap_content" + tools:hint="input here" /> - - - - - - - - - + - + - + - - - - - - + - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_versamento_automatico_ul_done.xml b/app/src/main/res/layout/dialog_versamento_automatico_ul_done.xml index fc03339d..b46625db 100644 --- a/app/src/main/res/layout/dialog_versamento_automatico_ul_done.xml +++ b/app/src/main/res/layout/dialog_versamento_automatico_ul_done.xml @@ -63,81 +63,6 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/title_text" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Date: Wed, 2 Feb 2022 17:01:35 +0100 Subject: [PATCH 02/32] =?UTF-8?q?[carelli=20-=20docInterni]=20aggiunti=20d?= =?UTF-8?q?ati=20al=20DTO=20di=20sincronizzazione=20[MAGGIO=20-=20Picking?= =?UTF-8?q?=20libero]=20Aggiunta=20possibilit=C3=A0=20di=20aprire=20la=20p?= =?UTF-8?q?osizione=20definita=20in=20anagrafica=20articolo=20scansionando?= =?UTF-8?q?=20l'ean13=20dello=20stesso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 1 + .../MainApplicationModule.java | 13 + .../integrywmsnative/core/model/MtbColr.java | 21 +- .../core/model/MvwSitArtUdcDetInventario.java | 273 ++++++++++++++++++ .../consumers/ColliMagazzinoRESTConsumer.java | 12 +- .../rest/consumers/GiacenzaRESTConsumer.java | 69 +++++ .../GiacenzaRESTConsumerService.java | 4 + .../rest/consumers/SystemRESTConsumer.java | 31 +- .../inventario/InventarioService.java | 104 +++++++ .../gest/contab_doc_interni/dto/ColloDTO.java | 40 +++ .../edit_form/DocInterniEditFormActivity.java | 7 +- .../DocInterniEditFormViewModel.java | 7 +- .../picking_libero/PickingLiberoModule.java | 7 +- .../PickingLiberoViewModel.java | 96 +++--- .../RettificaGiacenzeFragment.java | 10 +- .../gest/spedizione/SpedizioneViewModel.java | 24 +- .../DialogInputQuantityV2DTO.java | 10 + .../DialogInputQuantityV2View.java | 18 +- .../res/layout/dialog_input_quantity_v2.xml | 8 +- 19 files changed, 667 insertions(+), 88 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..cec4f599 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1 @@ +/saveactions_settings.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 5af2bd2b..b6cd0309 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -19,12 +19,14 @@ import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; @@ -165,5 +167,16 @@ public class MainApplicationModule { return new DocInterniRESTConsumer(); } + @Provides + @Singleton + GiacenzaRESTConsumer provideGiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { + return new GiacenzaRESTConsumer(systemRESTConsumer, articoloRESTConsumer); + } + + @Provides + @Singleton + InventarioService provideInventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) { + return new InventarioService(giacenzaRESTConsumer); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java index a73a097f..38458d0a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java @@ -60,7 +60,7 @@ public class MtbColr extends EntityBase { public MtbColr() { type = "mtb_colr"; - if(SettingsManager.i().isUserLoggedIn()) { + if (SettingsManager.i().isUserLoggedIn()) { setUtente(SettingsManager.i().getUser().getFullname()); } } @@ -82,7 +82,6 @@ public class MtbColr extends EntityBase { } - public MtbColr setGestione(GestioneEnum gestione) { this.gestione = gestione.getText(); return this; @@ -124,6 +123,11 @@ public class MtbColr extends EntityBase { return this; } + public MtbColr setDataCollo(Date dataCollo) { + setDataCollo(UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); + return this; + } + public Integer getRiga() { return riga; @@ -301,8 +305,6 @@ public class MtbColr extends EntityBase { } - - public String getDatetimeRowS() { return datetimeRow; } @@ -322,11 +324,6 @@ public class MtbColr extends EntityBase { } - - - - - public String getCodJcom() { return codJcom; } @@ -364,11 +361,6 @@ public class MtbColr extends EntityBase { } - - - - - public String getDataScadPartitaS() { return dataScadPartita; } @@ -398,7 +390,6 @@ public class MtbColr extends EntityBase { } - public String getUntMis() { return untMis; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java new file mode 100644 index 00000000..25262c8d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java @@ -0,0 +1,273 @@ +package it.integry.integrywmsnative.core.model; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by ValerioC on 06/03/2018. + */ + +public class MvwSitArtUdcDetInventario { + + private String gestione; + private Date dataCollo; + private String serCollo; + private Integer numCollo; + private Integer segno; + private String codMdep; + private String posizione; + private Integer priorita; + private String codGruppo; + private String gruppo; + private String codSgruppo; + private String sottogruppo; + private String codMart; + private String diacod; + private String descrizioneEstesa; + private String partitaMag; + private String codJcom; + private String commessa; + private String untMis; + private BigDecimal qtaCol; + private BigDecimal numCnf; + private BigDecimal qtaCnf; + private BigDecimal pesoNettoKg; + private BigDecimal pesoLordoKg; + private String codJfas; + private MtbAart mtbAart; + + + public String getGestione() { + return gestione; + } + + public MvwSitArtUdcDetInventario setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public Date getDataCollo() { + return dataCollo; + } + + public MvwSitArtUdcDetInventario setDataCollo(Date dataCollo) { + this.dataCollo = dataCollo; + return this; + } + + public String getSerCollo() { + return serCollo; + } + + public MvwSitArtUdcDetInventario setSerCollo(String serCollo) { + this.serCollo = serCollo; + return this; + } + + public Integer getNumCollo() { + return numCollo; + } + + public MvwSitArtUdcDetInventario setNumCollo(Integer numCollo) { + this.numCollo = numCollo; + return this; + } + + public Integer getSegno() { + return segno; + } + + public MvwSitArtUdcDetInventario setSegno(Integer segno) { + this.segno = segno; + return this; + } + + public String getCodMdep() { + return codMdep; + } + + public MvwSitArtUdcDetInventario setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getPosizione() { + return posizione; + } + + public MvwSitArtUdcDetInventario setPosizione(String posizione) { + this.posizione = posizione; + return this; + } + + public Integer getPriorita() { + return priorita; + } + + public MvwSitArtUdcDetInventario setPriorita(Integer priorita) { + this.priorita = priorita; + return this; + } + + public String getCodGruppo() { + return codGruppo; + } + + public MvwSitArtUdcDetInventario setCodGruppo(String codGruppo) { + this.codGruppo = codGruppo; + return this; + } + + public String getGruppo() { + return gruppo; + } + + public MvwSitArtUdcDetInventario setGruppo(String gruppo) { + this.gruppo = gruppo; + return this; + } + + public String getCodSgruppo() { + return codSgruppo; + } + + public MvwSitArtUdcDetInventario setCodSgruppo(String codSgruppo) { + this.codSgruppo = codSgruppo; + return this; + } + + public String getSottogruppo() { + return sottogruppo; + } + + public MvwSitArtUdcDetInventario setSottogruppo(String sottogruppo) { + this.sottogruppo = sottogruppo; + return this; + } + + public String getCodMart() { + return codMart; + } + + public MvwSitArtUdcDetInventario setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDiacod() { + return diacod; + } + + public MvwSitArtUdcDetInventario setDiacod(String diacod) { + this.diacod = diacod; + return this; + } + + public String getDescrizioneEstesa() { + return descrizioneEstesa; + } + + public MvwSitArtUdcDetInventario setDescrizioneEstesa(String descrizioneEstesa) { + this.descrizioneEstesa = descrizioneEstesa; + return this; + } + + public String getPartitaMag() { + return partitaMag; + } + + public MvwSitArtUdcDetInventario setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public String getCodJcom() { + return codJcom; + } + + public MvwSitArtUdcDetInventario setCodJcom(String codJcom) { + this.codJcom = codJcom; + return this; + } + + public String getCommessa() { + return commessa; + } + + public MvwSitArtUdcDetInventario setCommessa(String commessa) { + this.commessa = commessa; + return this; + } + + public String getUntMis() { + return untMis; + } + + public MvwSitArtUdcDetInventario setUntMis(String untMis) { + this.untMis = untMis; + return this; + } + + public BigDecimal getQtaCol() { + return qtaCol; + } + + public MvwSitArtUdcDetInventario setQtaCol(BigDecimal qtaCol) { + this.qtaCol = qtaCol; + return this; + } + + public BigDecimal getNumCnf() { + return numCnf; + } + + public MvwSitArtUdcDetInventario setNumCnf(BigDecimal numCnf) { + this.numCnf = numCnf; + return this; + } + + public BigDecimal getQtaCnf() { + return qtaCnf; + } + + public MvwSitArtUdcDetInventario setQtaCnf(BigDecimal qtaCnf) { + this.qtaCnf = qtaCnf; + return this; + } + + public BigDecimal getPesoNettoKg() { + return pesoNettoKg; + } + + public MvwSitArtUdcDetInventario setPesoNettoKg(BigDecimal pesoNettoKg) { + this.pesoNettoKg = pesoNettoKg; + return this; + } + + public BigDecimal getPesoLordoKg() { + return pesoLordoKg; + } + + public MvwSitArtUdcDetInventario setPesoLordoKg(BigDecimal pesoLordoKg) { + this.pesoLordoKg = pesoLordoKg; + return this; + } + + public String getCodJfas() { + return codJfas; + } + + public MvwSitArtUdcDetInventario setCodJfas(String codJfas) { + this.codJfas = codJfas; + return this; + } + + public MtbAart getMtbAart() { + return mtbAart; + } + + public MvwSitArtUdcDetInventario setMtbAart(MtbAart mtbAart) { + this.mtbAart = mtbAart; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index 7eb06e37..22658517 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -155,7 +155,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { mtbColrClone .setNumCollo(null) - .setDataCollo(null) + .setDataCollo((String) null) .setRiga(null) .setGestione(GestioneEnum.LAVORAZIONE) @@ -209,7 +209,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { MtbColr mtbColrClone = new MtbColr(); mtbColrClone .setNumCollo(null) - .setDataCollo(null) + .setDataCollo((String) null) .setRiga(null) .setGestione(GestioneEnum.LAVORAZIONE) .setDataColloRif(sourceMtbColt.getDataColloD()) @@ -239,7 +239,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { saveCollo(newMtbColt, onComplete, onFailed); } - public void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) { createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed); } @@ -399,7 +398,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }, onFailed); } - private void cyclicGetMultipleByTestate(@NotNull Iterator sourceMtbColts, boolean onlyResiduo, ArrayList resultMtbColt, Runnable onComplete, RunnableArgs onAbort) { if (sourceMtbColts.hasNext()) { getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> { @@ -449,7 +447,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public void changePosizione(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs onFailed) { String codMdep = posizione.getCodMdep(); @@ -545,7 +542,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }, onFailed); } - public static void retrieveBasketColli(RunnableArgs> onComplete, RunnableArgs onFailed) { ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback>>() { @@ -622,7 +618,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs onFailed) { MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone(); @@ -648,7 +643,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public void versamentoAutomaticoUL(MtbColt sourceMtbColt, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone(); @@ -682,7 +676,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) .findFirst(); - if(mtbAartOpt.isPresent()){ + if (mtbAartOpt.isPresent()) { foundMtbAart = mtbAartOpt.get(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java new file mode 100644 index 00000000..d784d61c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java @@ -0,0 +1,69 @@ +package it.integry.integrywmsnative.core.rest.consumers; + +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; +import it.integry.integrywmsnative.core.utility.UtilityQuery; + +@Singleton +public class GiacenzaRESTConsumer extends _BaseRESTConsumer { + + private final SystemRESTConsumer mSystemRESTConsumer; + private final ArticoloRESTConsumer mArticoloRESTConsumer; + + public GiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { + this.mSystemRESTConsumer = systemRESTConsumer; + this.mArticoloRESTConsumer = articoloRESTConsumer; + + } + + public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs> onComplete, RunnableArgs onFailed) { + + HashMap params = new HashMap<>(); + params.put("posizione", posizione.getPosizione()); + String whereCond = UtilityQuery.concatFieldsInWhereCond(params); + String query = "SELECT * from mvw_sitart_udc_det_inventario" + + " WHERE " + whereCond; + + + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + this.mSystemRESTConsumer.>processSql(query, typeOfObjectsList, inventarioList -> { + List codMarts = Stream.of(inventarioList) + .map(x -> x.getCodMart().trim()) + .toList(); + + mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + for (var row : inventarioList) { + + MtbAart foundMtbAart = null; + Optional mtbAartOpt = Stream.of(mtbAarts) + .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart())) + .findFirst(); + + if (mtbAartOpt.isPresent()) { + foundMtbAart = mtbAartOpt.get(); + } + + row.setMtbAart(foundMtbAart); + } + + onComplete.run(inventarioList); + }, onFailed); + }, onFailed); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java new file mode 100644 index 00000000..17d3460c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.core.rest.consumers; + +public interface GiacenzaRESTConsumerService { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index 65cd40d4..570bb413 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -4,6 +4,11 @@ import android.text.TextUtils; import android.util.Log; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.orhanobut.logger.Logger; @@ -12,20 +17,23 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.lang.reflect.Type; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.inject.Singleton; import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.CommonConst; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -46,7 +54,24 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "ProcessSql", o -> { - Gson gson = new Gson(); + Gson gson = new GsonBuilder() + .registerTypeAdapter(Date.class, new JsonDeserializer() { + @Override + public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + try { + return new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(json.getAsString()); + } catch (Exception e) { + try { + return new SimpleDateFormat().parse(json.getAsString()); + } catch (ParseException parseException) { + throw new JsonParseException(parseException); + } + } + } + }) + .create(); + + String json = gson.toJson(o); InputStream ims = new ByteArrayInputStream(json.getBytes()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java b/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java new file mode 100644 index 00000000..587147a6 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java @@ -0,0 +1,104 @@ +package it.integry.integrywmsnative.core.services.inventario; + +import androidx.databinding.ObservableArrayList; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; +import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; + +@Singleton +public class InventarioService { + + private final GiacenzaRESTConsumer mGiacenzaRESTConsumer; + + public InventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) { + this.mGiacenzaRESTConsumer = giacenzaRESTConsumer; + } + + public void getInventarioDaPosizione(MtbDepoPosizione posizione, RunnableArgs> onSuccess, RunnableArgs onError) { + mGiacenzaRESTConsumer.getGiacenzeInPosizione(posizione, onSuccess, onError); + } + + public void getInventarioDaPosizionePerArticolo(MtbDepoPosizione posizione, MtbAart articolo, RunnableArgs> onSuccess, RunnableArgs onError) { + getInventarioDaPosizione(posizione, (inventario) -> { + List inventarioArticolo = Stream.of(inventario).filter( + x -> articolo.getCodMart().equalsIgnoreCase(x.getCodMart()) + ).toList(); + onSuccess.run(inventarioArticolo); + }, onError); + } + + public MtbColt mapInventarioToMtbColt(MvwSitArtUdcDetInventario inventario) { + return mapInventarioToMtbColt(inventario, true); + } + + public MtbColt mapInventarioToMtbColt(MvwSitArtUdcDetInventario inventario, boolean includeRows) { + MtbColt mtbColt = new MtbColt(); + + mtbColt.setGestione(inventario.getGestione()); + mtbColt.setDataCollo(inventario.getDataCollo()); + mtbColt.setSerCollo(inventario.getSerCollo()); + mtbColt.setNumCollo(inventario.getNumCollo()); + mtbColt.setSegno(inventario.getSegno()); + mtbColt.setCodMdep(inventario.getCodMdep()); + mtbColt.setPosizione(inventario.getPosizione()); + mtbColt.setCodJcom(inventario.getCodJcom()); + mtbColt.setPesoNettoKg(inventario.getPesoNettoKg()); + mtbColt.setPesoKg(inventario.getPesoLordoKg()); + mtbColt.setCodJfas(inventario.getCodJfas()); + + if (includeRows) { + ObservableArrayList rows = new ObservableArrayList<>(); + rows.add(mapInventarioToMtbColr(inventario)); + mtbColt.setMtbColr(rows); + } + return mtbColt; + } + + public MtbColr mapInventarioToMtbColr(MvwSitArtUdcDetInventario inventario) { + MtbColr mtbColr = new MtbColr(); + + mtbColr.setGestione(inventario.getGestione()); + mtbColr.setDataCollo(inventario.getDataCollo()); + mtbColr.setSerCollo(inventario.getSerCollo()); + mtbColr.setNumCollo(inventario.getNumCollo()); + mtbColr.setCodMart(inventario.getCodMart()); + mtbColr.setDescrizione(inventario.getDescrizioneEstesa()); + mtbColr.setPartitaMag(inventario.getPartitaMag()); + mtbColr.setCodJcom(inventario.getCodJcom()); + mtbColr.setUntMis(inventario.getUntMis()); + mtbColr.setQtaCol(inventario.getQtaCol()); + mtbColr.setNumCnf(inventario.getNumCnf()); + mtbColr.setQtaCnf(inventario.getQtaCnf()); + mtbColr.setPesoNettoKg(inventario.getPesoNettoKg()); + mtbColr.setPesoLordoKg(inventario.getPesoLordoKg()); + mtbColr.setMtbAart(inventario.getMtbAart()); + + + return mtbColr; + } + + public List mapInventarioToMtbColtList(List inventario) { + return new ArrayList<>(Stream.of(inventario).groupBy(x -> x.getNumCollo() + "-" + x.getDataCollo() + "-" + x.getSerCollo() + x.getGestione()).map(inv -> { + List rows = inv.getValue(); + MtbColt mtbColt = mapInventarioToMtbColt(rows.get(0), false); + ObservableArrayList mtbColrs = new ObservableArrayList<>(); + mtbColrs.addAll(Stream.of(rows).map(this::mapInventarioToMtbColr).toList()); + mtbColt.setMtbColr(mtbColrs); + return mtbColt; + }).toList()); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ColloDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ColloDTO.java index 7b964890..a017beec 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ColloDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ColloDTO.java @@ -13,6 +13,10 @@ public class ColloDTO { private String segno; private String idDisp; private String codDtip; + private String codAnag; + private String codVdes; + private Integer numDoc; + private Date dataDoc; private List artRows = new ArrayList<>(); private RifOrd rifOrd; @@ -88,6 +92,42 @@ public class ColloDTO { return rifOrd; } + public String getCodAnag() { + return codAnag; + } + + public ColloDTO setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + + public Integer getNumDoc() { + return numDoc; + } + + public ColloDTO setNumDoc(Integer numDoc) { + this.numDoc = numDoc; + return this; + } + + public Date getDataDoc() { + return dataDoc; + } + + public ColloDTO setDataDoc(Date dataDoc) { + this.dataDoc = dataDoc; + return this; + } + + public String getCodVdes() { + return codVdes; + } + + public ColloDTO setCodVdes(String codVdes) { + this.codVdes = codVdes; + return this; + } + public void setRifOrd(RifOrd rifOrd) { this.rifOrd = rifOrd; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 67ca2042..e5ceb7f8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -49,8 +49,8 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua public class DocInterniEditFormActivity extends BaseActivity implements DocInterniEditFormViewModel.Listener, BottomSheetMtbColrEditView.Listener { - private static String DATA_KEY_DOCUMENT = "document"; - private static String DATA_KEY_PRODUCTS_LIST = "productsList"; + private static final String DATA_KEY_DOCUMENT = "document"; + private static final String DATA_KEY_PRODUCTS_LIST = "productsList"; @Inject MtbColrRepository documentRowsRepository; @@ -184,7 +184,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(this.viewModel::onScanSuccessful) + .setOnScanSuccessfull(this.viewModel::processBarcode) .setOnScanFailed(this::onError)); this.viewModel.fetchDocumentRows(); } @@ -226,6 +226,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter .setInitialQtaCnf(BigDecimal.valueOf(row.getQtaCnf())) .setInitialQtaTot(BigDecimal.valueOf(row.getQtaCol())) .setNote(row.getNote()) + .setSaveOnImeDone(true) .setPartitaMag(row.getPartitaMag()) .setDataScad(row.getDataScad()) .setCanOverflowOrderQuantity(false) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 566368aa..b4580b87 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -116,6 +116,7 @@ public void deleteDocument() { return; } SqlMtbColr row = this.getRowForArticolo(articolo); + this.sendOnLoadingEnded(); this.editRow(row,articolo.getFlagTracciabilita().equalsIgnoreCase("S")); } @@ -168,6 +169,10 @@ public void deleteDocument() { collo.setCreatedDate(UtilityDate.formatDate(document.getDataCollo(), UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); collo.setAnnotazioni(document.getAnnotazioni()); collo.setSegno(saveDTO.getSegno()); + collo.setDataDoc(document.getDataDoc()); + collo.setNumDoc(document.getNumDoc()); + collo.setCodAnag(document.getCodAnag()); + collo.setCodVdes(document.getCodVdes()); for (SqlMtbColr row : this.getDocumentRows()) { ArtDTO artDto = new ArtDTO(); @@ -209,7 +214,7 @@ public void deleteDocument() { this.productsList = productsList; } - public void onScanSuccessful(BarcodeScanDTO dto) { + public void processBarcode(BarcodeScanDTO dto) { String code = dto.getStringValue(); this.onSearch(code); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java index b56e3eb1..640f0c12 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java @@ -7,6 +7,7 @@ import dagger.Provides; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.services.inventario.InventarioService; @Module(subcomponents = {PickingLiberoComponent.class}) public class PickingLiberoModule { @@ -15,7 +16,9 @@ public class PickingLiberoModule { @Singleton PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - BarcodeRESTConsumer barcodeRESTConsumer) { - return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer); + BarcodeRESTConsumer barcodeRESTConsumer, + InventarioService inventarioService + ) { + return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, inventarioService); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 7513606e..0dbc8a2d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -23,6 +23,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.VtbDest; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; @@ -31,10 +32,12 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; @@ -48,6 +51,7 @@ public class PickingLiberoViewModel { private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final InventarioService inventarioService; private boolean mFlagAskCliente; @@ -60,10 +64,13 @@ public class PickingLiberoViewModel { @Inject public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - BarcodeRESTConsumer barcodeRESTConsumer) { + BarcodeRESTConsumer barcodeRESTConsumer, + InventarioService inventarioService + ) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.inventarioService = inventarioService; } @@ -164,10 +171,25 @@ public class PickingLiberoViewModel { } mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { - if (mtbAartList != null && mtbAartList.size() > 0) { - this.dispatchArt(mtbAartList.get(0), ean128Model); - onComplete.run(); + MtbAart articolo = mtbAartList.get(0); + MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); + if (posizione != null && posizione.isFlagMonoCollo()) { + inventarioService.getInventarioDaPosizionePerArticolo(posizione, articolo, (giacenzaArticolo) -> { + if (giacenzaArticolo.size() > 0) { + if (giacenzaArticolo.size() == 1) { + pickMerceULtoUL(inventarioService.mapInventarioToMtbColt(giacenzaArticolo.get(0)), onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + } else { + this.dispatchArt(articolo, ean128Model); + } + }, this::sendError); + } else { + this.dispatchArt(articolo, ean128Model); + onComplete.run(); + } } else { this.sendError(new NoResultFromBarcodeException()); @@ -369,7 +391,7 @@ public class PickingLiberoViewModel { .setNumCollo(null) .setDataColloRif(cloneMtbColr.getDataColloS()) - .setDataCollo(null) + .setDataCollo((String) null) .setPesoLordoKg(null) .setPesoNettoKg(null); @@ -480,46 +502,46 @@ public class PickingLiberoViewModel { new Thread(this::sendOnLoadingStarted).start(); - final MtbColr mtbColr = new MtbColr() - .setCodMart(pickingObjectDTO.getMtbAart().getCodMart()) - .setPartitaMag(partitaMag) - .setDataScadPartita(dataScad) - .setQtaCol(qtaTot) - .setQtaCnf(qtaCnf) - .setNumCnf(numCnf) - .setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa()) - .setDatetimeRow(UtilityDate.getDateInstance()); + final MtbColr mtbColr = new MtbColr() + .setCodMart(pickingObjectDTO.getMtbAart().getCodMart()) + .setPartitaMag(partitaMag) + .setDataScadPartita(dataScad) + .setQtaCol(qtaTot) + .setQtaCnf(qtaCnf) + .setNumCnf(numCnf) + .setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa()) + .setDatetimeRow(UtilityDate.getDateInstance()); - mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); - MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); - cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); - cloneMtbColt.setMtbColr(new ObservableArrayList<>()); - cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); + cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); - if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { - this.sendOnLoadingEnded(); - return; - } + if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { + this.sendOnLoadingEnded(); + return; + } - mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { - mtbColr - .setDataCollo(value.getDataColloS()) - .setNumCollo(value.getNumCollo()) - .setGestione(value.getGestione()) - .setSerCollo(value.getSerCollo()) - .setRiga(value.getMtbColr().get(value.getMtbColr().size() - 1).getRiga()) - .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) - .setMtbAart(pickingObjectDTO.getMtbAart()); + mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + mtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(value.getMtbColr().size() - 1).getRiga()) + .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) + .setMtbAart(pickingObjectDTO.getMtbAart()); - mCurrentMtbColt.getMtbColr().add(mtbColr); + mCurrentMtbColt.getMtbColr().add(mtbColr); - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); - if (shouldCloseLU) closeLU(null); - }, this::sendError); + if (shouldCloseLU) closeLU(null); + }, this::sendError); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 916e6125..db11171d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze; import android.app.Dialog; import android.content.Context; +import android.content.pm.ActivityInfo; import android.content.res.ColorStateList; import android.content.res.Resources; import android.os.Bundle; @@ -95,15 +96,21 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr @Override public void onCreate(Bundle savedInstanceState) { + requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); super.onCreate(savedInstanceState); } + @Override + public void onDestroy() { + requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + super.onDestroy(); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false); - MainApplication.appComponent .rettificaGiacenzeComponent() .create() @@ -126,7 +133,6 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr return mBinding.getRoot(); } - private void initVars() { thereIsAnOpenedUL.addOnPropertyChangedCallback(() -> { thereIsntAnOpenedUL.set(!thereIsAnOpenedUL.get()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 83b3f6de..ebb2c0a3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -776,34 +776,34 @@ public class SpedizioneViewModel { List availableBatchLots = Stream.of(scannedMtbColrs) .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && ( - x.getPartitaMag() == null || + x.getPartitaMag() == null || UtilityString.isNullOrEmpty(x.getMtbPartitaMag().getDataScadS()) || UtilityDate.getDateInstance().before(x.getMtbPartitaMag().getDataScadD()) - )) + )) .distinctBy(MtbColr::getPartitaMag) .map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag()) .toList(); //Controllo se una delle partite combacia con quella che voglio evadere - if(refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) { + if (refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) { MtbPartitaMag refMtbPartitaMag = refMtbColr.getMtbPartitaMag(); Optional matchPartitaMag = Stream.of(availableBatchLots) .filter(availableBatchLot -> refMtbPartitaMag.getPartitaMag().equalsIgnoreCase(availableBatchLot.getPartitaMag())) .findFirst(); - if(matchPartitaMag.isPresent()) { + if (matchPartitaMag.isPresent()) { availableBatchLots.clear(); availableBatchLots.add(refMtbPartitaMag); } } - if(availableBatchLots.size() > 1) { + if (availableBatchLots.size() > 1) { this.sendOnLoadingStarted(); List tmp = new ArrayList<>(); - if(Stream.of(availableBatchLots).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) { + if (Stream.of(availableBatchLots).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) { tmp.addAll( Stream.of(availableBatchLots) .filter(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()) && UtilityDate.getDateInstance().before(x.getDataScadD())) @@ -811,7 +811,7 @@ public class SpedizioneViewModel { .toList()); } - if(Stream.of(availableBatchLots).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) { + if (Stream.of(availableBatchLots).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) { tmp.addAll( Stream.of(availableBatchLots) .filter(x -> UtilityString.isNullOrEmpty(x.getDataScadS())) @@ -822,7 +822,7 @@ public class SpedizioneViewModel { this.sendBatchLotSelectionRequest(tmp, selected -> { this.sendOnLoadingEnded(); - if(selected != null) { + if (selected != null) { MtbColr scannedMtbColr = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr()) .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && ((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag())) || @@ -897,7 +897,7 @@ public class SpedizioneViewModel { // } - if(refMtbColr != null) { + if (refMtbColr != null) { if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getQtaCol(), qtaDaEvadere)) { numCnfDaPrelevare = refMtbColr.getNumCnf(); @@ -1456,7 +1456,7 @@ public class SpedizioneViewModel { refMtbColt.getMtbColr().size() > 0 ? refMtbColt.getMtbColr().get(0) : null; - if(originalRefMtbColr != null) { + if (originalRefMtbColr != null) { refMtbColr.setId(originalRefMtbColr.getId()); } @@ -1695,7 +1695,7 @@ public class SpedizioneViewModel { .setRiga(null) .setNumCollo(null) .setGestione((String) null) - .setDataCollo(null) + .setDataCollo((String) null) .setSerCollo(null) .setCausale(MtbColr.Causale.VERSAMENTO); @@ -1721,7 +1721,7 @@ public class SpedizioneViewModel { if (!shouldPrint) { onComplete.run(); } else { - cyclicPrint(PrinterRESTConsumer.Type.PRIMARIA, mtbColtsToPrint.iterator(), onComplete, ex -> this.sendLUPrintError(ex, onComplete)); + cyclicPrint(PrinterRESTConsumer.Type.PRIMARIA, mtbColtsToPrint.iterator(), onComplete, ex -> this.sendLUPrintError(ex, onComplete)); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index 72852662..92b225aa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -31,6 +31,7 @@ public class DialogInputQuantityV2DTO { private boolean isDataScadMandatory = false; private boolean isNotesAllowed = false; private boolean canLUBeClosed; + private boolean saveOnImeDone = false; private String partitaMag; private String note; @@ -236,4 +237,13 @@ public class DialogInputQuantityV2DTO { this.suggestPartitaMag = suggestPartitaMag; return this; } + + public boolean isSaveOnImeDone() { + return saveOnImeDone; + } + + public DialogInputQuantityV2DTO setSaveOnImeDone(boolean saveOnImeDone) { + this.saveOnImeDone = saveOnImeDone; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 58b8ddcd..6c9073f1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -12,6 +12,9 @@ import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -42,6 +45,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -94,7 +98,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); - this.initBarcode(); } @@ -105,7 +108,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_v2, container, false); mBindings.setLifecycleOwner(this); - mBindings.toolbar.setTitle("Inserimento articolo"); MainApplication.appComponent @@ -141,7 +143,17 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia mBindings.inputQtaTotText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); } - getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + if (mDialogInputQuantityV2DTO.isSaveOnImeDone()){ + + mBindings.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + save(); + return true; + } + return false; + }); + } return mBindings.getRoot(); } diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 39a84a9c..3846c6ce 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -2,7 +2,8 @@ + xmlns:tools="http://schemas.android.com/tools" + > @@ -488,6 +489,8 @@ android:layout_height="wrap_content" android:hint="@string/num_pcks" android:imeOptions="actionDone" + android:selectAllOnFocus="true" + android:nextFocusForward="@+id/input_qta_cnf_text" android:inputType="number" app:binding="@{view.currentNumCnf}" /> @@ -511,6 +514,8 @@ android:layout_height="wrap_content" android:hint="@string/qty_x_pck" android:imeOptions="actionDone" + android:selectAllOnFocus="true" + android:nextFocusForward="@+id/input_qta_tot_text" android:inputType="numberDecimal" app:binding="@{view.currentQtaCnf}" /> @@ -535,6 +540,7 @@ android:digits="0123456789" android:hint="@string/tot_qty" android:inputType="number" + android:selectAllOnFocus="true" app:binding="@{view.currentQtaTot}" /> From a921b83c1f0932f8c6851c7fbc04134253baa4d2 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 3 Feb 2022 12:03:17 +0100 Subject: [PATCH 03/32] unifificata gestione etichette posizioni in picking libero e rettifica giacenze --- .../picking_libero/PickingLiberoModule.java | 6 +-- .../PickingLiberoViewModel.java | 54 +++++++++++++------ .../DialogScanOrCreateLUViewModel.java | 29 ++++++++-- 3 files changed, 68 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java index 640f0c12..5e57fc58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java @@ -7,7 +7,7 @@ import dagger.Provides; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.services.inventario.InventarioService; +import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; @Module(subcomponents = {PickingLiberoComponent.class}) public class PickingLiberoModule { @@ -17,8 +17,8 @@ public class PickingLiberoModule { PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, - InventarioService inventarioService + PosizioniRESTConsumer posizioniRESTConsumer ) { - return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, inventarioService); + return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 0dbc8a2d..2f6c94ec 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -15,6 +15,7 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; +import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; @@ -30,9 +31,9 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; -import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -51,7 +52,7 @@ public class PickingLiberoViewModel { private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; - private final InventarioService inventarioService; + private final PosizioniRESTConsumer mPosizioniRESTConsumer; private boolean mFlagAskCliente; @@ -65,12 +66,12 @@ public class PickingLiberoViewModel { public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, - InventarioService inventarioService + PosizioniRESTConsumer posizioniRESTConsumer ) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; - this.inventarioService = inventarioService; + this.mPosizioniRESTConsumer = posizioniRESTConsumer; } @@ -95,6 +96,9 @@ public class PickingLiberoViewModel { //Cerco gli articoli presenti nell'ul dell'etichetta anonima this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete); + } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) { + //Cerco tramite etichetta un collo in posizione mono ul + this.executeEtichettaPosizione(barcodeScanDTO, onComplete); } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { //Cerco tramite etichetta ean 128 (che può indicarmi una UL) this.executeEtichettaEan128(barcodeScanDTO, onComplete); @@ -104,11 +108,41 @@ public class PickingLiberoViewModel { this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); } else { + //Cerco tramite ean13 un collo in posizione mono ul definita in anagrafica articolo, altrimenti se abilitato procedo con picking manuale this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); } } + private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) + .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) + .single(); + this.executePosizione(foundPosizione, null, onComplete); + + } + + private void executePosizione(MtbDepoPosizione posizione, MtbAart articolo, Runnable onComplete) { + this.mPosizioniRESTConsumer.getBancaliInPosizione(posizione, mtbColtList -> { + + if (mtbColtList == null || mtbColtList.size() == 0) { + if (articolo != null) { + this.dispatchArt(articolo, null); + } else { + this.sendError(new NoLUFoundException()); + } + } else if (mtbColtList.size() == 1) { + this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { + pickMerceULtoUL(mtbColt, onComplete); + }, this::sendError); + } else { + this.sendError(new TooManyLUFoundInMonoLUPositionException()); + } + + }, this::sendError); + } + private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { try { Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); @@ -175,17 +209,7 @@ public class PickingLiberoViewModel { MtbAart articolo = mtbAartList.get(0); MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); if (posizione != null && posizione.isFlagMonoCollo()) { - inventarioService.getInventarioDaPosizionePerArticolo(posizione, articolo, (giacenzaArticolo) -> { - if (giacenzaArticolo.size() > 0) { - if (giacenzaArticolo.size() == 1) { - pickMerceULtoUL(inventarioService.mapInventarioToMtbColt(giacenzaArticolo.get(0)), onComplete); - } else { - this.sendError(new NoLUFoundException()); - } - } else { - this.dispatchArt(articolo, ean128Model); - } - }, this::sendError); + this.executePosizione(posizione, articolo, onComplete); } else { this.dispatchArt(articolo, ean128Model); onComplete.run(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java index 66c40b54..e1219bcc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java @@ -8,6 +8,7 @@ import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; @@ -17,6 +18,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityString; public class DialogScanOrCreateLUViewModel { @@ -62,6 +64,8 @@ public class DialogScanOrCreateLUViewModel { this.executeEtichettaAnonima(barcodeScanDTO, onComplete); } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { this.executeEAN128(barcodeScanDTO, onComplete); + } else if (UtilityBarcode.isEan13(barcodeScanDTO)) { + this.executeEAN13(barcodeScanDTO, onComplete); } else { onComplete.run(); } @@ -73,8 +77,12 @@ public class DialogScanOrCreateLUViewModel { MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) .single(); + this.executePosizione(foundPosizione, onComplete); - this.mPosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { + } + + private void executePosizione(MtbDepoPosizione posizione, Runnable onComplete) { + this.mPosizioniRESTConsumer.getBancaliInPosizione(posizione, mtbColtList -> { if (mtbColtList == null || mtbColtList.size() == 0) { this.sendError(new NoLUFoundException()); @@ -88,7 +96,6 @@ public class DialogScanOrCreateLUViewModel { } }, this::sendError); - } @@ -96,7 +103,7 @@ public class DialogScanOrCreateLUViewModel { this.mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), mShouldCheckResiduo, false, mtbColt -> { if (mtbColt == null) { - if(mEnableCreation) { + if (mEnableCreation) { this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(barcodeScanDTO, GestioneEnum.LAVORAZIONE, createdMtbColt -> { onComplete.run(); this.sendOnLUOpened(createdMtbColt, true); @@ -158,6 +165,22 @@ public class DialogScanOrCreateLUViewModel { }, this::sendError); } + private void executeEAN13(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + this.mArticoloRESTConsumer.getByBarcodeProd(barcodeScanDTO.getStringValue(), articoli -> { + if (articoli.size() == 1) { + MtbAart articolo = articoli.get(0); + MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); + if (posizione != null && posizione.isFlagMonoCollo()) { + this.executePosizione(posizione, onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + } else { + this.sendError(new NoLUFoundException()); + } + }, this::sendError); + } + private void sendOnLUVenditaConfirmRequired(RunnableArgs onConfirm) { if (this.mListener != null) mListener.onLUVenditaConfirmRequired(onConfirm); } From 69962781aa78ca22e515007a68793762042daea2 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 3 Feb 2022 12:05:06 +0100 Subject: [PATCH 04/32] -> v1.23.0 (255) --- app/build.gradle | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9db9edb1..4c0e579a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 254 - def appVersionName = '1.22.0' + def appVersionCode = 255 + def appVersionName = '1.23.0' signingConfigs { release { @@ -124,7 +124,8 @@ dependencies { api "com.google.dagger:dagger:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version" - api "com.google.dagger:dagger-android-support:$dagger2_version" // if you use the support libraries + api "com.google.dagger:dagger-android-support:$dagger2_version" + // if you use the support libraries annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version" //FAB From c3884774e1ce6d3dc22c77cb3b0029faa350330e Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 8 Feb 2022 10:37:37 +0100 Subject: [PATCH 05/32] =?UTF-8?q?corretto=20filtro=20in=20dialogChooseArts?= =?UTF-8?q?=20e=20aggiunta=20possibilit=C3=A0=20di=20aprirlo=20con=20filtr?= =?UTF-8?q?o=20gi=C3=A0=20attivo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../picking_libero/PickingLiberoFragment.java | 4 +- .../PickingLiberoViewModel.java | 15 +++-- .../DialogChooseArtsFromListaArts.java | 66 ++++++++++++++----- 3 files changed, 62 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index c8e1d912..e262a91a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -289,9 +289,9 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme } @Override - public void onArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort) { + public void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { DialogChooseArtsFromListaArts - .newInstance(mtbColrsToPick, onComplete, () -> { + .newInstance(mtbColrsToPick, mtbAart, onComplete, () -> { onAbort.run(); BarcodeManager.enable(); }) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 2f6c94ec..0c5a4e7b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -134,7 +134,7 @@ public class PickingLiberoViewModel { } } else if (mtbColtList.size() == 1) { this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { - pickMerceULtoUL(mtbColt, onComplete); + pickMerceULtoUL(mtbColt, articolo, onComplete); }, this::sendError); } else { this.sendError(new TooManyLUFoundInMonoLUPositionException()); @@ -382,13 +382,16 @@ public class PickingLiberoViewModel { }); } - private void pickMerceULtoUL(MtbColt sourceMtbColt, Runnable onComplete) { + pickMerceULtoUL(sourceMtbColt, null, onComplete); + } + + private void pickMerceULtoUL(MtbColt sourceMtbColt, MtbAart mtbAart, Runnable onComplete) { List mtbColrsToPick = Stream.of(sourceMtbColt.getMtbColr()) .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaCol(), BigDecimal.ZERO)) .toList(); - this.sendArtSelectionRequest(mtbColrsToPick, pickedAarts -> { + this.sendArtSelectionRequest(mtbColrsToPick, mtbAart, pickedAarts -> { List destNewMtbColr = new ArrayList<>(); if (pickedAarts.size() > 0) { @@ -809,9 +812,9 @@ public class PickingLiberoViewModel { if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort); } - private void sendArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort) { + private void sendArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { if (this.mListener != null) - mListener.onArtSelectionRequest(mtbColrsToPick, onComplete, onAbort); + mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort); } private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, @@ -865,7 +868,7 @@ public class PickingLiberoViewModel { void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort); - void onArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort); + void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort); void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index 16d00ccc..0c472d2f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -62,11 +62,23 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final List mDataset; private int mBarcodeScannerIstanceID; + private Dialog mCurrentProgress; + private MtbAart selectedArt; public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { return new DialogChooseArtsFromListaArts(listaMtbColr, onItemsChoosed, onAbort); } + public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, MtbAart mtbAart, RunnableArgs> onItemsChoosed, Runnable onAbort) { + DialogChooseArtsFromListaArts dialog = newInstance(listaMtbColr, onItemsChoosed, onAbort); + dialog.setSelectedArt(mtbAart); + return dialog; + } + + public void setSelectedArt(MtbAart mtbAart) { + this.selectedArt = mtbAart; + } + private DialogChooseArtsFromListaArts(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { super(); @@ -125,6 +137,14 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { return mBindings.getRoot(); } + @Override + public void onStart() { + super.onStart(); + + if (selectedArt != null) { + this.loadArticolo(selectedArt.getBarCode(), null); + } + } private void initRecyclerView() { mBindings.listaArts.setNestedScrollingEnabled(false); @@ -229,8 +249,6 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { } - - @Override public void onDismiss(@NonNull DialogInterface dialog) { BarcodeManager.removeCallback(mBarcodeScannerIstanceID); @@ -242,14 +260,15 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(context); + openProgress(); + if (UtilityBarcode.isEan13(data)) { - this.loadArticolo(data.getStringValue(), null, progressDialog); + this.loadArticolo(data.getStringValue(), null); } else if (UtilityBarcode.isEtichetta128(data)) { - this.executeEtichettaEan128(data, progressDialog); + this.executeEtichettaEan128(data); } else { - progressDialog.dismiss(); + closeProgress(); BarcodeManager.enable(); } @@ -257,7 +276,7 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { }; - private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO) { this.barcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { String barcodeProd = null; @@ -271,11 +290,11 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { if (!UtilityString.isNullOrEmpty(barcodeProd)) { if (!UtilityString.isNullOrEmpty(ean128Model.Gtin) || !UtilityString.isNullOrEmpty(ean128Model.Content)) { - this.loadArticolo(barcodeProd, ean128Model, progressDialog); + this.loadArticolo(barcodeProd, ean128Model); } else { DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); }); } @@ -285,18 +304,19 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { //EAN 128 non completo o comunque mancano i riferimenti al prodotto DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); }); } }, ex -> { - UtilityExceptions.defaultException(context, ex, progressDialog); + closeProgress(); + UtilityExceptions.defaultException(context, ex); BarcodeManager.enable(); }); } - private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Dialog progressDialog) { + private void loadArticolo(String barcodeProd, Ean128Model ean128Model) { if (barcodeProd.length() == 14) { barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); } @@ -310,19 +330,20 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { this.searchArtInList(mtbAartList.get(0), ean128Model); BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); } else { DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); }); } }, ex -> { + closeProgress(); BarcodeManager.enable(); - UtilityExceptions.defaultException(context, ex, progressDialog); + UtilityExceptions.defaultException(context, ex); }); } @@ -364,5 +385,20 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { this.dismiss(); } + protected void openProgress() { + requireActivity().runOnUiThread(() -> { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + }); + } + protected void closeProgress() { + requireActivity().runOnUiThread(() -> { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + }); + } } From d13cdf63c259ccd674ca0173c551d830552662d1 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 8 Feb 2022 10:38:36 +0100 Subject: [PATCH 06/32] -> v1.23.1 (256) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4c0e579a..f6b20537 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 255 - def appVersionName = '1.23.0' + def appVersionCode = 256 + def appVersionName = '1.23.1' signingConfigs { release { From ecfb8faf01bb388653d9a58699432ee85f739654 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 8 Feb 2022 10:36:40 +0100 Subject: [PATCH 07/32] =?UTF-8?q?vg=20aggiunta=20possibilit=C3=A0=20di=20s?= =?UTF-8?q?elezionare=20il=20tipo=20pedana=20in=20accettazione=20e=20visul?= =?UTF-8?q?izzati=20dettagli=20peso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 12 ++ .../MainApplicationComponent.java | 38 +++++ .../AccettazionePickingActivity.java | 7 +- .../AccettazionePickingViewModel.java | 13 +- .../picking_resi/PickingResiActivity.java | 13 +- .../picking_resi/PickingResiViewModel.java | 12 +- ...odRientroMerceOrderDetailRESTConsumer.java | 16 +- ...roMerceOrderDetailRESTConsumerService.java | 4 +- .../InfoAggiuntiveLUDialog.java | 146 ++++++++++++++++++ .../InfoAggiuntiveLUDialogComponent.java | 15 ++ .../InfoAggiuntiveLUDialogModule.java | 15 ++ .../InfoAggiuntiveLUDialogViewModel.java | 71 +++++++++ .../input_lu_prod/DialogInputLUProdView.java | 24 ++- .../DialogInputQuantityV2View.java | 23 ++- .../DialogInputQuantityV2ViewModel.java | 28 ++-- .../NoteAggiuntiveLUDialog.java | 47 ------ .../dialog_input_quantity_v2.xml | 91 ++++++++++- .../bottom_sheet_fragment__lu_content.xml | 68 ++++++++ .../res/layout/dialog_input_quantity_v2.xml | 94 ++++++++++- .../dialog_note_aggiuntive_nuova_ul.xml | 34 +++- app/src/main/res/values-it/strings.xml | 3 +- app/src/main/res/values/strings.xml | 2 + 22 files changed, 659 insertions(+), 117 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 2850b67a..439f49c6 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,6 +1,18 @@ + + + + + + + + + + + + diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 60078c14..ba20830b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -63,6 +63,7 @@ import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.Dial import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule; +import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; @@ -114,42 +115,79 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr public interface MainApplicationComponent { SplashActivityComponent.Factory splashActivityComponent(); + LoginComponent.Factory loginActivityComponent(); + MainActivityComponent.Factory mainActivityComponent(); + MainFragmentComponent.Factory mainFragmentComponent(); + MainAccettazioneComponent.Factory mainAccettazioneComponent(); + ListaBancaliComponent.Factory listaBancaliComponent(); + ContenutoBancaleComponent.Factory contenutoBancaleComponent(); + PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); + PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); + PickingLiberoComponent.Factory pickingLiberoComponent(); + RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); + SpedizioneComponent.Factory spedizioneComponent(); + AccettazionePickingComponent.Factory accettazionePickingComponent(); + UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent(); + UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent(); + PickingResiComponent.Factory pickingResiComponent(); + OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); + DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); + DialogInputLUProdComponent.Factory dialogInputLUProdComponent(); + DialogScanArtComponent.Factory dialogScanArtComponent(); + DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent(); + ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent(); + VersamentoMerceComponent.Factory versamentoMerceComponent(); + DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent(); + DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent(); + DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent(); + ProdRientroMerceComponent.Factory prodRientroMerceComponent(); + ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent(); + ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent(); + ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent(); + ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent(); + DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent(); + DocInterniComponent.Factory docInterniComponent(); + DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent(); + DocInterniEditFormComponent.Factory docInterniEditFormComponent(); + InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent(); + void inject(MainApplication mainApplication); + void inject(AppContext mainApplication); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index 30dbcaf0..6857bda6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -41,6 +41,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; @@ -72,9 +73,9 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; -import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView; public class AccettazionePickingActivity extends BaseActivity implements AccettazionePickingViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener { @@ -791,9 +792,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta } @Override - public void onNoteAggiuntiveRequest(RunnableArgs onComplete) { + public void onInfoAggiuntiveRequest(RunnableArgss onComplete) { runOnUiThread(() -> { - NoteAggiuntiveLUDialog.make(this, onComplete).show(); + InfoAggiuntiveLUDialog.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index d72c941b..851d4979 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -34,6 +34,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -359,7 +360,7 @@ public class AccettazionePickingViewModel { } public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { - this.sendOnNoteAggiuntiveRequest(additionalNotes -> { + this.sendOnInfoAggiuntiveRequest((additionalNotes, tCol) -> { this.mGestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_POSIZIONE_COLLI_ACCETTAZIONE", defaultPosAccettazioneDTO -> { @@ -375,6 +376,10 @@ public class AccettazionePickingViewModel { .setPosizione(defaultPosAccettazione) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + if (tCol != null) { + mtbColt.setCodTcol(tCol.getCodTcol()); + } + if (customNumCollo != null) { mtbColt.setNumCollo(customNumCollo); } @@ -896,8 +901,8 @@ public class AccettazionePickingViewModel { if (this.mListener != null) this.mListener.onVersamentoAutomaticoULRequest(onComplete); } - private void sendOnNoteAggiuntiveRequest(RunnableArgs onComplete) { - if (this.mListener != null) this.mListener.onNoteAggiuntiveRequest(onComplete); + private void sendOnInfoAggiuntiveRequest(RunnableArgss onComplete) { + if (this.mListener != null) this.mListener.onInfoAggiuntiveRequest(onComplete); } private void sendError(Exception ex) { @@ -990,7 +995,7 @@ public class AccettazionePickingViewModel { void onVersamentoAutomaticoULRequest(RunnableArgs onComplete); - void onNoteAggiuntiveRequest(RunnableArgs onComplete); + void onInfoAggiuntiveRequest(RunnableArgss onComplete); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index 7607dec1..e78c5c2a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -33,6 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -42,18 +43,18 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding; +import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.picking_resi.ui.PickingResiListAdapter; import it.integry.integrywmsnative.gest.picking_resi.ui.PickingResiListModel; -import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; -import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener { @@ -276,15 +277,15 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag } @Override - public void onNoteAggiuntiveRequired(RunnableArgs onComplete) { - NoteAggiuntiveLUDialog.make(this, onComplete).show(); + public void onInfoAggiuntiveRequired(RunnableArgss onComplete) { + InfoAggiuntiveLUDialog.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); } @Override public void onError(Exception ex) { this.closeProgress(); - if(ex instanceof InvalidPesoKGException) { + if (ex instanceof InvalidPesoKGException) { UtilityToast.showToast(ex.getMessage()); } else { UtilityExceptions.defaultException(this, ex, mCurrentProgress); @@ -401,7 +402,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag null, R.string.button_ignore_print, onComplete) - .show(getSupportFragmentManager(), "tag"); + .show(getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index be32fd1e..1b762068 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -28,6 +28,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -161,11 +162,14 @@ public class PickingResiViewModel { this.sendOnLoadingEnded(); }); } else { - this.sendOnNoteAggiuntiveRequired(noteAggiuntive -> { + this.sendOnInfoAggiuntiveRequired((noteAggiuntive, tCol) -> { if (!UtilityString.isNullOrEmpty(noteAggiuntive)) { this.mCurrentMtbColt.setAnnotazioni(noteAggiuntive); } + if (tCol != null) { + this.mCurrentMtbColt.setCodTcol(tCol.getCodTcol()); + } this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> { @@ -717,8 +721,8 @@ public class PickingResiViewModel { return mPickingList; } - private void sendOnNoteAggiuntiveRequired(RunnableArgs onComplete) { - if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete); + private void sendOnInfoAggiuntiveRequired(RunnableArgss onComplete) { + if (this.mListener != null) this.mListener.onInfoAggiuntiveRequired(onComplete); } private void sendOnLoadingStarted() { @@ -795,7 +799,7 @@ public class PickingResiViewModel { public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { - void onNoteAggiuntiveRequired(RunnableArgs onComplete); + void onInfoAggiuntiveRequired(RunnableArgss onComplete); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java index 0db56157..752a7a33 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java @@ -80,7 +80,7 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { }.getType(); systemRESTConsumer.>processSql(mtbColtSql, mtbColtTypeOfObjectsList, mtbColtList -> { - if(mtbColtList == null) mtbColtList = new ArrayList<>(); + if (mtbColtList == null) mtbColtList = new ArrayList<>(); for (MtbColt mtbColt : mtbColtList) { @@ -108,23 +108,21 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { } - - public void importColloDaProduzione(ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { ProdRientroMerceOrderDetailRESTConsumerService service = RESTBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class); - service.importColloDaProduzione(importColliDaProduzioneRequestDTO).enqueue(new Callback>() { + service.importColloDaProduzione(importColliDaProduzioneRequestDTO).enqueue(new Callback>>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "importColliDaProduzione", mtbColt -> { - onComplete.run(mtbColt); + onComplete.run(mtbColt.get(0)); }, ex -> { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call>> call, Throwable t) { Logger.e(t, "importColliDaProduzione"); onFailed.run(new Exception(t)); } @@ -140,7 +138,7 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { analyzeAnswer(response, "deleteColloDaProduzione", mtbColt -> { onComplete.run(); }, ex -> { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java index 7943bae0..fbbf13da 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java @@ -13,10 +13,10 @@ public interface ProdRientroMerceOrderDetailRESTConsumerService { @POST("importColliDaProduzioneJson") - Call> importColliDaProduzione(@Body List importColliDaProduzioneRequestDTO); + Call>> importColliDaProduzione(@Body List importColliDaProduzioneRequestDTO); @POST("importColloDaProduzioneJson") - Call> importColloDaProduzione(@Body ImportColliDaProduzioneRequestDTO importColloDaProduzioneRequestDTO); + Call>> importColloDaProduzione(@Body ImportColliDaProduzioneRequestDTO importColloDaProduzioneRequestDTO); @POST("cancellaColloDaProduzione") Call> deleteColloDaProduzione(@Body MtbColt mtbColtToDelete); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java new file mode 100644 index 00000000..75155e02 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java @@ -0,0 +1,146 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.AdapterView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; + +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; + +import org.jetbrains.annotations.NotNull; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.core.utility.UtilityObservable; +import it.integry.integrywmsnative.databinding.DialogNoteAggiuntiveNuovaUlBinding; +import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloAdapter; +import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloListModel; + +public class InfoAggiuntiveLUDialog extends BaseDialogFragment implements InfoAggiuntiveLUDialogViewModel.Listener { + + @Inject + InfoAggiuntiveLUDialogViewModel mViewModel; + + private DialogNoteAggiuntiveNuovaUlBinding mBindings; + private final RunnableArgss mOnComplete; + + private DialogInputLUProdTipoColloAdapter codTcolArrayAdapter = null; + public ObservableField additionalNotes = new ObservableField<>(); + public ObservableField selectedMtbTcol = new ObservableField<>(); + public ObservableField currentMtbTCol = new ObservableField<>(); + + public static InfoAggiuntiveLUDialog newInstance(@NotNull RunnableArgss onComplete) { + return new InfoAggiuntiveLUDialog(onComplete); + } + + private InfoAggiuntiveLUDialog(@NotNull RunnableArgss onComplete) { + super(); + this.mOnComplete = onComplete; + + } + + + @Override + public void onStart() { + super.onStart(); + this.init(); + + UtilityDialog.setTo90PercentWidth(requireActivity(), this); + this.mViewModel.setListener(this); + this.mViewModel.init(); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_note_aggiuntive_nuova_ul, container, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .infoAggiuntiveLUDialogComponent() + .create() + .inject(this); + + mBindings.setView(this); + mBindings.setViewModel(this.mViewModel); + + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + getDialog().setCanceledOnTouchOutside(false); + getDialog().setCancelable(false); + getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + + return mBindings.getRoot(); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + if (mOnComplete != null) + mOnComplete.run(additionalNotes.get(), mViewModel.getInternalTipoPed()); + super.onDismiss(dialog); + } + + + private void init() { + + + UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> { + if (this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) { + Optional selectedItem = Stream.of(this.codTcolArrayAdapter.getDataset()) + .filter(x -> x.toString().equals(value)) + .findFirst(); + + if (selectedItem.isPresent()) { + currentMtbTCol.set(selectedItem.get()); + this.mViewModel.setInternalTipoPed(selectedItem.get().getOriginalModel()); + } + } + }); + + this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> { + + codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo); + mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); + + }); + + this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + currentMtbTCol.set(codTcolArrayAdapter.getItem(i)); + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + currentMtbTCol.set(null); + } + }); + + mBindings.buttonConfirm.setOnClickListener(v -> { + dismiss(); + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java new file mode 100644 index 00000000..e5f7969c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import dagger.Subcomponent; + +@Subcomponent +public interface InfoAggiuntiveLUDialogComponent { + + @Subcomponent.Factory + interface Factory { + InfoAggiuntiveLUDialogComponent create(); + } + + void inject(InfoAggiuntiveLUDialog infoAggiuntiveLUDialog); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java new file mode 100644 index 00000000..737399cc --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; + +@Module(subcomponents = InfoAggiuntiveLUDialogComponent.class) +public class InfoAggiuntiveLUDialogModule { + + @Provides + InfoAggiuntiveLUDialogViewModel providesInfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) { + return new InfoAggiuntiveLUDialogViewModel(magazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java new file mode 100644 index 00000000..369d591e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java @@ -0,0 +1,71 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; + +public class InfoAggiuntiveLUDialogViewModel { + + private final MutableLiveData> mTipiColloLiveData = new MutableLiveData<>(); + + private MtbTCol internalTipoPed; + + private Listener mListener; + + private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; + + @Inject + public InfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) { + this.mMagazzinoRESTConsumer = magazzinoRESTConsumer; + } + + public void init() { + new Thread(this::sendOnLoadingStarted).start(); + + mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> { + this.mTipiColloLiveData.postValue(tipiCollo); + this.sendOnLoadingEnded(); + }, this::sendError); + } + + public MutableLiveData> getTipiCollo() { + return this.mTipiColloLiveData; + } + + public void setInternalTipoPed(MtbTCol internalTipoPed) { + this.internalTipoPed = internalTipoPed; + } + + + public MtbTCol getInternalTipoPed() { + return internalTipoPed; + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + public void setListener(Listener listener) { + this.mListener = listener; + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java index 9b6c620b..1c72ce25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java @@ -100,7 +100,6 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI } - @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -154,12 +153,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> { - if(this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) { + if (this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) { Optional selectedItem = Stream.of(this.codTcolArrayAdapter.getDataset()) .filter(x -> x.toString().equals(value)) .findFirst(); - if(selectedItem.isPresent()) { + if (selectedItem.isPresent()) { currentMtbTCol.set(selectedItem.get()); this.mViewModel.setInternalTipoPed(selectedItem.get().getOriginalModel()); } @@ -171,12 +170,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.selectedLineaProd, (value) -> { - if(this.lineeProdArrayAdapter != null && this.lineeProdArrayAdapter.getDataset() != null) { + if (this.lineeProdArrayAdapter != null && this.lineeProdArrayAdapter.getDataset() != null) { Optional selectedItem = Stream.of(this.lineeProdArrayAdapter.getDataset()) .filter(x -> x.toString().equals(value)) .findFirst(); - if(selectedItem.isPresent()) { + if (selectedItem.isPresent()) { currentLineaProd.set(selectedItem.get()); this.mViewModel.setInternalLineaProd(selectedItem.get().getOriginalModel()); } @@ -196,7 +195,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.currentPesoNetto, (value) -> { - if(value != null) { + if (value != null) { this.currentPesoNetto.set(value.setScale(0, RoundingMode.HALF_UP)); } if (this.mEnableDataCallback) { @@ -217,7 +216,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.currentPesoLordo, (value) -> { - if(value != null) { + if (value != null) { this.currentPesoLordo.set(value.setScale(0, RoundingMode.HALF_UP)); } if (this.mEnableDataCallback) { @@ -322,12 +321,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo); mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); - if(mDialogInputLUProdDTO.getCodTcol() != null) { + if (mDialogInputLUProdDTO.getCodTcol() != null) { Optional optTCol = Stream.of(tipiCollo) .filter(x -> x.getCodTcol().equalsIgnoreCase(mDialogInputLUProdDTO.getCodTcol())) .findFirst(); - if(optTCol.isPresent()) + if (optTCol.isPresent()) selectedMtbTcol.set(new DialogInputLUProdTipoColloListModel().setOriginalModel(optTCol.get()).toString()); } @@ -341,12 +340,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI lineeProdArrayAdapter = new DialogInputLULineeProdAdapter(getActivity(), R.layout.array_adapter_single_item, lineeProd); mBindings.filledExposedDropdownCodJfas.setAdapter(lineeProdArrayAdapter); - if(mDialogInputLUProdDTO.getSuggestedCodJfas() != null) { + if (mDialogInputLUProdDTO.getSuggestedCodJfas() != null) { Optional optFas = Stream.of(lineeProd) .filter(x -> x.getCodJfas().equalsIgnoreCase(mDialogInputLUProdDTO.getSuggestedCodJfas())) .findFirst(); - if(optFas.isPresent()) + if (optFas.isPresent()) selectedLineaProd.set(new DialogInputLULineeProdListModel().setOriginalModel(optFas.get()).toString()); } }); @@ -372,9 +371,6 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI } - - - public void resetValues() { this.mViewModel.blockedNumCnf.set(false); this.mViewModel.blockedPesoLordo.set(false); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 6c9073f1..7c3b3e8f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -3,8 +3,6 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import android.content.Context; import android.content.DialogInterface; import android.content.res.ColorStateList; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.text.Html; import android.text.InputType; @@ -12,9 +10,7 @@ import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import android.view.inputmethod.EditorInfo; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -42,10 +38,10 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -67,9 +63,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public ObservableField currentQtaCnf = new ObservableField<>(); public ObservableField currentQtaTot = new ObservableField<>(); + public ObservableField currentTaraTot = new ObservableField<>(); + public ObservableField currentTaraArticolo = new ObservableField<>(); + public ObservableField currentPesoLordo = new ObservableField<>(); + public ObservableField enabledNumCnf = new ObservableField<>(true); public ObservableField enabledQtaCnf = new ObservableField<>(true); public ObservableField enabledQtaTot = new ObservableField<>(true); + public ObservableField enabledPesoLordo = new ObservableField<>(false); public ObservableField enabledChangePartitaMag = new ObservableField<>(true); public ObservableField enabledNotes = new ObservableField<>(false); @@ -144,7 +145,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } - if (mDialogInputQuantityV2DTO.isSaveOnImeDone()){ + if (mDialogInputQuantityV2DTO.isSaveOnImeDone()) { mBindings.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_DONE) { @@ -206,6 +207,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } private void init() { + UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> { if (this.mEnableDataCallback) { this.mViewModel.setPartitaMag(value); @@ -351,6 +353,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mViewModel.shouldAskDataScad = this.mDialogInputQuantityV2DTO.isDataScadMandatory(); this.enabledNotes.set(this.mDialogInputQuantityV2DTO.isNotesAllowed()); this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); + this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); } @@ -376,11 +379,17 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.currentPartitaMag.set(this.mViewModel.getPartitaMag()); this.currentNotes.set(this.mViewModel.getNote()); this.currentDataScad.set(this.mViewModel.getDataScad()); - this.currentNumCnf.set(this.mViewModel.getNumCnf()); this.currentQtaCnf.set(this.mViewModel.getQtaCnf()); this.currentQtaTot.set(this.mViewModel.getQtaTot()); + MtbAart articolo = this.mViewModel.getMtbAart(); + if (articolo != null && !articolo.isFlagQtaCnfFissaBoolean()) { + BigDecimal taraTot = this.mViewModel.getNumCnf().multiply(articolo.getTaraKg()); + this.currentTaraTot.set(taraTot); + this.currentPesoLordo.set(this.mViewModel.getQtaTot().add(taraTot)); + } + this.mBindings.executePendingBindings(); this.mEnableDataCallback = true; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index a696b4cc..0e486126 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -63,7 +63,7 @@ public class DialogInputQuantityV2ViewModel { private String internalNote; private Date internalDataScad; - private RunnableArgsWithReturn suggestPartitaMagRunnable; + private RunnableArgsWithReturn suggestPartitaMagRunnable; private boolean canOverflowOrderQuantity; private boolean canPartitaMagBeChanged; @@ -102,7 +102,7 @@ public class DialogInputQuantityV2ViewModel { this.internalQtaTot = totalQtaOrd; } - if (this.shouldAskDataScad == null){ + if (this.shouldAskDataScad == null) { this.shouldAskDataScad = mtbAart.get().isFlagTracciabilitaBoolean() && mtbAart.get().getGgScadPartita() != null && mtbAart.get().getGgScadPartita() > 0; } this.shouldShowDataScad = this.shouldAskDataScad || this.internalDataScad != null; @@ -151,7 +151,7 @@ public class DialogInputQuantityV2ViewModel { return; } - if(canPartitaMagBeChanged) { + if (canPartitaMagBeChanged) { if (!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { this.setPartitaMag(ean128Model.BatchLot); @@ -334,10 +334,11 @@ public class DialogInputQuantityV2ViewModel { this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); break; - case UPDATE_QTA_TOT:if (!this.blockedQtaTot.get() && this.internalQtaCnf != null) - this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); - else if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalQtaTot != null) - this.internalQtaCnf = UtilityBigDecimal.divide(internalQtaTot, newValue); + case UPDATE_QTA_TOT: + if (!this.blockedQtaTot.get() && this.internalQtaCnf != null) + this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); + else if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalQtaTot != null) + this.internalQtaCnf = UtilityBigDecimal.divide(internalQtaTot, newValue); break; } @@ -403,13 +404,13 @@ public class DialogInputQuantityV2ViewModel { return false; } else if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { - if (suggestPartitaMagRunnable != null){ + if (suggestPartitaMagRunnable != null) { internalPartitaMag = suggestPartitaMagRunnable.run(this); - if (internalPartitaMag == null){ + if (internalPartitaMag == null) { this.mListener.onError(new InvalidBatchLotException()); return false; } - }else{ + } else { this.mListener.onError(new InvalidBatchLotException()); return false; } @@ -480,11 +481,16 @@ public class DialogInputQuantityV2ViewModel { return this; } - public DialogInputQuantityV2ViewModel setSuggestPartitaMagRunnable(RunnableArgsWithReturn suggestPartitaMagRunnable) { + public DialogInputQuantityV2ViewModel setSuggestPartitaMagRunnable(RunnableArgsWithReturn suggestPartitaMagRunnable) { this.suggestPartitaMagRunnable = suggestPartitaMagRunnable; return this; } + + public MtbAart getMtbAart() { + return this.mtbAart.get(); + } + public interface Listener { void onDataChanged(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java deleted file mode 100644 index 01f390d5..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java +++ /dev/null @@ -1,47 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu; - -import android.app.Dialog; -import android.content.Context; - -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; - -import androidx.databinding.DataBindingUtil; -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDialog; -import it.integry.integrywmsnative.databinding.DialogNoteAggiuntiveNuovaUlBinding; - -public class NoteAggiuntiveLUDialog { - - private Dialog mDialog; - - public static Dialog make(Context context, final RunnableArgs onComplete) { - return new NoteAggiuntiveLUDialog(context, onComplete).mDialog; - } - - private NoteAggiuntiveLUDialog(Context context, final RunnableArgs onComplete){ - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - DialogNoteAggiuntiveNuovaUlBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_note_aggiuntive_nuova_ul, null, false); - - - mDialog = new Dialog(context); - mDialog.setContentView(bindings.getRoot()); - - mDialog.setCanceledOnTouchOutside(false); - mDialog.setCancelable(false); - mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - UtilityDialog.setTo90PercentWidth(context, mDialog); - - - bindings.buttonConfirm.setOnClickListener(v -> { - mDialog.dismiss(); - if(onComplete != null) onComplete.run(bindings.additionalNotesText.getText().toString()); - }); - - } - -} diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index a5bfb9f0..bda17d94 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -13,6 +13,10 @@ + + + + @@ -536,7 +540,89 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" - > + android:visibility="@{viewmodel.mtbAart.isFlagQtaCnfFissaBoolean() ? View.GONE : View.VISIBLE}" + android:weightSum="3"> + + + + + + + + + + + + + + + + + + + + + + + + android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"> + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 3846c6ce..43788fa8 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -2,8 +2,7 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -15,6 +14,10 @@ + + + + @@ -70,6 +73,7 @@ android:text="@{viewmodel.mtbAart.codMart}" android:textColor="@color/colorPrimary" tools:text="COD MART (Partita mag)" /> + + android:visibility="@{viewmodel.mtbAart.isFlagQtaCnfFissaBoolean() ? View.GONE : View.VISIBLE}" + android:weightSum="3"> + + + + + + + + + + + + + + + + + + + + + + + + android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"> + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/input_cod_tcol"> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ea39924b..918e91e7 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -117,7 +117,6 @@ Pezzo - deve essere tra 3 e 30 caratteri inserire un username valido inserire un codice azienda valido @@ -137,6 +136,7 @@ Qtà Peso netto (KG) Peso lordo (KG) + Peso Collo (KG) Tipo pedana Totale ordinato @@ -158,6 +158,7 @@ Peso totale Tara pedana Tara collo + Tara articolo Salvataggio Salvataggio completato diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cef9b618..a48cef4c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -134,6 +134,7 @@ Qty Net weight (KG) Gross weight (KG) + LU weight (KG) LU type Total ordered @@ -156,6 +157,7 @@ Qty x pck Tot qty Tare LU + Tare product Tare pckg Saving From 52092e7e9c3e00dd90ecdc25494cc3a035917526 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 8 Feb 2022 18:17:24 +0100 Subject: [PATCH 08/32] GRAMM visualizzato peso articolo --- .../integrywmsnative/core/model/MtbColt.java | 29 +++++++++++------- .../AccettazionePickingViewModel.java | 1 + .../picking_resi/PickingResiViewModel.java | 2 ++ .../BottomSheetFragmentLUContentView.java | 7 +++-- ...BottomSheetFragmentLUContentViewModel.java | 30 ++++++++++++++++++- .../bottom_sheet_fragment__lu_content.xml | 23 ++++++++++---- 6 files changed, 72 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index bab4b01c..54ab7855 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -57,6 +57,7 @@ public class MtbColt extends EntityBase { private String codJcom; private List mtbCols; + private MtbTCol mtbTCol; private Boolean disablePrint; private String ragSocCliente; @@ -83,7 +84,6 @@ public class MtbColt extends EntityBase { } - private ObservableArrayList mtbColr = new ObservableArrayList<>(); public ObservableArrayList getMtbColr() { @@ -95,12 +95,12 @@ public class MtbColt extends EntityBase { return this; } - public MtbColt(){ + public MtbColt() { type = "mtb_colt"; setDataCollo(UtilityDate.getDateInstance()); setSerCollo("/"); - if(SettingsManager.i().isUserLoggedIn()) { + if (SettingsManager.i().isUserLoggedIn()) { setPreparatoDa(SettingsManager.i().getUser().getFullname()); } } @@ -137,11 +137,11 @@ public class MtbColt extends EntityBase { Date dataColloD = null; try { dataColloD = getDataColloD(); - } catch (Exception ex){ + } catch (Exception ex) { UtilityLogger.errorMe(ex); } - if(dataColloD != null){ + if (dataColloD != null) { return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN_LONG); } else return null; } @@ -392,7 +392,7 @@ public class MtbColt extends EntityBase { public String getTimeVers() { Date dataColloD = getDataVersD(); - if(dataColloD != null){ + if (dataColloD != null) { return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.TIME); } else return null; } @@ -526,6 +526,15 @@ public class MtbColt extends EntityBase { return this; } + public MtbTCol getMtbTCol() { + return mtbTCol; + } + + public MtbColt setMtbTCol(MtbTCol mtbTCol) { + this.mtbTCol = mtbTCol; + return this; + } + public void generaFiltroOrdineFromDTO(List filtroOrdineDtos) { String xmlPrefix = "{\"whereCond\": \""; @@ -533,9 +542,9 @@ public class MtbColt extends EntityBase { StringBuilder whereCond = new StringBuilder(); - if(filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) { + if (filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) { - for(int i = 0; i < filtroOrdineDtos.size(); i++){ + for (int i = 0; i < filtroOrdineDtos.size(); i++) { FiltroOrdineDTO x = filtroOrdineDtos.get(i); try { @@ -545,13 +554,13 @@ public class MtbColt extends EntityBase { UtilityDB.valueToString(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)), UtilityDB.valueToString(x.getNumOrd()))); - if(!UtilityString.isNullOrEmpty(x.getDataConsS())) { + if (!UtilityString.isNullOrEmpty(x.getDataConsS())) { whereCond.append(String.format(" AND dr.dc = %s", UtilityDB.valueToString(UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)))); } whereCond.append(")"); - if(i < filtroOrdineDtos.size()-1) { + if (i < filtroOrdineDtos.size() - 1) { whereCond.append(" OR "); } } catch (Exception e) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index 851d4979..d4bc5649 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -378,6 +378,7 @@ public class AccettazionePickingViewModel { if (tCol != null) { mtbColt.setCodTcol(tCol.getCodTcol()); + mtbColt.setMtbTCol(tCol); } if (customNumCollo != null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index 1b762068..d52ac0a8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -169,6 +169,8 @@ public class PickingResiViewModel { } if (tCol != null) { this.mCurrentMtbColt.setCodTcol(tCol.getCodTcol()); + this.mCurrentMtbColt.setMtbTCol(tCol); + } this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java index fa959fbc..54514c3e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java @@ -79,7 +79,7 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie public void onPropertyChanged(Observable sender, int propertyId) { var mtbColt = mViewModel.getObservableMtbColt().get(); - if(mtbColt != null) { + if (mtbColt != null) { initAdapter(); onMtbColrItemChanged(); @@ -101,6 +101,7 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie List mtbColrs = mViewModel.getObservableMtbColt().get().getMtbColr(); mBinding.textviewArtCounter.setText(String.valueOf(mtbColrs.size())); mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size())); + mViewModel.calcPesi(); } public BottomSheetFragmentLUContentView setListener(Listener listener) { @@ -131,12 +132,12 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie @Override public void onMtbColrEdit(MtbColr mtbColr) { - if(mListener != null) this.mListener.onMtbColrEdit(mtbColr); + if (mListener != null) this.mListener.onMtbColrEdit(mtbColr); } @Override public void onMtbColrDelete(MtbColr mtbColr) { - if(mListener != null) this.mListener.onMtbColrDelete(mtbColr); + if (mListener != null) this.mListener.onMtbColrDelete(mtbColr); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java index 9a99aa4c..9996722b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java @@ -2,16 +2,24 @@ package it.integry.integrywmsnative.view.bottom_sheet__lu_content; import androidx.databinding.ObservableField; +import java.math.BigDecimal; +import java.math.RoundingMode; + +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; public class BottomSheetFragmentLUContentViewModel { public ObservableField mtbColt = new ObservableField<>(); + public ObservableField pesoKg = new ObservableField<>(); + public ObservableField pesoNettoKg = new ObservableField<>(); private Listener mListener; private MtbColrListener mMtbColrListener; public void closeCurrentLU() { - if(this.mListener != null) this.mListener.onBottomSheetLUClose(); + if (this.mListener != null) this.mListener.onBottomSheetLUClose(); } public BottomSheetFragmentLUContentViewModel setMtbColt(MtbColt mtbColt) { @@ -33,6 +41,26 @@ public class BottomSheetFragmentLUContentViewModel { return this; } + public void calcPesi() { + MtbColt collo = this.mtbColt.get(); + if (collo != null) { + MtbTCol tipoPedana = collo.getMtbTCol(); + BigDecimal taraPedana = tipoPedana != null ? tipoPedana.getTaraKg() : BigDecimal.ZERO; + BigDecimal pesoNetto = BigDecimal.ZERO; + for (MtbColr mtbColr : collo.getMtbColr()) { + MtbAart articolo = mtbColr.getMtbAart(); + if (articolo != null) { + BigDecimal pesoRiga = articolo.isFlagQtaCnfFissaBoolean() ? mtbColr.getNumCnf().multiply(articolo.getPesoKg()) : mtbColr.getQtaCol(); + BigDecimal pesoTara = articolo.getTaraKg().multiply(mtbColr.getNumCnf()); + pesoRiga = pesoRiga.add(pesoTara); + pesoNetto = pesoNetto.add(pesoRiga); + } + } + this.pesoNettoKg.set(pesoNetto.setScale(2, RoundingMode.CEILING).toString()); + this.pesoKg.set(pesoNetto.add(taraPedana).setScale(2, RoundingMode.CEILING).toString()); + } + } + public interface Listener { void onBottomSheetLUClose(); } diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml index 18452107..3b26ec5e 100644 --- a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml +++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml @@ -7,6 +7,11 @@ + + + + + @@ -262,7 +267,8 @@ + android:layout_height="wrap_content" + android:visibility="@{UtilityString.isNullOrEmpty(viewModel.mtbColt.posizione) ? View.GONE : View.VISIBLE}"> + android:layout_height="wrap_content" + android:visibility="@{UtilityString.isNullOrEmpty(viewModel.mtbColt.ragSocCliente) ? View.GONE : View.VISIBLE}" + + > + android:layout_height="wrap_content" + android:visibility="@{UtilityString.isNullOrEmpty(viewModel.pesoNettoKg) ? View.GONE : View.VISIBLE}"> + android:layout_height="wrap_content" + android:visibility="@{UtilityString.isNullOrEmpty(viewModel.pesoKg)? View.GONE : View.VISIBLE}"> Date: Mon, 14 Feb 2022 11:37:24 +0100 Subject: [PATCH 09/32] aggiunto controllo data scadenza nascosta input tipo collo in accettazione se non ci sono tipi collo configurati --- .idea/deploymentTargetDropDown.xml | 12 ---------- .../InfoAggiuntiveLUDialogViewModel.java | 7 +++--- .../DialogInputQuantityV2View.java | 22 ++++++++++++++++++- .../dialog_note_aggiuntive_nuova_ul.xml | 3 +++ 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 439f49c6..2850b67a 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,18 +1,6 @@ - - - - - - - - - - - - diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java index 369d591e..715ee8bb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java @@ -12,7 +12,7 @@ import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; public class InfoAggiuntiveLUDialogViewModel { - private final MutableLiveData> mTipiColloLiveData = new MutableLiveData<>(); + public final MutableLiveData> tipiCollo = new MutableLiveData<>(); private MtbTCol internalTipoPed; @@ -29,15 +29,16 @@ public class InfoAggiuntiveLUDialogViewModel { new Thread(this::sendOnLoadingStarted).start(); mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> { - this.mTipiColloLiveData.postValue(tipiCollo); + this.tipiCollo.postValue(tipiCollo); this.sendOnLoadingEnded(); }, this::sendError); } public MutableLiveData> getTipiCollo() { - return this.mTipiColloLiveData; + return this.tipiCollo; } + public void setInternalTipoPed(MtbTCol internalTipoPed) { this.internalTipoPed = internalTipoPed; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 7c3b3e8f..171cedc6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -26,6 +26,7 @@ import com.pedromassango.doubleclick.DoubleClickListener; import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; +import java.util.Calendar; import java.util.Date; import javax.inject.Inject; @@ -222,7 +223,26 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> { if (this.mEnableDataCallback) { - this.mViewModel.setDataScad(value); + MtbAart mtbAart = this.mViewModel.getMtbAart(); + if (value != null && mtbAart != null && mtbAart.getGgScadPartita() != null && mtbAart.getGgScadPartita() > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, mtbAart.getGgScadPartita()); + Date minDataScad = calendar.getTime(); + if (minDataScad.after(value) && value.after(new Date())) { + DialogSimpleMessageView + .makeWarningDialog(new SpannableString("La data selezionata è precedente alla data di scadenza consigliata per l'articolo scelto ( " + mtbAart.getGgScadPartita() + " giorni) . Continuare?"), null, () -> { + this.mViewModel.setDataScad(value); + }, () -> { + this.currentDataScad.set(null); + }) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } else { + this.mViewModel.setDataScad(value); + } + } else { + this.mViewModel.setDataScad(value); + } + } }); diff --git a/app/src/main/res/layout/dialog_note_aggiuntive_nuova_ul.xml b/app/src/main/res/layout/dialog_note_aggiuntive_nuova_ul.xml index 0e879324..a542f304 100644 --- a/app/src/main/res/layout/dialog_note_aggiuntive_nuova_ul.xml +++ b/app/src/main/res/layout/dialog_note_aggiuntive_nuova_ul.xml @@ -13,6 +13,8 @@ name="mContext" type="android.content.Context" /> + + @@ -68,6 +70,7 @@ android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@id/title_text" app:layout_constraintBottom_toTopOf="@id/level_number_layout" + android:visibility="@{viewModel.tipiCollo.empty ? View.GONE : View.VISIBLE}" android:hint="@string/lu_type"> Date: Mon, 14 Feb 2022 12:17:34 +0100 Subject: [PATCH 10/32] Update AGP 7.1.1 --- app/build.gradle | 17 ++++++++++------- app/src/main/AndroidManifest.xml | 6 ++++-- .../core/utility/UtilityNumber.java | 2 -- .../picking_libero/PickingLiberoViewModel.java | 6 +++++- barcode_base_android_library/build.gradle | 6 +++--- build.gradle | 2 +- dynamic__base/build.gradle | 2 +- dynamic_vgalimenti/build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- honeywellscannerlibrary/build.gradle | 6 +++--- keyobardemulatorscannerlibrary/build.gradle | 6 +++--- pointmobilescannerlibrary/build.gradle | 6 +++--- .../src/main/AndroidManifest.xml | 3 ++- zebrascannerlibrary/build.gradle | 6 +++--- 14 files changed, 41 insertions(+), 33 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f6b20537..92451ce2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,9 @@ apply plugin: 'com.android.application' -apply plugin: 'com.google.firebase.firebase-perf' + +if (!project.hasProperty("disable-performance-plugin")) { + apply plugin: 'com.google.firebase.firebase-perf' +} + apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' @@ -27,12 +31,12 @@ android { } } - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { applicationId "it.integry.integrywmsnative" minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 versionCode appVersionCode versionName appVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -94,16 +98,15 @@ dependencies { //Firebase // Import the Firebase BoM - implementation platform('com.google.firebase:firebase-bom:26.3.0') + implementation platform('com.google.firebase:firebase-bom:29.1.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-core' - implementation 'com.google.firebase:firebase-crash' implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-perf' - implementation 'com.google.android.gms:play-services-basement:17.6.0' + implementation 'com.google.android.gms:play-services-basement:18.0.0' - implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index acf8fdef..a42b2eaf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,8 @@ + android:windowSoftInputMode="adjustNothing" + android:exported="true"> @@ -73,7 +74,8 @@ + android:theme="@style/SplashTheme" + android:exported="true"> diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java index a36929e9..085b1a09 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java @@ -1,7 +1,5 @@ package it.integry.integrywmsnative.core.utility; -import com.google.android.gms.common.internal.service.Common; - import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 0c5a4e7b..ba319efc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -99,6 +99,7 @@ public class PickingLiberoViewModel { } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) { //Cerco tramite etichetta un collo in posizione mono ul this.executeEtichettaPosizione(barcodeScanDTO, onComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { //Cerco tramite etichetta ean 128 (che può indicarmi una UL) this.executeEtichettaEan128(barcodeScanDTO, onComplete); @@ -208,11 +209,14 @@ public class PickingLiberoViewModel { if (mtbAartList != null && mtbAartList.size() > 0) { MtbAart articolo = mtbAartList.get(0); MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); + if (posizione != null && posizione.isFlagMonoCollo()) { this.executePosizione(posizione, articolo, onComplete); - } else { + } else if(mDefaultGestione == GestioneEnum.VENDITA){ this.dispatchArt(articolo, ean128Model); onComplete.run(); + } else { + this.sendError(new NoResultFromBarcodeException()); } } else { diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 68c46eb4..82f65226 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -32,7 +32,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/build.gradle b/build.gradle index 94b01d9c..1f4c2c03 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' + classpath 'com.android.tools.build:gradle:7.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:perf-plugin:1.3.5' diff --git a/dynamic__base/build.gradle b/dynamic__base/build.gradle index 2edefc68..e3f751bf 100644 --- a/dynamic__base/build.gradle +++ b/dynamic__base/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 diff --git a/dynamic_vgalimenti/build.gradle b/dynamic_vgalimenti/build.gradle index db6c8f05..74caf549 100644 --- a/dynamic_vgalimenti/build.gradle +++ b/dynamic_vgalimenti/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 } @@ -18,5 +18,5 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(':app') - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index abc62726..78eb53b7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index d259f2d0..48543a16 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -32,7 +32,7 @@ dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation project(":honeywellsdk") - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index cfae7fc2..57f18f1d 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -31,7 +31,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index aacf18eb..51b0f771 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -29,7 +29,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/pointmobilescannerlibrary/src/main/AndroidManifest.xml b/pointmobilescannerlibrary/src/main/AndroidManifest.xml index 6e9286be..e20b179e 100644 --- a/pointmobilescannerlibrary/src/main/AndroidManifest.xml +++ b/pointmobilescannerlibrary/src/main/AndroidManifest.xml @@ -14,7 +14,8 @@ android:name="it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader$ScanResultReceiver" android:enabled="true" android:permission="it.integry.pointmobilescannerlibrary.permission.SCANNER_RESULT_RECEIVER" - android:priority="0" > + android:priority="0" + android:exported="true"> diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index 828bde64..c77b13fc 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -31,7 +31,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { From 47f29899a2cb8ba1cfa64ec8da9b93d392444c09 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 14 Feb 2022 12:43:45 +0100 Subject: [PATCH 11/32] Aggiornate librerie google --- app/build.gradle | 15 +++++++-------- build.gradle | 9 +++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 92451ce2..67272454 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -108,22 +108,22 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' - implementation 'androidx.preference:preference-ktx:1.1.1' + implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.annimon:stream:1.2.2' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' - implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1' + implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.1' implementation 'org.apache.commons:commons-text:1.9' //MVVM - def dagger2_version = '2.35.1' + def dagger2_version = '2.40' api "com.google.dagger:dagger:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version" @@ -143,7 +143,7 @@ dependencies { implementation 'com.github.pedromassango:doubleClick:3.0' //SQLite ROOM - def room_version = "2.3.0" + def room_version = "2.4.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" @@ -162,7 +162,6 @@ dependencies { implementation 'com.github.RaviKoradiya:LiveAdapter:1.3.4' - implementation 'org.reflections:reflections:0.10.2' } repositories { diff --git a/build.gradle b/build.gradle index 1f4c2c03..95264602 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext { - kotlin_version = '1.5.21' + kotlin_version = '1.6.10' } repositories { @@ -12,11 +12,12 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.3.5' - classpath 'com.google.firebase:perf-plugin:1.3.5' + classpath 'com.google.gms:google-services:4.3.10' + + classpath 'com.google.firebase:perf-plugin:1.4.1' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2' + classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From 692a350128b296e06c5a64c5d53f3f912c38ad83 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 14 Feb 2022 15:44:50 +0100 Subject: [PATCH 12/32] Aggiunta ricerca barcode articolo con conversione da 8 a 13 caratteri --- .../DocInterniEditFormViewModel.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index b4580b87..6be6f11a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -4,6 +4,8 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; +import org.apache.commons.lang3.StringUtils; + import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -68,8 +70,8 @@ public class DocInterniEditFormViewModel { } - public void editRow(SqlMtbColr row,boolean flagTracciabilita) { - this.listener.onEditRowRequest(row,flagTracciabilita); + public void editRow(SqlMtbColr row, boolean flagTracciabilita) { + this.listener.onEditRowRequest(row, flagTracciabilita); } private Integer getNextIdRiga() { @@ -91,7 +93,8 @@ public class DocInterniEditFormViewModel { }, this::sendError); }, this::sendError); } -public void deleteDocument() { + + public void deleteDocument() { this.sendOnLoadingStarted(); docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> { SqlMtbColt document = this.getDocument(); @@ -117,7 +120,7 @@ public void deleteDocument() { } SqlMtbColr row = this.getRowForArticolo(articolo); this.sendOnLoadingEnded(); - this.editRow(row,articolo.getFlagTracciabilita().equalsIgnoreCase("S")); + this.editRow(row, articolo.getFlagTracciabilita().equalsIgnoreCase("S")); } @@ -148,7 +151,12 @@ public void deleteDocument() { } private GrigliaAcquistiChildDTO searchArticolo(String filter) { - return Stream.of(this.productsList).filter(dto -> filter.equalsIgnoreCase(dto.getCodMart()) || filter.equalsIgnoreCase(dto.getBarcode())).findFirstOrElse(null); + return Stream.of(this.productsList).filter(dto -> + filter.equalsIgnoreCase(dto.getCodMart()) + || filter.equalsIgnoreCase(dto.getBarcode()) + || StringUtils.leftPad(filter, 13, '0').equalsIgnoreCase(dto.getCodMart()) + || StringUtils.leftPad(filter, 13, '0').equalsIgnoreCase(dto.getBarcode()) + ).findFirstOrElse(null); } private SaveDTO getSaveDto() { @@ -251,7 +259,7 @@ public void deleteDocument() { } public GrigliaAcquistiChildDTO getArticoloByCodMart(String codMart) { - return Stream.of(productsList).filter(prod->prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null); + return Stream.of(productsList).filter(prod -> prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null); } public interface Listener extends ILoadingListener { @@ -260,7 +268,7 @@ public void deleteDocument() { void onRowsChanged(List rows); - void onEditRowRequest(SqlMtbColr row,boolean flagTracciabilita); + void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita); void onDocumentHoldRequest(); From fc1681d111d955503def97811d11f9c6dba25b56 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 14 Feb 2022 17:18:35 +0100 Subject: [PATCH 13/32] =?UTF-8?q?Implementato=20messaggio=20info=20extra?= =?UTF-8?q?=20in=20DialogInputQuantity=20(attualmente=20mostra=20un=20test?= =?UTF-8?q?o=20Human=20Readable=20delle=20quantit=C3=A0=20da=20prelevare).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DialogInputQuantityV2View.java | 25 ++-- .../dialog_input_quantity_v2.xml | 102 ++++++++++++++-- .../res/layout/dialog_input_quantity_v2.xml | 110 ++++++++++++++++-- app/src/main/res/values-it/strings.xml | 4 +- app/src/main/res/values/colors.xml | 3 + 5 files changed, 216 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 171cedc6..3dbac6b5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -52,9 +52,12 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Inject DialogInputQuantityV2ViewModel mViewModel; - private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; - private RunnableArgss mOnComplete; - private Runnable mOnAbort; + private final DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; + private final RunnableArgss mOnComplete; + private final Runnable mOnAbort; + + public ObservableField currentTextNumCnfToTake = new ObservableField<>(0); + public ObservableField currentTextNumPezziToTake = new ObservableField<>(0); public ObservableField currentPartitaMag = new ObservableField<>(); public ObservableField currentNotes = new ObservableField<>(); @@ -215,12 +218,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } }); - UtilityObservable.addPropertyChanged(this.currentNotes, (value) -> { - if (this.mEnableDataCallback) { - this.mViewModel.setNote(value); - } - }); - UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> { if (this.mEnableDataCallback) { MtbAart mtbAart = this.mViewModel.getMtbAart(); @@ -246,6 +243,12 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } }); + UtilityObservable.addPropertyChanged(this.currentNotes, (value) -> { + if (this.mEnableDataCallback) { + this.mViewModel.setNote(value); + } + }); + UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> { if (this.mEnableDataCallback) { this.mViewModel.setNumCnf(value); @@ -374,6 +377,10 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.enabledNotes.set(this.mDialogInputQuantityV2DTO.isNotesAllowed()); this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); + + this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue()); + int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue(); + this.currentTextNumPezziToTake.set(qtaText); } diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index bda17d94..688eaf0e 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -31,10 +31,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" + android:background="@android:color/white" android:orientation="vertical" app:cardCornerRadius="12dp" - app:cardElevation="0dp" - android:background="@android:color/white"> + app:cardElevation="0dp"> + + + + + + + + + + + + + + + + + + + + + + @@ -557,12 +645,12 @@ @@ -580,13 +668,13 @@ @@ -609,8 +697,8 @@ android:layout_height="wrap_content" android:hint="@string/LU_weight" android:inputType="number" - android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }" android:textColor="@{ContextCompat.getColor(context, view.enabledQtaCnf ? android.R.color.black : R.color.gray_400)}" + android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }" app:binding="@{view.currentPesoLordo}" /> diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 43788fa8..6f0683a7 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -75,15 +75,15 @@ tools:text="COD MART (Partita mag)" /> @@ -195,6 +195,95 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -518,9 +607,9 @@ android:layout_height="wrap_content" android:hint="@string/qty_x_pck" android:imeOptions="actionDone" - android:selectAllOnFocus="true" - android:nextFocusForward="@+id/input_qta_tot_text" android:inputType="numberDecimal" + android:nextFocusForward="@+id/input_qta_tot_text" + android:selectAllOnFocus="true" app:binding="@{view.currentQtaCnf}" /> @@ -574,12 +663,12 @@ @@ -597,13 +686,13 @@ @@ -617,6 +706,7 @@ android:enabled="@{view.enabledPesoLordo}" android:focusableInTouchMode="false" android:imeOptions="actionDone" + tools:enabled="false" tools:layout_weight="1"> pezzi - collo - colli + confezione + confezioni Unt mis col diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4959bd0d..f896ab54 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -46,6 +46,9 @@ #BBDEFB #64B5F6 + #42A5F5 + #2196F3 + #1E88E5 #1976D2 #1565C0 From 857295d92b4110221081a68f43c24d96341e5e6f Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 16 Feb 2022 13:00:10 +0100 Subject: [PATCH 14/32] corretta conversione date string da query --- .../rest/consumers/SystemRESTConsumer.java | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index 570bb413..1155243f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -5,9 +5,7 @@ import android.util.Log; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.orhanobut.logger.Logger; @@ -17,8 +15,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.lang.reflect.Type; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -35,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; @@ -55,18 +52,11 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "ProcessSql", o -> { Gson gson = new GsonBuilder() - .registerTypeAdapter(Date.class, new JsonDeserializer() { - @Override - public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - try { - return new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(json.getAsString()); - } catch (Exception e) { - try { - return new SimpleDateFormat().parse(json.getAsString()); - } catch (ParseException parseException) { - throw new JsonParseException(parseException); - } - } + .registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> { + try { + return UtilityDate.recognizeDate(json.getAsString()); + } catch (Exception e) { + throw new JsonParseException(e); } }) .create(); From ec5bee558c2400e9d09c02d09494b0c70f88d126 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 16 Feb 2022 13:01:25 +0100 Subject: [PATCH 15/32] -> v1.23.2 (257) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 67272454..a96a8246 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 256 - def appVersionName = '1.23.1' + def appVersionCode = 257 + def appVersionName = '1.23.2' signingConfigs { release { From f11a81ef05ed63bab9bcadb487547664898e2ccb Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 17 Feb 2022 11:42:27 +0100 Subject: [PATCH 16/32] gestita where cond in caso di filtro null --- .../core/rest/consumers/ArticoloRESTConsumer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index 23eda756..deadedff 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -83,7 +83,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { @Override public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "getByCodMart", (m) -> { - if(response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) { + if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) { onComplete.run(response.body().getEntityList().get(0)); } else onComplete.run(null); @@ -107,9 +107,10 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { }) .toList(); - var whereCond = " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap); + var whereCond = whereCondMap.isEmpty() ? "" : " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap); - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed); } From 8a1b3a1b001df5042bdbd5035f408d4e35bc9ed9 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 17 Feb 2022 11:43:04 +0100 Subject: [PATCH 17/32] aggiunto controllo sulla qta ordinata nulla per rettifica giacenze --- .../DialogInputQuantityV2View.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 3dbac6b5..1f2e7887 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -378,9 +378,16 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); - this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue()); - int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue(); - this.currentTextNumPezziToTake.set(qtaText); + if (this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null) { + this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue()); + int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue(); + this.currentTextNumPezziToTake.set(qtaText); + } else { + this.currentTextNumCnfToTake.set(0); + this.currentTextNumPezziToTake.set(0); + + } + } From 84cff70567fe05e7f854e908d7c5bf7fd7f561dd Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 17 Feb 2022 11:43:33 +0100 Subject: [PATCH 18/32] aggiunto controllo su testate ordini per approvvigionamento da lavorazione --- .../gest/spedizione/SpedizioneViewModel.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index ebb2c0a3..806a757d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1762,10 +1762,12 @@ public class SpedizioneViewModel { .filter(x -> !this.mColliRegistrati.contains(x)) .forEach(x -> this.mColliRegistrati.add(x)); - for (MtbColt mtbColt : mtbColtList) { - Stream.of(mTestateOrdini) - .filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum()) - .forEach(x -> x.setExistColloBoolean(true)); + if (mTestateOrdini != null) { + for (MtbColt mtbColt : mtbColtList) { + Stream.of(mTestateOrdini) + .filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum()) + .forEach(x -> x.setExistColloBoolean(true)); + } } if (mMtbColtSessionID != null) From f037617dd943f302c74cb7e88f84df37921ed304 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 17 Feb 2022 11:44:17 +0100 Subject: [PATCH 19/32] -> v1.23.3 (258) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a96a8246..8de5120d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 257 - def appVersionName = '1.23.2' + def appVersionCode = 258 + def appVersionName = '1.23.3' signingConfigs { release { From 837781389c21356b51cfa99d5f0c6af527405c8a Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 17 Feb 2022 13:09:37 +0100 Subject: [PATCH 20/32] aumentati a 5 i numero di decimali e aggiunto un controllo sulla qta ordinata per il suggerimento di prelievo --- .../main/java/it/integry/integrywmsnative/core/CommonConst.java | 2 +- .../dialogs/input_quantity_v2/DialogInputQuantityV2View.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java index 55a30e4c..bdfaa248 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java @@ -16,7 +16,7 @@ public class CommonConst { public static String DEFAULT_ANONYMOUS_UL_SERIE = "UL"; - public static int NUMBER_OF_DECIMAL_DIGITS = 3; + public static int NUMBER_OF_DECIMAL_DIGITS = 5; } public static class Files { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 1f2e7887..ad63bf94 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -378,7 +378,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); - if (this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null) { + if (this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null && !this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().equals(BigDecimal.ZERO) && !(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue() == 0)) { this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue()); int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue(); this.currentTextNumPezziToTake.set(qtaText); From a616cb60221811ec711d49259a7ffc4598925b5e Mon Sep 17 00:00:00 2001 From: ValerioC Date: Thu, 17 Feb 2022 13:10:38 +0100 Subject: [PATCH 21/32] -> v1.23.4 (259) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8de5120d..3739f44d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 258 - def appVersionName = '1.23.3' + def appVersionCode = 259 + def appVersionName = '1.23.4' signingConfigs { release { From b8dbde5ee1421e9cb12c47118d0c8247bb0ab81d Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 21 Feb 2022 10:29:25 +0100 Subject: [PATCH 22/32] Rimosso Coollection --- .../core/coollection/Coollection.java | 49 ---------- .../core/coollection/matcher/Matcher.java | 7 -- .../coollection/matcher/custom/Contains.java | 18 ---- .../coollection/matcher/custom/Equals.java | 18 ---- .../matcher/custom/EqualsIgnoreCase.java | 18 ---- .../matcher/custom/GreaterThan.java | 21 ----- .../coollection/matcher/custom/IsNull.java | 12 --- .../coollection/matcher/custom/LessThan.java | 21 ----- .../core/coollection/matcher/custom/Not.java | 18 ---- .../core/coollection/query/Query.java | 90 ------------------- .../coollection/query/criteria/Criteria.java | 34 ------- .../query/criteria/CriteriaList.java | 34 ------- .../core/coollection/query/order/Order.java | 5 -- .../query/order/OrderComparator.java | 30 ------- .../query/order/OrderCriteria.java | 24 ----- .../query/specification/Specification.java | 9 -- .../custom/AndSpecification.java | 13 --- .../specification/custom/OrSpecification.java | 14 --- .../core/coollection/reflection/Phanton.java | 37 -------- 19 files changed, 472 deletions(-) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java deleted file mode 100644 index 447fd58e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java +++ /dev/null @@ -1,49 +0,0 @@ -package it.integry.integrywmsnative.core.coollection; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; -import it.integry.integrywmsnative.core.coollection.matcher.custom.Contains; -import it.integry.integrywmsnative.core.coollection.matcher.custom.Equals; -import it.integry.integrywmsnative.core.coollection.matcher.custom.EqualsIgnoreCase; -import it.integry.integrywmsnative.core.coollection.matcher.custom.GreaterThan; -import it.integry.integrywmsnative.core.coollection.matcher.custom.IsNull; -import it.integry.integrywmsnative.core.coollection.matcher.custom.LessThan; -import it.integry.integrywmsnative.core.coollection.matcher.custom.Not; -import it.integry.integrywmsnative.core.coollection.query.Query; - -import java.util.Collection; - -public class Coollection { - - public static Query from(Collection collection) { - return new Query(collection); - } - - public static Matcher eq(Object value) { - return new Equals(value); - } - - public static Matcher contains(String value) { - return new Contains(value); - } - - public static Matcher eqIgnoreCase(String value) { - return new EqualsIgnoreCase(value); - } - - public static Matcher not(Matcher matcher) { - return new Not(matcher); - } - - public static Matcher greaterThan(Number value) { - return new GreaterThan(value); - } - - public static Matcher lessThan(Number value) { - return new LessThan(value); - } - - public static Matcher isNull() { - return new IsNull(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java deleted file mode 100644 index c2b41db2..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java +++ /dev/null @@ -1,7 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher; - -public interface Matcher { - - boolean match(Object value); - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java deleted file mode 100644 index e0d80ac7..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class Contains implements Matcher { - - private final String matcherValue; - - public Contains(String matcherValue) { - this.matcherValue = matcherValue; - } - - @Override - public boolean match(Object value) { - return String.valueOf(value).contains(matcherValue); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java deleted file mode 100644 index ca2cc6c1..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class Equals implements Matcher { - - private final Object value; - - public Equals(Object value) { - this.value = value; - } - - @Override - public boolean match(Object anotherValue) { - return value.equals(anotherValue); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java deleted file mode 100644 index 5c138c93..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class EqualsIgnoreCase implements Matcher { - - private final String value; - - public EqualsIgnoreCase(String value) { - this.value = value; - } - - @Override - public boolean match(Object anotherValue) { - return (value).equalsIgnoreCase((String) anotherValue); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java deleted file mode 100644 index 1414a9e0..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class GreaterThan implements Matcher { - - private final Number value; - - public GreaterThan(Number value) { - this.value = value; - } - - @Override - public boolean match(Object matchValue) { - if (matchValue == null) { - return false; - } - return ((Number) matchValue).doubleValue() > value.doubleValue(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java deleted file mode 100644 index f14151e5..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class IsNull implements Matcher { - - @Override - public boolean match(Object value) { - return value == null; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java deleted file mode 100644 index c9c3c99e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class LessThan implements Matcher { - - private final Number value; - - public LessThan(Number value) { - this.value = value; - } - - @Override - public boolean match(Object matchValue) { - if (matchValue == null) { - return false; - } - return ((Number) matchValue).doubleValue() < value.doubleValue(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java deleted file mode 100644 index dd76555f..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class Not implements Matcher { - - private final Matcher matcher; - - public Not(Matcher matcher) { - this.matcher = matcher; - } - - @Override - public boolean match(Object value) { - return !matcher.match(value); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java deleted file mode 100644 index e6220bea..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java +++ /dev/null @@ -1,90 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query; - - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; -import it.integry.integrywmsnative.core.coollection.query.criteria.CriteriaList; -import it.integry.integrywmsnative.core.coollection.query.order.Order; -import it.integry.integrywmsnative.core.coollection.query.order.OrderCriteria; -import it.integry.integrywmsnative.core.coollection.query.specification.custom.AndSpecification; -import it.integry.integrywmsnative.core.coollection.query.specification.custom.OrSpecification; - -public class Query { - - private final Collection collection; - private CriteriaList criterias; - private OrderCriteria orderCriteria; - - public Query(Collection collection) { - this.collection = collection; - criterias = new CriteriaList(); - } - - public Query where(String method, Matcher matcher) { - Criteria criteria = new Criteria(method, matcher); - criterias.add(criteria); - return this; - } - - public Query and(String method, Matcher matcher) { - Criteria criteria = new Criteria(method, matcher); - criteria.setSpecification(new AndSpecification()); - criterias.add(criteria); - return this; - } - - public Query or(String method, Matcher matcher) { - Criteria criteria = new Criteria(method, matcher); - criteria.setSpecification(new OrSpecification()); - criterias.add(criteria); - return this; - } - - public Query orderBy(String method, Order order) { - orderCriteria = new OrderCriteria(method, order); - return this; - } - - public Query orderBy(String method) { - return orderBy(method, Order.ASC); - } - - public List all() { - List all = new ArrayList(); - for (T item : collection) { - if (criterias.match(item)) { - all.add(item); - } - } - if (orderCriteria != null) { - all = orderCriteria.sort(all); - } - return all; - } - - public T first() { - List all = cloneCollection(collection); - if (orderCriteria != null) { - all = orderCriteria.sort(all); - } - for (T item : all) { - if (criterias.match(item)) { - return item; - } - } - return null; - } - - private List cloneCollection(Collection collection) { - List list = new ArrayList(); - for (T item : collection) { - list.add(item); - } - return list; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java deleted file mode 100644 index 027d232a..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java +++ /dev/null @@ -1,34 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.criteria; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; -import it.integry.integrywmsnative.core.coollection.query.specification.Specification; -import it.integry.integrywmsnative.core.coollection.reflection.Phanton; - -public class Criteria { - - private final String method; - private final Matcher matcher; - private Specification specification; - - public Criteria(String method, Matcher matcher) { - this.method = method; - this.matcher = matcher; - } - - public void setSpecification(Specification specification) { - this.specification = specification; - } - - public Specification specification() { - return specification; - } - - public boolean match(T item) { - try { - Object value = Phanton.from(item).call(method); - return matcher.match(value); - } catch (Exception err) { - throw new RuntimeException(err); - } - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java deleted file mode 100644 index e2f2f433..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java +++ /dev/null @@ -1,34 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.criteria; - -import java.util.ArrayList; -import java.util.List; - -public class CriteriaList { - - private List> criterias; - - public CriteriaList() { - criterias = new ArrayList>(); - } - - public void add(Criteria criteria) { - criterias.add(criteria); - } - - public boolean match(T item) { - if (criterias.size() == 0) { - return true; - } - if (criterias.size() == 1) { - return criterias.get(0).match(item); - } - boolean matched = true; - for (int i = criterias.size() - 1; i > 0; i--) { - Criteria one = criterias.get(i); - Criteria other = criterias.get(i - 1); - matched = matched && one.specification().match(item, one, other); - } - return matched; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java deleted file mode 100644 index 4ed8e86c..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java +++ /dev/null @@ -1,5 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.order; - -public enum Order { - ASC, DESC -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java deleted file mode 100644 index a4bc0e64..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java +++ /dev/null @@ -1,30 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.order; - -import it.integry.integrywmsnative.core.coollection.reflection.Phanton; - -import java.util.Comparator; - -public class OrderComparator implements Comparator { - - private final String method; - - public OrderComparator(String method) { - this.method = method; - } - - @Override - @SuppressWarnings("unchecked") - public int compare(T one, T other) { - Object oneValue = Phanton.from(one).call(method); - Object otherValue = Phanton.from(other).call(method); - if (oneValue == null || otherValue == null) { - return 0; - } - if (oneValue instanceof Comparable) { - return ((Comparable) oneValue).compareTo(otherValue); - } else { - return 0; - } - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java deleted file mode 100644 index a049dc1e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java +++ /dev/null @@ -1,24 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.order; - -import java.util.Collections; -import java.util.List; - -public class OrderCriteria { - - private final String method; - private final Order order; - - public OrderCriteria(String method, Order order) { - this.method = method; - this.order = order; - } - - public List sort(List list) { - Collections.sort(list, new OrderComparator(method)); - if (order == Order.DESC) { - Collections.reverse(list); - } - return list; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java deleted file mode 100644 index 719ea931..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java +++ /dev/null @@ -1,9 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.specification; - -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; - -public interface Specification { - - boolean match(T item, Criteria one, Criteria other); - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java deleted file mode 100644 index 6119df2d..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java +++ /dev/null @@ -1,13 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.specification.custom; - -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; -import it.integry.integrywmsnative.core.coollection.query.specification.Specification; - -public class AndSpecification implements Specification { - - @Override - public boolean match(T item, Criteria one, Criteria other) { - return one.match(item) && other.match(item); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java deleted file mode 100644 index 2b83db22..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.specification.custom; - -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; -import it.integry.integrywmsnative.core.coollection.query.specification.Specification; - -public class OrSpecification implements Specification { - - @Override - public boolean match(T item, Criteria one, Criteria other) { - return one.match(item) || other.match(item); - } - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java deleted file mode 100644 index 0c8cf9c9..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java +++ /dev/null @@ -1,37 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.reflection; - -import java.lang.reflect.Field; - -public class Phanton { - - private final T target; - private Class clazz; - - private Phanton(T target) { - this.target = target; - clazz = target.getClass(); - } - - public static Phanton from(T target) { - return new Phanton(target); - } - - public Object call(String name) { - return invoke(name); - } - - private Object invoke(String name) { - for (final Field field : clazz.getDeclaredFields()) { - try { - if (name.equals(field.getName())) { - field.setAccessible(Boolean.TRUE); - return field.get(target); - } - } catch (final IllegalAccessException e) { - throw new RuntimeException(e); - } - } - throw new RuntimeException("No such property with name " + name); - } - -} From 8e40092130ed49a5d50a8173543bbbe553392b43 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 21 Feb 2022 16:31:11 +0100 Subject: [PATCH 23/32] [CARELLI - ORDINI A] aggiunti automaticamente all'ordine gli articoli nuovi in griglia [CARELLI - DOC INTERNI] modificato controllo sul lotto per partire solo nei documenti richiesti (tramite setup) --- .../core/data_store/db/AppDatabase.java | 2 +- .../data_store/db/dao/ArticoloGrigliaDao.java | 7 +- .../data_store/db/entity/ArticoloGriglia.java | 12 + .../data_store/db/entity/ArticoloOrdine.java | 27 ++- .../repository/ArticoloGrigliaRepository.java | 2 + .../ArticoliGrigliaDataSource.java | 10 + .../ArticoliOrdineDataSource.java | 8 +- .../data_store/db/view_model/ArticoloDTO.java | 53 +++-- .../core/settings/DBSettingsModel.java | 28 ++- .../core/settings/SettingsManager.java | 22 +- .../core/utility/UtilityFocus.java | 3 +- .../dto/GrigliaAcquistiChildDTO.java | 10 + .../DocInterniEditFormViewModel.java | 28 ++- .../PVOrdineAcquistoEditActivity.java | 43 +++- .../dialog/EditArticoloDialog.java | 30 ++- .../helper/PVEditOrderHelper.java | 13 +- .../dialogs/DialogScanLisA.java | 9 +- .../res/drawable/ic_baseline_alert_24.xml | 10 + .../main/res/drawable/ic_baseline_new_24.xml | 10 + .../res/drawable/ic_baseline_stars_24.xml | 10 + .../res/layout/dialog_pv_edit_articolo.xml | 40 +++- ...coli_ordine_acquisto__list_single_item.xml | 32 ++- .../layout/fragment_pv_ordini_acquisto.xml | 210 ++++++++---------- app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 25 files changed, 441 insertions(+), 182 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_alert_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_new_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_stars_24.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 94ef061a..c69bda7d 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 @@ -18,7 +18,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; -@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 5, exportSchema = false) +@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 7, 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 c501cc7f..42c01e96 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 @@ -6,7 +6,6 @@ import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; -import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; @@ -21,10 +20,13 @@ public interface ArticoloGrigliaDao { @Insert void insertAll(List articoli); + @Insert Long insert(ArticoloGriglia articolo); + @Update void updateAll(List articoli); + @Update void update(ArticoloGriglia articolo); @@ -45,4 +47,7 @@ public interface ArticoloGrigliaDao { @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") List getArticoliFromGriglia(int grigliaId); + + @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId and new_no_promo = 1") + List getNewArticoliInGriglia(int grigliaId); } 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 f42f98bd..f28a2434 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 @@ -71,6 +71,9 @@ public class ArticoloGriglia { @ColumnInfo(name = "id_griglia") private int idGriglia; + @ColumnInfo(name = "new_no_promo") + private boolean newNoPromo = false; + public int getArticoloGrigliaId() { return articoloGrigliaId; } @@ -191,6 +194,14 @@ public class ArticoloGriglia { this.qtaProposta = qtaProposta; } + public boolean isNewNoPromo() { + return newNoPromo; + } + + public void setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + } + public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { ArticoloOrdine articolo = new ArticoloOrdine(); @@ -210,6 +221,7 @@ public class ArticoloGriglia { articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza())); articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita())); articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta())); + articolo.setNewNoPromo(this.isNewNoPromo()); articolo.setQtaOrd(0); 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 f55a69d5..5ee30523 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 @@ -29,7 +29,7 @@ import java.util.Date; public class ArticoloOrdine { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "articolo_ordine_id") - private int articoloOrdineId; + private Integer articoloOrdineId; @ColumnInfo(name = "cod_mart") private String codMart; @@ -67,6 +67,8 @@ public class ArticoloOrdine { @ColumnInfo(name = "data_ins") private Date dataIns; + @ColumnInfo(name = "new_no_promo") + private boolean newNoPromo; @Ignore private int ggScadenza = 0; @@ -81,7 +83,7 @@ public class ArticoloOrdine { private BigDecimal qtaProposta = BigDecimal.ZERO; - public int getArticoloOrdineId() { + public Integer getArticoloOrdineId() { return articoloOrdineId; } @@ -221,14 +223,23 @@ public class ArticoloOrdine { return this; } - public BigDecimal getQtaCnfPrevistaVendita(){ - return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + public BigDecimal getQtaCnfPrevistaVendita() { + return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); } - public BigDecimal getQtaCnfProposta(){ - return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + public BigDecimal getQtaCnfProposta() { + return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); } - public BigDecimal getQtaCnfGiacenza(){ - return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + + public BigDecimal getQtaCnfGiacenza() { + return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public void setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java index cbcfc259..eb712af8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java @@ -16,4 +16,6 @@ public interface ArticoloGrigliaRepository { void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail); + void findNewArticoliInGrigla(int idGriglia, RunnableArgs> onSuccess, RunnableArgs onFail); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java index 51f16d58..d47945ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java @@ -89,4 +89,14 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri } }); } + + public void findNewArticoliInGrigla(int idGriglia, RunnableArgs> onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + onSuccess.run(mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia)); + } catch (Exception e) { + onFail.run(e); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java index d3ec82e8..a82c193e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java @@ -28,13 +28,15 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); for (ArticoloOrdine art : articoli) { - if (art.getArticoloOrdineId() > 0) { + if (art.getArticoloOrdineId() != null && art.getArticoloOrdineId() > 0) { toUpdate.add(art); } else { toInsert.add(art); } } - mArticoloOrdineDao.insertAll(toInsert); + for (ArticoloOrdine newArt : toInsert) { + mArticoloOrdineDao.insert(newArt); + } mArticoloOrdineDao.updateAll(toUpdate); onSuccess.run(); @@ -48,7 +50,7 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs onFail) { execute(() -> { try { - if (articolo.getArticoloOrdineId() > 0) { + if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) { mArticoloOrdineDao.update(articolo); } else { mArticoloOrdineDao.insert(articolo); 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 0ac39bc9..f3c7a02b 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 @@ -1,35 +1,23 @@ package it.integry.integrywmsnative.core.data_store.db.view_model; -import androidx.room.ColumnInfo; - import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; public class ArticoloDTO { - private String codMart; - - private String descrizione; - - private String untMis; - - private String barcode; - - private String flagQtaMultipla; - - private float qtaCnf; - - private float merceDaRic; - - private float mediaSett; - - private float qtaMinOrdinabile; - + public String codMart; + public String descrizione; + public String untMis; + public float qtaCnf; + public String barcode; + public float merceDaRic; + public float mediaSett; + public String flagQtaMultipla; + public String flagTracciabilita; + public float qtaMinOrdinabile; + public boolean newNoPromo; private int ggScadenza; - private float giacenza; - private float qtaPrevistaVendita; - private float qtaProposta; @@ -145,6 +133,24 @@ public class ArticoloDTO { this.qtaProposta = qtaProposta; } + public String getFlagTracciabilita() { + return flagTracciabilita; + } + + public ArticoloDTO setFlagTracciabilita(String flagTracciabilita) { + this.flagTracciabilita = flagTracciabilita; + return this; + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public ArticoloDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } + public ArticoloGriglia toArticoloGriglia() { ArticoloGriglia result = new ArticoloGriglia(); result.setBarCode(this.getBarCode()); @@ -157,6 +163,7 @@ public class ArticoloDTO { result.setFlagQtaMultipla(this.getFlagQtaMultipla()); result.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); result.setGgScadenza(this.ggScadenza); + result.setNewNoPromo(this.newNoPromo); result.setGiacenza(this.giacenza); result.setQtaPrevistaVendita(this.qtaPrevistaVendita); result.setQtaProposta(this.qtaProposta); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 0528c066..88156b64 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -1,12 +1,14 @@ package it.integry.integrywmsnative.core.settings; +import org.json.JSONObject; + import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; -import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; +import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; public class DBSettingsModel { @@ -36,6 +38,8 @@ public class DBSettingsModel { private boolean flagSpedizioneCanSelectMultipleOrders; private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; + private boolean flagOrdinaNuoviArticoliInGriglia; + private JSONObject docInterniCheckFornitore; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; private int onNumCnfInputChanged = 1; @@ -72,7 +76,7 @@ public class DBSettingsModel { } public DBSettingsModel setDatiAzienda(Azienda datiAzienda) { - this.datiAzienda = datiAzienda; + this.datiAzienda = datiAzienda; return this; } @@ -247,6 +251,15 @@ public class DBSettingsModel { return this; } + public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) { + this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia; + return this; + } + + public boolean getFlagOrdinaNuoviArticoliInGriglia() { + return this.flagOrdinaNuoviArticoliInGriglia; + } + public String getProduzioneDefaultCodAnag() { return produzioneDefaultCodAnag; } @@ -282,4 +295,13 @@ public class DBSettingsModel { this.notePerditaDocInterni = notePerditaDocInterni; return this; } + + public JSONObject getDocInterniCheckFornitore() { + return docInterniCheckFornitore; + } + + public DBSettingsModel setDocInterniCheckFornitore(JSONObject docInterniCheckFornitore) { + this.docInterniCheckFornitore = docInterniCheckFornitore; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index b32e234f..ade66c88 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -5,6 +5,9 @@ import android.content.Context; import com.annimon.stream.Stream; import com.google.firebase.perf.metrics.Trace; +import org.json.JSONException; +import org.json.JSONObject; + import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.Arrays; @@ -270,6 +273,14 @@ public class SettingsManager { .setGestName("PVM") .setSection("DOC_INTERNI") .setKeySection("NOTE_PERDITA")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("ORDINI_A") + .setKeySection("ORDINA_NUOVI_ARTICOLI")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("DOC_INTERNI") + .setKeySection("CHECK_FORNITORE")); GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { @@ -294,8 +305,15 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); - String notePerdita = getValueFromList(list,"DOC_INTERNI","NOTE_PERDITA",String.class); - if (notePerdita != null){ + dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); + String docTypeCheckFornitore = getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class); + try { + dbSettingsModelIstance.setDocInterniCheckFornitore(new JSONObject(docTypeCheckFornitore)); + } catch (JSONException e) { + e.printStackTrace(); + } + String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); + if (notePerdita != null) { dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|"))); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java index 93d47c27..0315d040 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java @@ -8,7 +8,8 @@ public class UtilityFocus { public static void focusTextBox(Context context, EditText editTextToFocus) { editTextToFocus.requestFocus(); - + editTextToFocus.setSelectAllOnFocus(true); + editTextToFocus.selectAll(); InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java index 349e46c9..9db96088 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java @@ -14,6 +14,7 @@ public class GrigliaAcquistiChildDTO { public String flagQtaMultipla; public String flagTracciabilita; public BigDecimal qtaMinOrdinabile; + public boolean newNoPromo; private int ggScadenza; private float giacenza; private float qtaPrevistaVendita; @@ -144,4 +145,13 @@ public class GrigliaAcquistiChildDTO { this.qtaProposta = qtaProposta; return this; } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public GrigliaAcquistiChildDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 6be6f11a..66c9288c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; import org.apache.commons.lang3.StringUtils; +import org.json.JSONObject; import java.math.BigDecimal; import java.util.ArrayList; @@ -18,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; @@ -35,7 +37,8 @@ public class DocInterniEditFormViewModel { private final DocInterniRESTConsumer docInterniRESTConsumer; private DocInterniEditFormViewModel.Listener listener; private List productsList; - + private boolean isCheckPartitaMag = false; + private JSONObject checkFornitoreRules = null; public MutableLiveData document = new MutableLiveData<>(); public MutableLiveData> docRows = new MutableLiveData<>(); @@ -44,6 +47,7 @@ public class DocInterniEditFormViewModel { this.docInterniRESTConsumer = docInterniRESTConsumer; this.mtbColrRepository = mtbColrRepository; this.mtbColtRepository = mtbColtRepository; + this.checkFornitoreRules = SettingsManager.iDB().getDocInterniCheckFornitore(); this.docRows.setValue(new ArrayList<>()); } @@ -120,7 +124,7 @@ public class DocInterniEditFormViewModel { } SqlMtbColr row = this.getRowForArticolo(articolo); this.sendOnLoadingEnded(); - this.editRow(row, articolo.getFlagTracciabilita().equalsIgnoreCase("S")); + this.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S") && this.isCheckPartitaMag)); } @@ -208,6 +212,26 @@ public class DocInterniEditFormViewModel { public void setDocument(SqlMtbColt document) { this.document.setValue(document); + this.initCheckFornitore(); + } + + private void initCheckFornitore() { + SqlMtbColt doc = this.document.getValue(); + boolean isCheckPartitaMag = false; + if (doc != null && this.checkFornitoreRules != null) { + String key = doc.getCodAnag(); + if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) { + key += "-" + doc.getCodVdes(); + } + try { + if (this.checkFornitoreRules.has(key) && ((String) ((JSONObject) this.checkFornitoreRules.get(key)).get(doc.getCodDtipProvv())).equalsIgnoreCase("check-partitaMag")) { + isCheckPartitaMag = true; + } + } catch (Exception ignored) { + } + + } + this.isCheckPartitaMag = isCheckPartitaMag; } public SqlMtbColt getDocument() { 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 febbc9ca..257cfba6 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 @@ -12,6 +12,8 @@ import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.LinearLayoutManager; +import com.annimon.stream.Stream; + import java.util.ArrayList; import java.util.List; @@ -32,6 +34,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaReposito import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; @@ -65,7 +68,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { ArticoloGrigliaRepository mArticoloGrigliaRepository; - public static Intent newInstance(Context context, Ordine ordine){ + public static Intent newInstance(Context context, Ordine ordine) { Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); String keyOrdine = DataCache.addItem(ordine); myIntent.putExtra(DATA_KEY_ORDER, keyOrdine); @@ -110,6 +113,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { .setOnScanFailed(this::handleException)); } + @Override public boolean onSupportNavigateUp() { @@ -159,6 +163,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { private void handleException(Exception ex) { runOnUiThread(() -> { + this.closeProgress(); BarcodeManager.enable(); UtilityExceptions.defaultException(this, ex, false); }); @@ -198,6 +203,32 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { fetchArticoli(); } + private void orderNewProducts() { + this.openProgress(); + mhelper.getNewArticoli(mOrdine.getIdGriglia(), articoli -> { + if (articoli != null && !articoli.isEmpty()) { + List articoliToSave = new ArrayList<>(); + Stream.of(articoli).forEach(articolo -> { + if ( + Stream.of(mArticoli).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() + && Stream.of(articoliToSave).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() + ) { + ArticoloOrdine dto = articolo.convertToArticoloOrdine(mOrdine); + dto.setQtaOrd(dto.getQtaCnf()); + articoliToSave.add(dto); + } + }); + if (!articoliToSave.isEmpty()) { + mhelper.saveArticoliToOrdine(articoliToSave, this::fetchArticoli, this::handleException); + } else { + this.closeProgress(); + } + } else { + this.closeProgress(); + } + }, this::handleException); + } + private void fetchGriglia() { mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> { runOnUiThread(() -> { @@ -218,6 +249,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE); mBinding.closeActivityFab.close(false); mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE); + if (mArticoli.isEmpty() && isOrderNewProdsForced()) { + orderNewProducts(); + } }); }, this::handleException); } @@ -253,9 +287,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { super.onBackPressed(); } - public void manualSearch(){ + public void manualSearch() { BarcodeManager.disable(); - DialogSimpleInputHelper.makeInputDialog(this,"Inserisci il codice a barre/codice articolo da cercare",codice->{ + DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> { this.openProgress(); mhelper.checkArticolo( mOrdine, @@ -272,4 +306,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { }, BarcodeManager::enable).show(); } + private boolean isOrderNewProdsForced() { + return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia(); + } } 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 54925165..3c99f01e 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 @@ -10,6 +10,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -27,7 +28,6 @@ import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; @@ -53,7 +53,7 @@ public class EditArticoloDialog extends BaseDialogFragment { mArticolo.setValue(articolo); mHelper = helper; qtaOrd.set(BigDecimal.valueOf(articolo.getQtaOrd())); - numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()),0,RoundingMode.CEILING).intValue()); + numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()), 0, RoundingMode.CEILING).intValue()); qtaCnf.set(BigDecimal.valueOf(articolo.getQtaCnf())); this.onDialogDismiss = onDialogDismiss; @@ -71,7 +71,7 @@ public class EditArticoloDialog extends BaseDialogFragment { public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); ArticoloOrdine articolo = mArticolo.getValue(); - if (articolo != null && articolo.getQtaOrd() <= 0f){ + if (articolo != null && articolo.getQtaOrd() <= 0f) { articolo = null; } onDialogDismiss.run(articolo); @@ -87,14 +87,12 @@ public class EditArticoloDialog extends BaseDialogFragment { getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); initBindings(); - return mBinding.getRoot(); } @Override public void onStart() { super.onStart(); - UtilityFocus.focusTextBox(mContext, mBinding.inputQtaOrd); } private void initBindings() { @@ -106,17 +104,17 @@ public class EditArticoloDialog extends BaseDialogFragment { ArticoloOrdine articoloOrdine = mArticolo.getValue(); BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf()); int cnf = 0; - if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0){ + if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0) { cnf = qtaOrd.get().divide(qtaCnf, 0, RoundingMode.CEILING).intValue(); } - this.numCnf.set( cnf); + this.numCnf.set(cnf); this.mBinding.executePendingBindings(); mLockedInput = false; } }); BindableInteger.registerListener(numCnf, qta -> { - if (!mLockedInput){ + if (!mLockedInput) { mLockedInput = true; ArticoloOrdine articoloOrdine = mArticolo.getValue(); @@ -127,6 +125,22 @@ public class EditArticoloDialog extends BaseDialogFragment { mLockedInput = false; } }); + mBinding.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { +// saveAndExit(); + mBinding.inputNumCnfText.requestFocus(); + return true; + } + return false; + }); + + mBinding.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + saveAndExit(); + return true; + } + return false; + }); } public void saveAndExit() { 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 da003f81..daf89bc9 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 @@ -2,11 +2,12 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper; 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.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; -import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -63,7 +64,15 @@ public class PVEditOrderHelper { mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail); } - public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError){ + public void saveArticoliToOrdine(List articoli, Runnable onSave, RunnableArgs onFail) { + mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail); + } + + public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError) { mArticoliOrdineRepository.deleteArticolo(articolo, onSave, onError); } + + public void getNewArticoli(int idGrigla, RunnableArgs> onSuccess, RunnableArgs onError) { + mArticoliGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index ba6f7ca1..1de6f0f3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -29,7 +29,7 @@ public class DialogScanLisA { private BaseDialog mDialog; private Dialog mCurrentProgress; - private DialogScanCodiceGrigliaBinding mBinding; + private final DialogScanCodiceGrigliaBinding mBinding; private RunnableArgs mOnDialogDismiss; @@ -54,6 +54,13 @@ public class DialogScanLisA { mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mOnDialogDismiss = onDialogDismiss; initBarcode(); + + + BarcodeScanDTO fakeScan = new BarcodeScanDTO(); + fakeScan.setStringValue("4AP001"); + onScanSuccessfull.run(fakeScan); + + } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { diff --git a/app/src/main/res/drawable/ic_baseline_alert_24.xml b/app/src/main/res/drawable/ic_baseline_alert_24.xml new file mode 100644 index 00000000..40ad9444 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_alert_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_new_24.xml b/app/src/main/res/drawable/ic_baseline_new_24.xml new file mode 100644 index 00000000..af35c19b --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_new_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_stars_24.xml b/app/src/main/res/drawable/ic_baseline_stars_24.xml new file mode 100644 index 00000000..ecfbeb6f --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_stars_24.xml @@ -0,0 +1,10 @@ + + + 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 7ae43a88..32964cca 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -7,6 +7,7 @@ + + + + + + + + + + @@ -310,8 +343,7 @@ android:background="@drawable/badge_round_corner" android:backgroundTint="@color/colorPrimary" android:orientation="vertical" - android:padding="8dp" - > + android:padding="8dp"> - - @@ -480,6 +511,7 @@ android:digits="0123456789" android:hint="@string/tot_qty" android:inputType="number" + android:selectAllOnFocus="true" app:binding="@{view.qtaOrd}" /> 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 index 47c0bf98..572eb7b3 100644 --- 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 @@ -29,15 +29,31 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - + android:orientation="horizontal"> + + + + + + - + @@ -15,132 +16,121 @@ - - + + + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:padding="16dp"> + android:orientation="horizontal"> - + android:text="@string/cod_alis_name" + android:textColor="@android:color/black" + android:layout_marginEnd="8dp" + android:textSize="16sp" /> - - - - - - + tools:text="4SECCO" + android:textColor="@android:color/black" + android:textSize="16sp" + android:textStyle="bold" /> - - - - - - - - - - - - - - - - - - - + tools:text="LISTINO FORMAT CEDI SECCO" + android:textColor="@android:color/black" + android:textSize="14sp" + android:layout_marginStart="4dp" + android:textStyle="italic" /> - + + + + + + + + + + + + + + + + + - > + android:paddingEnd="2dp" /> + android:adjustViewBounds="true" /> + android:text="@string/no_orders_found_message" /> - - + + - - @@ -222,7 +210,7 @@ android:layout_width="0dp" android:layout_height="0dp" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.3"/> + app:layout_constraintGuide_percent="0.3" /> - - + fab:fab_colorRipple="#66FFFFFF" /> \ 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 a8d9bb89..9c133848 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -375,4 +375,6 @@ Previsione di vendita Giacenza Qtà proposta + giorni + Nuovo articolo in griglia \ 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 a48cef4c..ec6181f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -384,4 +384,6 @@ Sales prediction Stock Suggested Qty + days + Newly added product From 8686df3d8a31f4c3f5a43d4c1e34ff8f7b0f8f49 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 21 Feb 2022 16:32:04 +0100 Subject: [PATCH 24/32] rimossa ricerca automatica listino creata per test dev --- .../gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index 1de6f0f3..66175187 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -56,11 +56,6 @@ public class DialogScanLisA { initBarcode(); - BarcodeScanDTO fakeScan = new BarcodeScanDTO(); - fakeScan.setStringValue("4AP001"); - onScanSuccessfull.run(fakeScan); - - } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { From e1b4af24028aea7906dc167ad86b6b109973c9e3 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 22 Feb 2022 13:14:56 +0100 Subject: [PATCH 25/32] Fix su caricamento JSON di config per i doc interni --- .../core/settings/DBSettingsModel.java | 8 +++----- .../core/settings/SettingsManager.java | 11 ++--------- .../edit_form/DocInterniEditFormActivity.java | 1 + .../edit_form/DocInterniEditFormViewModel.java | 12 +++++++++++- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 88156b64..6983010e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -1,7 +1,5 @@ package it.integry.integrywmsnative.core.settings; -import org.json.JSONObject; - import java.util.ArrayList; import java.util.List; @@ -39,7 +37,7 @@ public class DBSettingsModel { private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; private boolean flagOrdinaNuoviArticoliInGriglia; - private JSONObject docInterniCheckFornitore; + private String docInterniCheckFornitore; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; private int onNumCnfInputChanged = 1; @@ -296,11 +294,11 @@ public class DBSettingsModel { return this; } - public JSONObject getDocInterniCheckFornitore() { + public String getDocInterniCheckFornitore() { return docInterniCheckFornitore; } - public DBSettingsModel setDocInterniCheckFornitore(JSONObject docInterniCheckFornitore) { + public DBSettingsModel setDocInterniCheckFornitore(String docInterniCheckFornitore) { this.docInterniCheckFornitore = docInterniCheckFornitore; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index ade66c88..6d933ddd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -5,9 +5,6 @@ import android.content.Context; import com.annimon.stream.Stream; import com.google.firebase.perf.metrics.Trace; -import org.json.JSONException; -import org.json.JSONObject; - import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.Arrays; @@ -306,12 +303,8 @@ public class SettingsManager { dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); - String docTypeCheckFornitore = getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class); - try { - dbSettingsModelIstance.setDocInterniCheckFornitore(new JSONObject(docTypeCheckFornitore)); - } catch (JSONException e) { - e.printStackTrace(); - } + dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class)); + String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); if (notePerdita != null) { dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|"))); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index e5ceb7f8..01cfd0d5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -133,6 +133,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } private void initViewModel(SqlMtbColt document, List productList) { + this.viewModel.init(); this.viewModel.setListeners(this); this.viewModel.setDocument(document); this.viewModel.setProductsList(productList); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 66c9288c..99ea5659 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; import org.apache.commons.lang3.StringUtils; +import org.json.JSONException; import org.json.JSONObject; import java.math.BigDecimal; @@ -47,10 +48,19 @@ public class DocInterniEditFormViewModel { this.docInterniRESTConsumer = docInterniRESTConsumer; this.mtbColrRepository = mtbColrRepository; this.mtbColtRepository = mtbColtRepository; - this.checkFornitoreRules = SettingsManager.iDB().getDocInterniCheckFornitore(); this.docRows.setValue(new ArrayList<>()); } + public void init() { + try { + var docInterniCheckFornitore = SettingsManager.iDB().getDocInterniCheckFornitore(); + this.checkFornitoreRules = docInterniCheckFornitore != null ? new JSONObject(docInterniCheckFornitore) : null; + } catch (JSONException e) { + e.printStackTrace(); + } + } + + private void sendOnLoadingStarted() { if (this.listener != null) listener.onLoadingStarted(); } From 90d5a8d43b483535f3292667f83b688161963f15 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 22 Feb 2022 13:22:17 +0100 Subject: [PATCH 26/32] gestione righe multiple per articolo in documenti itnerni --- .../MainApplicationComponent.java | 7 +- ...logChooseRowFromListaDocRowsListModel.java | 85 +++++++++++ .../edit_form/DocInterniEditFormActivity.java | 11 ++ .../DocInterniEditFormViewModel.java | 55 ++++--- .../DialogSelectDocRowsComponent.java | 16 ++ .../DialogSelectDocRowsModule.java | 9 ++ .../DialogSelectDocRowsView.java | 143 ++++++++++++++++++ .../dialogs/DialogScanLisA.java | 2 - ...se_row_from_lista_doc_rows__item_model.xml | 138 +++++++++++++++++ ..._choose_row_from_lista_doc_rows_layout.xml | 141 +++++++++++++++++ app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 12 files changed, 582 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java create mode 100644 app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml create mode 100644 app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index ba20830b..649a8bbb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -15,6 +15,8 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDo import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsComponent; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsModule; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent; @@ -110,7 +112,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogChooseArtsFromListaArtsModule.class, DocInterniModule.class, DialogSelectDocInfoModule.class, - DocInterniEditFormModule.class + DocInterniEditFormModule.class, + DialogSelectDocRowsModule.class }) public interface MainApplicationComponent { @@ -182,6 +185,8 @@ public interface MainApplicationComponent { DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent(); + DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent(); + DocInterniEditFormComponent.Factory docInterniEditFormComponent(); InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java new file mode 100644 index 00000000..3c48b2fa --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java @@ -0,0 +1,85 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dto; + +import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; +import it.integry.integrywmsnative.core.di.BindableBoolean; + +public class DialogChooseRowFromListaDocRowsListModel { + + private String codMart; + private String descrizione; + private String qtaOrdReadable; + private String barcode; + private boolean isNew; + private SqlMtbColr originalModel; + private BindableBoolean checked = new BindableBoolean(false); + + public DialogChooseRowFromListaDocRowsListModel() { + } + + public BindableBoolean getChecked() { + return checked; + } + + public DialogChooseRowFromListaDocRowsListModel setChecked(BindableBoolean checked) { + this.checked = checked; + return this; + } + + public void toggleCheck() { + this.checked.set(!this.checked.get()); + } + + public String getCodMart() { + return codMart; + } + + public DialogChooseRowFromListaDocRowsListModel setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public DialogChooseRowFromListaDocRowsListModel setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getQtaOrdReadable() { + return qtaOrdReadable; + } + + public DialogChooseRowFromListaDocRowsListModel setQtaOrdReadable(String qtaOrdReadable) { + this.qtaOrdReadable = qtaOrdReadable; + return this; + } + + public String getBarcode() { + return barcode; + } + + public DialogChooseRowFromListaDocRowsListModel setBarcode(String barcode) { + this.barcode = barcode; + return this; + } + + public boolean isNew() { + return isNew; + } + + public DialogChooseRowFromListaDocRowsListModel setNew(boolean aNew) { + isNew = aNew; + return this; + } + + public SqlMtbColr getOriginalModel() { + return originalModel; + } + + public DialogChooseRowFromListaDocRowsListModel setOriginalModel(SqlMtbColr originalModel) { + this.originalModel = originalModel; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 01cfd0d5..e4fd6074 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -39,6 +39,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; @@ -281,6 +282,16 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter this.viewModel.deleteRow(entityToSql(mtbColr)); } + @Override + public void onMultipleRowsFound(List rows, GrigliaAcquistiChildDTO articolo) { + DialogSelectDocRowsView.newInstance(rows, (row) -> { + this.onLoadingEnded(); + if (row != null) { + this.viewModel.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S"))); + } + } + ).show(this.getSupportFragmentManager(), "dialogSelectDocRows"); + } private MtbColr sqlToEntity(SqlMtbColr sqlMtbColr) { MtbColr entity = new MtbColr(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 99ea5659..72abc9d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -85,7 +85,7 @@ public class DocInterniEditFormViewModel { } public void editRow(SqlMtbColr row, boolean flagTracciabilita) { - this.listener.onEditRowRequest(row, flagTracciabilita); + this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag); } private Integer getNextIdRiga() { @@ -127,41 +127,46 @@ public class DocInterniEditFormViewModel { public void onSearch(String search) { this.sendOnLoadingStarted(); GrigliaAcquistiChildDTO articolo = this.searchArticolo(search); + this.sendOnLoadingEnded(); if (articolo == null) { this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); - this.sendOnLoadingEnded(); return; } - SqlMtbColr row = this.getRowForArticolo(articolo); - this.sendOnLoadingEnded(); - this.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S") && this.isCheckPartitaMag)); + List rows = this.getRowsForArticolo(articolo); + if (rows.isEmpty()) { + this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); + } + if (rows.size() > 1) { + this.listener.onMultipleRowsFound(rows, articolo); + } else { + this.editRow(rows.get(0), (articolo.getFlagTracciabilita().equalsIgnoreCase("S"))); + } } - private SqlMtbColr getRowForArticolo(GrigliaAcquistiChildDTO articolo) { + private List getRowsForArticolo(GrigliaAcquistiChildDTO articolo) { List docRows = this.docRows.getValue(); if (docRows == null) { docRows = new ArrayList<>(); } SqlMtbColt document = this.document.getValue(); - SqlMtbColr row = Stream.of(docRows).filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null); - if (row == null) { - row = new SqlMtbColr(); - row.setIdCollo(document.getId()); - row.setRiga(getNextIdRiga()); - row.setCodMart(articolo.getCodMart()); - row.setSerCollo(document.getSerCollo()); - row.setGestione(document.getGestione()); - row.setNumCollo(document.getNumCollo()); - row.setDataCollo(document.getDataCollo()); - row.setDescrizione(articolo.getDescrizione()); - row.setUntMis(articolo.getUntMis()); - row.setCodBarre(articolo.getBarcode()); - row.setQtaCnf(articolo.getQtaCnf().floatValue()); - row.setNumCnf(0f); - row.setQtaCol(0f); - } - return row; + SqlMtbColr row = new SqlMtbColr(); + row.setIdCollo(document.getId()); + row.setRiga(getNextIdRiga()); + row.setCodMart(articolo.getCodMart()); + row.setSerCollo(document.getSerCollo()); + row.setGestione(document.getGestione()); + row.setNumCollo(document.getNumCollo()); + row.setDataCollo(document.getDataCollo()); + row.setDescrizione(articolo.getDescrizione()); + row.setUntMis(articolo.getUntMis()); + row.setCodBarre(articolo.getBarcode()); + row.setQtaCnf(articolo.getQtaCnf().floatValue()); + row.setNumCnf(0f); + row.setQtaCol(0f); + List rows = Stream.of(docRows).filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart())).toList(); + rows.add(row); + return rows; } private GrigliaAcquistiChildDTO searchArticolo(String filter) { @@ -304,6 +309,8 @@ public class DocInterniEditFormViewModel { void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita); + void onMultipleRowsFound(List rows, GrigliaAcquistiChildDTO articolo); + void onDocumentHoldRequest(); void onDocExported(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java new file mode 100644 index 00000000..29bb8f1c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogSelectDocRowsComponent { + + @Subcomponent.Factory + interface Factory { + DialogSelectDocRowsComponent create(); + } + + + void inject(DialogSelectDocRowsView dialogSelectDocInfoView); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java new file mode 100644 index 00000000..499da135 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java @@ -0,0 +1,9 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows; + +import dagger.Module; + +@Module(subcomponents = DialogSelectDocRowsComponent.class) +public class DialogSelectDocRowsModule { + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java new file mode 100644 index 00000000..4da76842 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java @@ -0,0 +1,143 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; +import com.ravikoradiya.liveadapter.LiveAdapter; + +import java.util.List; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogChooseRowFromListaDocRowsLayoutBinding; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DialogChooseRowFromListaDocRowsListModel; +import kotlin.Unit; + +public class DialogSelectDocRowsView extends BaseDialogFragment { + + private final RunnableArgs onRowSelected; + private final List listArts; + private final MutableLiveData> listModels = new MutableLiveData<>(); + private DialogChooseRowFromListaDocRowsLayoutBinding binding; + public MutableLiveData selectedRow = new MutableLiveData<>(); + + public static DialogSelectDocRowsView newInstance( + List listArts, + RunnableArgs onDismiss + ) { + return new DialogSelectDocRowsView(listArts, onDismiss); + } + + + private DialogSelectDocRowsView(List listArts, RunnableArgs onDismiss) { + super(); + this.onRowSelected = onDismiss; + this.listArts = listArts; + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); + if (onRowSelected != null) onRowSelected.run(this.selectedRow.getValue()); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_row_from_lista_doc_rows_layout, container, false); + binding.setLifecycleOwner(this); + MainApplication + .appComponent + .dialogSelectDocRowsComponent() + .create() + .inject(this); + binding.setView(this); + + getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + initView(); + this.refreshList(); + + + binding.positiveButton.setOnClickListener(view -> { + getDialog().dismiss(); + }); + + binding.negativeButton.setOnClickListener(view -> { + this.selectedRow.setValue(null); + getDialog().dismiss(); + }); + + + this.onLoadingEnded(); + return binding.getRoot(); + } + + private void refreshList() { + var list = Stream.of(this.listArts).map(row -> { + DialogChooseRowFromListaDocRowsListModel model = new DialogChooseRowFromListaDocRowsListModel(); + model.setCodMart(row.getCodMart()); + model.setBarcode(row.getCodMart()); + model.setOriginalModel(row); + model.setNew(row.getId() < 1); + model.setDescrizione(row.getDescrizione()); + model.setQtaOrdReadable(row.getQtaCol() + "\n" + row.getUntMis()); + model.getChecked().addOnPropertyChangedCallback(() -> { + this.checkRow(row, model.getChecked().get()); + }); + return model; + }).toList(); + this.listModels.postValue(list); + + } + + private void checkRow(SqlMtbColr row, boolean checked) { + if (checked) { + this.selectedRow.setValue(row); + var models = this.listModels.getValue(); + if (models != null && !models.isEmpty()) { + Stream.of(models).filter(model -> model.getOriginalModel().getId() != row.getId()).forEach(model -> { + model.getChecked().set(false); + }); + } + } else { + var selectedRow = this.selectedRow.getValue(); + if (selectedRow != null && selectedRow.getId() == row.getId()) { + this.selectedRow.setValue(null); + } + } + } + + private void initView() { + initArrayAdapters(); + } + + private void initArrayAdapters() { + + new LiveAdapter(listModels, getViewLifecycleOwner(), BR.row) + .map(DialogChooseRowFromListaDocRowsListModel.class, R.layout.dialog_choose_row_from_lista_doc_rows__item_model) + .onNoData(noData -> { + binding.emptyView.setVisibility(noData ? View.VISIBLE : View.GONE); + return Unit.INSTANCE; + } + ).into(binding.listaDocRows); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index 66175187..acd93cac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -55,7 +55,6 @@ public class DialogScanLisA { mOnDialogDismiss = onDialogDismiss; initBarcode(); - } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { @@ -77,7 +76,6 @@ public class DialogScanLisA { }); } - private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); diff --git a/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml new file mode 100644 index 00000000..4b389296 --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml new file mode 100644 index 00000000..c738e70c --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 9c133848..b3c8e888 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -377,4 +377,5 @@ Qtà proposta giorni Nuovo articolo in griglia + Seleziona la riga da modificare \ 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 ec6181f2..2088df9c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -386,4 +386,5 @@ Suggested Qty days Newly added product + Select document row to edit From f1c25a3673ac9a0eb3aa6263869eee730a7bde78 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 22 Feb 2022 13:23:18 +0100 Subject: [PATCH 27/32] -> v1.23.5 (260) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3739f44d..857ce962 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 259 - def appVersionName = '1.23.4' + def appVersionCode = 260 + def appVersionName = '1.23.5' signingConfigs { release { From 57fa738c596c763afcdcdff54252ed3e6c2cec2f Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 22 Feb 2022 15:40:50 +0100 Subject: [PATCH 28/32] corretto bug sul progressDialog --- .../edit_form/DocInterniEditFormActivity.java | 2 +- .../edit_form/DocInterniEditFormViewModel.java | 2 -- .../dialogs/input_quantity_v2/DialogInputQuantityV2View.java | 1 + 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index e4fd6074..88527b6c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -211,6 +211,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter @Override public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita) { + this.onLoadingStarted(); MtbAart mtbAart = new MtbAart(); mtbAart.setBarCode(row.getCodBarre()); mtbAart.setDiacod(row.getCodBarre()); @@ -244,7 +245,6 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } return partitaMag; }); - DialogInputQuantityV2View .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { this.onLoadingStarted(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 72abc9d4..b559a023 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -125,9 +125,7 @@ public class DocInterniEditFormViewModel { } public void onSearch(String search) { - this.sendOnLoadingStarted(); GrigliaAcquistiChildDTO articolo = this.searchArticolo(search); - this.sendOnLoadingEnded(); if (articolo == null) { this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); return; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index ad63bf94..f6eaeb96 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -159,6 +159,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia return false; }); } + this.onLoadingEnded(); return mBindings.getRoot(); } From eb39e1b7c580d32dc5987a6de884e7a23218de16 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 22 Feb 2022 18:56:30 +0100 Subject: [PATCH 29/32] Refactoring DialogProgressView. Refactoring UpdateManager. --- app/src/main/AndroidManifest.xml | 3 +- .../MainApplicationComponent.java | 10 ++ .../MainApplicationModule.java | 14 +++ .../core/expansion/BaseActivity.java | 33 +++-- .../core/expansion/BaseActivityComponent.java | 14 +++ .../core/expansion/BaseActivityModule.java | 7 ++ .../core/expansion/BaseDialogFragment.java | 6 +- .../core/expansion/BaseFragment.java | 41 +++++-- .../core/expansion/BaseFragmentComponent.java | 14 +++ .../core/expansion/BaseFragmentModule.java | 7 ++ .../core/update/UpdateApp.java | 60 ---------- .../core/update/UpdatesManager.java | 98 ++++++++------- .../core/utility/FileDownloader.java | 113 ++++++++++++++++++ .../core/utility/UtilityExceptions.java | 6 +- .../core/utility/UtilityProgress.java | 24 ++-- .../gest/main/MainActivity.java | 5 +- .../OrdiniUscitaElencoFragment.java | 1 + .../PVOrdiniAcquistoGrigliaFragment.java | 8 +- .../dialogs/DialogScanLisA.java | 11 +- .../RettificaGiacenzeFragment.java | 6 +- .../view/dialogs/DialogProgress.java | 61 ---------- .../view/dialogs/DialogProgressView.java | 88 ++++++++++++++ .../DialogChooseArtsFromListaArts.java | 4 +- .../input_peso_lu/DialogInputPeso.java | 16 +-- app/src/main/res/layout/dialog_progress.xml | 9 +- 25 files changed, 426 insertions(+), 233 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a42b2eaf..b8226a96 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,8 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" - android:fullBackupContent="@xml/backup_descriptor"> + android:fullBackupContent="@xml/backup_descriptor" + android:requestLegacyExternalStorage="true"> { BarcodeManager.disable(); - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) { + this.mCurrentProgress.show(getSupportFragmentManager(), "tag"); } }); } @@ -51,9 +67,8 @@ public class BaseActivity extends AppCompatActivity { protected void closeProgress() { runOnUiThread(() -> { BarcodeManager.enable(); - if (mCurrentProgress != null) { + if (mCurrentProgress.isVisible()) { mCurrentProgress.dismiss(); - mCurrentProgress = null; } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java new file mode 100644 index 00000000..e4da916a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Subcomponent; + +@Subcomponent +public interface BaseActivityComponent { + + @Subcomponent.Factory + interface Factory { + BaseActivityComponent create(); + } + + void inject(BaseActivity baseActivity); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java new file mode 100644 index 00000000..eb3d3500 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivityModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Module; + +@Module(subcomponents = BaseActivityComponent.class) +public class BaseActivityModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java index 7ede3676..5b932074 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.core.expansion; -import android.app.Dialog; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; @@ -15,11 +14,12 @@ import androidx.fragment.app.FragmentTransaction; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class BaseDialogFragment extends DialogFragment { private boolean mBarcodeListener = false; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; public BaseDialogFragment() { super(); @@ -82,7 +82,7 @@ public class BaseDialogFragment extends DialogFragment { // new Thread(() -> { requireActivity().runOnUiThread(() -> { if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(requireActivity()); } }); // }).start(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java index 6db30d6e..7c6281b1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java @@ -1,21 +1,30 @@ package it.integry.integrywmsnative.core.expansion; -import android.app.Dialog; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public abstract class BaseFragment extends Fragment { - protected Dialog mCurrentProgress; + @Inject + public DialogProgressView mCurrentProgress; protected ElevatedToolbar mToolbar; @@ -26,11 +35,22 @@ public abstract class BaseFragment extends Fragment { mToolbar = toolbar; } - public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = super.onCreateView(inflater, container, savedInstanceState); + + MainApplication.appComponent + .baseFragmentComponent() + .create() + .inject(this); + + return view; + } public void onLoadingStarted() { new Thread(() -> { @@ -65,24 +85,23 @@ public abstract class BaseFragment extends Fragment { } protected void openProgress() { - getActivity().runOnUiThread(() -> { - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + requireActivity().runOnUiThread(() -> { + if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) { + this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag"); } }); } protected void closeProgress() { - getActivity().runOnUiThread(() -> { - if (mCurrentProgress != null) { + requireActivity().runOnUiThread(() -> { + if (mCurrentProgress.isVisible()) { mCurrentProgress.dismiss(); - mCurrentProgress = null; } }); } protected void popMe() { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { ((IPoppableActivity) requireActivity()).pop(); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java new file mode 100644 index 00000000..91e1cacb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Subcomponent; + +@Subcomponent +public interface BaseFragmentComponent { + + @Subcomponent.Factory + interface Factory { + BaseFragmentComponent create(); + } + + void inject(BaseFragment baseFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java new file mode 100644 index 00000000..2b161e90 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragmentModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.expansion; + +import dagger.Module; + +@Module(subcomponents = BaseFragmentComponent.class) +public class BaseFragmentModule { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java deleted file mode 100644 index 32f4fa16..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdateApp.java +++ /dev/null @@ -1,60 +0,0 @@ -package it.integry.integrywmsnative.core.update; - -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.Environment; -import android.util.Log; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; - -public class UpdateApp extends AsyncTask { - private Context context; - public void setContext(Context contextf){ - context = contextf; - } - - @Override - protected Void doInBackground(String... arg0) { - try { - URL url = new URL(arg0[0]); - HttpURLConnection c = (HttpURLConnection) url.openConnection(); - c.setRequestMethod("GET"); - c.setDoOutput(true); - c.connect(); - - File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); - file.mkdirs(); - File outputFile = new File(file, "update.apk"); - if(outputFile.exists()){ - outputFile.delete(); - } - FileOutputStream fos = new FileOutputStream(outputFile); - - InputStream is = c.getInputStream(); - - byte[] buffer = new byte[1024]; - int len1 = 0; - while ((len1 = is.read(buffer)) != -1) { - fos.write(buffer, 0, len1); - } - fos.close(); - is.close(); - - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(Uri.fromFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)), "application/vnd.android.package-archive"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error! - context.startActivity(intent); - - - } catch (Exception e) { - Log.e("UpdateAPP", "Update error! " + e.getMessage()); - } - return null; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java index f978434a..3ba6afeb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java @@ -1,30 +1,35 @@ package it.integry.integrywmsnative.core.update; -import android.app.Activity; -import android.app.DownloadManager; -import android.content.BroadcastReceiver; -import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.net.Uri; import android.os.Build; import android.os.Environment; +import androidx.appcompat.app.AppCompatActivity; + import com.github.javiersantos.appupdater.AppUpdater; import com.github.javiersantos.appupdater.enums.Display; import com.github.javiersantos.appupdater.enums.UpdateFrom; import java.io.File; -import it.integry.integrywmsnative.R; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.FileDownloader; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; +@Singleton public class UpdatesManager { - public static void init(Activity context) { + private AppCompatActivity mContext; + + public void init(AppCompatActivity activityContext) { + this.mContext = activityContext; + String suffix; ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); try { @@ -40,64 +45,67 @@ public class UpdatesManager { String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk"; - AppUpdater appUpdater = new AppUpdater(context) + AppUpdater appUpdater = new AppUpdater(mContext) .setDisplay(Display.DIALOG) .setUpdateFrom(UpdateFrom.JSON) .setUpdateJSON(currentVersionUrl) .setButtonDoNotShowAgain(null) .setButtonUpdateClickListener((dialog, which) -> { - installAPK(context, currentDownloadUrl); + installAPK(currentDownloadUrl); }); appUpdater.start(); } - private static void installAPK(Activity context, String downloadURL) { + private void installAPK(String downloadURL) { + String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; - String fileName = context.getResources().getString(R.string.app_name) + ".apk"; - destination += fileName; - final Uri uri = Uri.parse("file://" + destination); - //Delete update file if exists - final File file = new File(destination); - if (file.exists()) - file.delete(); + var progressDialog = DialogProgressView.newInstance("Download", null, false); + progressDialog.show(mContext.getSupportFragmentManager(), "tag"); - //set downloadmanager - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadURL)); - request.setDescription(context.getString(R.string.notification_update_download)); - request.setTitle(context.getString(R.string.app_name)); - //set destination - request.setDestinationUri(uri); + var fileDownloader = new FileDownloader() + .setDestFolder(destination) + .setUrlString(downloadURL) + .setOnProgressUpdate(progress -> { + mContext.runOnUiThread(() -> { + progressDialog.setProgress(progress); + }); + }) + .setOnDownloadCompleted(destPath -> { - // get download service and enqueue file - final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); - manager.enqueue(request); + mContext.runOnUiThread(() -> { + progressDialog.dismiss(); - //set BroadcastReceiver to install app when .apk is downloaded - BroadcastReceiver onComplete = new BroadcastReceiver() { - public void onReceive(Context ctxt, Intent i) { + Uri fileLoc; + Intent intent; - Uri fileLoc; - Intent intent; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); + fileLoc = GenericFileProvider.getUriForFile(mContext, + mContext.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider", + new File(destPath)); + } else { + intent = new Intent(Intent.ACTION_VIEW); + fileLoc = Uri.fromFile(new File(destPath)); + } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); - fileLoc = GenericFileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider", file); - } else { - intent = new Intent(Intent.ACTION_VIEW); - fileLoc = Uri.fromFile(file); - } + intent.setDataAndType(fileLoc, "application/vnd.android.package-archive"); + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); - intent.setDataAndType(fileLoc, "application/vnd.android.package-archive"); - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); + mContext.startActivity(intent); + }); - context.startActivity(intent); + }); + + + new Thread(() -> { + try { + fileDownloader.download(); + } catch (Exception e) { + e.printStackTrace(); } - }; - - //register receiver for when .apk download is compete - context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); + }).start(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java new file mode 100644 index 00000000..a3718bee --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/FileDownloader.java @@ -0,0 +1,113 @@ +package it.integry.integrywmsnative.core.utility; + +import android.webkit.URLUtil; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; + +public class FileDownloader { + + private String urlString; + private String destFolder; + + private RunnableArgs onProgressUpdate; + private RunnableArgs onDownloadCompleted; + + + public void download() throws Exception { + InputStream input = null; + OutputStream output = null; + HttpURLConnection connection = null; + String destPathFile; + + try { + File direct = new File(destFolder); + if (!direct.exists()) { + direct.mkdirs(); + } + + URL url = new URL(urlString); + connection = (HttpURLConnection) url.openConnection(); + connection.connect(); + connection.setConnectTimeout(120 * 1000); + + if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) + throw new Exception("Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage()); + + input = connection.getInputStream(); + int totalBytesToDownload = connection.getContentLength(); + int downloadedBytes = 0; + + String title = URLUtil.guessFileName(String.valueOf(url), null, null); + + destPathFile = destFolder + title; + + if (new File(destPathFile).exists()) + new File(destPathFile).delete(); + + output = new FileOutputStream(destPathFile); + + byte[] buf = new byte[1024]; + int len; + while ((len = input.read(buf)) > 0) { + output.write(buf, 0, len); + + downloadedBytes += len; + if (onProgressUpdate != null) + onProgressUpdate.run((downloadedBytes * 100) / totalBytesToDownload); + } + + } catch (Exception e) { + throw e; + + } finally { + try { + if (output != null) + output.close(); + if (input != null) + input.close(); + } catch (IOException ignored) { + } + if (connection != null) + connection.disconnect(); + } + + if (onDownloadCompleted != null) onDownloadCompleted.run(destPathFile); + } + + + public String getUrlString() { + return urlString; + } + + public FileDownloader setUrlString(String urlString) { + this.urlString = urlString; + return this; + } + + public String getDestFolder() { + return destFolder; + } + + public FileDownloader setDestFolder(String destFolder) { + this.destFolder = destFolder; + return this; + } + + public FileDownloader setOnProgressUpdate(RunnableArgs onProgressUpdate) { + this.onProgressUpdate = onProgressUpdate; + return this; + } + + public FileDownloader setOnDownloadCompleted(RunnableArgs onDownloadCompleted) { + this.onDownloadCompleted = onDownloadCompleted; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index 0b1b6e37..e43108db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.core.utility; -import android.app.Dialog; import android.content.Context; import android.text.Html; @@ -13,6 +12,7 @@ import com.orhanobut.logger.Logger; import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.rest.CommonRESTException; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class UtilityExceptions { @@ -21,9 +21,9 @@ public class UtilityExceptions { }; - public static void defaultException(Context context, Exception ex, Dialog progressDialog) { + public static void defaultException(Context context, Exception ex, DialogProgressView progressDialog) { defaultException(context, ex); - if (progressDialog != null) progressDialog.dismiss(); + if (progressDialog != null && progressDialog.isVisible()) progressDialog.dismiss(); } public static void defaultException(Context context, Exception ex) { 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 800c42c3..17887c96 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 @@ -1,25 +1,21 @@ package it.integry.integrywmsnative.core.utility; -import android.app.Dialog; -import android.content.Context; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentActivity; -import it.integry.integrywmsnative.view.dialogs.DialogProgress; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class UtilityProgress { - public static Dialog createDefaultProgressDialog(Context mContext) { -// final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting), -// mContext.getText(R.string.loading) + " ...", true); -// -// return progress; - - Dialog progress = DialogProgress.make(mContext); - progress.show(); + public static DialogProgressView createDefaultProgressDialog(FragmentActivity mContext) { + var progress = DialogProgressView.newInstance(); + progress.show(mContext.getSupportFragmentManager(), "tag"); return progress; } - public static Dialog createDefaultProgressDialog(Context mContext,String subtitle) { - Dialog progress = DialogProgress.make(mContext,subtitle); - progress.show(); + + public static DialogProgressView createDefaultProgressDialog(AppCompatActivity mContext, String title, String subtitle) { + DialogProgressView progress = DialogProgressView.newInstance(title, subtitle, true); + progress.show(mContext.getSupportFragmentManager(), "tag"); return progress; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java index 0c76e122..2ba06186 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java @@ -67,6 +67,9 @@ public class MainActivity extends BaseActivity @Inject MainContext mainContext; + @Inject + UpdatesManager updatesManager; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -79,7 +82,7 @@ public class MainActivity extends BaseActivity mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false); setContentView(mBinding.getRoot()); - UpdatesManager.init(this); + updatesManager.init(this); UtilityContext.initMainActivity(this); setSupportActionBar(mBinding.appBarMain.toolbar); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index af2c9bba..a06313bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -138,6 +138,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main_ordini_uscita, container, false); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index 60abff71..35cfdf25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -1,8 +1,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto; -import android.app.Dialog; import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.text.Html; import android.text.SpannableString; @@ -25,7 +23,6 @@ import javax.inject.Inject; import it.integry.integrywmsnative.MainApplication; 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.ArticoliOrdineRepository; @@ -41,12 +38,13 @@ 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.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.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_ordini_acquisto.ui.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment { @@ -55,7 +53,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled private OrdineAcquistoPvHelper mHelper; private Griglia mGriglia; private OrdineAcquistoPvOpenListAdapter mAdapter; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; private final List mRenderedOrderList = new ArrayList<>(); private boolean mRedirectToNewOrder = true; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index 66175187..9b746822 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs; -import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.graphics.Color; @@ -8,6 +7,7 @@ import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.FragmentActivity; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.R; @@ -21,13 +21,14 @@ 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.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogScanLisA { - private Activity mContext; + private FragmentActivity mContext; private BaseDialog mDialog; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; private final DialogScanCodiceGrigliaBinding mBinding; @@ -38,7 +39,7 @@ public class DialogScanLisA { private GrigliaRepository mGrigliaRepository; private Griglia mGriglia; - private DialogScanLisA(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { + private DialogScanLisA(FragmentActivity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { mOnDialogDismiss = null; mContext = context; mGrigliaRepository = grigliaRepository; @@ -58,7 +59,7 @@ public class DialogScanLisA { } - public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { + public static Dialog make(FragmentActivity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { return new DialogScanLisA(context, grigliaRepository, helper, onDialogDismiss).mDialog; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index db11171d..91b09a44 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze; -import android.app.Dialog; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.ColorStateList; @@ -58,6 +57,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; @@ -82,7 +82,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr private int barcodeScannerIstanceID = -1; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; public RettificaGiacenzeFragment() { // Required empty public constructor @@ -341,7 +341,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr if (ex instanceof InvalidPesoKGException) { UtilityToast.showToast(ex.getMessage()); } else { - UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + UtilityExceptions.defaultException(requireActivity(), ex, mCurrentProgress); } BarcodeManager.enable(); 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 deleted file mode 100644 index d29dc050..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java +++ /dev/null @@ -1,61 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs; - -import android.app.Dialog; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; - -import androidx.databinding.DataBindingUtil; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.databinding.DialogProgressBinding; - -public class DialogProgress { - - private Context mContext; - private DialogProgressBinding mBinding; - - 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; - } - - - - private DialogProgress(Context context) { - mContext = context; - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, null, false); - -// final Thread[] progressBarThread = new Thread[1]; - - mDialog = new Dialog(mContext); - mDialog.setContentView(mBinding.getRoot()); - mDialog.setCanceledOnTouchOutside(false); - mDialog.setCancelable(false); - mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - mDialog.setOnShowListener(dialog -> { -// ((ProgressBar) currentView.findViewById(R.id.progressBar)).setIndeterminate(true); -// progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(mBinding.progressBar); - }); - - mDialog.setOnDismissListener(dialog -> { -// progressBarThread[0].interrupt(); - }); - } - - private void setSubtitle(String subtitle){ - mBinding.subtitleText.setText(subtitle); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java new file mode 100644 index 00000000..405d04e4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java @@ -0,0 +1,88 @@ +package it.integry.integrywmsnative.view.dialogs; + +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Build; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.DialogFragment; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogProgressBinding; + +@Singleton +public class DialogProgressView extends DialogFragment { + + private DialogProgressBinding mBindings; + + private String title; + private String subtitle; + private boolean indeterminateProgress; + + public static DialogProgressView newInstance(String title, String subtitle, boolean indeterminate) { + return new DialogProgressView() + .setIndeterminateProgress(indeterminate) + .setTitle(title) + .setSubtitle(subtitle); + } + + public static DialogProgressView newInstance() { + return newInstance(null, null, true); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, container, false); + + getDialog().setCanceledOnTouchOutside(false); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireActivity().getString(R.string.loading) : title); + + mBindings.setSubtitle(subtitle); + mBindings.progressBar.setIndeterminate(isIndeterminateProgress()); + + if(!isIndeterminateProgress()){ + mBindings.progressBar.setMax(100); + } + + return mBindings.getRoot(); + } + + + public boolean isIndeterminateProgress() { + return indeterminateProgress; + } + + public DialogProgressView setIndeterminateProgress(boolean indeterminateProgress) { + this.indeterminateProgress = indeterminateProgress; + return this; + } + + + public DialogProgressView setTitle(String title) { + this.title = title; + return this; + } + + public DialogProgressView setSubtitle(String subtitle) { + this.subtitle = subtitle; + return this; + } + + public void setProgress(int progress) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + mBindings.progressBar.setProgress(progress, true); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index 0c472d2f..835431de 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; -import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; @@ -42,6 +41,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogChooseArtsFromListaArts extends BaseDialogFragment { @@ -62,7 +62,7 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final List mDataset; private int mBarcodeScannerIstanceID; - private Dialog mCurrentProgress; + private DialogProgressView mCurrentProgress; private MtbAart selectedArt; public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java index 82d6604e..df570d41 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java @@ -8,6 +8,7 @@ import android.view.LayoutInflater; import android.widget.ArrayAdapter; import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.FragmentActivity; import com.annimon.stream.Optional; import com.annimon.stream.Stream; @@ -24,24 +25,25 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogInputPeso { - private Context mContext; - private DialogInputPesoLuBinding mBindings; - private DialogInputPesoViewModel mViewModel; - private Dialog currentDialog; + private final FragmentActivity mContext; + private final DialogInputPesoLuBinding mBindings; + private final DialogInputPesoViewModel mViewModel; + private final Dialog currentDialog; private List codTcolList = null; private ArrayAdapter codTcolArrayAdapter = null; - public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { + public static Dialog make(final FragmentActivity context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog; } - private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { + private DialogInputPeso(final FragmentActivity context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { this.mContext = context; @@ -91,7 +93,7 @@ public class DialogInputPeso { private void init() { - final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); + final DialogProgressView progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); MagazzinoRESTConsumer.getTipiColloStatic(codTcols -> { this.codTcolList = codTcols; diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/dialog_progress.xml index 53d8ac4a..b9d76f88 100644 --- a/app/src/main/res/layout/dialog_progress.xml +++ b/app/src/main/res/layout/dialog_progress.xml @@ -6,6 +6,11 @@ + + + @@ -28,15 +33,13 @@ Date: Wed, 23 Feb 2022 12:42:30 +0100 Subject: [PATCH 30/32] Migliorato rendering di dialog ask cliente e fix su check delle posizioni da cache --- .../core/expansion/BaseFragment.java | 14 +- .../core/utility/UtilityPosizione.java | 7 +- .../picking_libero/PickingLiberoFragment.java | 9 +- .../PickingLiberoViewModel.java | 3 +- .../ask_cliente/DialogAskClienteAdapter.java | 41 +++--- .../ask_cliente/DialogAskClienteView.java | 18 +-- .../DialogAskCliente_Page1ViewModel.java | 34 +++-- .../DialogAskCliente_Page2ViewModel.java | 30 ++-- .../main/res/layout/dialog_ask_cliente.xml | 53 +------ .../res/layout/dialog_ask_cliente__page1.xml | 109 +++++++------- .../res/layout/dialog_ask_cliente__page2.xml | 134 ++++++++---------- 11 files changed, 205 insertions(+), 247 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java index 7c6281b1..a11f7412 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java @@ -53,21 +53,17 @@ public abstract class BaseFragment extends Fragment { } public void onLoadingStarted() { - new Thread(() -> { - BarcodeManager.disable(); - this.openProgress(); - }).start(); + BarcodeManager.disable(); + this.openProgress(); } public void onLoadingEnded() { - new Thread(() -> { - this.closeProgress(); - BarcodeManager.enable(); - }).start(); + this.closeProgress(); + BarcodeManager.enable(); } public void onError(Exception ex) { - this.getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { this.closeProgress(); UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityPosizione.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityPosizione.java index 67974ed9..de3b328f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityPosizione.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityPosizione.java @@ -31,10 +31,13 @@ public class UtilityPosizione { } public static MtbDepoPosizione getFromCache(String posizione) { - List tmpList = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) + var availablePosizioni = SettingsManager.iDB().getAvailablePosizioni(); + if(availablePosizioni == null) return null; + + List tmpList = Stream.of(availablePosizioni) .filter(x -> x.getPosizione().equalsIgnoreCase(posizione)).toList(); - if(tmpList != null && tmpList.size() > 0) return tmpList.get(0); + if(tmpList.size() > 0) return tmpList.get(0); else return null; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index e262a91a..49931645 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -155,6 +155,8 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); + + BarcodeManager.enable(); } private void initBottomSheet() { @@ -199,10 +201,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme }; public void createNewLU() { - this.onLoadingStarted(); - this.mViewModel.createNewLU(null, null, () -> { - this.onLoadingEnded(); }); } @@ -227,7 +226,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme @Override public void onLUOpened(MtbColt mtbColt) { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { mToolbarTitleText.setText(String.format(getActivity().getText(R.string.lu_number_text).toString(), mtbColt.getNumCollo())); initAdapter(); @@ -248,7 +247,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme @Override public void onLUClosed() { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { mToolbarTitleText.setText(getActivity().getText(R.string.free_picking_title_fragment).toString()); destroyAdapter(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index ba319efc..9224d462 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -229,7 +229,6 @@ public class PickingLiberoViewModel { public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { if (this.mFlagAskCliente) { - this.sendOnLoadingEnded(); this.sendLUClienteRequired((vtbDest, codJcom) -> { createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete); }, () -> { @@ -276,6 +275,8 @@ public class PickingLiberoViewModel { this.mCurrentMtbColt = mtbColt; + this.sendOnLoadingEnded(); + if (onComplete != null) onComplete.run(); this.sendLUOpened(mtbColt); }, this::sendError); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java index 21db78f8..74fcf726 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java @@ -23,17 +23,31 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAsk public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener { - private Context mContext; + private final Context mContext; - private List> mDatasetLayout; - private List> mDatasetViews; + private final List>> mDatasetLayout; + private final List> mDatasetViews; + private final List mDatasetViewModels; private DeactivatableViewPager viewPager; - public DialogAskClienteAdapter(Context context, List> datasetLayouts) { + public DialogAskClienteAdapter(Context context, List>> datasetLayouts) { this.mContext = context; this.mDatasetLayout = datasetLayouts; this.mDatasetViews = new ArrayList<>(); + this.mDatasetViewModels = new ArrayList<>(); + + + for (var viewModelEntry : mDatasetLayout) { + var viewModelClazz = viewModelEntry.getValue(); + + try { + IDialogAskClienteViewModel viewModel = viewModelClazz.newInstance(); + mDatasetViewModels.add(viewModel); + } catch (IllegalAccessException | InstantiationException e) { + e.printStackTrace(); + } + } } @@ -43,20 +57,13 @@ public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.O Integer viewId = mDatasetLayout.get(position).getKey(); - LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false); + ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, container, false); - Class viewModelClass = mDatasetLayout.get(position).getValue(); - IDialogAskClienteViewModel viewModel = null; - try { - viewModel = (IDialogAskClienteViewModel) viewModelClass.newInstance(); - viewModel.setBinding(mBinding); - viewModel.setContext(mContext); - } catch (IllegalAccessException | InstantiationException e) { - e.printStackTrace(); - } + var viewModel = this.mDatasetViewModels.get(position); + viewModel.setBinding(mBinding); + viewModel.setContext(mContext); mBinding.setVariable(BR.viewmodel, viewModel); @@ -82,10 +89,10 @@ public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.O return mDatasetLayout.size(); } - public IDialogAskClienteViewModel getViewModel(@NonNull int layoutID) { + public IDialogAskClienteViewModel getViewModel(int layoutID) { for(int i = 0; i < mDatasetLayout.size(); i++) { if(mDatasetLayout.get(i).getKey() == layoutID) { - return this.mDatasetViews.get(i).getValue(); + return this.mDatasetViewModels.get(i); } } return null; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteView.java index cbd5f1d8..7a24d2b2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteView.java @@ -31,6 +31,7 @@ import it.integry.integrywmsnative.databinding.DialogAskClienteBinding; import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO; import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel; import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel; public class DialogAskClienteView extends BaseDialogFragment { @@ -45,7 +46,7 @@ public class DialogAskClienteView extends BaseDialogFragment { private boolean mIsClienteSelected = false; public static DialogAskClienteView newInstance(@NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { - return new DialogAskClienteView( onComplete, onAbort); + return new DialogAskClienteView(onComplete, onAbort); } private DialogAskClienteView(@NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { @@ -69,7 +70,7 @@ public class DialogAskClienteView extends BaseDialogFragment { getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - List> views = new ArrayList<>(); + List>> views = new ArrayList<>(); views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page1, DialogAskCliente_Page1ViewModel.class)); views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page2, DialogAskCliente_Page2ViewModel.class)); @@ -79,9 +80,7 @@ public class DialogAskClienteView extends BaseDialogFragment { mBindings.viewpager.addOnPageChangeListener(mAdapter); mBindings.viewpager.setCurrentItem(0, false); - getDialog().setOnShowListener(d -> { - this.initView(); - }); + this.initView(); return mBindings.getRoot(); } @@ -93,11 +92,6 @@ public class DialogAskClienteView extends BaseDialogFragment { } - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - } - private void initView() { DialogAskCliente_Page1ViewModel viewModel1 = (DialogAskCliente_Page1ViewModel) mAdapter.getViewModel(R.layout.dialog_ask_cliente__page1); DialogAskCliente_Page2ViewModel viewModel2 = (DialogAskCliente_Page2ViewModel) mAdapter.getViewModel(R.layout.dialog_ask_cliente__page2); @@ -106,7 +100,7 @@ public class DialogAskClienteView extends BaseDialogFragment { .setOnConfirmClickListener(() -> { String codAnag = viewModel1.getCurrentCliente(); - if(UtilityString.isNullOrEmpty(codAnag)) { + if (UtilityString.isNullOrEmpty(codAnag)) { this.mIsClienteSelected = true; dismiss(); mOnComplete.run(null, null); @@ -134,7 +128,7 @@ public class DialogAskClienteView extends BaseDialogFragment { @Override public void onDismiss(@NonNull DialogInterface dialog) { mAdapter.onDismiss(); - if(!mIsClienteSelected) { + if (!mIsClienteSelected) { this.mOnAbort.run(); } super.onDismiss(dialog); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java index 608c2269..ba437361 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java @@ -40,7 +40,10 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod private int mBarcodeScannerInstanceID; private ArrayList availableClienti; - private ObservableArrayList codJcoms = new ObservableArrayList<>(); + private final ObservableArrayList codJcoms = new ObservableArrayList<>(); + + private Runnable onConfirmClickListener; + private Runnable onAbortClickListener; public DialogAskCliente_Page1ViewModel() { @@ -104,6 +107,20 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod } }); + this.mBinding.buttonYes.setOnClickListener(v -> { + if (validateCliente()) { + this.resetClienteError(); + BarcodeManager.removeCallback(mBarcodeScannerInstanceID); + if (onConfirmClickListener != null) onConfirmClickListener.run(); + } else { + this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString()); + } + }); + + this.mBinding.buttonNo.setOnClickListener(v -> { + if (onAbortClickListener != null) onAbortClickListener.run(); + }); + } @Override @@ -113,16 +130,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod @Override public void setOnConfirmClickListener(Runnable onConfirm) { - this.mBinding.buttonYes.setOnClickListener(v -> { - if (validateCliente()) { - this.resetClienteError(); - BarcodeManager.removeCallback(mBarcodeScannerInstanceID); - if (onConfirm != null) onConfirm.run(); - } else { - this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString()); - } - - }); + this.onConfirmClickListener = onConfirm; } @@ -174,9 +182,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod @Override public void setOnAbortClickListener(Runnable onAbort) { - this.mBinding.buttonNo.setOnClickListener(v -> { - if (onAbort != null) onAbort.run(); - }); + this.onAbortClickListener = onAbort; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java index 2d4afc7b..d38aefef 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java @@ -25,6 +25,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod private Context mContext; private Runnable mOnConfirm; + private Runnable mOnAbort; private List availableDestinatari; @@ -69,6 +70,21 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod } }); + + + this.mBinding.buttonYes.setOnClickListener(v -> { + if (validateDestinatario()) { + this.resetClienteError(); + if (mOnConfirm != null) mOnConfirm.run(); + } else { + this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString()); + } + }); + + + this.mBinding.buttonNo.setOnClickListener(v -> { + if (mOnAbort != null) mOnAbort.run(); + }); } @Override @@ -78,22 +94,11 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod @Override public void setOnConfirmClickListener(Runnable onConfirm) { this.mOnConfirm = onConfirm; - this.mBinding.buttonYes.setOnClickListener(v -> { - if (validateDestinatario()) { - this.resetClienteError(); - if (onConfirm != null) onConfirm.run(); - } else { - this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString()); - } - - }); } @Override public void setOnAbortClickListener(Runnable onAbort) { - this.mBinding.buttonNo.setOnClickListener(v -> { - if (onAbort != null) onAbort.run(); - }); + this.mOnAbort = onAbort; } public void setCodAnag(String codAnag) { @@ -102,7 +107,6 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod private void initializeAdapter(ArrayList items) { - DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items); diff --git a/app/src/main/res/layout/dialog_ask_cliente.xml b/app/src/main/res/layout/dialog_ask_cliente.xml index a98e4009..746c356d 100644 --- a/app/src/main/res/layout/dialog_ask_cliente.xml +++ b/app/src/main/res/layout/dialog_ask_cliente.xml @@ -1,63 +1,24 @@ - - - - - - - - - - - - - - - - - - - - + android:layout_height="0dp" + android:layout_margin="24dp" /> - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_cliente__page1.xml b/app/src/main/res/layout/dialog_ask_cliente__page1.xml index 34c2065a..b89e8b23 100644 --- a/app/src/main/res/layout/dialog_ask_cliente__page1.xml +++ b/app/src/main/res/layout/dialog_ask_cliente__page1.xml @@ -3,55 +3,59 @@ + - - - - - - - - + + + + + + + android:hint="@string/customer" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/description_text"> + android:ellipsize="end" + android:singleLine="true" /> @@ -60,64 +64,55 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="@string/job"> + android:hint="@string/job" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/input_cliente"> + android:ellipsize="end" + android:singleLine="true" /> - - - - - + app:layout_constraintGuide_percent="0.5" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/input_commessa" + app:strokeColor="@color/colorPrimary" /> + app:layout_constraintStart_toStartOf="@id/center_buttons_guideline" + app:layout_constraintTop_toBottomOf="@id/input_commessa" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_cliente__page2.xml b/app/src/main/res/layout/dialog_ask_cliente__page2.xml index 4500a471..a110ea93 100644 --- a/app/src/main/res/layout/dialog_ask_cliente__page2.xml +++ b/app/src/main/res/layout/dialog_ask_cliente__page2.xml @@ -3,104 +3,96 @@ + - + android:orientation="vertical"> - - - + + - - + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:layout_marginBottom="8dp" + android:gravity="start" + android:text="@string/select_a_recipient_message" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/title_text" /> - + + + android:ellipsize="end" + android:singleLine="true" /> - - - - + - - - - - + android:orientation="vertical" + app:layout_constraintGuide_percent="0.5" /> - + - + - - - + \ No newline at end of file From ee8751163c1037627cfb5d1033639f5d3d845b7b Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 23 Feb 2022 12:49:59 +0100 Subject: [PATCH 31/32] aggiunto campo colli in arrivo in ordini di acquisto pv --- .../data_store/db/entity/ArticoloOrdine.java | 4 + .../PVOrdiniAcquistoGrigliaFragment.java | 2 +- .../res/layout/dialog_pv_edit_articolo.xml | 85 +++++++++++++++++++ ...coli_ordine_acquisto__list_single_item.xml | 24 +++--- app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 105 insertions(+), 12 deletions(-) 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 5ee30523..cb8364da 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 @@ -242,4 +242,8 @@ public class ArticoloOrdine { public void setNewNoPromo(boolean newNoPromo) { this.newNoPromo = newNoPromo; } + + public float getCnfDaRic() { + return qtaCnf > 0.f ? merceDaRic / qtaCnf : 0; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index 35cfdf25..0d5c1a58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -175,7 +175,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled } private void editOrdine(Ordine ordine) { - requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(),ordine)); + requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine)); } 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 32964cca..ed37da18 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -224,6 +224,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 572eb7b3..055c1bcd 100644 --- 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 @@ -32,19 +32,9 @@ - - + + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b3c8e888..c801f0ae 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -378,4 +378,5 @@ giorni Nuovo articolo in griglia Seleziona la riga da modificare + Colli in arrivo \ 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 2088df9c..1a3ecbc5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -387,4 +387,5 @@ days Newly added product Select document row to edit + Incoming packages From d81e0dd72cdb918dc68e597457d445760f60540e Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 23 Feb 2022 12:50:40 +0100 Subject: [PATCH 32/32] -> v1.23.6 (261) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 857ce962..fbc4f617 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 260 - def appVersionName = '1.23.5' + def appVersionCode = 261 + def appVersionName = '1.23.6' signingConfigs { release {