From 9cd0855dcfcf75da4a379d099d50e79386f11cb8 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 1 Mar 2023 19:59:27 +0100 Subject: [PATCH] Refactoring dialog di filtro dei documenti interni --- app/src/main/AndroidManifest.xml | 16 +- .../MainApplicationComponent.java | 2 +- .../integrywmsnative/core/di/Converters.java | 1 + .../core/utility/PermissionsHelper.java | 13 +- .../DocInterniFragment.java | 31 +- .../DocInterniViewModel.java | 26 +- .../dialog/DialogSelectDocInfoComponent.java | 4 +- .../dialog/DialogSelectDocInfoModule.java | 7 +- .../DialogSelectDocInfoResponseDTO.java | 102 +++++ .../dialog/DialogSelectDocInfoView.java | 364 +++++++++--------- .../dialog/DialogSelectDocInfoViewModel.java | 255 ++++++------ .../DialogSelectDocInfo_FornitoreAdapter.java | 50 +++ .../DialogSelectDocInfo_GroupArtAdapter.java | 47 +++ .../DialogSelectDocInfo_NoteAdapter.java | 20 + .../DialogSelectDocInfo_TipoDocAdapter.java | 47 +++ .../exception/DocumentRequiredException.java | 4 + .../exception/FornitoreRequiredException.java | 4 + .../exception/NoteRequiredException.java | 4 + .../exception/TipoDocRequiredException.java | 4 + .../dto/DocInterniSetupDTO.java | 12 +- ...rticoloDTO.java => GruppoArticoloDTO.java} | 2 +- .../dto/{TipiDocDTO.java => TipoDocDTO.java} | 4 +- .../edit_form/DocInterniEditFormActivity.java | 6 +- .../DocInterniEditFormViewModel.java | 6 +- .../res/layout/dialog_select_doc_info.xml | 176 --------- .../dialog_select_doc_info__single_item.xml | 8 - .../layout/dialog_select_doc_info_view.xml | 173 +++++++++ .../main/res/layout/fragment_doc_interni.xml | 3 +- 28 files changed, 815 insertions(+), 576 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java rename app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/{GruppiArticoloDTO.java => GruppoArticoloDTO.java} (94%) rename app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/{TipiDocDTO.java => TipoDocDTO.java} (92%) delete mode 100644 app/src/main/res/layout/dialog_select_doc_info.xml delete mode 100644 app/src/main/res/layout/dialog_select_doc_info__single_item.xml create mode 100644 app/src/main/res/layout/dialog_select_doc_info_view.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 836facd1..d5681d32 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,14 +1,24 @@ - + - - + + + + + + + + onPermissionsDenied) { List permissionsToAsk = new ArrayList<>(); - permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE); - permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); permissionsToAsk.add(Manifest.permission.CAMERA); - //permissionsToAsk.add(Manifest.permission.INTERNET); - //permissionsToAsk.add(Manifest.permission.ACCESS_WIFI_STATE); if(Build.VERSION.SDK_INT >= 23) { @@ -34,6 +30,15 @@ public class PermissionsHelper { permissionsToAsk.add(Manifest.permission.BLUETOOTH_CONNECT); } + if(Build.VERSION.SDK_INT < 33) { + permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE); + permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + } else { + permissionsToAsk.add(Manifest.permission.READ_MEDIA_IMAGES); + permissionsToAsk.add(Manifest.permission.READ_MEDIA_AUDIO); + permissionsToAsk.add(Manifest.permission.READ_MEDIA_VIDEO); + } + String[] permissionArray = new String[permissionsToAsk.size()]; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java index 190e36b0..20dc48fe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java @@ -29,8 +29,8 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView; -import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity; @@ -114,28 +114,23 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, } @Override - public void onDocDetailsChanged(DialogSelectDocInfoViewModel selection) { - if (selection.isInputValid()) { - mViewModel.setSelectedDocDetails(selection); - mBinding.mainFab.setVisibility(View.VISIBLE); - } else { - mBinding.mainFab.setVisibility(View.GONE); - } + public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) { + mViewModel.setSelectedDocDetails(selection); - if (selection.requiresFornitore()) { + if (selection.isFornitoreRequired()) { mBinding.codAnagContainer.setVisibility(View.VISIBLE); } else { mBinding.codAnagContainer.setVisibility(View.GONE); } - if (selection.getSelectedGruppoArt() != null) { + if (selection.getGruppoArt() != null) { mBinding.mtbGrpContainer.setVisibility(View.VISIBLE); } else { mBinding.mtbGrpContainer.setVisibility(View.GONE); } - if (selection.requiresDocData()) { + if (selection.isDocumentRequired()) { mBinding.docContainer.setVisibility(View.VISIBLE); mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)))); } else { @@ -156,16 +151,12 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, public void selectDocInfo() { if (this.dialogInitialized) { + DialogSelectDocInfoView.newInstance( - mDocInterniSetupDTO, - this.mViewModel.dtbTipi.getValue(), - this.mViewModel.mtbGrup.getValue(), - this.mViewModel.fornitore.getValue(), - this.mViewModel.dataDoc.getValue(), - this.mViewModel.numDoc.getValue(), - this.mViewModel.note.getValue(), - this::onDocDetailsChanged - ).show(requireActivity().getSupportFragmentManager(), "tag"); + mDocInterniSetupDTO, + this::onDocDetailsChanged, + this::popMe) + .show(requireActivity().getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java index ac5a30c9..18a402cb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java @@ -15,12 +15,12 @@ import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; public class DocInterniViewModel { @@ -35,8 +35,8 @@ public class DocInterniViewModel { private GrigliaArticoliDTO productsList; private final MutableLiveData> mDocsList = new MutableLiveData<>(); - public final MutableLiveData dtbTipi = new MutableLiveData<>(); - public final MutableLiveData mtbGrup = new MutableLiveData<>(); + public final MutableLiveData dtbTipi = new MutableLiveData<>(); + public final MutableLiveData mtbGrup = new MutableLiveData<>(); public final MutableLiveData fornitore = new MutableLiveData<>(); public final MutableLiveData dataDoc = new MutableLiveData<>(); public final MutableLiveData numDoc = new MutableLiveData<>(); @@ -82,16 +82,16 @@ public class DocInterniViewModel { return mDocsList; } - public void setSelectedDocDetails(DialogSelectDocInfoViewModel selection) { + public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) { - this.fornitore.postValue(selection.getSelectedFornitore()); - this.mtbGrup.postValue(selection.getSelectedGruppoArt()); + this.fornitore.postValue(selection.getFornitore()); + this.mtbGrup.postValue(selection.getGruppoArt()); this.dataDoc.postValue(selection.getDataDoc()); - this.numDoc.postValue(selection.getNumDoc()); + this.numDoc.postValue(selection.getNumDoc() != null ? selection.getNumDoc().toString() : null); this.note.postValue(selection.getNote()); - if (selection.getSelectedTipoDoc() != null) { - this.dtbTipi.postValue(selection.getSelectedTipoDoc()); + if (selection.getTipoDoc() != null) { + this.dtbTipi.postValue(selection.getTipoDoc()); } } @@ -140,7 +140,7 @@ public class DocInterniViewModel { return this.dtbTipi.getValue().getCodDtip(); } - public TipiDocDTO getTipoDoc() { + public TipoDocDTO getTipoDoc() { if (this.dtbTipi.getValue() == null) { return null; } @@ -197,7 +197,7 @@ public class DocInterniViewModel { void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO); - void onDocDetailsChanged(DialogSelectDocInfoViewModel selection); + void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection); void onDocumentEditRequest(SqlMtbColt document, GrigliaArticoliDTO arts); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java index bc9442f7..f2d33d73 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java @@ -10,7 +10,5 @@ public interface DialogSelectDocInfoComponent { DialogSelectDocInfoComponent create(); } - void inject(DialogSelectDocInfoView dialogSelectDocInfoView); - -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java index 07dc5ce4..0145fe43 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java @@ -1,17 +1,14 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; -import javax.inject.Singleton; - import dagger.Module; import dagger.Provides; @Module(subcomponents = DialogSelectDocInfoComponent.class) public class DialogSelectDocInfoModule { - @Singleton @Provides - DialogSelectDocInfoViewModel dialogSelectMgrpDtipPairViewModel() { + DialogSelectDocInfoViewModel providesDialogDialogSelectDocInfoNewViewViewModel() { return new DialogSelectDocInfoViewModel(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java new file mode 100644 index 00000000..988df534 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java @@ -0,0 +1,102 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; + +import java.util.Date; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; + +public class DialogSelectDocInfoResponseDTO { + + private TipoDocDTO tipoDoc; + private GruppoArticoloDTO gruppoArt; + private FornitoreDTO fornitore; + private Date dataDoc; + private Integer numDoc; + private String note; + private boolean fornitoreRequired; + private boolean documentRequired; + private boolean noteRequired; + + + public TipoDocDTO getTipoDoc() { + return tipoDoc; + } + + public DialogSelectDocInfoResponseDTO setTipoDoc(TipoDocDTO tipoDoc) { + this.tipoDoc = tipoDoc; + return this; + } + + public GruppoArticoloDTO getGruppoArt() { + return gruppoArt; + } + + public DialogSelectDocInfoResponseDTO setGruppoArt(GruppoArticoloDTO gruppoArt) { + this.gruppoArt = gruppoArt; + return this; + } + + public FornitoreDTO getFornitore() { + return fornitore; + } + + public DialogSelectDocInfoResponseDTO setFornitore(FornitoreDTO fornitore) { + this.fornitore = fornitore; + return this; + } + + public Date getDataDoc() { + return dataDoc; + } + + public DialogSelectDocInfoResponseDTO setDataDoc(Date dataDoc) { + this.dataDoc = dataDoc; + return this; + } + + public Integer getNumDoc() { + return numDoc; + } + + public DialogSelectDocInfoResponseDTO setNumDoc(Integer numDoc) { + this.numDoc = numDoc; + return this; + } + + public String getNote() { + return note; + } + + public DialogSelectDocInfoResponseDTO setNote(String note) { + this.note = note; + return this; + } + + public boolean isFornitoreRequired() { + return fornitoreRequired; + } + + public DialogSelectDocInfoResponseDTO setFornitoreRequired(boolean fornitoreRequired) { + this.fornitoreRequired = fornitoreRequired; + return this; + } + + public boolean isDocumentRequired() { + return documentRequired; + } + + public DialogSelectDocInfoResponseDTO setDocumentRequired(boolean documentRequired) { + this.documentRequired = documentRequired; + return this; + } + + public boolean isNoteRequired() { + return noteRequired; + } + + public DialogSelectDocInfoResponseDTO setNoteRequired(boolean noteRequired) { + this.noteRequired = noteRequired; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java index a64d9ba2..f5f6e760 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java @@ -1,240 +1,242 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; +import androidx.appcompat.app.AlertDialog; import androidx.databinding.ObservableField; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + import java.util.Date; import javax.inject.Inject; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityObservable; -import it.integry.integrywmsnative.databinding.DialogSelectDocInfoBinding; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogSelectDocInfoViewBinding; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_FornitoreAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_GroupArtAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_NoteAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_TipoDocAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.NoteRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.TipoDocRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; -public class DialogSelectDocInfoView extends BaseDialogFragment implements DialogSelectDocInfoViewModel.Listener { +public class DialogSelectDocInfoView extends BaseDialogFragment { @Inject DialogSelectDocInfoViewModel mViewModel; - private Context mCurrentContext; + + private DialogSelectDocInfoViewBinding mBindings; + private Context mContext; + + private final DocInterniSetupDTO mDocInputData; + private final RunnableArgs onConfirm; + private final Runnable onAbort; - public BindableString codDtip = new BindableString(); - public BindableString codMgrp = new BindableString(); - public BindableString codAnag = new BindableString(); - public BindableString numDoc = new BindableString(); - public BindableString note = new BindableString(); - public ObservableField dataDoc = new ObservableField<>(); + public ObservableField selectedTipoDoc = new ObservableField<>(); + public ObservableField selectedGroupArt = new ObservableField<>(); + public ObservableField selectedFornitore = new ObservableField<>(); + public ObservableField selectedNumDoc = new ObservableField<>(); + public ObservableField selectedDataDoc = new ObservableField<>(); + public ObservableField selectedNote = new ObservableField<>(); - private ArrayAdapter arrayAdapterCodDtips; - private ArrayAdapter arrayAdapterCodMgrps; - private ArrayAdapter arrayAdapterCodAnags; - private ArrayAdapter arrayAdapterNote; - private DialogSelectDocInfoBinding mBindings; + public ObservableField isFornitoreRequired = new ObservableField<>(); + public ObservableField isDocumentRequired = new ObservableField<>(); + public ObservableField isNoteRequired = new ObservableField<>(); - private final RunnableArgs currentOnFilterDone; - private final DocInterniSetupDTO docInterniSetupDTO; - private final TipiDocDTO selectedDtip; - private final GruppiArticoloDTO selectedGrp; - private final FornitoreDTO selectedAnag; - private final Date selectedDataDoc; - private final String selectedNumDoc; - private final String selectedNote; - - public static DialogSelectDocInfoView newInstance( - DocInterniSetupDTO docInterniSetupDTO, - TipiDocDTO tipiDocDTO, - GruppiArticoloDTO gruppiArticoloDTO, - FornitoreDTO fornitoreDTO, - Date dataDoc, - String numDoc, - String note, - RunnableArgs onDismiss - ) { - return new DialogSelectDocInfoView(docInterniSetupDTO, tipiDocDTO, gruppiArticoloDTO, fornitoreDTO, dataDoc, numDoc,note, onDismiss); + public static DialogSelectDocInfoView newInstance(DocInterniSetupDTO docInputData, + RunnableArgs onConfirm, + Runnable onAbort) { + return new DialogSelectDocInfoView(docInputData, onConfirm, onAbort); } - - private DialogSelectDocInfoView(DocInterniSetupDTO docInterniSetupDTO, - TipiDocDTO tipiDocDTO, - GruppiArticoloDTO gruppiArticoloDTO, - FornitoreDTO fornitoreDTO, - Date dataDoc, - String numDoc, - String note, - RunnableArgs onDismiss) { + private DialogSelectDocInfoView(DocInterniSetupDTO docInputData, + RunnableArgs onConfirm, + Runnable onAbort) { super(); - currentOnFilterDone = onDismiss; - this.docInterniSetupDTO = docInterniSetupDTO; - selectedDtip = tipiDocDTO; - selectedGrp = gruppiArticoloDTO; - selectedDataDoc = dataDoc; - selectedNumDoc = numDoc; - selectedNote = note; - selectedAnag = fornitoreDTO; + + this.mDocInputData = docInputData; + this.onConfirm = onConfirm; + this.onAbort = onAbort; } + + @NonNull @Override - public void onDismiss(@NonNull DialogInterface dialog) { - super.onDismiss(dialog); - if (currentOnFilterDone != null) currentOnFilterDone.run(mViewModel); - } + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - this.mCurrentContext = this.requireActivity(); - - mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_select_doc_info, container, false); - mBindings.setLifecycleOwner(this); - - MainApplication - .appComponent - .dialogSelectMgrpDtipPairComponent() + MainApplication.appComponent + .dialogSelectDocInfoNewViewComponent() .create() .inject(this); - mViewModel.init(docInterniSetupDTO); - mViewModel.setListeners(this); + + mBindings = DialogSelectDocInfoViewBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); mBindings.setView(this); - mBindings.setViewmodel(mViewModel); - getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - initView(); + mViewModel.setFornitori(mDocInputData.getFornitori()); + var cancelable = true; - mBindings.positiveBtn.setOnClickListener(view -> { - if (this.isInputValid()) { - getDialog().dismiss(); + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(cancelable) + .setPositiveButton(R.string.confirm, (dialog, which) -> { + //Volutamente vuoto + }) + .setNegativeButton(R.string.abort, (dialog, which) -> { + //Volutamente vuoto + }) + .create(); + + alertDialog.setOnShowListener(this); + alertDialog.setCanceledOnTouchOutside(cancelable); + + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + var alertDialog = ((AlertDialog) dialogInterface); + + var positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + positiveButton.setOnClickListener(view -> { + try { + mBindings.inputCodDtip.setErrorEnabled(false); + mBindings.inputCodDtip.setError(null); + mBindings.inputCodAnagForn.setErrorEnabled(false); + mBindings.inputCodAnagForn.setError(null); + mBindings.inputNumDocLayout.setErrorEnabled(false); + mBindings.inputNumDoc.setError(null); + mBindings.inputDataDocLayout.setErrorEnabled(false); + mBindings.inputDataDoc.setError(null); + mBindings.inputNoteLayout.setErrorEnabled(false); + mBindings.inputNoteLayout.setError(null); + + mViewModel.validate(); + alertDialog.dismiss(); + + if (this.onConfirm != null) + this.onConfirm.run(new DialogSelectDocInfoResponseDTO() + .setTipoDoc(selectedTipoDoc.get()) + .setFornitore(selectedFornitore.get()) + .setGruppoArt(selectedGroupArt.get()) + .setDataDoc(selectedDataDoc.get()) + .setNumDoc(!UtilityString.isNullOrEmpty(selectedNumDoc.get()) ? Integer.parseInt(selectedNumDoc.get()) : null) + .setNote(selectedNote.get())); + } catch (TipoDocRequiredException tipoDocRequiredException) { + mBindings.inputCodDtip.setErrorEnabled(true); + mBindings.inputCodDtip.setError("Campo richiesto"); + } catch (FornitoreRequiredException fornitoreRequiredException) { + mBindings.inputCodAnagForn.setErrorEnabled(true); + mBindings.inputCodAnagForn.setError("Campo richiesto"); + } catch (DocumentRequiredException documentRequiredException) { + mBindings.inputNumDocLayout.setErrorEnabled(true); + mBindings.inputNumDocLayout.setError("Campo richiesto"); + mBindings.inputDataDocLayout.setErrorEnabled(true); + mBindings.inputDataDocLayout.setError("Campo richiesto"); + } catch (NoteRequiredException noteRequiredException) { + mBindings.inputNoteLayout.setErrorEnabled(true); + mBindings.inputNoteLayout.setError("Campo richiesto"); } }); - return mBindings.getRoot(); + var negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(view -> { + alertDialog.dismiss(); + if (this.onAbort != null) this.onAbort.run(); + }); + + this.initBindings(); + this.initAdapters(); } - private void initView() { - initArrayAdapters(); - initBindables(); - if (selectedDtip != null) { - codDtip.set(selectedDtip.getLabel()); - } - if (selectedGrp != null) { - codMgrp.set(selectedGrp.getLabel()); - } - if (selectedAnag != null) { - codAnag.set(selectedAnag.getLabel()); - } - if (selectedDataDoc != null) { - dataDoc.set(selectedDataDoc); - } - if (selectedNumDoc != null) { - numDoc.set(selectedNumDoc); - } - if (selectedNote != null) { - note.set(selectedNote); - } + private void initBindings() { + this.isFornitoreRequired.set(mViewModel.isFornitoreRequired().getValue()); + mViewModel.isFornitoreRequired().observe(this, val -> this.isFornitoreRequired.set(val)); + + this.isDocumentRequired.set(mViewModel.isDocumentRequired().getValue()); + mViewModel.isDocumentRequired().observe(this, val -> this.isDocumentRequired.set(val)); + + this.isNoteRequired.set(mViewModel.isNoteRequired().getValue()); + mViewModel.isNoteRequired().observe(this, val -> this.isNoteRequired.set(val)); + + + UtilityObservable.addPropertyChanged(this.selectedTipoDoc, mViewModel::setTipoDoc); + UtilityObservable.addPropertyChanged(this.selectedGroupArt, mViewModel::setGruppoArt); + UtilityObservable.addPropertyChanged(this.selectedFornitore, mViewModel::setFornitore); + UtilityObservable.addPropertyChanged(this.selectedDataDoc, mViewModel::setDataDoc); + UtilityObservable.addPropertyChanged(this.selectedNumDoc, + value -> this.mViewModel.setNumDoc(UtilityString.isNullOrEmpty(value) ? null : Integer.parseInt(value))); + UtilityObservable.addPropertyChanged(this.selectedNote, mViewModel::setNote); + + mViewModel.isFornitoreRequired() + .observe(this, val -> { + if (!val) { + this.selectedFornitore.set(null); + mBindings.filledExposedDropdownCodAnagList.setText(""); + } + }); + + mViewModel.isNoteRequired() + .observe(this, val -> { + if (!val) { + this.selectedNote.set(null); + mBindings.filledExposedDropdownNote.setText(""); + } + }); } - private boolean isInputValid() { - if (this.mViewModel.getSelectedTipoDoc() == null) { - mBindings.inputCodDtip.setErrorEnabled(true); - mBindings.inputCodDtip.setError("Seleziona un tipo documento"); - return false; - } - - if (this.mViewModel.requiresFornitore() && this.mViewModel.getSelectedFornitore() == null) { - mBindings.inputCodAnagForn.setErrorEnabled(true); - mBindings.inputCodAnagForn.setError("Seleziona un fornitore/destinatario"); - return false; - } - - if (this.mViewModel.requiresDocData() && this.mViewModel.getDataDoc() == null){ - mBindings.inputDataDoc.setError("Seleziona la data del documento"); - return false; - } - - if (this.mViewModel.requiresDocData() && (this.mViewModel.getNumDoc() == null || this.mViewModel.getNumDoc().isEmpty() )){ - mBindings.inputNumDoc.setError("Seleziona il numero del documento"); - return false; - } - - if (this.mViewModel.requiresNote() && (this.mViewModel.getNote() == null || this.mViewModel.getNote().isEmpty() )){ - mBindings.inputNoteLayout.setErrorEnabled(true); - mBindings.inputNoteLayout.setError("Specifica delle note per il documento"); - return false; - } - - return true; - } - - private void initArrayAdapters() { - - arrayAdapterCodDtips = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterCodDtips.addAll(mViewModel.getAvailableCodDtips()); + private void initAdapters() { + var arrayAdapterCodDtips = new DialogSelectDocInfo_TipoDocAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getTipiDoc()); mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips); + mBindings.filledExposedDropdownCodDtips.setOnItemClickListener((adapterView, view, i, l) -> { + this.selectedTipoDoc.set( + ((DialogSelectDocInfo_TipoDocAdapter.ListModel) adapterView.getItemAtPosition(i)) + .getOriginalModel()); + }); - arrayAdapterCodMgrps = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterCodMgrps.addAll(mViewModel.getAvailableCodMgrps()); + var arrayAdapterCodMgrps = new DialogSelectDocInfo_GroupArtAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getGruppiArt()); mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps); + mBindings.filledExposedDropdownCodMgrps.setOnItemClickListener((adapterView, view, i, l) -> { + this.selectedGroupArt.set( + ((DialogSelectDocInfo_GroupArtAdapter.ListModel) adapterView.getItemAtPosition(i)) + .getOriginalModel()); + }); - arrayAdapterCodAnags = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori()); - mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterCodAnags); + var arrayAdapterFornitori = new DialogSelectDocInfo_FornitoreAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getFornitori()); + mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterFornitori); + mBindings.filledExposedDropdownCodAnagList.setOnItemClickListener((adapterView, view, i, l) -> { + this.selectedFornitore.set( + ((DialogSelectDocInfo_FornitoreAdapter.ListModel) adapterView.getItemAtPosition(i)) + .getOriginalModel()); + }); - arrayAdapterNote = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterNote.addAll(mViewModel.getAdditionalNotes()); + var arrayAdapterNote = new DialogSelectDocInfo_NoteAdapter(mContext, R.layout.array_adapter_single_item, SettingsManager.iDB().getNotePerditaDocInterni()); mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote); } - private void initBindables() { - BindableString.registerListener(codDtip, codDtip -> { - mViewModel.setCodDtip(codDtip); - mBindings.inputCodAnagForn.setVisibility(mViewModel.requiresFornitore() ? View.VISIBLE : View.GONE); - mBindings.inputDataDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE); - mBindings.inputNumDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE); - mBindings.inputNoteLayout.setVisibility(mViewModel.requiresNote() ? View.VISIBLE : View.GONE); - }); - BindableString.registerListener(codMgrp, mViewModel::setCodMgrp); - BindableString.registerListener(codAnag, mViewModel::setCodAnag); - BindableString.registerListener(numDoc, mViewModel::setNumDoc); - BindableString.registerListener(note, mViewModel::setNote); - UtilityObservable.addPropertyChanged(this.dataDoc, (value) -> { - this.mViewModel.setDataDoc(value); - }); - } - - - @Override - public void onDocTypeSelected() { - arrayAdapterCodAnags.clear(); - if (mViewModel.getSelectedFornitore() != null && !mViewModel.getAvailableFornitori().contains(mViewModel.getSelectedFornitore().getLabel())) { - codAnag.set(""); - } - if (mViewModel.getNote() != null && ! mViewModel.requiresNote()){ - mViewModel.setNote(null); - } - arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori()); - } -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java index 38a80d64..17fa4087 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java @@ -1,198 +1,163 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + import com.annimon.stream.Stream; -import java.util.ArrayList; import java.util.Date; import java.util.List; -import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.NoteRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.TipoDocRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; + +public class DialogSelectDocInfoViewModel extends ViewModel { + + private final MutableLiveData tipoDoc = new MutableLiveData<>(); + private final MutableLiveData gruppoArt = new MutableLiveData<>(); + private final MutableLiveData fornitore = new MutableLiveData<>(); + private final MutableLiveData dataDoc = new MutableLiveData<>(); + private final MutableLiveData numDoc = new MutableLiveData<>(); + private final MutableLiveData note = new MutableLiveData<>(); + + private final MutableLiveData> availableFornitori = new MutableLiveData<>(); -public class DialogSelectDocInfoViewModel { + private final MutableLiveData fornitoreRequired = new MutableLiveData<>(false); + private final MutableLiveData documentRequired = new MutableLiveData<>(false); + private final MutableLiveData noteRequired = new MutableLiveData<>(false); + public DialogSelectDocInfoViewModel() { + tipoDoc.observeForever(val -> + fornitoreRequired.postValue( + val != null && + (val.getGestioneDoc().equals("T") || + val.getGestioneDoc().equals("A") || + (val.getGestioneDoc().equals("P") && + !val.getGestione().equals("L"))))); - private DocInterniSetupDTO mDocInterniSetupDTO; + tipoDoc.observeForever(val -> + documentRequired.postValue( + val != null && + val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L"))); - private String mTipoDoc; - - private String mGruppoArt; - - private String mFornitore; - - private Date mDataDoc; - - private String mNumDoc; - - private String mNote; - - private Listener mListener; - - public void init(DocInterniSetupDTO initialList) { - this.mDocInterniSetupDTO = initialList; - this.mTipoDoc = null; - this.mGruppoArt = null; - this.mFornitore = null; - this.mDataDoc = null; - this.mNumDoc = null; - this.mNote = null; - this.mListener = null; + tipoDoc.observeForever(val -> + noteRequired.postValue( + val != null && + val.getGestioneDoc().equals("P") && + val.getGestione().equals("L"))); } - public String getCodDtip() { - return mTipoDoc; + public void setFornitori(List fornitori) { + tipoDoc.observeForever(val -> { + availableFornitori.postValue(Stream.of(fornitori) + .filter(forn -> { + if (val.getGestioneDoc().equalsIgnoreCase("T")) { + return forn.getTipoAnag().equalsIgnoreCase("D") && + forn.getGestioneAnag().equalsIgnoreCase( + val.getGestione().equalsIgnoreCase("V") ? "V" : "A" + ); + } else { + return forn.getTipoAnag().equalsIgnoreCase("F"); + } + }) + .toList()); + }); } - public void setCodDtip(String codDtip) { - this.mTipoDoc = codDtip; - if (this.getSelectedTipoDoc() != null) { - this.mListener.onDocTypeSelected(); - } + + public MutableLiveData isFornitoreRequired() { + return fornitoreRequired; } - public String getCodMgrp() { - return mGruppoArt; + public MutableLiveData isDocumentRequired() { + return documentRequired; } - public void setCodMgrp(String codMgrp) { - this.mGruppoArt = codMgrp; + public MutableLiveData isNoteRequired() { + return noteRequired; } - public void setCodAnag(String codAnag) { - this.mFornitore = codAnag; + + public MutableLiveData getTipoDoc() { + return tipoDoc; + } + + public DialogSelectDocInfoViewModel setTipoDoc(TipoDocDTO tipoDoc) { + this.tipoDoc.postValue(tipoDoc); + return this; + } + + public GruppoArticoloDTO getGruppoArt() { + return gruppoArt.getValue(); + } + + public DialogSelectDocInfoViewModel setGruppoArt(GruppoArticoloDTO gruppoArt) { + this.gruppoArt.postValue(gruppoArt); + return this; + } + + public FornitoreDTO getFornitore() { + return fornitore.getValue(); + } + + public DialogSelectDocInfoViewModel setFornitore(FornitoreDTO fornitore) { + this.fornitore.postValue(fornitore); + return this; } public Date getDataDoc() { - return mDataDoc; + return dataDoc.getValue(); } - public void setDataDoc(Date mDataDoc) { - this.mDataDoc = mDataDoc; + public DialogSelectDocInfoViewModel setDataDoc(Date dataDoc) { + this.dataDoc.postValue(dataDoc); + return this; } - public String getNumDoc() { - return mNumDoc; + public Integer getNumDoc() { + return numDoc.getValue(); } - public void setNumDoc(String numDoc) { - this.mNumDoc = numDoc; + public DialogSelectDocInfoViewModel setNumDoc(Integer numDoc) { + this.numDoc.postValue(numDoc); + return this; } public String getNote() { - return mNote; + return note.getValue(); } public DialogSelectDocInfoViewModel setNote(String note) { - this.mNote = note; + this.note.postValue(note); return this; } - public DialogSelectDocInfoViewModel setListeners(Listener listener) { - this.mListener = listener; - return this; - } - public List getAvailableCodDtips() { - return mDocInterniSetupDTO.getTipiDoc() != null ? Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList() : new ArrayList<>(); - } - - public List getAvailableCodMgrps() { - return mDocInterniSetupDTO.getGruppiArt() != null ? Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList() : new ArrayList<>(); - } - - public List getAvailableFornitori() { - if (!this.requiresFornitore()) { - return new ArrayList<>(); - } - TipiDocDTO selectedDocType = getSelectedTipoDoc(); - - return Stream.of(mDocInterniSetupDTO.getFornitori()) - .filter(forn -> { - if (selectedDocType.getGestioneDoc().equalsIgnoreCase("T")) { - return forn.getTipoAnag().equalsIgnoreCase("D") && - forn.getGestioneAnag().equalsIgnoreCase( - selectedDocType.getGestione().equalsIgnoreCase("V") ? "V" : "A" - ); - } else { - return forn.getTipoAnag().equalsIgnoreCase("F"); - } - }) - .map(FornitoreDTO::getLabel).toList(); - } - - public TipiDocDTO getSelectedTipoDoc() { - return Stream.of(mDocInterniSetupDTO.getTipiDoc()).filter(x -> x.getLabel().equals(mTipoDoc)).findFirstOrElse(null); - } - - public FornitoreDTO getSelectedFornitore() { - return Stream.of(mDocInterniSetupDTO.getFornitori()).filter(x -> x.getLabel().equals(mFornitore)).findFirstOrElse(null); - } - - public GruppiArticoloDTO getSelectedGruppoArt() { - if (mGruppoArt == null) { - return null; + public boolean validate() throws TipoDocRequiredException, FornitoreRequiredException, DocumentRequiredException, NoteRequiredException { + if (this.getTipoDoc().getValue() == null) { + throw new TipoDocRequiredException(); } - return Stream.of(mDocInterniSetupDTO.getGruppiArt()).filter(x -> x.getLabel().equals(mGruppoArt)).findFirstOrElse(null); - } - - public boolean requiresFornitore() { - return this.getSelectedTipoDoc() != null && ( - this.getSelectedTipoDoc().getGestioneDoc().equals("T") || - this.getSelectedTipoDoc().getGestioneDoc().equals("A") || - ( - this.getSelectedTipoDoc().getGestioneDoc().equals("P") && - !this.getSelectedTipoDoc().getGestione().equals("L") - ) - ); - } - - public boolean requiresNote() { - return this.getSelectedTipoDoc() != null && - this.getSelectedTipoDoc().getGestioneDoc().equals("P") && - this.getSelectedTipoDoc().getGestione().equals("L"); - } - - public boolean isInputValid() { - if (this.getSelectedTipoDoc() == null) { - return false; + if (Boolean.TRUE.equals(this.isFornitoreRequired().getValue()) && this.getFornitore() == null) { + throw new FornitoreRequiredException(); } - if (this.requiresFornitore() && this.getSelectedFornitore() == null) { - return false; - } - - if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)) { - return false; + if (Boolean.TRUE.equals(this.isDocumentRequired().getValue()) && (this.getDataDoc() == null || this.getNumDoc() == null)) { + throw new DocumentRequiredException(); } - if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0)) { - return false; + if (Boolean.TRUE.equals(this.isNoteRequired().getValue()) && UtilityString.isNullOrEmpty(this.getNote())) { + throw new NoteRequiredException(); } return true; } - - public boolean requiresDocData() { - TipiDocDTO doc = this.getSelectedTipoDoc(); - return doc != null && doc.getGestioneDoc().equalsIgnoreCase("P") && !doc.getGestione().equalsIgnoreCase("L"); - } - - public List getAdditionalNotes() { - return SettingsManager.iDB().getNotePerditaDocInterni(); - } - - public interface Listener extends ILoadingListener { - - void onError(Exception ex); - - void onDocTypeSelected(); - - } -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java new file mode 100644 index 00000000..7b394ab2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java @@ -0,0 +1,50 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import com.annimon.stream.Stream; + +import java.util.List; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; + +public class DialogSelectDocInfo_FornitoreAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_FornitoreAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if (inputData == null) return; + + List mDataset = Stream.of(inputData) + .map(x -> new ListModel() + .setOriginalModel(x)) + .toList(); + + addAll(mDataset); + } + + public static class ListModel { + + private FornitoreDTO originalModel; + + public FornitoreDTO getOriginalModel() { + return originalModel; + } + + public ListModel setOriginalModel(FornitoreDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + @Override + public String toString() { + return this.getOriginalModel().getCodAnag() + + (this.getOriginalModel().getCodVdes() != null ? " - " + this.getOriginalModel().getCodVdes() : "") + + " ( " + this.getOriginalModel().getDescrizione() + " )"; + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java new file mode 100644 index 00000000..58b9e809 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java @@ -0,0 +1,47 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import com.annimon.stream.Stream; + +import java.util.List; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; + +public class DialogSelectDocInfo_GroupArtAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_GroupArtAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if(inputData == null) return; + + List mDataset = Stream.of(inputData) + .map(x -> new ListModel() + .setOriginalModel(x)) + .toList(); + + addAll(mDataset); + } + + public static class ListModel { + + private GruppoArticoloDTO originalModel; + + public GruppoArticoloDTO getOriginalModel() { + return originalModel; + } + public ListModel setOriginalModel(GruppoArticoloDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + @Override + public String toString() { + return this.getOriginalModel().getCodMgrp() + " - " + this.getOriginalModel().getDescrizione(); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java new file mode 100644 index 00000000..22095bbb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import java.util.List; + +public class DialogSelectDocInfo_NoteAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_NoteAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if (inputData == null) return; + + addAll(inputData); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java new file mode 100644 index 00000000..15ad83f5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java @@ -0,0 +1,47 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import com.annimon.stream.Stream; + +import java.util.List; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; + +public class DialogSelectDocInfo_TipoDocAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_TipoDocAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if(inputData == null) return; + + List mDataset = Stream.of(inputData) + .map(x -> new ListModel() + .setOriginalModel(x)) + .toList(); + + addAll(mDataset); + } + + public static class ListModel { + + private TipoDocDTO originalModel; + + public TipoDocDTO getOriginalModel() { + return originalModel; + } + public ListModel setOriginalModel(TipoDocDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + @Override + public String toString() { + return this.getOriginalModel().getCodDtip() + " - " + this.getOriginalModel().getDescrizione(); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java new file mode 100644 index 00000000..f61b690b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class DocumentRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java new file mode 100644 index 00000000..25e2b15c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class FornitoreRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java new file mode 100644 index 00000000..dde91622 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class NoteRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java new file mode 100644 index 00000000..ce58215d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class TipoDocRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java index 619a6fb2..c00109a6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java @@ -5,26 +5,26 @@ import java.util.List; public class DocInterniSetupDTO { - private List tipiDoc; + private List tipiDoc; - private List gruppiArt; + private List gruppiArt; private List fornitori; - public List getTipiDoc() { + public List getTipiDoc() { return tipiDoc; } - public void setTipiDoc(List tipiDoc) { + public void setTipiDoc(List tipiDoc) { this.tipiDoc = tipiDoc; } - public List getGruppiArt() { + public List getGruppiArt() { return gruppiArt; } - public void setGruppiArt(List gruppiArt) { + public void setGruppiArt(List gruppiArt) { this.gruppiArt = gruppiArt; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppiArticoloDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppoArticoloDTO.java similarity index 94% rename from app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppiArticoloDTO.java rename to app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppoArticoloDTO.java index 8cc28f35..832169bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppiArticoloDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppoArticoloDTO.java @@ -1,6 +1,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dto; -public class GruppiArticoloDTO { +public class GruppoArticoloDTO { private String codMgrp; private String descrizione; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipiDocDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java similarity index 92% rename from app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipiDocDTO.java rename to app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java index e8173c43..1dffd4ac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipiDocDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java @@ -1,6 +1,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dto; -public class TipiDocDTO { +public class TipoDocDTO { private String codDtip; private String descrizione; @@ -48,7 +48,7 @@ public class TipiDocDTO { return requireNote; } - public TipiDocDTO setRequireNote(boolean requireNote) { + public TipoDocDTO setRequireNote(boolean requireNote) { this.requireNote = requireNote; 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 0aa317b2..a4c4a295 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,7 +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.GrigliaArticoliDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; 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; @@ -77,7 +77,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter public BindableBoolean isDocumentExportable = new BindableBoolean(false); private final ObservableArrayList documentRowsObservableList = new ObservableArrayList<>(); - public static Intent newInstance(Context context, SqlMtbColt document, GrigliaArticoliDTO productList, TipiDocDTO tipoDoc) { + public static Intent newInstance(Context context, SqlMtbColt document, GrigliaArticoliDTO productList, TipoDocDTO tipoDoc) { Intent myIntent = new Intent(context, DocInterniEditFormActivity.class); String doc = DataCache.addItem(document); @@ -100,7 +100,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT)); GrigliaArticoliDTO griglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST)); List productList = griglia.getGrigliaAcquistiChild(); - TipiDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC)); + TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC)); this.initViewModel(); this.viewModel.setDocument(document); 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 4ad5de32..f8257cf5 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 @@ -27,7 +27,7 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO; @@ -40,7 +40,7 @@ public class DocInterniEditFormViewModel { private final DocInterniRESTConsumer docInterniRESTConsumer; private DocInterniEditFormViewModel.Listener listener; private List productsList; - private TipiDocDTO tipoDoc; + private TipoDocDTO tipoDoc; private boolean isCheckPartitaMag = false; private JSONObject checkFornitoreRules = null; public MutableLiveData document = new MutableLiveData<>(); @@ -302,7 +302,7 @@ public class DocInterniEditFormViewModel { return Stream.of(productsList).filter(prod -> prod.getCodMart().equalsIgnoreCase(codMart)).findFirstOrElse(null); } - public DocInterniEditFormViewModel setTipoDoc(TipiDocDTO docType) { + public DocInterniEditFormViewModel setTipoDoc(TipoDocDTO docType) { this.tipoDoc = docType; return this; } diff --git a/app/src/main/res/layout/dialog_select_doc_info.xml b/app/src/main/res/layout/dialog_select_doc_info.xml deleted file mode 100644 index fc8e074f..00000000 --- a/app/src/main/res/layout/dialog_select_doc_info.xml +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_doc_info__single_item.xml b/app/src/main/res/layout/dialog_select_doc_info__single_item.xml deleted file mode 100644 index d0736805..00000000 --- a/app/src/main/res/layout/dialog_select_doc_info__single_item.xml +++ /dev/null @@ -1,8 +0,0 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_doc_info_view.xml b/app/src/main/res/layout/dialog_select_doc_info_view.xml new file mode 100644 index 00000000..f71164c4 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_doc_info_view.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_doc_interni.xml b/app/src/main/res/layout/fragment_doc_interni.xml index ad26fce2..5be54fa0 100644 --- a/app/src/main/res/layout/fragment_doc_interni.xml +++ b/app/src/main/res/layout/fragment_doc_interni.xml @@ -45,7 +45,6 @@ android:layout_marginRight="8dp" android:background="@drawable/gray_detail_background_round8" android:orientation="vertical" - app:singleClick="@{() -> view.selectDocInfo()}" android:padding="16dp">