From 000a68c1647595a3256890d1dce10d6c76532679 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 6 Aug 2019 09:50:31 +0200 Subject: [PATCH] Completato picking manuale da resi --- .../consumers/ColliMagazzinoRESTConsumer.java | 23 ++ .../REST/consumers/PrinterRESTConsumer.java | 6 +- .../integrywmsnative/core/model/DtbDocr.java | 13 + .../core/report/ReportManager.java | 20 ++ .../core/utility/UtilityNumber.java | 8 + .../AccettazioneOrdineInevasoActivity.java | 4 +- ...oneOrdineAccettazioneInevasoViewModel.java | 12 +- .../ContenutoBancaleActivity.java | 14 +- .../viewmodel/ContenutoBancaleViewModel.java | 18 +- .../lista_bancali/ListaBancaliActivity.java | 27 +- .../picking_resi/PickingResiActivity.java | 329 +++++++++++++++-- .../core/PickingResiListAdapter.java | 78 +++- .../picking_resi/dto/WithdrawableDtbDocr.java | 25 ++ .../UltimeConsegneClienteRESTConsumer.java | 78 +++- .../VenditaOrdineInevasoViewModel.java | 83 ++--- .../base/DialogSimpleMessageHelper.java | 18 + .../activity_accettazione_ordine_inevaso.xml | 3 +- .../main/res/layout/activity_picking_resi.xml | 334 +++++++++++++----- .../activity_vendita_ordine_inevaso.xml | 3 +- ...ragment_articoli_in_collo_bottom_sheet.xml | 1 - 20 files changed, 872 insertions(+), 225 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java 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 e317ef75..28d8779f 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 @@ -1,5 +1,8 @@ package it.integry.integrywmsnative.core.REST.consumers; +import android.app.ProgressDialog; +import android.content.Context; + import com.annimon.stream.Stream; import com.google.gson.Gson; import com.google.gson.JsonObject; @@ -25,6 +28,8 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; 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.UtilityString; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; import retrofit2.Call; @@ -453,5 +458,23 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ + public static void updateDataFine(Context context, ProgressDialog progress, MtbColt mtbColt, Runnable onComplete) { + + MtbColt cloneMtbColt = (MtbColt) mtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); + cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance()); + + + ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + onComplete.run(); + }, ex -> { + UtilityExceptions.defaultException(context, ex, progress); + }); + + } + + + + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java index 3ddaf3ef..16e766b8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java @@ -71,7 +71,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailablePrinters(String codMdep, Type printerType, final ISimpleOperationCallback> callback) { + public static void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs> onComplete, RunnableArgs onFailed) { String printerTypeStr = printerType != null ? printerType.toString() : null; @@ -79,14 +79,14 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "GetAvailablePrinters", callback); + analyzeAnswer(response, "GetAvailablePrinters", onComplete, onFailed); } @Override public void onFailure(Call>> call, Throwable t) { Log.e("GetAvailablePrinters", t.toString()); UtilityLogger.errorMe(new Exception(t)); - callback.onFailed(new Exception(t)); + onFailed.run(new Exception(t)); } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java index 02cc2c27..b7d1bece 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java @@ -747,4 +747,17 @@ public class DtbDocr { this.mtbAart = mtbAart; return this; } + + + + public String getStringKeyIdentifier() { + String separator = "|"; + return + this.getCodAnag() + separator + + this.getCodDtip() + separator + + this.getSerDoc() + separator + + UtilityDate.formatDate(this.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) + separator + + this.getNumDoc() + separator + + this.getIdRiga(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java b/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java index 407d4f89..da7d70d8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java @@ -34,4 +34,24 @@ public class ReportManager { } + public static String getRightReportNameByGestione(GestioneEnum gestione) { + + if(gestione != null){ + + switch (gestione) { + case ACQUISTO: + case PRODUZIONE: + return "EtichettaBancale"; + + case LAVORAZIONE: + return "EtichettaInventario"; + + case VENDITA: + return "EtichettaSpedizione"; + } + + } + return null; + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java index e5c0d2fd..920986c5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java @@ -67,4 +67,12 @@ public class UtilityNumber { return numberString.replaceAll(",", "."); } + + + + public static Float decimalToFloat(BigDecimal bigDecimalValue) { + String tmp = decimalToString(bigDecimalValue); + return Float.parseFloat(tmp); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java index 88c69e1a..6429fc07 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java @@ -16,6 +16,8 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding; import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding; @@ -110,7 +112,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { public void startListaBancaliRegistratiActivity(ArrayList mtbColts){ - Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA); + Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getRightReportNameByGestione(GestioneEnum.ACQUISTO)); this.startActivityForResult(myIntent, PICK_UL_REQUEST); } 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 008aafd9..97ec35bf 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 @@ -683,9 +683,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC return; } - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, value -> { if(value.size() > 0) { try{ @@ -727,13 +725,9 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC String errorMessage = "Nessuna stampante configurata"; DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, null).show(); } - } - - @Override - public void onFailed(Exception ex) { + }, ex -> { UtilityExceptions.defaultException(mActivity, ex, progress); - } - }); + }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java index 98b37de3..f48db8a4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java @@ -25,9 +25,10 @@ public class ContenutoBancaleActivity extends AppCompatActivity { private static final String MtbColtKey = "mtbColtKey"; private static final String CanRecoverUL = "canRecoverUL"; private static final String PrinterType = "printerType"; + private static final String ReportName = "reportName"; } - public static Intent createIntent(Context context, MtbColt item, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) { + public static Intent createIntent(Context context, MtbColt item, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) { Intent myIntent = new Intent(context, ContenutoBancaleActivity.class); String keyMtbColt = DataCache.addItem(item); @@ -39,9 +40,8 @@ public class ContenutoBancaleActivity extends AppCompatActivity { String keyPrinterType = DataCache.addItem(printerType); myIntent.putExtra(Key.PrinterType, keyPrinterType); -// myIntent.putExtra(Key.MtbColtKey, item); -// myIntent.putExtra(Key.CanRecoverUL, canRecoverUl); -// myIntent.putExtra(Key.PrinterType, printerType); + String keyReportName = DataCache.addItem(reportName); + myIntent.putExtra(Key.ReportName, keyReportName); return myIntent; } @@ -54,13 +54,11 @@ public class ContenutoBancaleActivity extends AppCompatActivity { boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); MtbColt mtbColt = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey)); + String reportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); PrinterRESTConsumer.Type mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); -// if(getIntent().hasExtra(Key.PrinterType)) { -// mPrinterType = (PrinterRESTConsumer.Type) getIntent().getSerializableExtra(Key.PrinterType); -// } else mPrinterType = null; - mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType); + mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType, reportName); bindings.elevatedToolbar.setNestedScrollView(bindings.scrollView); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java index 5b8a3251..860ba9bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java @@ -42,13 +42,15 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked private ContenutoBancaleListAdapter mAdapter; private PrinterRESTConsumer.Type mPrinterType; + private String mReportName; - public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType){ + public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName){ mContext = context; this.mtbColt = new ObservableField<>(mtbColt); this.isFabVisible.set(true); this.isRecoverFabMenuVisible.set(canRecoverUL); this.mPrinterType = printerType; + this.mReportName = defaultReportName; mContext.bindings.setViewModel(this); @@ -102,15 +104,15 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting), mContext.getText(R.string.loading) + " ...", true); - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), mPrinterType, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), mPrinterType, value -> { if(value.size() > 0) { try { ReportManager.getRightReportNameByGestione(mtbColt.get().getGestioneEnum(), reportName -> { + reportName = mReportName != null ? mReportName : reportName; + PrinterRESTConsumer.printCollo(value.get(0), mtbColt.get(), 1, @@ -134,13 +136,9 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked String errorMessage = "Nessuna stampante configurata"; DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, null).show(); } - } - - @Override - public void onFailed(Exception ex) { + }, ex -> { UtilityExceptions.defaultException(mContext, ex, progress); - } - }); + }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index c5449a50..a8e5c3b2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -23,6 +23,7 @@ public class ListaBancaliActivity extends AppCompatActivity { private static final String MtbColtsKey = "mtbColtsKey"; private static final String CanRecoverUL = "canRecoverUL"; private static final String PrinterType = "printerType"; + private static final String ReportName = "reportName"; } public ActivityListaBancaliBinding bindings; @@ -31,11 +32,30 @@ public class ListaBancaliActivity extends AppCompatActivity { private boolean mCanRecoverUl; private PrinterRESTConsumer.Type mPrinterType; + private String mReportName; private static final int PICK_UL_REQUEST = 1; // The request code + public static Intent createIntent(Context context, ArrayList items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) { + Intent myIntent = new Intent(context, ListaBancaliActivity.class); + + String mtbColtsKey = DataCache.addItem(items); + myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey); + + String canRecoverULKey = DataCache.addItem(canRecoverUl); + myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey); + + String printerTypeKey = DataCache.addItem(printerType); + myIntent.putExtra(Key.PrinterType, printerTypeKey); + + String reportNameKey = DataCache.addItem(reportName); + myIntent.putExtra(Key.ReportName, reportNameKey); + + return myIntent; + } + public static Intent createIntent(Context context, ArrayList items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) { Intent myIntent = new Intent(context, ListaBancaliActivity.class); @@ -58,11 +78,8 @@ public class ListaBancaliActivity extends AppCompatActivity { mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); - mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); -// if(getIntent().hasExtra(Key.PrinterType)) { -// mPrinterType = (PrinterRESTConsumer.Type) getIntent().getSerializableExtra(Key.PrinterType); -// } else mPrinterType = null; + mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); List mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey)); mViewModel = new ListaBancaliViewModel(this, mtbColts); @@ -81,7 +98,7 @@ public class ListaBancaliActivity extends AppCompatActivity { } public void startContenutoBancaleActivity(MtbColt item){ - Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType); + Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType, mReportName); startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index b8142a5f..446d6224 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -4,6 +4,7 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableField; +import androidx.databinding.ObservableList; import androidx.recyclerview.widget.LinearLayoutManager; import android.app.ProgressDialog; @@ -19,39 +20,55 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.DtbDocr; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.report.ReportManager; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding; +import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding; +import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback; +import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; +import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; +import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; -public class PickingResiActivity extends AppCompatActivity { +public class PickingResiActivity extends AppCompatActivity implements IOnColloClosedCallback { private List mDocumentiResiList; - private List mDtbDocrList; - - private HashMap> mWithdrawRows = new HashMap<>(); + public ObservableList mDtbDocrList; + private final List mColliRegistrati = new ArrayList<>(); private ActivityPickingResiBinding mBinding; + private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; public ObservableField currentMtbColt = new ObservableField<>(); + private PickingResiListAdapter mAdapter; + private int barcodeScannerIstanceID = -1; private String mDefaultGestioneOfUL; @@ -72,6 +89,14 @@ public class PickingResiActivity extends AppCompatActivity { mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi); mBinding.setViewmodel(this); + this.mDtbDocrList = new ObservableArrayList<>(); + + mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude); + mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); + mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited); + mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted); + + mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key")); this.initView(); @@ -87,18 +112,20 @@ public class PickingResiActivity extends AppCompatActivity { @Override public void onBackPressed() { -// if(mArticoliInColloBottomSheetViewModel.isExpanded()){ -// mArticoliInColloBottomSheetViewModel.collapse(); -// } else if(mVenditaOrdineInevasoViewModel.thereIsAnOpenedUL()) { -// mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> { -// BarcodeManager.removeCallback(barcodeScannerIstanceID); -// super.onBackPressed(); -// }); -// -// } else { + if(mArticoliInColloBottomSheetViewModel.isExpanded()){ + mArticoliInColloBottomSheetViewModel.collapse(); + } + else if(thereIsAnOpenedUL()) { + mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + super.onBackPressed(); + }); + + } + else { BarcodeManager.removeCallback(barcodeScannerIstanceID); super.onBackPressed(); -// } + } } private void initView() { @@ -115,27 +142,27 @@ public class PickingResiActivity extends AppCompatActivity { ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(this); UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> { progressDialog.dismiss(); - this.mDtbDocrList = dtbDocrToPick; + this.mDtbDocrList.addAll(dtbDocrToPick); try { this.initDatiPicking(); } catch (Exception ex) { - this.showErrorDialog(ex.getMessage()); + DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage()); } - this.initList(dtbDocrToPick); + this.initList(); }, ex -> { UtilityExceptions.defaultException(this, ex, progressDialog); }); } - private void initList(List dtbDocrList) { + private void initList() { - PickingResiListAdapter adapter = new PickingResiListAdapter(this, dtbDocrList); - adapter.setOnItemClicked(this::onOrdineRowDispatch); + mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList); + mAdapter.setOnItemClicked(this::onOrdineRowDispatch); this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this)); - this.mBinding.mainList.setAdapter(adapter); + this.mBinding.mainList.setAdapter(mAdapter); } private void initDatiPicking() throws Exception { @@ -168,10 +195,6 @@ public class PickingResiActivity extends AppCompatActivity { throw new Exception("Sono stati caricati documenti con diversi codici deposito"); } else mDefaultCodMDepOfUL = foundCodMdeps.get(0); - - for (DtbDocr dtbDocr : mDtbDocrList) { - this.mWithdrawRows.put(dtbDocr, new ArrayList<>()); - } } @@ -235,15 +258,16 @@ public class PickingResiActivity extends AppCompatActivity { } this.currentMtbColt.set(mtbColt); + mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt); } - public void onOrdineRowDispatch(final DtbDocr item) { + public void onOrdineRowDispatch(final WithdrawableDtbDocr item) { if(currentMtbColt.get() != null){ - List currentMtbColrs = mWithdrawRows.get(item); + List currentMtbColrs = item.getWithdrawRows(); BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO; for (MtbColr mtbColr : currentMtbColrs) { @@ -306,19 +330,256 @@ public class PickingResiActivity extends AppCompatActivity { // } DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> { - //onOrdineRowDispatched(item, quantityDTO, closeUL); + onOrdineRowDispatched(item, quantityDTO, closeUL); }, null).show(); } } - private void showErrorDialog(String message) { - DialogSimpleMessageHelper.makeErrorDialog( - this, - new SpannableString(message), - null, - null).show(); + + + private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){ + final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(this); + + 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(UtilityDate.getDateInstance()) + .setNote(item.getStringKeyIdentifier()); + + + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + + cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.getMtbColr().add(mtbColr); + + ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, 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.getWithdrawRows().add(mtbColr); + + int currentIndex = this.mDtbDocrList.indexOf(item); + + this.refreshDtbDocrItem(item); + + currentMtbColt.get().getMtbColr().add(mtbColr); + + //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei + removeListFilter(); + + FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + + progress.dismiss(); + +// if(closeUL) onColloClosed(null); + }, ex -> { + UtilityExceptions.defaultException(this, ex, progress); + }); } + + @Override + public void onColloClosed(Runnable onComplete) { + if(thereIsAnOpenedUL()) { + + final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(this); + progress.show(); + + if(thereIsAnyRowInUL()) { + ColliMagazzinoRESTConsumer.updateDataFine( + this, + progress, + currentMtbColt.get(), + () -> printCollo(progress, currentMtbColt.get(), onComplete)); + } else { + deleteCollo(progress, onComplete); + } + + } else { + if(onComplete != null) onComplete.run(); + } + } + + private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) { + for(int i = 0; i < mDtbDocrList.size(); i++) { + int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal); + + if(foundIndex >= 0){ + mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex); + mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited); + + refreshDtbDocrItem(this.mDtbDocrList.get(i)); + + break; + } + } + } + + private void onItemDeleted(MtbColr mtbColrDeleted) { + for(int i = 0; i < mDtbDocrList.size(); i++) { + int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted); + + if(foundIndex >= 0){ + mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex); + + refreshDtbDocrItem(this.mDtbDocrList.get(i)); + + break; + } + } + } + + private void printCollo(ProgressDialog progress, MtbColt mtbColtToPrint, Runnable onComplete) { + DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> { + + if(shouldPrint) { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + + if (printerList.size() > 0) { + try { + singlePrint(mtbColtToPrint, printerList.get(0), () -> { + postCloseOperations(mtbColtToPrint, onComplete); + progress.dismiss(); + }, ex -> { + progress.dismiss(); + String errorMessage = ex.getMessage(); + DialogSimpleMessageHelper.makeErrorDialog( + this, + new SpannableString(errorMessage), + null, + null, + R.string.button_ignore_print, + () -> postCloseOperations(mtbColtToPrint, onComplete)).show(); + }); + + } catch (Exception ex) { + UtilityExceptions.defaultException(this, ex, progress); + postCloseOperations(mtbColtToPrint, onComplete); + } + } else { + progress.dismiss(); + String errorMessage = "Nessuna stampante configurata"; + DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show(); + } + }, ex -> { + UtilityExceptions.defaultException(this, ex, progress); + }); + } else { + postCloseOperations(mtbColtToPrint, onComplete); + progress.dismiss(); + } + }).show(); + } + + + + private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) { + ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + + PrinterRESTConsumer.printCollo( + printerName, + mtbColtToPrint, + 1, + reportName, onComplete, onAbort); + + }, onAbort); + } + + private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) { + this.mColliRegistrati.add(generatedMtbColt); + + setULToCurrentContext(null); + + for(int i = 0; i < this.mDtbDocrList.size(); i++) { + WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i); + + List withdraws = dtbDocr.getWithdrawRows(); + + for(int k = 0; k < withdraws.size(); k++) { + MtbColr withdrawRow = withdraws.get(k); + + dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol())); + } + + dtbDocr.getWithdrawRows().clear(); + + if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) { + this.mDtbDocrList.remove(dtbDocr); + i--; + } else this.refreshDtbDocrItem(dtbDocr); + } + + removeListFilter(); + + if(onComplete != null) onComplete.run(); + } + + + private void deleteCollo(ProgressDialog progress, Runnable onComplete) { + + ColliMagazzinoRESTConsumer.deleteCollo(currentMtbColt.get(), () -> { + setULToCurrentContext(null); + + progress.dismiss(); + + + if(onComplete != null) onComplete.run(); + }, ex -> UtilityExceptions.defaultException(this, ex, progress) + ); + } + + + public boolean thereIsAnOpenedUL() { + return currentMtbColt.get() != null; + } + + public boolean thereIsAnyRowInUL() { + return currentMtbColt.get() != null && + currentMtbColt.get().getMtbColr() != null && + currentMtbColt.get().getMtbColr().size() > 0; + } + + + private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) { + int index = this.mDtbDocrList.indexOf(dtbDocr); + this.mDtbDocrList.remove(dtbDocr); + this.mDtbDocrList.add(index, dtbDocr); + } + + + public void applyFilter(String descriptionText) { + +// this.mBindings.filteredArtsInListExpandableLayout.expand(true); +// +// this.mBindings.descriptionFilterText.setText(descriptionText); + } + + public void removeListFilter() { +// for(int i = 0; i < mPickingList.size(); i++) { +// mPickingList.get(i).setTempHidden(false); +// mPickingList.get(i).setTempPickData(null); +// } +// +// refreshOrderBy(false); +// this.mBindings.filteredArtsInListExpandableLayout.collapse(true); + } + + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java index f91bf7be..585b0079 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java @@ -1,35 +1,41 @@ package it.integry.integrywmsnative.gest.picking_resi.core; import android.content.Context; +import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; import com.annimon.stream.Stream; import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.DtbDocr; +import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemBinding; import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemHeaderBinding; +import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr; public class PickingResiListAdapter extends SectionedRecyclerViewAdapter { private Context mContext; - private List mDataset; + private List mDataset; - private RunnableArgs mOnItemClicked; + private RunnableArgs mOnItemClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -53,14 +59,50 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter data) { + public PickingResiListAdapter(Context context, ObservableList data) { this.mContext = context; - this.mDataset = Stream.of(data) - .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag()) - .toList(); + this.mDataset = new ArrayList<>(); + + refreshData(data); + + data.addOnListChangedCallback(new ObservableList.OnListChangedCallback>() { + @Override + public void onChanged(ObservableList sender) { + refreshData(sender); + } + + @Override + public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { + refreshData(sender); + } + + @Override + public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { + refreshData(sender); + } + + @Override + public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { + refreshData(sender); + } + + @Override + public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { + refreshData(sender); + } + }); } - public void setOnItemClicked(RunnableArgs onItemClicked) { + private void refreshData(List data) { + this.mDataset.clear(); + this.mDataset.addAll(Stream.of(data) + .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga()) + .toList()); + + this.notifyDataChanged(); + } + + public void setOnItemClicked(RunnableArgs onItemClicked) { this.mOnItemClicked = onItemClicked; } @@ -78,13 +120,31 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter 0 && qtaEvasa.floatValue() > 0) { + holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha)); + } else { + holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white)); + } + holder.mBinding.getRoot().setOnClickListener(v -> { if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java new file mode 100644 index 00000000..5b882e25 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.gest.picking_resi.dto; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.core.model.DtbDocr; +import it.integry.integrywmsnative.core.model.MtbColr; + +public class WithdrawableDtbDocr extends DtbDocr { + + private List withdrawRows = new ArrayList<>(); + + public WithdrawableDtbDocr() { + super(); + } + + public List getWithdrawRows() { + return withdrawRows; + } + + public WithdrawableDtbDocr setWithdrawRows(List withdrawRows) { + this.withdrawRows = withdrawRows; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java index 2ddb85a3..b09f5151 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java @@ -15,6 +15,7 @@ import it.integry.integrywmsnative.core.model.DtbDocr; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.vendita.rest.model.DocumentoResoDTO; public class UltimeConsegneClienteRESTConsumer { @@ -53,7 +54,7 @@ public class UltimeConsegneClienteRESTConsumer { - public static void loadDocRowFromConsegna(List consegne, RunnableArgs> onComplete, RunnableArgs onFailed) { + public static void loadDocRowFromConsegna(List consegne, RunnableArgs> onComplete, RunnableArgs onFailed) { StringBuilder sbWhereCond = new StringBuilder(); for(int i = 0; i < consegne.size(); i++) { @@ -67,23 +68,90 @@ public class UltimeConsegneClienteRESTConsumer { if(i < consegne.size()-1) sbWhereCond.append(" OR "); } - String sql = "SELECT dtb_docr.* " + + String sql = "SELECT dtb_docr.[cod_anag]" + + " ,dtb_docr.[cod_dtip]" + + " ,dtb_docr.[data_doc]" + + " ,dtb_docr.[ser_doc]" + + " ,dtb_docr.[num_doc]" + + " ,dtb_docr.[id_riga]" + + " ,dtb_docr.[cod_mart]" + + " ,dtb_docr.[descrizione]" + + " ,dtb_docr.[unt_doc]" + + " ,dtb_docr.[rap_conv]" + + " ,dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) as qta_doc" + + " ,dtb_docr.[val_unt]" + + " ,dtb_docr.[sconto5]" + + " ,dtb_docr.[sconto6]" + + " ,dtb_docr.[sconto7]" + + " ,dtb_docr.[sconto8]" + + " ,dtb_docr.[cod_aliq]" + + " ,dtb_docr.[perc_prov]" + + " ,dtb_docr.[val_prov]" + + " ,dtb_docr.[data_ord]" + + " ,dtb_docr.[num_ord]" + + " ,dtb_docr.[riga_ord]" + + " ,dtb_docr.[importo_riga]" + + " ,dtb_docr.[cod_col]" + + " ,dtb_docr.[cod_tagl]" + + " ,dtb_docr.[cod_jcom]" + + " ,dtb_docr.[cod_mdep]" + + " ,dtb_docr.[perc_gest]" + + " ,dtb_docr.[val_gest]" + + " ,dtb_docr.[partita_mag]" + + " ,dtb_docr.[val_unt_iva]" + + " ,dtb_docr.[qta_cnf]" + + " ,dtb_docr.[descrizione_estesa]" + + " ,dtb_docr.[costo_unt]" + + " ,dtb_docr.[perc_ispe]" + + " ,dtb_docr.[val_ispe]" + + " ,dtb_docr.[perc_promo]" + + " ,dtb_docr.[val_promo]" + + " ,dtb_docr.[perc_oneri]" + + " ,dtb_docr.[val_oneri]" + + " ,dtb_docr.[flag_evaso_forzato]" + + " ,dtb_docr.[cod_dtip_comp]" + + " ,dtb_docr.[data_doc_comp]" + + " ,dtb_docr.[ser_doc_comp]" + + " ,dtb_docr.[num_doc_comp]" + + " ,dtb_docr.[cod_promo]" + + " ,dtb_docr.[perc_prov2]" + + " ,dtb_docr.[val_prov2]" + + " ,dtb_docr.[cod_art_for]" + + " ,dtb_docr.[unt_doc2]" + + " ,dtb_docr.[qta_doc2]" + + " ,dtb_docr.[unt_doc3]" + + " ,dtb_docr.[qta_doc3]" + + " ,dtb_docr.[num_cnf]" + + " ,dtb_docr.[peso_lordo]" + + " ,dtb_docr.[posizione]" + + " ,dtb_docr.[cod_anag_comp]" + + " ,dtb_docr.[cod_mtip]" + + " ,dtb_docr.[matricola]" + + " ,dtb_docr.[data_iniz_comp]" + + " ,dtb_docr.[data_fine_comp]" + + " ,dtb_docr.[cod_kit]" + + " ,dtb_docr.[cod_alis]" + + " ,dtb_docr.[data_ins_row]" + + " ,dtb_docr.[note] " + "FROM dtb_docr " + "INNER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart " + "LEFT OUTER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon " + "LEFT OUTER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp " + + "LEFT OUTER JOIN mtb_colr ON " + + " dtb_docr.cod_anag + '|' + dtb_docr.cod_dtip + '|' + dtb_docr.ser_doc + '|' + CONVERT(varchar(10), dtb_docr.data_doc , 111) + '|' + CONVERT(varchar(20), dtb_docr.num_doc) + '|' + CONVERT(varchar(20), dtb_docr.id_riga) = mtb_colr.note " + "WHERE " + " (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " + + " dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" + " ( " + sbWhereCond.toString() + " ) " + "ORDER BY cod_mart"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + Type typeOfObjectsList = new TypeToken>() {}.getType(); + SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override - public void onSuccess(ArrayList values) { + public void onSuccess(ArrayList values) { if(values != null && values.size() > 0){ List codMarts = Stream.of(values) 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 f2fb22f5..dbbd6ce2 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 @@ -887,7 +887,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO progress.show(); if(thereIsAnyRowInUL()) { - updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts, onComplete))); + ColliMagazzinoRESTConsumer.updateDataFine( + mActivity, + progress, + mArticoliInColloBottomSheetViewModel.mtbColt.get(), + () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts, onComplete))); } else { if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID); deleteCollo(progress, onComplete); @@ -899,26 +903,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } - private void updateDataFine(ProgressDialog progress, Runnable onComplete) { - - MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); - cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); - cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance()); - - - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback() { - @Override - public void onSuccess(MtbColt value) { - onComplete.run(); - } - - @Override - public void onFailed(Exception ex) { - UtilityExceptions.defaultException(mActivity, ex, progress); - } - }); - - } private void distribuisciCollo(ProgressDialog progress, RunnableArgs> onComplete) { @@ -945,9 +929,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> { if(shouldPrint) { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, value -> { if (value.size() > 0) { try { @@ -975,13 +957,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO String errorMessage = "Nessuna stampante configurata"; DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtsToPrint, onComplete)).show(); } - } - - @Override - public void onFailed(Exception ex) { + }, ex -> { UtilityExceptions.defaultException(mActivity, ex, progress); - } - }); + }); } else { postCloseOperations(mtbColtsToPrint, onComplete); progress.dismiss(); @@ -1183,8 +1161,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } private void onOrdineRowDispatched(PickingObjectDTO item, QuantityDTO quantityDTO, boolean closeUL){ - final ProgressDialog progress = ProgressDialog.show(mActivity, mActivity.getText(R.string.waiting), - mActivity.getText(R.string.loading) + " ...", true); + final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mActivity); final MtbColr mtbColr = new MtbColr() .setCodMart(item.getCodMart()) @@ -1222,38 +1199,32 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.getMtbColr().add(mtbColr); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback() { - @Override - public void onSuccess(MtbColt value) { + ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, 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()); + 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.getWithdrawRows().add(mtbColr); + item.getWithdrawRows().add(mtbColr); - mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); + mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); - //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei - removeListFilter(); + //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); + FBToast.successToast(mActivity,mActivity.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT); - progress.dismiss(); - - if(closeUL) onColloClosed(null); - } + progress.dismiss(); - @Override - public void onFailed(Exception ex) { - UtilityExceptions.defaultException(mActivity, ex, progress); - } + if(closeUL) onColloClosed(null); + }, ex -> { + UtilityExceptions.defaultException(mActivity, ex, progress); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java index 77723f0b..8e98734d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java @@ -12,6 +12,8 @@ import android.graphics.drawable.Drawable; import androidx.annotation.StringRes; import androidx.core.content.ContextCompat; import androidx.appcompat.widget.AppCompatImageView; + +import android.text.SpannableString; import android.text.Spanned; import android.view.LayoutInflater; import android.view.View; @@ -194,6 +196,14 @@ public class DialogSimpleMessageHelper { null, -1, null); } + public static void showSimpleWarningDialog(Context context, String message){ + makeErrorDialog( + context, + new SpannableString(message), + null, + null).show(); + } + public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick){ return makeBase(TYPE.ERROR, @@ -205,6 +215,14 @@ public class DialogSimpleMessageHelper { null, -1, null); } + public static void showSimpleErrorDialog(Context context, String message){ + makeErrorDialog( + context, + new SpannableString(message), + null, + null).show(); + } + public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick){ return makeBase(TYPE.ERROR, diff --git a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml index 72371844..e01814ba 100644 --- a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml +++ b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml @@ -254,7 +254,8 @@ + layout="@layout/fragment_articoli_in_collo_bottom_sheet" + android:visibility="@{!viewmodel.isFabVisible ? View.VISIBLE : View.GONE}" /> diff --git a/app/src/main/res/layout/activity_picking_resi.xml b/app/src/main/res/layout/activity_picking_resi.xml index cf0fcbf3..9e2c9783 100644 --- a/app/src/main/res/layout/activity_picking_resi.xml +++ b/app/src/main/res/layout/activity_picking_resi.xml @@ -1,6 +1,8 @@ + xmlns:fab="http://schemas.android.com/apk/res-auto" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> - - - - - - - - - - - - - - - - - - fab:menu_animationDelayPerItem="50" - fab:menu_backgroundColor="@color/white_bg_alpha" - fab:menu_buttonSpacing="0dp" - fab:menu_colorNormal="@color/colorSecondary" - fab:menu_colorPressed="@color/colorSecondaryDark" - fab:menu_fab_size="normal" - fab:menu_labels_colorNormal="@color/white" - fab:menu_labels_colorPressed="@color/white_pressed" - fab:menu_labels_colorRipple="#66FFFFFF" - fab:menu_labels_cornerRadius="3dp" - fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right" - fab:menu_labels_margin="0dp" - fab:menu_labels_padding="8dp" - fab:menu_labels_paddingBottom="4dp" - fab:menu_labels_paddingLeft="8dp" - fab:menu_labels_paddingRight="8dp" - fab:menu_labels_paddingTop="4dp" - fab:menu_labels_position="left" - fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right" - fab:menu_labels_showShadow="true" - fab:menu_labels_textColor="@color/black_semi_transparent" - fab:menu_labels_textSize="18sp" - fab:menu_openDirection="up" - fab:menu_shadowColor="#66000000" - fab:menu_shadowRadius="4dp" - fab:menu_shadowXOffset="1dp" - fab:menu_shadowYOffset="3dp" - fab:menu_showShadow="true"> - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 d3400632..8eb5d4e7 100644 --- a/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml +++ b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml @@ -275,7 +275,8 @@ + layout="@layout/fragment_articoli_in_collo_bottom_sheet" + android:visibility="@{!viewmodel.isFabVisible ? View.VISIBLE : View.GONE}" /> 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 5c256fbc..43efda1d 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 @@ -16,7 +16,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" - android:visibility="@{viewModel.mtbColt.get() != null ? View.VISIBLE : View.GONE}" app:behavior_peekHeight="?attr/actionBarSize" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" app:behavior_hideable="false">