Refactoring elenco ordini uscita.

Vario.
This commit is contained in:
Giuseppe Scorrano 2021-02-04 17:02:27 +01:00
parent cfc3649807
commit b00cd1f097
102 changed files with 1970 additions and 3386 deletions

View File

@ -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) {

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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)

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
}

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini;
private List<OrdineUscitaInevasoDTO> testateOrdini;
public int getId() {
return id;
@ -91,11 +87,11 @@ public class ColliDataRecover {
return this;
}
public List<OrdineVenditaInevasoDTO> getTestateOrdini() {
public List<OrdineUscitaInevasoDTO> getTestateOrdini() {
return testateOrdini;
}
public RecoverDTO setTestateOrdini(List<OrdineVenditaInevasoDTO> testateOrdini) {
public RecoverDTO setTestateOrdini(List<OrdineUscitaInevasoDTO> 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<OrdineVenditaInevasoDTO> testateOrdini) {
public static int startNewSession(MtbColt mtbColtSession, List<OrdineUscitaInevasoDTO> testateOrdini) {
Integer newId = null;
while(newId == null) {

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini;
private List<OrdineUscitaInevasoDTO> testateOrdini;
public int getId() {
return id;
@ -70,11 +70,11 @@ public class ColliDataRecoverDTO {
return this;
}
public List<OrdineVenditaInevasoDTO> getTestateOrdini() {
public List<OrdineUscitaInevasoDTO> getTestateOrdini() {
return testateOrdini;
}
public ColliDataRecoverDTO setTestateOrdini(List<OrdineVenditaInevasoDTO> testateOrdini) {
public ColliDataRecoverDTO setTestateOrdini(List<OrdineUscitaInevasoDTO> testateOrdini) {
this.testateOrdini = testateOrdini;
return this;
}

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini) {
public int startNewSession(MtbColt mtbColtSession, List<OrdineUscitaInevasoDTO> testateOrdini) {
Integer newId = null;
while(newId == null) {

View File

@ -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));
}
}

View File

@ -6,6 +6,6 @@ public interface IScrollableFragment {
void setScrollToolbar(ElevatedToolbar toolbar);
void setOnPreDestroy(Runnable onPreDestroy);
void setScrollableOnPreDestroy(Runnable onPreDestroy);
}

View File

@ -2,8 +2,10 @@ package it.integry.integrywmsnative.core.interfaces;
public interface ISelectAllFragment {
boolean isEnabled();
boolean isSelectAllButtonEnabled();
void onSelectAll();
void setSelectAllOnPreDestroy(Runnable onPreDestroy);
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -40,7 +40,11 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}
public static void getByCodMart(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
public void getByCodMart(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
getByCodMartStatic(codMartToFind, onComplete, onFailed);
}
public static void getByCodMartStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String joinedCods = Stream.of(codMartToFind)
.collect(Collectors.joining(","));

View File

@ -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<MtbColt> callback) {
for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) {
@ -88,8 +95,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
public void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
saveColliStatic(mtbColtsToSave, onComplete, onFailed);
}
public static void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public static void saveColliStatic(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> 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) {

View File

@ -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<OrdineVenditaInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
private final SystemRESTConsumer mSystemRESTConsumer;
List<GetPickingListDTO> 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<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
analyzeAnswer(response, "retrieveListaArticoliFromOrdiniVendita", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> 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<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete, RunnableArgs<Exception> onFailed) {
@ -69,4 +58,91 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
}
public void getOrdiniInevasi(String codMdep, GestioneEnum gestione, RunnableArgs<List<OrdineUscitaInevasoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class);
service.getOrdiniInevasi(codMdep, gestione.getText())
.enqueue(new Callback<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> 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<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> 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<OrdineUscitaInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
List<GetPickingListDTO> 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<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
public void getBancaliGiaRegistrati(List<OrdineInevasoDTO> orders, GestioneEnum gestione, int segno, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> 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<HashMap<String, Object>> whereCondMapList = new ArrayList<>();
for (OrdineInevasoDTO ordineInevaso : orders) {
HashMap<String, Object> 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<ArrayList<MtbColt>>() {}.getType();
this.mSystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override
public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@ -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<ServiceRESTResponse<List<PickingObjectDTO>>> getSuggestedPickingList(@Query("codMdep") String codMdep, @Body List<SitArtOrdDTO> sitArtOrdDTOList);
@GET("SM2GetOrdiniVenditaInevasi")
Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> getOrdiniInevasi(@Query("codMdep") String codMdep, @Query("gestione") String gestione);
}

View File

@ -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<List<MtbDepoPosizione>> onComplete, RunnableArgs<Exception> onFailed) {
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
@ -39,11 +47,11 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
});
}
public void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
getBancaliInPosizioneStatic(mtbDepoPosizione, onComplete, onFailed);
}
public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public static void getBancaliInPosizioneStatic(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT * FROM mtb_colt WHERE segno > 0 AND cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());

View File

@ -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<ServiceRESTResponse<Object>> call, Throwable t) {
Log.e("ProcessSql", t.toString());
Logger.e(t, "ProcessSQL");
onFailed.run(new Exception(t));
}
});

View File

@ -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;
}

View File

@ -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<Field> fromFields = collectFields(fromClass, depth);
List<Field> 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<Field> collectFields(Class c, Class depth) {
List<Field> 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<Field> fields) {
Field actual;
for (Iterator<Field> 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;
}
}

View File

@ -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<Runnable> 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);
}
}

View File

@ -140,7 +140,7 @@ public class AccettazionePickingViewModel {
.map(SitArtOrdDTO::getCodMart)
.toList();
ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
this.mArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;

View File

@ -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 " +

View File

@ -50,7 +50,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private FragmentMainBinding mBindings;
private Runnable mOnPreDestroy;
private List<Runnable> 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);
}

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
private GestioneEnum mCurrentGestioneOrd = null;
private GestioneEnum mCurrentGestioneCol = null;
private int mCurrentSegnoCol = 0;
private ElevatedToolbar mToolbar;
private List<Runnable> 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<OrdiniUscitaElencoDTO> orderList) {
this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(orderList));
}
private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) {
ComparatorCompat<OrdiniUscitaElencoDTO> comparator = ComparatorCompat
.comparing(OrdiniUscitaElencoDTO::getRagSocOrd)
.thenComparing(ComparatorCompat.comparing(OrdiniUscitaElencoDTO::getNumOrd));
List<OrdiniUscitaElencoListModel> 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<OrdiniUscitaElencoDTO> 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<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
List<String> 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())
+ "<br />" +
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size())
+ "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + 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();
}
}

View File

@ -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);
}
}

View File

@ -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<List<OrdiniUscitaElencoDTO>> 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<OrdiniUscitaElencoDTO> selectedOrders) {
List<GestioneEnum> foundGestioni = Stream.of(selectedOrders)
.map(OrdineUscitaInevasoDTO::getGestioneEnum)
.withoutNulls()
.distinct()
.toList();
if(foundGestioni != null && foundGestioni.size() > 1) {
this.sendError(new InvalidLUMultiGestioneException());
return;
}
List<String> foundCodMdep = Stream.of(selectedOrders)
.map(OrdineUscitaInevasoDTO::getCodMdep)
.withoutNulls()
.distinct()
.toList();
if(foundCodMdep != null && foundCodMdep.size() > 1) {
this.sendError(new InvalidLUMultiCodMdepException());
return;
}
this.sendOnLoadingStarted();
List<OrdineUscitaInevasoDTO> 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<List<OrdiniUscitaElencoDTO>> 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<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts) {
if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts);
}
public interface Listener {
void onLoadingStarted();
void onLoadingEnded();
void onError(Exception ex);
void onOrdersDispatched(List<OrdineUscitaInevasoDTO> orders, List<SitArtOrdDTO> sitArts, List<MtbColt> alreadyRegisteredMtbColts);
}
}

View File

@ -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<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
private final RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
private List<OrdineVenditaInevasoDTO> currentOrderList;
private List<OrdineVenditaInevasoDTO> currentFilteredOrderList;
private final List<OrdiniUscitaElencoDTO> currentOrderList;
private List<OrdiniUscitaElencoDTO> currentFilteredOrderList;
private ArrayAdapter<String> arrayAdapterCodMdep;
private ArrayAdapter<String> arrayAdapterIdViaggio;
@ -51,30 +51,30 @@ public class DialogVenditaFiltroAvanzato {
private ArrayAdapter<String> arrayAdapterAgente;
private ArrayAdapter<String> arrayAdapterAutomezzo;
private Predicate<OrdineVenditaInevasoDTO> currentDepositoPredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentIdViaggioPredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentNumOrdsPredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentClientePredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentDataConsPredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentVettorePredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentAgentePredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentDepositoPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentIdViaggioPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentNumOrdsPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentClientePredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentDataConsPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentTermConsPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentVettorePredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentAgentePredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentAutomezzoPredicate = null;
private boolean firstInit = true;
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
public static AlertDialog make(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
}
public static AlertDialog make(final Context context,
final List<OrdineVenditaInevasoDTO> ordersList,
final List<OrdiniUscitaElencoDTO> ordersList,
DialogVenditaFiltroAvanzatoViewModel baseViewModel,
RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
}
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdiniUscitaElencoDTO>, 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<String> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<String> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<String> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<String> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> 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<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(currentOrderList)
.filter(x ->
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.vendita.dialogs;
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
import java.util.Date;

View File

@ -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<OrdiniUscitaElencoAdapter.SubheaderHolder, OrdiniUscitaElencoAdapter.SingleItemViewHolder> {
private final Context mContext;
private final List<OrdiniUscitaElencoListModel> mDataset = new ArrayList<>();
private View mEmptyView;
private RunnableArgs<String> mOnGroupItemClicked;
private RunnableArgs<OrdiniUscitaElencoListModel> 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<OrdiniUscitaElencoListModel> 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<String> onGroupItemClicked) {
this.mOnGroupItemClicked = onGroupItemClicked;
return this;
}
public OrdiniUscitaElencoAdapter setOnItemChecked(RunnableArgs<OrdiniUscitaElencoListModel> 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();
}
}

View File

@ -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;
}
}

View File

@ -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<Runnable> 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);
}

View File

@ -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

View File

@ -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<DocumentoResoDTO> documents, RunnableArgs<ArrayList<WithdrawableDtbDocr>> onComplete, RunnableArgs<Exception> 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) {

View File

@ -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<Runnable> 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);
}

View File

@ -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<OrdineVenditaInevasoDTO> mOriginalOrderList;
private List<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> onSingleSelectionChanged = dto -> {
List<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
List<String> 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<List<SitArtOrdDTO>> onPostGetListaArts = sitArtsDTO -> {
mHelper.getBancaliLavorazioneGiaRegistrati(selectedOrders, mtbColtList -> {
progress.dismiss();
List<String> 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())
+ "<br />" +
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size())
+ "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + 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<OrdineVenditaInevasoDTO> selectedOrders, Runnable onComplete, Runnable onFailed) {
if (selectedOrders != null && selectedOrders.size() > 0) {
//Definizione della gestione collo di default
List<GestioneEnum> 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<String> 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<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> 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);
}
}

View File

@ -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<List<OrdineVenditaInevasoDTO>> onComplete, RunnableArgs<Exception> 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<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> 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<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> 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<OrdineVenditaInevasoDTO> getSelectedOrders(List<OrdineVenditaInevasoDTO> ordiniList) {
return Stream.of(ordiniList)
.filter(OrdineVenditaInevasoDTO::isSelected)
.toList();
}
// public void retrievePickingList(List<OrdineLavorazioneInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed){
// String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
//
//
// Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_pick_lavorazione");
// perfTrace.start();
//
// List<GetPickingListDTO> 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<ServiceRESTResponse<List<SitArtOrdDTO>>>() {
// @Override
// public void onResponse(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Response<ServiceRESTResponse<List<SitArtOrdDTO>>> response) {
// analyzeAnswer(response, "retrieveListaArticoliFromOrdiniVendita", onComplete, onFailed);
// }
//
// @Override
// public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> 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<OrdineVenditaInevasoDTO> orders, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> 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<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override
public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@ -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<ProdOrdineLavorazioneListAdapter.SubheaderHolder, ProdOrdineLavorazioneListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineVenditaInevasoDTO> mDataset;
private RunnableArgs<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> myDataset, RunnableArgs<OrdineVenditaInevasoDTO> onSingleSelectionChanged) {
mContext = context;
mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
public void updateItems(List<OrdineVenditaInevasoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineVenditaInevasoDTO> orderItems(List<OrdineVenditaInevasoDTO> 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;
}
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -0,0 +1,13 @@
package it.integry.integrywmsnative.gest.prod_posizionamento_da_ord;
import javax.inject.Inject;
public class ProdPosizionamentoDaOrdViewModel {
@Inject
public ProdPosizionamentoDaOrdViewModel() {
}
}

View File

@ -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<Runnable> 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();
}

View File

@ -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) {

View File

@ -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);

View File

@ -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<Runnable> 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);
}
}

View File

@ -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();

View File

@ -58,12 +58,17 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
private List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
private boolean mRedirectToNewOrder = true;
private final List<Runnable> 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();
}
}
}

View File

@ -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<OrdineWithGriglia> mOriginalOrderList;
private List<OrdineWithGriglia> 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<OrdineWithGriglia> ordini) {
mRenderedOrderList.clear();
if(ordini != null) mRenderedOrderList.addAll(ordini);
}
}

View File

@ -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<OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder, OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineWithGriglia> mOriginalDataset;
private List<OrdineWithGriglia> 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<OrdineWithGriglia> myDataset) {
mContext = context;
mOriginalDataset = myDataset;
mDataset = orderItems(myDataset);
}
public void updateItems(List<OrdineWithGriglia> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineWithGriglia> orderItems(List<OrdineWithGriglia> 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;
}
}

View File

@ -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<Runnable> 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<BarcodeScanDTO> 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 {

View File

@ -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);
}

View File

@ -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);

View File

@ -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<List<String>>() {
@Override
public void onSuccess(final List<String> 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<String> 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);
}
}

View File

@ -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<SitArtOrdDTO> mSitArtOrd;
private ArrayList<OrdineVenditaInevasoDTO> mTestateOrdini;
private ArrayList<OrdineUscitaInevasoDTO> mTestateOrdini;
private ArrayList<MtbColt> mColliRegistrati;
private GestioneEnum mGestioneCol;
private int mSegnoCol;
private boolean mShouldCloseActivity;
private final int PICK_UL_REQUEST = 1;
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineUscitaInevasoDTO> selectedOrders, List<MtbColt> 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<Boolean, MtbDepoPosizione> 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);

View File

@ -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);
}
}

View File

@ -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<OrdineVenditaInevasoDTO> mTestateOrdini;
private List<OrdineUscitaInevasoDTO> mTestateOrdini;
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
private List<MtbColt> mColliRegistrati = new ArrayList<>();
private Listener mListener;
private GestioneEnum mDefaultGestioneOfUL = null;
private int mDefaultSegnoCol = -1;
private String mDefaultCodMdep = null;
private List<FiltroOrdineDTO> 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<SitArtOrdDTO> pickingList,
List<OrdineVenditaInevasoDTO> testateOrdini,
List<OrdineUscitaInevasoDTO> testateOrdini,
List<MtbColt> 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<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;
@ -189,19 +197,21 @@ public class SpedizioneViewModel {
return;
}
//Definizione della gestione collo di default
List<GestioneEnum> foundGestioni = Stream.of(mTestateOrdini)
.map(OrdineVenditaInevasoDTO::getGestioneEnum)
.withoutNulls()
.distinct()
.toList();
if (mDefaultGestioneOfUL == null) {
//Definizione della gestione collo di default
List<GestioneEnum> 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<String> 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<String> 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<String> 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<Integer> 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<Date> 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<String> 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<Boolean, MtbDepoPosizione> 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<MtbColt> 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<List<MtbColt>> 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<MtbColt> sourceMtbColts, MtbColt destMtbColt, RunnableArgs<MtbColt> 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<OrdineVenditaInevasoDTO> sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
private void cyclicPrintPackingList(@NotNull Iterator<OrdineUscitaInevasoDTO> sourceTestateOrdineVenditaIterator, String printerName, Runnable onComplete, RunnableArgs<Exception> 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<Exception> onFailed) {
private void singlePrintPackingList(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> 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<PickedQuantityDTO, Boolean> onComplete);
void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete);
}
}

View File

@ -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<Runnable> 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

View File

@ -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) {

View File

@ -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<Runnable> 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);
}

View File

@ -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<OrdineVenditaInevasoDTO> mOriginalOrderList;
private List<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> onSingleSelectionChanged = dto -> {
List<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
List<String> 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<List<SitArtOrdDTO>> onPostGetListaArts = sitArtsDTO -> {
mHelper.getBancaliVenditaGiaRegistrati(selectedOrders, mtbColtList -> {
progress.dismiss();
List<String> 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())
+ "<br />" +
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size())
+ "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + 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<OrdineVenditaInevasoDTO> selectedOrders, Runnable onComplete, Runnable onFailed) {
if(selectedOrders != null && selectedOrders.size() > 0) {
//Definizione della gestione collo di default
List<GestioneEnum> 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<String> 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<String> 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();
}
}
}

View File

@ -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<MainListVenditaAdapter.SubheaderHolder, MainListVenditaAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineVenditaInevasoDTO> mDataset;
private RunnableArgs<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> myDataset, RunnableArgs<OrdineVenditaInevasoDTO> onSingleSelectionChanged) {
mContext = context;
mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
public void updateItems(List<OrdineVenditaInevasoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineVenditaInevasoDTO> orderItems(List<OrdineVenditaInevasoDTO> 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;
}
}

View File

@ -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<List<OrdineVenditaInevasoDTO>> onComplete, RunnableArgs<Exception> 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<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> 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<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> 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<OrdineVenditaInevasoDTO> orders, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> 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<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override
public void onSuccess(List<MtbColt> 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<List<DtbOrdt>> onComplete, RunnableArgs<Exception> 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<ServiceRESTResponse<List<DtbOrdt>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<DtbOrdt>>> call, Response<ServiceRESTResponse<List<DtbOrdt>>> 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<ServiceRESTResponse<List<DtbOrdt>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public List<OrdineVenditaInevasoDTO> getSelectedOrders(List<OrdineVenditaInevasoDTO> ordiniList){
return Stream.of(ordiniList)
.filter(OrdineVenditaInevasoDTO::isSelected)
.toList();
}
public void selectAll(List<OrdineVenditaInevasoDTO> groupedOrdiniInevasi) {
toggleSelection(groupedOrdiniInevasi, true);
}
public void deselectAll(List<OrdineVenditaInevasoDTO> groupedOrdiniInevasi) {
toggleSelection(groupedOrdiniInevasi, false);
}
public void toggleSelection(List<OrdineVenditaInevasoDTO> groupedOrdiniInevasi, boolean value) {
for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
groupedOrdiniInevasi.get(i).setSelected(value);
}
}
}

View File

@ -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<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> listOrdiniInevasi(@Query("codMdep") String codMdep);
@GET("SM2GetOrdiniVenditaInevasi")
Call<ServiceRESTResponse<List<OrdineVenditaInevasoDTO>>> listOrdiniInevasi(@Query("codMdep") String codMdep, @Query("gestione") String gestione);
@GET("getOrdiniInCommCollo")
Call<ServiceRESTResponse<List<DtbOrdt>>> 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);
}

View File

@ -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<OrdineVenditaInevasoDTO> 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<OrdineVenditaInevasoDTO> ordini) {
mOrdini = ordini;
}
public RunnableArgs<BarcodeScanDTO> 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<OrdineVenditaInevasoDTO> 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<Integer> numOrds = Stream.of(orderList)
.map(DtbOrdt::getNumOrd)
.toList();
List<OrdineVenditaInevasoDTO> 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();
}
}

View File

@ -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<Runnable> 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);
}
}

View File

@ -93,9 +93,7 @@ public class VersamentoMerceViewModel {
}
public RunnableArgs<BarcodeScanDTO> 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();
});

View File

@ -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();
});
}

View File

@ -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<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
return new DialogAskPositionOfLU(context, mtbColtToUpdate, checkForLineaProd, onComplete, onFailed).mDialog;
public static Dialog makeBase(final Context context, boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
return new DialogAskPositionOfLU(context, checkForLineaProd, onComplete, onFailed).mDialog;
}
private DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
private DialogAskPositionOfLU(Context context, boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
mContext = context;
mtbColt = mtbColtToUpdate;
mCheckForLineaProd = checkForLineaProd;
this.onComplete = onComplete;

View File

@ -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();

View File

@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="512dp"
android:height="512dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:pathData="M405.3,74.7H106.7c-11.7,0 -21.3,9.6 -21.3,21.3v64c0,11.8 9.6,21.3 21.3,21.3h298.7c11.8,0 21.3,-9.6 21.3,-21.3V96C426.7,84.3 417.1,74.7 405.3,74.7z"
android:fillColor="#2958B7"/>
<path
android:pathData="M405.3,202.7H106.7c-11.7,0 -21.3,9.6 -21.3,21.3v64c0,11.8 9.6,21.3 21.3,21.3h298.7c11.8,0 21.3,-9.6 21.3,-21.3v-64C426.7,212.3 417.1,202.7 405.3,202.7z"
android:fillColor="#2958B7"/>
<path
android:pathData="M405.3,330.7H106.7c-11.7,0 -21.3,9.6 -21.3,21.3v64c0,11.8 9.6,21.3 21.3,21.3h298.7c11.8,0 21.3,-9.6 21.3,-21.3v-64C426.7,340.3 417.1,330.7 405.3,330.7z"
android:fillColor="#2958B7"/>
<path
android:pathData="M512,405.3c0,58.9 -47.8,106.7 -106.7,106.7s-106.7,-47.8 -106.7,-106.7s47.8,-106.7 106.7,-106.7S512,346.4 512,405.3z"
android:fillColor="#43A047"/>
<path
android:pathData="M453.3,355.2L392.5,416l-28.8,-28.8l-22.4,23.5l51.2,51.2l83.2,-83.2L453.3,355.2z"
android:fillColor="#DCEDC8"/>
</vector>

View File

@ -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"/>

View File

@ -7,7 +7,7 @@
<data>
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel" />
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" />
</data>

View File

@ -5,7 +5,17 @@
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="androidx.databinding.ObservableList"/>
<import type="androidx.databinding.ObservableList" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="android.view.View" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoViewModel" />
</data>
<FrameLayout
@ -87,6 +97,8 @@
android:layout_margin="@dimen/fab_margin"
android:tint="@android:color/white"
style="@style/Widget.MaterialComponents.FloatingActionButton"
app:srcCompat="@drawable/ic_check_black_24dp" />
app:srcCompat="@drawable/ic_check_black_24dp"
app:visibility="@{view.fabVisible}"
android:onClick="@{() -> view.dispatchOrders()}" />
</FrameLayout>
</layout>

View File

@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="it.integry.integrywmsnative.R" />
<variable
name="checkboxValue"
type="it.integry.integrywmsnative.core.di.BindableBoolean" />
<import type="it.integry.integrywmsnative.core.di.BindableBoolean" />
<variable
name="selected"
type="BindableBoolean" />
</data>
@ -30,19 +31,20 @@
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/ordine_lavorazione_main_list_group_item_container_checkBox"
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
android:background="@android:color/transparent"
app:checked="@{selected}"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@id/ordine_lavorazione_main_list_group_item_container_checkBox">
android:layout_toEndOf="@id/checkbox">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/ordine_lavorazione_main_list_group_item_container_testata_data_cons"
android:id="@+id/right_descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Cons 07 nov 2018"
@ -51,7 +53,7 @@
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/ordine_lavorazione_main_list_group_item_container_testata_ord"
android:id="@+id/descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Ord. Ven. 39 del 27 ott 2017"
@ -60,20 +62,20 @@
android:textColor="#000"
android:layout_alignParentStart="true"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_toStartOf="@id/ordine_lavorazione_main_list_group_item_container_testata_data_cons"/>
android:layout_toStartOf="@id/descrizione"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/ordine_lavorazione_main_list_group_item_container_testata_cod_jcom"
android:id="@+id/right_sub_descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Cod Jcom"
android:layout_alignParentEnd="true"
android:layout_below="@id/ordine_lavorazione_main_list_group_item_container_testata_data_cons"
android:layout_below="@id/right_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vendita_main_list_group_item_container_detail_ord"
android:id="@+id/sub_descrizione"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
@ -81,8 +83,8 @@
android:paddingEnd="6dp"
tools:text="TextView"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_below="@+id/ordine_lavorazione_main_list_group_item_container_testata_ord"
android:layout_toStartOf="@id/ordine_lavorazione_main_list_group_item_container_testata_cod_jcom"/>
android:layout_below="@+id/right_descrizione"
android:layout_toStartOf="@id/right_sub_descrizione"/>
</RelativeLayout>
</RelativeLayout>

View File

@ -1,21 +1,10 @@
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
<!--<androidx.cardview.widget.CardView-->
<!--xmlns:card_view="http://schemas.android.com/apk/res-auto"-->
<!--android:id="@+id/card_view"-->
<!--android:layout_gravity="center"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--card_view:cardUseCompatPadding="true"-->
<!--card_view:cardCornerRadius="4dp"-->
<!--card_view:cardElevation="4dp">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -37,7 +26,7 @@
android:enabled="false" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/ordine_lavorazione_main_list_group_header"
android:id="@+id/group_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
@ -48,19 +37,8 @@
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/ordine_lavorazione_main_list_group_item_container">
</LinearLayout>
</LinearLayout>
<!--</androidx.cardview.widget.CardView>-->
</LinearLayout>

View File

@ -1,61 +0,0 @@
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
<!--<androidx.cardview.widget.CardView-->
<!--xmlns:card_view="http://schemas.android.com/apk/res-auto"-->
<!--android:id="@+id/card_view"-->
<!--android:layout_gravity="center"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--card_view:cardUseCompatPadding="true"-->
<!--card_view:cardCornerRadius="4dp"-->
<!--card_view:cardElevation="4dp">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/mainGreen"
android:paddingStart="12dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/ordine_a_pv_main_list_group_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Medium"
tools:text="NOME GRUPPO"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/ordine_a_pv_main_list_group_item_container">
</LinearLayout>
</LinearLayout>
<!--</androidx.cardview.widget.CardView>-->
</LinearLayout>
</layout>

View File

@ -1,90 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="androidx.databinding.ObservableList"/>
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/ordine_lavorazione_main_list"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ordine_lavorazione_empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_playlist_add_check_24dp"
android:adjustViewBounds="true"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:textSize="18sp"
android:text="@string/no_orders_found_message"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/ordine_lavorazione_main_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:tint="@android:color/white"
app:srcCompat="@drawable/ic_check_black_24dp" />
</FrameLayout>
</layout>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto">
<data>
<import type="androidx.databinding.ObservableList" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="android.view.View" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdFragment" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdViewModel" />
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".gest.prod_posizionamento_da_ord.ProdPosizionamentoDaOrdFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
</layout>

View File

@ -1,85 +0,0 @@
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="androidx.databinding.ObservableList"/>
<variable name="view" type="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoTransmittedListFragment" />
</data>
<FrameLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/full_white"
tools:context="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoTransmittedListFragment">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/ordine_a_main_list"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ordini_a_empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_playlist_add_check_24dp"
android:adjustViewBounds="true"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:textSize="18sp"
android:text="@string/no_orders_found_message"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</FrameLayout>
</layout>

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/vendita_main_list_group_clienti_comm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:paddingRight="6dp"
android:text="TextView" />
</RelativeLayout>

View File

@ -1,130 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<import type="it.integry.integrywmsnative.R" />
<variable
name="checkboxValue"
type="it.integry.integrywmsnative.core.di.BindableBoolean" />
</data>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="2dp"
android:paddingEnd="4dp">
<RelativeLayout
android:id="@+id/vendita_main_list_group_item_container_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/empty_view"
android:background="@color/full_white"
android:paddingStart="2dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp">
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/vendita_main_list_group_item_container_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@id/vendita_main_list_group_item_container_checkBox"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vendita_main_list_group_item_container_testata_ord"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/vendita_main_list_group_item_container_testata_data_cons"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000"
tools:text="Ord. Ven. 39 del 27 ott 2017" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vendita_main_list_group_item_container_testata_data_cons"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:textColor="#000"
tools:text="Cons 07 nov 2018" />
</RelativeLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vendita_main_list_group_item_container_detail_ord"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:paddingEnd="6dp"
tools:text="Destinatario - Indirizzo" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/vendita_main_list_group_item_container_vettore_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="18dp"
android:layout_height="18dp"
android:src="@drawable/ic_black_truck"
android:adjustViewBounds="true"
android:tint="@color/gray_600"
android:layout_marginEnd="4dp"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/vendita_main_list_group_item_container_vettore"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:paddingEnd="6dp"
tools:text="Vettore: Ragione sociale" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
<View
android:id="@+id/empty_view"
android:layout_width="8dp"
android:layout_height="wrap_content"
android:layout_alignTop="@id/vendita_main_list_group_item_container_root"
android:layout_alignBottom="@id/vendita_main_list_group_item_container_root"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp" />
</RelativeLayout>
</layout>

View File

@ -1,82 +0,0 @@
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
<!--<androidx.cardview.widget.CardView-->
<!--xmlns:card_view="http://schemas.android.com/apk/res-auto"-->
<!--android:id="@+id/card_view"-->
<!--android:layout_gravity="center"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--card_view:cardUseCompatPadding="true"-->
<!--card_view:cardCornerRadius="4dp"-->
<!--card_view:cardElevation="4dp">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/mainOrange"
android:paddingStart="12dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:checked="true"
android:enabled="false" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/vendita_main_list_group_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Medium"
tools:text="NOME GRUPPO"/>
<TextView
android:id="@+id/vendita_main_list_group_subheader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
style="@style/AppTheme.NewMaterial.Text.Small"
tools:text="SOTTO GRUPPO"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/vendita_main_list_group_item_container">
</LinearLayout>
</LinearLayout>
<!--</androidx.cardview.widget.CardView>-->
</LinearLayout>
</layout>

View File

@ -235,7 +235,7 @@
<string name="free_picking_title_fragment">Picking libero</string>
<string name="error_multiple_gest">Impossibile caricare ordini di diverse <b>gestioni</b></string>
<string name="error_wrong_order_type">Non è stato possibile identificare la <b>gestione</b> degli ordini selezionati</string>
<string name="error_multiple_cod_mdep_ordv">Impossibile caricare ordini di diversi <b>depositi</b></string>
<string name="error_multiple_cod_mdep_ord">Impossibile caricare ordini di diversi <b>depositi</b></string>
<string name="error_multiple_cod_jfas_ordp">Non verrà salvata la <b>linea di produzione</b> poiché stai selezionando ordini di diverse produzioni</string>
<string name="recovering_data">Recupero dati</string>

View File

@ -18,6 +18,7 @@
<item name="nav_versamento_merce" type="id" />
<item name="nav_free_picking" type="id" />
<item name="nav_free_lav_picking" type="id" />
<item name="nav_prod_posizionamento_da_ord" type="id" />
<item name="nav_resi_fornitore" type="id" />
<item name="nav_resi_cliente" type="id" />
<item name="nav_prod_ordine_produzione" type="id" />

View File

@ -234,7 +234,7 @@
<string name="free_picking_suggestion_2">Scan an item to start</string>
<string name="error_multiple_gest">Can\'t load orders of different type</string>
<string name="error_wrong_order_type">Can\'t load current order type</string>
<string name="error_multiple_cod_mdep_ordv">Can\'t load orders of different deposits</string>
<string name="error_multiple_cod_mdep_ord">Can\'t load orders of different deposits</string>
<string name="error_multiple_cod_jfas_ordp">The <b>production line</b> will not be saved because you are selecting orders for different productions</string>
<string name="lu_scan_not_granted_here">Logistics Unit\'s barcode is not accepted at this moment</string>
<string name="lu_already_attache_to_doc">Selected LU is already attached to a document hence can\'t be opened</string>
@ -328,4 +328,6 @@
<string name="use">Use</string>
<string name="back">Back</string>
<string name="title_dynamic_gramm">Gramm Customization</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
// UtilityToast.showToast("Avviato metodo in BaseFeature");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),

View File

@ -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)

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
// UtilityToast.showToast("Avviato metodo in Frudis");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),

View File

@ -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)

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
// UtilityToast.showToast("Avviato metodo in BaseFeature");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),

View File

@ -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)

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
// UtilityToast.showToast("Avviato metodo in BaseFeature");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
// UtilityToast.showToast("Avviato metodo in BaseFeature");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),

View File

@ -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<OrdineVenditaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
//UtilityToast.showToast("Avviato metodo in SaporiVeriPv");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
onComplete,
onFailed);
}
}

View File

@ -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)

Some files were not shown because too many files have changed in this diff Show More