diff --git a/app/build.gradle b/app/build.gradle index e2b78828..730dc95a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 421 - def appVersionName = '1.40.04' + def appVersionCode = 422 + def appVersionName = '1.40.05' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 14b40704..64edbc2a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -116,7 +116,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(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, SettingsManager.iDB().isFlagShowInfo() ? DialogInfoSituazioneArticoloView.class : null))) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, SettingsManager.iDB().isFlagProduzioneShowInfo() ? DialogInfoSituazioneArticoloView.class : null))) .addItem(new MenuItem() .setID(R.id.nav_free_lav_picking) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java index 189a8ac4..51ad1be9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.model; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.Date; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; @@ -41,6 +42,7 @@ public class MvwSitArtUdcDetInventario { private String codJfas; private MtbAart mtbAart; private Integer numOrd; + private Date dataOrd; public String getGestione() { return gestione; @@ -317,4 +319,13 @@ public class MvwSitArtUdcDetInventario { .setPesoLordoKg(getPesoLordoKg()) .setUntMis(getUntMis()); } + + public Date getDataOrd() { + return dataOrd; + } + + public MvwSitArtUdcDetInventario setDataOrd(Date dataOrd) { + this.dataOrd = dataOrd; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index 4379a66c..687689be 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.core.rest.consumers; +import androidx.annotation.NonNull; + import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; @@ -10,6 +12,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.DtbOrdt; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -86,4 +89,20 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { } }); } + + public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs onComplete, RunnableArgs onFailed){ + MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); + service.retrievePartitaMag(codMart, partitaMag) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + analyzeAnswer(response, "retrievePartitaMag", onComplete, onFailed); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java index bd6b2386..f9075a85 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java @@ -3,11 +3,14 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; import it.integry.integrywmsnative.core.model.DtbOrdt; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import retrofit2.Call; import retrofit2.http.Body; +import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.Query; public interface MagazzinoRESTConsumerService { @@ -17,4 +20,8 @@ public interface MagazzinoRESTConsumerService { @POST("SM2SaveTerminalino") Call>> saveOrdine(@Body SaveDTO saveDTO); + @GET("wms/partita-magazzino/retrievePartitaMag") + Call> retrievePartitaMag(@Query("codMart") String codMart, + @Query("partitaMag") String partitaMag); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 479c0ea3..eeabce2d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -60,20 +60,21 @@ public class DBSettingsModel { private String commessaMagazzino; private boolean flagGeneraDocumentoSpedizione = false; private boolean flagIsInventarioCacheEnabled = false; - private boolean flagAskPrintUlAccettazioneBolla = false; - private boolean flagAskTipoColloAccettazioneBolla = false; - private boolean flagAskVersamentoAutomaticoAccettazioneBolla = false; - private boolean flagCanAddUnknownItemsAccettazioneBolla = false; - private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false; - private boolean flagEnableFastPickAccettazioneBolla = false; - private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false; - private boolean flagAllowULRecoverAccettazioneBolla = true; - private boolean flagOverflowQuantityWarning = false; + private boolean flagAccettazioneBollaAskPrintUl = false; + private boolean flagAccettazioneBollaAskTipoCollo = false; + private boolean flagAccettazioneBollaAskVersamentoAutomatico = false; + private boolean flagAccettazioneBollaCanAddUnknownItems = false; + private boolean flagAccettazioneBollaCanAddUnknownBarcodes = false; + private boolean flagAccettazioneBollaEnableFastPick = false; + private boolean flagAccettazioneBollaDisableMandatoryTracciabilita = false; + private boolean flagAccettazioneBollaAllowULRecover = true; + private boolean flagSpedizioneOverflowQuantityWarning = false; private String viewPosizioni; - private boolean flagDeleteRowOnClose = false; - private boolean flagAllowBarcodeFornitore = false; - private boolean flagShowInfo = false; + private boolean flagAccettazioneDeleteRowOnClose = false; + private boolean flagAccettazioneAllowBarcodeFornitore = false; + private boolean flagProduzioneShowInfo = false; private boolean flagAccettazioneBollaUseQtaOrd = true; + private boolean flagWarningNewPartitaMag = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -490,84 +491,84 @@ public class DBSettingsModel { return this; } - public boolean isFlagAskPrintUlAccettazioneBolla() { - return flagAskPrintUlAccettazioneBolla; + public boolean isFlagAccettazioneBollaAskPrintUl() { + return flagAccettazioneBollaAskPrintUl; } - public DBSettingsModel setFlagAskPrintUlAccettazioneBolla(boolean flagAskPrintUlAccettazioneBolla) { - this.flagAskPrintUlAccettazioneBolla = flagAskPrintUlAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaAskPrintUl(boolean flagAccettazioneBollaAskPrintUl) { + this.flagAccettazioneBollaAskPrintUl = flagAccettazioneBollaAskPrintUl; return this; } - public boolean isFlagAskTipoColloAccettazioneBolla() { - return flagAskTipoColloAccettazioneBolla; + public boolean isFlagAccettazioneBollaAskTipoCollo() { + return flagAccettazioneBollaAskTipoCollo; } - public DBSettingsModel setFlagAskTipoColloAccettazioneBolla(boolean flagAskTipoColloAccettazioneBolla) { - this.flagAskTipoColloAccettazioneBolla = flagAskTipoColloAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaAskTipoCollo(boolean flagAccettazioneBollaAskTipoCollo) { + this.flagAccettazioneBollaAskTipoCollo = flagAccettazioneBollaAskTipoCollo; return this; } - public boolean isFlagAskVersamentoAutomaticoAccettazioneBolla() { - return flagAskVersamentoAutomaticoAccettazioneBolla; + public boolean isFlagAccettazioneBollaAskVersamentoAutomatico() { + return flagAccettazioneBollaAskVersamentoAutomatico; } - public DBSettingsModel setFlagAskVersamentoAutomaticoAccettazioneBolla(boolean flagAskVersamentoAutomaticoAccettazioneBolla) { - this.flagAskVersamentoAutomaticoAccettazioneBolla = flagAskVersamentoAutomaticoAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaAskVersamentoAutomatico(boolean flagAccettazioneBollaAskVersamentoAutomatico) { + this.flagAccettazioneBollaAskVersamentoAutomatico = flagAccettazioneBollaAskVersamentoAutomatico; return this; } - public boolean isFlagCanAddUnknownItemsAccettazioneBolla() { - return flagCanAddUnknownItemsAccettazioneBolla; + public boolean isFlagAccettazioneBollaCanAddUnknownItems() { + return flagAccettazioneBollaCanAddUnknownItems; } - public DBSettingsModel setFlagCanAddUnknownItemsAccettazioneBolla(boolean flagCanAddUnknownItemsAccettazioneBolla) { - this.flagCanAddUnknownItemsAccettazioneBolla = flagCanAddUnknownItemsAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaCanAddUnknownItems(boolean flagAccettazioneBollaCanAddUnknownItems) { + this.flagAccettazioneBollaCanAddUnknownItems = flagAccettazioneBollaCanAddUnknownItems; return this; } - public boolean isFlagCanAddUnknownBarcodesAccettazioneBolla() { - return flagCanAddUnknownBarcodesAccettazioneBolla; + public boolean isFlagAccettazioneBollaCanAddUnknownBarcodes() { + return flagAccettazioneBollaCanAddUnknownBarcodes; } - public DBSettingsModel setFlagCanAddUnknownBarcodesAccettazioneBolla(boolean flagCanAddUnknownBarcodesAccettazioneBolla) { - this.flagCanAddUnknownBarcodesAccettazioneBolla = flagCanAddUnknownBarcodesAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaCanAddUnknownBarcodes(boolean flagAccettazioneBollaCanAddUnknownBarcodes) { + this.flagAccettazioneBollaCanAddUnknownBarcodes = flagAccettazioneBollaCanAddUnknownBarcodes; return this; } - public boolean isFlagEnableFastPickAccettazioneBolla() { - return flagEnableFastPickAccettazioneBolla; + public boolean isFlagAccettazioneBollaEnableFastPick() { + return flagAccettazioneBollaEnableFastPick; } - public DBSettingsModel setFlagEnableFastPickAccettazioneBolla(boolean flagEnableFastPickAccettazioneBolla) { - this.flagEnableFastPickAccettazioneBolla = flagEnableFastPickAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaEnableFastPick(boolean flagAccettazioneBollaEnableFastPick) { + this.flagAccettazioneBollaEnableFastPick = flagAccettazioneBollaEnableFastPick; return this; } - public boolean isFlagDisableMandatoryTracciabilitaAccettazioneBolla() { - return flagDisableMandatoryTracciabilitaAccettazioneBolla; + public boolean isFlagAccettazioneBollaDisableMandatoryTracciabilita() { + return flagAccettazioneBollaDisableMandatoryTracciabilita; } - public DBSettingsModel setFlagDisableMandatoryTracciabilitaAccettazioneBolla(boolean flagDisableMandatoryTracciabilitaAccettazioneBolla) { - this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaDisableMandatoryTracciabilita(boolean flagAccettazioneBollaDisableMandatoryTracciabilita) { + this.flagAccettazioneBollaDisableMandatoryTracciabilita = flagAccettazioneBollaDisableMandatoryTracciabilita; return this; } - public boolean isFlagAllowULRecoverAccettazioneBolla() { - return flagAllowULRecoverAccettazioneBolla; + public boolean isFlagAccettazioneBollaAllowULRecover() { + return flagAccettazioneBollaAllowULRecover; } - public DBSettingsModel setFlagAllowULRecoverAccettazioneBolla(boolean flagAllowULRecoverAccettazioneBolla) { - this.flagAllowULRecoverAccettazioneBolla = flagAllowULRecoverAccettazioneBolla; + public DBSettingsModel setFlagAccettazioneBollaAllowULRecover(boolean flagAccettazioneBollaAllowULRecover) { + this.flagAccettazioneBollaAllowULRecover = flagAccettazioneBollaAllowULRecover; return this; } - public boolean isFlagOverflowQuantityWarning() { - return flagOverflowQuantityWarning; + public boolean isFlagSpedizioneOverflowQuantityWarning() { + return flagSpedizioneOverflowQuantityWarning; } - public DBSettingsModel setFlagOverflowQuantityWarning(boolean flagOverflowQuantityWarning) { - this.flagOverflowQuantityWarning = flagOverflowQuantityWarning; + public DBSettingsModel setFlagSpedizioneOverflowQuantityWarning(boolean flagSpedizioneOverflowQuantityWarning) { + this.flagSpedizioneOverflowQuantityWarning = flagSpedizioneOverflowQuantityWarning; return this; } @@ -589,30 +590,30 @@ public class DBSettingsModel { return this; } - public boolean isFlagDeleteRowOnClose() { - return flagDeleteRowOnClose; + public boolean isFlagAccettazioneDeleteRowOnClose() { + return flagAccettazioneDeleteRowOnClose; } - public DBSettingsModel setFlagDeleteRowOnClose(boolean flagDeleteRowOnClose) { - this.flagDeleteRowOnClose = flagDeleteRowOnClose; + public DBSettingsModel setFlagAccettazioneDeleteRowOnClose(boolean flagAccettazioneDeleteRowOnClose) { + this.flagAccettazioneDeleteRowOnClose = flagAccettazioneDeleteRowOnClose; return this; } - public boolean isFlagAllowBarcodeFornitore() { - return flagAllowBarcodeFornitore; + public boolean isFlagAccettazioneAllowBarcodeFornitore() { + return flagAccettazioneAllowBarcodeFornitore; } - public DBSettingsModel setFlagAllowBarcodeFornitore(boolean flagAllowBarcodeFornitore) { - this.flagAllowBarcodeFornitore = flagAllowBarcodeFornitore; + public DBSettingsModel setFlagAccettazioneAllowBarcodeFornitore(boolean flagAccettazioneAllowBarcodeFornitore) { + this.flagAccettazioneAllowBarcodeFornitore = flagAccettazioneAllowBarcodeFornitore; return this; } - public boolean isFlagShowInfo() { - return flagShowInfo; + public boolean isFlagProduzioneShowInfo() { + return flagProduzioneShowInfo; } - public DBSettingsModel setFlagShowInfo(boolean flagShowInfo) { - this.flagShowInfo = flagShowInfo; + public DBSettingsModel setFlagProduzioneShowInfo(boolean flagProduzioneShowInfo) { + this.flagProduzioneShowInfo = flagProduzioneShowInfo; return this; } @@ -623,4 +624,13 @@ public class DBSettingsModel { public void setFlagAccettazioneBollaUseQtaOrd(boolean flagAccettazioneBollaUseQtaOrd) { this.flagAccettazioneBollaUseQtaOrd = flagAccettazioneBollaUseQtaOrd; } + + public boolean isFlagWarningNewPartitaMag() { + return flagWarningNewPartitaMag; + } + + public DBSettingsModel setFlagWarningNewPartitaMag(boolean flagWarningNewPartitaMag) { + this.flagWarningNewPartitaMag = flagWarningNewPartitaMag; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index acba772f..edd9c725 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -246,7 +246,7 @@ public class SettingsManager { .setGestName("PICKING") .setSection("ACCETTAZIONE") .setKeySection("FLAG_DELETE_ROW_ON_CLOSE") - .setSetter(dbSettingsModelIstance::setFlagDeleteRowOnClose)); + .setSetter(dbSettingsModelIstance::setFlagAccettazioneDeleteRowOnClose)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("SPEDIZIONE") @@ -287,7 +287,7 @@ public class SettingsManager { .setGestName("PICKING") .setSection("PRODUZIONE") .setKeySection("FLAG_SHOW_INFO") - .setSetter(dbSettingsModelIstance::setFlagShowInfo) + .setSetter(dbSettingsModelIstance::setFlagProduzioneShowInfo) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) .setGestName("PICKING") @@ -449,61 +449,61 @@ public class SettingsManager { .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_ASK_PRINT_UL") - .setSetter(dbSettingsModelIstance::setFlagAskPrintUlAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskPrintUl) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_ASK_TIPO_COLLO") - .setSetter(dbSettingsModelIstance::setFlagAskTipoColloAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskTipoCollo) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_ASK_VERSAMENTO_AUTOMATICO") - .setSetter(dbSettingsModelIstance::setFlagAskVersamentoAutomaticoAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskVersamentoAutomatico) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS") - .setSetter(dbSettingsModelIstance::setFlagCanAddUnknownItemsAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaCanAddUnknownItems) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_CAN_ADD_UNKNOWN_BARCODES") - .setSetter(dbSettingsModelIstance::setFlagCanAddUnknownBarcodesAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaCanAddUnknownBarcodes) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_ENABLE_FAST_PICK") - .setSetter(dbSettingsModelIstance::setFlagEnableFastPickAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaEnableFastPick) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA") - .setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaDisableMandatoryTracciabilita) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") .setKeySection("FLAG_ALLOW_UL_RECOVER") - .setSetter(dbSettingsModelIstance::setFlagAllowULRecoverAccettazioneBolla) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAllowULRecover) .setDefaultValue(true)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("SPEDIZIONE") .setKeySection("FLAG_OVERFLOW_QUANTITY_WARNING") - .setSetter(dbSettingsModelIstance::setFlagOverflowQuantityWarning) + .setSetter(dbSettingsModelIstance::setFlagSpedizioneOverflowQuantityWarning) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE") .setKeySection("FLAG_ALLOW_BARCODE_FORNITORE") - .setSetter(dbSettingsModelIstance::setFlagAllowBarcodeFornitore) + .setSetter(dbSettingsModelIstance::setFlagAccettazioneAllowBarcodeFornitore) .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") @@ -511,6 +511,12 @@ public class SettingsManager { .setKeySection("FLAG_USE_QTA_ORD") .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaUseQtaOrd) .setDefaultValue(true)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("SETUP") + .setKeySection("FLAG_WARNING_NEW_PARTITA_MAG") + .setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag) + .setDefaultValue(false)); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java index 50dd79c6..7710b378 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java @@ -221,7 +221,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac fabPopupMenu.setForceShowIcon(true); fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu()); - fabPopupMenu.getMenu().findItem(R.id.show_created_ul).setVisible(SettingsManager.iDB().isFlagAllowULRecoverAccettazioneBolla()); + fabPopupMenu.getMenu().findItem(R.id.show_created_ul).setVisible(SettingsManager.iDB().isFlagAccettazioneBollaAllowULRecover()); fabPopupMenu.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); @@ -526,7 +526,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac .setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanLUBeClosed(true) .setCanOverflowOrderQuantity(canOverflowQuantity) - .setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagDisableMandatoryTracciabilitaAccettazioneBolla()); + .setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagAccettazioneBollaDisableMandatoryTracciabilita()); if (!mDialogInputQuantityV2View.isVisible()) mDialogInputQuantityV2View diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java index c317f688..ad521005 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java @@ -356,7 +356,7 @@ public class AccettazioneBollaPickingViewModel { private void manageUnknownBarcode(String barcode, Runnable onComplete) { - if (SettingsManager.iDB().isFlagCanAddUnknownBarcodesAccettazioneBolla()) { + if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownBarcodes()) { //TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato this.sendOnUnknownBarcodeScanned(barcode, notes -> { this.manageDispatchBollaRow(new PickingObjectDTO() @@ -376,7 +376,7 @@ public class AccettazioneBollaPickingViewModel { private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) { - if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) { + if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownItems()) { this.manageDispatchBollaRow(new PickingObjectDTO() .setMtbAart(mtbAart) @@ -410,7 +410,7 @@ public class AccettazioneBollaPickingViewModel { } private void manageInfoAggiuntiveRequest(RunnableArgss onComplete) { - if (!SettingsManager.iDB().isFlagAskTipoColloAccettazioneBolla()) { + if (!SettingsManager.iDB().isFlagAccettazioneBollaAskTipoCollo()) { onComplete.run(null, null); return; } @@ -428,7 +428,7 @@ public class AccettazioneBollaPickingViewModel { } } - if (SettingsManager.iDB().isFlagEnableFastPickAccettazioneBolla()) { + if (SettingsManager.iDB().isFlagAccettazioneBollaEnableFastPick()) { this.saveNewRow(pickingObjectDTO, BigDecimal.ONE, pickingObjectDTO.getMtbAart().getQtaCnf(), @@ -808,7 +808,7 @@ public class AccettazioneBollaPickingViewModel { private void manageVersamentoAutomatico(Runnable onComplete) { - if (!SettingsManager.iDB().isFlagAskVersamentoAutomaticoAccettazioneBolla()) { + if (!SettingsManager.iDB().isFlagAccettazioneBollaAskVersamentoAutomatico()) { onComplete.run(); return; } @@ -831,7 +831,7 @@ public class AccettazioneBollaPickingViewModel { } private void managePrintCollo(Runnable onComplete) { - if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAskPrintUlAccettazioneBolla()) { + if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAccettazioneBollaAskPrintUl()) { onComplete.run(); return; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index e628e7c5..72a8ab5c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -214,7 +214,7 @@ public class AccettazioneOrdiniPickingViewModel { //dell'etichetta anonima this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); } else { - if (SettingsManager.iDB().isFlagAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + if (SettingsManager.iDB().isFlagAccettazioneAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) { this.executeSSCCFornitore(barcodeScanDTO, onComplete); } else { this.processBarcodeNotOpenedLU(barcodeScanDTO, null, onComplete); @@ -815,7 +815,7 @@ public class AccettazioneOrdiniPickingViewModel { } private void calculateQtaDaEvadere() { - if (SettingsManager.iDB().isFlagDeleteRowOnClose()) { + if (SettingsManager.iDB().isFlagAccettazioneDeleteRowOnClose()) { for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { List withdrawMtbColrs = pickingObjectDTO.getWithdrawMtbColrs(); BigDecimal qtaEvasa = BigDecimal.ZERO; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaViewModel.java index d5304559..43563ce5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/articoli_in_giacenza/ArticoliInGiacenzaViewModel.java @@ -10,7 +10,6 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingL import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.services.inventario.InventarioService; -import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO; public class ArticoliInGiacenzaViewModel { private final InventarioService mInventarioService; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java index 02834f8c..d7c70c43 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdBindings.java @@ -2,19 +2,27 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod; import java.util.HashMap; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView; import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView; public class ProdFabbisognoLineeProdBindings { public static final int NUM_ORD_FILTER_ID = 0; + public static final int MGRP_FILTER_ID = 1; public static final HashMap AVAILABLE_FILTERS = new HashMap<>() {{ put(NUM_ORD_FILTER_ID, new FilterChipDTO() .setID(NUM_ORD_FILTER_ID) + .setPosizione(0) .setFilterChipText("Numero ordine") .setFilterLayoutView(new FilterNumeroOrdineLayoutView())); + put(MGRP_FILTER_ID, new FilterChipDTO() + .setID(MGRP_FILTER_ID) + .setPosizione(1) + .setFilterChipText("Gruppo merceologico") + .setFilterLayoutView(new FilterGruppoMercLayoutView())); }}; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java index 6126fe36..4a3cb0af 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; import javax.inject.Inject; @@ -33,8 +34,13 @@ import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.JtbComt; import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbGrup; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer; +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; @@ -44,6 +50,7 @@ import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeListSi import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding; import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel; @@ -68,11 +75,17 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi @Inject ProdFabbisognoLineeProdViewModel mViewModel; + @Inject + ArticoloRESTConsumer mArticoloRESTConsumer; + @Inject + CommessaRESTConsumer mCommessaRESTConsumer; private final ArrayList mOnPreDestroyList = new ArrayList<>(); private final ObservableArrayList mProdFabbisognoItemModel = new ObservableArrayList<>(); private FragmentProdFabbisognoLineeProdBinding mBindings; private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel(); + private List mtbGrupCache; + private List jtbComtCache; public ProdFabbisognoLineeProdFragment() { // Required empty public constructor @@ -120,6 +133,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> { mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE); + this.onLoadingStarted(); + this.initMtbGrupsCache(() -> { + this.initJtbComtCache(this::onLoadingEnded); + }); + mFilterViewModel.init(mViewModel.getOrdiniList().getValue()); this.refreshList(null); }); @@ -211,34 +229,67 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi }; mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged); + mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged); - for (var filterChipDTO : ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet()) { + List filterList = Stream.of(ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet()) + .map(Map.Entry::getValue) + .sortBy(FilterChipDTO::getPosizione) + .toList(); + + for (FilterChipDTO filterChipDTO : filterList) { FilterChipView filterChipView = new FilterChipView( requireActivity(), - filterChipDTO.getValue().getFilterChipText(), - v -> initBottomSheetDialogFilter(filterChipDTO.getValue())); + filterChipDTO.getFilterChipText(), + v -> initBottomSheetDialogFilter(filterChipDTO)); - if (filterChipDTO.getKey() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) { - mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { - @Override - public void run() { - if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) { - filterChipView.disableCloseIcon(); + switch (filterChipDTO.getID()){ + case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID -> { + mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { + @Override + public void run() { + if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) { + filterChipView.disableCloseIcon(); - mBindings.filterChipsGroup.removeView(filterChipView); - mBindings.filterChipsGroup.addView(filterChipView); - mBindings.filterChips.smoothScrollTo(0, 0); - } else { - filterChipView.enableCloseIcon(); + mBindings.filterChipsGroup.removeView(filterChipView); + mBindings.filterChipsGroup.addView(filterChipView); + mBindings.filterChips.smoothScrollTo(0, 0); + } else { + filterChipView.enableCloseIcon(); - mBindings.filterChipsGroup.removeView(filterChipView); - mBindings.filterChipsGroup.addView(filterChipView, 0); - mBindings.filterChips.smoothScrollTo(0, 0); + mBindings.filterChipsGroup.removeView(filterChipView); + mBindings.filterChipsGroup.addView(filterChipView, 0); + mBindings.filterChips.smoothScrollTo(0, 0); + } } - } - }); - filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null)); + }); + filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null)); + } + + case ProdFabbisognoLineeProdBindings.MGRP_FILTER_ID -> { + mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { + @Override + public void run() { + if (mFilterViewModel.getCurrentGruppoMercPredicate().get() == null) { + filterChipView.disableCloseIcon(); + + mBindings.filterChipsGroup.removeView(filterChipView); + mBindings.filterChipsGroup.addView(filterChipView); + mBindings.filterChips.smoothScrollTo(0, 0); + } else { + filterChipView.enableCloseIcon(); + + mBindings.filterChipsGroup.removeView(filterChipView); + mBindings.filterChipsGroup.addView(filterChipView, 0); + mBindings.filterChips.smoothScrollTo(0, 0); + } + } + }); + filterChipView.setOnResetClicked(() -> { + mFilterViewModel.setGruppoMercFilter(null); + mFilterViewModel.getCurrentGruppoMercPredicate().set(null); + }); + } } this.mBindings.filterChipsGroup.addView(filterChipView); } @@ -253,16 +304,24 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi var filterLayoutView = filterChipDTO .getFilterLayoutView(); - if (filterChipDTO.getID() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) { - ((FilterNumeroOrdineLayoutView) filterLayoutView) - .setAllNumOrds(mFilterViewModel.getAllNumOrds()) - .setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds()) - .setOnFilterApplied(mFilterViewModel::setNumOrdFilter) - .setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue())) - .filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ? - x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get())) - .map(x -> x.getOrdineLavorazioneDTO().getNumOrd()) - .toList()); + switch (filterChipDTO.getID()) { + case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID -> + ((FilterNumeroOrdineLayoutView) filterLayoutView) + .setAllNumOrds(mFilterViewModel.getAllNumOrds()) + .setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds()) + .setOnFilterApplied(mFilterViewModel::setNumOrdFilter) + .setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue())) + .filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ? + x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get())) + .map(x -> x.getOrdineLavorazioneDTO().getNumOrd()) + .toList()); + + case ProdFabbisognoLineeProdBindings.MGRP_FILTER_ID -> + ((FilterGruppoMercLayoutView) filterLayoutView) + .setAllGroupMerc(mFilterViewModel.getAllGruppoMerc(mtbGrupCache)) + .setAvailableGroupMerc(mFilterViewModel.getAvailableGruppoMerc(mtbGrupCache)) + .setOnFilterApplied(mFilterViewModel::setGruppoMercFilter) + .setPreSelectedGroupMerc(mFilterViewModel.getSelectedMtbGrup()); } if (!filterLayoutView.isAdded()) @@ -270,6 +329,44 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi } + private void initMtbGrupsCache(Runnable onComplete) { + var codMgrpArts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrdiniList().getValue())) + .flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc() != null ? + x.getOrdineLavorazioneDTO().getAvailableClassMerc() : new ArrayList<>())) + .map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp) + .withoutNulls() + .distinct() + .toList(); + + this.mArticoloRESTConsumer.getArtsGroups(codMgrpArts, mtbGrupCache -> { + this.mtbGrupCache = mtbGrupCache; + onComplete.run(); + }, this::onError); + } + + private void initJtbComtCache(Runnable onComplete) { + if (this.mViewModel.getOrdiniList().getValue() == null) { + this.jtbComtCache = new ArrayList<>(); + onComplete.run(); + return; + } + var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrdiniList().getValue())) + .flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getCodJcom())) + .distinct().withoutNulls() + .toList(); + + if (jtbComts.isEmpty()) { + this.jtbComtCache = new ArrayList<>(); + onComplete.run(); + return; + } + + this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> { + this.jtbComtCache = jtbComtCache; + onComplete.run(); + }, this::onError); + } + @Override public void onDestroy() { for (Runnable onPreDestroy : mOnPreDestroyList) { @@ -305,11 +402,18 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi .max(Date::compareTo) .orElse(null); - this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, this::startPickingActivity); + List listMtbGrup = Stream.of(mProdFabbisognoItemModel) + .filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get()) + .flatMap(x -> Stream.of(((ProdFabbisognoLineeItemModelDto) x).getSelectedMtbGrup())) + .toList(); + + this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, onCompleteData -> { + startPickingActivity(listMtbGrup, onCompleteData); + }); } - private void startPickingActivity(List fabbisognoList) { + private void startPickingActivity(List listMtbGrup, List fabbisognoList) { String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel) @@ -318,6 +422,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi .toList()); List sitArtOrdDTOS = Stream.of(fabbisognoList) + .filter(x -> Stream.of(listMtbGrup).anyMatch(y -> y.getCodMgrp().equalsIgnoreCase(x.getCodMgrp()))) .map(x -> { SitArtOrdDTO sitArtOrdDTO = new SitArtOrdDTO() .setCodMart(x.getCodMart()) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/dto/ProdFabbisognoLineeItemModelDto.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/dto/ProdFabbisognoLineeItemModelDto.java index cc425eee..e9d4f762 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/dto/ProdFabbisognoLineeItemModelDto.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/dto/ProdFabbisognoLineeItemModelDto.java @@ -1,12 +1,17 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto; +import java.util.ArrayList; +import java.util.List; + import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.model.MtbGrup; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; public class ProdFabbisognoLineeItemModelDto { public BindableBoolean selected = new BindableBoolean(); public OrdineLavorazioneDTO ordineLavorazioneDTO; + List selectedMtbGrup = new ArrayList<>(); public BindableBoolean getSelected() { return selected; @@ -20,4 +25,13 @@ public class ProdFabbisognoLineeItemModelDto { this.ordineLavorazioneDTO = ordineLavorazioneDTO; return this; } + + public List getSelectedMtbGrup() { + return selectedMtbGrup; + } + + public ProdFabbisognoLineeItemModelDto setSelectedMtbGrup(List selectedMtbGrup) { + this.selectedMtbGrup = selectedMtbGrup; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/filters/ProdFabbisognoLineeProdFilterViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/filters/ProdFabbisognoLineeProdFilterViewModel.java index 78c93831..297578a4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/filters/ProdFabbisognoLineeProdFilterViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/filters/ProdFabbisognoLineeProdFilterViewModel.java @@ -6,18 +6,25 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; import com.annimon.stream.function.Predicate; +import java.util.ArrayList; import java.util.List; import java.util.Objects; +import it.integry.integrywmsnative.core.model.MtbGrup; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; public class ProdFabbisognoLineeProdFilterViewModel { private final ObservableField> currentNumOrdsPredicate = new ObservableField<>(); + private final ObservableField> currentGruppoMercPredicate = new ObservableField<>(); private List initialList; + private List selectedMtbGrup = new ArrayList<>(); private final MutableLiveData> currentList = new MutableLiveData<>(); - public void init(List initialList){ + public void init(List initialList) { this.initialList = initialList; this.currentList.setValue(this.initialList); } @@ -26,23 +33,37 @@ public class ProdFabbisognoLineeProdFilterViewModel { return this.currentList; } - public void setNumOrdFilter(List numOrds){ + public void setNumOrdFilter(List numOrds) { if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null); - else{ + else { currentNumOrdsPredicate.set(x -> numOrds.contains(x.getOrdineLavorazioneDTO().getNumOrd())); } } - public void applyAllTests(){ + public void setGruppoMercFilter(List mtbGrupList) { + if (mtbGrupList == null || mtbGrupList.isEmpty()) { + currentGruppoMercPredicate.set(null); + this.selectedMtbGrup = new ArrayList<>(); + } else { + this.selectedMtbGrup = mtbGrupList; + var mtbGrups = Stream.of(mtbGrupList).map(MtbGrup::getCodMgrp).toList(); + + currentGruppoMercPredicate.set(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc()) + .anyMatch(y -> mtbGrups.contains(y.getCodMgrp()))); + } + } + + public void applyAllTests() { List returnList = null; - if (currentNumOrdsPredicate.get() == null){ + if (currentNumOrdsPredicate.get() == null && + currentGruppoMercPredicate.get() == null) { returnList = this.initialList; - }else { - Stream tmpStream = Stream.of(this.initialList) - .filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x)))); - - returnList = tmpStream.toList(); + } else { + returnList = Stream.of(this.initialList) + .filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) && + (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) + ).map(x -> x.setSelectedMtbGrup(this.selectedMtbGrup)).toList(); } this.currentList.setValue(returnList); @@ -52,7 +73,11 @@ public class ProdFabbisognoLineeProdFilterViewModel { return currentNumOrdsPredicate; } - public List getAllNumOrds(){ + public ObservableField> getCurrentGruppoMercPredicate() { + return currentGruppoMercPredicate; + } + + public List getAllNumOrds() { return Stream .of(Objects.requireNonNull(initialList)) .filter(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null) @@ -62,13 +87,59 @@ public class ProdFabbisognoLineeProdFilterViewModel { .toList(); } - public List getAvailableNumOrds(){ - if (currentNumOrdsPredicate.get() == null) return getAllNumOrds(); + public List getAvailableNumOrds() { + if (currentGruppoMercPredicate.get() == null) return getAllNumOrds(); else { return Stream.of(this.initialList) + .filter(x -> (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))) .map(x -> x.getOrdineLavorazioneDTO().getNumOrd()) .distinct() .toList(); } } + + public List getSelectedMtbGrup() { + return selectedMtbGrup; + } + + public List getAllGruppoMerc(List mtbGrupFullList) { + var codMgrp = Stream.of(initialList) + .flatMap(x -> + Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc() != null ? + x.getOrdineLavorazioneDTO().getAvailableClassMerc() : + new ArrayList<>())) + .map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp) + .withoutNulls() + .distinct() + .toList(); + + return Stream.of(Objects.requireNonNull(mtbGrupFullList)) + .filter(x -> codMgrp.contains(x.getCodMgrp())) + .distinct() + .withoutNulls() + .sortBy(MtbGrup::getDescrizione) + .toList(); + } + + public List getAvailableGruppoMerc(List mtbGrupFullList){ + if (currentNumOrdsPredicate.get() == null){ + return getAllGruppoMerc(mtbGrupFullList); + } else { + List availableCodMgrups = Stream.of(this.initialList) + .filter(x -> + (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) + ) + .flatMap(x -> Stream.of(x.getOrdineLavorazioneDTO().getAvailableClassMerc())) + .map(OrdineLavorazioneDTO.AvailableClassMerc::getCodMgrp) + .distinct() + .toList(); + + return Stream.of(Objects.requireNonNull(mtbGrupFullList)) + .filter(x -> availableCodMgrups.contains(x.getCodMgrp())) + .distinct() + .withoutNulls() + .sortBy(MtbGrup::getDescrizione) + .toList(); + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java index 10d579ca..c8a67912 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdFragment.java @@ -32,7 +32,6 @@ import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.ISearchableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -212,7 +211,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements } - public void onInfoClick(List item) { + public void onInfoClick(ArtsInGiacenzaDTO item) { try { DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName()); } catch (Exception e) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java index f22dd800..07b473a0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java @@ -6,6 +6,7 @@ import com.annimon.stream.Optional; import com.annimon.stream.Stream; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; @@ -13,8 +14,6 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; -import javax.inject.Inject; - import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; @@ -32,6 +31,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO; +import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO; public class ProdRiposizionamentoDaProdViewModel { private final SoundAlertService mSoundAlertService; @@ -41,6 +41,7 @@ public class ProdRiposizionamentoDaProdViewModel { private final MutableLiveData> itemsInventario = new MutableLiveData<>(); private final MutableLiveData mtbColtMutableLiveData = new MutableLiveData<>(); private final MutableLiveData> mMvwSitArtUdcDetInventarioLiveData = new MutableLiveData<>(); + private final MutableLiveData> mStatoArticoli = new MutableLiveData<>(); private Listener mListener; public ProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, SoundAlertService soundAlertService) { @@ -100,6 +101,13 @@ public class ProdRiposizionamentoDaProdViewModel { mMvwSitArtUdcDetInventarioLiveData.setValue(mvwSitArtUdcDetInventario); + List statoArticolo = Stream.of(Objects.requireNonNull(itemsInventario.getValue())) + .flatMap(x -> Stream.of(x.getStatoArtInventario()) + .filter(Objects::nonNull)) + .toList(); + + mStatoArticoli.setValue(statoArticolo); + boolean isPresent = Stream.of(mvwSitArtUdcDetInventario) .anyMatch(x -> x.getGestione().equals(mtbColt.getGestione()) && @@ -161,6 +169,18 @@ public class ProdRiposizionamentoDaProdViewModel { .map(MvwSitArtUdcDetInventario::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); + List statoArticoli = mStatoArticoli.getValue(); + + if (statoArticoli == null) + statoArticoli = new ArrayList<>(); + + StatoArtInventarioDTO statoArticolo = Stream.of(statoArticoli) + .filter(x -> x.getCodProd().equalsIgnoreCase(dtoList.get(0).getCodMart()) && + Objects.equals(x.getNumOrd(), dtoList.get(0).getNumOrd()) && + Objects.equals(x.getDataOrd(), dtoList.get(0).getDataOrd()) + ) + .findFirstOrElse(null); + return new ArtsInGiacenzaDTO() .setCodMart(dtoList.get(0).getCodMart()) .setPartitaMag(dtoList.get(0).getPartitaMag()) @@ -169,6 +189,7 @@ public class ProdRiposizionamentoDaProdViewModel { .setNumOrd(dtoList.get(0).getNumOrd()) .setNumCnf(totalNumCnf) .setCount(dtoList.size()) + .setStatoArtInventario(statoArticolo) .setMvwSitArtUdcDetInventarioDTO(dtoList); }) .sorted(Comparator.comparing(ArtsInGiacenzaDTO::getPosizione)) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dialogs/info_giacenza/DialogInfoGiacenzaView.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dialogs/info_giacenza/DialogInfoGiacenzaView.java index 4bbb9f6c..092ae768 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dialogs/info_giacenza/DialogInfoGiacenzaView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dialogs/info_giacenza/DialogInfoGiacenzaView.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -13,6 +14,7 @@ import com.annimon.stream.Stream; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.ravikoradiya.liveadapter.LiveAdapter; +import java.util.ArrayList; import java.util.List; import javax.inject.Inject; @@ -21,8 +23,10 @@ import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; -import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaBinding; +import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaSituazioneArticoloBinding; +import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO; +import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem; public class DialogInfoGiacenzaView extends BaseDialogFragment { @@ -31,13 +35,13 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment { private DialogInfoGiacenzaBinding mBindings; private Context mContext; - private List item; + private ArtsInGiacenzaDTO item; - public static DialogInfoGiacenzaView newInstance(List item) { + public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) { return new DialogInfoGiacenzaView(item); } - public DialogInfoGiacenzaView(List item) { + public DialogInfoGiacenzaView(ArtsInGiacenzaDTO item) { this.item = item; } @@ -78,17 +82,47 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment { this.onLoadingEnded(); } - private void initAvailableItemsList(List availableItems) { - if(availableItems == null || availableItems.isEmpty()) + private void initAvailableItemsList(ArtsInGiacenzaDTO availableItems) { + if (availableItems == null) return; - var itemList = Stream.of(availableItems) - .map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario) + var listItem = Stream.of(availableItems) + .flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO()) + .map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario) + ) .toList(); - new LiveAdapter(itemList, BR.item) + List statoArticolo = null; + StatoArtInventarioDTO statoArtInventario = availableItems.getStatoArtInventario(); + if (statoArtInventario != null) { + statoArticolo = Stream.of(statoArtInventario).toList(); + + if (statoArtInventario.colliArrivoIsLessThenZero() && + statoArtInventario.colliMagIsLessThenZero()) { + this.mBindings.situazioneArticolo.setVisibility(View.GONE); + } + } else { + this.mBindings.situazioneArticolo.setVisibility(View.GONE); + } + + new LiveAdapter(listItem, BR.item) .map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item) .into(this.mBindings.availableList); + + new LiveAdapter(statoArticolo, BR.item) + .map(StatoArtInventarioDTO.class, R.layout.dialog_info_giacenza_situazione_articolo) + .into(this.mBindings.situazioneArticolo); } + @Override + public void onLoadingStarted() { + this.mBindings.loadingView.setVisibility(View.VISIBLE); + this.mBindings.listItem.setVisibility(View.GONE); + } + + @Override + public void onLoadingEnded() { + this.mBindings.loadingView.setVisibility(View.GONE); + this.mBindings.listItem.setVisibility(View.VISIBLE); + } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/ArtsInGiacenzaDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/ArtsInGiacenzaDTO.java index 11ea91a8..c400cc98 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/ArtsInGiacenzaDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/ArtsInGiacenzaDTO.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; @@ -13,7 +14,9 @@ public class ArtsInGiacenzaDTO { private String posizione; private BigDecimal numCnf; private Integer numOrd; + private Date dataOrd; private Integer count; + private StatoArtInventarioDTO statoArtInventario; private List mvwSitArtUdcDetInventarioDTO; public String getCodMart() { @@ -92,4 +95,22 @@ public class ArtsInGiacenzaDTO { this.numOrd = numOrd; return this; } + + public StatoArtInventarioDTO getStatoArtInventario() { + return statoArtInventario; + } + + public ArtsInGiacenzaDTO setStatoArtInventario(StatoArtInventarioDTO statoArtInventario) { + this.statoArtInventario = statoArtInventario; + return this; + } + + public Date getDataOrd() { + return dataOrd; + } + + public ArtsInGiacenzaDTO setDataOrd(Date dataOrd) { + this.dataOrd = dataOrd; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/StatoArtInventarioDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/StatoArtInventarioDTO.java new file mode 100644 index 00000000..29568484 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/dto/StatoArtInventarioDTO.java @@ -0,0 +1,181 @@ +package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto; + +import java.math.BigDecimal; +import java.util.Date; + +public class StatoArtInventarioDTO { + private String codProd; + private Integer numOrd; + private Date dataOrd; + private String untMis; + private BigDecimal qtaProd; + private BigDecimal colliProd; + private BigDecimal pedProd; + private BigDecimal qtaInArrivo; + private BigDecimal colliArrivo; + private BigDecimal pedArrivo; + private BigDecimal qtaLinea; + private BigDecimal colliLinea; + private Integer pedLinea; + private BigDecimal qtaMag; + private BigDecimal colliMag; + private Integer pedMag; + + public String getCodProd() { + return codProd; + } + + public StatoArtInventarioDTO setCodProd(String codProd) { + this.codProd = codProd; + return this; + } + + public Integer getNumOrd() { + return numOrd; + } + + public StatoArtInventarioDTO setNumOrd(Integer numOrd) { + this.numOrd = numOrd; + return this; + } + + public String getUntMis() { + return untMis; + } + + public StatoArtInventarioDTO setUntMis(String untMis) { + this.untMis = untMis; + return this; + } + + public BigDecimal getQtaProd() { + return qtaProd; + } + + public StatoArtInventarioDTO setQtaProd(BigDecimal qtaProd) { + this.qtaProd = qtaProd; + return this; + } + + public BigDecimal getColliProd() { + return colliProd; + } + + public StatoArtInventarioDTO setColliProd(BigDecimal colliProd) { + this.colliProd = colliProd; + return this; + } + + public BigDecimal getPedProd() { + return pedProd; + } + + public StatoArtInventarioDTO setPedProd(BigDecimal pedProd) { + this.pedProd = pedProd; + return this; + } + + public BigDecimal getQtaInArrivo() { + return qtaInArrivo; + } + + public StatoArtInventarioDTO setQtaInArrivo(BigDecimal qtaInArrivo) { + this.qtaInArrivo = qtaInArrivo; + return this; + } + + public BigDecimal getColliArrivo() { + return colliArrivo; + } + + public StatoArtInventarioDTO setColliArrivo(BigDecimal colliArrivo) { + this.colliArrivo = colliArrivo; + return this; + } + + public BigDecimal getPedArrivo() { + if (pedArrivo.compareTo(BigDecimal.ZERO) < 0) + return BigDecimal.ZERO; + else + return pedArrivo; + } + + public StatoArtInventarioDTO setPedArrivo(BigDecimal pedArrivo) { + this.pedArrivo = pedArrivo; + return this; + } + + public BigDecimal getQtaLinea() { + return qtaLinea; + } + + public StatoArtInventarioDTO setQtaLinea(BigDecimal qtaLinea) { + this.qtaLinea = qtaLinea; + return this; + } + + public BigDecimal getColliLinea() { + return colliLinea; + } + + public StatoArtInventarioDTO setColliLinea(BigDecimal colliLinea) { + this.colliLinea = colliLinea; + return this; + } + + public Integer getPedLinea() { + return pedLinea; + } + + public StatoArtInventarioDTO setPedLinea(Integer pedLinea) { + this.pedLinea = pedLinea; + return this; + } + + public BigDecimal getQtaMag() { + return qtaMag; + } + + public StatoArtInventarioDTO setQtaMag(BigDecimal qtaMag) { + this.qtaMag = qtaMag; + return this; + } + + public BigDecimal getColliMag() { + return colliMag; + } + + public StatoArtInventarioDTO setColliMag(BigDecimal colliMag) { + this.colliMag = colliMag; + return this; + } + + public Integer getPedMag() { + if (pedMag < 0) + return 0; + else + return pedMag; + } + + public StatoArtInventarioDTO setPedMag(Integer pedMag) { + this.pedMag = pedMag; + return this; + } + + public Date getDataOrd() { + return dataOrd; + } + + public StatoArtInventarioDTO setDataOrd(Date dataOrd) { + this.dataOrd = dataOrd; + return this; + } + + public boolean colliArrivoIsLessThenZero(){ + return this.colliArrivo.compareTo(BigDecimal.ZERO) <= 0; + } + + public boolean colliMagIsLessThenZero(){ + return this.colliMag.compareTo(BigDecimal.ZERO) <= 0; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/OrdineLavorazioneDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/OrdineLavorazioneDTO.java index f95f038e..e7f03c9d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/OrdineLavorazioneDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/dto/OrdineLavorazioneDTO.java @@ -3,8 +3,10 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Date; +import java.util.List; import it.integry.integrywmsnative.core.di.BindableFloat; +import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.utility.UtilityDate; public class OrdineLavorazioneDTO { @@ -101,6 +103,7 @@ public class OrdineLavorazioneDTO { private Object mtbColtToEdit; private int hrNum; + private List availableClassMerc; private BindableFloat qtaColVersamento = new BindableFloat(); @@ -533,4 +536,37 @@ public class OrdineLavorazioneDTO { this.descrizioneAttivita = descrizioneAttivita; return this; } + + public List getAvailableClassMerc() { + return availableClassMerc; + } + + public OrdineLavorazioneDTO setAvailableClassMerc(List availableClassMerc) { + this.availableClassMerc = availableClassMerc; + return this; + } + + public static class AvailableClassMerc { + + private String codMgrp; + private List codMsgr; + + public String getCodMgrp() { + return codMgrp; + } + + public AvailableClassMerc setCodMgrp(String codMgrp) { + this.codMgrp = codMgrp; + return this; + } + + public List getCodMsgr() { + return codMsgr; + } + + public AvailableClassMerc setCodMsgr(List codMsgr) { + this.codMsgr = codMsgr; + return this; + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 0e9d29f9..a64b93f4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -404,8 +404,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato(); if (flagStato.equalsIgnoreCase("I")) { - DialogSimpleMessageView.makeInfoDialog( - getActivity().getResources().getString(R.string.confirm), + DialogSimpleMessageView.makeWarningDialog( new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))), null, () -> { @@ -428,7 +427,26 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr }, this::onLoadingEnded) .show(getActivity().getSupportFragmentManager(), "tag"); - } else this.onLoadingEnded(); + } else { + this.onLoadingEnded(); + if (!mDialogInputQuantityV2View.isVisible()) + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { + PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() + .setNumCnf(resultDTO.getNumCnf()) + .setQtaCnf(resultDTO.getQtaCnf()) + .setQtaTot(resultDTO.getQtaTot()) + .setPartitaMag(resultDTO.getPartitaMag()) + .setDataScad(resultDTO.getDataScad()); + + this.onLoadingStarted(); + onComplete.run(pickedQuantityDTO, shouldCloseLU); + }) + .setOnAbort(this::onLoadingEnded) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } + ; } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index fb08e0b2..83beb96f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -853,7 +853,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo .setPartitaMag(partitaMag) .setDataScad(dataScad) .setCanOverflowOrderQuantity(canOverflowOrderQuantity) - .setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagOverflowQuantityWarning()) + .setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagSpedizioneOverflowQuantityWarning()) .setCanLUBeClosed(true) .setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java index 2c3133d3..25b321db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java @@ -3,13 +3,14 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; @Module(subcomponents = DialogInputQuantityV2Component.class) public class DialogInputQuantityV2Module { @Provides - DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { - return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer); + DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { + return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer, magazzinoRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 2b4a7cc9..8fdcaecf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -261,6 +261,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mAbort = false; dismiss(); this.mOnComplete.run(this.mViewModel.getResult(), false); + }else { + this.onLoadingEnded(); } }); } @@ -269,19 +271,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mViewModel.validate(validated -> { if (validated) { this.mAbort = false; - dismiss(); + dismiss();this.onLoadingEnded(); this.mOnComplete.run(this.mViewModel.getResult(), true); + }else { + this.onLoadingEnded(); } }); } -// @Override -// public void onDismiss(@NonNull DialogInterface dialog) { -// BarcodeManager.removeCallback(mBarcodeScannerIstanceID); -// if (mAbort) this.mOnAbort.run(); -// super.onDismiss(dialog); -// } - @Override public void onStart() { super.onStart(); @@ -540,9 +537,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Override public void onWarning(String text, RunnableArgs result) { DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), - null, - () -> result.run(true), - () -> result.run(false) - ).show(requireActivity().getSupportFragmentManager(), "tag"); + null, + () -> result.run(true), + () -> result.run(false) + ).show(requireActivity().getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index d5087e7f..e9916cd4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -3,22 +3,29 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import androidx.databinding.ObservableField; import java.math.BigDecimal; -import java.math.RoundingMode; import java.time.LocalDate; +import java.util.concurrent.FutureTask; +import java.util.concurrent.atomic.AtomicBoolean; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException; @@ -89,12 +96,15 @@ public class DialogInputQuantityV2ViewModel { private Listener mListener; private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; private StatoPartitaMag statoArt; + private MtbPartitaMag mtbPartitaMag; @Inject - public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.mMagazzinoRESTConsumer = magazzinoRESTConsumer; } public void init(int onNumCnfInputChanged, int onQtaTotInputChanged) { @@ -475,115 +485,175 @@ public class DialogInputQuantityV2ViewModel { } public void validate(RunnableArgs onValidated) { - if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { + this.sendOnLoadingStarted(); + new Thread(() -> { + if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { - this.mListener.onError(new InvalidQtaCnfQuantityException()); - onValidated.run(false); - return; - } + this.mListener.onError(new InvalidQtaCnfQuantityException()); + onValidated.run(false); + return; + } - if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { - if (suggestPartitaMagRunnable != null) { - internalPartitaMag = suggestPartitaMagRunnable.run(this); - if (internalPartitaMag == null) { + if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { + if (suggestPartitaMagRunnable != null) { + internalPartitaMag = suggestPartitaMagRunnable.run(this); + if (internalPartitaMag == null) { + this.mListener.onError(new InvalidBatchLotException()); + onValidated.run(false); + return; + } + } else { this.mListener.onError(new InvalidBatchLotException()); onValidated.run(false); return; } - } else { + } + + if (this.statoArt == StatoPartitaMag.DISATTIVO) { + this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); + onValidated.run(false); + return; + } + + if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { + this.mListener.onError(new InvalidBatchLotException()); onValidated.run(false); return; } + + if (this.shouldAskDataScad && this.internalDataScad == null) { + + this.mListener.onError(new InvalidExpireDateException()); + onValidated.run(false); + return; + } + + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && + this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); + onValidated.run(false); + return; + } + + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && + !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); + onValidated.run(false); + return; + } + + if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { + + this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); + onValidated.run(false); + return; + } + + if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && + !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); + onValidated.run(false); + return; + } + + if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || + UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO) || + UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || + UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { + + this.mListener.onError(new InvalidQuantityException()); + onValidated.run(false); + return; + } + + if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { + this.mListener.onError(new InvalidNotesException()); + onValidated.run(false); + return; + } + + if (!UtilityString.isNullOrEmpty(this.internalPartitaMag)) + this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); + + if (SettingsManager.iDB().isFlagWarningNewPartitaMag()) { + asyncMagazzinoRESTConsumer(internalPartitaMag, this.getMtbAart().getCodMart()); + + if (mtbPartitaMag == null) { + boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.batch_lot_inexistent_error_message)); + if (!result) { + onValidated.run(false); + return; + } + } + } + + if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && + this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message)); + if (!result) { + onValidated.run(false); + return; + } + } + + if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && + !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message)); + if (!result) { + onValidated.run(false); + return; + } + } + + this.sendOnLoadingEnded(); + onValidated.run(true); + }).start(); + } + + private boolean runAsyncWarningDialog(String text) { + try { + final FutureTask ft = new FutureTask<>(() -> { + }, new Object()); + AtomicBoolean returnResult = new AtomicBoolean(); + mListener.onWarning(text, result -> { + returnResult.set(result); + ft.run(); + }); + + ft.get(); + return returnResult.get(); + } catch (Exception e) { + this.sendError(e); + return false; } + } - if(this.statoArt == StatoPartitaMag.DISATTIVO){ - this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); - onValidated.run(false); - return; + private void asyncMagazzinoRESTConsumer(String partitaMag, String codMart) { + try { + final FutureTask ft = new FutureTask<>(() -> { + }, new Object()); + mMagazzinoRESTConsumer.retrievePartitaMag( + partitaMag, + codMart, + returnPartitaMag -> { + mtbPartitaMag = returnPartitaMag; + ft.run(); + }, + e -> { + this.sendError(e); + ft.run(); + }); + + ft.get(); + } catch (Exception e) { + this.sendError(e); } - - if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { - - this.mListener.onError(new InvalidBatchLotException()); - onValidated.run(false); - return; - } - - if (this.shouldAskDataScad && this.internalDataScad == null) { - - this.mListener.onError(new InvalidExpireDateException()); - onValidated.run(false); - return; - } - - if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && - this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); - onValidated.run(false); - return; - } - - if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && - !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); - onValidated.run(false); - return; - } - - if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { - - this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); - onValidated.run(false); - return; - } - - if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && - !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); - onValidated.run(false); - return; - } - - if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || - UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO) || - UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || - UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { - - this.mListener.onError(new InvalidQuantityException()); - onValidated.run(false); - return; - } - - if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { - this.mListener.onError(new InvalidNotesException()); - onValidated.run(false); - return; - } - - if (!UtilityString.isNullOrEmpty(this.internalPartitaMag)) - this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); - - //Gli ultimi due controlli sono in coda a causa della callBack di onWarning, non eseguirebbe i controlli messi dopo - - if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && - this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onWarning("Hai inserito una quantità superiore rispetto a quella presente nell'ordine.
Continuare?", onValidated); - return; - } - - if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && - !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onWarning("Hai inserito una quantità superiore rispetto a quella presente nell'ordine.
Continuare?", onValidated); - return; - } - - onValidated.run(true); } public DialogInputQuantityV2ResultDTO getResult() { @@ -619,14 +689,27 @@ public class DialogInputQuantityV2ViewModel { return this; } + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + public MtbAart getMtbAart() { return this.mtbAart.get(); } - public interface Listener { + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + public interface Listener extends ILoadingListener { void onDataChanged(); void onError(Exception ex); + void onWarning(String text, RunnableArgs result); } } diff --git a/app/src/main/res/layout/dialog_info_giacenza.xml b/app/src/main/res/layout/dialog_info_giacenza.xml index 90228fbe..8dcfb051 100644 --- a/app/src/main/res/layout/dialog_info_giacenza.xml +++ b/app/src/main/res/layout/dialog_info_giacenza.xml @@ -24,11 +24,28 @@ style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" + android:layout_marginBottom="8dp" android:gravity="center_horizontal" android:text="Situazione articolo" /> + + + + + + @@ -37,21 +54,40 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + + + - - + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + tools:itemCount="5" + tools:listitem="@layout/dialog_info_giacenza_list_item" /> - - diff --git a/app/src/main/res/layout/dialog_info_giacenza_list_item.xml b/app/src/main/res/layout/dialog_info_giacenza_list_item.xml index f691706e..7609120b 100644 --- a/app/src/main/res/layout/dialog_info_giacenza_list_item.xml +++ b/app/src/main/res/layout/dialog_info_giacenza_list_item.xml @@ -81,7 +81,7 @@ android:layout_width="12dp" android:layout_height="12dp" android:src="@drawable/ic_location_24" - android:tint="@android:color/black" + android:tint="@android:color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -89,6 +89,7 @@ style="@style/AppTheme.NewMaterial.Text.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:textColor="@android:color/white" android:layout_marginStart="4dp" android:text="@{item.posizione}" app:layout_constraintStart_toEndOf="@id/position_label_icon" @@ -106,7 +107,8 @@ android:backgroundTint="@color/red_300" android:gravity="center_vertical" android:orientation="horizontal" - android:visibility="@{item.codJcom != null ? View.VISIBLE : View.GONE}"> + android:visibility="@{item.codJcom != null ? View.VISIBLE : View.GONE}" + tools:visibility="invisible"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/prod_riposizionamento_da_prod__list_item.xml b/app/src/main/res/layout/prod_riposizionamento_da_prod__list_item.xml index 228eb750..1d693f4a 100644 --- a/app/src/main/res/layout/prod_riposizionamento_da_prod__list_item.xml +++ b/app/src/main/res/layout/prod_riposizionamento_da_prod__list_item.xml @@ -192,7 +192,7 @@ android:backgroundTint="@color/colorPrimary" android:clickable="true" android:focusable="true" - android:onClick="@{() -> view.onInfoClick(item.getMvwSitArtUdcDetInventarioDTO())}" + android:onClick="@{() -> view.onInfoClick(item)}" android:scaleType="fitCenter" /> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3672cc4a..12c3fac0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -194,10 +194,13 @@ quantità per confezioni inserita non è valida]]> numero di confezioni inserito supera la quantità massima disponibile]]> quantità inserita supera la quantità ordinata]]> + quantità inserita supera la quantità ordinata. Continuare?]]> numero di confezioni inserito supera la quantità ordinata]]> + numero di confezioni inserito supera la quantità ordinata. Continuare?]]> Linea di produzione non valida]]> data di scadenza inserita non è valida]]> lotto inserito non è valido]]> + È stato inserito un nuovo lotto per questo articolo. Continuare? campo note deve essere compilato per il modulo corrente.]]> Impostazioni Check box diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82468fc2..3bd81317 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -194,10 +194,13 @@ amount exceeds the maximum amount available, please check it]]> package\'s amount exceeds the maximum amount available, please check it]]> amount exceeds the total ordered amount, please check it]]> + amount exceeds the total ordered amount. To continue?]]> + package\'s amount exceeds the total ordered amount. To continue?]]> package\'s amount exceeds the total ordered amount, please check it]]> production line]]> expire date is not valid, please check it.]]> batch lot is not valid, please check it.]]> + A new batch lot has been added for this item. To continue? notes field requires to be filled in for the current form.]]> Settings Check box