From e1b4af24028aea7906dc167ad86b6b109973c9e3 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 22 Feb 2022 13:14:56 +0100 Subject: [PATCH 01/14] 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 02/14] 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 03/14] -> 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 04/14] 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 05/14] 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 06/14] 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 07/14] 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 08/14] -> 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 { From 9765fe180799682ed68d1a346bda1788bd784b11 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 24 Feb 2022 10:04:01 +0100 Subject: [PATCH 09/14] Completato refactoring del dialog ask cliente --- .../MainApplicationComponent.java | 7 +- .../MainApplicationModule.java | 7 + .../AccettazionePickingActivity.java | 11 +- .../edit_form/DocInterniEditFormActivity.java | 11 +- .../picking_libero/PickingLiberoFragment.java | 14 +- .../picking_resi/PickingResiActivity.java | 11 +- .../ProdRecuperoMaterialeFragment.java | 11 +- .../RettificaGiacenzeFragment.java | 26 ++-- .../gest/spedizione/SpedizioneActivity.java | 15 ++- .../VersamentoMerceFragment.java | 15 ++- .../view/dialogs/DialogProgressView.java | 2 +- .../DialogAskClienteComponent.java | 14 ++ .../ask_cliente/DialogAskClienteModule.java | 7 + .../ask_cliente/DialogAskClienteView.java | 120 ++++++++++++++++-- .../DialogAskCliente_Page1ViewModel.java | 68 ++-------- .../DialogAskCliente_Page2ViewModel.java | 44 +++---- .../DialogAskCliente_Page2_ArrayAdapter.java | 2 +- .../DialogInputQuantityV2View.java | 35 +++-- .../res/layout/dialog_ask_cliente__page2.xml | 1 + 19 files changed, 271 insertions(+), 150 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteModule.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index b75c3411..05d0c4dc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -65,6 +65,8 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviForn import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; @@ -119,7 +121,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DocInterniModule.class, DialogSelectDocInfoModule.class, DocInterniEditFormModule.class, - DialogSelectDocRowsModule.class + DialogSelectDocRowsModule.class, + DialogAskClienteModule.class }) public interface MainApplicationComponent { @@ -161,6 +164,8 @@ public interface MainApplicationComponent { OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); + DialogAskClienteComponent.Factory dialogAskClienteComponent(); + DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); DialogInputLUProdComponent.Factory dialogInputLUProdComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 0c9c7f38..66a9c84d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.update.UpdatesManager; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; import it.integry.integrywmsnative.view.dialogs.DialogProgressView; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @Module public class MainApplicationModule { @@ -85,6 +86,12 @@ public class MainApplicationModule { return DialogProgressView.newInstance(); } + @Provides + @Singleton + DialogInputQuantityV2View providesDialogInputQuantityV2View() { + return new DialogInputQuantityV2View(); + } + @Provides @Singleton OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { 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 6857bda6..f945d8ab 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 @@ -85,6 +85,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta @Inject AccettazionePickingViewModel mViewModel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + private final AccettazionePickingFiltroOrdineViewModel mAppliedFilterViewModel = new AccettazionePickingFiltroOrdineViewModel(); private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; @@ -833,8 +836,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta .setCanLUBeClosed(true) .setCanOverflowOrderQuantity(canOverflowQuantity); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setQtaCnf(resultDTO.getQtaCnf()) @@ -842,9 +846,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta .setPartitaMag(resultDTO.getPartitaMag()) .setDataScad(resultDTO.getDataScad()); onComplete.run(pickedQuantityDTO, shouldCloseLU); - }, () -> { - this.mViewModel.resetMatchedRows(); }) + .setOnAbort(() -> this.mViewModel.resetMatchedRows()) .show(getSupportFragmentManager(), "tag"); } 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 88527b6c..04f4a5c4 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 @@ -55,9 +55,13 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter @Inject MtbColrRepository documentRowsRepository; + @Inject DocInterniEditFormViewModel viewModel; + @Inject + DialogInputQuantityV2View dialogInputQuantityV2View; + private int mBarcodeScannerIstanceID; private ActivityContabDocInterniEditBinding binding; @@ -245,11 +249,12 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } return partitaMag; }); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + dialogInputQuantityV2View.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { this.onLoadingStarted(); this.viewModel.saveRow(row, resultDTO); - }, this::onLoadingEnded) + }) + .setOnAbort(this::onLoadingEnded) .show(getSupportFragmentManager(), "tag"); } 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 49931645..228518b4 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 @@ -69,6 +69,9 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme @Inject PickingLiberoViewModel mViewModel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false); public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(true); public BindableBoolean thereIsAnyRowInUL = new BindableBoolean(false); @@ -334,8 +337,8 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme .setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanLUBeClosed(canLUBeClosed); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + mDialogInputQuantityV2View.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setQtaCnf(resultDTO.getQtaCnf()) @@ -345,15 +348,14 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme this.openProgress(); onComplete.run(pickedQuantityDTO, shouldCloseLU); - }, () -> { - this.closeProgress(); }) - .show(getActivity().getSupportFragmentManager(), "tag"); + .setOnAbort(this::closeProgress) + .show(requireActivity().getSupportFragmentManager(), "tag"); } @Override public void onRowSaved() { - getActivity().runOnUiThread(() -> { + requireActivity().runOnUiThread(() -> { FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); }); } 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 e78c5c2a..12f32316 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 @@ -64,6 +64,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Inject PickingResiViewModel mViewmodel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; private ObservableArrayList mPickingResiMutableData = new ObservableArrayList<>(); @@ -319,8 +322,9 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag .setCanLUBeClosed(false) .setCanPartitaMagBeChanged(false); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setQtaCnf(resultDTO.getQtaCnf()) @@ -330,7 +334,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag this.openProgress(); onComplete.run(pickedQuantityDTO, shouldCloseLU); - }, () -> { + }) + .setOnAbort(() -> { this.mViewmodel.resetMatchedRows(); }) .show(getSupportFragmentManager(), "tag"); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index 44d33d4b..42a8ae32 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -53,6 +53,9 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl @Inject ProdRecuperoMaterialeViewModel mViewModel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + private FragmentProdRecuperoMaterialeBinding mBinding; private int barcodeScannerIstanceID = -1; @@ -200,8 +203,9 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl .setCanOverflowOrderQuantity(canOverflowOrderQuantity) .setCanLUBeClosed(canLUBeClosed); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setQtaCnf(resultDTO.getQtaCnf()) @@ -210,7 +214,8 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl .setDataScad(resultDTO.getDataScad()); this.mViewModel.onItemDispatched(item, pickedQuantityDTO, sourceMtbColt); - }, this::onLoadingEnded) + }) + .setOnAbort(this::onLoadingEnded) .show(requireActivity().getSupportFragmentManager(), "tag"); } 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 91b09a44..38cdcd44 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 @@ -73,6 +73,9 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr @Inject RettificaGiacenzeViewModel mViewModel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false); public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(false); @@ -320,7 +323,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr thereIsAnOpenedUL.set(false); - if(getActivity() != null) ((IPoppableActivity) getActivity()).pop(); + if (getActivity() != null) ((IPoppableActivity) getActivity()).pop(); } @Override @@ -331,7 +334,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr () -> onComplete.run(true), () -> onComplete.run(false) ) - .show(getActivity().getSupportFragmentManager(), "tag"); + .show(getActivity().getSupportFragmentManager(), "tag"); } @Override @@ -378,8 +381,9 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr .setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanLUBeClosed(canLUBeClosed); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setQtaCnf(resultDTO.getQtaCnf()) @@ -389,15 +393,16 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr this.openProgress(); onComplete.run(pickedQuantityDTO, shouldCloseLU); - }, () -> { + }) + .setOnAbort(() -> { this.closeProgress(); }) - .show(getActivity().getSupportFragmentManager(), "tag"); + .show(requireActivity().getSupportFragmentManager(), "tag"); } @Override public void onRowSaved() { - FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + FBToast.successToast(requireActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); } @@ -450,7 +455,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr null, () -> onComplete.run(true), () -> onComplete.run(false)) - .show(getActivity().getSupportFragmentManager(), "tag");; + .show(getActivity().getSupportFragmentManager(), "tag"); + ; } @Override @@ -461,7 +467,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr null, R.string.button_ignore_print, onComplete) - .show(getActivity().getSupportFragmentManager(), "tag"); + .show(getActivity().getSupportFragmentManager(), "tag"); } @Override @@ -469,7 +475,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> { switch (result) { case YES: - DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { onComplete.run(false, null); } else { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 8c317ed9..b0628b83 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -83,6 +83,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Inject SpedizioneViewModel mViewmodel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; private final ObservableArrayList mSpedizioneMutableData = new ObservableArrayList<>(); @@ -405,7 +408,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .filter(y -> y.getRefMtbColr() != null && - y.getRefMtbColr().getId() == mtbColrToDispatch.getId() + y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /* y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) && y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) && @@ -549,7 +552,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo BigDecimal qtaEvasa = Stream.of(x.getWithdrawMtbColrs()) .filter(y -> y.getRefMtbColr() != null && - y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /* + y.getRefMtbColr().getId() == mtbColrToDispatch.getId() /* y.getRefMtbColr().getNumCollo().equals(mtbColrToDispatch.getNumCollo()) && y.getRefMtbColr().getDataColloD().equals(mtbColrToDispatch.getDataColloD()) && y.getRefMtbColr().getSerCollo().equals(mtbColrToDispatch.getSerCollo()) && @@ -821,8 +824,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo .setCanLUBeClosed(true) .setCanPartitaMagBeChanged(canPartitaMagBeChanged); - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setQtaCnf(resultDTO.getQtaCnf()) @@ -832,7 +836,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.openProgress(); onComplete.run(pickedQuantityDTO, shouldCloseLU); - }, () -> { + }) + .setOnAbort(() -> { this.mViewmodel.resetMatchedRows(); }) .show(getSupportFragmentManager(), "tag"); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index 894194d5..1cb12a44 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -48,6 +48,9 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag @Inject VersamentoMerceViewModel mViewModel; + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + private FragmentMainVersamentoMerceBinding mBindings = null; private final List mOnPreDestroyList = new ArrayList<>(); @@ -202,9 +205,10 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag .setCanPartitaMagBeChanged(canBatchLotBeChanged) .setCanLUBeClosed(false); - this.getActivity().runOnUiThread(() -> { - DialogInputQuantityV2View - .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + this.requireActivity().runOnUiThread(() -> { + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) @@ -215,8 +219,9 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag onComplete.run(pickedQuantityDTO); - }, this::onLoadingEnded) - .show(getActivity().getSupportFragmentManager(), "tag"); + }) + .setOnAbort(this::onLoadingEnded) + .show(requireActivity().getSupportFragmentManager(), "tag"); }); } 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 index 405d04e4..810f8b24 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java @@ -44,7 +44,7 @@ public class DialogProgressView extends DialogFragment { 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); + setCancelable(false); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireActivity().getString(R.string.loading) : title); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteComponent.java new file mode 100644 index 00000000..7ca3e4c9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogAskClienteComponent { + + @Subcomponent.Factory + interface Factory { + DialogAskClienteComponent create(); + } + + void inject(DialogAskClienteView dialogAskClienteView); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteModule.java new file mode 100644 index 00000000..325d21a6 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteModule.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente; + +import dagger.Module; + +@Module(subcomponents = DialogAskClienteComponent.class) +public class DialogAskClienteModule { +} 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 7a24d2b2..22491d4f 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 @@ -14,20 +14,32 @@ import androidx.annotation.Nullable; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.FragmentActivity; +import com.annimon.stream.Stream; +import com.google.gson.reflect.TypeToken; + import org.jetbrains.annotations.NotNull; +import java.lang.reflect.Type; import java.util.AbstractMap; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +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.VtbDest; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.core.utility.UtilityHashMap; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogAskClienteBinding; +import it.integry.integrywmsnative.view.dialogs.DialogProgressView; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO; 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; @@ -45,6 +57,12 @@ public class DialogAskClienteView extends BaseDialogFragment { private boolean mIsClienteSelected = false; + @Inject + SystemRESTConsumer systemRESTConsumer; + + @Inject + DialogProgressView dialogProgressView; + public static DialogAskClienteView newInstance(@NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { return new DialogAskClienteView(onComplete, onAbort); } @@ -69,6 +87,11 @@ public class DialogAskClienteView extends BaseDialogFragment { getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + MainApplication.appComponent + .dialogAskClienteComponent() + .create() + .inject(this); + List>> views = new ArrayList<>(); views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page1, DialogAskCliente_Page1ViewModel.class)); @@ -96,21 +119,19 @@ public class DialogAskClienteView extends BaseDialogFragment { 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); - viewModel1 - .setOnConfirmClickListener(() -> { - String codAnag = viewModel1.getCurrentCliente(); + viewModel1.setOnConfirmClickListener(() -> { + String codAnag = viewModel1.getCurrentCliente(); - if (UtilityString.isNullOrEmpty(codAnag)) { - this.mIsClienteSelected = true; - dismiss(); - mOnComplete.run(null, null); - } + if (UtilityString.isNullOrEmpty(codAnag)) { + this.mIsClienteSelected = true; + dismiss(); + mOnComplete.run(null, null); + } - viewModel2.setCodAnag(codAnag); - - mBindings.viewpager.setCurrentItem(mBindings.viewpager.getCurrentItem() + 1, true); - }); + viewModel2.setCodAnag(codAnag); + mBindings.viewpager.setCurrentItem(mBindings.viewpager.getCurrentItem() + 1, true); + }); viewModel2.setOnConfirmClickListener(() -> { DialogAskClienteDestinatarioDTO cliente = viewModel2.getCurrentDestinatario(); @@ -122,9 +143,84 @@ public class DialogAskClienteView extends BaseDialogFragment { viewModel1.setOnAbortClickListener(this::dismiss); viewModel2.setOnAbortClickListener(this::dismiss); + + + this.dialogProgressView.show(this.getParentFragmentManager(), "tag"); + + this.initClienti(viewModel1, () -> { + this.initDestinatari(viewModel2, () -> { + this.dialogProgressView.dismiss(); + }, () -> { + this.dialogProgressView.dismiss(); + }); + }, () -> { + this.dialogProgressView.dismiss(); + }); } + private void initClienti(DialogAskCliente_Page1ViewModel viewModel, Runnable onComplete, Runnable onAbort) { + Type typeOfObjectsList = new TypeToken>>() { + }.getType(); + + String sqlClienti = "SELECT gtb_anag.cod_anag, rag_soc, jtb_comt.cod_jcom " + + "FROM gtb_anag " + + "LEFT OUTER JOIN jtb_comt ON gtb_anag.cod_anag = jtb_comt.cod_anag " + + "INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " + + "WHERE vtb_clie.flag_stato = 'A' " + + "ORDER BY rag_soc"; + + this.systemRESTConsumer.>>processSql(sqlClienti, typeOfObjectsList, value -> { + var availableClienti = new ArrayList(); + + Stream.of(value) + .groupBy(x -> x.get("codAnag").toString() + " " + x.get("ragSoc").toString()) + .forEach(x -> { + DialogAskClienteClienteDTO dialogAskClienteClienteDTO = new DialogAskClienteClienteDTO(); + dialogAskClienteClienteDTO.setCodAnag(UtilityHashMap.getValueIfExists(x.getValue().get(0), "codAnag")); + dialogAskClienteClienteDTO.setRagSoc(UtilityHashMap.getValueIfExists(x.getValue().get(0), "ragSoc")); + + for (HashMap group : x.getValue()) { + if (group.containsKey("codJcom")) { + dialogAskClienteClienteDTO.getCodJcoms().add(UtilityHashMap.getValueIfExists(group, "codJcom")); + } + } + + availableClienti.add(dialogAskClienteClienteDTO); + }); + + viewModel.setAvailableClienti(availableClienti); + onComplete.run(); + }, ex -> { + onAbort.run(); + }); + } + + private void initDestinatari(DialogAskCliente_Page2ViewModel viewModel, Runnable onComplete, Runnable onAbort) { + String sql = "SELECT vtb_dest.cod_anag,\n" + + " cod_vdes,\n" + + " destinatario,\n" + + " indirizzo,\n" + + " cap,\n" + + " citta,\n" + + " prov,\n" + + " nazione\n" + + "FROM vtb_dest\n" + + "INNER JOIN vtb_clie ON vtb_clie.cod_anag = vtb_dest.cod_anag\n" + + "WHERE vtb_clie.flag_stato = 'A'"; + + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + this.systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + viewModel.setAvailableDestinatari(value); + + onComplete.run(); + }, ex -> { + onAbort.run(); + }); + + } + @Override public void onDismiss(@NonNull DialogInterface dialog) { mAdapter.onDismiss(); 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 ba437361..445f2153 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 @@ -10,12 +10,9 @@ import androidx.databinding.ViewDataBinding; import com.annimon.stream.Optional; import com.annimon.stream.Stream; -import com.google.gson.reflect.TypeToken; import com.tfb.fbtoast.FBToast; -import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; @@ -24,11 +21,8 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityHashMap; import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding; import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO; @@ -46,7 +40,6 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod private Runnable onAbortClickListener; public DialogAskCliente_Page1ViewModel() { - } @Override @@ -59,53 +52,18 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod this.mBinding = (DialogAskClientePage1Binding) binding; } + public void setAvailableClienti(ArrayList availableClienti) { + this.availableClienti = availableClienti; + initializeAdapter(availableClienti); + } + @Override public void onShow() { - String sql = "SELECT gtb_anag.cod_anag, rag_soc, jtb_comt.cod_jcom " + - "FROM gtb_anag " + - "LEFT OUTER JOIN jtb_comt ON gtb_anag.cod_anag = jtb_comt.cod_anag " + - "INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " + - "WHERE vtb_clie.flag_stato = 'A' " + - "ORDER BY rag_soc"; - - Type typeOfObjectsList = new TypeToken>>() { }.getType(); - - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>>() { - @Override - public void onSuccess(ArrayList> value) { - - availableClienti = new ArrayList<>(); - - Stream.of(value) - .groupBy(x -> x.get("codAnag").toString() + " " + x.get("ragSoc").toString()) - .forEach(x -> { - DialogAskClienteClienteDTO dialogAskClienteClienteDTO = new DialogAskClienteClienteDTO(); - dialogAskClienteClienteDTO.setCodAnag(UtilityHashMap.getValueIfExists(x.getValue().get(0), "codAnag")); - dialogAskClienteClienteDTO.setRagSoc(UtilityHashMap.getValueIfExists(x.getValue().get(0), "ragSoc")); - - for (HashMap group : x.getValue()) { - if (group.containsKey("codJcom")) { - dialogAskClienteClienteDTO.getCodJcoms().add(UtilityHashMap.getValueIfExists(group, "codJcom")); - } - } - - availableClienti.add(dialogAskClienteClienteDTO); - }); - - initializeAdapter(availableClienti); - - mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) - .setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false))); - BarcodeManager.enable(); - } - - @Override - public void onFailed(Exception ex) { - - } - }); + mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false))); + BarcodeManager.enable(); this.mBinding.buttonYes.setOnClickListener(v -> { if (validateCliente()) { @@ -147,7 +105,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod } else { DialogAskClienteClienteDTO resultCodJcom = searchBarcodeInCodJcom(barcode); - if(resultCodJcom != null) { + if (resultCodJcom != null) { mBinding.dropdownCliente.setText(resultCodJcom.toString()); refreshCodJcoms(resultCodJcom); mBinding.dropdownCommessa.setText(barcode); @@ -219,7 +177,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod private boolean validateCliente() { - if(SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) { + if (SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) { return true; } else return getCurrentCliente() != null; } @@ -229,7 +187,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod .filter(x -> x.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString())) .findFirst(); - if(result.isPresent()) return result.get().getCodAnag(); + if (result.isPresent()) return result.get().getCodAnag(); else return null; } @@ -240,7 +198,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod .map(DialogAskClienteClienteDTO::getCodJcoms) .findFirst(); - if(result.isPresent() && Stream.of(result.get()).anyMatch(x -> x.equalsIgnoreCase(mBinding.inputCommessa.getEditText().getText().toString()))) { + if (result.isPresent() && Stream.of(result.get()).anyMatch(x -> x.equalsIgnoreCase(mBinding.inputCommessa.getEditText().getText().toString()))) { return mBinding.inputCommessa.getEditText().getText().toString(); } else return null; } 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 d38aefef..a486ac0d 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 @@ -5,29 +5,24 @@ import android.widget.AutoCompleteTextView; import androidx.databinding.ViewDataBinding; -import com.google.gson.reflect.TypeToken; +import com.annimon.stream.Stream; -import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding; import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO; public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewModel { - private DialogAskClientePage2Binding mBinding; private Context mContext; private Runnable mOnConfirm; private Runnable mOnAbort; - private List availableDestinatari; + private ArrayList availableDestinatari; private String mCodAnag; @@ -40,6 +35,10 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod this.mBinding = (DialogAskClientePage2Binding) binding; } + public void setAvailableDestinatari(ArrayList availableDestinatari) { + this.availableDestinatari = availableDestinatari; + } + @Override public void setContext(Context context) { this.mContext = context; @@ -47,29 +46,18 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod @Override public void onShow() { - String sql = "SELECT cod_anag, cod_vdes, destinatario, indirizzo, cap, citta, prov, nazione " + - "FROM vtb_dest " + - "WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag); + var filteredDestinatari = availableDestinatari != null ? Stream.of(availableDestinatari) + .filter(x -> x.getCodAnag().equalsIgnoreCase(mCodAnag)) + .toList() + : null; - Type typeOfObjectsList = new TypeToken>() { - }.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - availableDestinatari = value; - initializeAdapter(value); - if(value == null || value.size() == 0) { - mOnConfirm.run(); - return; - } - } + if (filteredDestinatari == null || filteredDestinatari.size() == 0) { + mOnConfirm.run(); + return; + } - @Override - public void onFailed(Exception ex) { - - } - }); + initializeAdapter(filteredDestinatari); this.mBinding.buttonYes.setOnClickListener(v -> { @@ -106,7 +94,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod } - private void initializeAdapter(ArrayList items) { + private void initializeAdapter(List items) { DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java index fc52aaf2..caf7ea52 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java @@ -27,7 +27,7 @@ public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter list) { + public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull List list) { super(context, 0 , list); mContext = context; mDataset = list; 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 f6eaeb96..1917853a 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 @@ -23,13 +23,12 @@ import com.google.android.material.textfield.TextInputLayout; import com.pedromassango.doubleclick.DoubleClick; 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; +import javax.inject.Singleton; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.MainApplication; @@ -47,14 +46,15 @@ import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +@Singleton public class DialogInputQuantityV2View extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener { @Inject DialogInputQuantityV2ViewModel mViewModel; - private final DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; - private final RunnableArgss mOnComplete; - private final Runnable mOnAbort; + private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; + private RunnableArgss mOnComplete; + private Runnable mOnAbort; public ObservableField currentTextNumCnfToTake = new ObservableField<>(0); public ObservableField currentTextNumPezziToTake = new ObservableField<>(0); @@ -86,17 +86,22 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia private boolean mEnableDataCallback = true; private int mBarcodeScannerIstanceID; + private boolean mFirstStart = true; - public static DialogInputQuantityV2View newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { - return new DialogInputQuantityV2View(dialogInputQuantityV2DTO, onComplete, onAbort); + + public DialogInputQuantityV2View setDialogInputQuantityV2DTO(DialogInputQuantityV2DTO mDialogInputQuantityV2DTO) { + this.mDialogInputQuantityV2DTO = mDialogInputQuantityV2DTO; + return this; } - private DialogInputQuantityV2View(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { - super(); + public DialogInputQuantityV2View setOnComplete(RunnableArgss mOnComplete) { + this.mOnComplete = mOnComplete; + return this; + } - this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO; - this.mOnComplete = onComplete; - this.mOnAbort = onAbort; + public DialogInputQuantityV2View setOnAbort(Runnable mOnAbort) { + this.mOnAbort = mOnAbort; + return this; } @Override @@ -203,7 +208,11 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Override public void onStart() { super.onStart(); - this.init(); + + if(!mFirstStart) { + this.init(); + mFirstStart = false; + } int onNumCnfInputChanged = SettingsManager.iDB().getOnNumCnfInputChanged(); 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 a110ea93..b5fe16d6 100644 --- a/app/src/main/res/layout/dialog_ask_cliente__page2.xml +++ b/app/src/main/res/layout/dialog_ask_cliente__page2.xml @@ -46,6 +46,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/recipient" + android:layout_marginTop="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/description_text"> From 0738993d4c7c8b9917d23da4010b195806fb8543 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 24 Feb 2022 11:01:01 +0100 Subject: [PATCH 10/14] Aggiunto flag use qta ord in accettazione --- .../core/settings/DBSettingsModel.java | 10 ++++++++++ .../core/settings/SettingsManager.java | 5 +++++ .../AccettazionePickingActivity.java | 7 ++++++- .../AccettazionePickingViewModel.java | 8 ++++++-- 4 files changed, 27 insertions(+), 3 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 6983010e..acf7be79 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 @@ -41,6 +41,7 @@ public class DBSettingsModel { private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; private int onNumCnfInputChanged = 1; + private boolean flagAccettazioneUseQtaOrd = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -302,4 +303,13 @@ public class DBSettingsModel { this.docInterniCheckFornitore = docInterniCheckFornitore; return this; } + + public boolean isFlagAccettazioneUseQtaOrd() { + return flagAccettazioneUseQtaOrd; + } + + public DBSettingsModel setFlagAccettazioneUseQtaOrd(boolean flagAccettazioneUseQtaOrd) { + this.flagAccettazioneUseQtaOrd = flagAccettazioneUseQtaOrd; + 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 6d933ddd..a9e8466b 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 @@ -278,6 +278,10 @@ public class SettingsManager { .setGestName("PVM") .setSection("DOC_INTERNI") .setKeySection("CHECK_FORNITORE")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PICKING") + .setSection("ACCETTAZIONE") + .setKeySection("FLAG_USE_QTA_ORD")); GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { @@ -304,6 +308,7 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class)); + dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); if (notePerdita != null) { 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 f945d8ab..a4da4222 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 @@ -144,9 +144,14 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta this.initFilters(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + boolean useQtaOrd = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd(); mViewModel.setListeners(this); - mViewModel.init(mOrders, mSitArts, codMdep); + mViewModel.init( + mOrders, + mSitArts, + codMdep, + useQtaOrd); } private void initFilters() { 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 d4bc5649..f6c23f56 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 @@ -73,6 +73,7 @@ public class AccettazionePickingViewModel { private List mOrders; private List mSitArts; + private boolean mUseQtaOrd; private final MutableLiveData> mPickingList = new MutableLiveData<>(); private MtbColt mCurrentMtbColt = null; @@ -97,9 +98,10 @@ public class AccettazionePickingViewModel { } - public void init(List orders, List sitArts, String codMdep) { + public void init(List orders, List sitArts, String codMdep, boolean useQtaOrd) { this.mOrders = orders; this.mDefaultCodMdep = codMdep; + this.mUseQtaOrd = useQtaOrd; this.mSitArts = Stream.of(sitArts) .filter(x -> UtilityBigDecimal.greaterThan(x.getNumCnfDaEvadere(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) @@ -536,7 +538,9 @@ public class AccettazionePickingViewModel { initialQtaTot = totalQtaOrd; } - if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { + if (!this.mUseQtaOrd && + UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && + UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana(); initialQtaTot = initialNumCnf.multiply(initialQtaCnf); } From 34ff300515d065882c439cc27ad6c4be6f54d8d7 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Fri, 25 Feb 2022 17:36:07 +0100 Subject: [PATCH 11/14] workaround problema con tempistiche thread in salvataggio articolo ordine acquisto --- .../dialog/EditArticoloDialog.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) 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 3c99f01e..a9a4fa8b 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 @@ -70,11 +70,11 @@ public class EditArticoloDialog extends BaseDialogFragment { @Override public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); - ArticoloOrdine articolo = mArticolo.getValue(); + /*ArticoloOrdine articolo = mArticolo.getValue(); if (articolo != null && articolo.getQtaOrd() <= 0f) { articolo = null; } - onDialogDismiss.run(articolo); + onDialogDismiss.run(articolo);*/ } @Nullable @@ -155,17 +155,23 @@ public class EditArticoloDialog extends BaseDialogFragment { } articolo.setQtaOrd(qtaOrd.get().floatValue()); - mArticolo.postValue(articolo); - + mArticolo.setValue(articolo); + mHelper.saveArticoloToOrdine(mArticolo.getValue(), () -> { + this.onLoadingEnded(); + requireActivity().runOnUiThread(() -> { + onDialogDismiss.run(articolo); + }); + this.dismiss(); + }, e -> { + mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)); + this.onLoadingEnded(); + }); } catch (Exception e) { mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)); this.onLoadingEnded(); return; } - mHelper.saveArticoloToOrdine(mArticolo.getValue(), () -> { - this.onLoadingEnded(); - this.dismiss(); - }, e -> mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e))); + ; } public ArticoloOrdine getArticolo() { @@ -174,6 +180,9 @@ public class EditArticoloDialog extends BaseDialogFragment { public void cancel() { mArticolo.postValue(null); + requireActivity().runOnUiThread(() -> { + onDialogDismiss.run(null); + }); this.dismiss(); } } From cf3b8749dc948fb3b5aab9eaca0f6e1e9cc15dca Mon Sep 17 00:00:00 2001 From: ValerioC Date: Fri, 25 Feb 2022 17:37:13 +0100 Subject: [PATCH 12/14] -> v1.23.7 (262) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fbc4f617..98b56d28 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 261 - def appVersionName = '1.23.6' + def appVersionCode = 262 + def appVersionName = '1.23.7' signingConfigs { release { From 4b19129a2fe00677699b829c19073c006cc853fe Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 28 Feb 2022 09:52:23 +0100 Subject: [PATCH 13/14] Fix su bindings in dialogInputQuantity. Piccolo refactoring UI di activity di ordine di acquisto. --- .../DialogInputQuantityV2View.java | 6 +- .../activity_pv_ordine_acquisto_edit.xml | 445 +++++++++--------- build.gradle | 2 +- 3 files changed, 233 insertions(+), 220 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 1917853a..cd26fd90 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 @@ -209,10 +209,10 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public void onStart() { super.onStart(); - if(!mFirstStart) { +// if(!mFirstStart) { this.init(); - mFirstStart = false; - } +// mFirstStart = false; +// } int onNumCnfInputChanged = SettingsManager.iDB().getOnNumCnfInputChanged(); diff --git a/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml index b893d79e..4f504331 100644 --- a/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml +++ b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml @@ -1,12 +1,14 @@ - + xmlns:fab="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + @@ -18,241 +20,252 @@ android:layout_height="match_parent"> - + android:descendantFocusability="blocksDescendants"> - + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="?actionBarSize"> + + + + + + + + + + + + + - + android:textStyle="bold" + tools:text="22 ottobre 2018" /> + - + - + + + + + + + + + + + - + - + + - - + app:layout_constraintTop_toBottomOf="@id/header_content" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> + + + + + + + + + + + + + + + + + + + - + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 95264602..dfb93232 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.1' + classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.10' From 756389e6c6332913fdbf0ba8a6ad8c69c403278a Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 28 Feb 2022 09:52:54 +0100 Subject: [PATCH 14/14] -> v1.23.8 (263) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 98b56d28..a5ecc158 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 262 - def appVersionName = '1.23.7' + def appVersionCode = 263 + def appVersionName = '1.23.8' signingConfigs { release {