diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java index 67fc5f9a..81dfd7dc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.REST.consumers; 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; public class ColliMagazzinoRESTConsumer { @@ -31,4 +32,30 @@ public class ColliMagazzinoRESTConsumer { } + public static void deleteRiga(MtbColr mtbColrToDelete, Runnable onComplete, RunnableArgs onFailed){ + MtbColr newMtbColr = new MtbColr(); + + newMtbColr.setNumCollo(mtbColrToDelete.getNumCollo()); + newMtbColr.setDataCollo(mtbColrToDelete.getDataCollo()); + newMtbColr.setSerCollo(mtbColrToDelete.getSerCollo()); + newMtbColr.setGestione(mtbColrToDelete.getGestione()); + newMtbColr.setRiga(mtbColrToDelete.getRiga()); + + + newMtbColr.setOperation(CommonModelConsts.OPERATION.DELETE); + + EntityRESTConsumer.processEntity(newMtbColr, new ISimpleOperationCallback() { + @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); + + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java index cbb496df..dc7ba934 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.REST.consumers; import android.util.Log; import com.google.gson.Gson; +import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; @@ -23,18 +24,18 @@ public class EntityRESTConsumer { public static void processEntity(T entityToSave, final ISimpleOperationCallback callback, Class type){ EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); - Call> request = service.processEntity(entityToSave); - request.enqueue(new Callback>() { + Call> request = service.processEntity(entityToSave); + request.enqueue(new Callback>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call> call, Response> response) { if(response.isSuccessful()) { if(response.body() != null) { if(response.body().getEsito() == EsitoType.OK) { Gson gson = new Gson(); - String json = gson.toJson(response.body().getEntity()); + T object = gson.fromJson(response.body().getEntity(), type); - callback.onSuccess(gson.fromJson(json, type)); + callback.onSuccess(object); } else { Log.e("EntityRESTConsumer", response.body().getErrorMessage()); callback.onFailed(new Exception(response.body().getErrorMessage())); @@ -50,7 +51,7 @@ public class EntityRESTConsumer { } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { Log.e("EntityRESTConsumer", t.toString()); callback.onFailed(new Exception(t)); } @@ -64,27 +65,22 @@ public class EntityRESTConsumer { public static void selectEntity(T entityToSave, final ISimpleOperationCallback> callback, Class type){ EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class); - Call> request = service.processEntity(entityToSave); - request.enqueue(new Callback>() { + Call> request = service.processEntity(entityToSave); + request.enqueue(new Callback>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call> call, Response> response) { if(response.isSuccessful()) { if(response.body() != null) { if(response.body().getEsito() == EsitoType.OK) { Gson gson = new Gson(); - String json = gson.toJson(response.body().getEntityList()); + List jsons = response.body().getEntityList(); List newList = new ArrayList(); - Type fooType = new TypeToken>() {}.getType(); - List oldList = gson.fromJson(json, fooType); - - - - if(oldList != null) { - for (int i = 0; i < oldList.size(); i ++){ - String jsonTmp = gson.toJson(oldList.get(i)); + if(jsons != null) { + for (int i = 0; i < jsons.size(); i ++){ + JsonObject jsonTmp = jsons.get(i); newList.add((T) gson.fromJson(jsonTmp, type)); } @@ -107,7 +103,7 @@ public class EntityRESTConsumer { } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { Log.e("EntityRESTConsumer", t.toString()); callback.onFailed(new Exception(t)); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java index d388fb60..d74ed113 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java @@ -1,6 +1,8 @@ package it.integry.integrywmsnative.core.REST.consumers; +import com.google.gson.JsonObject; + import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.model.EntityBase; import retrofit2.Call; @@ -10,6 +12,6 @@ import retrofit2.http.POST; public interface EntityRESTConsumerService { @POST("processEntity") - Call> processEntity(@Body Object entity); + Call> processEntity(@Body Object entity); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java index f46919ec..f7eba3ec 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java @@ -16,6 +16,7 @@ public class MtbColr extends EntityBase implements Parcelable { private String gestione; private String serCollo; private Integer numCollo; + private String dataCollo; private Integer riga; private Integer rigaOrd; private String codMart; @@ -56,6 +57,7 @@ public class MtbColr extends EntityBase implements Parcelable { } else { numCollo = in.readInt(); } + dataCollo = in.readString(); if (in.readByte() == 0) { riga = null; } else { @@ -128,6 +130,7 @@ public class MtbColr extends EntityBase implements Parcelable { dest.writeByte((byte) 1); dest.writeInt(numCollo); } + dest.writeString(dataCollo); if (riga == null) { dest.writeByte((byte) 0); } else { @@ -242,6 +245,16 @@ public class MtbColr extends EntityBase implements Parcelable { return this; } + public String getDataCollo() { + return dataCollo; + } + + public MtbColr setDataCollo(String dataCollo) { + this.dataCollo = dataCollo; + return this; + } + + public Integer getRiga() { return riga; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineInevasoViewModel.java index 7d826281..65ad6d48 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineInevasoViewModel.java @@ -83,9 +83,10 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb this.init(); } - private void init(){ mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); + mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::refreshOrderBy); + mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::refreshOrderBy); groupedOrdini = new ArrayList<>(); for (OrdineAccettazioneDTO ordine : mOrders){ @@ -118,7 +119,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb mActivity.bindings.accettazioneOrdineMainList.setAdapter(mAdapter); } - private void refreshOrderBy(){ + public void refreshOrderBy(){ switch (currentOrderBy){ case COD_ART_FOR: groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini); @@ -385,15 +386,8 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb isFabVisible.set(true); progress.dismiss(); - }, ex -> { - progress.dismiss(); - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - - if(errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(errorMessage), null, null).show(); - - UtilityLogger.errorMe(ex); - }); + }, ex -> UtilityExceptions.defaultException(mActivity, ex, progress) + ); } @@ -495,7 +489,13 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb @Override public void onSuccess(MtbColt value) { - mtbColr.setUntMis(item.getMtbAart().untMis); + mtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(0).getRiga()) + .setUntMis(item.getMtbAart().untMis); mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); refreshOrderBy(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java index f0ebdfe2..d7790f3d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.view.bottomsheet.viewmodel; +import android.app.ProgressDialog; import android.content.Context; import android.databinding.DataBindingUtil; import android.databinding.Observable; @@ -9,10 +10,12 @@ import android.databinding.ViewDataBinding; import android.support.annotation.NonNull; import android.support.design.widget.BottomSheetBehavior; import android.support.v7.app.AppCompatActivity; +import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.Toast; import com.linearlistview.LinearListView; @@ -20,14 +23,17 @@ import java.lang.ref.WeakReference; import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.expansion.RunnableArgs; 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.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; public class ArticoliInColloBottomSheetViewModel { @@ -43,6 +49,9 @@ public class ArticoliInColloBottomSheetViewModel { private BottomSheetBehavior mBottomSheetBehavior; + private Runnable mOnItemDeletedCallback; + private Runnable mOnItemEditedCallback; + public ArticoliInColloBottomSheetViewModel(AppCompatActivity context, final FragmentArticoliInColloBottomSheetBinding bindings){ mContext = context; @@ -54,15 +63,17 @@ public class ArticoliInColloBottomSheetViewModel { mtbColt.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable sender, int propertyId) { - mBindings.linearListview.setAdapter(new ArticoliInColloBottomSheetMtbColrAdapter()); - - mBindings.linearListview.setOnItemClickListener((parent, view, position, id) -> { - mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); - - onItemClicked.run(position); - }); if(mtbColt.get() != null) { + + mBindings.linearListview.setAdapter(new ArticoliInColloBottomSheetMtbColrAdapter()); + + mBindings.linearListview.setOnItemClickListener((parent, view, position, id) -> { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + + onItemClicked.run(position); + }); + mArticoliInColloBottomSheetHelper.updateRigheNumber(mtbColt.get().getMtbColr().size()); mArticoliInColloBottomSheetHelper.initCollo(mtbColt.get()); @@ -76,6 +87,14 @@ public class ArticoliInColloBottomSheetViewModel { initBottomSheetActions(); } + public void setOnItemEditedCallback(Runnable onItemEditedCallback) { + this.mOnItemEditedCallback = onItemEditedCallback; + } + + public void setOnItemDeletedCallback(Runnable onItemDeletedCallback) { + this.mOnItemDeletedCallback = onItemDeletedCallback; + } + private void initBottomSheetActions() { mBindings.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)); @@ -125,11 +144,50 @@ public class ArticoliInColloBottomSheetViewModel { mBindings.bottomSheetActionsTitle.setText(clickedItem.getDescrizione()); mBindings.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart()); + mBindings.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(position)); + + mBindings.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(position)); + mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getUntMis()); }; + private void onItemEdit(int position) { + + MtbColr itemToEdit = mtbColt.get().getMtbColr().get(position); + + + + if(this.mOnItemEditedCallback != null) this.mOnItemEditedCallback.run(); + } + + private void onItemDelete(int position) { + + + String text = mContext.getResources().getString(R.string.alert_delete_mtb_colr); + DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(text), null, () -> { + MtbColr itemToDelete = mtbColt.get().getMtbColr().get(position); + + final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting), + mContext.getText(R.string.loading) + " ...", true); + + progress.show(); + + ColliMagazzinoRESTConsumer.deleteRiga(itemToDelete, () -> { + mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + + progress.dismiss(); + mtbColt.get().getMtbColr().remove(position); + + if(this.mOnItemDeletedCallback != null) this.mOnItemDeletedCallback.run(); + }, ex -> UtilityExceptions.defaultException(mContext, ex, progress)); + }, null).show(); + + + + } + public class ArticoliInColloBottomSheetMtbColrAdapter extends BaseAdapter { @@ -139,6 +197,8 @@ public class ArticoliInColloBottomSheetViewModel { public ArticoliInColloBottomSheetMtbColrAdapter() { super(); this.onListChangedCallback = new WeakReferenceOnListChangedCallback(this); + + mtbColt.get().getMtbColr().addOnListChangedCallback(onListChangedCallback); } @Override @@ -170,7 +230,7 @@ public class ArticoliInColloBottomSheetViewModel { @Override public int getCount() { if(mtbColt.get() != null && mtbColt.get().getMtbColr() != null) { - mtbColt.get().getMtbColr().addOnListChangedCallback(onListChangedCallback); + return mtbColt.get().getMtbColr().size(); } else return 0; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java index 265cc33b..c11f0e68 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java @@ -149,6 +149,17 @@ public class DialogSimpleMessageHelper { } + public static AlertDialog makeWarningDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick){ + return makeBase(TYPE.WARNING, + mContext, + mContext.getText(R.string.warning).toString(), + messageText, + hashmapContent, + onPositiveClick, + () -> { if(onNegativeClick != null) onNegativeClick.run(); }, -1, null); + } + + public static AlertDialog makeWarningDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick){ return makeBase(TYPE.WARNING, mContext, diff --git a/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml index 25b95c63..5e6b84f9 100644 --- a/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml +++ b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml @@ -456,6 +456,7 @@ android:gravity="center"> Check box This is a regular preference + Stai per eliminare una riga. Confermi? + Lista UL Contenuto UL diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eb2f425b..da261b15 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -107,6 +107,7 @@ Check box This is a regular preference + Are you sure to delete? Please confirm Warehouse