Refactoring dialog di filtro dei documenti interni
This commit is contained in:
parent
d807ab1f31
commit
9cd0855dcf
@ -1,14 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<manifest xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
|
||||
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32"
|
||||
tools:ignore="ScopedStorage" />
|
||||
|
||||
<application
|
||||
android:name=".MainApplication"
|
||||
android:allowBackup="true"
|
||||
|
||||
@ -254,7 +254,7 @@ public interface MainApplicationComponent {
|
||||
|
||||
DocInterniComponent.Factory docInterniComponent();
|
||||
|
||||
DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent();
|
||||
DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();
|
||||
|
||||
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent();
|
||||
|
||||
|
||||
@ -24,6 +24,7 @@ import androidx.databinding.BindingAdapter;
|
||||
import androidx.databinding.BindingConversion;
|
||||
import androidx.databinding.Observable;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.google.android.material.datepicker.MaterialDatePicker;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
|
||||
@ -20,11 +20,7 @@ public class PermissionsHelper {
|
||||
public static void askPermissions(SplashActivity activity, Runnable onPermissionsConfirmed, RunnableArgs<Boolean> onPermissionsDenied) {
|
||||
|
||||
List<String> 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()];
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
|
||||
|
||||
public final MutableLiveData<TipiDocDTO> dtbTipi = new MutableLiveData<>();
|
||||
public final MutableLiveData<GruppiArticoloDTO> mtbGrup = new MutableLiveData<>();
|
||||
public final MutableLiveData<TipoDocDTO> dtbTipi = new MutableLiveData<>();
|
||||
public final MutableLiveData<GruppoArticoloDTO> mtbGrup = new MutableLiveData<>();
|
||||
public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
|
||||
public final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
|
||||
public final MutableLiveData<String> 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);
|
||||
|
||||
|
||||
@ -10,7 +10,5 @@ public interface DialogSelectDocInfoComponent {
|
||||
DialogSelectDocInfoComponent create();
|
||||
}
|
||||
|
||||
|
||||
void inject(DialogSelectDocInfoView dialogSelectDocInfoView);
|
||||
|
||||
}
|
||||
@ -1,16 +1,13 @@
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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<DialogSelectDocInfoResponseDTO> 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<Date> dataDoc = new ObservableField<>();
|
||||
public ObservableField<TipoDocDTO> selectedTipoDoc = new ObservableField<>();
|
||||
public ObservableField<GruppoArticoloDTO> selectedGroupArt = new ObservableField<>();
|
||||
public ObservableField<FornitoreDTO> selectedFornitore = new ObservableField<>();
|
||||
public ObservableField<String> selectedNumDoc = new ObservableField<>();
|
||||
public ObservableField<Date> selectedDataDoc = new ObservableField<>();
|
||||
public ObservableField<String> selectedNote = new ObservableField<>();
|
||||
|
||||
private ArrayAdapter<String> arrayAdapterCodDtips;
|
||||
private ArrayAdapter<String> arrayAdapterCodMgrps;
|
||||
private ArrayAdapter<String> arrayAdapterCodAnags;
|
||||
private ArrayAdapter<String> arrayAdapterNote;
|
||||
private DialogSelectDocInfoBinding mBindings;
|
||||
public ObservableField<Boolean> isFornitoreRequired = new ObservableField<>();
|
||||
public ObservableField<Boolean> isDocumentRequired = new ObservableField<>();
|
||||
public ObservableField<Boolean> isNoteRequired = new ObservableField<>();
|
||||
|
||||
private final RunnableArgs<DialogSelectDocInfoViewModel> 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<DialogSelectDocInfoViewModel> onDismiss
|
||||
) {
|
||||
return new DialogSelectDocInfoView(docInterniSetupDTO, tipiDocDTO, gruppiArticoloDTO, fornitoreDTO, dataDoc, numDoc,note, onDismiss);
|
||||
public static DialogSelectDocInfoView newInstance(DocInterniSetupDTO docInputData,
|
||||
RunnableArgs<DialogSelectDocInfoResponseDTO> 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<DialogSelectDocInfoViewModel> onDismiss) {
|
||||
private DialogSelectDocInfoView(DocInterniSetupDTO docInputData,
|
||||
RunnableArgs<DialogSelectDocInfoResponseDTO> 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());
|
||||
}
|
||||
}
|
||||
@ -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<TipoDocDTO> tipoDoc = new MutableLiveData<>();
|
||||
private final MutableLiveData<GruppoArticoloDTO> gruppoArt = new MutableLiveData<>();
|
||||
private final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
|
||||
private final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
|
||||
private final MutableLiveData<Integer> numDoc = new MutableLiveData<>();
|
||||
private final MutableLiveData<String> note = new MutableLiveData<>();
|
||||
|
||||
private final MutableLiveData<List<FornitoreDTO>> availableFornitori = new MutableLiveData<>();
|
||||
|
||||
|
||||
public class DialogSelectDocInfoViewModel {
|
||||
private final MutableLiveData<Boolean> fornitoreRequired = new MutableLiveData<>(false);
|
||||
private final MutableLiveData<Boolean> documentRequired = new MutableLiveData<>(false);
|
||||
private final MutableLiveData<Boolean> 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<FornitoreDTO> 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<Boolean> isFornitoreRequired() {
|
||||
return fornitoreRequired;
|
||||
}
|
||||
|
||||
public String getCodMgrp() {
|
||||
return mGruppoArt;
|
||||
public MutableLiveData<Boolean> isDocumentRequired() {
|
||||
return documentRequired;
|
||||
}
|
||||
|
||||
public void setCodMgrp(String codMgrp) {
|
||||
this.mGruppoArt = codMgrp;
|
||||
public MutableLiveData<Boolean> isNoteRequired() {
|
||||
return noteRequired;
|
||||
}
|
||||
|
||||
public void setCodAnag(String codAnag) {
|
||||
this.mFornitore = codAnag;
|
||||
|
||||
public MutableLiveData<TipoDocDTO> 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<String> getAvailableCodDtips() {
|
||||
return mDocInterniSetupDTO.getTipiDoc() != null ? Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList() : new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<String> getAvailableCodMgrps() {
|
||||
return mDocInterniSetupDTO.getGruppiArt() != null ? Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList() : new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<String> 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<String> getAdditionalNotes() {
|
||||
return SettingsManager.iDB().getNotePerditaDocInterni();
|
||||
}
|
||||
|
||||
public interface Listener extends ILoadingListener {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onDocTypeSelected();
|
||||
|
||||
}
|
||||
}
|
||||
@ -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<DialogSelectDocInfo_FornitoreAdapter.ListModel> {
|
||||
|
||||
public DialogSelectDocInfo_FornitoreAdapter(@NonNull Context context, int resource, List<FornitoreDTO> inputData) {
|
||||
super(context, resource);
|
||||
|
||||
if (inputData == null) return;
|
||||
|
||||
List<ListModel> 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() + " )";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<DialogSelectDocInfo_GroupArtAdapter.ListModel> {
|
||||
|
||||
public DialogSelectDocInfo_GroupArtAdapter(@NonNull Context context, int resource, List<GruppoArticoloDTO> inputData) {
|
||||
super(context, resource);
|
||||
|
||||
if(inputData == null) return;
|
||||
|
||||
List<ListModel> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<String> {
|
||||
|
||||
public DialogSelectDocInfo_NoteAdapter(@NonNull Context context, int resource, List<String> inputData) {
|
||||
super(context, resource);
|
||||
|
||||
if (inputData == null) return;
|
||||
|
||||
addAll(inputData);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<DialogSelectDocInfo_TipoDocAdapter.ListModel> {
|
||||
|
||||
public DialogSelectDocInfo_TipoDocAdapter(@NonNull Context context, int resource, List<TipoDocDTO> inputData) {
|
||||
super(context, resource);
|
||||
|
||||
if(inputData == null) return;
|
||||
|
||||
List<ListModel> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
|
||||
|
||||
public class DocumentRequiredException extends Exception {
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
|
||||
|
||||
public class FornitoreRequiredException extends Exception {
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
|
||||
|
||||
public class NoteRequiredException extends Exception {
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
|
||||
|
||||
public class TipoDocRequiredException extends Exception {
|
||||
}
|
||||
@ -5,26 +5,26 @@ import java.util.List;
|
||||
public class DocInterniSetupDTO {
|
||||
|
||||
|
||||
private List<TipiDocDTO> tipiDoc;
|
||||
private List<TipoDocDTO> tipiDoc;
|
||||
|
||||
private List<GruppiArticoloDTO> gruppiArt;
|
||||
private List<GruppoArticoloDTO> gruppiArt;
|
||||
|
||||
private List<FornitoreDTO> fornitori;
|
||||
|
||||
|
||||
public List<TipiDocDTO> getTipiDoc() {
|
||||
public List<TipoDocDTO> getTipiDoc() {
|
||||
return tipiDoc;
|
||||
}
|
||||
|
||||
public void setTipiDoc(List<TipiDocDTO> tipiDoc) {
|
||||
public void setTipiDoc(List<TipoDocDTO> tipiDoc) {
|
||||
this.tipiDoc = tipiDoc;
|
||||
}
|
||||
|
||||
public List<GruppiArticoloDTO> getGruppiArt() {
|
||||
public List<GruppoArticoloDTO> getGruppiArt() {
|
||||
return gruppiArt;
|
||||
}
|
||||
|
||||
public void setGruppiArt(List<GruppiArticoloDTO> gruppiArt) {
|
||||
public void setGruppiArt(List<GruppoArticoloDTO> gruppiArt) {
|
||||
this.gruppiArt = gruppiArt;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
@ -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;
|
||||
}
|
||||
@ -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<SqlMtbColr> 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<GrigliaAcquistiChildDTO> 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);
|
||||
|
||||
@ -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<GrigliaAcquistiChildDTO> productsList;
|
||||
private TipiDocDTO tipoDoc;
|
||||
private TipoDocDTO tipoDoc;
|
||||
private boolean isCheckPartitaMag = false;
|
||||
private JSONObject checkFornitoreRules = null;
|
||||
public MutableLiveData<SqlMtbColt> 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;
|
||||
}
|
||||
|
||||
@ -1,176 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="viewmodel"
|
||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel" />
|
||||
|
||||
<variable
|
||||
name="view"
|
||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView" />
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/title_text"
|
||||
style="@style/TextViewMaterial.Dialog.HeadlineText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/dialog_doc_interni_choose_dtip_mgrp_pair_title" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_dtip"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/doc_type">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_dtips"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="text"
|
||||
android:singleLine="true"
|
||||
app:binding="@{view.codDtip}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_mgrps"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/art_group">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_mgrps"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="text"
|
||||
android:singleLine="true"
|
||||
app:binding="@{view.codMgrp}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_anag_forn"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/fornitore"
|
||||
android:visibility="gone">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_anag_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="text"
|
||||
android:singleLine="true"
|
||||
app:binding="@{view.codAnag}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_num_doc_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone"
|
||||
style="@style/TextInputLayout.OutlineDefault"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_num_doc"
|
||||
style="@style/TextInputEditText.OutlinePrimary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/document_number"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="number"
|
||||
app:binding="@{view.numDoc}"
|
||||
/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_data_doc_layout"
|
||||
style="@style/TextInputLayout.OutlineDefault"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_data_doc"
|
||||
style="@style/TextInputEditText.OutlinePrimary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusableInTouchMode="false"
|
||||
android:hint="@string/document_date"
|
||||
android:inputType="text"
|
||||
app:binding="@{view.dataDoc}"
|
||||
app:parentView="@{view}"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_note_layout"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:hint="@string/hint_additional_notes">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_note"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="text"
|
||||
android:singleLine="true"
|
||||
app:binding="@{view.note}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/positive_btn"
|
||||
style="@style/Button.PrimaryFull"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/confirm" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</ScrollView>
|
||||
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
|
||||
</layout>
|
||||
@ -1,8 +0,0 @@
|
||||
<androidx.appcompat.widget.AppCompatTextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"
|
||||
style="@style/AppTheme.NewMaterial.Text"/>
|
||||
173
app/src/main/res/layout/dialog_select_doc_info_view.xml
Normal file
173
app/src/main/res/layout/dialog_select_doc_info_view.xml
Normal file
@ -0,0 +1,173 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
|
||||
<data>
|
||||
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="view"
|
||||
type="it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView" />
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
app:cardCornerRadius="16dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="16dp">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/title_text"
|
||||
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:maxLines="2"
|
||||
android:singleLine="false"
|
||||
android:text="@string/dialog_doc_interni_choose_dtip_mgrp_pair_title" />
|
||||
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_dtip"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/doc_type">
|
||||
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_dtips"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="none"
|
||||
android:singleLine="true" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_mgrps"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/art_group">
|
||||
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_mgrps"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="none"
|
||||
android:singleLine="true" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_anag_forn"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/fornitore"
|
||||
app:visibility="@{view.isFornitoreRequired}"
|
||||
tools:visibility="visible">
|
||||
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_anag_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:inputType="text"
|
||||
android:singleLine="true" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_num_doc_layout"
|
||||
style="@style/TextInputLayout.OutlineDefault"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:visibility="@{view.isDocumentRequired}"
|
||||
tools:visibility="visible">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_num_doc"
|
||||
style="@style/TextInputEditText.OutlinePrimary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/document_number"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="number"
|
||||
app:binding="@{view.selectedNumDoc}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_data_doc_layout"
|
||||
style="@style/TextInputLayout.OutlineDefault"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:visibility="@{view.isDocumentRequired}"
|
||||
tools:visibility="visible">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_data_doc"
|
||||
style="@style/TextInputEditText.OutlinePrimary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusableInTouchMode="false"
|
||||
android:hint="@string/document_date"
|
||||
android:inputType="none"
|
||||
app:binding="@{view.selectedDataDoc}"
|
||||
app:parentView="@{view}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_note_layout"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/hint_additional_notes"
|
||||
app:visibility="@{view.isNoteRequired}"
|
||||
tools:visibility="visible">
|
||||
|
||||
<com.google.android.material.textfield.MaterialAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_note"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:singleLine="true"
|
||||
app:binding="@{view.selectedNote}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</ScrollView>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</androidx.cardview.widget.CardView>
|
||||
</layout>
|
||||
@ -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">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
@ -315,7 +314,7 @@
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp"
|
||||
app:srcCompat="@drawable/ic_add_24dp"
|
||||
android:visibility="invisible"
|
||||
android:visibility="visible"
|
||||
app:singleClick="@{viewModel::newDocument}"
|
||||
style="?attr/floatingActionButtonPrimaryStyle" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user