Finish v1.40.05(422)

This commit is contained in:
Marco Elefante 2024-03-15 18:28:51 +01:00
commit cd38c1b301
32 changed files with 1201 additions and 272 deletions

View File

@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 421 def appVersionCode = 422
def appVersionName = '1.40.04' def appVersionName = '1.40.05'
signingConfigs { signingConfigs {
release { release {

View File

@ -116,7 +116,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment) .setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
.setDrawerIcon(R.drawable.ic_black_external) .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() .addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking) .setID(R.id.nav_free_lav_picking)

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityNumber;
@ -41,6 +42,7 @@ public class MvwSitArtUdcDetInventario {
private String codJfas; private String codJfas;
private MtbAart mtbAart; private MtbAart mtbAart;
private Integer numOrd; private Integer numOrd;
private Date dataOrd;
public String getGestione() { public String getGestione() {
return gestione; return gestione;
@ -317,4 +319,13 @@ public class MvwSitArtUdcDetInventario {
.setPesoLordoKg(getPesoLordoKg()) .setPesoLordoKg(getPesoLordoKg())
.setUntMis(getUntMis()); .setUntMis(getUntMis());
} }
public Date getDataOrd() {
return dataOrd;
}
public MvwSitArtUdcDetInventario setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
} }

View File

@ -1,5 +1,7 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type; 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.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt; 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.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; 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<MtbPartitaMag> onComplete, RunnableArgs<Exception> onFailed){
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.retrievePartitaMag(codMart, partitaMag)
.enqueue(new Callback<>() {
@Override
public void onResponse(@NonNull Call<ServiceRESTResponse<MtbPartitaMag>> call, @NonNull Response<ServiceRESTResponse<MtbPartitaMag>> response) {
analyzeAnswer(response, "retrievePartitaMag", onComplete, onFailed);
}
@Override
public void onFailure(@NonNull Call<ServiceRESTResponse<MtbPartitaMag>> call, @NonNull Throwable t) {
onFailed.run(new Exception(t));
}
});
}
} }

View File

@ -3,11 +3,14 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.DtbOrdt; 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.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query;
public interface MagazzinoRESTConsumerService { public interface MagazzinoRESTConsumerService {
@ -17,4 +20,8 @@ public interface MagazzinoRESTConsumerService {
@POST("SM2SaveTerminalino") @POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO); Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO);
@GET("wms/partita-magazzino/retrievePartitaMag")
Call<ServiceRESTResponse<MtbPartitaMag>> retrievePartitaMag(@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag);
} }

View File

@ -60,20 +60,21 @@ public class DBSettingsModel {
private String commessaMagazzino; private String commessaMagazzino;
private boolean flagGeneraDocumentoSpedizione = false; private boolean flagGeneraDocumentoSpedizione = false;
private boolean flagIsInventarioCacheEnabled = false; private boolean flagIsInventarioCacheEnabled = false;
private boolean flagAskPrintUlAccettazioneBolla = false; private boolean flagAccettazioneBollaAskPrintUl = false;
private boolean flagAskTipoColloAccettazioneBolla = false; private boolean flagAccettazioneBollaAskTipoCollo = false;
private boolean flagAskVersamentoAutomaticoAccettazioneBolla = false; private boolean flagAccettazioneBollaAskVersamentoAutomatico = false;
private boolean flagCanAddUnknownItemsAccettazioneBolla = false; private boolean flagAccettazioneBollaCanAddUnknownItems = false;
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false; private boolean flagAccettazioneBollaCanAddUnknownBarcodes = false;
private boolean flagEnableFastPickAccettazioneBolla = false; private boolean flagAccettazioneBollaEnableFastPick = false;
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false; private boolean flagAccettazioneBollaDisableMandatoryTracciabilita = false;
private boolean flagAllowULRecoverAccettazioneBolla = true; private boolean flagAccettazioneBollaAllowULRecover = true;
private boolean flagOverflowQuantityWarning = false; private boolean flagSpedizioneOverflowQuantityWarning = false;
private String viewPosizioni; private String viewPosizioni;
private boolean flagDeleteRowOnClose = false; private boolean flagAccettazioneDeleteRowOnClose = false;
private boolean flagAllowBarcodeFornitore = false; private boolean flagAccettazioneAllowBarcodeFornitore = false;
private boolean flagShowInfo = false; private boolean flagProduzioneShowInfo = false;
private boolean flagAccettazioneBollaUseQtaOrd = true; private boolean flagAccettazioneBollaUseQtaOrd = true;
private boolean flagWarningNewPartitaMag = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@ -490,84 +491,84 @@ public class DBSettingsModel {
return this; return this;
} }
public boolean isFlagAskPrintUlAccettazioneBolla() { public boolean isFlagAccettazioneBollaAskPrintUl() {
return flagAskPrintUlAccettazioneBolla; return flagAccettazioneBollaAskPrintUl;
} }
public DBSettingsModel setFlagAskPrintUlAccettazioneBolla(boolean flagAskPrintUlAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaAskPrintUl(boolean flagAccettazioneBollaAskPrintUl) {
this.flagAskPrintUlAccettazioneBolla = flagAskPrintUlAccettazioneBolla; this.flagAccettazioneBollaAskPrintUl = flagAccettazioneBollaAskPrintUl;
return this; return this;
} }
public boolean isFlagAskTipoColloAccettazioneBolla() { public boolean isFlagAccettazioneBollaAskTipoCollo() {
return flagAskTipoColloAccettazioneBolla; return flagAccettazioneBollaAskTipoCollo;
} }
public DBSettingsModel setFlagAskTipoColloAccettazioneBolla(boolean flagAskTipoColloAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaAskTipoCollo(boolean flagAccettazioneBollaAskTipoCollo) {
this.flagAskTipoColloAccettazioneBolla = flagAskTipoColloAccettazioneBolla; this.flagAccettazioneBollaAskTipoCollo = flagAccettazioneBollaAskTipoCollo;
return this; return this;
} }
public boolean isFlagAskVersamentoAutomaticoAccettazioneBolla() { public boolean isFlagAccettazioneBollaAskVersamentoAutomatico() {
return flagAskVersamentoAutomaticoAccettazioneBolla; return flagAccettazioneBollaAskVersamentoAutomatico;
} }
public DBSettingsModel setFlagAskVersamentoAutomaticoAccettazioneBolla(boolean flagAskVersamentoAutomaticoAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaAskVersamentoAutomatico(boolean flagAccettazioneBollaAskVersamentoAutomatico) {
this.flagAskVersamentoAutomaticoAccettazioneBolla = flagAskVersamentoAutomaticoAccettazioneBolla; this.flagAccettazioneBollaAskVersamentoAutomatico = flagAccettazioneBollaAskVersamentoAutomatico;
return this; return this;
} }
public boolean isFlagCanAddUnknownItemsAccettazioneBolla() { public boolean isFlagAccettazioneBollaCanAddUnknownItems() {
return flagCanAddUnknownItemsAccettazioneBolla; return flagAccettazioneBollaCanAddUnknownItems;
} }
public DBSettingsModel setFlagCanAddUnknownItemsAccettazioneBolla(boolean flagCanAddUnknownItemsAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaCanAddUnknownItems(boolean flagAccettazioneBollaCanAddUnknownItems) {
this.flagCanAddUnknownItemsAccettazioneBolla = flagCanAddUnknownItemsAccettazioneBolla; this.flagAccettazioneBollaCanAddUnknownItems = flagAccettazioneBollaCanAddUnknownItems;
return this; return this;
} }
public boolean isFlagCanAddUnknownBarcodesAccettazioneBolla() { public boolean isFlagAccettazioneBollaCanAddUnknownBarcodes() {
return flagCanAddUnknownBarcodesAccettazioneBolla; return flagAccettazioneBollaCanAddUnknownBarcodes;
} }
public DBSettingsModel setFlagCanAddUnknownBarcodesAccettazioneBolla(boolean flagCanAddUnknownBarcodesAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaCanAddUnknownBarcodes(boolean flagAccettazioneBollaCanAddUnknownBarcodes) {
this.flagCanAddUnknownBarcodesAccettazioneBolla = flagCanAddUnknownBarcodesAccettazioneBolla; this.flagAccettazioneBollaCanAddUnknownBarcodes = flagAccettazioneBollaCanAddUnknownBarcodes;
return this; return this;
} }
public boolean isFlagEnableFastPickAccettazioneBolla() { public boolean isFlagAccettazioneBollaEnableFastPick() {
return flagEnableFastPickAccettazioneBolla; return flagAccettazioneBollaEnableFastPick;
} }
public DBSettingsModel setFlagEnableFastPickAccettazioneBolla(boolean flagEnableFastPickAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaEnableFastPick(boolean flagAccettazioneBollaEnableFastPick) {
this.flagEnableFastPickAccettazioneBolla = flagEnableFastPickAccettazioneBolla; this.flagAccettazioneBollaEnableFastPick = flagAccettazioneBollaEnableFastPick;
return this; return this;
} }
public boolean isFlagDisableMandatoryTracciabilitaAccettazioneBolla() { public boolean isFlagAccettazioneBollaDisableMandatoryTracciabilita() {
return flagDisableMandatoryTracciabilitaAccettazioneBolla; return flagAccettazioneBollaDisableMandatoryTracciabilita;
} }
public DBSettingsModel setFlagDisableMandatoryTracciabilitaAccettazioneBolla(boolean flagDisableMandatoryTracciabilitaAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaDisableMandatoryTracciabilita(boolean flagAccettazioneBollaDisableMandatoryTracciabilita) {
this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla; this.flagAccettazioneBollaDisableMandatoryTracciabilita = flagAccettazioneBollaDisableMandatoryTracciabilita;
return this; return this;
} }
public boolean isFlagAllowULRecoverAccettazioneBolla() { public boolean isFlagAccettazioneBollaAllowULRecover() {
return flagAllowULRecoverAccettazioneBolla; return flagAccettazioneBollaAllowULRecover;
} }
public DBSettingsModel setFlagAllowULRecoverAccettazioneBolla(boolean flagAllowULRecoverAccettazioneBolla) { public DBSettingsModel setFlagAccettazioneBollaAllowULRecover(boolean flagAccettazioneBollaAllowULRecover) {
this.flagAllowULRecoverAccettazioneBolla = flagAllowULRecoverAccettazioneBolla; this.flagAccettazioneBollaAllowULRecover = flagAccettazioneBollaAllowULRecover;
return this; return this;
} }
public boolean isFlagOverflowQuantityWarning() { public boolean isFlagSpedizioneOverflowQuantityWarning() {
return flagOverflowQuantityWarning; return flagSpedizioneOverflowQuantityWarning;
} }
public DBSettingsModel setFlagOverflowQuantityWarning(boolean flagOverflowQuantityWarning) { public DBSettingsModel setFlagSpedizioneOverflowQuantityWarning(boolean flagSpedizioneOverflowQuantityWarning) {
this.flagOverflowQuantityWarning = flagOverflowQuantityWarning; this.flagSpedizioneOverflowQuantityWarning = flagSpedizioneOverflowQuantityWarning;
return this; return this;
} }
@ -589,30 +590,30 @@ public class DBSettingsModel {
return this; return this;
} }
public boolean isFlagDeleteRowOnClose() { public boolean isFlagAccettazioneDeleteRowOnClose() {
return flagDeleteRowOnClose; return flagAccettazioneDeleteRowOnClose;
} }
public DBSettingsModel setFlagDeleteRowOnClose(boolean flagDeleteRowOnClose) { public DBSettingsModel setFlagAccettazioneDeleteRowOnClose(boolean flagAccettazioneDeleteRowOnClose) {
this.flagDeleteRowOnClose = flagDeleteRowOnClose; this.flagAccettazioneDeleteRowOnClose = flagAccettazioneDeleteRowOnClose;
return this; return this;
} }
public boolean isFlagAllowBarcodeFornitore() { public boolean isFlagAccettazioneAllowBarcodeFornitore() {
return flagAllowBarcodeFornitore; return flagAccettazioneAllowBarcodeFornitore;
} }
public DBSettingsModel setFlagAllowBarcodeFornitore(boolean flagAllowBarcodeFornitore) { public DBSettingsModel setFlagAccettazioneAllowBarcodeFornitore(boolean flagAccettazioneAllowBarcodeFornitore) {
this.flagAllowBarcodeFornitore = flagAllowBarcodeFornitore; this.flagAccettazioneAllowBarcodeFornitore = flagAccettazioneAllowBarcodeFornitore;
return this; return this;
} }
public boolean isFlagShowInfo() { public boolean isFlagProduzioneShowInfo() {
return flagShowInfo; return flagProduzioneShowInfo;
} }
public DBSettingsModel setFlagShowInfo(boolean flagShowInfo) { public DBSettingsModel setFlagProduzioneShowInfo(boolean flagProduzioneShowInfo) {
this.flagShowInfo = flagShowInfo; this.flagProduzioneShowInfo = flagProduzioneShowInfo;
return this; return this;
} }
@ -623,4 +624,13 @@ public class DBSettingsModel {
public void setFlagAccettazioneBollaUseQtaOrd(boolean flagAccettazioneBollaUseQtaOrd) { public void setFlagAccettazioneBollaUseQtaOrd(boolean flagAccettazioneBollaUseQtaOrd) {
this.flagAccettazioneBollaUseQtaOrd = flagAccettazioneBollaUseQtaOrd; this.flagAccettazioneBollaUseQtaOrd = flagAccettazioneBollaUseQtaOrd;
} }
public boolean isFlagWarningNewPartitaMag() {
return flagWarningNewPartitaMag;
}
public DBSettingsModel setFlagWarningNewPartitaMag(boolean flagWarningNewPartitaMag) {
this.flagWarningNewPartitaMag = flagWarningNewPartitaMag;
return this;
}
} }

View File

@ -246,7 +246,7 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE") .setSection("ACCETTAZIONE")
.setKeySection("FLAG_DELETE_ROW_ON_CLOSE") .setKeySection("FLAG_DELETE_ROW_ON_CLOSE")
.setSetter(dbSettingsModelIstance::setFlagDeleteRowOnClose)); .setSetter(dbSettingsModelIstance::setFlagAccettazioneDeleteRowOnClose));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
@ -287,7 +287,7 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("PRODUZIONE") .setSection("PRODUZIONE")
.setKeySection("FLAG_SHOW_INFO") .setKeySection("FLAG_SHOW_INFO")
.setSetter(dbSettingsModelIstance::setFlagShowInfo) .setSetter(dbSettingsModelIstance::setFlagProduzioneShowInfo)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class)
.setGestName("PICKING") .setGestName("PICKING")
@ -449,61 +449,61 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ASK_PRINT_UL") .setKeySection("FLAG_ASK_PRINT_UL")
.setSetter(dbSettingsModelIstance::setFlagAskPrintUlAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskPrintUl)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ASK_TIPO_COLLO") .setKeySection("FLAG_ASK_TIPO_COLLO")
.setSetter(dbSettingsModelIstance::setFlagAskTipoColloAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskTipoCollo)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ASK_VERSAMENTO_AUTOMATICO") .setKeySection("FLAG_ASK_VERSAMENTO_AUTOMATICO")
.setSetter(dbSettingsModelIstance::setFlagAskVersamentoAutomaticoAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAskVersamentoAutomatico)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS") .setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS")
.setSetter(dbSettingsModelIstance::setFlagCanAddUnknownItemsAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaCanAddUnknownItems)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_CAN_ADD_UNKNOWN_BARCODES") .setKeySection("FLAG_CAN_ADD_UNKNOWN_BARCODES")
.setSetter(dbSettingsModelIstance::setFlagCanAddUnknownBarcodesAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaCanAddUnknownBarcodes)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ENABLE_FAST_PICK") .setKeySection("FLAG_ENABLE_FAST_PICK")
.setSetter(dbSettingsModelIstance::setFlagEnableFastPickAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaEnableFastPick)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA") .setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA")
.setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaDisableMandatoryTracciabilita)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA") .setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_ALLOW_UL_RECOVER") .setKeySection("FLAG_ALLOW_UL_RECOVER")
.setSetter(dbSettingsModelIstance::setFlagAllowULRecoverAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaAllowULRecover)
.setDefaultValue(true)); .setDefaultValue(true));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
.setKeySection("FLAG_OVERFLOW_QUANTITY_WARNING") .setKeySection("FLAG_OVERFLOW_QUANTITY_WARNING")
.setSetter(dbSettingsModelIstance::setFlagOverflowQuantityWarning) .setSetter(dbSettingsModelIstance::setFlagSpedizioneOverflowQuantityWarning)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE") .setSection("ACCETTAZIONE")
.setKeySection("FLAG_ALLOW_BARCODE_FORNITORE") .setKeySection("FLAG_ALLOW_BARCODE_FORNITORE")
.setSetter(dbSettingsModelIstance::setFlagAllowBarcodeFornitore) .setSetter(dbSettingsModelIstance::setFlagAccettazioneAllowBarcodeFornitore)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING") .setGestName("PICKING")
@ -511,6 +511,12 @@ public class SettingsManager {
.setKeySection("FLAG_USE_QTA_ORD") .setKeySection("FLAG_USE_QTA_ORD")
.setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaUseQtaOrd) .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaUseQtaOrd)
.setDefaultValue(true)); .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(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();

View File

@ -221,7 +221,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
fabPopupMenu.setForceShowIcon(true); fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu()); 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 -> { fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId(); int itemId = item.getItemId();
@ -526,7 +526,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
.setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanOverflowOrderQuantity(canOverflowQuantity) .setCanOverflowOrderQuantity(canOverflowQuantity)
.setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagDisableMandatoryTracciabilitaAccettazioneBolla()); .setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagAccettazioneBollaDisableMandatoryTracciabilita());
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View mDialogInputQuantityV2View

View File

@ -356,7 +356,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageUnknownBarcode(String barcode, Runnable onComplete) { 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 //TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato
this.sendOnUnknownBarcodeScanned(barcode, notes -> { this.sendOnUnknownBarcodeScanned(barcode, notes -> {
this.manageDispatchBollaRow(new PickingObjectDTO() this.manageDispatchBollaRow(new PickingObjectDTO()
@ -376,7 +376,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) { private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) {
if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) { if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownItems()) {
this.manageDispatchBollaRow(new PickingObjectDTO() this.manageDispatchBollaRow(new PickingObjectDTO()
.setMtbAart(mtbAart) .setMtbAart(mtbAart)
@ -410,7 +410,7 @@ public class AccettazioneBollaPickingViewModel {
} }
private void manageInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) { private void manageInfoAggiuntiveRequest(RunnableArgss<String, MtbTCol> onComplete) {
if (!SettingsManager.iDB().isFlagAskTipoColloAccettazioneBolla()) { if (!SettingsManager.iDB().isFlagAccettazioneBollaAskTipoCollo()) {
onComplete.run(null, null); onComplete.run(null, null);
return; return;
} }
@ -428,7 +428,7 @@ public class AccettazioneBollaPickingViewModel {
} }
} }
if (SettingsManager.iDB().isFlagEnableFastPickAccettazioneBolla()) { if (SettingsManager.iDB().isFlagAccettazioneBollaEnableFastPick()) {
this.saveNewRow(pickingObjectDTO, this.saveNewRow(pickingObjectDTO,
BigDecimal.ONE, BigDecimal.ONE,
pickingObjectDTO.getMtbAart().getQtaCnf(), pickingObjectDTO.getMtbAart().getQtaCnf(),
@ -808,7 +808,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageVersamentoAutomatico(Runnable onComplete) { private void manageVersamentoAutomatico(Runnable onComplete) {
if (!SettingsManager.iDB().isFlagAskVersamentoAutomaticoAccettazioneBolla()) { if (!SettingsManager.iDB().isFlagAccettazioneBollaAskVersamentoAutomatico()) {
onComplete.run(); onComplete.run();
return; return;
} }
@ -831,7 +831,7 @@ public class AccettazioneBollaPickingViewModel {
} }
private void managePrintCollo(Runnable onComplete) { private void managePrintCollo(Runnable onComplete) {
if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAskPrintUlAccettazioneBolla()) { if (!mCurrentMtbColt.getDisablePrint() || !SettingsManager.iDB().isFlagAccettazioneBollaAskPrintUl()) {
onComplete.run(); onComplete.run();
return; return;
} }

View File

@ -214,7 +214,7 @@ public class AccettazioneOrdiniPickingViewModel {
//dell'etichetta anonima //dell'etichetta anonima
this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
} else { } else {
if (SettingsManager.iDB().isFlagAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) { if (SettingsManager.iDB().isFlagAccettazioneAllowBarcodeFornitore() && UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeSSCCFornitore(barcodeScanDTO, onComplete); this.executeSSCCFornitore(barcodeScanDTO, onComplete);
} else { } else {
this.processBarcodeNotOpenedLU(barcodeScanDTO, null, onComplete); this.processBarcodeNotOpenedLU(barcodeScanDTO, null, onComplete);
@ -815,7 +815,7 @@ public class AccettazioneOrdiniPickingViewModel {
} }
private void calculateQtaDaEvadere() { private void calculateQtaDaEvadere() {
if (SettingsManager.iDB().isFlagDeleteRowOnClose()) { if (SettingsManager.iDB().isFlagAccettazioneDeleteRowOnClose()) {
for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) {
List<MtbColr> withdrawMtbColrs = pickingObjectDTO.getWithdrawMtbColrs(); List<MtbColr> withdrawMtbColrs = pickingObjectDTO.getWithdrawMtbColrs();
BigDecimal qtaEvasa = BigDecimal.ZERO; BigDecimal qtaEvasa = BigDecimal.ZERO;

View File

@ -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.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
public class ArticoliInGiacenzaViewModel { public class ArticoliInGiacenzaViewModel {
private final InventarioService mInventarioService; private final InventarioService mInventarioService;

View File

@ -2,19 +2,27 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import java.util.HashMap; 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.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView; import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
public class ProdFabbisognoLineeProdBindings { public class ProdFabbisognoLineeProdBindings {
public static final int NUM_ORD_FILTER_ID = 0; public static final int NUM_ORD_FILTER_ID = 0;
public static final int MGRP_FILTER_ID = 1;
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{ public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
put(NUM_ORD_FILTER_ID, new FilterChipDTO() put(NUM_ORD_FILTER_ID, new FilterChipDTO()
.setID(NUM_ORD_FILTER_ID) .setID(NUM_ORD_FILTER_ID)
.setPosizione(0)
.setFilterChipText("Numero ordine") .setFilterChipText("Numero ordine")
.setFilterLayoutView(new FilterNumeroOrdineLayoutView())); .setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
put(MGRP_FILTER_ID, new FilterChipDTO()
.setID(MGRP_FILTER_ID)
.setPosizione(1)
.setFilterChipText("Gruppo merceologico")
.setFilterLayoutView(new FilterGruppoMercLayoutView()));
}}; }};
} }

View File

@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import javax.inject.Inject; 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.BaseFragment;
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; 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.MtbColr;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; 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.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; 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.FragmentProdFabbisognoLineeProdBinding;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding; import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; 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.MainListProdOrdineProduzioneElencoClienteListModel;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.GroupTitleModel;
@ -68,11 +75,17 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
@Inject @Inject
ProdFabbisognoLineeProdViewModel mViewModel; ProdFabbisognoLineeProdViewModel mViewModel;
@Inject
ArticoloRESTConsumer mArticoloRESTConsumer;
@Inject
CommessaRESTConsumer mCommessaRESTConsumer;
private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>(); private final ArrayList<Runnable> mOnPreDestroyList = new ArrayList<>();
private final ObservableArrayList<Object> mProdFabbisognoItemModel = new ObservableArrayList<>(); private final ObservableArrayList<Object> mProdFabbisognoItemModel = new ObservableArrayList<>();
private FragmentProdFabbisognoLineeProdBinding mBindings; private FragmentProdFabbisognoLineeProdBinding mBindings;
private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel(); private ProdFabbisognoLineeProdFilterViewModel mFilterViewModel = new ProdFabbisognoLineeProdFilterViewModel();
private List<MtbGrup> mtbGrupCache;
private List<JtbComt> jtbComtCache;
public ProdFabbisognoLineeProdFragment() { public ProdFabbisognoLineeProdFragment() {
// Required empty public constructor // Required empty public constructor
@ -120,6 +133,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> { mViewModel.getOrdiniList().observe(getViewLifecycleOwner(), data -> {
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE); mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
this.onLoadingStarted();
this.initMtbGrupsCache(() -> {
this.initJtbComtCache(this::onLoadingEnded);
});
mFilterViewModel.init(mViewModel.getOrdiniList().getValue()); mFilterViewModel.init(mViewModel.getOrdiniList().getValue());
this.refreshList(null); this.refreshList(null);
}); });
@ -211,34 +229,67 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
}; };
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged); mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged);
for (var filterChipDTO : ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet()) { List<FilterChipDTO> filterList = Stream.of(ProdFabbisognoLineeProdBindings.AVAILABLE_FILTERS.entrySet())
.map(Map.Entry::getValue)
.sortBy(FilterChipDTO::getPosizione)
.toList();
for (FilterChipDTO filterChipDTO : filterList) {
FilterChipView filterChipView = new FilterChipView( FilterChipView filterChipView = new FilterChipView(
requireActivity(), requireActivity(),
filterChipDTO.getValue().getFilterChipText(), filterChipDTO.getFilterChipText(),
v -> initBottomSheetDialogFilter(filterChipDTO.getValue())); v -> initBottomSheetDialogFilter(filterChipDTO));
if (filterChipDTO.getKey() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) { switch (filterChipDTO.getID()){
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID -> {
@Override mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
public void run() { @Override
if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) { public void run() {
filterChipView.disableCloseIcon(); if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) {
filterChipView.disableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView); mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView); mBindings.filterChipsGroup.addView(filterChipView);
mBindings.filterChips.smoothScrollTo(0, 0); mBindings.filterChips.smoothScrollTo(0, 0);
} else { } else {
filterChipView.enableCloseIcon(); filterChipView.enableCloseIcon();
mBindings.filterChipsGroup.removeView(filterChipView); mBindings.filterChipsGroup.removeView(filterChipView);
mBindings.filterChipsGroup.addView(filterChipView, 0); mBindings.filterChipsGroup.addView(filterChipView, 0);
mBindings.filterChips.smoothScrollTo(0, 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); this.mBindings.filterChipsGroup.addView(filterChipView);
} }
@ -253,16 +304,24 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
var filterLayoutView = filterChipDTO var filterLayoutView = filterChipDTO
.getFilterLayoutView(); .getFilterLayoutView();
if (filterChipDTO.getID() == ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID) { switch (filterChipDTO.getID()) {
((FilterNumeroOrdineLayoutView) filterLayoutView) case ProdFabbisognoLineeProdBindings.NUM_ORD_FILTER_ID ->
.setAllNumOrds(mFilterViewModel.getAllNumOrds()) ((FilterNumeroOrdineLayoutView) filterLayoutView)
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds()) .setAllNumOrds(mFilterViewModel.getAllNumOrds())
.setOnFilterApplied(mFilterViewModel::setNumOrdFilter) .setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
.setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue())) .setOnFilterApplied(mFilterViewModel::setNumOrdFilter)
.filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ? .setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrdiniList().getValue()))
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get())) .filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ?
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd()) x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentNumOrdsPredicate().get()))
.toList()); .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()) 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 @Override
public void onDestroy() { public void onDestroy() {
for (Runnable onPreDestroy : mOnPreDestroyList) { for (Runnable onPreDestroy : mOnPreDestroyList) {
@ -305,11 +402,18 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
.max(Date::compareTo) .max(Date::compareTo)
.orElse(null); .orElse(null);
this.mViewModel.loadFabbisogno(ordini, codMdep, dataInizio, dataFine, this::startPickingActivity); List<MtbGrup> 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<ProdFabbisognoLineeProdDTO> fabbisognoList) { private void startPickingActivity(List<MtbGrup> listMtbGrup, List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel) String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel)
@ -318,6 +422,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
.toList()); .toList());
List<SitArtOrdDTO> sitArtOrdDTOS = Stream.of(fabbisognoList) List<SitArtOrdDTO> sitArtOrdDTOS = Stream.of(fabbisognoList)
.filter(x -> Stream.of(listMtbGrup).anyMatch(y -> y.getCodMgrp().equalsIgnoreCase(x.getCodMgrp())))
.map(x -> { .map(x -> {
SitArtOrdDTO sitArtOrdDTO = new SitArtOrdDTO() SitArtOrdDTO sitArtOrdDTO = new SitArtOrdDTO()
.setCodMart(x.getCodMart()) .setCodMart(x.getCodMart())

View File

@ -1,12 +1,17 @@
package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto; 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.di.BindableBoolean;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class ProdFabbisognoLineeItemModelDto { public class ProdFabbisognoLineeItemModelDto {
public BindableBoolean selected = new BindableBoolean(); public BindableBoolean selected = new BindableBoolean();
public OrdineLavorazioneDTO ordineLavorazioneDTO; public OrdineLavorazioneDTO ordineLavorazioneDTO;
List<MtbGrup> selectedMtbGrup = new ArrayList<>();
public BindableBoolean getSelected() { public BindableBoolean getSelected() {
return selected; return selected;
@ -20,4 +25,13 @@ public class ProdFabbisognoLineeItemModelDto {
this.ordineLavorazioneDTO = ordineLavorazioneDTO; this.ordineLavorazioneDTO = ordineLavorazioneDTO;
return this; return this;
} }
public List<MtbGrup> getSelectedMtbGrup() {
return selectedMtbGrup;
}
public ProdFabbisognoLineeItemModelDto setSelectedMtbGrup(List<MtbGrup> selectedMtbGrup) {
this.selectedMtbGrup = selectedMtbGrup;
return this;
}
} }

View File

@ -6,18 +6,25 @@ import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate; import com.annimon.stream.function.Predicate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; 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_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class ProdFabbisognoLineeProdFilterViewModel { public class ProdFabbisognoLineeProdFilterViewModel {
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentNumOrdsPredicate = new ObservableField<>(); private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentNumOrdsPredicate = new ObservableField<>();
private final ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> currentGruppoMercPredicate = new ObservableField<>();
private List<ProdFabbisognoLineeItemModelDto> initialList; private List<ProdFabbisognoLineeItemModelDto> initialList;
private List<MtbGrup> selectedMtbGrup = new ArrayList<>();
private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> currentList = new MutableLiveData<>(); private final MutableLiveData<List<ProdFabbisognoLineeItemModelDto>> currentList = new MutableLiveData<>();
public void init(List<ProdFabbisognoLineeItemModelDto> initialList){ public void init(List<ProdFabbisognoLineeItemModelDto> initialList) {
this.initialList = initialList; this.initialList = initialList;
this.currentList.setValue(this.initialList); this.currentList.setValue(this.initialList);
} }
@ -26,23 +33,37 @@ public class ProdFabbisognoLineeProdFilterViewModel {
return this.currentList; return this.currentList;
} }
public void setNumOrdFilter(List<Integer> numOrds){ public void setNumOrdFilter(List<Integer> numOrds) {
if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null); if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null);
else{ else {
currentNumOrdsPredicate.set(x -> numOrds.contains(x.getOrdineLavorazioneDTO().getNumOrd())); currentNumOrdsPredicate.set(x -> numOrds.contains(x.getOrdineLavorazioneDTO().getNumOrd()));
} }
} }
public void applyAllTests(){ public void setGruppoMercFilter(List<MtbGrup> 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<ProdFabbisognoLineeItemModelDto> returnList = null; List<ProdFabbisognoLineeItemModelDto> returnList = null;
if (currentNumOrdsPredicate.get() == null){ if (currentNumOrdsPredicate.get() == null &&
currentGruppoMercPredicate.get() == null) {
returnList = this.initialList; returnList = this.initialList;
}else { } else {
Stream<ProdFabbisognoLineeItemModelDto> tmpStream = Stream.of(this.initialList) returnList = Stream.of(this.initialList)
.filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x)))); .filter(x -> (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
(currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x)))
returnList = tmpStream.toList(); ).map(x -> x.setSelectedMtbGrup(this.selectedMtbGrup)).toList();
} }
this.currentList.setValue(returnList); this.currentList.setValue(returnList);
@ -52,7 +73,11 @@ public class ProdFabbisognoLineeProdFilterViewModel {
return currentNumOrdsPredicate; return currentNumOrdsPredicate;
} }
public List<Integer> getAllNumOrds(){ public ObservableField<Predicate<ProdFabbisognoLineeItemModelDto>> getCurrentGruppoMercPredicate() {
return currentGruppoMercPredicate;
}
public List<Integer> getAllNumOrds() {
return Stream return Stream
.of(Objects.requireNonNull(initialList)) .of(Objects.requireNonNull(initialList))
.filter(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null) .filter(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null)
@ -62,13 +87,59 @@ public class ProdFabbisognoLineeProdFilterViewModel {
.toList(); .toList();
} }
public List<Integer> getAvailableNumOrds(){ public List<Integer> getAvailableNumOrds() {
if (currentNumOrdsPredicate.get() == null) return getAllNumOrds(); if (currentGruppoMercPredicate.get() == null) return getAllNumOrds();
else { else {
return Stream.of(this.initialList) return Stream.of(this.initialList)
.filter(x -> (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))))
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd()) .map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
.distinct() .distinct()
.toList(); .toList();
} }
} }
public List<MtbGrup> getSelectedMtbGrup() {
return selectedMtbGrup;
}
public List<MtbGrup> getAllGruppoMerc(List<MtbGrup> 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<MtbGrup> getAvailableGruppoMerc(List<MtbGrup> mtbGrupFullList){
if (currentNumOrdsPredicate.get() == null){
return getAllGruppoMerc(mtbGrupFullList);
} else {
List<String> 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();
}
}
} }

View File

@ -32,7 +32,6 @@ import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.ISearchableFragment; import it.integry.integrywmsnative.core.interfaces.ISearchableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; 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.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@ -212,7 +211,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
} }
public void onInfoClick(List<MvwSitArtUdcDetInventario> item) { public void onInfoClick(ArtsInGiacenzaDTO item) {
try { try {
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName()); DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
} catch (Exception e) { } catch (Exception e) {

View File

@ -6,6 +6,7 @@ import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
@ -13,8 +14,6 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; 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.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString; 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.ArtsInGiacenzaDTO;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO;
public class ProdRiposizionamentoDaProdViewModel { public class ProdRiposizionamentoDaProdViewModel {
private final SoundAlertService mSoundAlertService; private final SoundAlertService mSoundAlertService;
@ -41,6 +41,7 @@ public class ProdRiposizionamentoDaProdViewModel {
private final MutableLiveData<List<ArtsInGiacenzaDTO>> itemsInventario = new MutableLiveData<>(); private final MutableLiveData<List<ArtsInGiacenzaDTO>> itemsInventario = new MutableLiveData<>();
private final MutableLiveData<MtbColt> mtbColtMutableLiveData = new MutableLiveData<>(); private final MutableLiveData<MtbColt> mtbColtMutableLiveData = new MutableLiveData<>();
private final MutableLiveData<List<MvwSitArtUdcDetInventario>> mMvwSitArtUdcDetInventarioLiveData = new MutableLiveData<>(); private final MutableLiveData<List<MvwSitArtUdcDetInventario>> mMvwSitArtUdcDetInventarioLiveData = new MutableLiveData<>();
private final MutableLiveData<List<StatoArtInventarioDTO>> mStatoArticoli = new MutableLiveData<>();
private Listener mListener; private Listener mListener;
public ProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, SoundAlertService soundAlertService) { public ProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, SoundAlertService soundAlertService) {
@ -100,6 +101,13 @@ public class ProdRiposizionamentoDaProdViewModel {
mMvwSitArtUdcDetInventarioLiveData.setValue(mvwSitArtUdcDetInventario); mMvwSitArtUdcDetInventarioLiveData.setValue(mvwSitArtUdcDetInventario);
List<StatoArtInventarioDTO> 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) boolean isPresent = Stream.of(mvwSitArtUdcDetInventario)
.anyMatch(x -> .anyMatch(x ->
x.getGestione().equals(mtbColt.getGestione()) && x.getGestione().equals(mtbColt.getGestione()) &&
@ -161,6 +169,18 @@ public class ProdRiposizionamentoDaProdViewModel {
.map(MvwSitArtUdcDetInventario::getNumCnf) .map(MvwSitArtUdcDetInventario::getNumCnf)
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
List<StatoArtInventarioDTO> 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() return new ArtsInGiacenzaDTO()
.setCodMart(dtoList.get(0).getCodMart()) .setCodMart(dtoList.get(0).getCodMart())
.setPartitaMag(dtoList.get(0).getPartitaMag()) .setPartitaMag(dtoList.get(0).getPartitaMag())
@ -169,6 +189,7 @@ public class ProdRiposizionamentoDaProdViewModel {
.setNumOrd(dtoList.get(0).getNumOrd()) .setNumOrd(dtoList.get(0).getNumOrd())
.setNumCnf(totalNumCnf) .setNumCnf(totalNumCnf)
.setCount(dtoList.size()) .setCount(dtoList.size())
.setStatoArtInventario(statoArticolo)
.setMvwSitArtUdcDetInventarioDTO(dtoList); .setMvwSitArtUdcDetInventarioDTO(dtoList);
}) })
.sorted(Comparator.comparing(ArtsInGiacenzaDTO::getPosizione)) .sorted(Comparator.comparing(ArtsInGiacenzaDTO::getPosizione))

View File

@ -5,6 +5,7 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -13,6 +14,7 @@ import com.annimon.stream.Stream;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.ravikoradiya.liveadapter.LiveAdapter; import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
@ -21,8 +23,10 @@ import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; 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.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; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
public class DialogInfoGiacenzaView extends BaseDialogFragment { public class DialogInfoGiacenzaView extends BaseDialogFragment {
@ -31,13 +35,13 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
private DialogInfoGiacenzaBinding mBindings; private DialogInfoGiacenzaBinding mBindings;
private Context mContext; private Context mContext;
private List<MvwSitArtUdcDetInventario> item; private ArtsInGiacenzaDTO item;
public static DialogInfoGiacenzaView newInstance(List<MvwSitArtUdcDetInventario> item) { public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) {
return new DialogInfoGiacenzaView(item); return new DialogInfoGiacenzaView(item);
} }
public DialogInfoGiacenzaView(List<MvwSitArtUdcDetInventario> item) { public DialogInfoGiacenzaView(ArtsInGiacenzaDTO item) {
this.item = item; this.item = item;
} }
@ -78,17 +82,47 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
this.onLoadingEnded(); this.onLoadingEnded();
} }
private void initAvailableItemsList(List<MvwSitArtUdcDetInventario> availableItems) { private void initAvailableItemsList(ArtsInGiacenzaDTO availableItems) {
if(availableItems == null || availableItems.isEmpty()) if (availableItems == null)
return; return;
var itemList = Stream.of(availableItems) var listItem = Stream.of(availableItems)
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario) .flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO())
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
)
.toList(); .toList();
new LiveAdapter(itemList, BR.item) List<StatoArtInventarioDTO> 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) .map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item)
.into(this.mBindings.availableList); .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);
}
} }

View File

@ -1,6 +1,7 @@
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto; package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
@ -13,7 +14,9 @@ public class ArtsInGiacenzaDTO {
private String posizione; private String posizione;
private BigDecimal numCnf; private BigDecimal numCnf;
private Integer numOrd; private Integer numOrd;
private Date dataOrd;
private Integer count; private Integer count;
private StatoArtInventarioDTO statoArtInventario;
private List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioDTO; private List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioDTO;
public String getCodMart() { public String getCodMart() {
@ -92,4 +95,22 @@ public class ArtsInGiacenzaDTO {
this.numOrd = numOrd; this.numOrd = numOrd;
return this; 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;
}
} }

View File

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

View File

@ -3,8 +3,10 @@ package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableFloat; import it.integry.integrywmsnative.core.di.BindableFloat;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineLavorazioneDTO { public class OrdineLavorazioneDTO {
@ -101,6 +103,7 @@ public class OrdineLavorazioneDTO {
private Object mtbColtToEdit; private Object mtbColtToEdit;
private int hrNum; private int hrNum;
private List<AvailableClassMerc> availableClassMerc;
private BindableFloat qtaColVersamento = new BindableFloat(); private BindableFloat qtaColVersamento = new BindableFloat();
@ -533,4 +536,37 @@ public class OrdineLavorazioneDTO {
this.descrizioneAttivita = descrizioneAttivita; this.descrizioneAttivita = descrizioneAttivita;
return this; return this;
} }
public List<AvailableClassMerc> getAvailableClassMerc() {
return availableClassMerc;
}
public OrdineLavorazioneDTO setAvailableClassMerc(List<AvailableClassMerc> availableClassMerc) {
this.availableClassMerc = availableClassMerc;
return this;
}
public static class AvailableClassMerc {
private String codMgrp;
private List<String> codMsgr;
public String getCodMgrp() {
return codMgrp;
}
public AvailableClassMerc setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public List<String> getCodMsgr() {
return codMsgr;
}
public AvailableClassMerc setCodMsgr(List<String> codMsgr) {
this.codMsgr = codMsgr;
return this;
}
}
} }

View File

@ -404,8 +404,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato(); String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato();
if (flagStato.equalsIgnoreCase("I")) { if (flagStato.equalsIgnoreCase("I")) {
DialogSimpleMessageView.makeInfoDialog( DialogSimpleMessageView.makeWarningDialog(
getActivity().getResources().getString(R.string.confirm),
new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))), new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))),
null, null,
() -> { () -> {
@ -428,7 +427,26 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
}, },
this::onLoadingEnded) this::onLoadingEnded)
.show(getActivity().getSupportFragmentManager(), "tag"); .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 @Override

View File

@ -853,7 +853,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setPartitaMag(partitaMag) .setPartitaMag(partitaMag)
.setDataScad(dataScad) .setDataScad(dataScad)
.setCanOverflowOrderQuantity(canOverflowOrderQuantity) .setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagOverflowQuantityWarning()) .setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagSpedizioneOverflowQuantityWarning())
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null) .setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)

View File

@ -3,13 +3,14 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
@Module(subcomponents = DialogInputQuantityV2Component.class) @Module(subcomponents = DialogInputQuantityV2Component.class)
public class DialogInputQuantityV2Module { public class DialogInputQuantityV2Module {
@Provides @Provides
DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer); return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer, magazzinoRESTConsumer);
} }
} }

View File

@ -261,6 +261,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
this.mAbort = false; this.mAbort = false;
dismiss(); dismiss();
this.mOnComplete.run(this.mViewModel.getResult(), false); 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 -> { this.mViewModel.validate(validated -> {
if (validated) { if (validated) {
this.mAbort = false; this.mAbort = false;
dismiss(); dismiss();this.onLoadingEnded();
this.mOnComplete.run(this.mViewModel.getResult(), true); 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 @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
@ -540,9 +537,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
@Override @Override
public void onWarning(String text, RunnableArgs<Boolean> result) { public void onWarning(String text, RunnableArgs<Boolean> result) {
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)),
null, null,
() -> result.run(true), () -> result.run(true),
() -> result.run(false) () -> result.run(false)
).show(requireActivity().getSupportFragmentManager(), "tag"); ).show(requireActivity().getSupportFragmentManager(), "tag");
} }
} }

View File

@ -3,22 +3,29 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.concurrent.FutureTask;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; 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.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
import it.integry.integrywmsnative.core.model.MtbAart; 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.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; 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.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate; 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.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException; import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException;
@ -89,12 +96,15 @@ public class DialogInputQuantityV2ViewModel {
private Listener mListener; private Listener mListener;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
private StatoPartitaMag statoArt; private StatoPartitaMag statoArt;
private MtbPartitaMag mtbPartitaMag;
@Inject @Inject
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mMagazzinoRESTConsumer = magazzinoRESTConsumer;
} }
public void init(int onNumCnfInputChanged, int onQtaTotInputChanged) { public void init(int onNumCnfInputChanged, int onQtaTotInputChanged) {
@ -475,115 +485,175 @@ public class DialogInputQuantityV2ViewModel {
} }
public void validate(RunnableArgs<Boolean> onValidated) { public void validate(RunnableArgs<Boolean> 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()); this.mListener.onError(new InvalidQtaCnfQuantityException());
onValidated.run(false); onValidated.run(false);
return; return;
} }
if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
if (suggestPartitaMagRunnable != null) { if (suggestPartitaMagRunnable != null) {
internalPartitaMag = suggestPartitaMagRunnable.run(this); internalPartitaMag = suggestPartitaMagRunnable.run(this);
if (internalPartitaMag == null) { if (internalPartitaMag == null) {
this.mListener.onError(new InvalidBatchLotException());
onValidated.run(false);
return;
}
} else {
this.mListener.onError(new InvalidBatchLotException()); this.mListener.onError(new InvalidBatchLotException());
onValidated.run(false); onValidated.run(false);
return; 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()); this.mListener.onError(new InvalidBatchLotException());
onValidated.run(false); onValidated.run(false);
return; 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<Object> 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){ private void asyncMagazzinoRESTConsumer(String partitaMag, String codMart) {
this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); try {
onValidated.run(false); final FutureTask<Object> ft = new FutureTask<>(() -> {
return; }, 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. <br>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. <br>Continuare?", onValidated);
return;
}
onValidated.run(true);
} }
public DialogInputQuantityV2ResultDTO getResult() { public DialogInputQuantityV2ResultDTO getResult() {
@ -619,14 +689,27 @@ public class DialogInputQuantityV2ViewModel {
return this; return this;
} }
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public MtbAart getMtbAart() { public MtbAart getMtbAart() {
return this.mtbAart.get(); 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 onDataChanged();
void onError(Exception ex); void onError(Exception ex);
void onWarning(String text, RunnableArgs<Boolean> result); void onWarning(String text, RunnableArgs<Boolean> result);
} }
} }

View File

@ -24,11 +24,28 @@
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked" style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp" android:layout_marginBottom="8dp"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="Situazione articolo" /> android:text="Situazione articolo" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/loading_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressBar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
tools:visibility="gone"/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/list_item"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -37,21 +54,40 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/situazione_articolo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="1"
android:paddingBottom="16dp"
tools:listitem="@layout/dialog_info_giacenza_situazione_articolo"
tools:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/available_label"
style="@style/TextAppearance.Material3.TitleMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/gray_200"
android:paddingHorizontal="12dp"
android:text="Sulla linea"
android:textAllCaps="true" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/available_list" android:id="@+id/available_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" android:nestedScrollingEnabled="false"
tools:listitem="@layout/dialog_info_situazione_articolo_available_list_item" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="3" tools:itemCount="5"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> tools:listitem="@layout/dialog_info_giacenza_list_item" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>

View File

@ -81,7 +81,7 @@
android:layout_width="12dp" android:layout_width="12dp"
android:layout_height="12dp" android:layout_height="12dp"
android:src="@drawable/ic_location_24" android:src="@drawable/ic_location_24"
android:tint="@android:color/black" android:tint="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -89,6 +89,7 @@
style="@style/AppTheme.NewMaterial.Text.Small" style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:text="@{item.posizione}" android:text="@{item.posizione}"
app:layout_constraintStart_toEndOf="@id/position_label_icon" app:layout_constraintStart_toEndOf="@id/position_label_icon"
@ -106,7 +107,8 @@
android:backgroundTint="@color/red_300" android:backgroundTint="@color/red_300"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="@{item.codJcom != null ? View.VISIBLE : View.GONE}"> android:visibility="@{item.codJcom != null ? View.VISIBLE : View.GONE}"
tools:visibility="invisible">
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -0,0 +1,244 @@
<?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="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="androidx.core.content.ContextCompat" />
<import type="it.integry.integrywmsnative.R" />
<import type="it.integry.integrywmsnative.core.utility.UntMisUtils" />
<import type="java.math.BigDecimal" />
<import type="android.view.View" />
<variable
name="item"
type="it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingVertical="8dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="1">
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/incoming_box"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginEnd="2dp"
android:layout_weight="0.5"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/gray_200"
android:orientation="vertical"
android:paddingHorizontal="8dp"
android:paddingVertical="4dp"
android:visibility="@{item.colliArrivoIsLessThenZero() ? View.GONE : View.VISIBLE}">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.Material3.LabelSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="IN ARRIVO"
android:textColor="@color/gray_600" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityNumber.decimalToString(item.pedArrivo, 0)}"
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:text="PED"
android:textColor="@color/gray_600"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:text="("
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:text="@{UtilityNumber.decimalToString(item.colliArrivo, 0)}"
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="2dp"
android:text="@string/unt_mis_col"
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="0dp"
android:text=")"
android:textColor="@color/gray_600"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/already_box"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="2dp"
android:layout_weight="0.5"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/gray_200"
android:orientation="vertical"
android:paddingHorizontal="8dp"
android:paddingVertical="4dp"
android:visibility="@{item.colliMagIsLessThenZero() ? View.GONE : View.VISIBLE}">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.Material3.LabelSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="GIÀ POSIZIONATA"
android:textColor="@color/gray_600" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf(item.pedMag)}"
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:text="PED"
android:textColor="@color/gray_600"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="4dp"
android:text="("
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:text="@{UtilityNumber.decimalToString(item.colliMag, 0)}"
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="2dp"
android:text="@string/unt_mis_col"
android:textColor="@color/gray_600"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginStart="0dp"
android:text=")"
android:textColor="@color/gray_600"
android:textStyle="bold" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</layout>

View File

@ -192,7 +192,7 @@
android:backgroundTint="@color/colorPrimary" android:backgroundTint="@color/colorPrimary"
android:clickable="true" android:clickable="true"
android:focusable="true" android:focusable="true"
android:onClick="@{() -> view.onInfoClick(item.getMvwSitArtUdcDetInventarioDTO())}" android:onClick="@{() -> view.onInfoClick(item)}"
android:scaleType="fitCenter" /> android:scaleType="fitCenter" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -194,10 +194,13 @@
<string name="invalid_quantity_x_package_error_message"><![CDATA[La <b>quantità per confezioni</b> inserita non è valida]]></string> <string name="invalid_quantity_x_package_error_message"><![CDATA[La <b>quantità per confezioni</b> inserita non è valida]]></string>
<string name="available_num_cnf_overflow_error_message"><![CDATA[Il <b>numero di confezioni</b> inserito supera la quantità massima disponibile]]></string> <string name="available_num_cnf_overflow_error_message"><![CDATA[Il <b>numero di confezioni</b> inserito supera la quantità massima disponibile]]></string>
<string name="ordered_quantity_overflow_error_message"><![CDATA[La <b>quantità</b> inserita supera la quantità ordinata]]></string> <string name="ordered_quantity_overflow_error_message"><![CDATA[La <b>quantità</b> inserita supera la quantità ordinata]]></string>
<string name="confirm_ordered_quantity_overflow_error_message"><![CDATA[La <b>quantità</b> inserita supera la quantità ordinata. Continuare?]]></string>
<string name="ordered_num_cnf_overflow_error_message"><![CDATA[Il <b>numero di confezioni</b> inserito supera la quantità ordinata]]></string> <string name="ordered_num_cnf_overflow_error_message"><![CDATA[Il <b>numero di confezioni</b> inserito supera la quantità ordinata]]></string>
<string name="confirm_ordered_num_cnf_overflow_error_message"><![CDATA[Il <b>numero di confezioni</b> inserito supera la quantità ordinata. Continuare?]]></string>
<string name="invalid_production_line_error_message"><![CDATA[<b>Linea di produzione</b> non valida]]></string> <string name="invalid_production_line_error_message"><![CDATA[<b>Linea di produzione</b> non valida]]></string>
<string name="expire_date_error_message"><![CDATA[La <b>data di scadenza</b> inserita non è valida]]></string> <string name="expire_date_error_message"><![CDATA[La <b>data di scadenza</b> inserita non è valida]]></string>
<string name="batch_lot_error_message"><![CDATA[Il <b>lotto</b> inserito non è valido]]></string> <string name="batch_lot_error_message"><![CDATA[Il <b>lotto</b> inserito non è valido]]></string>
<string name="batch_lot_inexistent_error_message">È stato inserito un nuovo lotto per questo articolo. Continuare?</string>
<string name="empty_notes_input_message"><![CDATA[Il <b>campo note</b> deve essere compilato per il modulo corrente.]]></string> <string name="empty_notes_input_message"><![CDATA[Il <b>campo note</b> deve essere compilato per il modulo corrente.]]></string>
<string name="settings_category">Impostazioni</string> <string name="settings_category">Impostazioni</string>
<string name="check_box_preference_title">Check box</string> <string name="check_box_preference_title">Check box</string>

View File

@ -194,10 +194,13 @@
<string name="available_quantity_overflow_error_message"><![CDATA[The inserted <b>amount</b> exceeds the maximum amount available, please check it]]></string> <string name="available_quantity_overflow_error_message"><![CDATA[The inserted <b>amount</b> exceeds the maximum amount available, please check it]]></string>
<string name="available_num_cnf_overflow_error_message"><![CDATA[The inserted <b>package\'s amount</b> exceeds the maximum amount available, please check it]]></string> <string name="available_num_cnf_overflow_error_message"><![CDATA[The inserted <b>package\'s amount</b> exceeds the maximum amount available, please check it]]></string>
<string name="ordered_quantity_overflow_error_message"><![CDATA[The inserted <b>amount</b> exceeds the total ordered amount, please check it]]></string> <string name="ordered_quantity_overflow_error_message"><![CDATA[The inserted <b>amount</b> exceeds the total ordered amount, please check it]]></string>
<string name="confirm_ordered_quantity_overflow_error_message"><![CDATA[The inserted <b>amount</b> exceeds the total ordered amount. To continue?]]></string>
<string name="confirm_ordered_num_cnf_overflow_error_message"><![CDATA[The inserted <b>package\'s amount</b> exceeds the total ordered amount. To continue?]]></string>
<string name="ordered_num_cnf_overflow_error_message"><![CDATA[The inserted <b>package\'s amount</b> exceeds the total ordered amount, please check it]]></string> <string name="ordered_num_cnf_overflow_error_message"><![CDATA[The inserted <b>package\'s amount</b> exceeds the total ordered amount, please check it]]></string>
<string name="invalid_production_line_error_message"><![CDATA[Invalid <b>production line</b>]]></string> <string name="invalid_production_line_error_message"><![CDATA[Invalid <b>production line</b>]]></string>
<string name="expire_date_error_message"><![CDATA[The inserted <b>expire date</b> is not valid, please check it.]]></string> <string name="expire_date_error_message"><![CDATA[The inserted <b>expire date</b> is not valid, please check it.]]></string>
<string name="batch_lot_error_message"><![CDATA[The inserted <b>batch lot</b> is not valid, please check it.]]></string> <string name="batch_lot_error_message"><![CDATA[The inserted <b>batch lot</b> is not valid, please check it.]]></string>
<string name="batch_lot_inexistent_error_message">A new batch lot has been added for this item. To continue?</string>
<string name="empty_notes_input_message"><![CDATA[The <b>notes field</b> requires to be filled in for the current form.]]></string> <string name="empty_notes_input_message"><![CDATA[The <b>notes field</b> requires to be filled in for the current form.]]></string>
<string name="settings_category">Settings</string> <string name="settings_category">Settings</string>
<string name="check_box_preference_title">Check box</string> <string name="check_box_preference_title">Check box</string>