[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 com.annimon.stream.Stream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.REST.CommonRESTException; import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding; import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding;
import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper; 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.ILoadOrdiniCallback;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; 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.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
@ -53,10 +48,11 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
private FragmentMainAccettazioneBinding mBinding; private FragmentMainAccettazioneBinding mBinding;
private AccettazioneHelper helper; private AccettazioneHelper mHelper;
private MainListAccettazioneAdapterNew mAdapter;
private List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdiniInevasi; private List<OrdineAccettazioneInevasoDTO> mOriginalOrderList;
private MainListAccettazioneAdapter mAdapter; private List<OrdineAccettazioneInevasoDTO> mRenderedOrderList = new ArrayList<>();
private AppCompatTextView mAppBarTitle; 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); 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 @Override
public void onLoadSuccess(List<OrdineAccettazioneInevasoDTO> ordini) { public void onLoadSuccess(List<OrdineAccettazioneInevasoDTO> ordini) {
if(ordini != null) { if(ordini != null) {
Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); 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); mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
refreshRenderedOrdini(ordini);
initRecyclerView();
progress.dismiss(); progress.dismiss();
} }
@ -154,127 +151,156 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
} }
private void initRecyclerView() {
private void groupOrdiniAndMakeRecycler(List<OrdineAccettazioneInevasoDTO> ordini){ mAdapter = new MainListAccettazioneAdapterNew(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
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);
mBinding.accettazioneMainList.setAdapter(mAdapter); 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() { private void onAccettazioneMainFabClick() {
List<OrdineAccettazioneGroupedInevasoDTO> selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi); List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
List<String> barcodes = new ArrayList<>(); List<String> barcodes = new ArrayList<>();
for(OrdineAccettazioneGroupedInevasoDTO ordine : selectedOrders){ for(OrdineAccettazioneInevasoDTO ordine : selectedOrders){
for(OrdineAccettazioneGroupedInevasoDTO.Ordine righeOrd : ordine.ordini){ if(!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode());
barcodes.add(righeOrd.barcode);
}
} }
final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting),
getText(R.string.loading) + " ...", true); getText(R.string.loading) + " ...", true);
helper.retrievePickingList(barcodes, new ILoadPickingListCallback() { mHelper.retrievePickingList(barcodes, ordini -> {
@Override
public void onLoadSuccess(final List<OrdineAccettazioneDTO> ordini) {
progress.dismiss(); progress.dismiss();
AtomicInteger artsCounter = new AtomicInteger(); AtomicInteger artsCounter = new AtomicInteger();
Stream.of(ordini).forEach(x -> { 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<>(); List<String> ordersKeys = new ArrayList<>();
for(OrdineAccettazioneDTO ordine : ordini){ for(OrdineAccettazioneDTO ordine : ordini){
if(!ordersKeys.contains(ordine.data + " " + ordine.numero + " " + ordine.gestione)){ if(!ordersKeys.contains(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione())){
ordersKeys.add(ordine.data + " " + ordine.numero + " " + ordine.gestione); ordersKeys.add(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione());
} }
} }
@ -294,36 +320,32 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
}).show(); }).show();
} }, ex -> {
@Override
public void onLoadFail(Exception ex) {
// Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); // Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show();
progress.dismiss(); progress.dismiss();
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage();
DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
} });
});
} }
private RunnableArgs<OrdineAccettazioneGroupedInevasoDTO> onGroupSelectionChanged = dto -> { // private RunnableArgs<OrdineAccettazioneGroupedInevasoDTO> onGroupSelectionChanged = dto -> {
List<OrdineAccettazioneGroupedInevasoDTO> selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi); // List<OrdineAccettazioneGroupedInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
//
if(selectedOrders != null && selectedOrders.size() > 1){ // if(selectedOrders != null && selectedOrders.size() > 1){
for (OrdineAccettazioneGroupedInevasoDTO selectedOrder : selectedOrders) { // for (OrdineAccettazioneGroupedInevasoDTO selectedOrder : selectedOrders) {
if(!dto.codAnagForn.equalsIgnoreCase(selectedOrder.codAnagForn)) { // if(!dto.codAnagForn.equalsIgnoreCase(selectedOrder.codAnagForn)) {
Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false)); // Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
} // }
} // }
} // }
//
if(selectedOrders.size() > 0) mBinding.accettazioneMainFab.show(); // if(selectedOrders.size() > 0) mBinding.accettazioneMainFab.show();
else mBinding.accettazioneMainFab.hide(); // else mBinding.accettazioneMainFab.hide();
}; // };
@ -345,8 +367,8 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
@Override @Override
public boolean onQueryTextChange(String newText) { public boolean onQueryTextChange(String newText) {
final List<OrdineAccettazioneGroupedInevasoDTO> filtermodelist = helper.getFilteredOrdersByFornitore(groupedOrdiniInevasi, newText); final List<OrdineAccettazioneInevasoDTO> filtermodelist = mHelper.getFilteredOrdersByFornitore(mOriginalOrderList, newText);
mAdapter.setFilter(filtermodelist); mAdapter.updateItems(filtermodelist);
return true; return true;
} }

View File

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

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 class OrdineAccettazioneDTO implements Parcelable {
public String ragSoc; private String ragSoc;
public int numero; private int numero;
public String data; private String data;
public String gestione; private String gestione;
public String codMdep; private String codMdep;
public String codAnag; private String codAnag;
private String codVdes; private String codVdes;
private String termCons; private String termCons;
public ArrayList<Riga> ordini; private ArrayList<Riga> ordini;
public String codAlis; private String codAlis;
public String rifOrd; private String rifOrd;
public static class Riga implements Parcelable { public static class Riga implements Parcelable {
@ -242,6 +242,8 @@ public class OrdineAccettazioneDTO implements Parcelable {
return this; return this;
} }
public Riga(){} public Riga(){}
protected Riga(Parcel in) { 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){ private void setTitle(List<OrdineAccettazioneDTO> ordini){
if(ordini.size() > 0){ if(ordini.size() > 0){
if(ordini.size() == 1){ if(ordini.size() == 1){
setTitle(ordini.get(0).ragSoc); setTitle(ordini.get(0).getRagSoc());
} else { } else {
setTitle(R.string.accettazione_ordine_inevaso_title_multiple_order); setTitle(R.string.accettazione_ordine_inevaso_title_multiple_order);
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -16,6 +16,7 @@ import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@ -35,6 +36,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
private Context mContext; private Context mContext;
private List<OrdineAccettazioneInevasoDTO> mOriginalDataset;
private List<OrdineAccettazioneInevasoDTO> mDataset; private List<OrdineAccettazioneInevasoDTO> mDataset;
private RunnableArgs<OrdineAccettazioneInevasoDTO> mOnSingleSelectionChanged; private RunnableArgs<OrdineAccettazioneInevasoDTO> mOnSingleSelectionChanged;
@ -63,6 +65,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
public OrdineProduzioneListAdapter(Context context, List<OrdineAccettazioneInevasoDTO> myDataset, RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged) { public OrdineProduzioneListAdapter(Context context, List<OrdineAccettazioneInevasoDTO> myDataset, RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged) {
mContext = context; mContext = context;
mOriginalDataset = myDataset;
mDataset = orderItems(myDataset); mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged; mOnSingleSelectionChanged = onSingleSelectionChanged;
} }
@ -78,7 +81,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
private List<OrdineAccettazioneInevasoDTO> orderItems(List<OrdineAccettazioneInevasoDTO> dataset) { private List<OrdineAccettazioneInevasoDTO> orderItems(List<OrdineAccettazioneInevasoDTO> dataset) {
return Stream.of(dataset) return Stream.of(dataset)
.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
.sortBy(OrdineAccettazioneInevasoDTO::getRagSocOrd) .sortBy(x -> x.getRagSocOrd() + "" + UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList(); .toList();
} }
@ -86,15 +89,15 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter<Or
@Override @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); 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 @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); 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(); holder.binding.ordineProduzioneMainListGroupItemContainerClientiOrd.removeAllViews();
List<OrdineAccettazioneInevasoDTO> clienti = Stream.of(mDataset) List<OrdineAccettazioneInevasoDTO> clienti = Stream.of(mOriginalDataset)
.filter(x -> x.getBarcode().equals(ordine.getBarcode())) .filter(x -> x.getBarcode().equals(ordine.getBarcode()))
.toList(); .toList();

View File

@ -1,23 +1,25 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <layout>
android:layout_width="match_parent" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content">
<TextView
android:id="@+id/accettazione_main_list_group_clienti_comm"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:layout_toLeftOf="@+id/accettazione_main_list_group_clienti_datacons"
android:maxLines="1"
android:ellipsize="end"
android:paddingRight="6dp"
android:text="TextView" />
<TextView <TextView
android:id="@+id/accettazione_main_list_group_clienti_datacons" android:id="@+id/accettazione_main_list_group_clienti_comm"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_toLeftOf="@+id/accettazione_main_list_group_clienti_datacons"
android:layout_weight="1" android:maxLines="1"
android:text="TextView" /> android:ellipsize="end"
</RelativeLayout> android:paddingRight="6dp"
android:text="TextView" />
<TextView
android:id="@+id/accettazione_main_list_group_clienti_datacons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:text="TextView" />
</RelativeLayout>
</layout>

View File

@ -1,39 +1,53 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <layout>
xmlns:tools="http://schemas.android.com/tools" <data>
android:layout_width="match_parent" <import type="it.integry.integrywmsnative.R" />
android:layout_height="wrap_content" <variable
android:padding="8dp"> name="checkboxValue"
type="it.integry.integrywmsnative.core.di.BindableBoolean" />
<CheckBox
android:id="@+id/accettazione_main_list_group_item_container_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="1dp" />
<RelativeLayout </data>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@id/accettazione_main_list_group_item_container_checkBox"> android:padding="8dp">
<TextView
android:id="@+id/accettazione_main_list_group_item_container_testata_ord" <CheckBox
android:id="@+id/accettazione_main_list_group_item_container_checkBox"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Ord. Acq. 39 del 27 ott 2017" tools:layout_editor_absoluteX="0dp"
android:textColor="#000" /> tools:layout_editor_absoluteY="1dp" />
<RelativeLayout
<LinearLayout
android:id="@+id/accettazione_main_list_group_item_container_clienti_ord"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/accettazione_main_list_group_item_container_testata_ord" android:layout_toEndOf="@id/accettazione_main_list_group_item_container_checkBox">
android:orientation="vertical">
</LinearLayout> <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. Prod. 39 del 27 ott 2017"
android:textColor="#000" />
<LinearLayout
android:id="@+id/accettazione_main_list_group_item_container_clienti_ord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/accettazione_main_list_group_item_container_testata_ord"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
</RelativeLayout> </RelativeLayout>
</RelativeLayout> </layout>

View File

@ -1,60 +1,64 @@
<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">
<layout>
<androidx.cardview.widget.CardView <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto" 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_width="match_parent"
android:layout_height="wrap_content" 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 <!--<androidx.cardview.widget.CardView-->
android:layout_width="match_parent" <!--xmlns:card_view="http://schemas.android.com/apk/res-auto"-->
android:layout_height="wrap_content" <!--android:id="@+id/card_view"-->
android:background="@color/mainGreen" <!--android:layout_gravity="center"-->
android:padding="8dp"> <!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--card_view:cardUseCompatPadding="true"-->
<!--card_view:cardCornerRadius="4dp"-->
<!--card_view:cardElevation="4dp">-->
<CheckBox <!--<LinearLayout-->
android:layout_width="wrap_content" <!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:orientation="vertical">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:checked="true" android:background="@color/mainGreen"
android:enabled="false" /> android:padding="8dp">
<TextView <CheckBox
android:id="@+id/accettazione_main_list_group_header" android:layout_width="wrap_content"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:checked="true"
android:textColor="@android:color/white" android:enabled="false" />
android:textStyle="bold"
style="@android:style/TextAppearance.Medium"
android:text="NOME GRUPPO"/>
</LinearLayout> <TextView
android:id="@+id/accettazione_main_list_group_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@android:style/TextAppearance.Medium"
android:text="NOME GRUPPO"/>
</LinearLayout>
<LinearLayout <!--<LinearLayout-->
android:layout_width="match_parent" <!--android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!--android:layout_height="wrap_content"-->
android:orientation="vertical" <!--android:orientation="vertical"-->
android:id="@+id/accettazione_main_list_group_item_container"> <!--android:id="@+id/accettazione_main_list_group_item_container">-->
</LinearLayout> <!--</LinearLayout>-->
</LinearLayout> <!--</LinearLayout>-->
</androidx.cardview.widget.CardView> <!--</androidx.cardview.widget.CardView>-->
</LinearLayout> </LinearLayout>
</layout>