diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index c3e6981c..3a68b859 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -296,12 +296,12 @@ public class MainActivity extends BaseActivity if(fragment instanceof IScrollableFragment) { ((IScrollableFragment) fragment).setScrollToolbar(mBinding.appBarMain.elevatedToolbar); - ((IScrollableFragment) fragment).setOnPreDestroy(() -> { + ((IScrollableFragment) fragment).setScrollableOnPreDestroy(() -> { mBinding.appBarMain.elevatedToolbar.resetAll(); }); } - if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) { + if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isSelectAllButtonEnabled()) { mBinding.appBarMain.mainSelectAll.setVisibility(View.VISIBLE); mBinding.appBarMain.mainSelectAll.setOnClickListener(new OnSingleClickListener() { @Override @@ -309,9 +309,10 @@ public class MainActivity extends BaseActivity ((ISelectAllFragment)fragment).onSelectAll(); } }); - } else { - mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE); - mBinding.appBarMain.mainSelectAll.setOnClickListener(null); + ((ISelectAllFragment) fragment).setSelectAllOnPreDestroy(() -> { + mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE); + mBinding.appBarMain.mainSelectAll.setOnClickListener(null); + }); } if(fragment instanceof IFilterableFragment) { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index f5200838..f8ab4e23 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -7,10 +7,14 @@ import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.data_store.db.RoomModule; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoComponent; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoModule; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule; import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent; import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule; +import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdComponent; +import it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdModule; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent; @@ -35,6 +39,8 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua SpedizioneModule.class, AccettazionePickingModule.class, PickingResiModule.class, + ProdPosizionamentoDaOrdModule.class, + OrdiniUscitaElencoModule.class, DialogInputQuantityV2Module.class}) public interface MainApplicationComponent { @@ -46,6 +52,8 @@ public interface MainApplicationComponent { SpedizioneComponent.Factory spedizioneComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent(); PickingResiComponent.Factory pickingResiComponent(); + ProdPosizionamentoDaOrdComponent.Factory prodPosizionamentoDaOrdComponent(); + OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index e65f1496..a4df21ab 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -13,6 +13,7 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; @@ -41,8 +42,8 @@ public class MainApplicationModule { @Provides @Singleton - OrdiniRESTConsumer provideOrdiniRESTConsumer() { - return new OrdiniRESTConsumer(); + OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + return new OrdiniRESTConsumer(systemRESTConsumer); } @Provides @@ -59,8 +60,8 @@ public class MainApplicationModule { @Provides @Singleton - ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer() { - return new ColliMagazzinoRESTConsumer(); + ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) { + return new ColliMagazzinoRESTConsumer(articoloRESTConsumer); } @Provides @@ -81,5 +82,11 @@ public class MainApplicationModule { return new SystemRESTConsumer(); } + @Provides + @Singleton + PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + return new PosizioniRESTConsumer(systemRESTConsumer); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 985d9fb2..cf6869fe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -3,15 +3,14 @@ package it.integry.integrywmsnative.core.class_router.configs; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; -import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; public class MenuConfiguration extends BaseMenuConfiguration { @@ -48,7 +47,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.vendita_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_spedizione) .setDrawerIcon(R.drawable.ic_black_upload) - .setFragmentFactory(MainVenditaFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, GestioneEnum.VENDITA, -1))) .addItem(new MenuItem() .setID(R.id.nav_free_picking) @@ -79,7 +78,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.prod_ordine_lavorazione_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione) .setDrawerIcon(R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineLavorazioneElencoFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1))) .addItem(new MenuItem() .setID(R.id.nav_free_lav_picking) @@ -88,6 +87,13 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) + .addItem(new MenuItem() + .setID(R.id.nav_prod_posizionamento_da_ord) + .setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) + .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, 1))) + .addItem(new MenuItem() .setID(R.id.nav_prod_versamento_materiale) .setTitleText(R.string.prod_versamento_materiale_title_fragment) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java index 1d9e0990..a25ccc38 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java @@ -1,16 +1,13 @@ package it.integry.integrywmsnative.core.class_router.interfaces; -import android.app.Dialog; -import android.app.ProgressDialog; - import java.util.List; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; public interface IOrdiniVendita { - void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed); + void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java index 86fa3392..ea14d912 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java @@ -8,12 +8,8 @@ import com.google.android.gms.common.util.IOUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Type; import java.util.ArrayList; @@ -22,8 +18,8 @@ import java.util.Random; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class ColliDataRecover { @@ -35,7 +31,7 @@ public class ColliDataRecover { private String gestioneCollo; private String filtro; - private List testateOrdini; + private List testateOrdini; public int getId() { return id; @@ -91,11 +87,11 @@ public class ColliDataRecover { return this; } - public List getTestateOrdini() { + public List getTestateOrdini() { return testateOrdini; } - public RecoverDTO setTestateOrdini(List testateOrdini) { + public RecoverDTO setTestateOrdini(List testateOrdini) { this.testateOrdini = testateOrdini; return this; } @@ -153,7 +149,7 @@ public class ColliDataRecover { return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null; } - public static int startNewSession(MtbColt mtbColtSession, List testateOrdini) { + public static int startNewSession(MtbColt mtbColtSession, List testateOrdini) { Integer newId = null; while(newId == null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java index 5967cee3..e87e4b53 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java @@ -3,7 +3,7 @@ package it.integry.integrywmsnative.core.data_recover; import java.util.List; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; public class ColliDataRecoverDTO { @@ -14,7 +14,7 @@ public class ColliDataRecoverDTO { private String gestioneCollo; private String filtro; - private List testateOrdini; + private List testateOrdini; public int getId() { return id; @@ -70,11 +70,11 @@ public class ColliDataRecoverDTO { return this; } - public List getTestateOrdini() { + public List getTestateOrdini() { return testateOrdini; } - public ColliDataRecoverDTO setTestateOrdini(List testateOrdini) { + public ColliDataRecoverDTO setTestateOrdini(List testateOrdini) { this.testateOrdini = testateOrdini; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java index 4f6dfbd8..6d14cd1c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java @@ -21,8 +21,8 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; @Singleton public class ColliDataRecoverService { @@ -72,7 +72,7 @@ public class ColliDataRecoverService { return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null; } - public int startNewSession(MtbColt mtbColtSession, List testateOrdini) { + public int startNewSession(MtbColt mtbColtSession, List testateOrdini) { Integer newId = null; while(newId == null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUMultiCodMdepException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUMultiCodMdepException.java new file mode 100644 index 00000000..fda034a5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUMultiCodMdepException.java @@ -0,0 +1,11 @@ +package it.integry.integrywmsnative.core.exception; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityResources; + +public class InvalidLUMultiCodMdepException extends Exception { + + public InvalidLUMultiCodMdepException() { + super(UtilityResources.getString(R.string.error_multiple_cod_mdep_ord)); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java index 1d295d8d..8d425605 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/IScrollableFragment.java @@ -6,6 +6,6 @@ public interface IScrollableFragment { void setScrollToolbar(ElevatedToolbar toolbar); - void setOnPreDestroy(Runnable onPreDestroy); + void setScrollableOnPreDestroy(Runnable onPreDestroy); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ISelectAllFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ISelectAllFragment.java index 1f32fff7..2e70f4b8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ISelectAllFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ISelectAllFragment.java @@ -2,8 +2,10 @@ package it.integry.integrywmsnative.core.interfaces; public interface ISelectAllFragment { - boolean isEnabled(); + boolean isSelectAllButtonEnabled(); void onSelectAll(); + void setSelectAllOnPreDestroy(Runnable onPreDestroy); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java index 1f2dbac0..b09cfc92 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ITitledFragment.java @@ -2,7 +2,6 @@ package it.integry.integrywmsnative.core.interfaces; import android.content.Context; -import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.AppCompatTextView; /** @@ -13,4 +12,6 @@ public interface ITitledFragment { void onCreateActionBar(AppCompatTextView titleText, Context context); + void onActionBarPreDestroy(Runnable onActionBarPreDestroy); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/OrdineInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/model/OrdineInevasoDTO.java new file mode 100644 index 00000000..3ac1006c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/OrdineInevasoDTO.java @@ -0,0 +1,60 @@ +package it.integry.integrywmsnative.core.model; + +import java.util.Date; + +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.utility.UtilityDate; + +public class OrdineInevasoDTO { + + private String data; + private Integer numero; + private String gestione; + private String codMdep; + + public String getDataOrdS() { + return data; + } + + public Date getDataOrdD() { + return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS()); + } + + public OrdineInevasoDTO setData(String data) { + this.data = data; + return this; + } + + public Integer getNumOrd() { + return numero; + } + + public OrdineInevasoDTO setNumero(Integer numero) { + this.numero = numero; + return this; + } + + public String getGestione() { + return gestione; + } + + public GestioneEnum getGestioneEnum() { + return GestioneEnum.fromString(getGestione()); + } + + + public OrdineInevasoDTO setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public String getCodMdep() { + return codMdep; + } + + public OrdineInevasoDTO setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index 584a4219..f398011e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -40,7 +40,11 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { } - public static void getByCodMart(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getByCodMart(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) { + getByCodMartStatic(codMartToFind, onComplete, onFailed); + } + + public static void getByCodMartStatic(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) { String joinedCods = Stream.of(codMartToFind) .collect(Collectors.joining(",")); 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 db8782ae..052908a4 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 @@ -45,6 +45,13 @@ import retrofit2.Response; @Singleton public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { + private ArticoloRESTConsumer mArticoloRESTConsumer; + + public ColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) { + this.mArticoloRESTConsumer = articoloRESTConsumer; + } + + public static void saveColloStatic(MtbColt mtbColtToSave, final ISimpleOperationCallback callback) { for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) { @@ -88,8 +95,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } + public void saveColli(List mtbColtsToSave, RunnableArgs> onComplete, RunnableArgs onFailed) { + saveColliStatic(mtbColtsToSave, onComplete, onFailed); + } - public static void saveColli(List mtbColtsToSave, RunnableArgs> onComplete, RunnableArgs onFailed) { + public static void saveColliStatic(List mtbColtsToSave, RunnableArgs> onComplete, RunnableArgs onFailed) { for (MtbColt mtbColt : mtbColtsToSave) { mtbColt.setMtbCols(null); @@ -375,7 +385,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } } - onComplete.run(newList); }, onFailed); } @@ -430,7 +439,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - ArticoloRESTConsumer.getByCodMart(codMarts, arts -> { + ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> { if (arts != null && arts.size() > 0) { for (MtbColt mtbColt : mtbColts) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java index 77b03c5b..ea4f9115 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java @@ -1,18 +1,28 @@ package it.integry.integrywmsnative.core.rest.consumers; import com.annimon.stream.Stream; +import com.google.gson.reflect.TypeToken; +import com.orhanobut.logger.Logger; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; +import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import retrofit2.Call; import retrofit2.Callback; @@ -21,31 +31,10 @@ import retrofit2.Response; @Singleton public class OrdiniRESTConsumer extends _BaseRESTConsumer { - public static void retrieveListaArticoliFromOrdiniUscita(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { + private final SystemRESTConsumer mSystemRESTConsumer; - List getPickingListDTOs = Stream.of(orders) - .map(x -> new GetPickingListDTO() - .setData(x.getDataOrdS()) - .setGestione(x.getGestione()) - .setNumero(x.getNumOrd()) - .setDataConsegna(x.getDataConsS()) - .setIdViaggio(x.getIdViaggio())) - .toList(); - - OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); - - service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "retrieveListaArticoliFromOrdiniVendita", onComplete, onFailed); - } - - @Override - public void onFailure(Call>> call, Throwable t) { - UtilityLogger.errorMe(new Exception(t)); - onFailed.run(new Exception(t)); - } - }); + public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + this.mSystemRESTConsumer = systemRESTConsumer; } public void getSuggestedPickingList(String codMdep, List sitArtOrdList, RunnableArgs> onComplete, RunnableArgs onFailed) { @@ -69,4 +58,91 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { } + public void getOrdiniInevasi(String codMdep, GestioneEnum gestione, RunnableArgs> onComplete, RunnableArgs onFailed) { + + OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class); + + service.getOrdiniInevasi(codMdep, gestione.getText()) + .enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getOrdiniInevasi", onComplete, ex -> { + Logger.e(ex, "Errore durante il caricamento degli ordini di lavorazione"); + if(onFailed != null) onFailed.run(ex); + }); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + Logger.e(t, "Errore durante il caricamento degli ordini di lavorazione"); + if(onFailed != null) onFailed.run(new Exception(t)); + } + }); + } + + public void retrieveListaArticoliFromOrdiniUscita(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { + List getPickingListDTOs = Stream.of(orders) + .map(x -> new GetPickingListDTO() + .setData(x.getDataOrdS()) + .setGestione(x.getGestione()) + .setNumero(x.getNumOrd()) + .setDataConsegna(x.getDataConsS()) + .setIdViaggio(x.getIdViaggio())) + .toList(); + + OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); + + service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", onComplete, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + UtilityLogger.errorMe(new Exception(t)); + onFailed.run(new Exception(t)); + } + }); + } + + + public void getBancaliGiaRegistrati(List orders, GestioneEnum gestione, int segno, RunnableArgs> onComplete, RunnableArgs onFailed) { + String baseSql = "SELECT DISTINCT mtb_colt.* " + + "FROM mtb_colt, " + + " mtb_colr " + + "WHERE mtb_colt.gestione = mtb_colr.gestione " + + " AND mtb_colt.ser_collo = mtb_colr.ser_collo " + + " AND mtb_colt.data_collo = mtb_colr.data_collo " + + " AND mtb_colt.num_collo = mtb_colr.num_collo " + + " AND mtb_colt.gestione = " + UtilityDB.valueToString(gestione.getText()) + " " + + " AND mtb_colt.segno = " + UtilityDB.valueToString(segno) + " " + + " AND mtb_colt.data_doc IS NULL AND "; + + List> whereCondMapList = new ArrayList<>(); + for (OrdineInevasoDTO ordineInevaso : orders) { + HashMap whereCondMap = new HashMap<>(); + whereCondMap.put("mtb_colr.data_ord", ordineInevaso.getDataOrdD()); + whereCondMap.put("mtb_colr.num_ord", ordineInevaso.getNumOrd()); + whereCondMap.put("mtb_colr.gestione", ordineInevaso.getGestione()); + + whereCondMapList.add(whereCondMap); + } + + baseSql += "(" + UtilityQuery.concatFieldListInWhereCond(whereCondMapList) + ")"; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + this.mSystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(List 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/core/rest/consumers/OrdiniRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumerService.java index 7d699377..c373f20f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumerService.java @@ -4,10 +4,12 @@ import java.util.List; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO; import retrofit2.Call; import retrofit2.http.Body; +import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Query; @@ -18,4 +20,7 @@ public interface OrdiniRESTConsumerService { @POST("wms/getSuggestedPickingList") Call>> getSuggestedPickingList(@Query("codMdep") String codMdep, @Body List sitArtOrdDTOList); + + @GET("SM2GetOrdiniVenditaInevasi") + Call>> getOrdiniInevasi(@Query("codMdep") String codMdep, @Query("gestione") String gestione); } 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 5d650b95..d5fda18d 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 @@ -6,6 +6,8 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -17,8 +19,14 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; +@Singleton public class PosizioniRESTConsumer extends _BaseRESTConsumer{ + private final SystemRESTConsumer mSystemRESTConsumer; + + public PosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + this.mSystemRESTConsumer = systemRESTConsumer; + } public static void getAvailablePosizioni(RunnableArgs> onComplete, RunnableArgs onFailed) { String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); @@ -39,11 +47,11 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{ }); } + public void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs> onComplete, RunnableArgs onFailed) { + getBancaliInPosizioneStatic(mtbDepoPosizione, onComplete, onFailed); + } - - public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs> onComplete, RunnableArgs onFailed) { - - + public static void getBancaliInPosizioneStatic(MtbDepoPosizione mtbDepoPosizione, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT * FROM mtb_colt WHERE segno > 0 AND cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione()); 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 e84640f4..b551f8e3 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 @@ -5,6 +5,7 @@ import android.util.Log; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import com.orhanobut.logger.Logger; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -66,7 +67,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { @Override public void onFailure(Call> call, Throwable t) { - Log.e("ProcessSql", t.toString()); + Logger.e(t, "ProcessSQL"); onFailed.run(new Exception(t)); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/OrdineUscitaInevasoDTO.java similarity index 60% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java rename to app/src/main/java/it/integry/integrywmsnative/core/rest/model/OrdineUscitaInevasoDTO.java index ccd1375c..a3b90989 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/OrdineUscitaInevasoDTO.java @@ -1,23 +1,18 @@ -package it.integry.integrywmsnative.gest.vendita.dto; +package it.integry.integrywmsnative.core.rest.model; import java.math.BigDecimal; import java.text.ParseException; import java.util.Date; -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; import it.integry.integrywmsnative.core.utility.UtilityDate; -public class OrdineVenditaInevasoDTO { +public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO { - private String data; - private Integer numero; private Integer idViaggio; - private String gestione; private String listino; private String termCons; private String codAuto; - private String codMdep; private String descrizioneAuto; private String codVvet; private String descrizioneVettore; @@ -49,64 +44,25 @@ public class OrdineVenditaInevasoDTO { private String nomeAgente; private String codJfas; - public BindableBoolean selected; - public OrdineVenditaInevasoDTO() { - this.selected = new BindableBoolean(false); - } - - - public String getDataOrdS() { - return data; - } - - public Date getDataOrdD() { - return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS()); - } - - public OrdineVenditaInevasoDTO setData(String data) { - this.data = data; - return this; - } - - public Integer getNumOrd() { - return numero; - } - - public OrdineVenditaInevasoDTO setNumero(Integer numero) { - this.numero = numero; - return this; - } public Integer getIdViaggio() { return idViaggio; } - public OrdineVenditaInevasoDTO setIdViaggio(Integer idViaggio) { + public OrdineUscitaInevasoDTO setIdViaggio(Integer idViaggio) { this.idViaggio = idViaggio; return this; } - public String getGestione() { - return gestione; - } - public GestioneEnum getGestioneEnum() { - return GestioneEnum.fromString(getGestione()); - } - - - public OrdineVenditaInevasoDTO setGestione(String gestione) { - this.gestione = gestione; - return this; - } public String getListino() { return listino; } - public OrdineVenditaInevasoDTO setListino(String listino) { + public OrdineUscitaInevasoDTO setListino(String listino) { this.listino = listino; return this; } @@ -115,7 +71,7 @@ public class OrdineVenditaInevasoDTO { return termCons; } - public OrdineVenditaInevasoDTO setTermCons(String termCons) { + public OrdineUscitaInevasoDTO setTermCons(String termCons) { this.termCons = termCons; return this; } @@ -124,25 +80,16 @@ public class OrdineVenditaInevasoDTO { return codAuto; } - public OrdineVenditaInevasoDTO setCodAuto(String codAuto) { + public OrdineUscitaInevasoDTO setCodAuto(String codAuto) { this.codAuto = codAuto; return this; } - public String getCodMdep() { - return codMdep; - } - - public OrdineVenditaInevasoDTO setCodMdep(String codMdep) { - this.codMdep = codMdep; - return this; - } - public String getDescrizioneAuto() { return descrizioneAuto; } - public OrdineVenditaInevasoDTO setDescrizioneAuto(String descrizioneAuto) { + public OrdineUscitaInevasoDTO setDescrizioneAuto(String descrizioneAuto) { this.descrizioneAuto = descrizioneAuto; return this; } @@ -151,7 +98,7 @@ public class OrdineVenditaInevasoDTO { return codVvet; } - public OrdineVenditaInevasoDTO setCodVvet(String codVvet) { + public OrdineUscitaInevasoDTO setCodVvet(String codVvet) { this.codVvet = codVvet; return this; } @@ -160,7 +107,7 @@ public class OrdineVenditaInevasoDTO { return descrizioneVettore; } - public OrdineVenditaInevasoDTO setDescrizioneVettore(String descrizioneVettore) { + public OrdineUscitaInevasoDTO setDescrizioneVettore(String descrizioneVettore) { this.descrizioneVettore = descrizioneVettore; return this; } @@ -173,7 +120,7 @@ public class OrdineVenditaInevasoDTO { return UtilityDate.recognizeDateWithExceptionHandler(getDataInizTraspS()); } - public OrdineVenditaInevasoDTO setDataInizTrasp(String dataInizTrasp) { + public OrdineUscitaInevasoDTO setDataInizTrasp(String dataInizTrasp) { this.dataInizTrasp = dataInizTrasp; return this; } @@ -182,7 +129,7 @@ public class OrdineVenditaInevasoDTO { return descrizionePaga; } - public OrdineVenditaInevasoDTO setDescrizionePaga(String descrizionePaga) { + public OrdineUscitaInevasoDTO setDescrizionePaga(String descrizionePaga) { this.descrizionePaga = descrizionePaga; return this; } @@ -191,7 +138,7 @@ public class OrdineVenditaInevasoDTO { return rifOrd; } - public OrdineVenditaInevasoDTO setRifOrd(String rifOrd) { + public OrdineUscitaInevasoDTO setRifOrd(String rifOrd) { this.rifOrd = rifOrd; return this; } @@ -200,7 +147,7 @@ public class OrdineVenditaInevasoDTO { return codAnagOrd; } - public OrdineVenditaInevasoDTO setCodAnagOrd(String codAnagOrd) { + public OrdineUscitaInevasoDTO setCodAnagOrd(String codAnagOrd) { this.codAnagOrd = codAnagOrd; return this; } @@ -209,7 +156,7 @@ public class OrdineVenditaInevasoDTO { return codJcom; } - public OrdineVenditaInevasoDTO setCodJcom(String codJcom) { + public OrdineUscitaInevasoDTO setCodJcom(String codJcom) { this.codJcom = codJcom; return this; } @@ -218,7 +165,7 @@ public class OrdineVenditaInevasoDTO { return descrizioneCom; } - public OrdineVenditaInevasoDTO setDescrizioneCom(String descrizioneCom) { + public OrdineUscitaInevasoDTO setDescrizioneCom(String descrizioneCom) { this.descrizioneCom = descrizioneCom; return this; } @@ -227,7 +174,7 @@ public class OrdineVenditaInevasoDTO { return ragSocCom; } - public OrdineVenditaInevasoDTO setRagSocCom(String ragSocCom) { + public OrdineUscitaInevasoDTO setRagSocCom(String ragSocCom) { this.ragSocCom = ragSocCom; return this; } @@ -236,7 +183,7 @@ public class OrdineVenditaInevasoDTO { return ragSocOrd; } - public OrdineVenditaInevasoDTO setRagSocOrd(String ragSocOrd) { + public OrdineUscitaInevasoDTO setRagSocOrd(String ragSocOrd) { this.ragSocOrd = ragSocOrd; return this; } @@ -245,7 +192,7 @@ public class OrdineVenditaInevasoDTO { return destinatario; } - public OrdineVenditaInevasoDTO setDestinatario(String destinatario) { + public OrdineUscitaInevasoDTO setDestinatario(String destinatario) { this.destinatario = destinatario; return this; } @@ -254,7 +201,7 @@ public class OrdineVenditaInevasoDTO { return citta; } - public OrdineVenditaInevasoDTO setCitta(String citta) { + public OrdineUscitaInevasoDTO setCitta(String citta) { this.citta = citta; return this; } @@ -263,7 +210,7 @@ public class OrdineVenditaInevasoDTO { return provincia; } - public OrdineVenditaInevasoDTO setProvincia(String provincia) { + public OrdineUscitaInevasoDTO setProvincia(String provincia) { this.provincia = provincia; return this; } @@ -272,7 +219,7 @@ public class OrdineVenditaInevasoDTO { return indirizzo; } - public OrdineVenditaInevasoDTO setIndirizzo(String indirizzo) { + public OrdineUscitaInevasoDTO setIndirizzo(String indirizzo) { this.indirizzo = indirizzo; return this; } @@ -281,7 +228,7 @@ public class OrdineVenditaInevasoDTO { return pesoTotale; } - public OrdineVenditaInevasoDTO setPesoTotale(BigDecimal pesoTotale) { + public OrdineUscitaInevasoDTO setPesoTotale(BigDecimal pesoTotale) { this.pesoTotale = pesoTotale; return this; } @@ -290,7 +237,7 @@ public class OrdineVenditaInevasoDTO { return numCnfdaEvadere; } - public OrdineVenditaInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) { + public OrdineUscitaInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) { this.numCnfdaEvadere = numCnfdaEvadere; return this; } @@ -299,7 +246,7 @@ public class OrdineVenditaInevasoDTO { return numCnfDisp; } - public OrdineVenditaInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) { + public OrdineUscitaInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) { this.numCnfDisp = numCnfDisp; return this; } @@ -312,7 +259,7 @@ public class OrdineVenditaInevasoDTO { return UtilityDate.recognizeDateWithExceptionHandler(getDataConsS()); } - public OrdineVenditaInevasoDTO setDataCons(String dataCons) { + public OrdineUscitaInevasoDTO setDataCons(String dataCons) { this.dataCons = dataCons; return this; } @@ -321,7 +268,7 @@ public class OrdineVenditaInevasoDTO { return barcode; } - public OrdineVenditaInevasoDTO setBarcode(String barcode) { + public OrdineUscitaInevasoDTO setBarcode(String barcode) { this.barcode = barcode; return this; } @@ -330,7 +277,7 @@ public class OrdineVenditaInevasoDTO { return numRighe; } - public OrdineVenditaInevasoDTO setNumRighe(Integer numRighe) { + public OrdineUscitaInevasoDTO setNumRighe(Integer numRighe) { this.numRighe = numRighe; return this; } @@ -339,7 +286,7 @@ public class OrdineVenditaInevasoDTO { return righeInPartenza; } - public OrdineVenditaInevasoDTO setRigheInPartenza(Integer righeInPartenza) { + public OrdineUscitaInevasoDTO setRigheInPartenza(Integer righeInPartenza) { this.righeInPartenza = righeInPartenza; return this; } @@ -348,7 +295,7 @@ public class OrdineVenditaInevasoDTO { return saldoContabile; } - public OrdineVenditaInevasoDTO setSaldoContabile(BigDecimal saldoContabile) { + public OrdineUscitaInevasoDTO setSaldoContabile(BigDecimal saldoContabile) { this.saldoContabile = saldoContabile; return this; } @@ -357,7 +304,7 @@ public class OrdineVenditaInevasoDTO { return codVzon; } - public OrdineVenditaInevasoDTO setCodVzon(String codVzon) { + public OrdineUscitaInevasoDTO setCodVzon(String codVzon) { this.codVzon = codVzon; return this; } @@ -366,7 +313,7 @@ public class OrdineVenditaInevasoDTO { return ragSocOrdV; } - public OrdineVenditaInevasoDTO setRagSocOrdV(String ragSocOrdV) { + public OrdineUscitaInevasoDTO setRagSocOrdV(String ragSocOrdV) { this.ragSocOrdV = ragSocOrdV; return this; } @@ -375,7 +322,7 @@ public class OrdineVenditaInevasoDTO { return colliRiservati; } - public OrdineVenditaInevasoDTO setColliRiservati(int colliRiservati) { + public OrdineUscitaInevasoDTO setColliRiservati(int colliRiservati) { this.colliRiservati = colliRiservati; return this; } @@ -384,7 +331,7 @@ public class OrdineVenditaInevasoDTO { return existColloBoolean; } - public OrdineVenditaInevasoDTO setExistColloBoolean(boolean existColloBoolean) { + public OrdineUscitaInevasoDTO setExistColloBoolean(boolean existColloBoolean) { this.existColloBoolean = existColloBoolean; return this; } @@ -393,7 +340,7 @@ public class OrdineVenditaInevasoDTO { return flagEvaso; } - public OrdineVenditaInevasoDTO setFlagEvaso(boolean flagEvaso) { + public OrdineUscitaInevasoDTO setFlagEvaso(boolean flagEvaso) { this.flagEvaso = flagEvaso; return this; } @@ -402,7 +349,7 @@ public class OrdineVenditaInevasoDTO { return nomeAgente; } - public OrdineVenditaInevasoDTO setNomeAgente(String nomeAgente) { + public OrdineUscitaInevasoDTO setNomeAgente(String nomeAgente) { this.nomeAgente = nomeAgente; return this; } @@ -411,36 +358,27 @@ public class OrdineVenditaInevasoDTO { return codJfas; } - public OrdineVenditaInevasoDTO setCodJfas(String codJfas) { + public OrdineUscitaInevasoDTO setCodJfas(String codJfas) { this.codJfas = codJfas; return this; } - public boolean isSelected() { - return selected.get(); - } - - public OrdineVenditaInevasoDTO setSelected(boolean selected) { - this.selected.set(selected); - return this; - } - @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - OrdineVenditaInevasoDTO that = (OrdineVenditaInevasoDTO) o; + OrdineUscitaInevasoDTO that = (OrdineUscitaInevasoDTO) o; - if (!data.equals(that.data)) return false; - if (!numero.equals(that.numero)) return false; + if (!getDataOrdS().equals(that.getDataOrdS())) return false; + if (!getNumOrd().equals(that.getNumOrd())) return false; return getGestione().equals(that.getGestione()); } @Override public int hashCode() { - int result = data.hashCode(); - result = 31 * result + numero.hashCode(); + int result = getDataOrdS().hashCode(); + result = 31 * result + getNumOrd().hashCode(); result = 31 * result + getGestione().hashCode(); return result; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityReflections.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityReflections.java new file mode 100644 index 00000000..1846e546 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityReflections.java @@ -0,0 +1,60 @@ +package it.integry.integrywmsnative.core.utility; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class UtilityReflections { + + + public static void copy(Object from, Object to) throws Exception { + UtilityReflections.copy(from, to, Object.class); + } + + public static void copy(Object from, Object to, Class depth) throws Exception { + Class fromClass = from.getClass(); + Class toClass = to.getClass(); + List fromFields = collectFields(fromClass, depth); + List toFields = collectFields(toClass, depth); + Field target; + for (Field source : fromFields) { + if ((target = findAndRemove(source, toFields)) != null) { + source.setAccessible(true); + target.setAccessible(true); + target.set(to, source.get(from)); + } + } + } + + private static List collectFields(Class c, Class depth) { + List accessibleFields = new ArrayList<>(); + do { + int modifiers; + for (Field field : c.getDeclaredFields()) { + modifiers = field.getModifiers(); + if (!Modifier.isStatic(modifiers)/* && Modifier.isPublic(modifiers)*/) { + accessibleFields.add(field); + } + } + c = c.getSuperclass(); + } while (c != null && c != depth); + return accessibleFields; + } + + private static Field findAndRemove(Field field, List fields) { + Field actual; + for (Iterator i = fields.iterator(); i.hasNext();) { + actual = i.next(); + if (field.getName().equals(actual.getName()) + && field.getType().equals(actual.getType())) { + i.remove(); + return actual; + } + } + return null; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index bd5fef60..312fa19e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -45,7 +45,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment { - private Runnable mOnPreDestroy; + private List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private FragmentMainAccettazioneBinding mBinding; @@ -81,11 +81,15 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag mAppBarTitle.setText(context.getText(R.string.accettazione_title_fragment).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - init(); } @@ -110,7 +114,9 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag @Override public void onDestroy() { - if(mOnPreDestroy != null) mOnPreDestroy.run(); + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } super.onDestroy(); } @@ -249,7 +255,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index 672b1c39..8d6b9da3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -140,7 +140,7 @@ public class AccettazionePickingViewModel { .map(SitArtOrdDTO::getCodMart) .toList(); - ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> { + this.mArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> { List pickingList = Stream.of(sitArtOrdList) .map(sitArtOrdDTO -> { MtbAart mtbAart = null; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java index 7c4ddf56..bcf76c98 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/rest/AccettazionePickingRESTConsumer.java @@ -50,7 +50,40 @@ public class AccettazionePickingRESTConsumer { String sql = "SELECT DISTINCT CAST(CASE WHEN MAX(ISNULL(mtb_colr_scar.num_collo, 0)) = 0 THEN 1 ELSE 0 END AS BIT) AS flagCanBeRecovered, " + - " mtb_colt.* " + + " mtb_colt.gestione," + + " mtb_colt.data_collo," + + " mtb_colt.num_collo," + + " segno," + + " peso_kg," + + " lunghezza_cm," + + " larghezza_cm," + + " altezza_cm," + + " cod_anag," + + " cod_dtip," + + " mtb_colt.data_doc," + + " mtb_colt.ser_doc," + + " mtb_colt.num_doc," + + " rif_ord," + + " mtb_colt.ser_collo," + + " cod_tcol," + + " mtb_colt.data_ord," + + " mtb_colt.num_ord," + + " cod_vdes," + + " cod_mdep," + + " cod_vlis," + + " preparato_da," + + " ora_iniz_prep," + + " ora_fine_prep," + + " filtro_ordini," + + " annotazioni," + + " posizione," + + " cod_dtip_provv," + + " data_doc_provv," + + " ser_doc_provv," + + " num_doc_provv," + + " cod_jfas," + + " data_vers," + + " mtb_colt.peso_netto_kg " + "FROM mtb_colt" + " INNER JOIN mtb_colr ON " + " mtb_colt.gestione = mtb_colr.gestione AND " + diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 0675aef4..10f68457 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -50,7 +50,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab private FragmentMainBinding mBindings; - private Runnable mOnPreDestroy; + private List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private LayoutInflater mLayoutInflater; @@ -89,7 +89,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab @Override public void onDestroy() { - if (mOnPreDestroy != null) mOnPreDestroy.run(); + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } super.onDestroy(); } @@ -208,14 +210,19 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab titleText.setText(context.getText(R.string.app_name).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + @Override public void setScrollToolbar(ElevatedToolbar toolbar) { mToolbar = toolbar; } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + mOnPreDestroyList.add(onPreDestroy); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoComponent.java new file mode 100644 index 00000000..9d56594d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco; + +import dagger.Subcomponent; + +@Subcomponent +public interface OrdiniUscitaElencoComponent { + + @Subcomponent.Factory + interface Factory { + OrdiniUscitaElencoComponent create(); + } + + void inject(OrdiniUscitaElencoFragment ordiniUscitaElencoFragment); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoDTO.java new file mode 100644 index 00000000..b58e90b3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoDTO.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco; + +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; +import it.integry.integrywmsnative.core.utility.UtilityReflections; + +public class OrdiniUscitaElencoDTO extends OrdineUscitaInevasoDTO { + + private boolean hidden = false; + + public static OrdiniUscitaElencoDTO fromParent(OrdineUscitaInevasoDTO parent) throws Exception { + OrdiniUscitaElencoDTO child = new OrdiniUscitaElencoDTO(); + UtilityReflections.copy(parent, child); + return child; + } + + public boolean isHidden() { + return hidden; + } + + public OrdiniUscitaElencoDTO setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java new file mode 100644 index 00000000..9c415fba --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -0,0 +1,354 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.annimon.stream.ComparatorCompat; +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; +import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; +import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; +import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; +import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzato; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel; +import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; +import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; + +public class OrdiniUscitaElencoFragment extends Fragment implements ITitledFragment, ILifecycleFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment, OrdiniUscitaElencoViewModel.Listener { + + public BindableBoolean fabVisible = new BindableBoolean(false); + + @Inject + OrdiniUscitaElencoViewModel mViewModel; + + private FragmentMainOrdiniUscitaBinding mBindings = null; + + private ObservableArrayList mOrdiniInevasiMutableData = new ObservableArrayList<>(); + + private GestioneEnum mCurrentGestioneOrd = null; + private GestioneEnum mCurrentGestioneCol = null; + private int mCurrentSegnoCol = 0; + + private ElevatedToolbar mToolbar; + private List mOnPreDestroyList = new ArrayList<>(); + + private int barcodeScannerIstanceID = -1; + private Dialog mCurrentProgress; + + + public OrdiniUscitaElencoFragment() { + // Required empty public constructor + } + + public static OrdiniUscitaElencoFragment newInstance(GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol) { + OrdiniUscitaElencoFragment fragment = new OrdiniUscitaElencoFragment(); + Bundle args = new Bundle(); + + args.putString("gestioneOrd", gestioneOrd.getText()); + args.putString("gestioneCol", gestioneCol.getText()); + args.putInt("segnoCol", segnoCol); + + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mCurrentGestioneOrd = GestioneEnum.fromString(getArguments().getString("gestioneOrd")); + mCurrentGestioneCol = GestioneEnum.fromString(getArguments().getString("gestioneCol")); + mCurrentSegnoCol = getArguments().getInt("segnoCol"); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main_ordini_uscita, container, false); + + MainApplication.appComponent + .prodOrdineLavorazioneElencoComponent() + .create() + .inject(this); + + mViewModel.setListener(this); + + mBindings.setLifecycleOwner(this); + mBindings.setView(this); + mBindings.setViewmodel(mViewModel); + + this.initRecyclerView(); + + return mBindings.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol); + } + + private void initRecyclerView() { + + boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders(); + boolean canSelectMultipleClienti = SettingsManager.iDB().isFlagMultiClienteOrdV(); + + this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); + + OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter = + new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData) + .setEmptyView(this.mBindings.ordiniVenditaEmptyView) + .setOnGroupItemClicked(x -> { + if(!canSelectMultipleClienti) { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + } + + boolean allSelected = Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .allMatch(y -> y.getSelectedObservable().get()); + + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .forEach(y -> y.getSelectedObservable().set(!allSelected)); + }) + .setOnItemChecked(x -> { + if(!canSelectMultipleClienti && x.getSelectedObservable().get()) { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + } + + fabVisible.set(Stream.of(mOrdiniInevasiMutableData) + .anyMatch(y -> y.getSelectedObservable().get())); + }); + + this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter); + this.mBindings.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity())); + + if(mToolbar != null) + mToolbar.setRecyclerView(this.mBindings.venditaMainList); + } + + private void refreshList(List orderList) { + this.mOrdiniInevasiMutableData.clear(); + this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(orderList)); + } + + private List convertDataModelToListModel(List dataList) { + + ComparatorCompat comparator = ComparatorCompat + .comparing(OrdiniUscitaElencoDTO::getRagSocOrd) + .thenComparing(ComparatorCompat.comparing(OrdiniUscitaElencoDTO::getNumOrd)); + + List notHiddenElements = Stream.of(dataList) + .filter(x -> !x.isHidden()) + .sorted(comparator) + .map(x -> { + OrdiniUscitaElencoListModel listModel = new OrdiniUscitaElencoListModel(); + + listModel.setGroupTitle(x.getRagSocOrd()); + + String testataOrdString = String.format(getString(R.string.ord_ven_testata), String.valueOf(x.getNumOrd()), UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + listModel.setDescription(testataOrdString); + + listModel.setSubDescription(x.getRifOrd()); + + String testataDataConsString = String.format(getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + listModel.setRightDescription(testataDataConsString); + + listModel.setOriginalModel(x); + + return listModel; + }) + .toList(); + + return notHiddenElements; + } + + @Override + public void onResume() { + super.onResume(); + Stream.of(this.mOrdiniInevasiMutableData) + .forEach(x -> x.getSelectedObservable().set(false)); + } + + @Override + public void onPreDestroy(Runnable onComplete) { + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + + BarcodeManager.removeCallback(barcodeScannerIstanceID); + onComplete.run(); + } + + @Override + public void onCreateActionBar(AppCompatTextView titleText, Context context) { + titleText.setText(context.getText(R.string.prod_ordine_lavorazione_title_fragment).toString()); + } + + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + + + public void dispatchOrders() { + + List selectedOrders = Stream.of(this.mOrdiniInevasiMutableData) + .filter(x -> x.getSelectedObservable().get()) + .map(OrdiniUscitaElencoListModel::getOriginalModel) + .toList(); + + this.mViewModel.loadPicking(selectedOrders); + + } + + + private void openProgress() { + getActivity().runOnUiThread(() -> { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + }); + } + + private void closeProgress() { + getActivity().runOnUiThread(() -> { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + }); + } + + @Override + public void onLoadingStarted() { + BarcodeManager.disable(); + this.openProgress(); + } + + @Override + public void onLoadingEnded() { + this.closeProgress(); + BarcodeManager.enable(); + } + + @Override + public void onError(Exception ex) { + this.closeProgress(); + UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + BarcodeManager.enable(); + } + + @Override + public void onOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts) { + List codMarts = Stream.of(sitArts) + .distinctBy(SitArtOrdDTO::getCodMart) + .map(SitArtOrdDTO::getCodMart) + .toList(); + + int alreadyRegisteredUL = alreadyRegisteredMtbColts.size(); + + DialogSimpleMessageHelper.makeInfoDialog(getActivity(), + getText(R.string.orders).toString(), + Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size()) + + "
" + + "" + codMarts.size() + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size()) + + "
" + + "" + alreadyRegisteredUL + " " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), + null, + () -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol) + ).show(); + } + + @Override + public void setScrollToolbar(ElevatedToolbar toolbar) { + mToolbar = toolbar; + } + + @Override + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); + } + + @Override + public boolean isSelectAllButtonEnabled() { + return SettingsManager.iDB().isFlagMultiClienteOrdV(); + } + + @Override + public void onSelectAll() { + boolean allSelected = Stream.of(mOrdiniInevasiMutableData) + .allMatch(x -> x.getSelectedObservable().get()); + + Stream.of(mOrdiniInevasiMutableData) + .filter(x -> !x.getOriginalModel().isHidden()) + .forEach(x -> x.getSelectedObservable().set(!allSelected)); + } + + @Override + public void setSelectAllOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); + } + + + private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel; + + @Override + public void onFilterClick() { + DialogVenditaFiltroAvanzato.make( + getActivity(), + this.mViewModel.getOrderList().getValue(), + mAppliedFilterViewModel, + + (filteredOrderList, filter) -> { + mAppliedFilterViewModel = filter; + + if(filteredOrderList != null){ + refreshList(filteredOrderList); + } + + }).show(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java new file mode 100644 index 00000000..4624045c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoModule.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; + +@Module(subcomponents = OrdiniUscitaElencoComponent.class) +public class OrdiniUscitaElencoModule { + + @Provides + OrdiniUscitaElencoViewModel providesProdOrdineLavorazioneElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer) { + return new OrdiniUscitaElencoViewModel(ordiniRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java new file mode 100644 index 00000000..5d3386c7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java @@ -0,0 +1,159 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco; + +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; + +import java.util.Date; +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.exception.InvalidLUMultiCodMdepException; +import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; +import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; + +public class OrdiniUscitaElencoViewModel { + + private final MutableLiveData> mOrderList = new MutableLiveData<>(); + + private final OrdiniRESTConsumer mOrdiniRESTConsumer; + private Listener mListener; + private String mCurrentCodMdep; + private GestioneEnum mCurrentGestioneOrd; + private GestioneEnum mCurrentGestioneCol; + private int mCurrentSegnoCol; + + @Inject + public OrdiniUscitaElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer) { + this.mOrdiniRESTConsumer = ordiniRESTConsumer; + } + + + public void init(String currentCodMdep, GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol) { + this.mCurrentCodMdep = currentCodMdep; + this.mCurrentGestioneOrd = gestioneOrd; + this.mCurrentGestioneCol = gestioneCol; + this.mCurrentSegnoCol = segnoCol; + + this.sendOnLoadingStarted(); + + new Thread(() -> { + Date loadingStartDate = new Date(); + + this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd, + ordiniLavorazione -> { + this.mOrderList.postValue(Stream.of(ordiniLavorazione) + .map(x -> { + try { + return OrdiniUscitaElencoDTO.fromParent(x); + } catch (Exception ex) { + return null; + } + }) + .toList()); + + long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000; + + if(2 - forcedDelaySecs > 0) { + try { + Thread.sleep((2 - forcedDelaySecs) * 1000); + } catch (Exception ignored) { + } + } + + this.sendOnLoadingEnded(); + }, this::sendError); + }).start(); + + + } + + + public void loadPicking(List selectedOrders) { + List foundGestioni = Stream.of(selectedOrders) + .map(OrdineUscitaInevasoDTO::getGestioneEnum) + .withoutNulls() + .distinct() + .toList(); + + if(foundGestioni != null && foundGestioni.size() > 1) { + this.sendError(new InvalidLUMultiGestioneException()); + return; + } + + + List foundCodMdep = Stream.of(selectedOrders) + .map(OrdineUscitaInevasoDTO::getCodMdep) + .withoutNulls() + .distinct() + .toList(); + + if(foundCodMdep != null && foundCodMdep.size() > 1) { + this.sendError(new InvalidLUMultiCodMdepException()); + return; + } + + + this.sendOnLoadingStarted(); + + List selectedOrdersBase = Stream.of(selectedOrders) + .map(x -> (OrdineUscitaInevasoDTO) x) + .toList(); + + this.mOrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrdersBase, sitArts -> { + + this.mOrdiniRESTConsumer.getBancaliGiaRegistrati( + Stream.of(selectedOrdersBase).map(x -> (OrdineInevasoDTO) x).toList(), + mCurrentGestioneCol, + mCurrentSegnoCol, + mtbColtList -> { + this.sendOnOrdersDispatched(selectedOrdersBase, sitArts, mtbColtList); + + this.sendOnLoadingEnded(); + }, this::sendError); + }, this::sendError); + } + + + public MutableLiveData> getOrderList() { + return mOrderList; + } + + public OrdiniUscitaElencoViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + private void sendOnOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts) { + if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts); + } + + public interface Listener { + void onLoadingStarted(); + + void onLoadingEnded(); + + void onError(Exception ex); + + void onOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java similarity index 91% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java index 946a4566..95f1e8b2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita.dialogs; +package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs; import android.app.DatePickerDialog; import android.content.Context; @@ -28,19 +28,19 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; public class DialogVenditaFiltroAvanzato { - private AlertDialog currentAlert; - private Context currentContext; + private final AlertDialog currentAlert; + private final Context currentContext; - private RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone; + private final RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone; - private List currentOrderList; - private List currentFilteredOrderList; + private final List currentOrderList; + private List currentFilteredOrderList; private ArrayAdapter arrayAdapterCodMdep; private ArrayAdapter arrayAdapterIdViaggio; @@ -51,30 +51,30 @@ public class DialogVenditaFiltroAvanzato { private ArrayAdapter arrayAdapterAgente; private ArrayAdapter arrayAdapterAutomezzo; - private Predicate currentDepositoPredicate = null; - private Predicate currentIdViaggioPredicate = null; - private Predicate currentNumOrdsPredicate = null; - private Predicate currentClientePredicate = null; - private Predicate currentDataConsPredicate = null; - private Predicate currentTermConsPredicate = null; - private Predicate currentVettorePredicate = null; - private Predicate currentAgentePredicate = null; - private Predicate currentAutomezzoPredicate = null; + private Predicate currentDepositoPredicate = null; + private Predicate currentIdViaggioPredicate = null; + private Predicate currentNumOrdsPredicate = null; + private Predicate currentClientePredicate = null; + private Predicate currentDataConsPredicate = null; + private Predicate currentTermConsPredicate = null; + private Predicate currentVettorePredicate = null; + private Predicate currentAgentePredicate = null; + private Predicate currentAutomezzoPredicate = null; private boolean firstInit = true; - public static AlertDialog make(final Context context, final List ordersList, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + public static AlertDialog make(final Context context, final List ordersList, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert; } public static AlertDialog make(final Context context, - final List ordersList, + final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, - RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert; } - private DialogVenditaFiltroAvanzato(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + private DialogVenditaFiltroAvanzato(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { currentContext = context; currentOrderList = ordersList; currentOnFilterDone = onDismiss; @@ -456,7 +456,7 @@ public class DialogVenditaFiltroAvanzato { if(currentAgentePredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -484,7 +484,7 @@ public class DialogVenditaFiltroAvanzato { if(currentDepositoPredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -500,14 +500,14 @@ public class DialogVenditaFiltroAvanzato { currentFilteredOrderList = tmpStream.toList(); } - return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getNomeAgente).distinct().withoutNulls().sorted().toList(); + return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getNomeAgente).distinct().withoutNulls().sorted().toList(); } private List getAvailableCodMdeps(boolean skipRecalc) { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -522,14 +522,14 @@ public class DialogVenditaFiltroAvanzato { currentFilteredOrderList = tmpStream.toList(); } - return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getCodMdep).distinct().withoutNulls().sorted().toList(); + return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getCodMdep).distinct().withoutNulls().sorted().toList(); } private List getAvailableCliente(boolean skipRecalc) { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentDepositoPredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && @@ -544,14 +544,14 @@ public class DialogVenditaFiltroAvanzato { currentFilteredOrderList = tmpStream.toList(); } - return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getRagSocOrd).distinct().withoutNulls().sorted().toList(); + return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getRagSocOrd).distinct().withoutNulls().sorted().toList(); } private List getAvailableNumOrds(boolean skipRecalc) { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentDepositoPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -573,7 +573,7 @@ public class DialogVenditaFiltroAvanzato { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -588,14 +588,14 @@ public class DialogVenditaFiltroAvanzato { currentFilteredOrderList = tmpStream.toList(); } - return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getTermCons).distinct().withoutNulls().sorted().toList(); + return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getTermCons).distinct().withoutNulls().sorted().toList(); } private List getAvailableVettori(boolean skipRecalc) { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentAutomezzoPredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -617,7 +617,7 @@ public class DialogVenditaFiltroAvanzato { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && @@ -632,7 +632,7 @@ public class DialogVenditaFiltroAvanzato { currentFilteredOrderList = tmpStream.toList(); } - return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getDescrizioneAuto).distinct().withoutNulls().sorted().toList(); + return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getDescrizioneAuto).distinct().withoutNulls().sorted().toList(); } private void refreshList() { @@ -640,7 +640,7 @@ public class DialogVenditaFiltroAvanzato { if(currentAgentePredicate == null && currentIdViaggioPredicate == null && currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null && currentAutomezzoPredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; } else { - Stream tmpStream = Stream.of(currentOrderList) + Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate.test(x))) && diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java similarity index 90% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java index 42644ed8..89ed20b1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita.dialogs; +package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs; import java.util.Date; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java new file mode 100644 index 00000000..ea195cb0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java @@ -0,0 +1,176 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco.list; + + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; +import androidx.recyclerview.widget.RecyclerView; + +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; +import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListGroupModelBinding; +import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModelBinding; + +public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter { + + private final Context mContext; + private final List mDataset = new ArrayList<>(); + private View mEmptyView; + + private RunnableArgs mOnGroupItemClicked; + private RunnableArgs mOnItemChecked; + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + FragmentMainOrdiniUscitaListModelBinding mBinding; + + SubheaderHolder(FragmentMainOrdiniUscitaListModelBinding binding) { + super(binding.getRoot()); + this.mBinding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + FragmentMainOrdiniUscitaListGroupModelBinding mBinding; + + SingleItemViewHolder(FragmentMainOrdiniUscitaListGroupModelBinding binding) { + super(binding.getRoot()); + this.mBinding = binding; + } + } + + public OrdiniUscitaElencoAdapter(Context context, ObservableArrayList mutableDataSet) { + this.mContext = context; + + mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @Override + public void onChanged(ObservableList sender) { + mDataset.clear(); + mDataset.addAll(sender); + notifyDataSetChanged(); + notifyDataChanged(); + checkIfEmpty(); + } + }); + } + + public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) { + this.mOnGroupItemClicked = onGroupItemClicked; + return this; + } + + public OrdiniUscitaElencoAdapter setOnItemChecked(RunnableArgs onItemChecked) { + this.mOnItemChecked = onItemChecked; + return this; + } + + public OrdiniUscitaElencoAdapter setEmptyView(View emptyView) { + this.mEmptyView = emptyView; + this.checkIfEmpty(); + return this; + } + + private void checkIfEmpty() { + if (mEmptyView != null) { + final boolean emptyViewVisible = getItemCount() == 0; + mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); + } + } + + + @Override + public OrdiniUscitaElencoAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + FragmentMainOrdiniUscitaListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_main_ordini_uscita__list_model, parent, false); + return new OrdiniUscitaElencoAdapter.SubheaderHolder(binding); + } + + @Override + public OrdiniUscitaElencoAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + FragmentMainOrdiniUscitaListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_main_ordini_uscita__list_group_model, parent, false); + return new OrdiniUscitaElencoAdapter.SingleItemViewHolder(binding); + } + + @Override + public void onBindSubheaderViewHolder(OrdiniUscitaElencoAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { + OrdiniUscitaElencoListModel pickingObjectDTO = this.mDataset.get(nextItemPosition); + + subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getGroupTitle()) ? View.GONE : View.VISIBLE); + subheaderHolder.mBinding.groupTitle.setText(Html.fromHtml(pickingObjectDTO.getGroupTitle())); + + subheaderHolder.mBinding.getRoot().setOnClickListener(new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(pickingObjectDTO.getGroupTitle()); + } + }); + } + + @Override + public void onBindItemViewHolder(final OrdiniUscitaElencoAdapter.SingleItemViewHolder holder, final int position) { + OrdiniUscitaElencoListModel listModel = this.mDataset.get(position); + + listModel.getSelectedObservable().resetOnPropertyChangedCallback(); + + if(!UtilityString.isNullOrEmpty(listModel.getDescription())) + holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription())); + + if(!UtilityString.isNullOrEmpty(listModel.getSubDescription())) + holder.mBinding.subDescrizione.setText(Html.fromHtml(listModel.getSubDescription())); + + if(!UtilityString.isNullOrEmpty(listModel.getRightDescription())) + holder.mBinding.rightDescrizione.setText(Html.fromHtml(listModel.getRightDescription())); + + if(!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) + holder.mBinding.rightSubDescrizione.setText(Html.fromHtml(listModel.getRightSubDescription())); + + holder.mBinding.setSelected(listModel.getSelectedObservable()); + holder.mBinding.executePendingBindings(); + holder.mBinding.checkbox.jumpDrawablesToCurrentState(); + + listModel.getSelectedObservable().addOnPropertyChangedCallback(() -> { + if(this.mOnItemChecked != null) this.mOnItemChecked.run(listModel); + }); + + holder.mBinding.getRoot().setOnClickListener(v -> { + listModel.getSelectedObservable().set(!listModel.getSelectedObservable().get()); + }); + } + + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + + if (getItemSize() == 1) return true; + else if (getItemSize() > 1) { + OrdiniUscitaElencoListModel compare1 = this.mDataset.get(position); + OrdiniUscitaElencoListModel compare2 = this.mDataset.get(position + 1); + + if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) { + return false; + } + } + + return true; + } + + @Override + public int getItemSize() { + return mDataset.size(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoListModel.java new file mode 100644 index 00000000..71b5771d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoListModel.java @@ -0,0 +1,87 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco.list; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; + +public class OrdiniUscitaElencoListModel implements Cloneable { + private String groupTitle; + + private String description; + private String subDescription; + private String rightDescription; + private String rightSubDescription; + + private boolean hidden; + private BindableBoolean selected = new BindableBoolean(); + + + private OrdiniUscitaElencoDTO originalModel; + + + public String getGroupTitle() { + return groupTitle; + } + + public OrdiniUscitaElencoListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public String getDescription() { + return description; + } + + public OrdiniUscitaElencoListModel setDescription(String description) { + this.description = description; + return this; + } + + public String getSubDescription() { + return subDescription; + } + + public OrdiniUscitaElencoListModel setSubDescription(String subDescription) { + this.subDescription = subDescription; + return this; + } + + public String getRightDescription() { + return rightDescription; + } + + public OrdiniUscitaElencoListModel setRightDescription(String rightDescription) { + this.rightDescription = rightDescription; + return this; + } + + public String getRightSubDescription() { + return rightSubDescription; + } + + public OrdiniUscitaElencoListModel setRightSubDescription(String rightSubDescription) { + this.rightSubDescription = rightSubDescription; + return this; + } + + public boolean isHidden() { + return hidden; + } + + public OrdiniUscitaElencoListModel setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } + + public BindableBoolean getSelectedObservable() { + return selected; + } + + public OrdiniUscitaElencoDTO getOriginalModel() { + return originalModel; + } + + public OrdiniUscitaElencoListModel setOriginalModel(OrdiniUscitaElencoDTO originalModel) { + this.originalModel = originalModel; + return this; + } +} 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 ae9aa5dc..84ff1ed3 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 @@ -20,6 +20,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.tfb.fbtoast.FBToast; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -75,7 +76,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, public BindableBoolean thereIsAnyRowInUL = new BindableBoolean(false); public BindableBoolean thereIsAnOpenULWithoutRows = new BindableBoolean(false); - private Runnable mOnPreDestroy; + private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private AppCompatTextView mToolbarTitleText; @@ -107,6 +108,11 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, mToolbarTitleText.setText(context.getText(R.string.free_picking_title_fragment).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -231,7 +237,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, @Override public void onDestroyView() { - if (mOnPreDestroy != null) mOnPreDestroy.run(); + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } super.onDestroyView(); } @@ -241,8 +249,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + mOnPreDestroyList.add(onPreDestroy); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java index b0d8af52..871c177b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java @@ -16,8 +16,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag public class PickingResiModule { @Provides - PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) { - return new PickingResiRESTConsumer(systemRESTConsumer); + PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { + return new PickingResiRESTConsumer(systemRESTConsumer, articoloRESTConsumer); } @Provides diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java index b230235c..c27874af 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java @@ -25,10 +25,12 @@ public class PickingResiRESTConsumer { private final SystemRESTConsumer mSystemRestConsumer; + private final ArticoloRESTConsumer mArticoloRESTConsumer; @Inject - public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { this.mSystemRestConsumer = systemRESTConsumer; + this.mArticoloRESTConsumer = articoloRESTConsumer; } public void loadDocRows(List documents, RunnableArgs> onComplete, RunnableArgs onFailed) { @@ -64,7 +66,7 @@ public class PickingResiRESTConsumer { .distinct() .toList(); - ArticoloRESTConsumer.getByCodMart(codMarts, arts -> { + mArticoloRESTConsumer.getByCodMart(codMarts, arts -> { if(arts != null && arts.size() > 0) { for (DtbDocr value : values) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java index 4bc6af4e..654be68a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java @@ -48,7 +48,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; */ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { - private Runnable mOnPreDestroy; + private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private FragmentProdOrdineProduzioneElencoBinding mBinding; @@ -102,12 +102,26 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit return mBinding.getRoot(); } + @Override + public void onDestroy() { + super.onDestroy(); + + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + } + @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { mAppBarTitle = titleText; mAppBarTitle.setText(context.getText(R.string.prod_ordine_produzione_title_fragment).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + private void init() { final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); @@ -139,8 +153,8 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + mOnPreDestroyList.add(onPreDestroy); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java deleted file mode 100644 index ead25331..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java +++ /dev/null @@ -1,275 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione; - - -import android.app.Dialog; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.text.Html; -import android.text.SpannableString; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.annimon.stream.Stream; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.data_cache.DataCache; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; -import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.rest.CommonRESTException; -import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; -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.UtilityToast; -import it.integry.integrywmsnative.databinding.FragmentProdOrdineLavorazioneElencoBinding; -import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core.ProdOrdineLavorazioneHelper; -import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core.ProdOrdineLavorazioneListAdapter; -import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.ui.ElevatedToolbar; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; - -/** - * A simple {@link Fragment} subclass. - */ -public class ProdOrdineLavorazioneElencoFragment extends Fragment implements ITitledFragment, IScrollableFragment { - private FragmentProdOrdineLavorazioneElencoBinding mBinding; - private ProdOrdineLavorazioneHelper mHelper; - - private Runnable mOnPreDestroy; - private ElevatedToolbar mToolbar; - - private ProdOrdineLavorazioneListAdapter mAdapter; - - private List mOriginalOrderList; - private List mRenderedOrderList = new ArrayList<>(); - - - public ProdOrdineLavorazioneElencoFragment() { - // Required empty public constructor - } - - - public static ProdOrdineLavorazioneElencoFragment newInstance() { - ProdOrdineLavorazioneElencoFragment fragment = new ProdOrdineLavorazioneElencoFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - } - - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_ordine_lavorazione_elenco, container, false); - - mBinding.ordineLavorazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - mBinding.ordineLavorazioneMainFab.hide(); - - mBinding.ordineLavorazioneMainFab.setOnClickListener(v -> onVenditaMainFabClick()); - - if (mToolbar != null) mToolbar.setRecyclerView(mBinding.ordineLavorazioneMainList); - - init(); - return mBinding.getRoot(); - } - - @Override - public void onCreateActionBar(AppCompatTextView titleText, Context context) { - titleText.setText(context.getText(R.string.prod_ordine_lavorazione_title_fragment).toString()); - } - - @Override - public void setScrollToolbar(ElevatedToolbar toolbar) { - mToolbar = toolbar; - } - - @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; - } - - - private void init() { - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - mHelper = new ProdOrdineLavorazioneHelper(getActivity()); -// mViewModel = new VenditaViewModel(getActivity(), this, mBinding, mHelper); - - mHelper.loadOrdini(ordini -> { - if (ordini != null) { - UtilityToast.showToast("Caricati " + ordini.size() + " ordini"); - mOriginalOrderList = ordini; -// mViewModel.setListOrder(ordini); - } - - - mBinding.ordineLavorazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - - refreshOrdini(ordini); - initRecyclerView(); - progress.dismiss(); - }, ex -> { - mOriginalOrderList = new ArrayList<>(); - progress.dismiss(); - - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if (errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); - }); - - } - - - public void refreshOrdini(List ordini) { - - mRenderedOrderList.clear(); - if (ordini != null && ordini.size() > 0) mRenderedOrderList.addAll(ordini); - } - - private void initRecyclerView() { - mAdapter = new ProdOrdineLavorazioneListAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged); - mBinding.ordineLavorazioneMainList.setAdapter(mAdapter); - } - - public void refreshRecyclerView() { - mAdapter.updateItems(mRenderedOrderList); - } - - private RunnableArgs onSingleSelectionChanged = dto -> { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); - - if (!SettingsManager.iDB().isFlagMultiClienteOrdV()) { - boolean allMatch = Stream.of(selectedOrders).allMatch(x -> dto.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd())); - - if (!allMatch) { - Stream.of(selectedOrders) - .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) - .forEach(x -> x.setSelected(false)); - } - } - - if (selectedOrders != null && selectedOrders.size() > 0) { - mBinding.ordineLavorazioneMainFab.show(); - } else { - mBinding.ordineLavorazioneMainFab.hide(); - } - }; - - - private void onVenditaMainFabClick() { - - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); - List barcodes = new ArrayList<>(); - - String dataCons = null; - - for (OrdineVenditaInevasoDTO ordine : selectedOrders) { - if (!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode()); - - if (dataCons == null) dataCons = ordine.getDataConsS(); - else if (!dataCons.equalsIgnoreCase(ordine.getDataConsS())) dataCons = ""; - } - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - - checkSelectedOrders(selectedOrders, () -> { - RunnableArgs> onPostGetListaArts = sitArtsDTO -> { - mHelper.getBancaliLavorazioneGiaRegistrati(selectedOrders, mtbColtList -> { - progress.dismiss(); - - List codMarts = Stream.of(sitArtsDTO) - .distinctBy(SitArtOrdDTO::getCodMart) - .map(SitArtOrdDTO::getCodMart) - .toList(); - - int alreadyRegisteredUL = mtbColtList.size(); - - - DialogSimpleMessageHelper.makeInfoDialog(getActivity(), - getText(R.string.orders).toString(), - Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, selectedOrders.size()), selectedOrders.size()) - + "
" + - "" + codMarts.size() + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size()) - + "
" + - "" + alreadyRegisteredUL + " " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), - null, - () -> startPickingActivity(sitArtsDTO, selectedOrders, mtbColtList) - ).show(); - - }, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress)); - }; - - OrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrders, onPostGetListaArts, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress)); - - }, progress::dismiss); - } - - private void checkSelectedOrders(List selectedOrders, Runnable onComplete, Runnable onFailed) { - if (selectedOrders != null && selectedOrders.size() > 0) { - - //Definizione della gestione collo di default - List foundGestioni = Stream.of(selectedOrders) - .map(OrdineVenditaInevasoDTO::getGestioneEnum) - .withoutNulls() - .distinctBy(x -> x) - .toList(); - - if (foundGestioni != null && foundGestioni.size() > 1) { - DialogSimpleMessageHelper.makeErrorDialog(getContext(), new SpannableString(getString(R.string.error_multiple_gest)), null, onFailed::run).show(); - return; - } - - //Definizione del deposito di default - List foundCodMdep = Stream.of(selectedOrders) - .map(OrdineVenditaInevasoDTO::getCodMdep) - .withoutNulls() - .distinctBy(x -> x) - .toList(); - - if (foundCodMdep != null && foundCodMdep.size() > 1) { - DialogSimpleMessageHelper.makeErrorDialog(getContext(), new SpannableString(getString(R.string.error_multiple_cod_mdep_ordv)), null, onFailed::run).show(); - return; - } - } - - onComplete.run(); - } - - private void startPickingActivity(List ordini, List selectedOrders, List mtbColtList) { - Intent myIntent = new Intent(getActivity(), SpedizioneActivity.class); - - String keyPickingList = DataCache.addItem(ordini); - myIntent.putExtra("keyPickingList", keyPickingList); - - String keyTestateOrdini = DataCache.addItem(selectedOrders); - myIntent.putExtra("keyTestateOrdini", keyTestateOrdini); - - String keyColliRegistrati = DataCache.addItem(mtbColtList); - myIntent.putExtra("keyColliRegistrati", keyColliRegistrati); - - getActivity().startActivity(myIntent); - } - -} 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 deleted file mode 100644 index 37177c7b..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneHelper.java +++ /dev/null @@ -1,183 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core; - -import android.content.Context; -import android.util.Log; - -import com.annimon.stream.Stream; -import com.google.firebase.perf.metrics.Trace; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -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.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.EsitoType; -import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityDB; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityFirebase; -import it.integry.integrywmsnative.core.utility.UtilityLogger; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.gest.vendita.rest.OrdiniVenditaRESTConsumerService; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class ProdOrdineLavorazioneHelper { - - - private Context mContext; - - public ProdOrdineLavorazioneHelper(Context context){ - mContext = context; - } - - public void loadOrdini(RunnableArgs> onComplete, RunnableArgs onFailed){ - String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - - Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_ords_lavorazione"); - perfTrace.start(); - - OrdiniVenditaRESTConsumerService service = RESTBuilder.getService(OrdiniVenditaRESTConsumerService.class); - service - .listOrdiniInevasi(codMdep, "P") - .enqueue(new Callback>>() { - - @Override - public void onResponse(Call>> call, Response>> response) { - - if(response.isSuccessful()) { - - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - UtilityFirebase.stopPerformanceTrace(perfTrace, false); - onComplete.run(response.body().getDto()); - } else { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - Log.e("Ord Lavorazione", response.body().getErrorMessage()); - onFailed.run(new Exception(response.body().getErrorMessage())); - } - } else { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - Log.e("Ord Lavorazione", response.message()); - onFailed.run(new Exception(response.message())); - } - } else { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - Log.e("Ord Lavorazione", "Status " + response.code() + ": " + response.message()); - onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); - } - } - - @Override - public void onFailure(Call>> call, Throwable t) { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - Log.e("Ord Lavorazione", t.toString()); - UtilityLogger.errorMe(new Exception(t)); - onFailed.run(new Exception(t)); - } - }); - } - - public List getSelectedOrders(List ordiniList) { - return Stream.of(ordiniList) - .filter(OrdineVenditaInevasoDTO::isSelected) - .toList(); - } - - - - -// public void retrievePickingList(List orders, RunnableArgs> onComplete, RunnableArgs onFailed){ -// String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); -// -// -// Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_pick_lavorazione"); -// perfTrace.start(); -// -// List getPickingListDTOs = Stream.of(orders) -// .map(x -> new GetPickingListDTO() -// .setData(x.getDataOrdS()) -// .setGestione(x.getGestione()) -// .setNumero(x.getNumOrd()) -// .setDataConsegna(x.getDataConsS()) -// .setIdViaggio(x.getIdViaggio())) -// .toList(); -// -// OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); -// service.getArticoliFromOrdini(getPickingListDTOs).enqueue(new Callback>>() { -// @Override -// public void onResponse(Call>> call, Response>> response) { -// analyzeAnswer(response, "retrieveListaArticoliFromOrdiniVendita", onComplete, onFailed); -// } -// -// @Override -// public void onFailure(Call>> call, Throwable t) { -// UtilityFirebase.stopPerformanceTrace(perfTrace, true); -// Log.e("Ord Lavorazione", t.toString()); -// UtilityLogger.errorMe(new Exception(t)); -// onFailed.run(new Exception(t)); -// } -// }); -// -// } - - - - - - public void getBancaliLavorazioneGiaRegistrati(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { - - String baseSql = "SELECT DISTINCT mtb_colt.* " + - "FROM mtb_colt, " + - " mtb_colr " + - "WHERE mtb_colt.gestione = mtb_colr.gestione " + - " AND mtb_colt.ser_collo = mtb_colr.ser_collo " + - " AND mtb_colt.data_collo = mtb_colr.data_collo " + - " AND mtb_colt.num_collo = mtb_colr.num_collo " + - " AND mtb_colt.gestione = 'L' " + - " AND mtb_colt.segno = -1 " + - // " AND mtb_colt.ser_collo = '/' " + - " AND mtb_colt.data_doc IS NULL AND "; - - StringBuilder whereCond = new StringBuilder(); - - for(int i = 0; i < orders.size(); i++){ - - - whereCond - .append("(mtb_colr.data_ord = '").append(UtilityDate.formatDate(orders.get(i).getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)).append("' ") - .append("AND mtb_colr.num_ord = ").append(orders.get(i).getNumOrd()).append(" ") - .append("AND mtb_colr.gestione = ").append(UtilityDB.valueToString(orders.get(i).getGestione())) - .append(") "); - - if(i != (orders.size() - 1)){ - whereCond.append("OR "); - } - } - - baseSql += "( " + whereCond + ")"; - - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List 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/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneListAdapter.java deleted file mode 100644 index 20dfd3b6..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/core/ProdOrdineLavorazioneListAdapter.java +++ /dev/null @@ -1,174 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core; - -import android.content.Context; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; -import androidx.recyclerview.widget.RecyclerView; - -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.FragmentProdOrdineLavorazioneListGroupModelBinding; -import it.integry.integrywmsnative.databinding.FragmentProdOrdineLavorazioneListModelBinding; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; - -public class ProdOrdineLavorazioneListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - private Context mContext; - - private List mDataset; - private RunnableArgs mOnSingleSelectionChanged; - - static class SubheaderHolder extends RecyclerView.ViewHolder { - - FragmentProdOrdineLavorazioneListModelBinding binding; - - SubheaderHolder(FragmentProdOrdineLavorazioneListModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - static class SingleItemViewHolder extends RecyclerView.ViewHolder { - - FragmentProdOrdineLavorazioneListGroupModelBinding binding; - - SingleItemViewHolder(FragmentProdOrdineLavorazioneListGroupModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - - public ProdOrdineLavorazioneListAdapter(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { - mContext = context; - mDataset = orderItems(myDataset); - mOnSingleSelectionChanged = onSingleSelectionChanged; - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List orderItems(List dataset) { - return Stream.of(dataset) - .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd) - .toList(); - - } - - - - @Override - public ProdOrdineLavorazioneListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { - FragmentProdOrdineLavorazioneListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_lavorazione__list_model, parent, false); - return new ProdOrdineLavorazioneListAdapter.SubheaderHolder(binding); - } - - @Override - public ProdOrdineLavorazioneListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { - FragmentProdOrdineLavorazioneListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_ordine_lavorazione__list_group_model, parent, false); - return new ProdOrdineLavorazioneListAdapter.SingleItemViewHolder(binding); - } - - - @Override - public void onBindSubheaderViewHolder(ProdOrdineLavorazioneListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { - subheaderHolder.binding.ordineLavorazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd()); - - subheaderHolder.binding.getRoot().setOnClickListener(v -> { - - boolean anySelected = Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .anyMatch(OrdineVenditaInevasoDTO::isSelected); - - Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .forEach(x -> x.setSelected(!anySelected)); - }); - } - - @Override - public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) { - final OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition); - final SingleItemViewHolder holder = h; - - holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumOrd()); - - holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); - - ordine.selected.resetOnPropertyChangedCallback(); - - - String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.ordineLavorazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); - - String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.ordineLavorazioneMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString)); - - holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd()); - - if(!UtilityString.isNullOrEmpty(ordine.getCodJcom())) { -// holder.binding.ordineLavorazioneMainListGroupItemContainerTestataCodJcom.setText(ordine.getCodJcom()); - } - - holder.binding.setCheckboxValue(ordine.selected); - - holder.binding.getRoot().setOnClickListener(v -> { - ordine.setSelected(!ordine.isSelected()); - }); - - holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); - - //Bindable to View - ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - if(holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumOrd())) { - holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); - } - } - }); - - - //View to Bindable - holder.binding.ordineLavorazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { - ordine.setSelected(isChecked); - mOnSingleSelectionChanged.run(ordine); - }); - } - - - @Override - public boolean onPlaceSubheaderBetweenItems(int position) { - return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd()); - - } - - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/dto/OrdineLavorazioneInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/dto/OrdineLavorazioneInevasoDTO.java deleted file mode 100644 index acf1233f..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/dto/OrdineLavorazioneInevasoDTO.java +++ /dev/null @@ -1,447 +0,0 @@ -package it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.dto; - -import java.math.BigDecimal; -import java.text.ParseException; -import java.util.Date; - -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.utility.UtilityDate; - -public class OrdineLavorazioneInevasoDTO { - - private String data; - private Integer numero; - private Integer idViaggio; - private String gestione; - private String listino; - private String termCons; - private String codAuto; - private String codMdep; - private String descrizioneAuto; - private String codVvet; - private String descrizioneVettore; - private String dataInizTrasp; - private String descrizionePaga; - private String rifOrd; - private String codAnagOrd; - private String codJcom; - private String descrizioneCom; - private String ragSocCom; - private String ragSocOrd; - private String destinatario; - private String citta; - private String provincia; - private String indirizzo; - private BigDecimal pesoTotale; - private BigDecimal numCnfdaEvadere; - private BigDecimal numCnfDisp; - private String dataCons; - private String barcode; - private Integer numRighe; - private Integer righeInPartenza; - private BigDecimal saldoContabile; - private String codVzon; - private String ragSocOrdV; - private int colliRiservati; - private boolean existColloBoolean; - private boolean flagEvaso; - private String nomeAgente; - private String codJfas; - - public BindableBoolean selected; - - - public OrdineLavorazioneInevasoDTO() { - this.selected = new BindableBoolean(false); - } - - - public String getDataOrdS() { - return data; - } - - public Date getDataOrdD() { - return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS()); - } - - public OrdineLavorazioneInevasoDTO setData(String data) { - this.data = data; - return this; - } - - public Integer getNumOrd() { - return numero; - } - - public OrdineLavorazioneInevasoDTO setNumero(Integer numero) { - this.numero = numero; - return this; - } - - public Integer getIdViaggio() { - return idViaggio; - } - - public OrdineLavorazioneInevasoDTO setIdViaggio(Integer idViaggio) { - this.idViaggio = idViaggio; - return this; - } - - public String getGestione() { - return gestione; - } - - public GestioneEnum getGestioneEnum() { - return GestioneEnum.fromString(getGestione()); - } - - - public OrdineLavorazioneInevasoDTO setGestione(String gestione) { - this.gestione = gestione; - return this; - } - - public String getListino() { - return listino; - } - - public OrdineLavorazioneInevasoDTO setListino(String listino) { - this.listino = listino; - return this; - } - - public String getTermCons() { - return termCons; - } - - public OrdineLavorazioneInevasoDTO setTermCons(String termCons) { - this.termCons = termCons; - return this; - } - - public String getCodAuto() { - return codAuto; - } - - public OrdineLavorazioneInevasoDTO setCodAuto(String codAuto) { - this.codAuto = codAuto; - return this; - } - - public String getCodMdep() { - return codMdep; - } - - public OrdineLavorazioneInevasoDTO setCodMdep(String codMdep) { - this.codMdep = codMdep; - return this; - } - - public String getDescrizioneAuto() { - return descrizioneAuto; - } - - public OrdineLavorazioneInevasoDTO setDescrizioneAuto(String descrizioneAuto) { - this.descrizioneAuto = descrizioneAuto; - return this; - } - - public String getCodVvet() { - return codVvet; - } - - public OrdineLavorazioneInevasoDTO setCodVvet(String codVvet) { - this.codVvet = codVvet; - return this; - } - - public String getDescrizioneVettore() { - return descrizioneVettore; - } - - public OrdineLavorazioneInevasoDTO setDescrizioneVettore(String descrizioneVettore) { - this.descrizioneVettore = descrizioneVettore; - return this; - } - - public String getDataInizTraspS() { - return dataInizTrasp; - } - - public Date getDataInizTraspD() throws ParseException { - return UtilityDate.recognizeDateWithExceptionHandler(getDataInizTraspS()); - } - - public OrdineLavorazioneInevasoDTO setDataInizTrasp(String dataInizTrasp) { - this.dataInizTrasp = dataInizTrasp; - return this; - } - - public String getDescrizionePaga() { - return descrizionePaga; - } - - public OrdineLavorazioneInevasoDTO setDescrizionePaga(String descrizionePaga) { - this.descrizionePaga = descrizionePaga; - return this; - } - - public String getRifOrd() { - return rifOrd; - } - - public OrdineLavorazioneInevasoDTO setRifOrd(String rifOrd) { - this.rifOrd = rifOrd; - return this; - } - - public String getCodAnagOrd() { - return codAnagOrd; - } - - public OrdineLavorazioneInevasoDTO setCodAnagOrd(String codAnagOrd) { - this.codAnagOrd = codAnagOrd; - return this; - } - - public String getCodJcom() { - return codJcom; - } - - public OrdineLavorazioneInevasoDTO setCodJcom(String codJcom) { - this.codJcom = codJcom; - return this; - } - - public String getDescrizioneCom() { - return descrizioneCom; - } - - public OrdineLavorazioneInevasoDTO setDescrizioneCom(String descrizioneCom) { - this.descrizioneCom = descrizioneCom; - return this; - } - - public String getRagSocCom() { - return ragSocCom; - } - - public OrdineLavorazioneInevasoDTO setRagSocCom(String ragSocCom) { - this.ragSocCom = ragSocCom; - return this; - } - - public String getRagSocOrd() { - return ragSocOrd; - } - - public OrdineLavorazioneInevasoDTO setRagSocOrd(String ragSocOrd) { - this.ragSocOrd = ragSocOrd; - return this; - } - - public String getDestinatario() { - return destinatario; - } - - public OrdineLavorazioneInevasoDTO setDestinatario(String destinatario) { - this.destinatario = destinatario; - return this; - } - - public String getCitta() { - return citta; - } - - public OrdineLavorazioneInevasoDTO setCitta(String citta) { - this.citta = citta; - return this; - } - - public String getProvincia() { - return provincia; - } - - public OrdineLavorazioneInevasoDTO setProvincia(String provincia) { - this.provincia = provincia; - return this; - } - - public String getIndirizzo() { - return indirizzo; - } - - public OrdineLavorazioneInevasoDTO setIndirizzo(String indirizzo) { - this.indirizzo = indirizzo; - return this; - } - - public BigDecimal getPesoTotale() { - return pesoTotale; - } - - public OrdineLavorazioneInevasoDTO setPesoTotale(BigDecimal pesoTotale) { - this.pesoTotale = pesoTotale; - return this; - } - - public BigDecimal getNumCnfdaEvadere() { - return numCnfdaEvadere; - } - - public OrdineLavorazioneInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) { - this.numCnfdaEvadere = numCnfdaEvadere; - return this; - } - - public BigDecimal getNumCnfDisp() { - return numCnfDisp; - } - - public OrdineLavorazioneInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) { - this.numCnfDisp = numCnfDisp; - return this; - } - - public String getDataConsS() { - return dataCons; - } - - public Date getDataConsD() { - return UtilityDate.recognizeDateWithExceptionHandler(getDataConsS()); - } - - public OrdineLavorazioneInevasoDTO setDataCons(String dataCons) { - this.dataCons = dataCons; - return this; - } - - public String getBarcode() { - return barcode; - } - - public OrdineLavorazioneInevasoDTO setBarcode(String barcode) { - this.barcode = barcode; - return this; - } - - public Integer getNumRighe() { - return numRighe; - } - - public OrdineLavorazioneInevasoDTO setNumRighe(Integer numRighe) { - this.numRighe = numRighe; - return this; - } - - public Integer getRigheInPartenza() { - return righeInPartenza; - } - - public OrdineLavorazioneInevasoDTO setRigheInPartenza(Integer righeInPartenza) { - this.righeInPartenza = righeInPartenza; - return this; - } - - public BigDecimal getSaldoContabile() { - return saldoContabile; - } - - public OrdineLavorazioneInevasoDTO setSaldoContabile(BigDecimal saldoContabile) { - this.saldoContabile = saldoContabile; - return this; - } - - public String getCodVzon() { - return codVzon; - } - - public OrdineLavorazioneInevasoDTO setCodVzon(String codVzon) { - this.codVzon = codVzon; - return this; - } - - public String getRagSocOrdV() { - return ragSocOrdV; - } - - public OrdineLavorazioneInevasoDTO setRagSocOrdV(String ragSocOrdV) { - this.ragSocOrdV = ragSocOrdV; - return this; - } - - public int getColliRiservati() { - return colliRiservati; - } - - public OrdineLavorazioneInevasoDTO setColliRiservati(int colliRiservati) { - this.colliRiservati = colliRiservati; - return this; - } - - public boolean isExistColloBoolean() { - return existColloBoolean; - } - - public OrdineLavorazioneInevasoDTO setExistColloBoolean(boolean existColloBoolean) { - this.existColloBoolean = existColloBoolean; - return this; - } - - public boolean isFlagEvaso() { - return flagEvaso; - } - - public OrdineLavorazioneInevasoDTO setFlagEvaso(boolean flagEvaso) { - this.flagEvaso = flagEvaso; - return this; - } - - public String getNomeAgente() { - return nomeAgente; - } - - public OrdineLavorazioneInevasoDTO setNomeAgente(String nomeAgente) { - this.nomeAgente = nomeAgente; - return this; - } - - public String getCodJfas() { - return codJfas; - } - - public OrdineLavorazioneInevasoDTO setCodJfas(String codJfas) { - this.codJfas = codJfas; - return this; - } - - public boolean isSelected() { - return selected.get(); - } - - public OrdineLavorazioneInevasoDTO setSelected(boolean selected) { - this.selected.set(selected); - return this; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - OrdineLavorazioneInevasoDTO that = (OrdineLavorazioneInevasoDTO) o; - - if (!data.equals(that.data)) return false; - if (!numero.equals(that.numero)) return false; - return getGestione().equals(that.getGestione()); - } - - @Override - public int hashCode() { - int result = data.hashCode(); - result = 31 * result + numero.hashCode(); - result = 31 * result + getGestione().hashCode(); - return result; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdComponent.java new file mode 100644 index 00000000..1cdb1bbf --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord; + +import dagger.Subcomponent; + +@Subcomponent +public interface ProdPosizionamentoDaOrdComponent { + + @Subcomponent.Factory + interface Factory { + + ProdPosizionamentoDaOrdComponent create(); + } + + void inject(ProdPosizionamentoDaOrdFragment prodPosizionamentoDaOrdFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdFragment.java new file mode 100644 index 00000000..3e997a0c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdFragment.java @@ -0,0 +1,63 @@ +package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.Fragment; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.databinding.FragmentProdPosizionamentoDaOrdBinding; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link ProdPosizionamentoDaOrdFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class ProdPosizionamentoDaOrdFragment extends Fragment { + + private FragmentProdPosizionamentoDaOrdBinding mBinding = null; + + @Inject + ProdPosizionamentoDaOrdViewModel mViewModel; + + public ProdPosizionamentoDaOrdFragment() { + // Required empty public constructor + } + + + public static ProdPosizionamentoDaOrdFragment newInstance() { + ProdPosizionamentoDaOrdFragment fragment = new ProdPosizionamentoDaOrdFragment(); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_posizionamento_da_ord, container,false); + + MainApplication.appComponent + .prodPosizionamentoDaOrdComponent() + .create() + .inject(this); + +// mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); + mBinding.setView(this); + mBinding.setViewmodel(mViewModel); + + return mBinding.getRoot(); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdModule.java new file mode 100644 index 00000000..3fdd2533 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdModule.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = ProdPosizionamentoDaOrdComponent.class) +public class ProdPosizionamentoDaOrdModule { + + + + + @Provides + @Singleton + ProdPosizionamentoDaOrdViewModel providesProdPosizionamentoDaOrdViewModel() { + return new ProdPosizionamentoDaOrdViewModel(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdViewModel.java new file mode 100644 index 00000000..a855c668 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_posizionamento_da_ord/ProdPosizionamentoDaOrdViewModel.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord; + +import javax.inject.Inject; + +public class ProdPosizionamentoDaOrdViewModel { + + + @Inject + public ProdPosizionamentoDaOrdViewModel() { + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index b53f1ee2..3252de17 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -3,27 +3,23 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale; import android.content.Context; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import java.util.ArrayList; +import java.util.List; 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.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBinding; import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper; import it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel.ProdRecuperoMaterialeViewModel; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper; -import it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel.ProdVersamentoMaterialViewModel; /** * A simple {@link Fragment} subclass. @@ -33,6 +29,8 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr private ProdRecuperoMaterialeViewModel mViewmodel; private ProdRecuperoMaterialeHelper mHelper; + private List mOnPreDestroyList = new ArrayList<>(); + public ProdRecuperoMaterialeFragment() { // Required empty public constructor } @@ -57,7 +55,6 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_recupero_materiale, container, false); - init(); return mBinding.getRoot(); } @@ -75,10 +72,17 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr titleText.setText(context.getText(R.string.prod_recupero_materiale_title_fragment).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } @Override public void onDestroy() { + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } super.onDestroy(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java index 85837ff5..3be6c18c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java @@ -262,7 +262,7 @@ public class ProdRecuperoMaterialeHelper { .distinct() .toList(); - ArticoloRESTConsumer.getByCodMart(codMarts, arts -> { + ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> { if(arts != null && arts.size() > 0) { for (HistoryVersamentoProdULDTO value : newUlList) { 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 bcd4d044..c74b258e 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 @@ -299,7 +299,7 @@ public class ProdRecuperoMaterialeViewModel { colliToSave.add(mtbColtScarico); boolean finalShouldPrint = shouldPrint; - ColliMagazzinoRESTConsumer.saveColli(colliToSave, value -> { + ColliMagazzinoRESTConsumer.saveColliStatic(colliToSave, value -> { FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java index b9c9e377..b704c7d2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java @@ -2,14 +2,16 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale; import android.content.Context; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import java.util.ArrayList; +import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; @@ -17,7 +19,6 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding; import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper; import it.integry.integrywmsnative.gest.prod_versamento_materiale.viewmodel.ProdVersamentoMaterialViewModel; -import it.integry.integrywmsnative.gest.versamento_merce.viewmodel.VersamentoMerceViewModel; public class ProdVersamentoMaterialeFragment extends Fragment implements ITitledFragment { @@ -25,6 +26,8 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled private ProdVersamentoMaterialViewModel mViewmodel; private ProdVersamentoMaterialHelper mHelper; + private List mOnPreDestroyList = new ArrayList<>(); + public ProdVersamentoMaterialeFragment() { // Required empty public constructor } @@ -40,9 +43,7 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mViewmodel = new ProdVersamentoMaterialViewModel(); - } @Override @@ -58,17 +59,13 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled } - @Override - public void onAttach(Context context) { - super.onAttach(context); - - } - - @Override - public void onDetach() { - super.onDetach(); + public void onDestroy() { + super.onDestroy(); + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } } @@ -81,7 +78,6 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled }); mViewmodel.openLU(); - } @@ -89,4 +85,9 @@ public class ProdVersamentoMaterialeFragment extends Fragment implements ITitled public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.prod_versamento_materiale_title_fragment).toString()); } + + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java index 70a13b3e..1a8a927c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java @@ -113,7 +113,7 @@ public class ProdVersamentoMaterialViewModel { } private void choosePosition() { - DialogAskPositionOfLU.makeBase(mContext, null, true, (status, mtbDepoPosizione) -> { + DialogAskPositionOfLU.makeBase(mContext, true, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { ((IPoppableActivity) mContext).pop(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index 39899842..d2cdddbe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -58,12 +58,17 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled private List mRenderedOrderList = new ArrayList<>(); private boolean mRedirectToNewOrder = true; + private final List mOnPreDestroyList = new ArrayList<>(); + @Inject GrigliaRepository mGrigliaRepository; + @Inject ArticoliOrdineRepository mArticoliOrdineRepository; + @Inject ArticoloGrigliaRepository mArticoloGrigliaRepository; + @Inject OrdineRepository mOrdineRepository; @@ -117,6 +122,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + private void setGriglia(Griglia griglia) { mGriglia = griglia; mBinding.fabNewOrder.setVisibility(View.VISIBLE); @@ -191,8 +201,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled } private void deleteOrdine(Ordine ordine) { - - String text = "Stai per eliminare un ordine sei sicuro?"; DialogSimpleMessageHelper.makeWarningDialog(getActivity(), new SpannableString(Html.fromHtml(text)), null, () -> getActivity().runOnUiThread(() -> { @@ -231,8 +239,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); } @Override @@ -242,4 +250,13 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled fetchOrders(); } } + + @Override + public void onDestroy() { + super.onDestroy(); + + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java deleted file mode 100644 index f4cb2837..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java +++ /dev/null @@ -1,114 +0,0 @@ -package it.integry.integrywmsnative.gest.pv_ordini_acquisto; - -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.text.SpannableString; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource; -import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia; -import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; -import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; -import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding; -import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvTransmittedListAdapter; -import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato; -import it.integry.integrywmsnative.ui.ElevatedToolbar; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; - -public class PVOrdiniAcquistoTransmittedListFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { - - private FragmentPvOrdiniATrasmessiElencoBinding mBinding; - private OrdineAcquistoPvTransmittedListAdapter mAdapter; - - private List mOriginalOrderList; - private List mRenderedOrderList = new ArrayList<>(); - - private DialogOrdineProduzioneFiltroAvanzato.DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel; - - public PVOrdiniAcquistoTransmittedListFragment() { - // Required empty public constructor - } - - public static PVOrdiniAcquistoTransmittedListFragment newInstance() { - PVOrdiniAcquistoTransmittedListFragment fragment = new PVOrdiniAcquistoTransmittedListFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { - // Inflate the layout for this fragment - - mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_a_trasmessi_elenco, container, false); - mBinding.setView(this); - - - //init(); - return mBinding.getRoot(); - } - - @Override - public void onCreateActionBar(AppCompatTextView titleText, Context context) { - titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString()); - } - - @Override - public void setScrollToolbar(ElevatedToolbar toolbar) { - - } - - @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - - } - - @Override - public void onFilterClick() { - - } - - private void init(){ - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - - //TODO: resolve databinding - OrdineDataSource repository = null; //new OrdineDataSource(); - - repository.selectAllTransmitted((ordini)->{ - mOriginalOrderList = ordini; - mBinding.ordiniAEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - refreshRenderedOrdini(ordini); - initRecyclerView(); - progress.dismiss(); - },(e)->{ - progress.dismiss(); - String errorMessage = e.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); - }); - - } - - private void initRecyclerView() { - mAdapter = new OrdineAcquistoPvTransmittedListAdapter(getActivity(), mRenderedOrderList); - mBinding.ordineAMainList.setAdapter(mAdapter); - } - - private void refreshRenderedOrdini(List ordini) { - mRenderedOrderList.clear(); - if(ordini != null) mRenderedOrderList.addAll(ordini); - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java deleted file mode 100644 index d7f4449e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java +++ /dev/null @@ -1,133 +0,0 @@ -package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core; - -import android.content.Context; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.RecyclerView; - -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding; -import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; - -public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - - - private Context mContext; - - private List mOriginalDataset; - private List mDataset; - - - static class SubheaderHolder extends RecyclerView.ViewHolder { - - FragmentOrdineAPvTransmittedListModelBinding binding; - - SubheaderHolder(FragmentOrdineAPvTransmittedListModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - static class SingleItemViewHolder extends RecyclerView.ViewHolder { - - FragmentOrdiniAPvListSingleItemBinding binding; - - SingleItemViewHolder(FragmentOrdiniAPvListSingleItemBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - - public OrdineAcquistoPvTransmittedListAdapter(Context context, List myDataset) { - mContext = context; - mOriginalDataset = myDataset; - mDataset = orderItems(myDataset); - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List orderItems(List dataset) { - return Stream.of(dataset) - .distinctBy(OrdineWithGriglia::getGriglia) - .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) - .toList(); - - } - - - - @Override - public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { - FragmentOrdineAPvTransmittedListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordine_a_pv_transmitted__list_model, parent, false); - return new SubheaderHolder(binding); - } - - @Override - public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { - FragmentOrdiniAPvListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordini_a_pv__list_single_item, parent, false); - return new SingleItemViewHolder(binding); - } - - - @Override - public void onBindSubheaderViewHolder(OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { - subheaderHolder.binding.ordineAPvMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGriglia().getCodAlis()); - - } - - @Override - public void onBindItemViewHolder(OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder h, int itemPosition) { - final OrdineWithGriglia ordine = mDataset.get(itemPosition); - final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h; - - - String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - - holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO"); - - holder.binding.descriptionMain.setText(Html.fromHtml(testataOrdString)); - - - holder.binding.getRoot().setOnClickListener(v -> { - //TODO: aprire descrizione Ordine - }); - - } - - - @Override - public boolean onPlaceSubheaderBetweenItems(int position) { - return !(this.mDataset.get(position).getGriglia().getGrigliaId() == this.mDataset.get(position + 1).getGriglia().getGrigliaId()); - - } - - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - -} 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 a60346f2..0234d063 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 @@ -25,6 +25,7 @@ import com.tfb.fbtoast.FBToast; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; +import java.util.List; import javax.inject.Inject; @@ -83,6 +84,8 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme private Dialog mCurrentProgress; + private List mOnPreDestroyList = new ArrayList<>(); + public RettificaGiacenzeFragment() { // Required empty public constructor } @@ -198,12 +201,25 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme super.onAttach(context); } + @Override + public void onDestroy() { + for(Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + + super.onDestroy(); + } @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.rettifica_giacenze_fragment_title).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); @@ -489,7 +505,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme 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) -> { + DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> { if (status == DialogConsts.Results.ABORT) { onComplete.run(false, null); } else { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index ef2f7c3d..91d4fe71 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -88,14 +88,10 @@ public class RettificaGiacenzeViewModel { 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); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index 1041401a..1da7d703 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -1,19 +1,12 @@ package it.integry.integrywmsnative.gest.settings; import android.content.Context; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import androidx.appcompat.widget.AppCompatTextView; import androidx.preference.PreferenceFragmentCompat; + import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.databinding.FragmentMainSettingsBinding; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; public class MainSettingsFragment extends PreferenceFragmentCompat implements ITitledFragment { @@ -25,6 +18,11 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT titleText.setText(context.getText(R.string.settings_category).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + + } + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.app_preferences, rootKey); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java deleted file mode 100644 index b5361fda..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java +++ /dev/null @@ -1,98 +0,0 @@ -package it.integry.integrywmsnative.gest.settings; - -import android.content.Context; -import android.os.Bundle; - -import androidx.appcompat.widget.AppCompatTextView; -import androidx.preference.CheckBoxPreference; -import androidx.preference.EditTextPreference; -import androidx.preference.ListPreference; -import androidx.preference.PreferenceCategory; -import androidx.preference.PreferenceFragmentCompat; -import androidx.preference.PreferenceScreen; -import androidx.appcompat.view.ContextThemeWrapper; -import android.util.TypedValue; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; -import it.integry.integrywmsnative.core.settings.SharedPrefKeys; -import it.integry.integrywmsnative.core.utility.UtilityArray; -import it.integry.integrywmsnative.core.interfaces.ITitledFragment; - -public class SettingsPreferenceFragment extends PreferenceFragmentCompat implements ITitledFragment { - @Override - public void onCreatePreferences(Bundle bundle, String s) { - - PrinterRESTConsumer.getAvailablePrintersStatic(new ISimpleOperationCallback>() { - @Override - public void onSuccess(final List availablePrinters) { - initScreen(availablePrinters); - } - - @Override - public void onFailed(Exception ex) { - - } - }); - - - - } - - - @Override - public void onCreateActionBar(AppCompatTextView titleText, Context context) { - titleText.setText(context.getText(R.string.settings_category).toString()); - } - - - - private void initScreen(List availablePrinters) { - // Load the Preferences from the XML file - Context activityContext = getActivity(); - - PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(activityContext); - setPreferenceScreen(preferenceScreen); - - TypedValue themeTypedValue = new TypedValue(); - activityContext.getTheme().resolveAttribute(R.attr.preferenceTheme, themeTypedValue, true); - ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(activityContext, themeTypedValue.resourceId); - - // We instance each Preference using our ContextThemeWrapper object - PreferenceCategory preferenceCategory = new PreferenceCategory(contextThemeWrapper); - preferenceCategory.setTitle("Category test"); - - EditTextPreference editTextPreference = new EditTextPreference(contextThemeWrapper); - editTextPreference.setKey("edittext"); - editTextPreference.setTitle("EditText test"); - - CheckBoxPreference checkBoxPreference = new CheckBoxPreference(contextThemeWrapper); - checkBoxPreference.setTitle("Checkbox test"); - checkBoxPreference.setKey("checkbox"); - checkBoxPreference.setChecked(true); - - availablePrinters.add(0, "Nessuna"); - String[] availablePritersArray = UtilityArray.listToArray(availablePrinters, String.class); - - ListPreference listPreferece = new ListPreference(contextThemeWrapper); - listPreferece.setTitle("Current printer"); - listPreferece.setKey(SharedPrefKeys.ACCETTAZIONE_PRINTER); - listPreferece.setEntries(availablePritersArray); - listPreferece.setEntryValues(availablePritersArray); - - // It's REALLY IMPORTANT to add Preferences with child Preferences to the Preference Hierarchy first - // Otherwise, the PreferenceManager will fail to load their keys - - // First we add the category to the root PreferenceScreen - getPreferenceScreen().addPreference(preferenceCategory); - - // Then their child to it - preferenceCategory.addPreference(editTextPreference); - preferenceCategory.addPreference(checkBoxPreference); - preferenceCategory.addPreference(listPreferece); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index dc3f4356..023f5822 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -39,7 +39,10 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgsss; 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.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -55,10 +58,10 @@ import it.integry.integrywmsnative.gest.spedizione.core.SpedizioneListModel; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; @@ -67,6 +70,7 @@ import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso; 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_art.DialogScanArt; +import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener { @@ -92,14 +96,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo private int barcodeScannerIstanceID = -1; private ArrayList mSitArtOrd; - private ArrayList mTestateOrdini; + private ArrayList mTestateOrdini; private ArrayList mColliRegistrati; + private GestioneEnum mGestioneCol; + private int mSegnoCol; private boolean mShouldCloseActivity; private final int PICK_UL_REQUEST = 1; - public static void startActivity(Context context, List ordini, List selectedOrders, List mtbColtList) { + public static void startActivity(Context context, List ordini, List selectedOrders, List mtbColtList, GestioneEnum gestioneCol, int segnoCol) { Intent myIntent = new Intent(context, SpedizioneActivity.class); String keyPickingList = DataCache.addItem(ordini); @@ -111,6 +117,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo String keyColliRegistrati = DataCache.addItem(mtbColtList); myIntent.putExtra("keyColliRegistrati", keyColliRegistrati); + String keyGestioneCol = DataCache.addItem(gestioneCol); + myIntent.putExtra("keyGestioneCol", keyGestioneCol); + + String keySegnoCol = DataCache.addItem(segnoCol); + myIntent.putExtra("keySegnoCol", keySegnoCol); + context.startActivity(myIntent); } @@ -121,6 +133,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mSitArtOrd = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); mTestateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); mColliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); + mGestioneCol = DataCache.retrieveItem(getIntent().getStringExtra("keyGestioneCol")); + mSegnoCol = DataCache.retrieveItem(getIntent().getStringExtra("keySegnoCol")); mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione); @@ -171,7 +185,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mSitArtOrd, mTestateOrdini, mColliRegistrati, - reportNameSpedizioneChiudiOrdine); + reportNameSpedizioneChiudiOrdine, + mGestioneCol, mSegnoCol); } @Override @@ -779,6 +794,27 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo .show(getSupportFragmentManager(), "tag"); } + @Override + public void onLUPositionChangeRequest(RunnableArgss onComplete) { + DialogYesNo.make(this, "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> { + switch (result) { + case YES: + DialogAskPositionOfLU.makeBase(this, false, (status, mtbDepoPosizione) -> { + if (status == DialogConsts.Results.ABORT) { + onComplete.run(false, null); + } else { + onComplete.run(true, mtbDepoPosizione); + } + }, this::onError).show(); + break; + + case NO: + onComplete.run(false, null); + break; + } + }).show(); + } + @Override public void onRowSaved() { FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java index 1022a23a..8c291afc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java @@ -7,6 +7,7 @@ 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; +import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; @@ -19,8 +20,8 @@ public class SpedizioneModule { } @Provides - SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { - return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer); + SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer) { + return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, posizioniRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index f1d0b6db..aec26d86 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.spedizione; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; - import com.annimon.stream.Optional; import com.annimon.stream.Stream; @@ -24,6 +23,12 @@ import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.exception.InvalidLUException; +import it.integry.integrywmsnative.core.exception.NoArtsFoundException; +import it.integry.integrywmsnative.core.exception.NoLUFoundException; +import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; +import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; +import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; @@ -38,6 +43,7 @@ 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.model.MtbPartitaMag; +import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -48,6 +54,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -55,30 +62,23 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException; -import it.integry.integrywmsnative.core.exception.InvalidLUException; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; -import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; -import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException; -import it.integry.integrywmsnative.core.exception.NoArtsFoundException; -import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.gest.spedizione.exceptions.NoOrdersSelectedException; -import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException; -import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; -import it.integry.integrywmsnative.core.model.dto.PickDataDTO; +import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class SpedizioneViewModel { - private List mTestateOrdini; + private List mTestateOrdini; private MutableLiveData> mPickingList = new MutableLiveData<>(); private List mColliRegistrati = new ArrayList<>(); private Listener mListener; private GestioneEnum mDefaultGestioneOfUL = null; + private int mDefaultSegnoCol = -1; private String mDefaultCodMdep = null; private List mDefaultFiltroOrdine = new ArrayList<>(); private String mDefaultCodAnagOfUL = null; @@ -103,6 +103,7 @@ public class SpedizioneViewModel { private final OrdiniRESTConsumer mOrdiniRestConsumerService; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final PrinterRESTConsumer mPrinterRESTConsumer; + private final PosizioniRESTConsumer mPosizioneRESTConsumer; @Inject public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, @@ -110,13 +111,15 @@ public class SpedizioneViewModel { ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - PrinterRESTConsumer printerRESTConsumer) { + PrinterRESTConsumer printerRESTConsumer, + PosizioniRESTConsumer posizioniRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliDataRecoverService = colliDataRecoverService; this.mOrdiniRestConsumerService = ordiniRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mPrinterRESTConsumer = printerRESTConsumer; + this.mPosizioneRESTConsumer = posizioniRESTConsumer; } @@ -126,9 +129,11 @@ public class SpedizioneViewModel { boolean shouldAskPesoLU, boolean canOverflowOrderQuantity, List pickingList, - List testateOrdini, + List testateOrdini, List colliRegistrati, - String reportNameSpedizioneChiudiOrdine) { + String reportNameSpedizioneChiudiOrdine, + GestioneEnum gestioneCol, + int segnoCol) { this.sendOnLoadingStarted(); this.mDefaultCodMdep = codMdep; @@ -152,6 +157,9 @@ public class SpedizioneViewModel { }); } + this.mDefaultGestioneOfUL = gestioneCol; + this.mDefaultSegnoCol = segnoCol; + this.initDefaultVars(); } @@ -161,7 +169,7 @@ public class SpedizioneViewModel { .map(SitArtOrdDTO::getCodMart) .toList(); - ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> { + this.mArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> { List pickingList = Stream.of(sitArtOrdList) .map(sitArtOrdDTO -> { MtbAart mtbAart = null; @@ -189,19 +197,21 @@ public class SpedizioneViewModel { return; } - //Definizione della gestione collo di default - List foundGestioni = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getGestioneEnum) - .withoutNulls() - .distinct() - .toList(); + if (mDefaultGestioneOfUL == null) { + //Definizione della gestione collo di default + List foundGestioni = Stream.of(mTestateOrdini) + .map(OrdineUscitaInevasoDTO::getGestioneEnum) + .withoutNulls() + .distinct() + .toList(); - if (foundGestioni != null && foundGestioni.size() > 1) { - return; - } else if (foundGestioni != null && foundGestioni.size() == 1) { - mDefaultGestioneOfUL = foundGestioni.get(0); - } else { - mDefaultGestioneOfUL = GestioneEnum.VENDITA; + if (foundGestioni != null && foundGestioni.size() > 1) { + return; + } else if (foundGestioni != null && foundGestioni.size() == 1) { + mDefaultGestioneOfUL = foundGestioni.get(0); + } else { + mDefaultGestioneOfUL = GestioneEnum.VENDITA; + } } //Definizione del filtro ordine da applicare a tutti i colli generati @@ -218,7 +228,7 @@ public class SpedizioneViewModel { //Definizione del codAnag List foundCodAnag = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getCodAnagOrd) + .map(OrdineUscitaInevasoDTO::getCodAnagOrd) .distinctBy(x -> x) .toList(); @@ -229,7 +239,7 @@ public class SpedizioneViewModel { //Definizione del codAnag List foundRagSoc = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getRagSocOrd) + .map(OrdineUscitaInevasoDTO::getRagSocOrd) .distinctBy(x -> x) .toList(); @@ -240,7 +250,7 @@ public class SpedizioneViewModel { //Definizione del rifOrd List foundRifOrd = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getRifOrd) + .map(OrdineUscitaInevasoDTO::getRifOrd) .distinctBy(x -> x) .toList(); @@ -251,7 +261,7 @@ public class SpedizioneViewModel { //Definizione del numOrd List foundNumOrd = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getNumOrd) + .map(OrdineUscitaInevasoDTO::getNumOrd) .withoutNulls() .distinctBy(x -> x) .toList(); @@ -263,7 +273,7 @@ public class SpedizioneViewModel { //Definizione del dataOrd List foundDataOrd = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getDataOrdD) + .map(OrdineUscitaInevasoDTO::getDataOrdD) .withoutNulls() .distinctBy(x -> x) .toList(); @@ -275,7 +285,7 @@ public class SpedizioneViewModel { //Definizione del codJfas List foundCodJfas = Stream.of(mTestateOrdini) - .map(OrdineVenditaInevasoDTO::getCodJfas) + .map(OrdineUscitaInevasoDTO::getCodJfas) .distinctBy(x -> x) .toList(); @@ -372,6 +382,10 @@ public class SpedizioneViewModel { if (this.mListener != null) mListener.onRowSaved(); } + private void sendLUPositionChangeRequest(RunnableArgss onComplete) { + if (this.mListener != null) mListener.onLUPositionChangeRequest(onComplete); + } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { //Se non c'è una UL aperta @@ -383,6 +397,10 @@ public class SpedizioneViewModel { //invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul //dell'etichetta anonima this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); + + } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO) && mDefaultSegnoCol == 1) { + this.processBarcodePosizioneNotOpenedLU(barcodeScanDTO, onComplete); + } else { this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete); } @@ -398,6 +416,46 @@ public class SpedizioneViewModel { } } + private void processBarcodePosizioneNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(barcodeScanDTO.getStringValue()); + + if (foundPosizione != null) { + if (foundPosizione.isFlagMonoCollo()) { + + this.mPosizioneRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { + if (mtbColtList == null || mtbColtList.size() != 1) { + //Nessuna UL trovata oppure più UL nella stessa posizione + this.sendError(new NoLUFoundException()); + } else { + mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { + + if (mtbColt.getSegno() != mDefaultSegnoCol) { + this.sendError(new InvalidLUException()); + onComplete.run(); + } else { + this.mCurrentMtbColt = mtbColt; + mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini); + + this.sendLUOpened(mtbColt); + + onComplete.run(); + } + + }, this::sendError); + } + }, this::sendError); + + } else { + //La posizione non è Mono-UL + this.sendError(new CurrentMonoLUPositionIsNotCorrectException()); + } + + } else { + //Nessuna posizione trovata con questo barcode + this.sendError(new ScannedPositionNotExistException()); + } + } + private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { this.createNewLU( null, @@ -459,7 +517,7 @@ public class SpedizioneViewModel { if (foundPosizione != null) { if (foundPosizione.isFlagMonoCollo()) { - PosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { + this.mPosizioneRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { if (mtbColtList == null || mtbColtList.size() != 1) { //Nessuna UL trovata oppure più UL nella stessa posizione @@ -748,7 +806,7 @@ public class SpedizioneViewModel { MtbColr mtbColrToUse = refMtbColr != null ? refMtbColr : scannedMtbColr; if (mtbColrToUse != null) { - if(pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { + if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { if (UtilityBigDecimal.equalsOrLowerThan(mtbColrToUse.getQtaCol(), qtaDaEvadere)) { numCnfDaPrelevare = mtbColrToUse.getNumCnf(); qtaColDaPrelevare = mtbColrToUse.getQtaCol(); @@ -1109,7 +1167,7 @@ public class SpedizioneViewModel { MtbColt mtbColt = new MtbColt(); mtbColt.initDefaultFields(); mtbColt.setGestione(mDefaultGestioneOfUL) - .setSegno(-1) + .setSegno(mDefaultSegnoCol) .setRifOrd(mDefaultRifOrdOfUL) .setNumOrd(mDefaultNumOrdOfUL) .setDataOrdD(mDefaultDataOrdOfUL) @@ -1118,7 +1176,7 @@ public class SpedizioneViewModel { .setRagSocCliente(mDefaultRagSocOfUL) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); - if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE) + if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE && mDefaultSegnoCol == -1) mtbColt.setPosizione(mDefaultCodJFasOfUL); if (customNumCollo != null) mtbColt.setNumCollo(customNumCollo); if (!UtilityString.isNullOrEmpty(customSerCollo)) mtbColt.setSerCollo(customSerCollo); @@ -1240,12 +1298,12 @@ public class SpedizioneViewModel { .setCodTagl(mtbColr.getCodTagl()) .setCodCol(mtbColr.getCodCol()); - if(refMtbColt != null) { + if (refMtbColt != null) { refMtbColr - .setNumCollo(refMtbColt.getNumCollo()) - .setDataCollo(refMtbColt.getDataColloS()) - .setSerCollo(refMtbColt.getSerCollo()) - .setGestione(refMtbColt.getGestione()); + .setNumCollo(refMtbColt.getNumCollo()) + .setDataCollo(refMtbColt.getDataColloS()) + .setSerCollo(refMtbColt.getSerCollo()) + .setGestione(refMtbColt.getGestione()); } mtbColr.setRefMtbColr(refMtbColr); } @@ -1362,6 +1420,7 @@ public class SpedizioneViewModel { this.sendOnLoadingStarted(); + mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> { if (canBeDeleted) { @@ -1370,49 +1429,120 @@ public class SpedizioneViewModel { this.sendOnLoadingEnded(); }); } else { + if (mDefaultSegnoCol == -1) { + Runnable saveAction = () -> { + mColliMagazzinoRESTConsumer.updateDataFine( + mCurrentMtbColt, () -> distribuisciLU((generatedMtbColts) -> { + if (shouldPrint) + printCollo(generatedMtbColts, () -> this.postCloseOperations(generatedMtbColts)); + else { + postCloseOperations(generatedMtbColts); + } + }), this::sendError); + }; - Runnable saveAction = () -> { - mColliMagazzinoRESTConsumer.updateDataFine( - mCurrentMtbColt, () -> distribuisciLU((generatedMtbColts) -> { - if (shouldPrint) - printCollo(generatedMtbColts, () -> this.postCloseOperations(generatedMtbColts)); - else { - postCloseOperations(generatedMtbColts); - } - }), this::sendError); - }; + if (mShouldAskPesoLU) { + this.sendLUPesoRequired(mCurrentMtbColt.getCodTcol(), + mCurrentMtbColt.getPesoNettoKg(), + mCurrentMtbColt.getPesoKg(), + (newCodTcol, newNetWeight, newGrossWeight) -> { - if (mShouldAskPesoLU) { - this.sendLUPesoRequired(mCurrentMtbColt.getCodTcol(), - mCurrentMtbColt.getPesoNettoKg(), - mCurrentMtbColt.getPesoKg(), - (newCodTcol, newNetWeight, newGrossWeight) -> { + mCurrentMtbColt.setCodTcol(newCodTcol); + mCurrentMtbColt.setPesoNettoKg(newNetWeight); + mCurrentMtbColt.setPesoKg(newGrossWeight); - mCurrentMtbColt.setCodTcol(newCodTcol); - mCurrentMtbColt.setPesoNettoKg(newNetWeight); - mCurrentMtbColt.setPesoKg(newGrossWeight); - - saveAction.run(); - }); + saveAction.run(); + }); + } else { + saveAction.run(); + } } else { - saveAction.run(); + + distribuisciLU(mtbColts -> { + this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { + + if (shouldChangePosition) { + + if (mtbDepoPosizione != null) { + if (mtbDepoPosizione.isFlagMonoCollo()) { + this.mPosizioneRESTConsumer.getBancaliInPosizione(mtbDepoPosizione, destMtbColtList -> { + if (destMtbColtList == null || destMtbColtList.size() != 1) { + //Nessuna UL trovata oppure più UL nella stessa posizione + this.sendError(new NoLUFoundException()); + } else { + if (destMtbColtList.get(0).getSegno() != mDefaultSegnoCol) { + this.sendError(new InvalidLUException()); + } else { + moveLUtoLU(mtbColts, destMtbColtList.get(0), savedMtbColt -> { + ArrayList savedMtbColtList = new ArrayList<>(); + savedMtbColtList.add(savedMtbColt); + postCloseOperations(savedMtbColtList); + }); + } + + } + }, this::sendError); + } else { + //La posizione non è Mono-UL + this.sendError(new CurrentMonoLUPositionIsNotCorrectException()); + } + } else { + //Nessuna posizione trovata con questo barcode + this.sendError(new ScannedPositionNotExistException()); + } + } else { + postCloseOperations(mtbColts); + } + + }); + }); } } }, this::sendError); + + } private void distribuisciLU(RunnableArgs> onComplete) { - MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); - ordiniVendita.distribuisciCollo(cloneMtbColt, mTestateOrdini, mtbColts -> { + mColliMagazzinoRESTConsumer.getMultipleByTestate(mtbColts, false, onComplete, this::sendError); + }, this::sendError); + } - mColliMagazzinoRESTConsumer.getMultipleByTestate(mtbColts, true, onComplete, this::sendError); + private void moveLUtoLU(List sourceMtbColts, MtbColt destMtbColt, RunnableArgs onComplete) { + destMtbColt.setMtbColr(new ObservableArrayList<>()); + + for (MtbColt sourceMtbColt : sourceMtbColts) { + for (MtbColr sourceMtbColr : sourceMtbColt.getMtbColr()) { + MtbColr cloneMtbColr = (MtbColr) sourceMtbColr.clone(); + + cloneMtbColr + .setRiga(null) + .setNumCollo(null) + .setGestione((String) null) + .setDataCollo(null) + .setSerCollo(null) + .setCausale(MtbColr.Causale.VERSAMENTO); + + cloneMtbColr.setOperation(CommonModelConsts.OPERATION.INSERT); + destMtbColt.getMtbColr().add(cloneMtbColr); + sourceMtbColr.setOperation(CommonModelConsts.OPERATION.DELETE); + } + + sourceMtbColt.setOperation(CommonModelConsts.OPERATION.DELETE); + } + + destMtbColt.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + sourceMtbColts.add(destMtbColt); + + this.mColliMagazzinoRESTConsumer.saveColli(sourceMtbColts, data -> { + onComplete.run(destMtbColt); }, this::sendError); } @@ -1458,7 +1588,6 @@ public class SpedizioneViewModel { mtbColtToPrint, 1, reportName, onComplete, onFailed); - } @@ -1483,7 +1612,8 @@ public class SpedizioneViewModel { .forEach(x -> x.setExistColloBoolean(true)); } - this.mColliDataRecoverService.closeSession(mMtbColtSessionID); + if (mMtbColtSessionID != null) + this.mColliDataRecoverService.closeSession(mMtbColtSessionID); this.mCurrentMtbColt = null; @@ -1591,7 +1721,7 @@ public class SpedizioneViewModel { } - private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs onAbort) { + private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs onAbort) { if (sourceTestateOrdineVenditaIterator.hasNext()) { singlePrintPackingList(sourceTestateOrdineVenditaIterator.next(), printerName, () -> { cyclicPrintPackingList(sourceTestateOrdineVenditaIterator, printerName, onComplete, onAbort); @@ -1601,11 +1731,11 @@ public class SpedizioneViewModel { } } - private void singlePrintPackingList(OrdineVenditaInevasoDTO ordineVenditaInevasoDTO, String printerName, Runnable onComplete, RunnableArgs onFailed) { + private void singlePrintPackingList(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, String printerName, Runnable onComplete, RunnableArgs onFailed) { HashMap params = new HashMap<>(); - params.put("gestione", ordineVenditaInevasoDTO.getGestione()); - params.put("num_ord", ordineVenditaInevasoDTO.getNumOrd()); - params.put("data_ord", UtilityDate.formatDate(ordineVenditaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH)); + params.put("gestione", ordineUscitaInevasoDTO.getGestione()); + params.put("num_ord", ordineUscitaInevasoDTO.getNumOrd()); + params.put("data_ord", UtilityDate.formatDate(ordineUscitaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH)); this.mPrinterRESTConsumer.printReport( printerName, @@ -1658,6 +1788,9 @@ public class SpedizioneViewModel { Date dataScad, boolean canOverflowOrderQuantity, RunnableArgss onComplete); + + + void onLUPositionChangeRequest(RunnableArgss onComplete); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java index e2fed21a..fe6ea296 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java @@ -10,19 +10,21 @@ import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; + +import java.util.ArrayList; +import java.util.List; + import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; -import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel; import it.integry.integrywmsnative.ui.ElevatedToolbar; public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { - private Runnable mOnPreDestroy; + private List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private UltimeConsegneClienteViewModel mViewModel; @@ -58,7 +60,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr @Override public void onDestroy() { - if(mOnPreDestroy != null) mOnPreDestroy.run(); + for(Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } super.onDestroy(); } @@ -67,14 +71,19 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr titleText.setText(context.getText(R.string.ultime_consegne_cliente_title).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + @Override public void setScrollToolbar(ElevatedToolbar toolbar) { mToolbar = toolbar; } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); } @Override 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 53cc77a2..9a17b389 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 @@ -189,7 +189,7 @@ public class UltimeConsegneClienteRESTConsumer { .distinct() .toList(); - ArticoloRESTConsumer.getByCodMart(codMarts, arts -> { + ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> { if(arts != null && arts.size() > 0) { for (DtbDocr value : values) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java index c2bb867d..592be001 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java @@ -3,14 +3,16 @@ package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore; import android.content.Context; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import java.util.ArrayList; +import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; @@ -25,7 +27,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar; */ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { - private Runnable mOnPreDestroy; + private List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private UltimiArriviFornitoreViewModel mViewModel; @@ -61,7 +63,9 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr @Override public void onDestroy() { - if(mOnPreDestroy != null) mOnPreDestroy.run(); + for(Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } super.onDestroy(); } @@ -70,14 +74,19 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr titleText.setText(context.getText(R.string.ultime_arrivi_fornitore_title).toString()); } + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } + @Override public void setScrollToolbar(ElevatedToolbar toolbar) { mToolbar = toolbar; } @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; + public void setScrollableOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java deleted file mode 100644 index 91ffa13c..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ /dev/null @@ -1,350 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita; - -import android.app.Dialog; -import android.content.Context; -import android.os.Bundle; -import android.text.Html; -import android.text.SpannableString; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.annimon.stream.Stream; - -import java.util.ArrayList; -import java.util.List; - -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.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; -import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; -import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment; -import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.rest.CommonRESTException; -import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; -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.UtilityToast; -import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding; -import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; -import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter; -import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; -import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato; -import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.gest.vendita.viewmodel.VenditaViewModel; -import it.integry.integrywmsnative.ui.ElevatedToolbar; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; - -public class MainVenditaFragment extends Fragment implements ITitledFragment, IScrollableFragment, ISelectAllFragment, IFilterableFragment { - - private Runnable mOnPreDestroy; - private ElevatedToolbar mToolbar; - - private VenditaHelper mHelper; - private FragmentMainVenditaBinding mBinding = null; - private VenditaViewModel mViewModel; - - private MainListVenditaAdapter mAdapter; - - private List mOriginalOrderList; - private List mRenderedOrderList = new ArrayList<>(); - - private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel; - - private int barcodeScannerIstanceID = -1; - - - - public MainVenditaFragment() { - - } - - public static MainVenditaFragment newInstance() { - MainVenditaFragment fragment = new MainVenditaFragment(); - Bundle args = new Bundle(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreateActionBar(AppCompatTextView titleText, Context context) { - titleText.setText(context.getText(R.string.vendita_title_fragment).toString()); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); - - init(); - } - - - @Override - public void onDestroy() { - if(mOnPreDestroy != null) mOnPreDestroy.run(); - BarcodeManager.removeCallback(barcodeScannerIstanceID); - super.onDestroy(); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_vendita, container, false); - - mBinding.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - mBinding.venditaMainFab.hide(); - - mBinding.venditaMainFab.setOnClickListener(v -> onVenditaMainFabClick()); - - if(mToolbar != null) mToolbar.setRecyclerView(mBinding.venditaMainList); - - return mBinding.getRoot(); - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.fragment_vendita, menu); - super.onCreateOptionsMenu(menu, inflater); - } - - - private void init(){ - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - mHelper = new VenditaHelper(getActivity()); - mViewModel = new VenditaViewModel(getActivity(), this, mBinding, mHelper); - - mHelper.loadOrdini(ordini -> { - if(ordini != null) { - UtilityToast.showToast("Caricati " + ordini.size() + " ordini"); - mOriginalOrderList = ordini; - mViewModel.setListOrder(ordini); - } - - - mBinding.ordiniVenditaEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - - refreshOrdini(ordini); - initRecyclerView(); - progress.dismiss(); - }, ex -> { - mOriginalOrderList = new ArrayList<>(); - progress.dismiss(); - - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if(errorMessage == null) errorMessage = ex.getMessage(); - DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); - }); - - barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(mViewModel.onScanSuccessfull) - .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); - } - - - public void refreshOrdini(List ordini){ - mRenderedOrderList.clear(); - mRenderedOrderList.addAll(ordini != null ? ordini : new ArrayList<>()); - } - - private void initRecyclerView() { - mAdapter = new MainListVenditaAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged); - mBinding.venditaMainList.setAdapter(mAdapter); - } - - public void refreshRecyclerView() { - mAdapter.updateItems(mRenderedOrderList); - } - - private RunnableArgs onSingleSelectionChanged = dto -> { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); - - if(!SettingsManager.iDB().isFlagMultiClienteOrdV()){ - if(dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) - .forEach(x -> x.setSelected(false)); - } - } - - if(selectedOrders != null && selectedOrders.size() > 0) { - mBinding.venditaMainFab.show(); - } - else { - mBinding.venditaMainFab.hide(); - } - }; - - - private void onVenditaMainFabClick() { - - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); - List barcodes = new ArrayList<>(); - - String dataCons = null; - - for(OrdineVenditaInevasoDTO ordine : selectedOrders){ - if(!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode()); - - if(dataCons == null) dataCons = ordine.getDataConsS(); - else if(!dataCons.equalsIgnoreCase(ordine.getDataConsS())) dataCons = ""; - } - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - - checkSelectedOrders(selectedOrders, () -> { - - RunnableArgs> onPostGetListaArts = sitArtsDTO -> { - mHelper.getBancaliVenditaGiaRegistrati(selectedOrders, mtbColtList -> { - progress.dismiss(); - - List codMarts = Stream.of(sitArtsDTO) - .distinctBy(SitArtOrdDTO::getCodMart) - .map(SitArtOrdDTO::getCodMart) - .toList(); - - int alreadyRegisteredUL = mtbColtList.size(); - - - DialogSimpleMessageHelper.makeInfoDialog(getActivity(), - getText(R.string.orders).toString(), - Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, selectedOrders.size()), selectedOrders.size()) - + "
" + - "" + codMarts.size() + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size()) - + "
" + - "" + alreadyRegisteredUL + " " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), - null, - () -> SpedizioneActivity.startActivity(getActivity(), sitArtsDTO, selectedOrders, mtbColtList) - ).show(); - - }, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress)); - }; - - OrdiniRESTConsumer.retrieveListaArticoliFromOrdiniUscita(selectedOrders, onPostGetListaArts, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress)); - - - }, progress::dismiss); - } - - @Override - public void setScrollToolbar(ElevatedToolbar toolbar) { - mToolbar = toolbar; - } - - @Override - public void setOnPreDestroy(Runnable onPreDestroy) { - mOnPreDestroy = onPreDestroy; - } - - @Override - public boolean isEnabled() { - return SettingsManager.iDB().isFlagMultiClienteOrdV(); - } - - @Override - public void onSelectAll() { - if(mRenderedOrderList != null && mRenderedOrderList.size() > 0) { - if(mHelper.getSelectedOrders(mRenderedOrderList).size() > 0){ - mHelper.deselectAll(mRenderedOrderList); - } else { - //Selezionare solo quelli attualmente a video - mHelper.selectAll(mRenderedOrderList); - } - - } - } - - @Override - public void onResume() { - super.onResume(); - if(mRenderedOrderList != null && mRenderedOrderList.size() > 0) { - mHelper.deselectAll(mRenderedOrderList); - refreshRecyclerView(); - } - } - - @Override - public void onFilterClick() { - - DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> { - mAppliedFilterViewModel = filter; - - if(filteredOrderList != null){ - - refreshOrdini(filteredOrderList); - refreshRecyclerView(); - } - - }).show(); - } - - private void checkSelectedOrders(List selectedOrders, Runnable onComplete, Runnable onFailed) { - if(selectedOrders != null && selectedOrders.size() > 0) { - - //Definizione della gestione collo di default - List foundGestioni = Stream.of(selectedOrders) - .map(OrdineVenditaInevasoDTO::getGestioneEnum) - .withoutNulls() - .distinctBy(x -> x) - .toList(); - - if (foundGestioni != null && foundGestioni.size() > 1) { - DialogSimpleMessageHelper.makeErrorDialog(getContext(), new SpannableString(getString(R.string.error_multiple_gest)), null, onFailed).show(); - return; - } - - //Definizione del deposito di default - List foundCodMdep = Stream.of(selectedOrders) - .map(OrdineVenditaInevasoDTO::getCodMdep) -// .withoutNulls() - .distinctBy(x -> x) - .toList(); - - if (foundCodMdep != null && foundCodMdep.size() > 1) { - DialogSimpleMessageHelper.makeErrorDialog(getContext(), new SpannableString(getString(R.string.error_multiple_cod_mdep_ordv)), null, onFailed).show(); - return; - } - - - //NON-BLOCKING CHECKS - - //Definizione del codJfas di default - List foundCodJfas = Stream.of(selectedOrders) - .map(OrdineVenditaInevasoDTO::getCodJfas) -// .withoutNulls() - .distinctBy(x -> x) - .toList(); - - if (foundCodJfas != null && foundCodJfas.size() > 1) { - DialogSimpleMessageHelper.makeWarningDialog(getContext(), new SpannableString(getString(R.string.error_multiple_cod_jfas_ordp)), null, () -> { - - - onComplete.run(); - - - }).show(); - } else { - onComplete.run(); - } - } else { - onComplete.run(); - } - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java deleted file mode 100644 index f735d070..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java +++ /dev/null @@ -1,208 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita.core; - -import android.content.Context; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.core.content.res.ResourcesCompat; -import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; -import androidx.recyclerview.widget.RecyclerView; - -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.VenditaMainListGroupModelBinding; -import it.integry.integrywmsnative.databinding.VenditaMainListModelBinding; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; - -public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - - private Context mContext; - - private List mDataset; - private RunnableArgs mOnSingleSelectionChanged; - - - static class SubheaderHolder extends RecyclerView.ViewHolder { - - VenditaMainListModelBinding binding; - - SubheaderHolder(VenditaMainListModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - static class SingleItemViewHolder extends RecyclerView.ViewHolder { - - VenditaMainListGroupModelBinding binding; - - SingleItemViewHolder(VenditaMainListGroupModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - - public MainListVenditaAdapter(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { - mContext = context; - mDataset = orderItems(myDataset); - mOnSingleSelectionChanged = onSingleSelectionChanged; - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List orderItems(List dataset) { - return Stream.of(dataset) - .sortBy(x -> x.getRagSocOrd() + " - " + x.getDestinatario()) - .toList(); - - } - - - @Override - public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { - VenditaMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_model, parent, false); - return new SubheaderHolder(binding); - } - - @Override - public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { - VenditaMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_group_model, parent, false); - return new SingleItemViewHolder(binding); - } - - - @Override - public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { - subheaderHolder.binding.venditaMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd()); - - if (!UtilityString.isNullOrEmpty(mDataset.get(nextItemPosition).getDestinatario()) && - !UtilityString.equalsIgnoreCase(mDataset.get(nextItemPosition).getRagSocOrd(), mDataset.get(nextItemPosition).getDestinatario())) { - - subheaderHolder.binding.venditaMainListGroupSubheader.setVisibility(View.VISIBLE); - subheaderHolder.binding.venditaMainListGroupSubheader.setText(mDataset.get(nextItemPosition).getDestinatario()); - - } else { - subheaderHolder.binding.venditaMainListGroupSubheader.setVisibility(View.GONE); - } - - - subheaderHolder.binding.getRoot().setOnClickListener(v -> { - if(SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders()) { - - boolean anySelected = Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .anyMatch(OrdineVenditaInevasoDTO::isSelected); - - Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .forEach(x -> x.setSelected(!anySelected)); - } - }); - } - - @Override - public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) { - final OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition); - final SingleItemViewHolder holder = h; - - holder.binding.venditaMainListGroupItemContainerCheckBox.setTag(ordine.getNumOrd()); - - holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); - - ordine.selected.resetOnPropertyChangedCallback(); - - - if (ordine.isFlagEvaso()) { - holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), R.color.mainGreen, null)); - } else if (ordine.isExistColloBoolean()) { - holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), R.color.colorPrimary, null)); - } else { - holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), android.R.color.transparent, null)); - } - - String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); - - String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.venditaMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString)); - - if (!UtilityString.isNullOrEmpty(ordine.getRifOrd())) - holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd()); - else holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getCodJcom()); - - - if (!UtilityString.isNullOrEmpty(mDataset.get(itemPosition).getDescrizioneVettore())) { - holder.binding.venditaMainListGroupItemContainerVettoreLayout.setVisibility(View.VISIBLE); - holder.binding.venditaMainListGroupItemContainerVettore.setText(mDataset.get(itemPosition).getDescrizioneVettore()); - } else { - holder.binding.venditaMainListGroupItemContainerVettoreLayout.setVisibility(View.GONE); - holder.binding.venditaMainListGroupItemContainerVettore.setText(null); - } - - - holder.binding.setCheckboxValue(ordine.selected); - - holder.binding.getRoot().setOnClickListener(v -> { - ordine.setSelected(!ordine.isSelected()); - }); - - holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); - - //Bindable to View - ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - if (holder.binding.venditaMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumOrd())) { - holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); - } - } - }); - - - //View to Bindable - holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { - ordine.setSelected(isChecked); - mOnSingleSelectionChanged.run(ordine); - }); - } - - - @Override - public boolean onPlaceSubheaderBetweenItems(int position) { - return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd()) && - !(this.mDataset.get(position).getDestinatario() != null && this.mDataset.get(position).getDestinatario().equalsIgnoreCase(this.mDataset.get(position + 1).getDestinatario())); - } - - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - - -} 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 deleted file mode 100644 index 09a28293..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java +++ /dev/null @@ -1,198 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita.core; - -import android.content.Context; -import android.util.Log; - -import com.annimon.stream.Stream; -import com.google.firebase.perf.metrics.Trace; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.DtbOrdt; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.rest.RESTBuilder; -import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; -import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.EsitoType; -import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityDB; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityFirebase; -import it.integry.integrywmsnative.core.utility.UtilityLogger; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.gest.vendita.rest.OrdiniVenditaRESTConsumerService; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class VenditaHelper { - - private Context mContext; - - public VenditaHelper(Context context){ - mContext = context; - } - - public void loadOrdini(RunnableArgs> onComplete, RunnableArgs onFailed){ - String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - - Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_ords_v"); - perfTrace.start(); - - OrdiniVenditaRESTConsumerService service = RESTBuilder.getService(OrdiniVenditaRESTConsumerService.class); - service.listOrdiniInevasi(codMdep).enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - - if(response.isSuccessful()) { - - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - UtilityFirebase.stopPerformanceTrace(perfTrace, false); - onComplete.run(response.body().getDto()); - } else { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - onFailed.run(new Exception(response.body().getErrorMessage())); - } - } else { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - onFailed.run(new Exception(response.message())); - } - } else { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); - } - } - - @Override - public void onFailure(Call>> call, Throwable t) { - UtilityFirebase.stopPerformanceTrace(perfTrace, true); - Log.e("Vendita", t.toString()); - UtilityLogger.errorMe(new Exception(t)); - onFailed.run(new Exception(t)); - } - }); - } - - - - - - - public void getBancaliVenditaGiaRegistrati(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { - - String baseSql = "SELECT DISTINCT mtb_colt.* " + - "FROM mtb_colt, " + - " mtb_colr " + - "WHERE mtb_colt.gestione = mtb_colr.gestione " + - " AND mtb_colt.ser_collo = mtb_colr.ser_collo " + - " AND mtb_colt.data_collo = mtb_colr.data_collo " + - " AND mtb_colt.num_collo = mtb_colr.num_collo " + - " AND (mtb_colt.gestione = 'V' OR mtb_colt.gestione = 'L') " + - " AND mtb_colt.ser_collo = '/' " + - " AND mtb_colt.data_doc IS NULL AND "; - - StringBuilder whereCond = new StringBuilder(); - - for(int i = 0; i < orders.size(); i++){ - - - whereCond - .append("(mtb_colr.data_ord = '").append(UtilityDate.formatDate(orders.get(i).getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)).append("' ") - .append("AND mtb_colr.num_ord = ").append(orders.get(i).getNumOrd()).append(" ") - .append("AND mtb_colr.gestione = ").append(UtilityDB.valueToString(orders.get(i).getGestione())) - .append(") "); - - if(i != (orders.size() - 1)){ - whereCond.append("OR "); - } - } - - baseSql += "( " + whereCond + ")"; - - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(List value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } - }); - - } - - - public void getOrdiniInCommessaCollo(MtbColt testataCollo, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniVenditaRESTConsumerService service = RESTBuilder.getService(OrdiniVenditaRESTConsumerService.class); - service.getOrdiniInCommessaCollo( - testataCollo.getDataColloS(), - testataCollo.getNumCollo(), - testataCollo.getSerCollo(), - testataCollo.getGestione(), - GestioneEnum.VENDITA.getText(), - SettingsManager.i().getUserSession().getDepo().getCodMdep()) - .enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - - if(response.isSuccessful()) { - - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - onComplete.run(response.body().getDto()); - } else { - onFailed.run(new Exception(response.body().getErrorMessage())); - } - } else { - onFailed.run(new Exception(response.message())); - } - } else { - onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); - } - - } - - @Override - public void onFailure(Call>> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); - - } - - - - - public List getSelectedOrders(List ordiniList){ - return Stream.of(ordiniList) - .filter(OrdineVenditaInevasoDTO::isSelected) - .toList(); - } - - - - public void selectAll(List groupedOrdiniInevasi) { - toggleSelection(groupedOrdiniInevasi, true); - } - - public void deselectAll(List groupedOrdiniInevasi) { - toggleSelection(groupedOrdiniInevasi, false); - } - - public void toggleSelection(List groupedOrdiniInevasi, boolean value) { - for(int i = 0; i < groupedOrdiniInevasi.size(); i++){ - groupedOrdiniInevasi.get(i).setSelected(value); - } - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/rest/OrdiniVenditaRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/rest/OrdiniVenditaRESTConsumerService.java deleted file mode 100644 index 44707f5e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/rest/OrdiniVenditaRESTConsumerService.java +++ /dev/null @@ -1,23 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita.rest; - -import java.util.List; - -import it.integry.integrywmsnative.core.model.DtbOrdt; -import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import retrofit2.Call; -import retrofit2.http.GET; -import retrofit2.http.Query; - -public interface OrdiniVenditaRESTConsumerService { - - @GET("SM2GetOrdiniVenditaInevasi") - Call>> listOrdiniInevasi(@Query("codMdep") String codMdep); - - @GET("SM2GetOrdiniVenditaInevasi") - Call>> listOrdiniInevasi(@Query("codMdep") String codMdep, @Query("gestione") String gestione); - - @GET("getOrdiniInCommCollo") - Call>> getOrdiniInCommessaCollo(@Query("dataCollo") String dataCollo, @Query("numCollo") Integer numCollo, @Query("serCollo") String serCollo, @Query("gestioneCollo") String gestioneCollo, @Query("gestioneOrdine") String gestioneOrdine, @Query("codMdep") String codMdep); - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java deleted file mode 100644 index cbfc9c46..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java +++ /dev/null @@ -1,217 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita.viewmodel; - -import android.app.Activity; -import android.app.Dialog; -import android.text.Html; -import android.text.SpannableString; - -import com.annimon.stream.Stream; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.DtbOrdt; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.utility.UtilityBarcode; -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.FragmentMainVenditaBinding; -import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; -import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.view.dialogs.DialogCommon; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; -import it.integry.barcode_base_android_library.model.BarcodeScanDTO; - -public class VenditaViewModel { - - private Activity mContext; - private MainVenditaFragment mFragment; - private FragmentMainVenditaBinding mBinding; - private VenditaHelper mHelper; - - private List mOrdini = new ArrayList<>(); - - public VenditaViewModel(Activity context, MainVenditaFragment fragment, FragmentMainVenditaBinding binding, VenditaHelper helper) { - mContext = context; - mFragment = fragment; - mBinding = binding; - mHelper = helper; - } - - public void setListOrder(List ordini) { - mOrdini = ordini; - } - - - public RunnableArgs onScanSuccessfull = data -> { - - BarcodeManager.disable(); - final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - if(UtilityBarcode.isBarcodeOrdineV(data)) { - this.executeEtichettaOrdineV(data.getStringValue(), progressDialog); - } else if(UtilityBarcode.isEtichettaAnonima(data)) { - this.executeEtichettaLU(data.getStringValue(), progressDialog); - } else if(UtilityBarcode.isEtichetta128(data)){ - this.executeEtichettaEan128(data, progressDialog); - } else { - progressDialog.dismiss(); - BarcodeManager.enable(); - } - - }; - - private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - BarcodeRESTConsumer.decodeEan128Static(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(!UtilityString.isNullOrEmpty(ean128Model.Sscc)){ - this.executeEtichettaLU(ean128Model.Sscc, progressDialog); - } else { - DialogCommon.showNoULFound(mContext, null); - progressDialog.dismiss(); - BarcodeManager.enable(); - - } - - - } else { - //EAN 128 non completo o comunque mancano i riferimenti al prodotto - DialogCommon.showNoULFound(mContext, null); - progressDialog.dismiss(); - BarcodeManager.enable(); - } - }, ex-> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - BarcodeManager.enable(); - }); - } - - - - private void executeEtichettaOrdineV(String barcode, Dialog progressDialog) { - String gestione = ""; - - char c = barcode.charAt(0); - if (c == '1') - gestione = "A"; - else if (c == '2') - gestione = "L"; - else if (c == '3') - gestione = "V"; - - int numOrd = Integer.parseInt(UtilityString.mid(barcode, 10)); - - Date date = null; - try { - date = new SimpleDateFormat("ddMMyyyy") - .parse(UtilityString.mid(barcode, 2, 8)); - } catch (ParseException ex) { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - BarcodeManager.enable(); - - return; - } - - - final String finalGestione = gestione; - final Date finalDate = date; - - List filteredOrders = Stream.of(mOrdini) - .filter(x -> x.getNumOrd() == numOrd && x.getGestione().equalsIgnoreCase(finalGestione) && x.getDataOrdD().equals(finalDate)).toList(); - - mFragment.refreshOrdini(filteredOrders); - mFragment.refreshRecyclerView(); - - - progressDialog.dismiss(); - BarcodeManager.enable(); - } - - private void executeEtichettaLU(String SSCC, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCCStatic(SSCC, true, false, mtbColt -> { - - if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { - - if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) { - //GET BY COMMESSA COLLO - mHelper.getOrdiniInCommessaCollo(mtbColt, orderList -> { - - if(orderList != null && orderList.size() > 0) { - UtilityToast.showToast("Caricati " + orderList.size() + " ordini"); - - List numOrds = Stream.of(orderList) - .map(DtbOrdt::getNumOrd) - .toList(); - - List filteredOrders = Stream.of(mOrdini) - .filter(x -> numOrds.contains(x.getNumOrd())).toList(); - - mFragment.refreshOrdini(filteredOrders); - mFragment.refreshRecyclerView(); - } else { - DialogCommon.showNoOrderFound(mContext, null); - } - - progressDialog.dismiss(); - BarcodeManager.enable(); - - - - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - BarcodeManager.enable(); - }); - - progressDialog.dismiss(); - BarcodeManager.enable(); - - } else { - progressDialog.dismiss(); - BarcodeManager.enable(); - showWrongGestioneUL(); - } - - } else { - progressDialog.dismiss(); - BarcodeManager.enable(); - DialogCommon.showNoULFound(mContext, null); - } - - - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - BarcodeManager.enable(); - }); - } - - - - - private void showWrongGestioneUL() { - DialogSimpleMessageHelper.makeWarningDialog(mContext, - new SpannableString(Html.fromHtml(mContext.getResources().getText(R.string.gestione_A_L_only_accepted_message).toString())), - null, null).show(); - } - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index 0e5e84df..40123dfd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -1,17 +1,18 @@ package it.integry.integrywmsnative.gest.versamento_merce; import android.content.Context; - -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; import android.os.Bundle; -import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import it.integry.integrywmsnative.MainActivity; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.databinding.DataBindingUtil; +import androidx.fragment.app.Fragment; + +import java.util.ArrayList; +import java.util.List; + import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; @@ -28,6 +29,7 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment private VersamentoMerceViewModel mVersamentoMerceViewModel; private VersamentoMerceHelper mHelper; + private List mOnPreDestroyList = new ArrayList<>(); private int barcodeScannerIstanceID = -1; @@ -38,19 +40,12 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment public static VersamentoMerceFragment newInstance() { VersamentoMerceFragment fragment = new VersamentoMerceFragment(); - Bundle args = new Bundle(); - - fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (getArguments() != null) { - //mParam1 = getArguments().getString(ARG_PARAM1); - //mParam2 = getArguments().getString(ARG_PARAM2); - } mVersamentoMerceViewModel = new VersamentoMerceViewModel(); barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() @@ -83,6 +78,11 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment @Override public void onDestroy() { BarcodeManager.removeCallback(barcodeScannerIstanceID); + + for(Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + super.onDestroy(); } @@ -90,4 +90,9 @@ public class VersamentoMerceFragment extends Fragment implements ITitledFragment public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.versamento_merce_fragment_title).toString()); } + + @Override + public void onActionBarPreDestroy(Runnable onActionBarPreDestroy) { + this.mOnPreDestroyList.add(onActionBarPreDestroy); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java index a455b69d..1128989b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java @@ -93,9 +93,7 @@ public class VersamentoMerceViewModel { } public RunnableArgs onScanSuccessfull = data -> { - BarcodeManager.disable(); - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); if (UtilityBarcode.isEtichettaPosizione(data)) { @@ -121,7 +119,7 @@ public class VersamentoMerceViewModel { if (foundPosizione.isFlagMonoCollo()) { - PosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { + PosizioniRESTConsumer.getBancaliInPosizioneStatic(foundPosizione, mtbColtList -> { if (mtbColtList == null || mtbColtList.size() == 0) { progressDialog.dismiss(); @@ -302,7 +300,8 @@ public class VersamentoMerceViewModel { .setCausale(MtbColr.Causale.VERSAMENTO) .setUtente(SettingsManager.i().getUser().getFullname()) - .setQtaCol(stornoSourceMtbColr.getQtaCol().multiply(new BigDecimal(-1))); + .setQtaCol(stornoSourceMtbColr.getQtaCol().multiply(new BigDecimal(-1))) + .setNumCnf(stornoSourceMtbColr.getNumCnf().multiply(new BigDecimal(-1))); mtbColrSourceObservableField.add(stornoSourceMtbColr); } @@ -462,7 +461,7 @@ public class VersamentoMerceViewModel { } - ColliMagazzinoRESTConsumer.saveColli(mtbColts, value -> { + ColliMagazzinoRESTConsumer.saveColliStatic(mtbColts, value -> { DialogCommon.showDataSaved(mContext, () -> { mOnVersamentoCompleted.run(); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java index 629d7283..d29dc050 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java @@ -2,17 +2,13 @@ package it.integry.integrywmsnative.view.dialogs; import android.app.Dialog; import android.content.Context; -import android.content.DialogInterface; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; -import android.view.View; -import android.widget.ProgressBar; import androidx.databinding.DataBindingUtil; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogProgressBinding; public class DialogProgress { @@ -40,7 +36,7 @@ public class DialogProgress { LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, null, false); - final Thread[] progressBarThread = new Thread[1]; +// final Thread[] progressBarThread = new Thread[1]; mDialog = new Dialog(mContext); mDialog.setContentView(mBinding.getRoot()); @@ -50,11 +46,11 @@ public class DialogProgress { mDialog.setOnShowListener(dialog -> { // ((ProgressBar) currentView.findViewById(R.id.progressBar)).setIndeterminate(true); - progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(mBinding.progressBar); +// progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(mBinding.progressBar); }); mDialog.setOnDismissListener(dialog -> { - progressBarThread[0].interrupt(); +// progressBarThread[0].interrupt(); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java index 9438d19e..56f044dd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java @@ -23,7 +23,6 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDialog; @@ -37,7 +36,6 @@ public class DialogAskPositionOfLU { private Context mContext; private DialogAskPositionOfLuBinding mBinding; - private MtbColt mtbColt; private boolean mCheckForLineaProd; private MtbDepoPosizione currentMtbDepoPosizione; @@ -51,13 +49,12 @@ public class DialogAskPositionOfLU { private boolean completedFlow = false; - public static Dialog makeBase(final Context context, MtbColt mtbColtToUpdate, boolean checkForLineaProd, RunnableArgss onComplete, RunnableArgs onFailed) { - return new DialogAskPositionOfLU(context, mtbColtToUpdate, checkForLineaProd, onComplete, onFailed).mDialog; + public static Dialog makeBase(final Context context, boolean checkForLineaProd, RunnableArgss onComplete, RunnableArgs onFailed) { + return new DialogAskPositionOfLU(context, checkForLineaProd, onComplete, onFailed).mDialog; } - private DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, boolean checkForLineaProd, RunnableArgss onComplete, RunnableArgs onFailed) { + private DialogAskPositionOfLU(Context context, boolean checkForLineaProd, RunnableArgss onComplete, RunnableArgs onFailed) { mContext = context; - mtbColt = mtbColtToUpdate; mCheckForLineaProd = checkForLineaProd; this.onComplete = onComplete; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java index 2d2f7c67..38bb45b4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java @@ -151,7 +151,7 @@ public class DialogScanOrCreateLU { .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) .single(); - PosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { + PosizioniRESTConsumer.getBancaliInPosizioneStatic(foundPosizione, mtbColtList -> { if(mtbColtList == null || mtbColtList.size() == 0){ progressDialog.dismiss(); diff --git a/app/src/main/res/drawable/ic_dashboard_prod_versamento_merce.xml b/app/src/main/res/drawable/ic_dashboard_prod_versamento_merce.xml new file mode 100644 index 00000000..3a7c00e5 --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_prod_versamento_merce.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/dialog_progress.xml index 2a9fa222..b87a57a9 100644 --- a/app/src/main/res/layout/dialog_progress.xml +++ b/app/src/main/res/layout/dialog_progress.xml @@ -52,7 +52,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" - android:layout_marginBottom="24dp"/> + android:layout_marginBottom="24dp" + android:indeterminate="true"/> diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml index a5ea480f..8742a90f 100644 --- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml +++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml @@ -7,7 +7,7 @@ + type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" /> diff --git a/app/src/main/res/layout/fragment_main_vendita.xml b/app/src/main/res/layout/fragment_main_ordini_uscita.xml similarity index 85% rename from app/src/main/res/layout/fragment_main_vendita.xml rename to app/src/main/res/layout/fragment_main_ordini_uscita.xml index 39c5426d..a08342a6 100644 --- a/app/src/main/res/layout/fragment_main_vendita.xml +++ b/app/src/main/res/layout/fragment_main_ordini_uscita.xml @@ -5,7 +5,17 @@ xmlns:tools="http://schemas.android.com/tools"> - + + + + + + + + app:srcCompat="@drawable/ic_check_black_24dp" + app:visibility="@{view.fabVisible}" + android:onClick="@{() -> view.dispatchOrders()}" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_prod_ordine_lavorazione__list_group_model.xml b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml similarity index 69% rename from app/src/main/res/layout/fragment_prod_ordine_lavorazione__list_group_model.xml rename to app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml index 65b6cd74..3749f635 100644 --- a/app/src/main/res/layout/fragment_prod_ordine_lavorazione__list_group_model.xml +++ b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml @@ -1,11 +1,12 @@ - - + + + @@ -30,19 +31,20 @@ + android:background="@android:color/transparent" + app:checked="@{selected}"/> + android:layout_toEndOf="@id/checkbox"> + android:layout_toStartOf="@id/descrizione"/> + android:layout_below="@+id/right_descrizione" + android:layout_toStartOf="@id/right_sub_descrizione"/> diff --git a/app/src/main/res/layout/fragment_prod_ordine_lavorazione__list_model.xml b/app/src/main/res/layout/fragment_main_ordini_uscita__list_model.xml similarity index 60% rename from app/src/main/res/layout/fragment_prod_ordine_lavorazione__list_model.xml rename to app/src/main/res/layout/fragment_main_ordini_uscita__list_model.xml index be1e852b..bc092ceb 100644 --- a/app/src/main/res/layout/fragment_prod_ordine_lavorazione__list_model.xml +++ b/app/src/main/res/layout/fragment_main_ordini_uscita__list_model.xml @@ -1,21 +1,10 @@ - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_ordine_a_pv_transmitted__list_model.xml b/app/src/main/res/layout/fragment_ordine_a_pv_transmitted__list_model.xml deleted file mode 100644 index dbcbe611..00000000 --- a/app/src/main/res/layout/fragment_ordine_a_pv_transmitted__list_model.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_prod_ordine_lavorazione_elenco.xml b/app/src/main/res/layout/fragment_prod_ordine_lavorazione_elenco.xml deleted file mode 100644 index 8f25effa..00000000 --- a/app/src/main/res/layout/fragment_prod_ordine_lavorazione_elenco.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_prod_posizionamento_da_ord.xml b/app/src/main/res/layout/fragment_prod_posizionamento_da_ord.xml new file mode 100644 index 00000000..8d4bb40e --- /dev/null +++ b/app/src/main/res/layout/fragment_prod_posizionamento_da_ord.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml b/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml deleted file mode 100644 index 33800c29..00000000 --- a/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/vendita_main_list_group_clienti.xml b/app/src/main/res/layout/vendita_main_list_group_clienti.xml deleted file mode 100644 index 97c07286..00000000 --- a/app/src/main/res/layout/vendita_main_list_group_clienti.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/vendita_main_list_group_model.xml b/app/src/main/res/layout/vendita_main_list_group_model.xml deleted file mode 100644 index 9f670cb3..00000000 --- a/app/src/main/res/layout/vendita_main_list_group_model.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/vendita_main_list_model.xml b/app/src/main/res/layout/vendita_main_list_model.xml deleted file mode 100644 index 9cfaf594..00000000 --- a/app/src/main/res/layout/vendita_main_list_model.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 89088874..a9d42168 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -235,7 +235,7 @@ Picking libero Impossibile caricare ordini di diverse gestioni Non è stato possibile identificare la gestione degli ordini selezionati - Impossibile caricare ordini di diversi depositi + Impossibile caricare ordini di diversi depositi Non verrà salvata la linea di produzione poiché stai selezionando ordini di diverse produzioni Recupero dati diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index f19a85f0..012c51fd 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -18,6 +18,7 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 48f7e3a7..26f346d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -234,7 +234,7 @@ Scan an item to start Can\'t load orders of different type Can\'t load current order type - Can\'t load orders of different deposits + Can\'t load orders of different deposits The production line will not be saved because you are selecting orders for different productions Logistics Unit\'s barcode is not accepted at this moment Selected LU is already attached to a document hence can\'t be opened @@ -328,4 +328,6 @@ Use Back Gramm Customization + + Hello blank fragment diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 9ecb96df..e5c916e6 100644 --- a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -1,23 +1,19 @@ package it.integry.wms.dynamic_customization.extensions; -import android.app.Dialog; -import android.app.ProgressDialog; - import java.util.List; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityToast; -import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java index 9874672a..5358a07c 100644 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java +++ b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationFRUDIS.java @@ -2,14 +2,13 @@ package it.integry.wms.dynamic_customization.extensions; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; -import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; public class MenuConfigurationFRUDIS extends BaseMenuConfiguration { @@ -28,7 +27,7 @@ public class MenuConfigurationFRUDIS extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(MainVenditaFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, GestioneEnum.VENDITA, -1))) .addItem(new MenuItem() .setID(it.integry.integrywmsnative.R.id.nav_free_picking) @@ -62,7 +61,7 @@ public class MenuConfigurationFRUDIS extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_lavorazione_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_lavorazione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineLavorazioneElencoFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1))) .addItem(new MenuItem() .setID(it.integry.integrywmsnative.R.id.nav_prod_versamento_materiale) diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 6bcf1234..2f0ed82a 100644 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -1,23 +1,19 @@ package it.integry.wms.dynamic_customization.extensions; -import android.app.Dialog; -import android.app.ProgressDialog; - import java.util.List; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityToast; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in Frudis"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java index 439a98d4..e3afa82b 100644 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java +++ b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationGRAMM.java @@ -3,13 +3,12 @@ package it.integry.wms.dynamic_customization.extensions; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; -import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; public class MenuConfigurationGRAMM extends BaseMenuConfiguration { @@ -47,7 +46,7 @@ public class MenuConfigurationGRAMM extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(MainVenditaFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, GestioneEnum.VENDITA, -1))) .addItem(new MenuItem() .setID(it.integry.integrywmsnative.R.id.nav_free_picking) @@ -80,7 +79,7 @@ public class MenuConfigurationGRAMM extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_lavorazione_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_lavorazione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineLavorazioneElencoFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1))) .addItem(new MenuItem() .setID(it.integry.integrywmsnative.R.id.nav_free_lav_picking) diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 71d6e578..e5c916e6 100644 --- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -6,14 +6,14 @@ import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java index 1be2cd96..5b946757 100644 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java +++ b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java @@ -3,13 +3,12 @@ package it.integry.wms.dynamic_customization.extensions; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; -import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; -import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; +import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; public class MenuConfigurationIME extends BaseMenuConfiguration { @@ -47,7 +46,7 @@ public class MenuConfigurationIME extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(MainVenditaFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, GestioneEnum.VENDITA, -1))) .addItem(new MenuItem() .setID(it.integry.integrywmsnative.R.id.nav_free_picking) @@ -80,7 +79,7 @@ public class MenuConfigurationIME extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.prod_ordine_lavorazione_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_picking_lavorazione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) - .setFragmentFactory(ProdOrdineLavorazioneElencoFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1))) ).addGroup( new MenuGroup() .setGroupText(it.integry.integrywmsnative.R.string.internal_handling) diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index a7025db9..e5c916e6 100644 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -1,23 +1,19 @@ package it.integry.wms.dynamic_customization.extensions; -import android.app.Dialog; -import android.app.ProgressDialog; - import java.util.List; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityToast; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index f238abcb..e5c916e6 100644 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -1,22 +1,19 @@ package it.integry.wms.dynamic_customization.extensions; -import android.app.Dialog; - import java.util.List; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityToast; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 7ad00a70..43e0e202 100644 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -1,26 +1,24 @@ package it.integry.wms.dynamic_customization.extensions; -import android.app.Dialog; - import java.util.List; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityToast; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { //UtilityToast.showToast("Avviato metodo in SaporiVeriPv"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), onComplete, onFailed); } + } diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java index a2b1bc4b..c9c5dfe8 100644 --- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java +++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java @@ -3,9 +3,9 @@ package it.integry.wms.dynamic_customization.extensions; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; -import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; public class MenuConfigurationVG extends BaseMenuConfiguration { @@ -34,7 +34,7 @@ public class MenuConfigurationVG extends BaseMenuConfiguration { .setTitleText(it.integry.integrywmsnative.R.string.vendita_title_fragment) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_spedizione) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_upload) - .setFragmentFactory(MainVenditaFragment::newInstance)) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, GestioneEnum.VENDITA, -1))) .addItem(new MenuItem() .setID(it.integry.integrywmsnative.R.id.nav_free_picking) diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index fc48124e..690b7b2a 100644 --- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -1,23 +1,20 @@ package it.integry.wms.dynamic_customization.extensions; -import android.app.Dialog; -import android.app.ProgressDialog; - import java.util.List; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { String codMdepOrder = testateOrdini.get(0).getCodMdep(); diff --git a/ext_sources/ICONS/ic_dashboard_prod_versamento_merce.svg b/ext_sources/ICONS/ic_dashboard_prod_versamento_merce.svg new file mode 100644 index 00000000..08ad3bad --- /dev/null +++ b/ext_sources/ICONS/ic_dashboard_prod_versamento_merce.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + +