Merge branch 'develop' into feature/Popup_InfoArticolo

This commit is contained in:
2023-03-14 19:47:57 +01:00
21 changed files with 371 additions and 369 deletions

View File

@@ -115,4 +115,6 @@ public class BaseDialogFragment extends DialogFragment implements DialogInterfac
});
}
}
}

View File

@@ -48,7 +48,6 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
private FragmentDocInterniBinding mBinding;
private DocInterniSetupDTO mDocInterniSetupDTO;
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
private boolean dialogInitialized = false;
public DocInterniFragment() {
@@ -80,8 +79,10 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
mViewModel.setListeners(this);
mBinding.setLifecycleOwner(this);
mBinding.setView(this);
mBinding.setViewModel(mViewModel);
mViewModel.mtbGrup.observe(getViewLifecycleOwner(), mtbGrup -> mViewModel.fetchProducts());
mViewModel.dtbTipi.observe(getViewLifecycleOwner(), dtbTipi -> mViewModel.fetchDocuments());
this.initRecyclerView();
@@ -110,8 +111,7 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
@Override
public void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO) {
this.mDocInterniSetupDTO = docInterniSetupDTO;
this.dialogInitialized = true;
this.selectDocInfo();
this.openDocumentSelectionDialog();
}
@Override
@@ -125,11 +125,11 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
}
if (selection.getGruppoArt() != null) {
mBinding.mtbGrpContainer.setVisibility(View.VISIBLE);
} else {
mBinding.mtbGrpContainer.setVisibility(View.GONE);
}
// if (selection.getGruppoArt() != null) {
// mBinding.mtbGrpContainer.setVisibility(View.VISIBLE);
// } else {
// mBinding.mtbGrpContainer.setVisibility(View.GONE);
// }
if (selection.isDocumentRequired()) {
mBinding.docContainer.setVisibility(View.VISIBLE);
@@ -150,15 +150,16 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
this.mOnPreDestroyList.add(onPreDestroy);
}
public void selectDocInfo() {
if (this.dialogInitialized) {
public void openDocumentSelectionDialog() {
DialogSelectDocInfoView.newInstance(
mDocInterniSetupDTO,
this::onDocDetailsChanged,
this::popMe)
.show(requireActivity().getSupportFragmentManager(), "tag");
}
public void showInfoArtDialog() {
DialogSelectDocInfoView.newInstance(
mDocInterniSetupDTO,
this::onDocDetailsChanged,
this::popMe)
.show(requireActivity().getSupportFragmentManager(), "tag");
}
}
private void initRecyclerView() {

View File

@@ -50,6 +50,7 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
private final RunnableArgs<DialogSelectDocInfoResponseDTO> onConfirm;
private final Runnable onAbort;
private boolean completed = false;
public ObservableField<TipoDocDTO> selectedTipoDoc = new ObservableField<>();
public ObservableField<GruppoArticoloDTO> selectedGroupArt = new ObservableField<>();
@@ -95,7 +96,7 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
mViewModel.setFornitori(mDocInputData.getFornitori());
var cancelable = true;
var cancelable = false;
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
@@ -110,6 +111,8 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
alertDialog.setOnShowListener(this);
alertDialog.setCanceledOnTouchOutside(cancelable);
alertDialog.setOnDismissListener(this);
return alertDialog;
}
@@ -135,6 +138,7 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
mBindings.inputNoteLayout.setError(null);
mViewModel.validate();
completed = true;
alertDialog.dismiss();
if (this.onConfirm != null)
@@ -174,6 +178,7 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
}
private void initBindings() {
this.isFornitoreRequired.set(mViewModel.isFornitoreRequired().getValue());
mViewModel.isFornitoreRequired().observe(this, val -> this.isFornitoreRequired.set(val));
@@ -227,7 +232,7 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
.getOriginalModel());
});
var arrayAdapterFornitori = new DialogSelectDocInfo_FornitoreAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getFornitori());
var arrayAdapterFornitori = new DialogSelectDocInfo_FornitoreAdapter(mContext, R.layout.array_adapter_single_item, mViewModel.getAvailableFornitori());
mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterFornitori);
mBindings.filledExposedDropdownCodAnagList.setOnItemClickListener((adapterView, view, i, l) -> {
this.selectedFornitore.set(
@@ -239,4 +244,11 @@ public class DialogSelectDocInfoView extends BaseDialogFragment {
mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote);
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
if(!completed)
this.onAbort.run();
}
}

View File

@@ -54,6 +54,10 @@ public class DialogSelectDocInfoViewModel extends ViewModel {
val.getGestione().equals("L")));
}
public MutableLiveData<List<FornitoreDTO>> getAvailableFornitori() {
return availableFornitori;
}
public void setFornitori(List<FornitoreDTO> fornitori) {
tipoDoc.observeForever(val -> {
availableFornitori.postValue(Stream.of(fornitori)

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
@@ -13,17 +14,20 @@ 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) {
public DialogSelectDocInfo_FornitoreAdapter(@NonNull Context context, int resource, MutableLiveData<List<FornitoreDTO>> inputData) {
super(context, resource);
if (inputData == null) return;
List<ListModel> mDataset = Stream.of(inputData)
.map(x -> new ListModel()
.setOriginalModel(x))
.toList();
inputData.observeForever(data -> {
List<ListModel> mDataset = Stream.of(data)
.map(x -> new ListModel()
.setOriginalModel(x))
.toList();
addAll(mDataset);
clear();
addAll(mDataset);
});
}
public static class ListModel {

View File

@@ -47,6 +47,7 @@ import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@@ -94,10 +95,12 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_contab_doc_interni_edit);
MainApplication.appComponent
.docInterniEditFormComponent()
.create()
.inject(this);
SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT));
List<DocumentoArtDTO> productList = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST));
TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC));
@@ -117,11 +120,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
SqlMtbColt document = this.viewModel.getDocument();
this.codDtip.set(document.getCodDtipProvv());
this.note.set(document.getAnnotazioni());
if (document.getCodMgrp() != null) {
this.codMgrp.set(document.getCodMgrp());
} else {
binding.mtbGrupContainer.setVisibility(View.GONE);
}
if (document.getCodAnag() != null) {
this.codAnag.set(document.getCodAnag() + (document.getCodVdes() != null ? " - " + document.getCodVdes() : ""));
} else {
@@ -131,7 +134,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv()));
if (document.getNumDoc() != null && document.getDataDoc() != null) {
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), document.getDataDoc()));
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), UtilityDate.formatDate(document.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
} else {
this.binding.docRifLayout.setVisibility(View.GONE);
}
@@ -349,4 +352,20 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
.findFirstOrElse(null);
}
public void showInfoArtDialog() {
var listaMtbAart = Stream.of(this.viewModel.getProductsList())
.map(x -> new MtbAart()
.setCodMart(x.getCodMart())
.setUntMis(x.getUntMis())
.setDescrizione(x.getDescrizione())
.setDescrizioneEstesa(x.getDescrizione())
.setQtaCnf(x.getQtaCnf()))
.toList();
new DialogChooseArtFromListaArtsView(false, listaMtbAart, null)
.show(getSupportFragmentManager(), "tag");
}
}

View File

@@ -264,6 +264,10 @@ public class DocInterniEditFormViewModel {
return document.getValue();
}
public List<DocumentoArtDTO> getProductsList() {
return productsList;
}
public void setProductsList(List<DocumentoArtDTO> productsList) {
this.productsList = productsList;
this.flattedBarcodesCodMarts = new HashMap<>();

View File

@@ -8,6 +8,7 @@ import android.view.Menu;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
import com.ravikoradiya.liveadapter.Type;
@@ -38,6 +39,7 @@ import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
@@ -229,4 +231,13 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
})
.show(getSupportFragmentManager(), "tag");
}
public void showAvailableArts() {
var listaMtbAart = Stream.of(this.mViewModel.getAvailableArts())
.map(InventarioArtDTO::toMtbAart)
.toList();
new DialogChooseArtFromListaArtsView(false, listaMtbAart, null)
.show(getSupportFragmentManager(), "tag");
}
}

View File

@@ -138,7 +138,6 @@ public class PVOrdineAcquistoEditViewModel {
} catch (Exception e) {
this.sendError(e);
BarcodeManager.enable();
} finally {
}
}

View File

@@ -301,7 +301,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
@Override
public void onArtListLoaded(ArrayList<MtbAart> artList, RunnableArgs<MtbAart> onArtChoosed) {
new DialogChooseArtFromListaArtsView(artList, onArtChoosed)
new DialogChooseArtFromListaArtsView(true, artList, onArtChoosed)
.show(requireActivity().getSupportFragmentManager(), "tag");
}

View File

@@ -941,7 +941,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override
public void onChooseArtRequest(List<MtbAart> artsList, RunnableArgs<MtbAart> onComplete) {
new DialogChooseArtFromListaArtsView(artsList, onComplete)
new DialogChooseArtFromListaArtsView(true, artsList, onComplete)
.show(getSupportFragmentManager(), "tag");
}

View File

@@ -1240,9 +1240,12 @@ public class SpedizioneViewModel {
return;
}
var clonedSourceMtbColr = (MtbColr) mtbColrToDispatch.clone();
clonedSourceMtbColr.setMtbPartitaMag(null)
.setMtbAart(null);
MtbColr clonedSourceMtbColr = null;
if (mtbColrToDispatch != null) {
clonedSourceMtbColr = (MtbColr) mtbColrToDispatch.clone();
clonedSourceMtbColr.setMtbPartitaMag(null)
.setMtbAart(null);
}
var clonedTargetMtbColt = (MtbColt) mCurrentMtbColt.clone();
clonedTargetMtbColt.setMtbColr(null);
@@ -1341,7 +1344,6 @@ public class SpedizioneViewModel {
}, this::sendError);
// MtbColt mtbColt = new MtbColt()
// .setNumCollo(mtbColrToUpdate.getNumCollo())
// .setDataCollo(mtbColrToUpdate.getDataColloS())

View File

@@ -1,11 +1,12 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts;
import android.content.Context;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import it.integry.integrywmsnative.R;
@@ -18,7 +19,7 @@ public class DialogChooseArtFromListaArtsAdapter extends RecyclerView.Adapter<Di
protected Context mContext;
private List<MtbAart> mDataset;
private IRecyclerItemClicked<MtbAart> mOnItemClickListener;
private final IRecyclerItemClicked<MtbAart> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
protected DialogChooseArtFromListaArtItemModelBinding mViewDataBinding;

View File

@@ -16,6 +16,7 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
@@ -23,12 +24,15 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
private final boolean mEnableSelection;
private final List<MtbAart> mListaArts;
private final RunnableArgs<MtbAart> mOnItemChoosed;
public DialogChooseArtFromListaArtsView(List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
public DialogChooseArtFromListaArtsView(boolean enableSelection, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
super();
this.mEnableSelection = enableSelection;
this.mListaArts = listaArts;
this.mOnItemChoosed = onItemChoosed;
}
@@ -39,6 +43,9 @@ public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
var binding = DialogChooseArtFromListaArtBinding.inflate(LayoutInflater.from(requireContext()));
binding.titleText.setText(this.mEnableSelection ? R.string.dialog_choose_art_from_lista_art :
R.string.articoli_disponibili);
initRecyclerView(binding, mListaArts);
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
@@ -60,14 +67,16 @@ public class DialogChooseArtFromListaArtsView extends BaseDialogFragment {
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter(requireContext(), dataset,
((item, position) -> {
if (mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}
IRecyclerItemClicked<MtbAart> onItemClickListener = (item, position) -> {
if (mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}
dismiss();
}));
dismiss();
};
DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter(
requireContext(), dataset, this.mEnableSelection ? onItemClickListener : null);
binding.dialogChooseArtFromListaArtMainList.setAdapter(mCurrentAdapter);
}