Implementato il recupero delle righe dell'ordine nel momento in cui recupero un collo.

This commit is contained in:
Giuseppe Scorrano 2018-11-20 16:28:05 +01:00
parent 3c638c2640
commit c806ca00be
12 changed files with 367 additions and 137 deletions

View File

@ -58,4 +58,22 @@ public class ColliMagazzinoRESTConsumer {
}
public static void updateRiga(MtbColr mtbColrToUpdate, Runnable onComplete, RunnableArgs<Exception> onFailed){
mtbColrToUpdate.setOperation(CommonModelConsts.OPERATION.UPDATE);
EntityRESTConsumer.processEntity(mtbColrToUpdate, new ISimpleOperationCallback<MtbColr>() {
@Override
public void onSuccess(MtbColr value) {
if(onComplete != null) onComplete.run();
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
}, MtbColr.class);
}
}

View File

@ -13,7 +13,11 @@ public class BindableFloat extends BaseObservable {
}
public Float get(boolean defaultIfNull) {
return value == null && defaultIfNull ? 0 : value;
if(value == null){
if(defaultIfNull) return 0f;
else return null;
} else return value;
}
public void set(Float value) {

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di;
import android.databinding.BindingAdapter;
import android.databinding.BindingConversion;
import android.support.constraint.Guideline;
import android.support.design.widget.TextInputEditText;
import android.support.v4.util.Pair;
import android.support.v7.widget.AppCompatTextView;
@ -138,11 +139,7 @@ public class Converters {
public static void bindRadioGroup(RadioGroup view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
view.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override public void onCheckedChanged(RadioGroup group, int checkedId) {
bindableBoolean.set(checkedId == group.getChildAt(1).getId());
}
});
view.setOnCheckedChangeListener((group, checkedId) -> bindableBoolean.set(checkedId == group.getChildAt(1).getId()));
}
Boolean newValue = bindableBoolean.get();
((RadioButton) view.getChildAt(newValue ? 1 : 0)).setChecked(true);
@ -152,12 +149,7 @@ public class Converters {
public static void bindCheckbox(CheckBox view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
view.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
bindableBoolean.set(b);
}
});
view.setOnCheckedChangeListener((compoundButton, b) -> bindableBoolean.set(b));
}
Boolean newValue = bindableBoolean.get();
view.setChecked(newValue);
@ -165,10 +157,11 @@ public class Converters {
@BindingAdapter({"app:onClick"})
public static void bindOnClick(View view, final Runnable runnable) {
view.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
runnable.run();
}
});
view.setOnClickListener(v -> runnable.run());
}
@BindingAdapter({"app:layout_constraintGuide_percent"})
public static void bindFloatPercetageOnGuideline(View view, final float percentage) {
((Guideline)view).setGuidelinePercent(percentage);
}
}

View File

@ -43,6 +43,8 @@ public class MtbColr extends EntityBase implements Parcelable {
private String descrizione;
private String untMis;
private MtbAart mtbAart;
public MtbColr() {
type = "mtb_colr";
}
@ -118,6 +120,8 @@ public class MtbColr extends EntityBase implements Parcelable {
} else {
numCnf = new BigDecimal(in.readFloat());
}
in.readParcelable(MtbAart.class.getClassLoader());
}
@Override
@ -199,6 +203,8 @@ public class MtbColr extends EntityBase implements Parcelable {
dest.writeByte((byte) 1);
dest.writeFloat(numCnf.floatValue());
}
dest.writeParcelable(mtbAart, flags);
}
@Override
@ -546,4 +552,14 @@ public class MtbColr extends EntityBase implements Parcelable {
this.untMis = untMis;
return this;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public MtbColr setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
}

View File

@ -43,7 +43,7 @@ public class OrdineAccettazioneDTO implements Parcelable {
public String descrizioneCommessa;
public MtbAart mtbAart;
public PickingObjectDTO[] colliAssociati;
public boolean hidden = false;
public Boolean hidden = null;
public String partitaMag;
public String codArtFor;
public String descrizioneEstesa;
@ -96,7 +96,7 @@ public class OrdineAccettazioneDTO implements Parcelable {
return colliAssociati;
}
public boolean isHidden() {
public Boolean isHidden() {
return hidden;
}
@ -237,7 +237,7 @@ public class OrdineAccettazioneDTO implements Parcelable {
ragSocCom = in.readString();
descrizioneCommessa = in.readString();
mtbAart = (MtbAart) in.readValue(MtbAart.class.getClassLoader());
hidden = in.readByte() != 0x00;
hidden = in.readByte() == 0x00 ? null : in.readByte() != 0x00;
partitaMag = in.readString();
codArtFor = in.readString();
descrizioneEstesa = in.readString();
@ -272,7 +272,12 @@ public class OrdineAccettazioneDTO implements Parcelable {
dest.writeString(ragSocCom);
dest.writeString(descrizioneCommessa);
dest.writeValue(mtbAart);
dest.writeByte((byte) (hidden ? 0x01 : 0x00));
if (hidden == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeByte((byte) (hidden ? 0x01 : 0x00));
}
dest.writeString(partitaMag);
dest.writeString(codArtFor);
dest.writeString(descrizioneEstesa);

View File

@ -61,7 +61,7 @@ public class AccettazioneOrdineInevasoHelper {
}
public List<List<OrdineAccettazioneDTO.Riga>> getOrdiniRaggruppatiPerCodArtForn(List<OrdineAccettazioneDTO.Riga> mDataset){
public List<List<OrdineAccettazioneDTO.Riga>> getOrdiniRaggruppatiPerCodArtForn(List<OrdineAccettazioneDTO.Riga> mDataset, boolean forceHiddenCheck){
List<String> codArtForns = new ArrayList<>();
for(int i = 0; i < mDataset.size(); i++){
@ -86,9 +86,12 @@ public class AccettazioneOrdineInevasoHelper {
List<OrdineAccettazioneDTO.Riga> tmpList = Stream.of(mDataset).filter(x -> x.getCodArtFor() != null && x.getCodArtFor().equalsIgnoreCase(codArtForn)).toList();
for(int i = 0; i < tmpList.size(); i++){
if(tmpList.get(i).getQtaDaEvadere().floatValue() <= 0){
tmpList.remove(i);
i--;
if(tmpList.get(i).isHidden() == null || forceHiddenCheck) {
if (tmpList.get(i).getQtaDaEvadere().floatValue() <= 0) {
tmpList.get(i).setHidden(true);
//tmpList.remove(i);
//i--;
} else tmpList.get(i).setHidden(false);
}
}
@ -101,7 +104,7 @@ public class AccettazioneOrdineInevasoHelper {
}
public List<List<OrdineAccettazioneDTO.Riga>> getOrdiniRaggruppatiPerDescrArt(List<OrdineAccettazioneDTO.Riga> mDataset){
public List<List<OrdineAccettazioneDTO.Riga>> getOrdiniRaggruppatiPerDescrArt(List<OrdineAccettazioneDTO.Riga> mDataset, boolean forceHiddenCheck){
List<String> descrArtForns = new ArrayList<>();
for(int i = 0; i < mDataset.size(); i++){
@ -120,9 +123,12 @@ public class AccettazioneOrdineInevasoHelper {
List<OrdineAccettazioneDTO.Riga> tmpList = Stream.of(mDataset).filter(x -> x.getDescrizioneEstesa() != null && x.getDescrizioneEstesa().equalsIgnoreCase(descrArtForn)).toList();
for(int i = 0; i < tmpList.size(); i++){
if(tmpList.get(i).getQtaDaEvadere().floatValue() <= 0){
tmpList.remove(i);
i--;
if(tmpList.get(i).isHidden() == null || forceHiddenCheck) {
if (tmpList.get(i).getQtaDaEvadere().floatValue() <= 0) {
tmpList.get(i).setHidden(true);
//tmpList.remove(i);
//i--;
} else tmpList.get(i).setHidden(false);
}
}
@ -140,7 +146,7 @@ public class AccettazioneOrdineInevasoHelper {
public String ragSocCom = "";
}
public List<List<OrdineAccettazioneDTO.Riga>> getOrdiniRaggruppatiPerRagSocCommessa(List<OrdineAccettazioneDTO.Riga> mDataset) {
public List<List<OrdineAccettazioneDTO.Riga>> getOrdiniRaggruppatiPerRagSocCommessa(List<OrdineAccettazioneDTO.Riga> mDataset, boolean forceHiddenCheck) {
List<RaggruppaPerCommessaUtilDTO> commessaList = new ArrayList<>();
commessaList.add(new RaggruppaPerCommessaUtilDTO());
@ -180,9 +186,12 @@ public class AccettazioneOrdineInevasoHelper {
List<OrdineAccettazioneDTO.Riga> tmpList = Stream.of(mDataset).filter(x -> x.getCodJcom().equalsIgnoreCase(dto.codJcom)).toList();
for(int i = 0; i < tmpList.size(); i++){
if(tmpList.get(i).getQtaDaEvadere().floatValue() <= 0){
tmpList.remove(i);
i--;
if(tmpList.get(i).isHidden() == null || forceHiddenCheck) {
if (tmpList.get(i).getQtaDaEvadere().floatValue() <= 0) {
tmpList.get(i).setHidden(true);
//tmpList.remove(i);
//i--;
} else tmpList.get(i).setHidden(false);
}
}

View File

@ -12,6 +12,8 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
@ -28,7 +30,8 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.Accettaz
public class MainListOrdineAccettazioneAdapter extends RecyclerView.Adapter<MainListOrdineAccettazioneAdapter.ViewHolder> {
protected Context mContext;
protected ObservableArrayList<AccettazioneOrdineInevasoListViewModel> mDataset;
protected List<AccettazioneOrdineInevasoListViewModel> mDataset;
protected ObservableArrayList<AccettazioneOrdineInevasoListViewModel> mObservableDataset;
protected IOnOrdineRowDispatchCallback mOrdineRowDispatch;
private static final Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(200);
@ -48,9 +51,11 @@ public class MainListOrdineAccettazioneAdapter extends RecyclerView.Adapter<Main
public MainListOrdineAccettazioneAdapter(Context context, ObservableArrayList<AccettazioneOrdineInevasoListViewModel> myDataset) {
mContext = context;
mDataset = myDataset;
mObservableDataset = myDataset;
myDataset.addOnListChangedCallback(onListChangedCallback);
mDataset = Stream.of(mObservableDataset).filter(x -> !x.isHidden()).toList();
mObservableDataset.addOnListChangedCallback(onListChangedCallback);
}
public void setOnOrdineRowDispatchCallback(IOnOrdineRowDispatchCallback ordineRowDispatch) {
@ -60,28 +65,37 @@ public class MainListOrdineAccettazioneAdapter extends RecyclerView.Adapter<Main
private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<AccettazioneOrdineInevasoListViewModel>>() {
@Override
public void onChanged(ObservableList<AccettazioneOrdineInevasoListViewModel> sender) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeChanged(ObservableList<AccettazioneOrdineInevasoListViewModel> sender, int positionStart, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeInserted(ObservableList<AccettazioneOrdineInevasoListViewModel> sender, int positionStart, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeMoved(ObservableList<AccettazioneOrdineInevasoListViewModel> sender, int fromPosition, int toPosition, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeRemoved(ObservableList<AccettazioneOrdineInevasoListViewModel> sender, int positionStart, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
private void refreshNotHiddenElements() {
mDataset = Stream.of(mObservableDataset).filter(x -> !x.isHidden()).toList();
}
};
@ -115,69 +129,73 @@ public class MainListOrdineAccettazioneAdapter extends RecyclerView.Adapter<Main
List<AccettazioneOrdineInevasoListViewModel.SubItem> subset = mDataset.get(position).rows;
int visibleElementsCounter = 0;
for(int i = 0; i < subset.size(); i++) {
final AccettazioneOrdineInevasoListViewModel.SubItem rowItem = subset.get(i);
if(!rowItem.getOriginalModel().isHidden()) {
visibleElementsCounter++;
View groupModelViewPool = (View) sPool.acquire();
if(groupModelViewPool == null){
groupModelViewPool = LayoutInflater.from(mContext)
.inflate(R.layout.accettazione_ordine_inevaso_main_list___cod_art_for_group_model, holder.mLinearLayoutGroupItemContainer, false);
}
View groupModelView = groupModelViewPool;
holder.pool.add(groupModelView);
if(rowItem.getQtaRiservata().equals(rowItem.getQtaOrdinata())) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
} else if(rowItem.getQtaRiservata().floatValue() > 0) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
} else if(i % 2 == 1) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
} else {
groupModelView.setBackgroundColor(Color.WHITE);
}
final TextView badge1 = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_badge1);
badge1.setText(rowItem.getBadge1());
final TextView badge2 = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_badge2);
badge2.setText(rowItem.getBadge2());
final TextView descrizione = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_descrizione);
String descrizioneString = rowItem.getDescrizione();
int descrizioneColor = Color.BLACK;
if(UtilityString.isNullOrEmpty(descrizioneString)) {
descrizioneString = mContext.getString(R.string.no_description);
descrizioneColor = Color.GRAY;
} else if(descrizioneString.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){
descrizioneString = mContext.getString(R.string.stock);
}
descrizione.setText(descrizioneString);
descrizione.setTextColor(descrizioneColor);
final TextView qtaEvasa = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_qta_evasa);
qtaEvasa.setText(UtilityNumber.decimalToString(rowItem.getQtaRiservata()));
final TextView qtaTot = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_qta_tot);
qtaTot.setText(UtilityNumber.decimalToString(rowItem.getQtaOrdinata()));
groupModelView.setOnClickListener(view -> {
if(mOrdineRowDispatch != null){
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel());
View groupModelViewPool = (View) sPool.acquire();
if (groupModelViewPool == null) {
groupModelViewPool = LayoutInflater.from(mContext)
.inflate(R.layout.accettazione_ordine_inevaso_main_list___cod_art_for_group_model, holder.mLinearLayoutGroupItemContainer, false);
}
});
holder.mLinearLayoutGroupItemContainer.addView(groupModelView);
View groupModelView = groupModelViewPool;
holder.pool.add(groupModelView);
if (rowItem.getQtaRiservata().subtract(rowItem.getQtaOrdinata()).floatValue() >= 0 ) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
} else if (rowItem.getQtaRiservata().floatValue() > 0) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
} else if (visibleElementsCounter % 2 == 1) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
} else {
groupModelView.setBackgroundColor(Color.WHITE);
}
final TextView badge1 = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_badge1);
badge1.setText(rowItem.getBadge1());
final TextView badge2 = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_badge2);
badge2.setText(rowItem.getBadge2());
final TextView descrizione = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_descrizione);
String descrizioneString = rowItem.getDescrizione();
int descrizioneColor = Color.BLACK;
if (UtilityString.isNullOrEmpty(descrizioneString)) {
descrizioneString = mContext.getString(R.string.no_description);
descrizioneColor = Color.GRAY;
} else if (descrizioneString.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)) {
descrizioneString = mContext.getString(R.string.stock);
}
descrizione.setText(descrizioneString);
descrizione.setTextColor(descrizioneColor);
final TextView qtaEvasa = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_qta_evasa);
qtaEvasa.setText(UtilityNumber.decimalToString(rowItem.getQtaRiservata()));
final TextView qtaTot = groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_qta_tot);
qtaTot.setText(UtilityNumber.decimalToString(rowItem.getQtaOrdinata()));
groupModelView.setOnClickListener(view -> {
if (mOrdineRowDispatch != null) {
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel());
}
});
holder.mLinearLayoutGroupItemContainer.addView(groupModelView);
}
}
}

View File

@ -1,5 +1,7 @@
package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.List;
@ -14,6 +16,11 @@ public class AccettazioneOrdineInevasoListViewModel {
public String descrizioneGroup;
public List<SubItem> rows;
public boolean isHidden(){
if(rows == null || rows.size() == 0) return true;
return Stream.of(rows).filter(x -> x.originalModel.isHidden() != null && !x.originalModel.isHidden()).count() == 0;
}
public static class SubItem {
private String badge1;

View File

@ -1,14 +1,11 @@
package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.viewmodel;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableField;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.text.SpannableString;
import android.widget.Toast;
import com.annimon.stream.Stream;
@ -17,16 +14,12 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import br.com.zbra.androidlinq.delegate.Selector;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.coollection.Coollection;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
@ -34,7 +27,6 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity;
@ -44,8 +36,6 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core.MainLis
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoOrderBy;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.rest.OrdineAccettazioneInevasoRESTConsumerService;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.views.NoteAggiuntiveNuovaULDialog;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.ui.StatusBarAlert;
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
@ -85,8 +75,8 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
private void init(){
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::refreshOrderBy);
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::refreshOrderBy);
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(() -> this.refreshOrderBy(false));
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(() -> this.refreshOrderBy(false));
groupedOrdini = new ArrayList<>();
for (OrdineAccettazioneDTO ordine : mOrders){
@ -95,7 +85,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
helper = new AccettazioneOrdineInevasoHelper(mActivity);
groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini);
groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini, true);
initRecyclerView(groupedRighe);
}
@ -119,17 +109,17 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
mActivity.bindings.accettazioneOrdineMainList.setAdapter(mAdapter);
}
public void refreshOrderBy(){
public void refreshOrderBy(boolean forceHiddenCheck){
switch (currentOrderBy){
case COD_ART_FOR:
groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini);
groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini, forceHiddenCheck);
break;
case DESCR_ART:
groupedRighe = helper.getOrdiniRaggruppatiPerDescrArt(groupedOrdini);
groupedRighe = helper.getOrdiniRaggruppatiPerDescrArt(groupedOrdini, forceHiddenCheck);
break;
case RAG_SOC_COM:
groupedRighe = helper.getOrdiniRaggruppatiPerRagSocCommessa(groupedOrdini);
groupedRighe = helper.getOrdiniRaggruppatiPerRagSocCommessa(groupedOrdini, forceHiddenCheck);
break;
default:
@ -146,7 +136,28 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
}
public void recoverUL(MtbColt recoveredMtbColt){
for(int i = 0; i < recoveredMtbColt.getMtbColr().size(); i++){
MtbColr currentMtbColr = recoveredMtbColt.getMtbColr().get(i);
List<OrdineAccettazioneDTO.Riga> foundRows = Stream.of(groupedOrdini)
.filter(x -> x.getNumOrd() == currentMtbColr.getNumOrd() &&
x.getRigaOrd() == currentMtbColr.getRigaOrd()&&
x.getDataOrd().equals(currentMtbColr.getDataOrdD()))
.toList();
if(foundRows != null && foundRows.size() > 0){
OrdineAccettazioneDTO.Riga currentRow = foundRows.get(0);
currentRow.setHidden(false);
currentRow.setQtaRiservate(currentRow.getQtaRiservate().subtract(currentMtbColr.getQtaCol()));
}
}
setULToCurrentContext(recoveredMtbColt);
refreshOrderBy(false);
}
@ -155,7 +166,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
AlertDialog dialog = new AlertDialog.Builder(mActivity)
.setTitle(mActivity.getText(R.string.action_orderBy))
.setSingleChoiceItems(AccettazioneOrdineInevasoOrderBy.descriptions, currentOrderBy.getVal(), (dialog12, which) -> currentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.fromInt(which))
.setPositiveButton("Ok", (dialog1, which) -> refreshOrderBy())
.setPositiveButton("Ok", (dialog1, which) -> refreshOrderBy(true))
.create();
dialog.show();
}
@ -434,7 +445,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
}
}
refreshOrderBy();
refreshOrderBy(true);
}
@ -457,7 +468,18 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
float qtaEvasa = item.qtaRiservate + qtaEvasaInMtbColr;
DialogInputQuantity.makeBase(mActivity, item, qtaEvasa, true, value -> onOrdineRowDispatched(item, value)).show();
BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(new BigDecimal(qtaEvasa)).subtract(item.getQtaEvasa());
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
.setBatchLot(item.getPartitaMag())
.setCodArtFor(item.getCodArtFor())
.setMtbAart(item.getMtbAart())
.setQtaOrd(item.getQtaOrd())
.setQtaDaEvadere(qtaDaEvadere)
.setQtaEvasa(new BigDecimal(qtaEvasa))
.setCanPartitaMagBeChanged(true);
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value)).show();
}
}
@ -495,10 +517,13 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(item.getMtbAart().untMis);
.setUntMis(item.getMtbAart().untMis)
.setMtbAart(item.getMtbAart());
//item.setQtaRiservate(item.getQtaRiservate().add(mtbColr.getQtaCol()));
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr);
refreshOrderBy();
refreshOrderBy(false);
new StatusBarAlert.Builder(mActivity)
.autoHide(true)

View File

@ -4,6 +4,7 @@ import android.app.ProgressDialog;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.databinding.Observable;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableField;
import android.databinding.ObservableList;
import android.databinding.ViewDataBinding;
@ -15,25 +16,26 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Toast;
import com.linearlistview.LinearListView;
import java.lang.ref.WeakReference;
import java.math.BigDecimal;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
import it.integry.integrywmsnative.ui.StatusBarAlert;
import it.integry.integrywmsnative.view.bottomsheet.ArticoliInColloBottomSheetHelper;
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnSimpleListChangedCallback;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
public class ArticoliInColloBottomSheetViewModel {
@ -157,9 +159,35 @@ public class ArticoliInColloBottomSheetViewModel {
MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position);
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
.setBatchLot(itemToEdit.getPartitaMag())
.setQtaDaEvadere(null)
.setQtaOrd(null)
.setMtbAart(itemToEdit.getMtbAart())
.setCanPartitaMagBeChanged(false)
.setQtaTot(itemToEdit.getQtaCol())
.setMaxQta(itemToEdit.getQtaCol());
if(this.mOnItemEditedCallback != null) this.mOnItemEditedCallback.run();
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting),
mContext.getText(R.string.loading) + " ...", true);
itemToEdit.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()));
ColliMagazzinoRESTConsumer.updateRiga(itemToEdit, () ->{
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
progress.dismiss();
mtbColt.get().getMtbColr().set(position, itemToEdit);
if(mOnItemEditedCallback != null) mOnItemEditedCallback.run();
},
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
}).show();
}
private void onItemDelete(int position) {

View File

@ -19,6 +19,7 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.GregorianCalendar;
@ -26,19 +27,112 @@ import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
public class DialogInputQuantity {
public static class DTO {
public MtbAart mtbAart;
public String batchLot;
public BigDecimal qtaDaEvadere;
public BigDecimal qtaOrd;
public BigDecimal qtaTot;
public BigDecimal qtaEvasa;
public BigDecimal maxQta;
public String codArtFor;
public boolean canPartitaMagBeChanged;
public MtbAart getMtbAart() {
return mtbAart;
}
public DTO setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public String getBatchLot() {
return batchLot;
}
public DTO setBatchLot(String batchLot) {
this.batchLot = batchLot;
return this;
}
public BigDecimal getQtaDaEvadere() {
return qtaDaEvadere;
}
public DTO setQtaDaEvadere(BigDecimal qtaDaEvadere) {
this.qtaDaEvadere = qtaDaEvadere;
return this;
}
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public DTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public BigDecimal getQtaTot() {
return qtaTot;
}
public DTO setQtaTot(BigDecimal qtaTot) {
this.qtaTot = qtaTot;
return this;
}
public BigDecimal getQtaEvasa() {
return qtaEvasa;
}
public DTO setQtaEvasa(BigDecimal qtaEvasa) {
this.qtaEvasa = qtaEvasa;
return this;
}
public BigDecimal getMaxQta() {
return maxQta;
}
public DTO setMaxQta(BigDecimal maxQta) {
this.maxQta = maxQta;
return this;
}
public String getCodArtFor() {
return codArtFor;
}
public DTO setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
public boolean getCanPartitaMagBeChanged() {
return canPartitaMagBeChanged;
}
public DTO setCanPartitaMagBeChanged(boolean canPartitaMagBeChanged) {
this.canPartitaMagBeChanged = canPartitaMagBeChanged;
return this;
}
}
private static ColorStateList originalColorStateList = null;
private static String scadenzaString = "Scadenza";
private static AlertDialog currentAlert;
public static AlertDialog makeBase(final Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
@ -60,11 +154,11 @@ public class DialogInputQuantity {
final QuantityDTO quantityDTO = new QuantityDTO();
quantityDTO.canOverflowQuantity = canOverflowQuantity;
setupQuantities(articoloItem, quantityDTO, qtaEvasa);
setupQuantities(dto, quantityDTO);
setupQuantityListener(quantityDTO, txlInputNumDiCnf, txlInputQtaPerCnf, txlInputQtaTot);
contentView.setVariable(BR.viewmodel, articoloItem);
contentView.setVariable(BR.viewmodel, dto);
contentView.setVariable(BR.quantityViewModel, quantityDTO);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
@ -105,23 +199,34 @@ public class DialogInputQuantity {
}
private static void setupQuantities(OrdineAccettazioneDTO.Riga articoloItem, QuantityDTO quantityDTO, float qtaEvasa){
float qtaDaEvadere = articoloItem.getQtaDaEvadere().floatValue();
private static void setupQuantities(DTO dto, QuantityDTO quantityDTO){
if(dto.getQtaTot() != null) quantityDTO.qtaTot.set(dto.getQtaTot().floatValue());
if(dto.getMaxQta() != null) quantityDTO.maxQta = dto.getMaxQta().floatValue();
float qtaDaEvadere = dto.qtaDaEvadere != null ? dto.qtaDaEvadere.floatValue() : 0f;
if (qtaDaEvadere < 0) qtaDaEvadere = 0;
quantityDTO.qtaEvasa.set(qtaEvasa);
quantityDTO.qtaDaEvadere.set(qtaDaEvadere);
quantityDTO.qtaEvasa.set(dto.qtaEvasa != null ? dto.qtaEvasa.floatValue() : null);
if(qtaDaEvadere > 0) quantityDTO.qtaDaEvadere.set(qtaDaEvadere);
quantityDTO.batchLot.set(articoloItem.partitaMag);
quantityDTO.qtaCnf.set(articoloItem.mtbAart.qtaCnf.floatValue());
quantityDTO.qtaTot.set(qtaDaEvadere);
quantityDTO.numCnf.set(qtaDaEvadere / quantityDTO.qtaCnf.get());
quantityDTO.batchLot.set(dto.batchLot);
if(quantityDTO.qtaCnf.get(false) == null) {
quantityDTO.qtaCnf.set(dto.mtbAart.qtaCnf.floatValue());
}
if(quantityDTO.qtaTot.get(false) == null) {
quantityDTO.qtaTot.set(qtaDaEvadere);
}
if(quantityDTO.numCnf.get(false) == null) {
quantityDTO.numCnf.set(quantityDTO.qtaTot.get() / quantityDTO.qtaCnf.get());
}
quantityDTO.shouldAskDataScad.set(articoloItem.mtbAart.isFlagTracciabilita() && articoloItem.mtbAart.getGgScadPartita() != null && articoloItem.mtbAart.getGgScadPartita() > 0);
quantityDTO.canPartitaMagBeChanged.set(dto.getCanPartitaMagBeChanged());
if(quantityDTO.expireDate == null && articoloItem.mtbAart.getGgScadPartita() != null && articoloItem.mtbAart.getGgScadPartita() > 0) {
quantityDTO.shouldAskDataScad.set(dto.mtbAart.isFlagTracciabilita() && dto.mtbAart.getGgScadPartita() != null && dto.mtbAart.getGgScadPartita() > 0);
if(quantityDTO.expireDate == null && dto.mtbAart.getGgScadPartita() != null && dto.mtbAart.getGgScadPartita() > 0) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, articoloItem.mtbAart.getGgScadPartita()); // number of days to add
c.add(Calendar.DATE, dto.mtbAart.getGgScadPartita()); // number of days to add
quantityDTO.expireDate = c.getTime();
}

View File

@ -7,7 +7,7 @@
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO.Riga"/>
type="it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity.DTO"/>
<variable
name="quantityViewModel"
type="it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO"/>
@ -43,7 +43,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:text='@{(viewmodel.codArtFor != null ? viewmodel.codArtFor : viewmodel.mtbAart.codMart) + (viewmodel.partitaMag != null ? " (" + viewmodel.partitaMag + ")" : "") }'
android:text='@{(viewmodel.codArtFor != null ? viewmodel.codArtFor : viewmodel.mtbAart.codMart) + (viewmodel.batchLot != null ? " (" + viewmodel.batchLot + ")" : "") }'
android:textColor="#000"
android:textSize="18sp"
android:textStyle="bold"
@ -99,6 +99,7 @@
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{viewmodel.qtaOrd == null ? View.GONE : View.VISIBLE}"
android:text="@string/ordered"
android:textSize="16sp"
tools:text="Ordinati" />
@ -106,6 +107,7 @@
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{viewmodel.qtaOrd == null ? View.GONE : View.VISIBLE}"
android:text='@{String.format("%.2f", viewmodel.qtaOrd)}'
android:textSize="16sp"
android:textStyle="bold"
@ -165,7 +167,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.50"/>
app:layout_constraintGuide_percent='@{quantityViewModel.shouldAskDataScad.get() == false ? 1.0f : 0.5f}'/>
<android.support.design.widget.TextInputLayout
android:id="@+id/input_partita_mag"
@ -194,7 +196,7 @@
android:layout_height="wrap_content"
tools:text="11 nov 2018"
android:textSize="16sp"
android:enabled="@{quantityViewModel.shouldAskDataScad.get()}"
android:visibility="@{quantityViewModel.shouldAskDataScad.get() == false ? View.GONE : View.VISIBLE}"
app:binding="@{quantityViewModel.expireDateString}"
app:layout_constraintStart_toEndOf="@id/guideline_partita_data"
app:layout_constraintEnd_toEndOf="parent"