From ccb85ba5122fbe4803abf2ac693a1bfceac034f8 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 13 Jun 2019 19:26:49 +0200 Subject: [PATCH] Implementato flag per auto aprire pedane in accettazione --- .../core/settings/DBSettingsModel.java | 10 ++ .../core/settings/SettingsManager.java | 9 +- ...oneOrdineAccettazioneInevasoViewModel.java | 19 ++- .../VenditaOrdineInevasoViewModel.java | 134 +++++++++++++++++- .../view/dialogs/scan_art/DialogScanArt.java | 11 +- app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 172 insertions(+), 13 deletions(-) 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 ab303fdb..b5b13054 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 @@ -24,6 +24,7 @@ public class DBSettingsModel { private boolean flagAskClienteInPickingLibero; private boolean flagCanAddExtraItemSpedizione; + private boolean flagCanAutoOpenNewULAccettazione; public List getAvailableProfiles() { return availableProfiles; @@ -120,4 +121,13 @@ public class DBSettingsModel { this.flagCanAddExtraItemSpedizione = flagCanAddExtraItemSpedizione; return this; } + + public boolean isFlagCanAutoOpenNewULAccettazione() { + return flagCanAutoOpenNewULAccettazione; + } + + public DBSettingsModel setFlagCanAutoOpenNewULAccettazione(boolean flagCanAutoOpenNewULAccettazione) { + this.flagCanAutoOpenNewULAccettazione = flagCanAutoOpenNewULAccettazione; + 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 4c6f8037..61a0902f 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 @@ -195,7 +195,14 @@ public class SettingsManager { GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", valueCanAddExtraItemSpedizione -> { dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(valueCanAddExtraItemSpedizione); - if(onComplete != null) onComplete.run(); + GestSetupRESTConsumer.getBooleanValue("PICKING", "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", valueCanAutoOpenNewUL -> { + dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(valueCanAutoOpenNewUL); + + 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 b31034ba..993b7829 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 @@ -328,10 +328,17 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC if(!thereIsAnOpenedUL()){ - this.createNewUL(null, null, progressDialog, false, () -> { + if(SettingsManager.iDB().isFlagCanAutoOpenNewULAccettazione()) { + this.createNewUL(null, null, progressDialog, false, () -> { + BarcodeManager.enable(); + this.searchArtInList(mtbAartList.get(0), ean128Model); + }); + } else { BarcodeManager.enable(); - this.searchArtInList(mtbAartList.get(0), ean128Model); - }); + progressDialog.dismiss(); + + showPleaseOpenULDialog(); + } } else { this.searchArtInList(mtbAartList.get(0), ean128Model); @@ -387,6 +394,12 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC null, null).show(); } + private void showPleaseOpenULDialog() { + DialogSimpleMessageHelper.makeWarningDialog(mActivity, + new SpannableString(mActivity.getResources().getText(R.string.please_open_lu)), + null, null).show(); + } + public void showOrderDialog() { AlertDialog dialog = new AlertDialog.Builder(mActivity) 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 55e18996..789bfbcf 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,7 +5,6 @@ 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; @@ -27,6 +26,7 @@ import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsume import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.REST.model.Ean128Model; import it.integry.integrywmsnative.core.REST.model.Ean13PesoModel; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.class_router.ClassRouter; @@ -45,7 +45,9 @@ 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.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.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -60,6 +62,7 @@ import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCal import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; import it.integry.integrywmsnative.view.dialogs.DialogCommon; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; 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; @@ -125,9 +128,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO }); mBindings.addExtraItemsToolbar.setOnClickListener((v -> { - DialogScanArt.make(mActivity, (status, mtbAart) -> { - - }).show(); + addExtraItem(); })); mHelper = new VenditaOrdineInevasoHelper(mActivity); @@ -1243,4 +1244,129 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO }); } + + + private void addExtraItem() { + DialogScanArt.make(mActivity, (status, mtbAart, ean128Model) -> { + if(status == DialogConsts.Results.YES) { + this.dispatchExtraItem(mtbAart, ean128Model); + } + }).show(); + } + + + private void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model){ + DialogInputQuantity.DTO qtaDto = new DialogInputQuantity.DTO(); + + qtaDto.setMtbAart(mtbAart); + + qtaDto.setQtaCnf(mtbAart.getQtaCnf()); + qtaDto.setNumCnf(1); + qtaDto.setQtaTot(mtbAart.getQtaCnf()); + + qtaDto.setQtaDaEvadere(new BigDecimal(-1)); + qtaDto.setQtaDisponibile(new BigDecimal(-1)); + + qtaDto.setCanPartitaMagBeChanged(true); + qtaDto.setCanDataScadBeChanged(true); + + + if(ean128Model != null){ + if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { + qtaDto.setBatchLot(ean128Model.BatchLot); + qtaDto.setCanPartitaMagBeChanged(false); + } + + try { + if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){ + qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore)); + qtaDto.setCanDataScadBeChanged(false); + } else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) { + qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry)); + qtaDto.setCanDataScadBeChanged(false); + } + + } catch (Exception e) { + UtilityLogger.errorMe(e); + } + + + if(ean128Model.Count != null && ean128Model.Count > 0) { + qtaDto.setNumCnf(ean128Model.Count); + } + + if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) { + qtaDto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg)); + } else { + qtaDto.setQtaTot(qtaDto.getQtaCnf().multiply(new BigDecimal(qtaDto.getNumCnf()))); + } + + + // qtaDto.setShouldAskDataScad(true); + } + + + DialogInputQuantity.makeBase(mActivity, qtaDto, true, (quantityDTO) -> { + onExtraItemDispatched(mtbAart, quantityDTO, false); + }, () -> { + BarcodeManager.enable(); + }).show(); + } + + private void onExtraItemDispatched(MtbAart item, QuantityDTO quantityDTO, boolean closeUL){ + final ProgressDialog progress = ProgressDialog.show(mActivity, mActivity.getText(R.string.waiting), + mActivity.getText(R.string.loading) + " ...", true); + + final MtbColr mtbColr = new MtbColr() + .setCodMart(item.getCodMart()) + .setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get())) + .setQtaCol(quantityDTO.qtaTot.getBigDecimal()) + .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal()) + .setNumCnf(quantityDTO.numCnf.getBigDecimal()) + .setDescrizione(item.getDescrizioneEstesa()) + .setDatetimeRow(new Date()); + + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + + cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.getMtbColr().add(mtbColr); + + 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.getUntMis()) + .setMtbAart(item); + + + mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); + + //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei + removeListFilter(); + + + FBToast.successToast(mActivity,mActivity.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT); + + progress.dismiss(); + + if(closeUL) onColloClosed(null); + } + + @Override + public void onFailed(Exception ex) { + UtilityExceptions.defaultException(mActivity, ex, progress); + } + }); + } + } 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 index ccdf1606..557d3836 100644 --- 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 @@ -19,6 +19,7 @@ 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.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDate; @@ -36,14 +37,14 @@ public class DialogScanArt { private Context mContext; private Dialog mDialog; - private RunnableArgss mOnItemChoosed; + private RunnableArgsss mOnItemChoosed; - public static Dialog make(final Context context, RunnableArgss onItemChoosed) { + public static Dialog make(final Context context, RunnableArgsss onItemChoosed) { return new DialogScanArt(context, onItemChoosed).mDialog; } - private DialogScanArt(Context context, RunnableArgss onItemChoosed) { + private DialogScanArt(Context context, RunnableArgsss onItemChoosed) { mContext = context; mOnItemChoosed = onItemChoosed; @@ -59,7 +60,7 @@ public class DialogScanArt { bindings.buttonNo.setOnClickListener(v -> { - mOnItemChoosed.run(DialogConsts.Results.ABORT, null); + mOnItemChoosed.run(DialogConsts.Results.ABORT, null, null); mDialog.dismiss(); }); @@ -155,7 +156,7 @@ public class DialogScanArt { BarcodeManager.enable(); progressDialog.dismiss(); - mOnItemChoosed.run(DialogConsts.Results.YES, mtbAartList.get(0)); + mOnItemChoosed.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model); mDialog.dismiss(); diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 72c6e75e..e0b78f2a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -30,6 +30,7 @@ Questi permessi sono necessari al funzionamento dell\'app Picking non disponibile Scansiona il codice a barre di un articolo + Prima di procedere apri una nuova UL Articolo extra diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 57e6713d..f6533e55 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -150,6 +150,7 @@ The scanned label has already been used The scanned barcode did not produce any results + Before continuing open new LU The scanned barcode produced multiple results Item filter applied