From 787d12ff9b3e6d0aab01548ee906dd897208078b Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 11 Jun 2019 17:35:11 +0200 Subject: [PATCH 1/3] Sistemata logica di articolo non disponibili al picking di Spedizione --- .../REST/consumers/GestSetupRESTConsumer.java | 4 +-- .../core/VenditaOrdineInevasoHelper.java | 31 +++++++++++++------ ...vendita_ordine_inevaso_main_list_model.xml | 3 +- app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java index bdd51609..e7f137fa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java @@ -23,8 +23,8 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer { @Override public void onFailure(Call> call, Throwable t) { - Log.e("PrintCollo", t.toString()); - UtilityLogger.errorMe(new Exception(t)); + Log.e("GestSetup", t.toString()); + // UtilityLogger.errorMe(new Exception(t)); if(onFailed != null) onFailed.run(new Exception(t)); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java index ac90af2c..a5f6560e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java @@ -43,8 +43,14 @@ public class VenditaOrdineInevasoHelper { public List> getPickingListRaggruppataPerPosizione(List mPickingList, boolean forceHiddenCheck){ + for(int i = 0; i < mPickingList.size(); i++) { + mPickingList.get(i).setDeactivated(mPickingList.get(i).getQtaCollo().floatValue() == 0); + mPickingList.get(i).setHidden(false); + mPickingList.get(i).setTempHidden(false); + } List listOfKnownPositions = Stream.of(mPickingList) + .filter(x -> !x.isDeactivated()) .map(PickingObjectDTO::getPosizione) .distinctBy(x -> x) .withoutNulls() @@ -54,18 +60,12 @@ public class VenditaOrdineInevasoHelper { listOfKnownPositions.add(null); - String posizione = "Non disponibili al PICKING"; - for(int i = 0; i < mPickingList.size(); i++) { - mPickingList.get(i).setDeactivated(mPickingList.get(i).getQtaCollo().floatValue() == 0); - if(mPickingList.get(i).isDeactivated()) mPickingList.get(i).setPosizione(posizione); - } - listOfKnownPositions.add(posizione); List> groupedRighe = new ArrayList<>(); for (String position : listOfKnownPositions) { List tmpList = Stream.of(mPickingList) - .filter(x -> (x.getPosizione() == null && position == null) || + .filter(x -> !x.isDeactivated() && (x.getPosizione() == null && position == null) || (x.getPosizione() != null && x.getPosizione().equalsIgnoreCase(position))).toList(); for(int i = 0; i < tmpList.size(); i++){ @@ -83,6 +83,12 @@ public class VenditaOrdineInevasoHelper { } + List deactivatedItems = Stream.of(mPickingList) + .filter(PickingObjectDTO::isDeactivated) + .toList(); + + groupedRighe.add(deactivatedItems); + return groupedRighe; } @@ -99,8 +105,15 @@ public class VenditaOrdineInevasoHelper { VenditaOrdineInevasoListViewModel itemModel = new VenditaOrdineInevasoListViewModel(); - String posizione = UtilityString.isNullOrEmpty(currentGroup.get(0).getPosizione()) ? "N.A." : currentGroup.get(0).getPosizione(); - itemModel.descrizioneGroup = mContext.getResources().getText(R.string.position_text) + ": " + posizione; + String posizioneString = ""; + if(currentGroup.get(0).isDeactivated()) { + posizioneString = mContext.getResources().getText(R.string.picking_not_available).toString(); + } else { + posizioneString = mContext.getResources().getText(R.string.position_text) + ": " + (UtilityString.isNullOrEmpty(currentGroup.get(0).getPosizione()) ? "N.A." : currentGroup.get(0).getPosizione()); + } + + + itemModel.descrizioneGroup = posizioneString; itemModel.rows = new ArrayList<>(); for(int k = 0; k < currentGroup.size(); k++) { diff --git a/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml b/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml index 802283f2..574fd228 100644 --- a/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml +++ b/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml @@ -27,6 +27,7 @@ android:layout_height="wrap_content" android:background="@android:color/white" android:orientation="vertical" - android:id="@+id/vendita_ordine_inevaso_main_list__group_item_container"> + android:id="@+id/vendita_ordine_inevaso_main_list__group_item_container"> + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 47beecda..c9cfd541 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -28,6 +28,7 @@ Evasi Questi permessi sono necessari al funzionamento dell\'app + Picking non disponibile Impostazioni diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ae3af675..120cf76f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -83,6 +83,7 @@ Date Position Prepared by + Picking not available between 3 and 30 alphanumeric characters From b4b8fac7251b6af30cb2df03bfc396317434a976 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 13 Jun 2019 12:21:33 +0200 Subject: [PATCH 2/3] Implementata creazione del doppio collo A / L in Accettazione. Iniziata implementazione del tasto "Aggiungi merce extra" in Spedizione. --- .../consumers/ColliMagazzinoRESTConsumer.java | 4 + .../integrywmsnative/core/di/Converters.java | 18 +- .../integrywmsnative/core/model/MtbColt.java | 3 + .../core/settings/DBSettingsModel.java | 11 + .../core/settings/SettingsManager.java | 9 +- ...oneOrdineAccettazioneInevasoViewModel.java | 297 +++++++++++++++--- .../viewmodel/PickingLiberoViewModel.java | 3 +- .../dialogs/DialogVenditaFiltroAvanzato.java | 32 +- .../VenditaOrdineInevasoActivity.java | 12 +- .../MainListOrdineVenditaInevasoAdapter.java | 2 +- .../core/VenditaOrdineInevasoHelper.java | 2 +- .../VenditaOrdineInevasoViewModel.java | 54 +++- .../ArticoliInColloBottomSheetHelper.java | 2 +- .../view/dialogs/scan_art/DialogScanArt.java | 181 +++++++++++ .../activity_vendita_ordine_inevaso.xml | 15 + app/src/main/res/layout/app_bar_main.xml | 4 +- app/src/main/res/layout/dialog_base.xml | 2 + app/src/main/res/layout/dialog_scan_art.xml | 82 +++++ .../layout/dialog_vendita_filtro_avanzato.xml | 30 +- app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 21 files changed, 674 insertions(+), 93 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java create mode 100644 app/src/main/res/layout/dialog_scan_art.xml 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 4f023a8b..e317ef75 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 @@ -94,6 +94,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ .setSegno(segno) .setGestione(GestioneEnum.LAVORAZIONE); + mtbColtToCreate.initDefaultFields(); + mtbColtToCreate .setOperation(CommonModelConsts.OPERATION.INSERT); @@ -166,6 +168,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ MtbColt mtbColtToCreate = new MtbColt() .setGestione(gestione); + mtbColtToCreate.initDefaultFields(); + Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode); String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java index 2f9d866e..79bc45ae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java @@ -248,7 +248,23 @@ public class Converters { view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); } }); - + + view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); + } + + + @BindingAdapter("app:visibility") + public static void bindView(View view, final BindableBoolean bindableBoolean) { + if (view.getTag(R.id.bound_observable) != bindableBoolean) { + view.setTag(R.id.bound_observable, bindableBoolean); + } + bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); + } + }); + view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index c859440e..3bb5d970 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -99,6 +99,9 @@ public class MtbColt extends EntityBase { type = "mtb_colt"; setDataCollo(new Date()); setSerCollo("/"); + } + + public void initDefaultFields() { setCodMdep(SettingsManager.i().userSession.depo.getCodMdep()); setPreparatoDa(SettingsManager.i().user.fullname); setOraInizPrep(new Date()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index a8167f64..ab303fdb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -23,6 +23,8 @@ public class DBSettingsModel { private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione; private boolean flagAskClienteInPickingLibero; + private boolean flagCanAddExtraItemSpedizione; + public List getAvailableProfiles() { return availableProfiles; } @@ -109,4 +111,13 @@ public class DBSettingsModel { this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero; return this; } + + public boolean isFlagCanAddExtraItemSpedizione() { + return flagCanAddExtraItemSpedizione; + } + + public DBSettingsModel setFlagCanAddExtraItemSpedizione(boolean flagCanAddExtraItemSpedizione) { + this.flagCanAddExtraItemSpedizione = flagCanAddExtraItemSpedizione; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index fb0b331b..4c6f8037 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -192,7 +192,14 @@ public class SettingsManager { GestSetupRESTConsumer.getBooleanValue("PICKING", "PICKING_LIBERO", "FLAG_ASK_CLIENTE", valueAskClientePickingLibero -> { dbSettingsModelIstance.setFlagAskClienteInPickingLibero(valueAskClientePickingLibero); - if(onComplete != null) onComplete.run(); + GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", valueCanAddExtraItemSpedizione -> { + dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(valueCanAddExtraItemSpedizione); + + if(onComplete != null) onComplete.run(); + + }, ex -> { + if(onFailed != null) onFailed.run(ex); + }); }, ex -> { if(onFailed != null) onFailed.run(ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java index 3165866e..b31034ba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java @@ -76,6 +76,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC private GestioneEnum defaultGestioneOfUL = null; + private MtbColt mtbColtOfAccettazione = null; + public AccettazioneOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List orders) { this.mActivity = activity; this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; @@ -90,8 +92,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC private void init(){ mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); - mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback((deletedItem) -> this.refreshOrderBy(false)); - mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback((originalItem, editedItem) -> this.refreshOrderBy(false)); + mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onRowDeleted); + mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onRowEdited); groupedOrdini = new ArrayList<>(); for (OrdineAccettazioneDTO ordine : mOrders){ @@ -167,7 +169,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC } try { - List mtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get() != null ? mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() : null; + List mtbColrs = getColloRef() != null ? getColloRef().getMtbColr() : null; helper.updateListModel(currentOrderBy, groupedRighe, mtbColrs); } catch (Exception e) { @@ -421,22 +423,43 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC String defaultPosAccettazione = ""; if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value; - MtbColt mtbColt = new MtbColt(); - mtbColt - .setGestione(defaultGestioneOfUL) - .setPreparatoDa(SettingsManager.i().user.fullname) + + MtbColt mtbColtOfBarode = new MtbColt(); + mtbColtOfBarode.initDefaultFields(); + mtbColtOfBarode + .setGestione(GestioneEnum.LAVORAZIONE) .setAnnotazioni(noteString) .setPosizione(defaultPosAccettazione) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + if(customNumCollo != null) { - mtbColt.setNumCollo(customNumCollo); + mtbColtOfBarode.setNumCollo(customNumCollo); } if(!UtilityString.isNullOrEmpty(customSerCollo)) { - mtbColt.setSerCollo(customSerCollo); + mtbColtOfBarode.setSerCollo(customSerCollo); } + + + + MtbColt mtbColtAccettazione = null; + + if(defaultGestioneOfUL == GestioneEnum.ACQUISTO){ + mtbColtAccettazione = (MtbColt) mtbColtOfBarode.clone(); + mtbColtAccettazione.setGestione(GestioneEnum.ACQUISTO); + + mtbColtAccettazione + .setNumCollo(null) + .setSerCollo(null); + } + + + MtbColt mtbColtToAddRefs = mtbColtAccettazione != null ? mtbColtAccettazione : mtbColtOfBarode; + + List codAnags = stream(mOrders) .select(c -> c.codAnag) @@ -444,7 +467,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC .toList(); if(codAnags != null && codAnags.size() == 1){ - mtbColt.setCodAnag(codAnags.get(0)); + mtbColtToAddRefs.setCodAnag(codAnags.get(0)); } List rifOrds = @@ -454,7 +477,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC .toList(); if(rifOrds != null && rifOrds.size() == 1){ - mtbColt.setRifOrd(rifOrds.get(0)); + mtbColtToAddRefs.setRifOrd(rifOrds.get(0)); } List numDataOrds = @@ -464,11 +487,11 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC .toList(); if(numDataOrds != null && numDataOrds.size() == 1){ - mtbColt.setNumOrd(mOrders.get(0).numero); - mtbColt.setDataOrd(mOrders.get(0).data); + mtbColtToAddRefs.setNumOrd(mOrders.get(0).numero); + mtbColtToAddRefs.setDataOrd(mOrders.get(0).data); try { - mtbColt.generaFiltroOrdine(); + mtbColtToAddRefs.generaFiltroOrdine(); } catch (Exception ex) { DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(ex.getMessage()), null, null).show(); return; @@ -476,7 +499,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC } - ColliMagazzinoRESTConsumer.saveCollo(mtbColt, new ISimpleOperationCallback() { + + Runnable saveColloOfBarcode = () -> ColliMagazzinoRESTConsumer.saveCollo(mtbColtOfBarode, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { @@ -510,6 +534,37 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC UtilityExceptions.defaultException(mActivity, ex, finalProgress); } }); + + + if(mtbColtAccettazione != null) { + ColliMagazzinoRESTConsumer.saveCollo(mtbColtAccettazione, new ISimpleOperationCallback() { + @Override + public void onSuccess(MtbColt value) { + + value + .setDisablePrint(disablePrint) + .setMtbColr(new ObservableArrayList<>()); + + value.setMtbCols(null); + + mtbColtOfAccettazione = value; + + saveColloOfBarcode.run(); + + } + + @Override + public void onFailed(Exception ex) { + UtilityExceptions.defaultException(mActivity, ex, finalProgress); + } + }); + } else { + saveColloOfBarcode.run(); + } + + + + }, ex -> UtilityExceptions.defaultException(mActivity, ex, finalProgress)); @@ -575,8 +630,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC private void updateDataFine(ProgressDialog progress, Runnable onComplete) { - MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); - cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + MtbColt cloneMtbColt = (MtbColt) getColloRef().clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOraFinePrep(new Date()); @@ -640,8 +695,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC UtilityExceptions.defaultException(mActivity, ex, progress); } } else { - - mArticoliInColloBottomSheetViewModel.mtbColt.set(null); + resetUL(); isFabVisible.set(true); progress.dismiss(); @@ -660,33 +714,44 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC private void deleteCollo(ProgressDialog progress, Runnable onComplete) { - ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> { - mArticoliInColloBottomSheetViewModel.mtbColt.set(null); + + Runnable deleteCollo = () -> ColliMagazzinoRESTConsumer.deleteCollo(mtbColtOfAccettazione, () -> { + resetUL(); isFabVisible.set(true); progress.dismiss(); if(onComplete != null) onComplete.run(); }, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)); + + + if(mtbColtOfAccettazione != null) { + ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> { + deleteCollo.run(); + }, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)); + } else { + deleteCollo.run(); + } } public boolean thereIsAnOpenedUL() { - return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null; + return getColloRef() != null; } public boolean thereIsAnyRowInUL() { - return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null && - mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() != null && - mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().size() > 0; + return getColloRef() != null && + getColloRef().getMtbColr() != null && + getColloRef().getMtbColr().size() > 0; } private void postCloseOperations(Runnable onComplete) { - MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); + MtbColt mtbColt = (MtbColt) mtbColtOfAccettazione.clone(); + + resetUL(); - mArticoliInColloBottomSheetViewModel.mtbColt.set(null); isFabVisible.set(true); if(mtbColt != null && mtbColt.getMtbColr() != null) { @@ -721,9 +786,9 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC @Override public void onOrdineRowDispatch(final OrdineAccettazioneDTO.Riga item, Ean128Model ean128Model) { - if(mArticoliInColloBottomSheetViewModel.mtbColt.get() != null){ + if(getColloRef() != null){ - List currentMtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr(); + List currentMtbColrs = getColloRef().getMtbColr(); List filteredMtbColrs = Stream.of(currentMtbColrs).filter( x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.getCodMart()) && @@ -831,34 +896,162 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.getMtbColr().add(mtbColr); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback() { - @Override - public void onSuccess(MtbColt value) { + Runnable saveRiga = () -> { + if(mtbColtOfAccettazione != null) { mtbColr - .setDataCollo(value.getDataColloS()) - .setNumCollo(value.getNumCollo()) - .setGestione(value.getGestione()) - .setSerCollo(value.getSerCollo()) - .setRiga(value.getMtbColr().get(0).getRiga()) - .setUntMis(item.getMtbAart().getUntMis()) - .setMtbAart(item.getMtbAart()); + .setNumColloRif(mtbColtOfAccettazione.getNumCollo()) + .setDataColloRif(mtbColtOfAccettazione.getDataColloD()) + .setGestioneRif(mtbColtOfAccettazione.getGestione()) + .setSerColloRif(mtbColtOfAccettazione.getSerCollo()) - //item.setQtaRiservate(item.getQtaRiservate().add(mtbColr.getQtaCol())); + .setNumOrd(null) + .setRigaOrd(null) + .setDataOrd((String) null) - mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); - refreshOrderBy(false); - - FBToast.successToast(mActivity,mActivity.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT); - progress.dismiss(); - - if(closeLU) onColloClosed(null); + .setRiga(null); } - @Override - public void onFailed(Exception ex) { - UtilityExceptions.defaultException(mActivity, ex, progress); - } - }); + ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback() { + @Override + public void onSuccess(MtbColt value) { + + mtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(0).getRiga()) + .setUntMis(item.getMtbAart().getUntMis()) + .setMtbAart(item.getMtbAart()); + + //item.setQtaRiservate(item.getQtaRiservate().add(mtbColr.getQtaCol())); + + mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); + refreshOrderBy(false); + + FBToast.successToast(mActivity,mActivity.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT); + progress.dismiss(); + + if(closeLU) onColloClosed(null); + } + + @Override + public void onFailed(Exception ex) { + UtilityExceptions.defaultException(mActivity, ex, progress); + } + }); + }; + + + if(mtbColtOfAccettazione != null) { + MtbColr cloneMtbColr = (MtbColr) mtbColr.clone(); + + MtbColt cloneMtbColtOfAccettazione = (MtbColt) mtbColtOfAccettazione.clone(); + cloneMtbColtOfAccettazione.setOperation(CommonModelConsts.OPERATION.NO_OP); + + cloneMtbColtOfAccettazione.setMtbColr(new ObservableArrayList()); + cloneMtbColtOfAccettazione.getMtbColr().add(cloneMtbColr); + + ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColtOfAccettazione, new ISimpleOperationCallback() { + @Override + public void onSuccess(MtbColt value) { + cloneMtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(0).getRiga()) + .setUntMis(item.getMtbAart().getUntMis()) + .setMtbAart(item.getMtbAart()); + + mtbColtOfAccettazione.getMtbColr().add(cloneMtbColr); + + saveRiga.run(); + } + + @Override + public void onFailed(Exception ex) { + UtilityExceptions.defaultException(mActivity, ex, progress); + } + }); + } else { + saveRiga.run(); + } + } + + + + private MtbColt getColloRef() { + return mtbColtOfAccettazione != null ? mtbColtOfAccettazione : mArticoliInColloBottomSheetViewModel.mtbColt.get(); + } + + private void resetUL() { + mArticoliInColloBottomSheetViewModel.mtbColt.set(null); + mtbColtOfAccettazione = null; + } + + private void onRowEdited(MtbColr oldValue, MtbColr newValue) { + + if(mtbColtOfAccettazione != null) { + + ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mActivity); + + MtbColr mtbColrToEditOfAccettazione = Stream.of(mtbColtOfAccettazione.getMtbColr()) + .filter(x -> x.getQtaCol().compareTo(oldValue.getQtaCol()) == 0 && + x.getCodMart().equalsIgnoreCase(oldValue.getCodMart()) && + x.getPartitaMag().equalsIgnoreCase(oldValue.getPartitaMag()) && + x.getCodJcom().equalsIgnoreCase(oldValue.getCodJcom())) + .findFirst() + .get(); + + mtbColrToEditOfAccettazione + .setQtaCol(newValue.getQtaCol()); + + ColliMagazzinoRESTConsumer.updateRiga(mtbColrToEditOfAccettazione, () -> { + progress.dismiss(); + this.refreshOrderBy(false); + }, ex -> { + UtilityExceptions.defaultException(mActivity, ex, progress); + this.refreshOrderBy(false); + }); + + } else { + + this.refreshOrderBy(false); + } + + } + + private void onRowDeleted(MtbColr deletedValue) { + + if(mtbColtOfAccettazione != null) { + + ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mActivity); + + MtbColr mtbColrToDeleteOfAccettazione = Stream.of(mtbColtOfAccettazione.getMtbColr()) + .filter(x -> x.getQtaCol().compareTo(deletedValue.getQtaCol()) == 0 && + x.getCodMart().equalsIgnoreCase(deletedValue.getCodMart()) && + x.getPartitaMag().equalsIgnoreCase(deletedValue.getPartitaMag()) && + x.getCodJcom().equalsIgnoreCase(deletedValue.getCodJcom())) + .findFirst() + .get(); + + ColliMagazzinoRESTConsumer.deleteRiga(mtbColrToDeleteOfAccettazione, () -> { + mtbColtOfAccettazione.getMtbColr().remove(mtbColrToDeleteOfAccettazione); + + progress.dismiss(); + this.refreshOrderBy(false); + }, ex -> { + UtilityExceptions.defaultException(mActivity, ex, progress); + this.refreshOrderBy(false); + }); + + } else { + + this.refreshOrderBy(false); + } + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java index 06ebee8d..ea936fcc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java @@ -607,6 +607,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog; MtbColt mtbColt = new MtbColt(); + mtbColt.initDefaultFields(); mtbColt .setGestione(GestioneEnum.VENDITA) .setSegno(-1) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); @@ -667,7 +668,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { private void updateDataFine(ProgressDialog progress, Runnable onComplete) { MtbColt cloneMtbColt = (MtbColt) this.mtbColt.get().clone(); - cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOraFinePrep(new Date()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java index 71a07e74..22a88b51 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java @@ -125,7 +125,7 @@ public class DialogVenditaFiltroAvanzato { private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) { IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getIstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA); - bindings.inputDataCons.setOnClickListener(view -> { + bindings.filledExposedDropdownDataCons.setOnClickListener(view -> { Calendar c = Calendar.getInstance(); if(viewModel.dataConsegnaDate != null) { @@ -180,6 +180,7 @@ public class DialogVenditaFiltroAvanzato { viewModel.terminiConsegna.refresh(); viewModel.vettore.refresh(); viewModel.automezzo.refresh(); + viewModel.dataConsegna.refresh(); } @@ -314,6 +315,27 @@ public class DialogVenditaFiltroAvanzato { arrayAdapterVettore.addAll(getAvailableVettori(true)); }); + BindableString.resetListeners(viewModel.dataConsegna); + BindableString.registerListener(viewModel.dataConsegna, value -> { + if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null; + else { + currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate); + } + + refreshList(); + + arrayAdapterCodMdep.clear(); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); + arrayAdapterNumOrds.clear(); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); + arrayAdapterCliente.clear(); + arrayAdapterCliente.addAll(getAvailableCliente(true)); + arrayAdapterTermCons.clear(); + arrayAdapterTermCons.addAll(getAvailableTermCons(true)); + arrayAdapterVettore.clear(); + arrayAdapterVettore.addAll(getAvailableVettori(true)); + }); + } @@ -334,13 +356,13 @@ public class DialogVenditaFiltroAvanzato { currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); -// bindings.inputNumOrds.setErrorEnabled(false); -// bindings.inputNumOrds.setError(""); +// mBindings.inputNumOrds.setErrorEnabled(false); +// mBindings.inputNumOrds.setError(""); } catch (NumberFormatException ex) { currentNumOrdsPredicate = null; -// bindings.inputNumOrds.setErrorEnabled(true); -// bindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error)); +// mBindings.inputNumOrds.setErrorEnabled(true); +// mBindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error)); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java index a6eee76c..a796f617 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java @@ -8,7 +8,6 @@ import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; -import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; @@ -28,7 +27,7 @@ import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBot public class VenditaOrdineInevasoActivity extends AppCompatActivity { - public ActivityVenditaOrdineInevasoBinding bindings; + private ActivityVenditaOrdineInevasoBinding mBindings; private VenditaOrdineInevasoViewModel mVenditaOrdineInevasoViewModel; private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; @@ -41,17 +40,17 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - bindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso); - FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude; + mBindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso); + FragmentArticoliInColloBottomSheetBinding bindings = this.mBindings.bottomSheetInclude; mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings); ArrayList pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); ArrayList testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); ArrayList colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel( - this, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati); + this, mBindings, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati); - setSupportActionBar(this.bindings.toolbar); + setSupportActionBar(this.mBindings.toolbar); setTitle(R.string.activity_vendita_inevaso_title); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -108,6 +107,7 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); // Check which request we're responding to if (requestCode == PICK_UL_REQUEST) { // Make sure the request was successful diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java index 252b0009..3d15303c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java @@ -212,7 +212,7 @@ public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter { - if (mOrdineRowDispatch != null && !rowItem.getOriginalModel().isDeactivated()) { + if (mOrdineRowDispatch != null) { // rowItem.getOriginalModel().setTempEan128Model(null); mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java index a5f6560e..31ea985a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java @@ -87,7 +87,7 @@ public class VenditaOrdineInevasoHelper { .filter(PickingObjectDTO::isDeactivated) .toList(); - groupedRighe.add(deactivatedItems); + if(deactivatedItems.size() > 0) groupedRighe.add(deactivatedItems); return groupedRighe; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 3bf4db4c..55e18996 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -5,6 +5,7 @@ import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableField; import androidx.recyclerview.widget.LinearLayoutManager; import android.text.SpannableString; +import android.view.View; import com.annimon.stream.Stream; import com.tfb.fbtoast.FBToast; @@ -31,6 +32,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; +import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.CommonModelConsts; @@ -47,6 +49,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; @@ -61,13 +64,16 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; +import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched { public ObservableField isFabVisible = new ObservableField<>(); + public BindableBoolean shouldShowAddExtraItems = new BindableBoolean(); private VenditaOrdineInevasoActivity mActivity; + private final ActivityVenditaOrdineInevasoBinding mBindings; private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; private final List mPickingList; @@ -86,10 +92,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO private Integer defaultNumOrdOfUL = null; private Date defaultDataOrdOfUL = null; + private Integer mtbColtSessionID = null; - public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List pickingList, List orders, List colliRegistrati) { + public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ActivityVenditaOrdineInevasoBinding bindings, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List pickingList, List orders, List colliRegistrati) { this.mActivity = activity; + this.mBindings = bindings; this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; this.mPickingList = pickingList; this.mTestateOrdini = orders; @@ -97,7 +105,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO this.isFabVisible.set(true); - this.mActivity.bindings.setViewmodel(this); + this.mBindings.setViewmodel(this); this.init(); this.initDatiPicking(); @@ -116,6 +124,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO this.refreshOrderBy(false); }); + mBindings.addExtraItemsToolbar.setOnClickListener((v -> { + DialogScanArt.make(mActivity, (status, mtbAart) -> { + + }).show(); + })); + mHelper = new VenditaOrdineInevasoHelper(mActivity); initRecyclerView(); @@ -123,11 +137,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO private void initRecyclerView(){ //RecyclerView setup - mActivity.bindings.venditaOrdineMainList.setHasFixedSize(true); + this.mBindings.venditaOrdineMainList.setHasFixedSize(true); - mActivity.bindings.venditaOrdineMainList.setLayoutManager(new LinearLayoutManager(mActivity)); + this.mBindings.venditaOrdineMainList.setLayoutManager(new LinearLayoutManager(mActivity)); - mAdapter = mHelper.getRightListAdapter(mActivity.bindings.venditaOrdineInevasoEmptyView); + mAdapter = mHelper.getRightListAdapter(this.mBindings.venditaOrdineInevasoEmptyView); try { this.mGroupedPickingList = mHelper.getPickingListRaggruppataPerPosizione(mPickingList, true); @@ -137,7 +151,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } mAdapter.setOnOrdineRowDispatchCallback(this); - mActivity.bindings.venditaOrdineMainList.setAdapter(mAdapter); + this.mBindings.venditaOrdineMainList.setAdapter(mAdapter); } private void initDatiPicking() { @@ -289,9 +303,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO public void applyFilter(String descriptionText) { - mActivity.bindings.filteredArtsInListExpandableLayout.expand(true); + this.mBindings.filteredArtsInListExpandableLayout.expand(true); - mActivity.bindings.descriptionFilterText.setText(descriptionText); + this.mBindings.descriptionFilterText.setText(descriptionText); } public void removeListFilter() { @@ -301,7 +315,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } refreshOrderBy(false); - mActivity.bindings.filteredArtsInListExpandableLayout.collapse(true); + this.mBindings.filteredArtsInListExpandableLayout.collapse(true); } public void recoverUL(MtbColt recoveredMtbColt){ @@ -730,10 +744,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } } - if(matchedRows.size() == 1) { + if(matchedRows.size() == 1 ) { if (matchedRows.get(0).getTempPickData() != null && - matchedRows.get(0).getTempPickData().getSourceMtbColt() != null) { + matchedRows.get(0).getTempPickData().getSourceMtbColt() != null ) { MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt(); @@ -750,6 +764,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO refreshOrderBy(false); } + } else if(matchedRows.get(0).isDeactivated()) { + applyFilter(""); + refreshOrderBy(false); } else { onOrdineRowDispatch(matchedRows.get(0)); } @@ -767,7 +784,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } public void createNewUL(Integer customNumCollo, String customSerCollo, ProgressDialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) { - mActivity.bindings.venditaOrdineInevasoFab.close(true); + this.mBindings.venditaOrdineInevasoFab.close(true); if (progress == null){ progress = UtilityProgress.createDefaultProgressDialog(mActivity); @@ -775,6 +792,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO progress.show(); MtbColt mtbColt = new MtbColt(); + mtbColt.initDefaultFields(); mtbColt .setGestione(defaultGestioneOfUL) .setSegno(-1) .setRifOrd(defaultRifOrdOfUL) @@ -837,12 +855,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO private void setULToCurrentContext(MtbColt mtbColt){ isFabVisible.set(false); + shouldShowAddExtraItems.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione()); mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt); } public void showCreatedUL() { - mActivity.bindings.venditaOrdineInevasoFab.close(false); + this.mBindings.venditaOrdineInevasoFab.close(false); mActivity.startListaBancaliRegistratiActivity((ArrayList) mColliRegistrati); } @@ -863,12 +882,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } else { if(onComplete != null) onComplete.run(); } + } private void updateDataFine(ProgressDialog progress, Runnable onComplete) { MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); - cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOraFinePrep(new Date()); @@ -985,6 +1005,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO mArticoliInColloBottomSheetViewModel.mtbColt.set(null); isFabVisible.set(true); + shouldShowAddExtraItems.set(false); progress.dismiss(); @@ -1013,6 +1034,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO mArticoliInColloBottomSheetViewModel.mtbColt.set(null); isFabVisible.set(true); + shouldShowAddExtraItems.set(false); for(int i = 0; i < this.mPickingList.size(); i++) { @@ -1085,7 +1107,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO qtaTest.addAndGet(x.getQtaCol()); }); - BigDecimal qtaDisponibile = item.getQtaCollo().subtract(qtaTest.get()); + BigDecimal qtaDisponibile = (item.isDeactivated() ? item.getQtaOrd() : item.getQtaCollo()).subtract(qtaTest.get()); if(qtaDisponibile.floatValue() < 0) qtaDisponibile = BigDecimal.ZERO; DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() @@ -1097,7 +1119,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO .setQtaDisponibile(qtaDisponibile) .setQtaTot(qtaDisponibile) .setQtaEvasa(new BigDecimal(qtaEvasaTotale)) - .setCanPartitaMagBeChanged(false) + .setCanPartitaMagBeChanged(item.isDeactivated()) .setMaxQta(qtaDisponibile); if(item.getTempPickData() != null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/ArticoliInColloBottomSheetHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/ArticoliInColloBottomSheetHelper.java index 07197496..532ba742 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/ArticoliInColloBottomSheetHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/ArticoliInColloBottomSheetHelper.java @@ -75,7 +75,7 @@ public class ArticoliInColloBottomSheetHelper extends BottomSheetBehavior.Bottom mBinding.articoliInColloDetailsPosizione.setText(mtbColt.getPosizione() != null ? mtbColt.getPosizione() : "N/A"); -// bindings.articoliInColloDetailsPreparatoDa.setText(mtbColt.getPreparatoDa() != null ? mtbColt.getPreparatoDa() : "N/A"); +// mBindings.articoliInColloDetailsPreparatoDa.setText(mtbColt.getPreparatoDa() != null ? mtbColt.getPreparatoDa() : "N/A"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java new file mode 100644 index 00000000..ccdf1606 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java @@ -0,0 +1,181 @@ +package it.integry.integrywmsnative.view.dialogs.scan_art; + +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.text.SpannableString; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.REST.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.REST.model.Ean128Model; +import it.integry.integrywmsnative.core.REST.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogScanArtBinding; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; + +public class DialogScanArt { + + private Context mContext; + private Dialog mDialog; + + private RunnableArgss mOnItemChoosed; + + public static Dialog make(final Context context, RunnableArgss onItemChoosed) { + return new DialogScanArt(context, onItemChoosed).mDialog; + } + + + private DialogScanArt(Context context, RunnableArgss onItemChoosed) { + mContext = context; + mOnItemChoosed = onItemChoosed; + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + DialogScanArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, null, false); + + mDialog = new Dialog(context); + + mDialog.setContentView(bindings.getRoot()); + + mDialog.setCanceledOnTouchOutside(false); + mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + + bindings.buttonNo.setOnClickListener(v -> { + mOnItemChoosed.run(DialogConsts.Results.ABORT, null); + mDialog.dismiss(); + }); + + + initBarcode(context); + } + + + + private void initBarcode(Context context) { + + int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessfull) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false))); + + mDialog.setOnDismissListener(dialog -> { + BarcodeManager.removeCallback(barcodeIstanceID); + BarcodeManager.enable(); + }); + + } + + + private RunnableArgs onScanSuccessfull = data -> { + + ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); + + BarcodeManager.disable(); + + if(UtilityBarcode.isEtichetta128(data)) { + this.executeEtichettaEan128(data, progressDialog); + } else if(UtilityBarcode.isEanPeso(data)){ + this.executeEtichettaEanPeso(data, progressDialog); + } else { + this.loadArticolo(data.getStringValue(), null, progressDialog); + } + + }; + + + + + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) { + BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + + String barcodeProd = null; + + if(ean128Model.Sscc != null) barcodeProd = ean128Model.Sscc; + if(ean128Model.Gtin != null) barcodeProd = ean128Model.Gtin; + if(ean128Model.Content != null) barcodeProd = ean128Model.Content; + + + if(!UtilityString.isNullOrEmpty(barcodeProd)) { + if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) { + barcodeProd = barcodeProd.substring(1, barcodeProd.length()); + } + this.loadArticolo(barcodeProd, ean128Model, progressDialog); + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + progressDialog.dismiss(); + BarcodeManager.enable(); + } + }, ex-> { + UtilityExceptions.defaultException(mContext, ex, progressDialog); + BarcodeManager.enable(); + }); + } + + private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) { + + try { + Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); + + this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128(), progressDialog); + } catch (Exception ex) { + UtilityExceptions.defaultException(mContext, ex, progressDialog); + BarcodeManager.enable(); + } + } + + + + private void loadArticolo(String barcodeProd, Ean128Model ean128Model, ProgressDialog progressDialog) { + if(barcodeProd.length() == 14) { +// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd); + barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); + } + + ArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + + if(mtbAartList != null && mtbAartList.size() > 0) { + BarcodeManager.enable(); + progressDialog.dismiss(); + + mOnItemChoosed.run(DialogConsts.Results.YES, mtbAartList.get(0)); + mDialog.dismiss(); + + + } else { + BarcodeManager.enable(); + progressDialog.dismiss(); + + DialogSimpleMessageHelper.makeWarningDialog(mContext, + new SpannableString(mContext.getResources().getText(R.string.no_result_from_barcode)), + null, null) + .show(); + } + + }, ex -> { + BarcodeManager.enable(); + UtilityExceptions.defaultException(mContext, ex, progressDialog); + }); + } + + + + +} diff --git a/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml index 3a49fe32..54fc744d 100644 --- a/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml +++ b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml @@ -41,6 +41,21 @@ android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" android:layout_width="match_parent"> + + + + + + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 43498c44..2ea68f2a 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -70,7 +70,7 @@ app:iconifiedByDefault="true" android:layout_gravity="end"/> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml index ead7a753..dee17988 100644 --- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml +++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml @@ -120,15 +120,33 @@ - - + android:hint="@string/ship_date"> + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c9cfd541..72c6e75e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -29,6 +29,8 @@ Questi permessi sono necessari al funzionamento dell\'app Picking non disponibile + Scansiona il codice a barre di un articolo + Articolo extra Impostazioni diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 120cf76f..57e6713d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -84,6 +84,8 @@ Position Prepared by Picking not available + Please scan an item barcode + Extra item between 3 and 30 alphanumeric characters From 6a75185d537d689acd28c08582249909e4eda9a1 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 13 Jun 2019 12:22:43 +0200 Subject: [PATCH 3/3] -> v1.5.0 (60) --- .idea/caches/build_file_checksums.ser | Bin 911 -> 911 bytes app/build.gradle | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 6eebe752b9d841863fb974113e3e7910bc8c12cc..6964efc75329b330720bb664f49a629c4f508456 100644 GIT binary patch delta 48 zcmV-00MGxA2agAkm;_KpJ(D&8c$4b^8xYmPqP~`zR(kR@AN{gP6Q{El G0(k+}1{1sh delta 53 zcmV-50LuT52agAkm;^E#&H9m?nv-(@c#}2(Jp>S8aB!1>0T&R=4Vxs_9HTZ|%z>bK LI7gSW76N$zAaoPW diff --git a/app/build.gradle b/app/build.gradle index 8a575a2c..7b73fa69 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 59 - def appVersionName = '1.4.1' + def appVersionCode = 60 + def appVersionName = '1.5.0' signingConfigs { release {