[REFACT] Ricostruito completamente l'adapter della lista di avantielenco Accettazione

This commit is contained in:
Giuseppe Scorrano 2019-07-08 18:46:46 +02:00
parent 508c722897
commit 66543a06b5
15 changed files with 621 additions and 751 deletions

View File

@ -21,26 +21,21 @@ import android.widget.Toast;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding;
import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper;
import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter;
import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapterNew;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
@ -53,10 +48,11 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
private FragmentMainAccettazioneBinding mBinding;
private AccettazioneHelper helper;
private AccettazioneHelper mHelper;
private MainListAccettazioneAdapterNew mAdapter;
private List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdiniInevasi;
private MainListAccettazioneAdapter mAdapter;
private List<OrdineAccettazioneInevasoDTO> mOriginalOrderList;
private List<OrdineAccettazioneInevasoDTO> mRenderedOrderList = new ArrayList<>();
private AppCompatTextView mAppBarTitle;
@ -126,18 +122,19 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), getText(R.string.loading) + " ...", true);
helper = new AccettazioneHelper(getActivity());
mHelper = new AccettazioneHelper(getActivity());
helper.loadOrdini(new ILoadOrdiniCallback() {
mHelper.loadOrdini(new ILoadOrdiniCallback() {
@Override
public void onLoadSuccess(List<OrdineAccettazioneInevasoDTO> ordini) {
if(ordini != null) {
Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show();
groupOrdiniAndMakeRecycler(ordini);
mOriginalOrderList = ordini;
}
mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
refreshRenderedOrdini(ordini);
initRecyclerView();
progress.dismiss();
}
@ -154,127 +151,156 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
}
private void groupOrdiniAndMakeRecycler(List<OrdineAccettazioneInevasoDTO> ordini){
for(OrdineAccettazioneInevasoDTO ordine : ordini){
if(UtilityString.isNullOrEmpty(ordine.getCodJcom()) || ordine.getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){
ordine.setCodJcom(CommonConst.Config.COMMESSA_MAG);
ordine.setDescrizioneCom("MAGAZZINO");
}
}
groupedOrdiniInevasi = new ArrayList<>();
//Splitto gli ordini per codAnagClie
List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdini = Stream.of(ordini)
.map(x -> {
OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO();
groupedOrdine.codAnagForn = x.getCodAnagOrd();
groupedOrdine.nomeFornitore = x.getRagSocOrd();
groupedOrdine.ordini = new ArrayList<>();
return groupedOrdine;
})
.distinctBy(x -> x.codAnagForn + "_" + x.nomeFornitore)
.sortBy(x -> x.nomeFornitore)
.toList();
Stream.of(groupedOrdini).forEach(groupedOrdine -> {
//Splitto gli ordini di ogni fornitore per data e numero
List<OrdineAccettazioneGroupedInevasoDTO.Ordine> tmpOrd = Stream.of(ordini)
.filter(x -> x.getCodAnagOrd().equals(groupedOrdine.codAnagForn))
.sortBy(x -> x.getDataConsD() != null ? x.getDataConsD() : new Date(2000, 01, 01))
.map(x -> {
OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine();
rigaOrdine.data = x.getData();
rigaOrdine.numero = x.getNumero();
rigaOrdine.gestione = x.getGestione();
rigaOrdine.codAnagOrd = x.getCodAnagOrd();
rigaOrdine.ragSocOrd = x.getRagSocOrd();
rigaOrdine.pesoTotale = x.getPesoTotale();
rigaOrdine.barcode = x.getBarcode();
rigaOrdine.termCons = x.getTermCons();
rigaOrdine.dataCons = x.getDataConsS();
rigaOrdine.rifOrd = x.getRifOrd();
rigaOrdine.clienti = new ArrayList<>();
return rigaOrdine;
})
.distinctBy(x -> x.barcode)
.toList();
Stream.of(tmpOrd)
.forEach(rigaOrdine -> {
Stream.of(ordini)
.filter(x ->
x.getCodAnagOrd().equals(rigaOrdine.codAnagOrd) &&
x.getNumero() == rigaOrdine.numero &&
x.getData().equals(rigaOrdine.data))
.forEach(x -> {
OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente();
cliente.codJcom = x.getCodJcom();
cliente.ragSocCom = x.getRagSocCom();
cliente.descrCom = x.getDescrizioneCom();
cliente.dataCons = x.getDataConsS();
cliente.numCnf = x.getNumCnf();
cliente.rifOrd = x.getRifOrd();
rigaOrdine.clienti.add(cliente);
});
groupedOrdine.ordini.add(rigaOrdine);
});
groupedOrdiniInevasi.add(groupedOrdine);
});
mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
private void initRecyclerView() {
mAdapter = new MainListAccettazioneAdapterNew(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
mBinding.accettazioneMainList.setAdapter(mAdapter);
}
private void refreshRenderedOrdini(List<OrdineAccettazioneInevasoDTO> ordini) {
mRenderedOrderList.clear();
mRenderedOrderList.addAll(ordini);
}
private void refreshRecyclerView() {
mAdapter.updateItems(mRenderedOrderList);
}
private RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged = dto -> {
List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
if(dto.isSelected()) {
Stream.of(selectedOrders)
.filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd()))
.forEach(x -> x.setSelected(false));
}
if(selectedOrders != null && selectedOrders.size() > 0) {
mBinding.accettazioneMainFab.show();
}
else {
mBinding.accettazioneMainFab.hide();
}
};
// private void groupOrdiniAndMakeRecycler(List<OrdineAccettazioneInevasoDTO> ordini){
//
// for(OrdineAccettazioneInevasoDTO ordine : ordini){
// if(UtilityString.isNullOrEmpty(ordine.getCodJcom()) || ordine.getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){
// ordine.setCodJcom(CommonConst.Config.COMMESSA_MAG);
// ordine.setDescrizioneCom("MAGAZZINO");
// }
// }
//
// groupedOrdiniInevasi = new ArrayList<>();
//
// //Splitto gli ordini per codAnagClie
// List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdini = Stream.of(ordini)
// .map(x -> {
// OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO();
//
// groupedOrdine.codAnagForn = x.getCodAnagOrd();
// groupedOrdine.nomeFornitore = x.getRagSocOrd();
// groupedOrdine.ordini = new ArrayList<>();
//
// return groupedOrdine;
// })
// .distinctBy(x -> x.codAnagForn + "_" + x.nomeFornitore)
// .sortBy(x -> x.nomeFornitore)
// .toList();
//
//
// Stream.of(groupedOrdini).forEach(groupedOrdine -> {
//
//
// //Splitto gli ordini di ogni fornitore per data e numero
// List<OrdineAccettazioneGroupedInevasoDTO.Ordine> tmpOrd = Stream.of(ordini)
// .filter(x -> x.getCodAnagOrd().equals(groupedOrdine.codAnagForn))
//
// .sortBy(x -> x.getDataConsD() != null ? x.getDataConsD() : new Date(2000, 01, 01))
// .map(x -> {
//
// OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine();
//
// rigaOrdine.data = x.getData();
// rigaOrdine.numero = x.getNumero();
// rigaOrdine.gestione = x.getGestione();
// rigaOrdine.codAnagOrd = x.getCodAnagOrd();
// rigaOrdine.ragSocOrd = x.getRagSocOrd();
// rigaOrdine.pesoTotale = x.getPesoTotale();
// rigaOrdine.barcode = x.getBarcode();
// rigaOrdine.termCons = x.getTermCons();
// rigaOrdine.dataCons = x.getDataConsS();
// rigaOrdine.rifOrd = x.getRifOrd();
// rigaOrdine.clienti = new ArrayList<>();
//
// return rigaOrdine;
// })
// .distinctBy(x -> x.barcode)
// .toList();
//
//
// Stream.of(tmpOrd)
// .forEach(rigaOrdine -> {
//
// Stream.of(ordini)
// .filter(x ->
// x.getCodAnagOrd().equals(rigaOrdine.codAnagOrd) &&
// x.getNumero() == rigaOrdine.numero &&
// x.getData().equals(rigaOrdine.data))
// .forEach(x -> {
// OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente();
//
// cliente.codJcom = x.getCodJcom();
// cliente.ragSocCom = x.getRagSocCom();
// cliente.descrCom = x.getDescrizioneCom();
// cliente.dataCons = x.getDataConsS();
// cliente.numCnf = x.getNumCnf();
// cliente.rifOrd = x.getRifOrd();
//
// rigaOrdine.clienti.add(cliente);
// });
//
//
// groupedOrdine.ordini.add(rigaOrdine);
//
// });
//
// groupedOrdiniInevasi.add(groupedOrdine);
// });
//
// mAdapter = new MainListAccettazioneAdapterNew(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
// mBinding.accettazioneMainList.setAdapter(mAdapter);
// }
private void onAccettazioneMainFabClick() {
List<OrdineAccettazioneGroupedInevasoDTO> selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi);
List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
List<String> barcodes = new ArrayList<>();
for(OrdineAccettazioneGroupedInevasoDTO ordine : selectedOrders){
for(OrdineAccettazioneGroupedInevasoDTO.Ordine righeOrd : ordine.ordini){
barcodes.add(righeOrd.barcode);
}
for(OrdineAccettazioneInevasoDTO ordine : selectedOrders){
if(!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode());
}
final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting),
getText(R.string.loading) + " ...", true);
helper.retrievePickingList(barcodes, new ILoadPickingListCallback() {
@Override
public void onLoadSuccess(final List<OrdineAccettazioneDTO> ordini) {
mHelper.retrievePickingList(barcodes, ordini -> {
progress.dismiss();
AtomicInteger artsCounter = new AtomicInteger();
Stream.of(ordini).forEach(x -> {
artsCounter.addAndGet((int) Stream.of(x.ordini).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count());
artsCounter.addAndGet((int) Stream.of(x.getOrdini()).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count());
});
List<String> ordersKeys = new ArrayList<>();
for(OrdineAccettazioneDTO ordine : ordini){
if(!ordersKeys.contains(ordine.data + " " + ordine.numero + " " + ordine.gestione)){
ordersKeys.add(ordine.data + " " + ordine.numero + " " + ordine.gestione);
if(!ordersKeys.contains(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione())){
ordersKeys.add(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione());
}
}
@ -294,36 +320,32 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
}).show();
}
@Override
public void onLoadFail(Exception ex) {
}, ex -> {
// Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show();
progress.dismiss();
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage();
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
}
});
}
private RunnableArgs<OrdineAccettazioneGroupedInevasoDTO> onGroupSelectionChanged = dto -> {
List<OrdineAccettazioneGroupedInevasoDTO> selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi);
if(selectedOrders != null && selectedOrders.size() > 1){
for (OrdineAccettazioneGroupedInevasoDTO selectedOrder : selectedOrders) {
if(!dto.codAnagForn.equalsIgnoreCase(selectedOrder.codAnagForn)) {
Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
}
}
}
if(selectedOrders.size() > 0) mBinding.accettazioneMainFab.show();
else mBinding.accettazioneMainFab.hide();
};
// private RunnableArgs<OrdineAccettazioneGroupedInevasoDTO> onGroupSelectionChanged = dto -> {
// List<OrdineAccettazioneGroupedInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
//
// if(selectedOrders != null && selectedOrders.size() > 1){
// for (OrdineAccettazioneGroupedInevasoDTO selectedOrder : selectedOrders) {
// if(!dto.codAnagForn.equalsIgnoreCase(selectedOrder.codAnagForn)) {
// Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
// }
// }
// }
//
// if(selectedOrders.size() > 0) mBinding.accettazioneMainFab.show();
// else mBinding.accettazioneMainFab.hide();
// };
@ -345,8 +367,8 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
@Override
public boolean onQueryTextChange(String newText) {
final List<OrdineAccettazioneGroupedInevasoDTO> filtermodelist = helper.getFilteredOrdersByFornitore(groupedOrdiniInevasi, newText);
mAdapter.setFilter(filtermodelist);
final List<OrdineAccettazioneInevasoDTO> filtermodelist = mHelper.getFilteredOrdersByFornitore(mOriginalOrderList, newText);
mAdapter.updateItems(filtermodelist);
return true;
}

View File

@ -4,19 +4,19 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.RESTBuilder;
import it.integry.integrywmsnative.core.REST.model.EsitoType;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService;
import retrofit2.Call;
@ -70,7 +70,7 @@ public class AccettazioneHelper {
});
}
public void retrievePickingList(List<String> barcodeOrdini, final ILoadPickingListCallback callback){
public void retrievePickingList(List<String> barcodeOrdini, RunnableArgs<List<OrdineAccettazioneDTO>> onComplete, RunnableArgs<Exception> onFailed){
String joinedBarcodes = TextUtils.join(",", barcodeOrdini);
@ -86,26 +86,26 @@ public class AccettazioneHelper {
List<OrdineAccettazioneDTO> dto = response.body().getDto();
for (OrdineAccettazioneDTO ordine : dto) {
for(OrdineAccettazioneDTO.Riga riga : ordine.ordini){
riga.numOrd = ordine.numero;
riga.dataOrd = ordine.data;
riga.gestioneOrd = ordine.gestione;
riga.codAlis = ordine.codAlis;
for(OrdineAccettazioneDTO.Riga riga : ordine.getOrdini()){
riga.numOrd = ordine.getNumero();
riga.dataOrd = ordine.getData();
riga.gestioneOrd = ordine.getGestione();
riga.codAlis = ordine.getCodAlis();
}
}
callback.onLoadSuccess(dto);
onComplete.run(dto);
} else {
Log.e("Accettazione", response.body().getErrorMessage());
callback.onLoadFail(new Exception(response.message()));
onFailed.run(new Exception(response.message()));
}
} else {
Log.e("Accettazione", response.message());
callback.onLoadFail(new Exception(response.message()));
onFailed.run(new Exception(response.message()));
}
} else {
Log.e("Accettazione", "Status " + response.code() + ": " + response.message());
callback.onLoadFail(new Exception("Status " + response.code() + ": " + response.message()));
onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
}
}
@ -113,50 +113,32 @@ public class AccettazioneHelper {
public void onFailure(Call<ServiceRESTResponse<List<OrdineAccettazioneDTO>>> call, Throwable t) {
Log.e("Accettazione", t.toString());
UtilityLogger.errorMe(new Exception(t));
callback.onLoadFail(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
public List<OrdineAccettazioneGroupedInevasoDTO> getSelectedOrders(List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdiniInevasi){
List<OrdineAccettazioneGroupedInevasoDTO> selectedOrdini = new ArrayList<>();
for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
List<OrdineAccettazioneGroupedInevasoDTO.Ordine> selectedOrdiniGroup = new ArrayList<>();
for(int j = 0; j < groupedOrdiniInevasi.get(i).ordini.size(); j++){
if(groupedOrdiniInevasi.get(i).ordini.get(j).checkBox) {
selectedOrdiniGroup.add(groupedOrdiniInevasi.get(i).ordini.get(j));
}
public List<OrdineAccettazioneInevasoDTO> getSelectedOrders(List<OrdineAccettazioneInevasoDTO> ordiniList){
return Stream.of(ordiniList)
.filter(OrdineAccettazioneInevasoDTO::isSelected)
.toList();
}
if(selectedOrdiniGroup.size() > 0) {
try {
OrdineAccettazioneGroupedInevasoDTO cloneOrdine = groupedOrdiniInevasi.get(i).clone();
cloneOrdine.ordini = selectedOrdiniGroup;
selectedOrdini.add(cloneOrdine);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
return selectedOrdini;
}
public List<OrdineAccettazioneGroupedInevasoDTO> getFilteredOrdersByFornitore(List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdiniInevasi, String textFilter){
List<OrdineAccettazioneGroupedInevasoDTO> selectedOrdini = new ArrayList<>();
public List<OrdineAccettazioneInevasoDTO> getFilteredOrdersByFornitore(List<OrdineAccettazioneInevasoDTO> groupedOrdiniInevasi, String textFilter){
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
if(groupedOrdiniInevasi.get(i).nomeFornitore.toLowerCase().contains(textFilter.toLowerCase())){
selectedOrdini.add(groupedOrdiniInevasi.get(i));
if(groupedOrdiniInevasi.get(i).getRagSocOrd().toLowerCase().contains(textFilter.toLowerCase())){
filteredOrders.add(groupedOrdiniInevasi.get(i));
}
}
return selectedOrdini;
return filteredOrders;
}

View File

@ -1,213 +0,0 @@
package it.integry.integrywmsnative.gest.accettazione.core;
import android.content.Context;
import androidx.core.util.Pools;
import androidx.recyclerview.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO;
/**
* Created by GiuseppeS on 06/03/2018.
*/
public class MainListAccettazioneAdapter extends RecyclerView.Adapter<MainListAccettazioneAdapter.ViewHolder> {
private Context mContext;
private List<OrdineAccettazioneGroupedInevasoDTO> mDataset;
private RunnableArgs<OrdineAccettazioneGroupedInevasoDTO> mOnGroupSelected;
private Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(2000);
private Pools.SynchronizedPool sPoolClienti = new Pools.SynchronizedPool(3000);
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
private TextView mTextViewGroupHeader;
private LinearLayout mLinearLayoutGroupItemContainer;
private List<View> views = new ArrayList<>();
public ViewHolder(View v) {
super(v);
}
}
// Provide a suitable constructor (depends on the kind of dataset)
public MainListAccettazioneAdapter(Context context, List<OrdineAccettazioneGroupedInevasoDTO> myDataset, RunnableArgs<OrdineAccettazioneGroupedInevasoDTO> onGroupSelected) {
mContext = context;
mDataset = myDataset;
mOnGroupSelected = onGroupSelected;
}
// Create new views (invoked by the layout manager)
@Override
public MainListAccettazioneAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.accettazione_main_list_model, parent, false);
ViewHolder vh = new ViewHolder(v);
TextView groupHeader = v.findViewById(R.id.accettazione_main_list_group_header);
vh.mTextViewGroupHeader = groupHeader;
LinearLayout groupItemContainer = v.findViewById(R.id.accettazione_main_list_group_item_container);
vh.mLinearLayoutGroupItemContainer = groupItemContainer;
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
final List<OrdineAccettazioneGroupedInevasoDTO.Ordine> subGroup = mDataset.get(position).ordini;
final int finalPosition = position;
holder.mTextViewGroupHeader.setText(mDataset.get(position).nomeFornitore);
holder.itemView.setOnClickListener(view -> {
boolean newValue = true;
for(int i = 0; i < subGroup.size(); i++){
if(subGroup.get(i).checkBox) newValue = false;
}
for(int i = 0; i < subGroup.size(); i++){
subGroup.get(i).setCheckbox(newValue);
}
mOnGroupSelected.run(mDataset.get(finalPosition));
});
for (int i = 0; i < subGroup.size(); i++) {
final OrdineAccettazioneGroupedInevasoDTO.Ordine ordine = subGroup.get(i);
ordine.checkBoxCallback = new ArrayList<>();
View groupModelViewPool = (View) sPool.acquire();
if(groupModelViewPool == null){
groupModelViewPool = LayoutInflater.from(mContext)
.inflate(R.layout.accettazione_main_list_group_model, holder.mLinearLayoutGroupItemContainer, false);
}
View groupModelView = groupModelViewPool;
holder.views.add(groupModelView);
groupModelView.setVisibility(View.VISIBLE);
if (i % 2 == 1) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
} else {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.white));
}
final CheckBox checkBox = groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_checkBox);
checkBox.setChecked(ordine.checkBox);
ordine.checkBoxCallback.add(checkBox::setChecked);
groupModelView.setOnClickListener(view -> {
checkBox.toggle();
ordine.checkBox = checkBox.isChecked();
mOnGroupSelected.run(mDataset.get(finalPosition));
// mCheckBoxCallback.onToggle(checkBox.isChecked());
});
TextView testataOrdTextView = groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_testata_ord);
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.numero), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
testataOrdTextView.setText(Html.fromHtml(testataOrdString));
LinearLayout clientLinearLayout = groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_clienti_ord);
List<OrdineAccettazioneGroupedInevasoDTO.Cliente> subGroupClienti = ordine.clienti;
clientLinearLayout.removeAllViews();
for (int k = 0; k < subGroupClienti.size(); k++) {
View groupClienteModelViewPool = (View) sPoolClienti.acquire();
if(groupClienteModelViewPool == null){
groupClienteModelViewPool = LayoutInflater.from(mContext)
.inflate(R.layout.accettazione_main_list_group_clienti, clientLinearLayout, false);
}
View groupClienteModelView = groupClienteModelViewPool;
TextView clienteComm = groupClienteModelView.findViewById(R.id.accettazione_main_list_group_clienti_comm);
String clienteText;
// clienteText = subGroupClienti.get(k).codJcom + " - " + subGroupClienti.get(k).descrCom;
clienteText = subGroupClienti.get(k).rifOrd;
clienteComm.setText(clienteText);
TextView dataCons = groupClienteModelView.findViewById(R.id.accettazione_main_list_group_clienti_datacons);
if (subGroupClienti.get(k).getDataCons() != null) {
dataCons.setText(UtilityDate.formatDate(subGroupClienti.get(k).getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
} else {
dataCons.setText("");
}
clientLinearLayout.addView(groupClienteModelView);
}
holder.mLinearLayoutGroupItemContainer.addView(groupModelView);
}
}
@Override
public void onViewRecycled(ViewHolder holder){
if(holder != null){
for(int i = 0; i < holder.views.size(); i++){
View groupModelView = holder.views.get(i);
LinearLayout clientLinearLayout = groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_clienti_ord);
for(int k = 0; k < clientLinearLayout.getChildCount(); k++){
View cliente = clientLinearLayout.getChildAt(k);
((ViewGroup) cliente.getParent()).removeView(cliente);
sPoolClienti.release(cliente);
}
((ViewGroup) groupModelView.getParent()).removeView(groupModelView);
sPool.release(groupModelView);
}
holder.views.clear();
}
super.onViewRecycled(holder);
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return mDataset.size();
}
public void setFilter(List<OrdineAccettazioneGroupedInevasoDTO> newDataset) {
mDataset = new ArrayList<>();
mDataset.addAll(newDataset);
notifyDataSetChanged();
}
}

View File

@ -0,0 +1,194 @@
package it.integry.integrywmsnative.gest.accettazione.core;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.Observable;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupClientiBinding;
import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupModelBinding;
import it.integry.integrywmsnative.databinding.AccettazioneMainListModelBinding;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.prod_ord_produzione.core.OrdineProduzioneListAdapter;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class MainListAccettazioneAdapterNew extends SectionedRecyclerViewAdapter<MainListAccettazioneAdapterNew.SubheaderHolder, MainListAccettazioneAdapterNew.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineAccettazioneInevasoDTO> mOriginalDataset;
private List<OrdineAccettazioneInevasoDTO> mDataset;
private RunnableArgs<OrdineAccettazioneInevasoDTO> mOnSingleSelectionChanged;
static class SubheaderHolder extends RecyclerView.ViewHolder {
AccettazioneMainListModelBinding binding;
SubheaderHolder(AccettazioneMainListModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
AccettazioneMainListGroupModelBinding binding;
SingleItemViewHolder(AccettazioneMainListGroupModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public MainListAccettazioneAdapterNew(Context context, List<OrdineAccettazioneInevasoDTO> myDataset, RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged) {
mContext = context;
mOriginalDataset = myDataset;
mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
public void updateItems(List<OrdineAccettazioneInevasoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineAccettazioneInevasoDTO> orderItems(List<OrdineAccettazioneInevasoDTO> dataset) {
return Stream.of(dataset)
.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
.sortBy(x -> x.getRagSocOrd() + "" + UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList();
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
AccettazioneMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_model, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.accettazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd());
subheaderHolder.binding.getRoot().setOnClickListener(v -> {
boolean anySelected = Stream.of(mDataset)
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
.anyMatch(OrdineAccettazioneInevasoDTO::isSelected);
Stream.of(mDataset)
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
.forEach(x -> x.setSelected(!anySelected));
});
}
@Override
public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) {
final OrdineAccettazioneInevasoDTO ordine = mDataset.get(itemPosition);
final SingleItemViewHolder holder = h;
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumero());
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
ordine.selected.resetOnPropertyChangedCallback();
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews();
List<OrdineAccettazioneInevasoDTO> clienti = Stream.of(mOriginalDataset)
.filter(x -> x.getBarcode().equals(ordine.getBarcode()))
.toList();
for (OrdineAccettazioneInevasoDTO cliente : clienti) {
AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false);
binding.accettazioneMainListGroupClientiComm.setText(cliente.getRifOrd());
if (!UtilityString.isNullOrEmpty(cliente.getDataConsS())) {
binding.accettazioneMainListGroupClientiDatacons.setText(UtilityDate.formatDate(cliente.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
} else {
binding.accettazioneMainListGroupClientiDatacons.setText("");
}
holder.binding.accettazioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot());
}
holder.binding.setCheckboxValue(ordine.selected);
holder.binding.getRoot().setOnClickListener(v -> {
ordine.setSelected(!ordine.isSelected());
});
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected());
//Bindable to View
ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if(holder.binding.accettazioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumero())) {
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get());
}
}
});
//View to Bindable
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
ordine.setSelected(isChecked);
mOnSingleSelectionChanged.run(ordine);
});
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd());
}
@Override
public int getItemSize() {
return mDataset.size();
}
@Override
public String getSectionTitle(int position) {
return null;
}
}

View File

@ -20,17 +20,17 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
public class OrdineAccettazioneDTO implements Parcelable {
public String ragSoc;
public int numero;
public String data;
public String gestione;
public String codMdep;
public String codAnag;
private String ragSoc;
private int numero;
private String data;
private String gestione;
private String codMdep;
private String codAnag;
private String codVdes;
private String termCons;
public ArrayList<Riga> ordini;
public String codAlis;
public String rifOrd;
private ArrayList<Riga> ordini;
private String codAlis;
private String rifOrd;
public static class Riga implements Parcelable {
@ -242,6 +242,8 @@ public class OrdineAccettazioneDTO implements Parcelable {
return this;
}
public Riga(){}
protected Riga(Parcel in) {
@ -382,5 +384,102 @@ public class OrdineAccettazioneDTO implements Parcelable {
};
public String getRagSoc() {
return ragSoc;
}
public OrdineAccettazioneDTO setRagSoc(String ragSoc) {
this.ragSoc = ragSoc;
return this;
}
public int getNumero() {
return numero;
}
public OrdineAccettazioneDTO setNumero(int numero) {
this.numero = numero;
return this;
}
public String getData() {
return data;
}
public OrdineAccettazioneDTO setData(String data) {
this.data = data;
return this;
}
public String getGestione() {
return gestione;
}
public OrdineAccettazioneDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public String getCodMdep() {
return codMdep;
}
public OrdineAccettazioneDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getCodAnag() {
return codAnag;
}
public OrdineAccettazioneDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodVdes() {
return codVdes;
}
public OrdineAccettazioneDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public String getTermCons() {
return termCons;
}
public OrdineAccettazioneDTO setTermCons(String termCons) {
this.termCons = termCons;
return this;
}
public ArrayList<Riga> getOrdini() {
return ordini;
}
public OrdineAccettazioneDTO setOrdini(ArrayList<Riga> ordini) {
this.ordini = ordini;
return this;
}
public String getCodAlis() {
return codAlis;
}
public OrdineAccettazioneDTO setCodAlis(String codAlis) {
this.codAlis = codAlis;
return this;
}
public String getRifOrd() {
return rifOrd;
}
public OrdineAccettazioneDTO setRifOrd(String rifOrd) {
this.rifOrd = rifOrd;
return this;
}
}

View File

@ -1,233 +0,0 @@
package it.integry.integrywmsnative.gest.accettazione.dto;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.interfaces.ICheckBoxCallback;
import it.integry.integrywmsnative.core.utility.UtilityDate;
/**
* Created by GiuseppeS on 06/03/2018.
*/
public class OrdineAccettazioneGroupedInevasoDTO implements Cloneable, Serializable, Parcelable {
public String codAnagForn;
public String nomeFornitore;
public List<Ordine> ordini;
public OrdineAccettazioneGroupedInevasoDTO clone() throws CloneNotSupportedException {
return (OrdineAccettazioneGroupedInevasoDTO) super.clone();
}
public static class Ordine implements Parcelable{
public String data;
public int numero;
public String codAnagOrd = "";
public String ragSocOrd = "";
public Float pesoTotale;
public String barcode;
public String termCons;
public String dataCons;
public String rifOrd;
public String gestione;
public boolean checkBox;
public List<ICheckBoxCallback> checkBoxCallback = new ArrayList<>();
public void setCheckbox(boolean newValue){
checkBox = newValue;
if(checkBoxCallback != null && checkBoxCallback.size() > 0) {
for(ICheckBoxCallback callback : checkBoxCallback) callback.onToggle(newValue);
}
}
public List<Cliente> clienti;
public Date getData(){
try {
return UtilityDate.recognizeDate(data);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Ordine(){}
protected Ordine(Parcel in) {
data = in.readString();
numero = in.readInt();
codAnagOrd = in.readString();
ragSocOrd = in.readString();
pesoTotale = in.readByte() == 0x00 ? null : in.readFloat();
barcode = in.readString();
termCons = in.readString();
dataCons = in.readString();
rifOrd = in.readString();
if (in.readByte() == 0x01) {
clienti = new ArrayList<Cliente>();
in.readList(clienti, Cliente.class.getClassLoader());
} else {
clienti = null;
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(data);
dest.writeInt(numero);
dest.writeString(codAnagOrd);
dest.writeString(ragSocOrd);
if (pesoTotale == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeFloat(pesoTotale);
}
dest.writeString(barcode);
dest.writeString(termCons);
dest.writeString(dataCons);
dest.writeString(rifOrd);
if (clienti == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeList(clienti);
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<Ordine> CREATOR = new Parcelable.Creator<Ordine>() {
@Override
public Ordine createFromParcel(Parcel in) {
return new Ordine(in);
}
@Override
public Ordine[] newArray(int size) {
return new Ordine[size];
}
};
}
public static class Cliente implements Parcelable{
public String codJcom;
public String ragSocCom;
public int idRiga;
public String dataCons;
public Integer numCnf;
public String descrCom;
public String rifOrd;
public Date getDataCons(){
try {
return UtilityDate.recognizeDate(dataCons);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public Cliente(){}
protected Cliente(Parcel in) {
codJcom = in.readString();
ragSocCom = in.readString();
idRiga = in.readInt();
dataCons = in.readString();
numCnf = in.readByte() == 0x00 ? null : in.readInt();
descrCom = in.readString();
rifOrd = in.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(codJcom);
dest.writeString(ragSocCom);
dest.writeInt(idRiga);
dest.writeString(dataCons);
if (numCnf == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeInt(numCnf);
}
dest.writeString(descrCom);
dest.writeString(rifOrd);
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<Cliente> CREATOR = new Parcelable.Creator<Cliente>() {
@Override
public Cliente createFromParcel(Parcel in) {
return new Cliente(in);
}
@Override
public Cliente[] newArray(int size) {
return new Cliente[size];
}
};
}
public OrdineAccettazioneGroupedInevasoDTO(){}
protected OrdineAccettazioneGroupedInevasoDTO(Parcel in) {
codAnagForn = in.readString();
nomeFornitore = in.readString();
if (in.readByte() == 0x01) {
ordini = new ArrayList<Ordine>();
in.readList(ordini, Ordine.class.getClassLoader());
} else {
ordini = null;
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(codAnagForn);
dest.writeString(nomeFornitore);
if (ordini == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeList(ordini);
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<OrdineAccettazioneGroupedInevasoDTO> CREATOR = new Parcelable.Creator<OrdineAccettazioneGroupedInevasoDTO>() {
@Override
public OrdineAccettazioneGroupedInevasoDTO createFromParcel(Parcel in) {
return new OrdineAccettazioneGroupedInevasoDTO(in);
}
@Override
public OrdineAccettazioneGroupedInevasoDTO[] newArray(int size) {
return new OrdineAccettazioneGroupedInevasoDTO[size];
}
};
}

View File

@ -98,7 +98,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity {
private void setTitle(List<OrdineAccettazioneDTO> ordini){
if(ordini.size() > 0){
if(ordini.size() == 1){
setTitle(ordini.get(0).ragSoc);
setTitle(ordini.get(0).getRagSoc());
} else {
setTitle(R.string.accettazione_ordine_inevaso_title_multiple_order);
}

View File

@ -27,12 +27,12 @@ public class OrdineAccettazioneInevasoRESTConsumerService {
Stream.of(ordiniToShow).forEach(x -> {
try {
Date date = UtilityDate.recognizeDate(x.data);
Date date = UtilityDate.recognizeDate(x.getData());
String dateString = UtilityDate.formatDate(date, "yyyy/MM/dd");
if (!colliWhereCond.contains(x.gestione + " " + dateString + " " + x.numero)) {
String gestione = x.gestione.equalsIgnoreCase("P") ? "L" : x.gestione;
colliWhereCond.add(gestione + " " + dateString + " " + x.numero);
if (!colliWhereCond.contains(x.getGestione() + " " + dateString + " " + x.getNumero())) {
String gestione = x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione();
colliWhereCond.add(gestione + " " + dateString + " " + x.getNumero());
}
} catch (Exception ex){
UtilityLogger.errorMe(ex);

View File

@ -97,7 +97,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
groupedOrdini = new ArrayList<>();
for (OrdineAccettazioneDTO ordine : mOrders){
groupedOrdini.addAll(ordine.ordini);
groupedOrdini.addAll(ordine.getOrdini());
}
helper = new AccettazioneOrdineInevasoHelper(mActivity);
@ -475,7 +475,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
List<String> codAnags =
stream(mOrders)
.select(c -> c.codAnag)
.select(c -> c.getCodAnag())
.distinct()
.toList();
@ -485,7 +485,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
List<String> rifOrds =
stream(mOrders)
.select(c -> c.rifOrd)
.select(c -> c.getRifOrd())
.distinct()
.toList();
@ -495,13 +495,13 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
List<String> numDataOrds =
stream(mOrders)
.select(value -> ("" + value.numero) + value.data)
.select(value -> ("" + value.getNumero()) + value.getData())
.distinct()
.toList();
if(numDataOrds != null && numDataOrds.size() == 1){
mtbColtToAddRefs.setNumOrd(mOrders.get(0).numero);
mtbColtToAddRefs.setDataOrd(mOrders.get(0).data);
mtbColtToAddRefs.setNumOrd(mOrders.get(0).getNumero());
mtbColtToAddRefs.setDataOrd(mOrders.get(0).getData());
try {
mtbColtToAddRefs.generaFiltroOrdine();

View File

@ -162,15 +162,11 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
private RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged = dto -> {
List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
if(!SettingsManager.iDB().isFlagMultiClienteOrdV()){
boolean allMatch = Stream.of(selectedOrders).allMatch(x -> dto.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd()));
if(!allMatch) {
if(dto.isSelected()) {
Stream.of(selectedOrders)
.filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd()))
.filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd()))
.forEach(x -> x.setSelected(false));
}
}
if(selectedOrders != null && selectedOrders.size() > 0) {
mBinding.ordineProduzioneMainFab.show();
@ -200,14 +196,14 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit
AtomicInteger artsCounter = new AtomicInteger();
Stream.of(ordini).forEach(x -> {
artsCounter.addAndGet((int) Stream.of(x.ordini).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count());
artsCounter.addAndGet((int) Stream.of(x.getOrdini()).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count());
});
List<String> ordersKeys = new ArrayList<>();
for(OrdineAccettazioneDTO ordine : ordini){
if(!ordersKeys.contains(ordine.data + " " + ordine.numero + " " + ordine.gestione)){
ordersKeys.add(ordine.data + " " + ordine.numero + " " + ordine.gestione);
if(!ordersKeys.contains(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione())){
ordersKeys.add(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione());
}
}

View File

@ -80,11 +80,11 @@ public class OrdineProduzioneHelper {
List<OrdineAccettazioneDTO> dto = response.body().getDto();
for (OrdineAccettazioneDTO ordine : dto) {
for(OrdineAccettazioneDTO.Riga riga : ordine.ordini){
riga.numOrd = ordine.numero;
riga.dataOrd = ordine.data;
riga.gestioneOrd = ordine.gestione;
riga.codAlis = ordine.codAlis;
for(OrdineAccettazioneDTO.Riga riga : ordine.getOrdini()){
riga.numOrd = ordine.getNumero();
riga.dataOrd = ordine.getData();
riga.gestioneOrd = ordine.getGestione();
riga.codAlis = ordine.getCodAlis();
}
}

View File

@ -16,6 +16,7 @@ import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@ -35,6 +36,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
private Context mContext;
private List<OrdineAccettazioneInevasoDTO> mOriginalDataset;
private List<OrdineAccettazioneInevasoDTO> mDataset;
private RunnableArgs<OrdineAccettazioneInevasoDTO> mOnSingleSelectionChanged;
@ -63,6 +65,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
public OrdineProduzioneListAdapter(Context context, List<OrdineAccettazioneInevasoDTO> myDataset, RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged) {
mContext = context;
mOriginalDataset = myDataset;
mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
@ -78,7 +81,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
private List<OrdineAccettazioneInevasoDTO> orderItems(List<OrdineAccettazioneInevasoDTO> dataset) {
return Stream.of(dataset)
.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
.sortBy(OrdineAccettazioneInevasoDTO::getRagSocOrd)
.sortBy(x -> x.getRagSocOrd() + "" + UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList();
}
@ -86,15 +89,15 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
@Override
public OrdineProduzioneListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
FragmentProdOrdineProduzioneListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_model, parent, false);
return new OrdineProduzioneListAdapter.SubheaderHolder(binding);
return new SubheaderHolder(binding);
}
@Override
public OrdineProduzioneListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
FragmentProdOrdineProduzioneListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_produzione__list_group_model, parent, false);
return new OrdineProduzioneListAdapter.SingleItemViewHolder(binding);
return new SingleItemViewHolder(binding);
}
@ -131,7 +134,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd.removeAllViews();
List<OrdineAccettazioneInevasoDTO> clienti = Stream.of(mDataset)
List<OrdineAccettazioneInevasoDTO> clienti = Stream.of(mOriginalDataset)
.filter(x -> x.getBarcode().equals(ordine.getBarcode()))
.toList();

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -21,3 +22,4 @@
android:layout_weight="1"
android:text="TextView" />
</RelativeLayout>
</layout>

View File

@ -1,4 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<import type="it.integry.integrywmsnative.R" />
<variable
name="checkboxValue"
type="it.integry.integrywmsnative.core.di.BindableBoolean" />
</data>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@ -16,13 +27,13 @@
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/accettazione_main_list_group_item_container_checkBox">
android:layout_toEndOf="@id/accettazione_main_list_group_item_container_checkBox">
<TextView
android:id="@+id/accettazione_main_list_group_item_container_testata_ord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ord. Acq. 39 del 27 ott 2017"
android:text="Ord. Prod. 39 del 27 ott 2017"
android:textColor="#000" />
@ -37,3 +48,6 @@
</RelativeLayout>
</layout>

View File

@ -1,23 +1,25 @@
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp">
<!--<androidx.cardview.widget.CardView-->
<!--xmlns:card_view="http://schemas.android.com/apk/res-auto"-->
<!--android:id="@+id/card_view"-->
<!--android:layout_gravity="center"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--card_view:cardUseCompatPadding="true"-->
<!--card_view:cardCornerRadius="4dp"-->
<!--card_view:cardElevation="4dp">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--<LinearLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:orientation="vertical">-->
<LinearLayout
android:layout_width="match_parent"
@ -43,18 +45,20 @@
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/accettazione_main_list_group_item_container">
<!--<LinearLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:orientation="vertical"-->
<!--android:id="@+id/accettazione_main_list_group_item_container">-->
<!--</LinearLayout>-->
<!--</LinearLayout>-->
<!--</androidx.cardview.widget.CardView>-->
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</layout>