Implementato filtro avanzato per Ultime consegne clienti.

This commit is contained in:
Giuseppe Scorrano 2019-11-11 15:03:55 +01:00
parent 84c7c6ac95
commit 095b7489ab
13 changed files with 433 additions and 79 deletions

View File

@ -111,6 +111,7 @@ public class DialogOrdineProduzioneFiltroAvanzato {
viewModel.numOrds.refresh(); viewModel.numOrds.refresh();
viewModel.codJcoms.refresh();
} }

View File

@ -11,17 +11,22 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment { public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
private Runnable mOnPreDestroy; private Runnable mOnPreDestroy;
private ElevatedToolbar mToolbar; private ElevatedToolbar mToolbar;
private UltimeConsegneClienteViewModel mViewModel;
public UltimeConsegneClienteFragment() { public UltimeConsegneClienteFragment() {
// Required empty public constructor // Required empty public constructor
} }
@ -41,7 +46,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false); FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false);
mBinding.setViewmodel(new UltimeConsegneClienteViewModel(getActivity(), mBinding)); mViewModel = new UltimeConsegneClienteViewModel(getActivity(), mBinding);
mBinding.setViewmodel(mViewModel);
mToolbar.setRecyclerView(mBinding.recyclerView); mToolbar.setRecyclerView(mBinding.recyclerView);
@ -69,4 +76,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
public void setOnPreDestroy(Runnable onPreDestroy) { public void setOnPreDestroy(Runnable onPreDestroy) {
mOnPreDestroy = onPreDestroy; mOnPreDestroy = onPreDestroy;
} }
@Override
public void onFilterClick() {
mViewModel.openFilterDialog();
}
} }

View File

@ -0,0 +1,203 @@
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding;
public class DialogUltimeConsegneFiltroAvanzato {
private AlertDialog mAlert;
private Context mContext;
private DialogUltimeConsegneFiltroAvanzatoViewModel mBaseViewModel;
private RunnableArgss<List<DocumentoResoDTO>, DialogUltimeConsegneFiltroAvanzatoViewModel> mOnDismiss;
private ArrayAdapter<String> arrayAdapterRagSoc;
private List<DocumentoResoDTO> mItems;
private List<DocumentoResoDTO> mFilteredItems;
private Predicate<DocumentoResoDTO> currentRagSocPredicate = null;
private Predicate<DocumentoResoDTO> currentDataDocPredicate = null;
public static AlertDialog make(final Context context,
final List<DocumentoResoDTO> items,
DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<DocumentoResoDTO>, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
return new DialogUltimeConsegneFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
}
public DialogUltimeConsegneFiltroAvanzato(final Context context,
final List<DocumentoResoDTO> items,
DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<DocumentoResoDTO>, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
mContext = context;
mItems = items;
mBaseViewModel = baseViewModel;
mOnDismiss = onDismiss;
DialogUltimeConsegneFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogUltimeConsegneFiltroAvanzatoViewModel();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogUltimeConsegneFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ultime_consegne_filtro_avanzato, null, false);
final AlertDialog.Builder dialog = new AlertDialog.Builder(context)
.setView(binding.getRoot());
binding.setViewmodel(viewModel);
initViewModelNew(viewModel);
initView(binding, viewModel);
mAlert = dialog.create();
mAlert.setCanceledOnTouchOutside(false);
mAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
binding.positiveBtn.setOnClickListener(view -> {
mAlert.dismiss();
});
binding.neutralBtn.setOnClickListener(view -> {
resetAll(viewModel);
});
mAlert.setOnDismissListener(dialogInterface -> {
if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
});
refreshList();
}
private void resetAll(DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
viewModel.ragSoc.set(null);
viewModel.dataDoc.set(null);
}
private void initView(DialogUltimeConsegneFiltroAvanzatoBinding bindings, DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
arrayAdapterRagSoc = new ArrayAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterRagSoc.addAll(getAvailableRagSocs(false));
bindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
bindings.filledExposedDropdownDataDoc.setOnClickListener(view -> {
Calendar c = UtilityDate.getCalendarInstance();
if(viewModel.dataDocDate != null) {
c.setTime(viewModel.dataDocDate);
}
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
(view2, year, month, day) -> {
viewModel.dataDocDate = new GregorianCalendar(year, month, day).getTime();
viewModel.dataDoc.set(UtilityDate.formatDate(viewModel.dataDocDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}, mYear, mMonth, mDay);
datePickerDialog.show();
});
viewModel.ragSoc.refresh();
viewModel.dataDoc.refresh();
}
private void initViewModelNew(DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
BindableString.resetListeners(viewModel.ragSoc);
BindableString.registerListener(viewModel.ragSoc, value -> {
if (UtilityString.isNullOrEmpty(value)) currentRagSocPredicate = null;
else {
currentRagSocPredicate = o -> o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get());
}
refreshList();
});
BindableString.resetListeners(viewModel.dataDoc);
BindableString.registerListener(viewModel.dataDoc, value -> {
if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
else {
currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
}
refreshList();
arrayAdapterRagSoc.clear();
arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
});
}
private List<String> getAvailableRagSocs(boolean skipRecalc) {
if(currentDataDocPredicate == null){
mFilteredItems = mItems;
} else if(!skipRecalc){
Stream<DocumentoResoDTO> tmpStream = Stream.of(mItems)
.filter(x ->
(currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
);
mFilteredItems = tmpStream.toList();
}
return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
}
private void refreshList() {
if(currentRagSocPredicate == null && currentDataDocPredicate == null){
mFilteredItems = mItems;
} else {
Stream<DocumentoResoDTO> tmpStream = Stream.of(mItems)
.filter(x ->
(currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
(currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
);
mFilteredItems = tmpStream.toList();
}
}
public class DialogUltimeConsegneFiltroAvanzatoViewModel {
public BindableString ragSoc = new BindableString();
public BindableString dataDoc = new BindableString();
public Date dataDocDate;
}
}

View File

@ -16,6 +16,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
@ -25,7 +26,11 @@ public class UltimeConsegneClienteViewModel {
private Context mContext; private Context mContext;
private FragmentMainUltimeConsegneClienteBinding mBinding; private FragmentMainUltimeConsegneClienteBinding mBinding;
private UltimeConsegneMainListAdapter mAdapter;
private List<DocumentoResoDTO> mItems; private List<DocumentoResoDTO> mItems;
private List<DocumentoResoDTO> mRenderedItems = new ArrayList<>();
private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel;
public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) { public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) {
this.mContext = context; this.mContext = context;
@ -39,6 +44,24 @@ public class UltimeConsegneClienteViewModel {
}); });
} }
public void openFilterDialog() {
DialogUltimeConsegneFiltroAvanzato.make(mContext, mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
mAppliedFilterViewModel = filter;
if(filteredOrderList != null){
refreshItems(filteredOrderList);
}
}).show();
}
public void refreshItems(List<DocumentoResoDTO> items){
mRenderedItems.clear();
mRenderedItems.addAll(items);
mAdapter.updateItems(mRenderedItems);
}
private void initList() { private void initList() {
@ -50,7 +73,9 @@ public class UltimeConsegneClienteViewModel {
null, null,
consegne -> { consegne -> {
this.mItems = consegne; this.mItems = consegne;
this.initDataAdapter(consegne); this.initDataAdapter(consegne);
refreshRenderedOrdini(consegne);
progressDialog.dismiss(); progressDialog.dismiss();
}, ex -> { }, ex -> {
@ -58,13 +83,18 @@ public class UltimeConsegneClienteViewModel {
}); });
} }
private void refreshRenderedOrdini(List<DocumentoResoDTO> items) {
mRenderedItems.clear();
if(items != null) mRenderedItems.addAll(items);
}
private void initDataAdapter(ArrayList<DocumentoResoDTO> dataset) { private void initDataAdapter(ArrayList<DocumentoResoDTO> dataset) {
UltimeConsegneMainListAdapter adapter = new UltimeConsegneMainListAdapter(mContext, dataset); mAdapter = new UltimeConsegneMainListAdapter(mContext, dataset);
adapter.setOnSelectionChanged(this::onSingleSelectionChanged); mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mBinding.recyclerView.setHasFixedSize(true); mBinding.recyclerView.setHasFixedSize(true);
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
mBinding.recyclerView.setAdapter(adapter); mBinding.recyclerView.setAdapter(mAdapter);
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView); mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
} }

View File

@ -36,10 +36,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
private RunnableArgs<DocumentoResoDTO> mOnSelectionChanged; private RunnableArgs<DocumentoResoDTO> mOnSelectionChanged;
// private TextDrawable.IShapeBuilder smallIconBuilder;
// private TextDrawable.IShapeBuilder mediumIconBuilder;
// private TextDrawable.IShapeBuilder largeIconBuilder;
@Override @Override
public String getSectionTitle(int position) { public String getSectionTitle(int position) {
return mSectionTitleItems.get(position); return mSectionTitleItems.get(position);
@ -74,56 +70,8 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
super(); super();
this.mContext = context; this.mContext = context;
this.mDataset = new ArrayList<>(); this.mDataset = new ArrayList<>();
this.mSectionTitleItems = new ArrayList<>();
this.mDataset = Stream.of(dataset)
.sortBy(DocumentoResoDTO::getRagSoc)
.toList();
Stream.of(mDataset)
.map(DocumentoResoDTO::getRagSoc)
.distinct()
.forEach(x -> {
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
long count = Stream.of(dataset)
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
.count();
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
});
// long count = Stream.of(dataset)
// .filter(x -> UtilityString.isNullOrEmpty(x.getRagSoc()))
// .count();
// smallIconBuilder = TextDrawable.builder()
// .beginConfig()
// .width(40)
// .height(40)
// .fontSize(24)
// .useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
// .endConfig();
//
// mediumIconBuilder = TextDrawable.builder()
// .beginConfig()
// .width(40)
// .height(40)
// .fontSize(20)
// .useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
// .endConfig();
//
// largeIconBuilder = TextDrawable.builder()
// .beginConfig()
// .width(40)
// .height(40)
// .fontSize(16)
// .useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
// .endConfig();
updateItems(sort(dataset));
} }
@ -153,16 +101,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
holder.mBinding.badge1.setText(String.valueOf(consegna.getNumDoc())); holder.mBinding.badge1.setText(String.valueOf(consegna.getNumDoc()));
// String numDoc = "" + consegna.getNumDoc();
// if(numDoc.length() <= 2) {
// holder.mBinding.startIcon.setImageDrawable(smallIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
// } else if(numDoc.length() == 3) {
// holder.mBinding.startIcon.setImageDrawable(mediumIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
// } else if(numDoc.length() == 4) {
// holder.mBinding.startIcon.setImageDrawable(largeIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
// }
try { try {
Calendar calendarNow = UtilityDate.getCalendarInstance(); Calendar calendarNow = UtilityDate.getCalendarInstance();
Calendar calendarDataDoc = UtilityDate.getCalendarInstance(); Calendar calendarDataDoc = UtilityDate.getCalendarInstance();
@ -215,6 +153,40 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
} }
public void updateItems(List<DocumentoResoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(sort(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<DocumentoResoDTO> sort(List<DocumentoResoDTO> dataset) {
this.mSectionTitleItems = new ArrayList<>();
List<DocumentoResoDTO> sortedDataset = Stream.of(dataset)
.sortBy(DocumentoResoDTO::getRagSoc)
.toList();
Stream.of(sortedDataset)
.map(DocumentoResoDTO::getRagSoc)
.distinct()
.forEach(x -> {
this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
long count = Stream.of(dataset)
.filter(y -> y.getRagSoc().equalsIgnoreCase(x))
.count();
for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
});
return sortedDataset;
}
public void setOnSelectionChanged(RunnableArgs<DocumentoResoDTO> mSelectionChanged) { public void setOnSelectionChanged(RunnableArgs<DocumentoResoDTO> mSelectionChanged) {
this.mOnSelectionChanged = mSelectionChanged; this.mOnSelectionChanged = mSelectionChanged;
} }

View File

@ -91,7 +91,7 @@ public class DialogVenditaFiltroAvanzato {
.setView(binding.getRoot()); .setView(binding.getRoot());
binding.setViewmodel(viewModel); binding.setViewmodel(viewModel);
initViewModelNew(viewModel, binding); initViewModelNew(viewModel);
initView(binding, viewModel); initView(binding, viewModel);
currentAlert = alertDialog.create(); currentAlert = alertDialog.create();
@ -209,7 +209,7 @@ public class DialogVenditaFiltroAvanzato {
} }
private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) { private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) {
BindableString.registerListener(viewModel.idViaggio, value -> { BindableString.registerListener(viewModel.idViaggio, value -> {
if(UtilityString.isNullOrEmpty(value)) currentIdViaggioPredicate = null; if(UtilityString.isNullOrEmpty(value)) currentIdViaggioPredicate = null;
else { else {

View File

@ -0,0 +1,136 @@
<?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.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel" />
</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">
<LinearLayout
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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/dialog_vendita_filtro_avanzato"
android:gravity="center_horizontal"
android:layout_marginBottom="12dp"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_rag_soc"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:nextFocusDown="@id/input_data_doc"
android:hint="@string/rag_soc">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_rag_soc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusDown="@id/input_data_doc"
app:binding="@{viewmodel.ragSoc}" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_data_doc"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/ship_date">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filled_exposed_dropdown_data_doc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:focusable="false"
android:singleLine="true"
app:binding="@{viewmodel.dataDoc}"/>
</com.google.android.material.textfield.TextInputLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="8dp">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/buttons_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/neutral_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/buttons_guideline"
app:strokeColor="@color/colorPrimary"
android:text="@string/reset"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/positive_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/buttons_guideline"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/confirm"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -190,11 +190,11 @@
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_data_cons" android:id="@+id/input_data_cons"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/ship_date"> android:hint="@string/ship_date">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText

View File

@ -27,7 +27,6 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:scrollbars="none" android:scrollbars="none"
android:paddingStart="4dp"
android:paddingEnd="4dp"/> android:paddingEnd="4dp"/>
<it.integry.integrywmsnative.ui.fastscroll.FastScroller <it.integry.integrywmsnative.ui.fastscroll.FastScroller

View File

@ -14,7 +14,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:layout_marginStart="12dp" android:layout_marginStart="8dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"

View File

@ -27,7 +27,6 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:scrollbars="none" android:scrollbars="none"
android:paddingStart="4dp"
android:paddingEnd="4dp"/> android:paddingEnd="4dp"/>
<it.integry.integrywmsnative.ui.fastscroll.FastScroller <it.integry.integrywmsnative.ui.fastscroll.FastScroller

View File

@ -183,6 +183,7 @@
<string name="terms_of_delivery">Termini di consegna</string> <string name="terms_of_delivery">Termini di consegna</string>
<string name="vehicle">Automezzo</string> <string name="vehicle">Automezzo</string>
<string name="deposit">Deposito</string> <string name="deposit">Deposito</string>
<string name="rag_soc">Ragione sociale</string>
<string name="travel_id">ID Viaggio</string> <string name="travel_id">ID Viaggio</string>
<string name="agent">Agente</string> <string name="agent">Agente</string>
<string name="carrier">Vettore</string> <string name="carrier">Vettore</string>
@ -277,7 +278,7 @@
<string name="articoli_in_griglia">Articoli in griglia: </string> <string name="articoli_in_griglia">Articoli in griglia: </string>
<string name="cod_alis_name">Griglia: </string> <string name="cod_alis_name">Griglia: </string>
<string name="seleziona_crea_ordine_a_pv">Seleziona / Crea ordine</string> <string name="seleziona_crea_ordine_a_pv">Seleziona / Crea ordine</string>
<string name="add">Agigungi</string> <string name="add">Aggiungi</string>
<string name="close_and_export">Chiudi ed esporta ordine</string> <string name="close_and_export">Chiudi ed esporta ordine</string>
<string name="close_and_exit">Chiudi ordine</string> <string name="close_and_exit">Chiudi ordine</string>
</resources> </resources>

View File

@ -186,6 +186,7 @@
<string name="terms_of_delivery">Terms of delivery</string> <string name="terms_of_delivery">Terms of delivery</string>
<string name="vehicle">Vehicle</string> <string name="vehicle">Vehicle</string>
<string name="deposit">Deposit</string> <string name="deposit">Deposit</string>
<string name="rag_soc">Company name</string>
<string name="travel_id">Travel ID</string> <string name="travel_id">Travel ID</string>
<string name="agent">Agent</string> <string name="agent">Agent</string>
<string name="carrier">Carrier</string> <string name="carrier">Carrier</string>