From 6b1a5065774ca7fda82a6453b02f36c2a3e08cf6 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 4 Sep 2020 13:11:39 +0200 Subject: [PATCH] Completato refactoring rettifica giacenze --- .idea/codeStyles/Project.xml | 18 + .../MainApplicationModule.java | 7 + .../exception/InvalidLUGestioneException.java | 15 + .../expansion/view/ExtendedRecyclerView.java | 52 ++ .../ILUPositionListener.java | 11 + .../viewmodel_listeners/ILUPrintListener.java | 13 + .../core/model/CommonModelConsts.java | 2 + .../core/report/ReportManager.java | 6 +- .../consumers/ColliMagazzinoRESTConsumer.java | 10 +- .../rest/consumers/MagazzinoRESTConsumer.java | 5 +- .../rest/consumers/PosizioniRESTConsumer.java | 2 +- .../rest/consumers/PrinterRESTConsumer.java | 17 +- .../rest/consumers/SystemRESTConsumer.java | 19 +- .../core/utility/UtilityBarcode.java | 14 + .../AccettazioneOrdineInevasoActivity.java | 4 +- ...ccettazioneInevasoRESTConsumerService.java | 2 +- ...oneOrdineAccettazioneInevasoViewModel.java | 6 +- .../viewmodel/ContenutoBancaleViewModel.java | 4 +- .../PickingLiberoComponent.java | 1 - .../picking_libero/PickingLiberoFragment.java | 18 +- .../PickingLiberoViewModel.java | 12 +- .../core/PickingLiberoListAdapter.java | 42 +- .../picking_resi/PickingResiActivity.java | 6 +- .../core/ProdOrdineLavorazioneHelper.java | 2 +- .../ProdRecuperoMaterialeViewModel.java | 4 +- .../RettificaGiacenzeComponent.java | 14 + .../RettificaGiacenzeFragment.java | 429 +++++++++- .../RettificaGiacenzeModule.java | 36 + .../RettificaGiacenzeViewModelNEW.java | 741 ++++++++++++++++++ .../core/RettificaGiacenzeHelper.java | 27 +- .../core/RettificaGiacenzeRESTConsumer.java | 101 +++ .../RettificaGiacenzeMainListAdapter.java | 89 +-- .../viewmodel/RettificaGiacenzeViewModel.java | 110 ++- .../spedizione_new/SpedizioneActivity.java | 20 +- .../gest/spedizione_new/SpedizioneModule.java | 5 +- .../spedizione_new/SpedizioneViewModel.java | 54 +- .../UltimeConsegneClienteRESTConsumer.java | 7 +- .../UltimiArriviFornitoreRESTConsumer.java | 4 +- .../gest/vendita/core/VenditaHelper.java | 2 +- .../DialogAskCliente_Page1ViewModel.java | 2 +- .../DialogAskCliente_Page2ViewModel.java | 2 +- .../DialogInputQuantityV2.java | 12 + .../res/layout/activity_picking_libero.xml | 55 -- .../fragment_main_rettifica_giacenze.xml | 401 +++++----- 44 files changed, 1848 insertions(+), 555 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModelNEW.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java delete mode 100644 app/src/main/res/layout/activity_picking_libero.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index ae78c113..db291c66 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,5 +1,23 @@ + + + + diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 8efe8960..1cb59934 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -12,6 +12,7 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; @Module public class MainApplicationModule { @@ -58,5 +59,11 @@ public class MainApplicationModule { return new PrinterRESTConsumer(); } + @Provides + @Singleton + SystemRESTConsumer provideSystemRESTConsumer() { + return new SystemRESTConsumer(); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java new file mode 100644 index 00000000..cacb15da --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.core.exception; + +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; + +public class InvalidLUGestioneException extends Exception { + + public InvalidLUGestioneException() { + super("La GESTIONE dell'unità logistica scansionata non è valida"); + } + + public InvalidLUGestioneException(GestioneEnum gestioneEnum) { + super("La GESTIONE " + gestioneEnum.getText() + " dell'unità logistica scansionata non è valida"); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java new file mode 100644 index 00000000..cc9f63d7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java @@ -0,0 +1,52 @@ +package it.integry.integrywmsnative.core.expansion.view; + +import android.view.View; + +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.ArrayList; + +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; + +public abstract class ExtendedRecyclerView extends RecyclerView.Adapter { + protected ArrayList mDataset; + private View mEmptyView; + + public ExtendedRecyclerView(ObservableArrayList myDataset) { + mDataset = myDataset; + + myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @Override + public void onChanged(ObservableList sender) { + notifyDataSetChanged(); + checkIfEmpty(); + } + }); + + checkIfEmpty(); + } + + @Override + public void onViewRecycled(VH holder) { + super.onViewRecycled(holder); + } + + @Override + public int getItemCount() { + return mDataset.size(); + } + + public ExtendedRecyclerView setEmptyView(View emptyView) { + this.mEmptyView = emptyView; + return this; + } + + private void checkIfEmpty() { + if (mEmptyView != null) { + final boolean emptyViewVisible = getItemCount() == 0; + mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java new file mode 100644 index 00000000..e80ad6d4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java @@ -0,0 +1,11 @@ +package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; + + +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; + +public interface ILUPositionListener { + + void onLUPositionChangeRequest(RunnableArgss onComplete); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java new file mode 100644 index 00000000..d197d5d0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; + +public interface ILUPrintListener { + + void onLUSuccessullyPrinted(); + + void onLUPrintRequest(RunnableArgs onComplete); + + void onLUPrintError(Exception ex, Runnable onComplete); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java b/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java index 4d66c266..a3bd4cc2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.model; public class CommonModelConsts { + public static String ENTITY_NULL_STRING = "[NULL]"; + public static class OPERATION { public static String INSERT_OR_UPDATE = "INSERT_OR_UPDATE"; public static String INSERT = "INSERT"; 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 da7d70d8..28a9b227 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 @@ -1,13 +1,13 @@ package it.integry.integrywmsnative.core.report; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; public class ReportManager { - public static void getRightReportNameByGestione(GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) { + + public static void getReportNameLUFromGestione(GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) { if(gestione != null){ @@ -34,7 +34,7 @@ public class ReportManager { } - public static String getRightReportNameByGestione(GestioneEnum gestione) { + public static String getReportNameLUFromGestione(GestioneEnum gestione) { if(gestione != null){ 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 c31c1bb6..3b4495fa 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 @@ -638,7 +638,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - SystemRESTConsumer.>processSql(query, typeOfObjectsList, data -> { + SystemRESTConsumer.>processSqlStatic(query, typeOfObjectsList, data -> { onComplete.run(data != null && data.size() > 0); }, onFailed); } @@ -666,7 +666,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { - public static void creaRettificaCollo(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, Runnable onComplete, RunnableArgs onFailed) { + public static void creaRettificaColloStatic(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, Runnable onComplete, RunnableArgs onFailed) { MtbColr sourceMtbColr = (MtbColr) sourceMtbColrOriginal.clone(); sourceMtbColr.setMtbPartitaMag(null); sourceMtbColr.setMtbAart(null); @@ -695,4 +695,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } + + + public void creaRettificaCollo(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, Runnable onComplete, RunnableArgs onFailed) { + creaRettificaColloStatic(sourceMtbColrOriginal, newNumCnf, newQtaTot, onComplete, onFailed); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index d8b5cf92..8ab9cba7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -7,7 +7,6 @@ import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.utility.UtilityDB; @@ -21,7 +20,7 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { "WHERE cod_tcol = " + UtilityDB.valueToString(codTcol); Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List values) { if(onComplete != null) { @@ -42,7 +41,7 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { "FROM mtb_tcol "; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List values) { if(onComplete != null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java index 875936ee..c2200dd7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java @@ -48,7 +48,7 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{ Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { if(onComplete != null) onComplete.run(value); 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 b153d81e..c03cbf1f 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 @@ -44,8 +44,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { }); } + public void getAvailablePrinters(String codMdep, final RunnableArgs> onComplete, final RunnableArgs onFailed) { + getAvailablePrintersStatic(codMdep, onComplete, onFailed); + } - public static void getAvailablePrintersStatic(String codMdep, final ISimpleOperationCallback> callback) { + public static void getAvailablePrintersStatic(String codMdep, final RunnableArgs> onComplete, RunnableArgs onFailed) { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); printerService.getAvailablePrinters(codMdep).enqueue(new Callback>>() { @@ -54,12 +57,12 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { - callback.onSuccess(value != null ? Stream.of(value).withoutNulls().toList() : null); + onComplete.run(value != null ? Stream.of(value).withoutNulls().toList() : null); } @Override public void onFailed(Exception ex) { - callback.onFailed(ex); + onFailed.run(ex); } }); } @@ -68,7 +71,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { 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)); } }); } @@ -98,7 +101,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { }); } - public static void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) { + public void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) { + printColloStatic(printerName, testataColloToPrint, quantity, reportName, onComplete, onFailed); + } + + public static void printColloStatic(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) { if(BuildConfig.DEBUG) { onComplete.run(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index 1a812651..5feaf24e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -14,6 +14,8 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.rest.RESTBuilder; @@ -30,9 +32,10 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; +@Singleton public class SystemRESTConsumer extends _BaseRESTConsumer { - public static void processSql(String nativeSql, final Type clazz, RunnableArgs onComplete, RunnableArgs onFailed) { + public static void processSqlStatic(String nativeSql, final Type clazz, RunnableArgs onComplete, RunnableArgs onFailed) { NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO(); nativeSqlDTO.nativeSql = nativeSql; @@ -69,9 +72,17 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { }); } - public static void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback callback) { + public static void processSqlStatic(String nativeSql, final Type clazz, final ISimpleOperationCallback callback) { - processSql(nativeSql, clazz, data -> { + processSqlStatic(nativeSql, clazz, data -> { + callback.onSuccess((T) data); + }, callback::onFailed); + + } + + public void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback callback) { + + processSqlStatic(nativeSql, clazz, data -> { callback.onSuccess((T) data); }, callback::onFailed); @@ -180,7 +191,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { String sql = "SELECT TOP 1 * FROM azienda"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { if(onComplete != null) onComplete.run(value.get(0)); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java index e6203668..5af89f8f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java @@ -49,14 +49,28 @@ public class UtilityBarcode { return isPosizione; } + public static boolean isEtichettaArt(BarcodeScanDTO barcodeScanDTO) { + return isEan8(barcodeScanDTO) || isEan13(barcodeScanDTO) || isUPCA(barcodeScanDTO); + } + + + public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) { return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("2"); } + public static boolean isEan8(BarcodeScanDTO barcodeScanDTO) { + return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN8; + } + public static boolean isEan13(BarcodeScanDTO barcodeScanDTO) { return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN13; } + public static boolean isUPCA(BarcodeScanDTO barcodeScanDTO) { + return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.UPCA; + } + public static Integer getNumColloFromULAnonima(String barcode) { 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 e1095e65..5c52bef3 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 @@ -2,7 +2,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso; import android.content.Intent; import androidx.databinding.DataBindingUtil; -import androidx.appcompat.app.AppCompatActivity; + import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; @@ -113,7 +113,7 @@ public class AccettazioneOrdineInevasoActivity extends BaseActivity { public void startListaBancaliRegistratiActivity(ArrayList mtbColts){ - Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getRightReportNameByGestione(GestioneEnum.ACQUISTO)); + Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO)); this.startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java index 0cdcb81a..d3b8f11a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java @@ -59,7 +59,7 @@ public class OrdineAccettazioneInevasoRESTConsumerService { Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { if(onComplete != null) onComplete.run(value); 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 af22c660..96e830da 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 @@ -598,9 +598,9 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC try { - ReportManager.getRightReportNameByGestione(GestioneEnum.ACQUISTO, reportName -> { + ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO, reportName -> { - PrinterRESTConsumer.printCollo( + PrinterRESTConsumer.printColloStatic( value.get(0), currentMtbColt, 1, reportName, () -> { @@ -835,7 +835,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC MtbColt cloneMtbColt = (MtbColt) getColloRef().clone(); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); - cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); cloneMtbColt.getMtbColr().add(mtbColr); ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback() { 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 42f7fcd5..b23aea4f 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 @@ -105,11 +105,11 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked if(value.size() > 0) { try { - ReportManager.getRightReportNameByGestione(mtbColt.get().getGestioneEnum(), reportName -> { + ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> { reportName = mReportName != null ? mReportName : reportName; - PrinterRESTConsumer.printCollo(value.get(0), + PrinterRESTConsumer.printColloStatic(value.get(0), mtbColt.get(), 1, reportName, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoComponent.java index a122a78f..4ef7fc62 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoComponent.java @@ -4,7 +4,6 @@ import javax.inject.Singleton; import dagger.Component; import it.integry.integrywmsnative.MainApplicationComponent; -import it.integry.integrywmsnative.gest.spedizione_new.SpedizioneActivity; @Singleton @Component(modules = {PickingLiberoModule.class}, dependencies = {MainApplicationComponent.class}) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index 95b79974..a76bcfcb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -4,17 +4,15 @@ package it.integry.integrywmsnative.gest.picking_libero; import android.app.Dialog; import android.content.Context; import android.os.Bundle; - -import androidx.appcompat.widget.AppCompatTextView; -import androidx.core.content.ContextCompat; -import androidx.databinding.ObservableList; -import androidx.fragment.app.Fragment; - import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableList; +import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; @@ -158,9 +156,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, private void initRecyclerView() { mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false); - mBindings.pickingLiberoMainList.setHasFixedSize(true); - mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(getActivity())); DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); @@ -169,13 +165,13 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, } private void initAdapter() { - mAdapter = new PickingLiberoListAdapter(getActivity(), mViewModel.getCurrentMtbColt().getMtbColr()); + mAdapter = new PickingLiberoListAdapter(mViewModel.getCurrentMtbColt().getMtbColr()); mBindings.pickingLiberoMainList.setAdapter(mAdapter); } private void destroyAdapter() { - mAdapter = null; mBindings.pickingLiberoMainList.setAdapter(null); + mAdapter = null; } private RunnableArgs onScanSuccessful = data -> { @@ -218,7 +214,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, @Override public void onDestroyView() { -// mViewModel.closeLU(); + if(thereIsAnOpenedUL.get()) mViewModel.closeLU(); BarcodeManager.removeCallback(barcodeScannerIstanceID); if (mOnPreDestroy != null) mOnPreDestroy.run(); super.onDestroyView(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 7da7bfdf..63ad3d3d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -447,7 +447,7 @@ public class PickingLiberoViewModel { MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); - cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { @@ -590,16 +590,6 @@ public class PickingLiberoViewModel { void onArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort); - /*void onLUPrintRequest(RunnableArgs onComplete); - - void onLUPrintError(Exception ex, Runnable onComplete); - - void onFilterApplied(String newValue); - - void onFilterRemoved(); - - void onMtbColrDeleteRequest(RunnableArgs onComplete); -*/ void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java index e3c1b699..c32582f2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java @@ -1,34 +1,30 @@ package it.integry.integrywmsnative.gest.picking_libero.core; -import android.content.Context; import android.view.LayoutInflater; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; -import java.util.ArrayList; - import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ListaPickingLiberoListModelBinding; -import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentListAdapter; -public class PickingLiberoListAdapter extends RecyclerView.Adapter{ +public class PickingLiberoListAdapter extends ExtendedRecyclerView { - private Context mContext; - private ArrayList mDataset; private OnItemClickListener mOnItemClickListener; - public class ViewHolder extends RecyclerView.ViewHolder { + public PickingLiberoListAdapter(ObservableArrayList myDataset) { + super(myDataset); + } + + public static class ViewHolder extends RecyclerView.ViewHolder { protected ListaPickingLiberoListModelBinding mViewDataBinding; @@ -59,24 +55,12 @@ public class PickingLiberoListAdapter extends RecyclerView.Adapter myDataset) { - mContext = context; - mDataset = myDataset; - - myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() { - @Override - public void onChanged(ObservableList sender) { - notifyDataSetChanged(); - } - }); - } - @Override public PickingLiberoListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view ListaPickingLiberoListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_picking_libero_list_model, parent, false); - return new PickingLiberoListAdapter.ViewHolder(viewDataBinding); + return new ViewHolder(viewDataBinding); } @Override @@ -93,16 +77,6 @@ public class PickingLiberoListAdapter extends RecyclerView.Adapter()); cloneMtbColt.getMtbColr().add(mtbColr); ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { @@ -468,9 +468,9 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) { - ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { - PrinterRESTConsumer.printCollo( + PrinterRESTConsumer.printColloStatic( printerName, mtbColtToPrint, 1, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneHelper.java index f98f8038..1359cbbc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneHelper.java @@ -181,7 +181,7 @@ public class ProdOrdineLavorazioneHelper { baseSql += "( " + whereCond + ")"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { if(onComplete != null) onComplete.run(value); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java index 951347b5..4992573e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java @@ -331,9 +331,9 @@ public class ProdRecuperoMaterialeViewModel { private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) { - ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { - PrinterRESTConsumer.printCollo( + PrinterRESTConsumer.printColloStatic( printerName, mtbColtToPrint, 1, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeComponent.java new file mode 100644 index 00000000..65ac76fd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze; + +import javax.inject.Singleton; + +import dagger.Component; +import it.integry.integrywmsnative.MainApplicationComponent; + +@Singleton +@Component(modules = {RettificaGiacenzeModule.class}, dependencies = {MainApplicationComponent.class}) +public interface RettificaGiacenzeComponent { + + void inject(RettificaGiacenzeFragment rettificaGiacenzeFragment); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 814b4139..b42251ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -1,37 +1,87 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze; +import android.app.Dialog; import android.content.Context; import android.content.res.ColorStateList; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; +import android.content.res.Resources; import android.os.Bundle; -import androidx.fragment.app.Fragment; +import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; -import com.google.android.material.bottomsheet.BottomSheetBehavior; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import com.google.android.material.textfield.TextInputLayout; +import com.tfb.fbtoast.FBToast; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding; -import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper; -import it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel.RettificaGiacenzeViewModel; +import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter; +import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter; +import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.InvalidPesoKGException; +import it.integry.integrywmsnative.gest.spedizione_new.model.PickedQuantityDTO; +import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; +import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; +import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU; +import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; -public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment { +public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment, RettificaGiacenzeViewModelNEW.Listener, BottomSheetMtbColrEditView.Listener { - private RettificaGiacenzeHelper mHelper; private FragmentMainRettificaGiacenzeBinding mBinding = null; - private RettificaGiacenzeViewModel mRettificaGiacenzeViewModel = null; + @Inject + RettificaGiacenzeViewModelNEW mViewModel; + + public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false); + public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(false); + + public ObservableField currentMtbColtObs = new ObservableField<>(); + + private RettificaGiacenzeMainListAdapter mAdapter; private int barcodeScannerIstanceID = -1; + private Dialog mCurrentProgress; + public RettificaGiacenzeFragment() { // Required empty public constructor } @@ -52,32 +102,82 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false); - mRettificaGiacenzeViewModel = new RettificaGiacenzeViewModel(); + RettificaGiacenzeComponent rettificaGiacenzeComponent = DaggerRettificaGiacenzeComponent.builder() + .mainApplicationModule(MainApplication.appModule) + .mainApplicationComponent(MainApplication.appComponent) + .build(); + + rettificaGiacenzeComponent.inject(this); + + mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); mBinding.setView(this); - mBinding.setViewmodel(mRettificaGiacenzeViewModel); + mBinding.setViewmodel(mViewModel); - init(); + + this.initVars(); + this.initBarcodeReader(); + this.initBottomSheet(); + this.initRecyclerView(); + + this.init(); return mBinding.getRoot(); } - private void init() { - mHelper = new RettificaGiacenzeHelper(getActivity()); - mRettificaGiacenzeViewModel.init(getActivity(), mBinding, mHelper); + private void initVars() { + thereIsAnOpenedUL.addOnPropertyChangedCallback(() -> { + thereIsntAnOpenedUL.set(!thereIsAnOpenedUL.get()); + }); + } + + private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(mRettificaGiacenzeViewModel.onScanSuccessfull) + .setOnScanSuccessfull(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); + } - mHelper.loadListaFornitori(listaFornitori -> { - mRettificaGiacenzeViewModel.setupSearchFornitori(listaFornitori); + private void initBottomSheet() { + mBinding.bottomSheetMtbColrEdit.setListener(this); + mBinding.bottomSheetMtbColrEdit.init(mBinding.bottomSheetMtbColrEdit, mBinding.bottomSheetMtbColrEditBackground); + } + + private void initRecyclerView() { + mBinding.rettificaGiacenzeMainList.setNestedScrollingEnabled(false); + mBinding.rettificaGiacenzeMainList.setHasFixedSize(true); + mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(getActivity())); + + DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); + mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator); + } + + + private void initAdapter() { + mAdapter = new RettificaGiacenzeMainListAdapter(mViewModel.getCurrentMtbColt().getMtbColr()); + mAdapter.setEmptyView(mBinding.rettificaGiacenzeEmptyView); + + this.mAdapter.setOnItemClickListener(clickedMtbColr -> { + mBinding.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr); + mBinding.bottomSheetMtbColrEdit.expand(); }); + mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter); + } + private void destroyAdapter() { + mBinding.rettificaGiacenzeMainList.setAdapter(null); + mAdapter = null; + } + + private void init() { mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> { setUIToForn(); }); + mBinding.inputCodArtDescrForn.setOnFocusChangeListener((v, hasFocus) -> { setUIToForn(); }); @@ -86,7 +186,10 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme setUIToIntArt(); }); - mRettificaGiacenzeViewModel.openLU(); + mViewModel.init( + SettingsManager.i().getUser().getFullname(), + SettingsManager.iDB().getDefaultCausaleRettificaGiacenze(), + SettingsManager.i().getUserSession().getDepo().getCodMdep()); } @@ -97,7 +200,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme @Override public void onDestroyView() { - mRettificaGiacenzeViewModel.closeLU(false, false); + mViewModel.closeLU(false); BarcodeManager.removeCallback(barcodeScannerIstanceID); super.onDestroyView(); } @@ -108,6 +211,32 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme } + private RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.openProgress(); + + this.mViewModel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + this.closeProgress(); + }); + }; + + + + private void openProgress() { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + } + + private void closeProgress() { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + } + public void setUIToForn() { mBinding.rettificaGiacenzeFornCheckBox.setChecked(true); @@ -117,8 +246,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme mBinding.rettificaGiacenzeArtIntCheckBox.setChecked(false); mBinding.rettificaGiacenzeArtIntLayout.setBackground(null); mBinding.rettificaGiacenzeArtIntLayout.setBackgroundTintList(null); - - } @@ -130,7 +257,261 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme mBinding.rettificaGiacenzeFornCheckBox.setChecked(false); mBinding.rettificaGiacenzeFornLayout.setBackground(null); mBinding.rettificaGiacenzeFornLayout.setBackgroundTintList(null); + } + + @Override + public void onLoadingStarted() { + BarcodeManager.disable(); + this.openProgress(); + } + + @Override + public void onLoadingEnded() { + this.closeProgress(); + BarcodeManager.enable(); + } + + @Override + public void onFornitoriLoaded(ArrayList fornitoriList) { + AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(getActivity(), fornitoriList); + mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter); + mBinding.autoCompleteFornitori.setDropDownWidth(getActivity().getResources().getDisplayMetrics().widthPixels); + + mBinding.inputCodArtDescrForn.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + resetAllError(); + + if (UtilityString.isNullOrEmpty(mBinding.autoCompleteFornitori.getText().toString())) { + setError(mBinding.autoCompleteFornitoriLayout, getActivity().getResources().getText(R.string.error).toString()); + return true; + } + + if (UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrForn.getText().toString())) { + setError(mBinding.layoutCodArtDescrForn, getActivity().getResources().getText(R.string.error).toString()); + return true; + } + + mViewModel.searchArtFor( + mBinding.autoCompleteFornitori.getText().toString(), + mBinding.inputCodArtDescrForn.getText().toString()); + return true; + } + return false; + }); + mBinding.inputCodArtDescrInt.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + resetAllError(); + + if (UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrInt.getText().toString())) { + setError(mBinding.layoutCodArtDescrInt, getActivity().getResources().getText(R.string.error).toString()); + return true; + } + + mViewModel.searchArtInt(mBinding.inputCodArtDescrInt.getText().toString(), null); + return true; + } + return false; + }); + } + + @Override + public void onArtListLoaded(ArrayList artList) { + DialogChooseArtFromListaArts.make(getActivity(), artList, mtbAart -> mViewModel.dispatchArt(mtbAart, null)).show(); + } + + @Override + public void onLUOpenRequest(RunnableArgss onComplete) { + DialogScanOrCreateLU.make(getActivity(), true, false, (mtbColt, created) -> { + if (mtbColt == null) { + ((IPoppableActivity) getActivity()).pop(); + } else { + onComplete.run(mtbColt, created); + } + }).show(); + } + + @Override + public void onLUOpened(MtbColt mtbColt) { + initAdapter(); + + this.currentMtbColtObs.set(mtbColt); + thereIsAnOpenedUL.set(true); + } + + @Override + public void onLUClosed() { + destroyAdapter(); + + this.currentMtbColtObs.set(null); + thereIsAnOpenedUL.set(false); + + + if(getActivity() != null) ((IPoppableActivity) getActivity()).pop(); + } + + @Override + public void onMtbColrDeleteRequest(RunnableArgs onComplete) { + String text = getResources().getString(R.string.alert_delete_mtb_colr); + DialogSimpleMessageHelper.makeWarningDialog(getActivity(), + new SpannableString(text), + null, + () -> onComplete.run(true), + () -> onComplete.run(false) + ).show(); + } + + @Override + public void onError(Exception ex) { + this.closeProgress(); + + if (ex instanceof InvalidPesoKGException) { + UtilityToast.showToast(ex.getMessage()); + } else { + UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + } + + BarcodeManager.enable(); + } + + @Override + public void onItemDispatched( + PickingObjectDTO pickingObjectDTO, + MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaToBeTaken, + BigDecimal totalNumCnfToBeTaken, + BigDecimal qtaCnfToBeTaken, + String partitaMag, + Date dataScad, + boolean canOverflowOrderQuantity, + boolean canPartitaMagBeChanged, + boolean canLUBeClosed, + RunnableArgss onComplete) { + + DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() + .setMtbAart(mtbAart) + .setInitialNumCnf(initialNumCnf) + .setInitialQtaCnf(initialQtaCnf) + .setInitialQtaTot(initialQtaTot) + .setTotalQtaToBeTaken(totalQtaToBeTaken) + .setTotalNumCnfToBeTaken(totalNumCnfToBeTaken) + .setQtaCnfToBeTaken(qtaCnfToBeTaken) + .setPartitaMag(partitaMag) + .setDataScad(dataScad) + .setCanOverflowOrderQuantity(canOverflowOrderQuantity) + .setCanPartitaMagBeChanged(canPartitaMagBeChanged) + .setCanLUBeClosed(canLUBeClosed); + + DialogInputQuantityV2 + .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() + .setNumCnf(resultDTO.getNumCnf()) + .setQtaCnf(resultDTO.getQtaCnf()) + .setQtaTot(resultDTO.getQtaTot()) + .setPartitaMag(resultDTO.getPartitaMag()) + .setDataScad(resultDTO.getDataScad()); + + this.openProgress(); + onComplete.run(pickedQuantityDTO, shouldCloseLU); + }, () -> { + this.closeProgress(); + }) + .show(getActivity().getSupportFragmentManager(), "tag"); + } + + @Override + public void onRowSaved() { + FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + } + + + private void setError(TextInputLayout textInputLayout, String message) { + textInputLayout.setErrorEnabled(true); + textInputLayout.setError(message); + textInputLayout.setErrorIconDrawable(null); + } + + private void resetAllError() { + resetError(mBinding.autoCompleteFornitoriLayout); + resetError(mBinding.layoutCodArtDescrForn); + resetError(mBinding.layoutCodArtDescrInt); + } + + private void resetTexts() { + mBinding.inputCodArtDescrForn.setText(""); + mBinding.inputCodArtDescrInt.setText(""); + } + + private void resetError(TextInputLayout textInputLayout) { + textInputLayout.setErrorEnabled(false); + textInputLayout.setError(null); + } + + @Override + public void onMtbColrEdit(MtbColr mtbColr) { + this.mViewModel.dispatchRowEdit(mtbColr); + } + + @Override + public void onMtbColrDelete(MtbColr mtbColr) { + this.mViewModel.deleteRow(mtbColr); + } + + @Override + public void onLUSuccessullyPrinted() { + Resources res = getResources(); + String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); + DialogSimpleMessageHelper.makeSuccessDialog(getActivity(), res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + } + + @Override + public void onLUPrintRequest(RunnableArgs onComplete) { + DialogSimpleMessageHelper.makeInfoDialog( + getActivity(), + getActivity().getResources().getString(R.string.action_print_ul), + new SpannableString(getActivity().getResources().getString(R.string.ask_print_message)), + null, + () -> onComplete.run(true), + () -> onComplete.run(false)).show(); + } + + @Override + public void onLUPrintError(Exception ex, Runnable onComplete) { + DialogSimpleMessageHelper.makeErrorDialog( + getActivity(), + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete).show(); + } + + @Override + public void onLUPositionChangeRequest(RunnableArgss onComplete) { + DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> { + switch (result) { + case YES: + DialogAskPositionOfLU.makeBase(getActivity(), mViewModel.getCurrentMtbColt(), false, (status, mtbDepoPosizione) -> { + if (status == DialogConsts.Results.ABORT) { + onComplete.run(false, null); + } else { + if (mtbDepoPosizione != null) { + onComplete.run(true, mtbDepoPosizione); + } else { + onComplete.run(true, null); + } + } + }, this::onError).show(); + break; + + case NO: + onComplete.run(false, null); + break; + } + }).show(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java new file mode 100644 index 00000000..49a4928f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeModule.java @@ -0,0 +1,36 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.MainApplicationModule; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoViewModel; +import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer; + +@Module(includes = {MainApplicationModule.class}) +public class RettificaGiacenzeModule { + + + @Provides + @Singleton + RettificaGiacenzeRESTConsumer providesRettificaGiacenzeRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + return new RettificaGiacenzeRESTConsumer(systemRESTConsumer); + } + + + @Provides + @Singleton + RettificaGiacenzeViewModelNEW providesRettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, + PrinterRESTConsumer printerRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + RettificaGiacenzeRESTConsumer rettificaGiacenzeRESTConsumer) { + return new RettificaGiacenzeViewModelNEW(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer, rettificaGiacenzeRESTConsumer); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModelNEW.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModelNEW.java new file mode 100644 index 00000000..63791a56 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModelNEW.java @@ -0,0 +1,741 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze; + +import androidx.databinding.ObservableArrayList; + +import com.annimon.stream.Stream; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException; +import it.integry.integrywmsnative.core.exception.NoArtsFoundException; +import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; +import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPositionListener; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener; +import it.integry.integrywmsnative.core.model.CommonModelConsts; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbCols; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.report.ReportManager; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer; +import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.spedizione_new.model.PickDataDTO; +import it.integry.integrywmsnative.gest.spedizione_new.model.PickedQuantityDTO; +import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; + +public class RettificaGiacenzeViewModelNEW { + + public MtbColt mCurrentMtbColt = null; + + private final ArticoloRESTConsumer mArticoloRESTConsumer; + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + private final PrinterRESTConsumer mPrinterRESTConsumer; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final RettificaGiacenzeRESTConsumer mRettificaGiacenzeRESTConsumer; + + private RettificaGiacenzeViewModelNEW.Listener mListener; + + private String mCurrentUser; + private String mDefaultCausale; + private String mCurrentCodMdep; + private boolean mIsCreatedLU; + + @Inject + public RettificaGiacenzeViewModelNEW(ArticoloRESTConsumer articoloRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, + PrinterRESTConsumer printerRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + RettificaGiacenzeRESTConsumer rettificaGiacenzeRESTConsumer) { + this.mArticoloRESTConsumer = articoloRESTConsumer; + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + this.mPrinterRESTConsumer = printerRESTConsumer; + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.mRettificaGiacenzeRESTConsumer = rettificaGiacenzeRESTConsumer; + } + + + public void init(String currentUser, String defaultCausale, String currentCodMdep) { + this.mCurrentUser = currentUser; + this.mDefaultCausale = defaultCausale; + this.mCurrentCodMdep = currentCodMdep; + + + this.sendOnLoadingStarted(); + + this.mRettificaGiacenzeRESTConsumer.loadListaFornitori(fornitori -> { + this.sendOnFornitoriListLoaded(fornitori); + + this.sendOnLoadingEnded(); + + this.sendOnLUOpenRequest((mtbColt, created) -> { + if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO) { + this.sendError(new InvalidLUGestioneException(GestioneEnum.ACQUISTO)); + } else { + this.mCurrentMtbColt = mtbColt; + this.mIsCreatedLU = created; + + this.sendLUOpened(mtbColt); + } + }); + }, this::sendError); + } + + + public RettificaGiacenzeViewModelNEW setListener(RettificaGiacenzeViewModelNEW.Listener listener) { + this.mListener = listener; + return this; + } + + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { +// if (UtilityBarcode.isEanPeso(barcodeScanDTO)) { +// //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) +// this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); +// +// } else + if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) + this.executeEtichettaEan128(barcodeScanDTO, onComplete); + + } else if(UtilityBarcode.isEtichettaArt(barcodeScanDTO)){ + this.searchArtInt(barcodeScanDTO.getStringValue(), onComplete); + + } else { + onComplete.run(); + } + } + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + + String barcodeProd = null; + + if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc; + if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin; + if (!UtilityString.isNullOrEmpty(ean128Model.Content)) + barcodeProd = ean128Model.Content; + + + if (!UtilityString.isNullOrEmpty(barcodeProd)) { + + if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) { + barcodeProd = barcodeProd.substring(1); + } + + PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model); + this.loadArticolo(barcodeProd, pickDataDTO, onComplete); + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + onComplete.run(); + } + }, this::sendError); + } + + private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { + if (barcodeProd.length() == 14) { + barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); + } + + this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + if(onComplete != null) onComplete.run(); + + if (mtbAartList != null && mtbAartList.size() > 0) { + this.dispatchArt(mtbAartList.get(0), pickData); + } else { + this.sendError(new NoResultFromBarcodeException()); + } + + }, this::sendError); + } + + public void searchArtFor(String codAlis, String queryText) { + this.sendOnLoadingStarted(); + + mRettificaGiacenzeRESTConsumer.searchArtForn(codAlis, queryText, listaArts -> { + this.sendOnLoadingEnded(); + + List mtbAarts = Stream.of(listaArts).map(x -> (MtbAart) x).toList(); + dispatchArts(mtbAarts); + }, this::sendError); + } + + public void searchArtInt(String queryText, Runnable onComplete) { + this.sendOnLoadingStarted(); + + mRettificaGiacenzeRESTConsumer.searchArtInt(queryText, listaArts -> { + this.sendOnLoadingEnded(); + + dispatchArts(listaArts); + + if(onComplete != null) onComplete.run(); + }, this::sendError); + } + + + private void dispatchArts(List artsList) { + if (artsList == null || artsList.size() == 0) { + this.sendError(new NoArtsFoundException()); + return; + } + + if (artsList.size() == 1) { + dispatchArt(artsList.get(0), null); + } else { + this.sendOnArtListLoaded(new ArrayList<>(artsList)); + } + } + + + public void dispatchArt(MtbAart mtbAart, PickDataDTO pickDataDTO) { + PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() + .setMtbAart(mtbAart) + .setTempPickData(pickDataDTO); + + BigDecimal numCnfDaPrelevare = null; + BigDecimal qtaColDaPrelevare = null; + BigDecimal qtaCnfDaPrelevare = null; + + BigDecimal initialNumCnf = null; + BigDecimal initialQtaCnf = null; + BigDecimal initialQtaTot = null; + + String partitaMag = null; + Date dataScad = null; + + boolean canPartitaMagBeChanged = true; + + if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) { + //Oppure le info del barcode scansionato + PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO(); + + qtaColDaPrelevare = manualPickDTO.getQtaTot(); + numCnfDaPrelevare = manualPickDTO.getNumCnf(); + + if (mtbAart.isFlagQtaCnfFissaBoolean()) { + qtaCnfDaPrelevare = mtbAart.getQtaCnf(); + } else if (qtaColDaPrelevare != null && numCnfDaPrelevare != null) { + qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + } + + + if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) { + numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); + qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + } else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) { + qtaCnfDaPrelevare = mtbAart.getQtaCnf(); + qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare); + } + + if (manualPickDTO.getMtbPartitaMag() != null) { + partitaMag = manualPickDTO.getMtbPartitaMag().getPartitaMag(); + dataScad = manualPickDTO.getMtbPartitaMag().getDataScadD(); + canPartitaMagBeChanged = false; + } + } else { + initialNumCnf = BigDecimal.ONE; + initialQtaCnf = mtbAart.getQtaCnf(); + initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf); + } + + if (numCnfDaPrelevare == null && qtaColDaPrelevare == null && initialNumCnf == null && initialQtaTot == null) { + initialNumCnf = BigDecimal.ONE; + initialQtaCnf = mtbAart.getQtaCnf(); + initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf); + } + + this.sendOnItemDispatched( + pickingObjectDTO, + pickingObjectDTO.getMtbAart(), + initialNumCnf, + initialQtaCnf, + initialQtaTot, + qtaColDaPrelevare, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + partitaMag, + dataScad, + false, + canPartitaMagBeChanged, + true, + (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } + + + public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + this.sendOnLoadingStarted(); + + final MtbColr mtbColr = new MtbColr() + .setCodMart(pickingObjectDTO.getMtbAart().getCodMart()) + .setPartitaMag(partitaMag) + .setDataScadPartita(dataScad) + .setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa()) + .setDatetimeRow(UtilityDate.getDateInstance()) + .setCausale(MtbColr.Causale.RETTIFICA) + .setUtente(mCurrentUser); + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + if (!mIsCreatedLU) { + mtbColr + .setDataCollo(mCurrentMtbColt.getDataColloS()) + .setNumCollo(mCurrentMtbColt.getNumCollo()) + .setGestione(mCurrentMtbColt.getGestione()) + .setSerCollo(mCurrentMtbColt.getSerCollo()); + + + mColliMagazzinoRESTConsumer.creaRettificaCollo(mtbColr, + numCnf, + qtaTot, + () -> { + mtbColr + .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) + .setMtbAart(pickingObjectDTO.getMtbAart()); + + mCurrentMtbColt.getMtbColr().add(mtbColr); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + if (shouldCloseLU) closeLU(false); + }, this::sendError); + } else { + mtbColr + .setQtaCol(qtaTot) + .setQtaCnf(qtaCnf) + .setNumCnf(numCnf); + + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); + + cloneMtbColt.getMtbColr().add(mtbColr); + + mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + mtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(0).getRiga()) + .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) + .setMtbAart(pickingObjectDTO.getMtbAart()); + + mCurrentMtbColt.getMtbColr().add(mtbColr); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + if (shouldCloseLU) closeLU(false); + }, this::sendError); + } + } + + + public void closeLU(boolean saveCausale) { + if (mCurrentMtbColt == null) return; + + this.sendOnLoadingStarted(); + + this.mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> { + + if (canBeDeleted) { + deleteLU(() -> { + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); + } else { + + Runnable saveAction = () -> { + this.mColliMagazzinoRESTConsumer.updateDataFine( + mCurrentMtbColt, () -> { + this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { + + if(shouldChangePosition) { + this.savePosizione(mtbDepoPosizione, () -> { + postSaveBehaviour(); + }); + } else { + postSaveBehaviour(); + } + + }); + }, this::sendError); + }; + + if (!UtilityString.isNullOrEmpty(mDefaultCausale) && saveCausale) { + this.saveCausaleRettificaGiacenze(saveAction); + } else { + saveAction.run(); + } + + } + + }, this::sendError); + } + + + + private void saveCausaleRettificaGiacenze(Runnable onComplete) { + final MtbCols mtbCols = new MtbCols() + .setCausale(this.mDefaultCausale); + mtbCols.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + cloneMtbColt.setMtbColr(null); + + cloneMtbColt.setMtbCols(new ArrayList<>()); + cloneMtbColt.getMtbCols().add(mtbCols); + + this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, mtbColt -> onComplete.run(), this::sendError); + } + + private void savePosizione(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) { + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + cloneMtbColt.setMtbColr(null); + cloneMtbColt.setPosizione(mtbDepoPosizione != null ? mtbDepoPosizione.getPosizione() : CommonModelConsts.ENTITY_NULL_STRING); + + this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, mtbColt -> onComplete.run(), this::sendError); + } + + private void postSaveBehaviour() { + if(!mCurrentMtbColt.getDisablePrint()) { + printLU(() -> { + this.mCurrentMtbColt = null; + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); + } else { + this.mCurrentMtbColt = null; + this.sendLUClosed(); + this.sendOnLoadingEnded(); + } + } + + private void deleteLU(Runnable onComplete) { + mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> { + this.mCurrentMtbColt = null; + + if (onComplete != null) onComplete.run(); + }, this::sendError); + } + + private void printLU(Runnable onComplete) { + this.sendLUPrintRequest(shouldPrint -> { + + if(!shouldPrint) { + onComplete.run(); + } else { + this.mPrinterRESTConsumer.getAvailablePrinters(this.mCurrentCodMdep, printerList -> { + + if (printerList == null || printerList.size() == 0) { + this.sendError(new NoPrintersFoundException()); + onComplete.run(); + return; + } + + String reportName = ReportManager.getReportNameLUFromGestione(mCurrentMtbColt.getGestioneEnum()); + + this.mPrinterRESTConsumer.printCollo(printerList.get(0), mCurrentMtbColt, 1, reportName, () -> { + this.sendLUSuccessfullyPrinted(); + onComplete.run(); + }, ex -> this.sendLUPrintError(ex, onComplete)); + + }, this::sendError); + } + }); + } + + public void dispatchRowEdit(MtbColr mtbColrToUpdate) { + + final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() + .setMtbAart(mtbColrToUpdate.getMtbAart()); + + this.sendOnItemDispatched( + pickingObjectDTO, + pickingObjectDTO.getMtbAart(), + mtbColrToUpdate.getNumCnf(), + mtbColrToUpdate.getQtaCnf(), + mtbColrToUpdate.getQtaCol(), + null, + null, + null, + mtbColrToUpdate.getPartitaMag(), + mtbColrToUpdate.getDataScadPartitaD(), + false, + false, + true, + (pickedQuantityDTO, shouldCloseLU) -> { + + this.saveEditedRow(mtbColrToUpdate, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } + + private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + + this.sendOnLoadingStarted(); + + if(!mIsCreatedLU) { + + this.mColliMagazzinoRESTConsumer.creaRettificaCollo( + mtbColrToUpdate, + numCnf, + qtaTot, + () -> { + mtbColrToUpdate + .setQtaCol(qtaTot) + .setQtaCnf(qtaCnf) + .setNumCnf(numCnf) + .setOperation(CommonModelConsts.OPERATION.NO_OP); + + this.sendOnRowSaved(); + }, + this::sendError + ); + + } else { + + MtbColt mtbColt = new MtbColt() + .setNumCollo(mtbColrToUpdate.getNumCollo()) + .setDataCollo(mtbColrToUpdate.getDataColloS()) + .setSerCollo(mtbColrToUpdate.getSerCollo()) + .setGestione(mtbColrToUpdate.getGestione()) + .setMtbColr(new ObservableArrayList<>()); + mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + + final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone(); + mtbColr.setOperation(CommonModelConsts.OPERATION.UPDATE); + mtbColr + .setNumCnf(numCnf) + .setQtaCnf(qtaCnf) + .setQtaCol(qtaTot) + .setPartitaMag(partitaMag) + .setDataScadPartita(dataScad) + .setUtente(SettingsManager.i().user.fullname) + .setCausale(MtbColr.Causale.RETTIFICA) + .setDatetimeRow(UtilityDate.getDateInstance()); + + mtbColt.getMtbColr().add(mtbColr); + + this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> { + + mtbColr.setNumCnf(numCnf) + .setQtaCnf(qtaCnf) + .setQtaCol(qtaTot); + + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate); + this.mCurrentMtbColt.getMtbColr().add(mtbColr); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + }, this::sendError); + } + } + + public void deleteRow(MtbColr mtbColrToDelete) { + this.sendMtbColrDeleteRequest(shouldDelete -> { + if (shouldDelete) { + this.sendOnLoadingStarted(); + + if(mIsCreatedLU) { + MtbColt mtbColt = new MtbColt() + .setNumCollo(mtbColrToDelete.getNumCollo()) + .setDataCollo(mtbColrToDelete.getDataColloS()) + .setSerCollo(mtbColrToDelete.getSerCollo()) + .setGestione(mtbColrToDelete.getGestione()) + .setMtbColr(new ObservableArrayList<>()); + mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + + MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone(); + + mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE); + mtbColt.getMtbColr().add(mtbColr); + + this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> { + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + }, this::sendError); + } else { + this.mColliMagazzinoRESTConsumer.creaRettificaCollo( + mtbColrToDelete, + BigDecimal.ZERO, + BigDecimal.ZERO, + () -> { + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + this.sendOnRowSaved(); + }, + this::sendError + ); + } + } + }); + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendOnFornitoriListLoaded(ArrayList fornitoriList) { + if (this.mListener != null) mListener.onFornitoriLoaded(fornitoriList); + } + + + private void sendOnArtListLoaded(ArrayList artList) { + if (this.mListener != null) mListener.onArtListLoaded(artList); + } + + private void sendOnLUOpenRequest(RunnableArgss onComplete) { + if (this.mListener != null) mListener.onLUOpenRequest(onComplete); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + private void sendLUOpened(MtbColt mtbColt) { + if (this.mListener != null) mListener.onLUOpened(mtbColt); + } + + private void sendLUClosed() { + if (this.mListener != null) mListener.onLUClosed(); + } + + private void sendMtbColrDeleteRequest(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete); + } + + private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, + MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaToBeTaken, + BigDecimal totalNumCnfToBeTaken, + BigDecimal qtaCnfToBeTaken, + String partitaMag, + Date dataScad, + boolean canOverflowOrderQuantity, + boolean canPartitaMagBeChanged, + boolean canLUBeClosed, + RunnableArgss onComplete) { + if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, + mtbAart, + initialNumCnf, + initialQtaCnf, + initialQtaTot, + totalQtaToBeTaken, + totalNumCnfToBeTaken, + qtaCnfToBeTaken, + partitaMag, + dataScad, + canOverflowOrderQuantity, + canPartitaMagBeChanged, + canLUBeClosed, + onComplete); + } + + private void sendOnRowSaved() { + if (this.mListener != null) mListener.onRowSaved(); + } + + private void sendLUSuccessfullyPrinted() { + if (this.mListener != null) mListener.onLUSuccessullyPrinted(); + } + + private void sendLUPrintRequest(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onLUPrintRequest(onComplete); + } + + private void sendLUPrintError(Exception ex, Runnable onComplete) { + if (this.mListener != null) mListener.onLUPrintError(ex, onComplete); + } + + private void sendLUPositionChangeRequest(RunnableArgss onComplete) { + if (this.mListener != null) mListener.onLUPositionChangeRequest(onComplete); + } + + public interface Listener extends ILUPrintListener, ILUPositionListener { + void onLoadingStarted(); + + void onLoadingEnded(); + + void onFornitoriLoaded(ArrayList fornitoriList); + + void onArtListLoaded(ArrayList artList); + + void onLUOpenRequest(RunnableArgss onComplete); + + void onLUOpened(MtbColt mtbColt); + + void onLUClosed(); + + void onMtbColrDeleteRequest(RunnableArgs onComplete); + + void onError(Exception ex); + + void onItemDispatched(PickingObjectDTO pickingObjectDTO, + MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaToBeTaken, + BigDecimal totalNumCnfToBeTaken, + BigDecimal qtaCnfToBeTaken, + String partitaMag, + Date dataScad, + boolean canOverflowOrderQuantity, + boolean canPartitaMagBeChanged, + boolean canLUBeClosed, + RunnableArgss onComplete); + + void onRowSaved(); + } + + public MtbColt getCurrentMtbColt() { + return mCurrentMtbColt; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java index a551efec..4cf2ae1d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeHelper.java @@ -1,7 +1,6 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.core; import android.app.Dialog; -import android.app.ProgressDialog; import android.content.Context; import com.google.gson.reflect.TypeToken; @@ -28,28 +27,6 @@ public class RettificaGiacenzeHelper { } - public void loadListaFornitori(RunnableArgs> onComplete) { - final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); - //progress.show(); - - String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'"; - - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - progress.dismiss(); - - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - UtilityExceptions.defaultException(mContext, ex, progress); - } - }); - } - public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " + @@ -62,7 +39,7 @@ public class RettificaGiacenzeHelper { Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { if(onComplete != null) onComplete.run(value); @@ -91,7 +68,7 @@ public class RettificaGiacenzeHelper { "OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { if(onComplete != null) onComplete.run(value); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java new file mode 100644 index 00000000..9ec86f5e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/RettificaGiacenzeRESTConsumer.java @@ -0,0 +1,101 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze.core; + +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbAartWithFornitore; +import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityDB; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; + +@Singleton +public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { + + private final SystemRESTConsumer mSystemRestConsumer; + + public RettificaGiacenzeRESTConsumer(SystemRESTConsumer systemRestConsumer) { + mSystemRestConsumer = systemRestConsumer; + } + + public void loadListaFornitori(RunnableArgs> onComplete, RunnableArgs onFailed) { + String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'"; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + + mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(ArrayList value) { + if(onComplete != null) onComplete.run(value); + } + + @Override + public void onFailed(Exception ex) { + onFailed.run(ex); + } + }); + } + + + public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs> onComplete, RunnableArgs onFailed) { + String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " + + " WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + + " AND mtb_lisa.cod_mart = mtb_aart.cod_mart " + + " AND mtb_lisa.cod_mart = mtb_part.cod_mart " + + " AND mtb_part.cod_mdep = '01' " + + " AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " + + " ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa"; + + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(ArrayList value) { + if(onComplete != null) onComplete.run(value); + } + + @Override + public void onFailed(Exception ex) { + if(onFailed != null) onFailed.run(ex); + } + }); + } + + + public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs> onComplete, RunnableArgs onFailed) { + String sql = "SELECT DISTINCT mtb_aart.* " + + "FROM mtb_aart " + + "LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " + + "WHERE CASE" + + " WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " + + " ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " + + "END LIKE '%' + CASE " + + " WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " + + " ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" + + " END " + + "OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " + + "OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'"; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(ArrayList value) { + if(onComplete != null) onComplete.run(value); + } + + @Override + public void onFailed(Exception ex) { + if(onFailed != null) onFailed.run(ex); + } + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java index 59ff4787..a7b49592 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java @@ -1,16 +1,14 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter; -import android.content.Context; -import androidx.databinding.DataBindingUtil; -import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; -import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; @@ -18,13 +16,13 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ListaRettificaGiacenzeModelBinding; -public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter { +public class RettificaGiacenzeMainListAdapter extends ExtendedRecyclerView { - protected Context mContext; - protected ObservableArrayList mDataset; - private View mEmptyView; + private OnItemClickListener mOnItemClickListener; - private IRecyclerItemClicked mOnItemClickListener; + public RettificaGiacenzeMainListAdapter(ObservableArrayList myDataset) { + super(myDataset); + } public static class ViewHolder extends RecyclerView.ViewHolder { protected ListaRettificaGiacenzeModelBinding mViewDataBinding; @@ -41,16 +39,6 @@ public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter myDataset, IRecyclerItemClicked onItemClickListener, View emptView) { - mContext = context; - mDataset = myDataset; - mEmptyView = emptView; - mOnItemClickListener = onItemClickListener; - - myDataset.addOnListChangedCallback(onListChangedCallback); - - checkIfEmpty(); - } @Override public RettificaGiacenzeMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @@ -80,60 +68,21 @@ public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter { if(mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(mtbColr, position); + mOnItemClickListener.onItemClick(holder.mViewDataBinding.getMtbColr()); } }); + + holder.mViewDataBinding.executePendingBindings(); } - @Override - public void onViewRecycled(RettificaGiacenzeMainListAdapter.ViewHolder holder) { - super.onViewRecycled(holder); + + public RettificaGiacenzeMainListAdapter setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.mOnItemClickListener = onItemClickListener; + return this; } - @Override - public int getItemCount() { - return mDataset.size(); - } - - private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>(){ - - @Override - public void onChanged(ObservableList sender) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - - @Override - public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - notifyDataSetChanged(); - checkIfEmpty(); - } - }; - - - private void checkIfEmpty() { - if (mEmptyView != null) { - final boolean emptyViewVisible = getItemCount() == 0; - mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); - } + public interface OnItemClickListener { + void onItemClick(MtbColr item); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java index d53d36a9..09087b75 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java @@ -3,23 +3,18 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel; import android.app.Activity; import android.app.Dialog; import android.content.res.Resources; - -import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableField; -import androidx.annotation.NonNull; - -import com.google.android.material.bottomsheet.BottomSheetBehavior; -import com.google.android.material.textfield.TextInputLayout; +import android.text.SpannableString; +import android.view.inputmethod.EditorInfo; import androidx.core.content.ContextCompat; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableField; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; -import android.text.SpannableString; -import android.view.View; -import android.view.inputmethod.EditorInfo; - import com.annimon.stream.Stream; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.textfield.TextInputLayout; import com.tfb.fbtoast.FBToast; import java.math.BigDecimal; @@ -27,14 +22,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.barcode_base_android_library.model.BarcodeType; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.rest.CommonRESTException; -import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -46,12 +36,18 @@ import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbCols; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.report.ReportManager; +import it.integry.integrywmsnative.core.rest.CommonRESTException; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.Ean128Model; 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.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding; @@ -61,15 +57,13 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.Rettific import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; 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_position_of_lu.DialogAskPositionOfLU; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; 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_or_create_lu.DialogScanOrCreateLU; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; -import it.integry.barcode_base_android_library.model.BarcodeScanDTO; -import it.integry.barcode_base_android_library.model.BarcodeType; public class RettificaGiacenzeViewModel implements IRecyclerItemClicked { @@ -141,28 +135,28 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator); - mAdapter = new RettificaGiacenzeMainListAdapter(mContext, mtbColt.get().getMtbColr(), this, mBinding.rettificaGiacenzeEmptyView); - mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter); +// mAdapter = new RettificaGiacenzeMainListAdapter(mContext, mtbColt.get().getMtbColr(), this, mBinding.rettificaGiacenzeEmptyView); +// mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter); } private void initBottomSheetActions() { - mBinding.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)); +// mBinding.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)); - mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.bottomSheetActions); +// mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.bottomSheetActions); - mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - if (newState == BottomSheetBehavior.STATE_COLLAPSED) - mBinding.bg.setVisibility(View.GONE); - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - mBinding.bg.setVisibility(View.VISIBLE); - mBinding.bg.setAlpha(slideOffset); - } - }); +// mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { +// @Override +// public void onStateChanged(@NonNull View bottomSheet, int newState) { +// if (newState == BottomSheetBehavior.STATE_COLLAPSED) +// mBinding.bg.setVisibility(View.GONE); +// } +// +// @Override +// public void onSlide(@NonNull View bottomSheet, float slideOffset) { +// mBinding.bg.setVisibility(View.VISIBLE); +// mBinding.bg.setAlpha(slideOffset); +// } +// }); } public RunnableArgs onScanSuccessfull = data -> { @@ -438,7 +432,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked .setGestione(mtbColt.get().getGestione()) .setSerCollo(mtbColt.get().getSerCollo()); - ColliMagazzinoRESTConsumer.creaRettificaCollo(mtbColr, + ColliMagazzinoRESTConsumer.creaRettificaColloStatic(mtbColr, quantityDTO.numCnf.getBigDecimal(), quantityDTO.qtaTot.getBigDecimal(), () -> { @@ -461,7 +455,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone(); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); - cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback() { @Override @@ -500,13 +494,13 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked MtbColr clickedItem = mtbColt.get().getMtbColr().get(position); - mBinding.bottomSheetActionsTitle.setText(clickedItem.getDescrizione()); - mBinding.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart()); - - mBinding.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(item, position)); - mBinding.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(item)); - - mBinding.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getMtbAart().getUntMis()); +// mBinding.bottomSheetActionsTitle.setText(clickedItem.getDescrizione()); +// mBinding.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart()); +// +// mBinding.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(item, position)); +// mBinding.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(item)); +// +// mBinding.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getMtbAart().getUntMis()); } public void openLU() { @@ -663,7 +657,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked if (!isCreatedLU) { BigDecimal finalNewNumCnf = newNumCnf; - ColliMagazzinoRESTConsumer.creaRettificaCollo( + ColliMagazzinoRESTConsumer.creaRettificaColloStatic( mtbColrToEditClone, newNumCnf, newQtaCol, @@ -731,7 +725,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked if (!isCreatedLU) { - ColliMagazzinoRESTConsumer.creaRettificaCollo( + ColliMagazzinoRESTConsumer.creaRettificaColloStatic( mtbColrToDeleteClone, BigDecimal.ZERO, BigDecimal.ZERO, @@ -765,16 +759,14 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked this.showAskPrint(shouldPrint -> { if (shouldPrint) { - PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), value -> { if (value.size() > 0) { try { - ReportManager.getRightReportNameByGestione(mtbColt.get().getGestioneEnum(), reportName -> { + ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> { - PrinterRESTConsumer.printCollo(value.get(0), + PrinterRESTConsumer.printColloStatic(value.get(0), mtbColt.get(), 1, reportName, @@ -809,16 +801,12 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked String errorMessage = "Nessuna stampante configurata"; showPrintErrorDialog(errorMessage); } - } - - @Override - public void onFailed(Exception ex) { + }, ex -> { progress.dismiss(); UtilityLogger.errorMe(ex); String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); showPrintErrorDialog(errorMessage); - } - }); + }); } else { progress.dismiss(); resetMtbColt(true); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java index d40b8d76..462eaa84 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java @@ -1,14 +1,15 @@ package it.integry.integrywmsnative.gest.spedizione_new; +import android.app.Dialog; +import android.content.Intent; +import android.content.res.Resources; +import android.os.Bundle; +import android.text.SpannableString; + import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; -import android.app.Dialog; -import android.content.Intent; -import android.os.Bundle; -import android.text.SpannableString; - import com.annimon.stream.Stream; import com.tfb.fbtoast.FBToast; @@ -76,7 +77,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; - private ObservableArrayList mSpedizioneMutableData = new ObservableArrayList(); + private ObservableArrayList mSpedizioneMutableData = new ObservableArrayList<>(); public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false); @@ -532,6 +533,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }).show(); } + @Override + public void onLUSuccessullyPrinted() { + Resources res = getResources(); + String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); + DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); + } + @Override public void onLUPrintRequest(RunnableArgs onComplete) { DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java index 340d1bfa..887ab308 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java @@ -6,6 +6,7 @@ import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.MainApplicationModule; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; @@ -23,8 +24,8 @@ public class SpedizioneModule { @Provides @Singleton - SpedizioneViewModel providesSpedizioneViewModel(ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { - return new SpedizioneViewModel(barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer); + SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { + return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java index c504b17a..459f2b74 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java @@ -27,6 +27,7 @@ import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; 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.interfaces.viewmodel_listeners.ILUPrintListener; import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.FiltroOrdineDTO; import it.integry.integrywmsnative.core.model.MtbAart; @@ -72,7 +73,7 @@ public class SpedizioneViewModel { private MutableLiveData> mPickingList = new MutableLiveData<>(); private List mColliRegistrati = new ArrayList<>(); - private Listeners mListeners; + private Listeners mListener; private GestioneEnum mDefaultGestioneOfUL = null; private String mDefaultCodMdep = null; @@ -92,6 +93,7 @@ public class SpedizioneViewModel { private MtbColt mCurrentMtbColt = null; private Integer mMtbColtSessionID; + private final ArticoloRESTConsumer mArticoloRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final ColliDataRecoverService mColliDataRecoverService; private final OrdiniRESTConsumer mOrdiniRestConsumerService; @@ -99,11 +101,13 @@ public class SpedizioneViewModel { private final PrinterRESTConsumer mPrinterRESTConsumer; @Inject - public SpedizioneViewModel( BarcodeRESTConsumer barcodeRESTConsumer, + public SpedizioneViewModel( ArticoloRESTConsumer articoloRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer) { + this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliDataRecoverService = colliDataRecoverService; this.mOrdiniRestConsumerService = ordiniRESTConsumer; @@ -276,47 +280,47 @@ public class SpedizioneViewModel { } private void sendOnLoadingStarted() { - if (this.mListeners != null) mListeners.onLoadingStarted(); + if (this.mListener != null) mListener.onLoadingStarted(); } private void sendOnLoadingEnded() { - if (this.mListeners != null) mListeners.onLoadingEnded(); + if (this.mListener != null) mListener.onLoadingEnded(); } private void sendError(Exception ex) { - if (this.mListeners != null) mListeners.onError(ex); + if (this.mListener != null) mListener.onError(ex); } private void sendLUOpened(MtbColt mtbColt) { - if (this.mListeners != null) mListeners.onLUOpened(mtbColt); + if (this.mListener != null) mListener.onLUOpened(mtbColt); } private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete) { - if (this.mListeners != null) mListeners.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); + if (this.mListener != null) mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); } private void sendLUPrintRequest(RunnableArgs onComplete) { - if (this.mListeners != null) mListeners.onLUPrintRequest(onComplete); + if (this.mListener != null) mListener.onLUPrintRequest(onComplete); } private void sendLUPrintError(Exception ex, Runnable onComplete) { - if (this.mListeners != null) mListeners.onLUPrintError(ex, onComplete); + if (this.mListener != null) mListener.onLUPrintError(ex, onComplete); } private void sendLUClosed() { - if (this.mListeners != null) mListeners.onLUClosed(); + if (this.mListener != null) mListener.onLUClosed(); } private void sendFilterApplied(String newValue) { - if (this.mListeners != null) mListeners.onFilterApplied(newValue); + if (this.mListener != null) mListener.onFilterApplied(newValue); } private void sendFilterRemoved() { - if (this.mListeners != null) mListeners.onFilterRemoved(); + if (this.mListener != null) mListener.onFilterRemoved(); } private void sendMtbColrDeleteRequest(RunnableArgs onComplete) { - if (this.mListeners != null) mListeners.onMtbColrDeleteRequest(onComplete); + if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete); } private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, @@ -337,7 +341,7 @@ public class SpedizioneViewModel { Date dataScad, boolean canOverflowOrderQuantity, RunnableArgss onComplete) { - if (this.mListeners != null) mListeners.onItemDispatched(pickingObjectDTO, + if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, mtbAart, initialNumCnf, initialQtaCnf, @@ -358,7 +362,7 @@ public class SpedizioneViewModel { } private void sendOnRowSaved() { - if (this.mListeners != null) mListeners.onRowSaved(); + if (this.mListener != null) mListener.onRowSaved(); } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -546,7 +550,7 @@ public class SpedizioneViewModel { barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); } - ArticoloRESTConsumer.getByBarcodeProdStatic(barcodeProd, mtbAartList -> { + this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); @@ -1142,7 +1146,7 @@ public class SpedizioneViewModel { MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); - cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); boolean shouldPrint = true; @@ -1191,7 +1195,7 @@ public class SpedizioneViewModel { } - public void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { this.sendOnLoadingStarted(); @@ -1347,7 +1351,7 @@ public class SpedizioneViewModel { onComplete.run(); } else { - mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> { if (printerList == null || printerList.size() == 0) { this.sendError(new NoPrintersFoundException()); @@ -1375,9 +1379,9 @@ public class SpedizioneViewModel { } private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) { - ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { - PrinterRESTConsumer.printCollo( + PrinterRESTConsumer.printColloStatic( printerName, mtbColtToPrint, 1, @@ -1468,11 +1472,11 @@ public class SpedizioneViewModel { } public SpedizioneViewModel setListeners(Listeners listeners) { - this.mListeners = listeners; + this.mListener = listeners; return this; } - public interface Listeners { + public interface Listeners extends ILUPrintListener { void onLoadingStarted(); void onLoadingEnded(); @@ -1483,10 +1487,6 @@ public class SpedizioneViewModel { void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete); - void onLUPrintRequest(RunnableArgs onComplete); - - void onLUPrintError(Exception ex, Runnable onComplete); - void onFilterApplied(String newValue); void onFilterRemoved(); 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 a70b4569..3d1fbf5d 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 @@ -16,7 +16,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; 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.core.utility.UtilityQuery; import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; @@ -30,7 +29,7 @@ public class UltimeConsegneClienteRESTConsumer { "WHERE flag_stato = 'A'"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { if(onComplete != null) onComplete.run(value); @@ -61,7 +60,7 @@ public class UltimeConsegneClienteRESTConsumer { Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { if(onComplete != null) onComplete.run(value); @@ -179,7 +178,7 @@ public class UltimeConsegneClienteRESTConsumer { Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList values) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java index 5141ca40..89bbaeeb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java @@ -22,7 +22,7 @@ public class UltimiArriviFornitoreRESTConsumer { "WHERE flag_stato = 'A'"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { if(onComplete != null) onComplete.run(value); @@ -52,7 +52,7 @@ public class UltimiArriviFornitoreRESTConsumer { Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { if(onComplete != null) onComplete.run(value); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java index a29ca64b..df1e1442 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java @@ -220,7 +220,7 @@ public class VenditaHelper { baseSql += "( " + whereCond + ")"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { if(onComplete != null) onComplete.run(value); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java index 5c53062b..62624f50 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java @@ -48,7 +48,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod "ORDER BY rag_soc"; Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { availableClienti = value; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java index febc4065..191b9f98 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java @@ -50,7 +50,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod "WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag); Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList value) { availableDestinatari = value; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java index aa1f8e4b..a751b759 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java @@ -143,6 +143,18 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput } private void init() { + UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> { + if (this.mEnableDataCallback) { + this.mViewModel.setPartitaMag(value); + } + }); + + UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> { + if (this.mEnableDataCallback) { + this.mViewModel.setDataScad(value); + } + }); + UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> { if (this.mEnableDataCallback) { this.mViewModel.setNumCnf(value); diff --git a/app/src/main/res/layout/activity_picking_libero.xml b/app/src/main/res/layout/activity_picking_libero.xml deleted file mode 100644 index b6a0d6f1..00000000 --- a/app/src/main/res/layout/activity_picking_libero.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml b/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml index b97ff586..f40ebcb5 100644 --- a/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml +++ b/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml @@ -1,25 +1,31 @@ - - + + + - - + + + + + + type="it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeViewModelNEW" /> + android:clipToPadding="false" + tools:context=".gest.rettifica_giacenze.RettificaGiacenzeFragment"> + app:el_expanded_bind="@{view.thereIsAnOpenedUL}"> + android:orientation="horizontal" + android:background="@drawable/badge1_round_corner"> + android:text="num:" /> + tools:text="2156" /> + + + @@ -82,13 +109,13 @@ android:id="@+id/rettifica_giacenze_forn_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_marginTop="4dp" android:layout_marginStart="4dp" + android:layout_marginTop="4dp" android:layout_marginBottom="4dp" + android:orientation="horizontal" android:paddingStart="8dp" - android:paddingEnd="6dp" android:paddingTop="6dp" + android:paddingEnd="6dp" android:paddingBottom="6dp"> + android:onClick="@{() -> view.setUIToForn()}" /> + app:layout_constraintGuide_percent="0.40" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + android:paddingStart="12dp" + android:singleLine="true" /> + app:hintTextAppearance="@style/hint_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/guide_line_fornitore" + app:layout_constraintTop_toTopOf="parent"> + android:inputType="textNoSuggestions" + android:singleLine="true" /> @@ -164,13 +191,13 @@ android:id="@+id/rettifica_giacenze_art_int_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_marginTop="4dp" android:layout_marginStart="4dp" + android:layout_marginTop="4dp" android:layout_marginBottom="4dp" + android:orientation="horizontal" android:paddingStart="8dp" - android:paddingEnd="6dp" android:paddingTop="6dp" + android:paddingEnd="6dp" android:paddingBottom="6dp"> + android:onClick="@{() -> view.setUIToIntArt()}" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + android:inputType="textNoSuggestions" + android:singleLine="true" /> @@ -212,9 +239,6 @@ - - - + android:adjustViewBounds="true" + android:src="@drawable/ic_playlist_add_check_24dp" /> + android:textColor="@android:color/black" /> @@ -279,175 +303,178 @@ android:id="@+id/rettifica_giacenze_main_list" android:layout_width="match_parent" android:layout_height="match_parent" + android:clipToPadding="false" android:paddingTop="16dp" android:paddingBottom="80dp" - android:clipToPadding="false" - android:scrollbarStyle="outsideOverlay"/> + android:scrollbarStyle="outsideOverlay" /> + app:visibility="@{view.thereIsAnOpenedUL}" + app:srcCompat="@drawable/ic_check_black_24dp" /> + android:layout_height="match_parent" + android:background="#99000000" + android:visibility="gone" /> - - - + app:layout_behavior=".view.bottom_sheet__base.AutoCloseBottomSheetBehavior" /> - + + + + + + + + + + + - + + + + + - + + + + + + + + - + + + + + + + + + + + + - + + + + + + - - + - + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + + + - + + + + + + + + + + - + + + + + - + - + + + + + + + + - + + + + + + + + + + - + + + + + - + - - - - + +