diff --git a/app/build.gradle b/app/build.gradle index f6b20537..a96a8246 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,17 @@ apply plugin: 'com.android.application' -apply plugin: 'com.google.firebase.firebase-perf' + +if (!project.hasProperty("disable-performance-plugin")) { + apply plugin: 'com.google.firebase.firebase-perf' +} + apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 256 - def appVersionName = '1.23.1' + def appVersionCode = 257 + def appVersionName = '1.23.2' signingConfigs { release { @@ -27,12 +31,12 @@ android { } } - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { applicationId "it.integry.integrywmsnative" minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 versionCode appVersionCode versionName appVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -94,33 +98,32 @@ dependencies { //Firebase // Import the Firebase BoM - implementation platform('com.google.firebase:firebase-bom:26.3.0') + implementation platform('com.google.firebase:firebase-bom:29.1.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-core' - implementation 'com.google.firebase:firebase-crash' implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-perf' - implementation 'com.google.android.gms:play-services-basement:17.6.0' + implementation 'com.google.android.gms:play-services-basement:18.0.0' - implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' - implementation 'androidx.preference:preference-ktx:1.1.1' + implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.annimon:stream:1.2.2' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' - implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1' + implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.1' implementation 'org.apache.commons:commons-text:1.9' //MVVM - def dagger2_version = '2.35.1' + def dagger2_version = '2.40' api "com.google.dagger:dagger:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version" @@ -140,7 +143,7 @@ dependencies { implementation 'com.github.pedromassango:doubleClick:3.0' //SQLite ROOM - def room_version = "2.3.0" + def room_version = "2.4.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" @@ -159,7 +162,6 @@ dependencies { implementation 'com.github.RaviKoradiya:LiveAdapter:1.3.4' - implementation 'org.reflections:reflections:0.10.2' } repositories { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index acf8fdef..a42b2eaf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,8 @@ + android:windowSoftInputMode="adjustNothing" + android:exported="true"> @@ -73,7 +74,8 @@ + android:theme="@style/SplashTheme" + android:exported="true"> diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 60078c14..ba20830b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -63,6 +63,7 @@ import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.Dial import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule; +import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; @@ -114,42 +115,79 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr public interface MainApplicationComponent { SplashActivityComponent.Factory splashActivityComponent(); + LoginComponent.Factory loginActivityComponent(); + MainActivityComponent.Factory mainActivityComponent(); + MainFragmentComponent.Factory mainFragmentComponent(); + MainAccettazioneComponent.Factory mainAccettazioneComponent(); + ListaBancaliComponent.Factory listaBancaliComponent(); + ContenutoBancaleComponent.Factory contenutoBancaleComponent(); + PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); + PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); + PickingLiberoComponent.Factory pickingLiberoComponent(); + RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); + SpedizioneComponent.Factory spedizioneComponent(); + AccettazionePickingComponent.Factory accettazionePickingComponent(); + UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent(); + UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent(); + PickingResiComponent.Factory pickingResiComponent(); + OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); + DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); + DialogInputLUProdComponent.Factory dialogInputLUProdComponent(); + DialogScanArtComponent.Factory dialogScanArtComponent(); + DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent(); + ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent(); + VersamentoMerceComponent.Factory versamentoMerceComponent(); + DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent(); + DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent(); + DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent(); + ProdRientroMerceComponent.Factory prodRientroMerceComponent(); + ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent(); + ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent(); + ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent(); + ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent(); + DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent(); + DocInterniComponent.Factory docInterniComponent(); + DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent(); + DocInterniEditFormComponent.Factory docInterniEditFormComponent(); + InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent(); + void inject(MainApplication mainApplication); + void inject(AppContext mainApplication); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index bab4b01c..54ab7855 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -57,6 +57,7 @@ public class MtbColt extends EntityBase { private String codJcom; private List mtbCols; + private MtbTCol mtbTCol; private Boolean disablePrint; private String ragSocCliente; @@ -83,7 +84,6 @@ public class MtbColt extends EntityBase { } - private ObservableArrayList mtbColr = new ObservableArrayList<>(); public ObservableArrayList getMtbColr() { @@ -95,12 +95,12 @@ public class MtbColt extends EntityBase { return this; } - public MtbColt(){ + public MtbColt() { type = "mtb_colt"; setDataCollo(UtilityDate.getDateInstance()); setSerCollo("/"); - if(SettingsManager.i().isUserLoggedIn()) { + if (SettingsManager.i().isUserLoggedIn()) { setPreparatoDa(SettingsManager.i().getUser().getFullname()); } } @@ -137,11 +137,11 @@ public class MtbColt extends EntityBase { Date dataColloD = null; try { dataColloD = getDataColloD(); - } catch (Exception ex){ + } catch (Exception ex) { UtilityLogger.errorMe(ex); } - if(dataColloD != null){ + if (dataColloD != null) { return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN_LONG); } else return null; } @@ -392,7 +392,7 @@ public class MtbColt extends EntityBase { public String getTimeVers() { Date dataColloD = getDataVersD(); - if(dataColloD != null){ + if (dataColloD != null) { return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.TIME); } else return null; } @@ -526,6 +526,15 @@ public class MtbColt extends EntityBase { return this; } + public MtbTCol getMtbTCol() { + return mtbTCol; + } + + public MtbColt setMtbTCol(MtbTCol mtbTCol) { + this.mtbTCol = mtbTCol; + return this; + } + public void generaFiltroOrdineFromDTO(List filtroOrdineDtos) { String xmlPrefix = "{\"whereCond\": \""; @@ -533,9 +542,9 @@ public class MtbColt extends EntityBase { StringBuilder whereCond = new StringBuilder(); - if(filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) { + if (filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) { - for(int i = 0; i < filtroOrdineDtos.size(); i++){ + for (int i = 0; i < filtroOrdineDtos.size(); i++) { FiltroOrdineDTO x = filtroOrdineDtos.get(i); try { @@ -545,13 +554,13 @@ public class MtbColt extends EntityBase { UtilityDB.valueToString(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)), UtilityDB.valueToString(x.getNumOrd()))); - if(!UtilityString.isNullOrEmpty(x.getDataConsS())) { + if (!UtilityString.isNullOrEmpty(x.getDataConsS())) { whereCond.append(String.format(" AND dr.dc = %s", UtilityDB.valueToString(UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)))); } whereCond.append(")"); - if(i < filtroOrdineDtos.size()-1) { + if (i < filtroOrdineDtos.size() - 1) { whereCond.append(" OR "); } } catch (Exception e) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index 570bb413..1155243f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -5,9 +5,7 @@ import android.util.Log; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.orhanobut.logger.Logger; @@ -17,8 +15,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.lang.reflect.Type; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -35,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; @@ -55,18 +52,11 @@ public class SystemRESTConsumer extends _BaseRESTConsumer { public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "ProcessSql", o -> { Gson gson = new GsonBuilder() - .registerTypeAdapter(Date.class, new JsonDeserializer() { - @Override - public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - try { - return new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(json.getAsString()); - } catch (Exception e) { - try { - return new SimpleDateFormat().parse(json.getAsString()); - } catch (ParseException parseException) { - throw new JsonParseException(parseException); - } - } + .registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> { + try { + return UtilityDate.recognizeDate(json.getAsString()); + } catch (Exception e) { + throw new JsonParseException(e); } }) .create(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java index a36929e9..085b1a09 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java @@ -1,7 +1,5 @@ package it.integry.integrywmsnative.core.utility; -import com.google.android.gms.common.internal.service.Common; - import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index 30dbcaf0..6857bda6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -41,6 +41,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; @@ -72,9 +73,9 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; -import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.versamento_automatico_ul_done.DialogVersamentoAutomaticoULDoneView; public class AccettazionePickingActivity extends BaseActivity implements AccettazionePickingViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener { @@ -791,9 +792,9 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta } @Override - public void onNoteAggiuntiveRequest(RunnableArgs onComplete) { + public void onInfoAggiuntiveRequest(RunnableArgss onComplete) { runOnUiThread(() -> { - NoteAggiuntiveLUDialog.make(this, onComplete).show(); + InfoAggiuntiveLUDialog.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index d72c941b..d4bc5649 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -34,6 +34,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -359,7 +360,7 @@ public class AccettazionePickingViewModel { } public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { - this.sendOnNoteAggiuntiveRequest(additionalNotes -> { + this.sendOnInfoAggiuntiveRequest((additionalNotes, tCol) -> { this.mGestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_POSIZIONE_COLLI_ACCETTAZIONE", defaultPosAccettazioneDTO -> { @@ -375,6 +376,11 @@ public class AccettazionePickingViewModel { .setPosizione(defaultPosAccettazione) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + if (tCol != null) { + mtbColt.setCodTcol(tCol.getCodTcol()); + mtbColt.setMtbTCol(tCol); + } + if (customNumCollo != null) { mtbColt.setNumCollo(customNumCollo); } @@ -896,8 +902,8 @@ public class AccettazionePickingViewModel { if (this.mListener != null) this.mListener.onVersamentoAutomaticoULRequest(onComplete); } - private void sendOnNoteAggiuntiveRequest(RunnableArgs onComplete) { - if (this.mListener != null) this.mListener.onNoteAggiuntiveRequest(onComplete); + private void sendOnInfoAggiuntiveRequest(RunnableArgss onComplete) { + if (this.mListener != null) this.mListener.onInfoAggiuntiveRequest(onComplete); } private void sendError(Exception ex) { @@ -990,7 +996,7 @@ public class AccettazionePickingViewModel { void onVersamentoAutomaticoULRequest(RunnableArgs onComplete); - void onNoteAggiuntiveRequest(RunnableArgs onComplete); + void onInfoAggiuntiveRequest(RunnableArgss onComplete); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index b4580b87..6be6f11a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -4,6 +4,8 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; +import org.apache.commons.lang3.StringUtils; + import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -68,8 +70,8 @@ public class DocInterniEditFormViewModel { } - public void editRow(SqlMtbColr row,boolean flagTracciabilita) { - this.listener.onEditRowRequest(row,flagTracciabilita); + public void editRow(SqlMtbColr row, boolean flagTracciabilita) { + this.listener.onEditRowRequest(row, flagTracciabilita); } private Integer getNextIdRiga() { @@ -91,7 +93,8 @@ public class DocInterniEditFormViewModel { }, this::sendError); }, this::sendError); } -public void deleteDocument() { + + public void deleteDocument() { this.sendOnLoadingStarted(); docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> { SqlMtbColt document = this.getDocument(); @@ -117,7 +120,7 @@ public void deleteDocument() { } SqlMtbColr row = this.getRowForArticolo(articolo); this.sendOnLoadingEnded(); - this.editRow(row,articolo.getFlagTracciabilita().equalsIgnoreCase("S")); + this.editRow(row, articolo.getFlagTracciabilita().equalsIgnoreCase("S")); } @@ -148,7 +151,12 @@ public void deleteDocument() { } private GrigliaAcquistiChildDTO searchArticolo(String filter) { - return Stream.of(this.productsList).filter(dto -> filter.equalsIgnoreCase(dto.getCodMart()) || filter.equalsIgnoreCase(dto.getBarcode())).findFirstOrElse(null); + return Stream.of(this.productsList).filter(dto -> + filter.equalsIgnoreCase(dto.getCodMart()) + || filter.equalsIgnoreCase(dto.getBarcode()) + || StringUtils.leftPad(filter, 13, '0').equalsIgnoreCase(dto.getCodMart()) + || StringUtils.leftPad(filter, 13, '0').equalsIgnoreCase(dto.getBarcode()) + ).findFirstOrElse(null); } private SaveDTO getSaveDto() { @@ -251,7 +259,7 @@ public void deleteDocument() { } public GrigliaAcquistiChildDTO getArticoloByCodMart(String codMart) { - return Stream.of(productsList).filter(prod->prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null); + return Stream.of(productsList).filter(prod -> prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null); } public interface Listener extends ILoadingListener { @@ -260,7 +268,7 @@ public void deleteDocument() { void onRowsChanged(List rows); - void onEditRowRequest(SqlMtbColr row,boolean flagTracciabilita); + void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita); void onDocumentHoldRequest(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 0c5a4e7b..ba319efc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -99,6 +99,7 @@ public class PickingLiberoViewModel { } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) { //Cerco tramite etichetta un collo in posizione mono ul this.executeEtichettaPosizione(barcodeScanDTO, onComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { //Cerco tramite etichetta ean 128 (che può indicarmi una UL) this.executeEtichettaEan128(barcodeScanDTO, onComplete); @@ -208,11 +209,14 @@ public class PickingLiberoViewModel { if (mtbAartList != null && mtbAartList.size() > 0) { MtbAart articolo = mtbAartList.get(0); MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); + if (posizione != null && posizione.isFlagMonoCollo()) { this.executePosizione(posizione, articolo, onComplete); - } else { + } else if(mDefaultGestione == GestioneEnum.VENDITA){ this.dispatchArt(articolo, ean128Model); onComplete.run(); + } else { + this.sendError(new NoResultFromBarcodeException()); } } else { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index 7607dec1..e78c5c2a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -33,6 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -42,18 +43,18 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding; +import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.picking_resi.ui.PickingResiListAdapter; import it.integry.integrywmsnative.gest.picking_resi.ui.PickingResiListModel; -import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; -import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener { @@ -276,15 +277,15 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag } @Override - public void onNoteAggiuntiveRequired(RunnableArgs onComplete) { - NoteAggiuntiveLUDialog.make(this, onComplete).show(); + public void onInfoAggiuntiveRequired(RunnableArgss onComplete) { + InfoAggiuntiveLUDialog.newInstance(onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog"); } @Override public void onError(Exception ex) { this.closeProgress(); - if(ex instanceof InvalidPesoKGException) { + if (ex instanceof InvalidPesoKGException) { UtilityToast.showToast(ex.getMessage()); } else { UtilityExceptions.defaultException(this, ex, mCurrentProgress); @@ -401,7 +402,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag null, R.string.button_ignore_print, onComplete) - .show(getSupportFragmentManager(), "tag"); + .show(getSupportFragmentManager(), "tag"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index be32fd1e..d52ac0a8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -28,6 +28,7 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -161,11 +162,16 @@ public class PickingResiViewModel { this.sendOnLoadingEnded(); }); } else { - this.sendOnNoteAggiuntiveRequired(noteAggiuntive -> { + this.sendOnInfoAggiuntiveRequired((noteAggiuntive, tCol) -> { if (!UtilityString.isNullOrEmpty(noteAggiuntive)) { this.mCurrentMtbColt.setAnnotazioni(noteAggiuntive); } + if (tCol != null) { + this.mCurrentMtbColt.setCodTcol(tCol.getCodTcol()); + this.mCurrentMtbColt.setMtbTCol(tCol); + + } this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> { @@ -717,8 +723,8 @@ public class PickingResiViewModel { return mPickingList; } - private void sendOnNoteAggiuntiveRequired(RunnableArgs onComplete) { - if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete); + private void sendOnInfoAggiuntiveRequired(RunnableArgss onComplete) { + if (this.mListener != null) this.mListener.onInfoAggiuntiveRequired(onComplete); } private void sendOnLoadingStarted() { @@ -795,7 +801,7 @@ public class PickingResiViewModel { public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { - void onNoteAggiuntiveRequired(RunnableArgs onComplete); + void onInfoAggiuntiveRequired(RunnableArgss onComplete); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java index 0db56157..752a7a33 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java @@ -80,7 +80,7 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { }.getType(); systemRESTConsumer.>processSql(mtbColtSql, mtbColtTypeOfObjectsList, mtbColtList -> { - if(mtbColtList == null) mtbColtList = new ArrayList<>(); + if (mtbColtList == null) mtbColtList = new ArrayList<>(); for (MtbColt mtbColt : mtbColtList) { @@ -108,23 +108,21 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { } - - public void importColloDaProduzione(ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { ProdRientroMerceOrderDetailRESTConsumerService service = RESTBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class); - service.importColloDaProduzione(importColliDaProduzioneRequestDTO).enqueue(new Callback>() { + service.importColloDaProduzione(importColliDaProduzioneRequestDTO).enqueue(new Callback>>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "importColliDaProduzione", mtbColt -> { - onComplete.run(mtbColt); + onComplete.run(mtbColt.get(0)); }, ex -> { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call>> call, Throwable t) { Logger.e(t, "importColliDaProduzione"); onFailed.run(new Exception(t)); } @@ -140,7 +138,7 @@ public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer { analyzeAnswer(response, "deleteColloDaProduzione", mtbColt -> { onComplete.run(); }, ex -> { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java index 7943bae0..fbbf13da 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java @@ -13,10 +13,10 @@ public interface ProdRientroMerceOrderDetailRESTConsumerService { @POST("importColliDaProduzioneJson") - Call> importColliDaProduzione(@Body List importColliDaProduzioneRequestDTO); + Call>> importColliDaProduzione(@Body List importColliDaProduzioneRequestDTO); @POST("importColloDaProduzioneJson") - Call> importColloDaProduzione(@Body ImportColliDaProduzioneRequestDTO importColloDaProduzioneRequestDTO); + Call>> importColloDaProduzione(@Body ImportColliDaProduzioneRequestDTO importColloDaProduzioneRequestDTO); @POST("cancellaColloDaProduzione") Call> deleteColloDaProduzione(@Body MtbColt mtbColtToDelete); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java index fa959fbc..54514c3e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java @@ -79,7 +79,7 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie public void onPropertyChanged(Observable sender, int propertyId) { var mtbColt = mViewModel.getObservableMtbColt().get(); - if(mtbColt != null) { + if (mtbColt != null) { initAdapter(); onMtbColrItemChanged(); @@ -101,6 +101,7 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie List mtbColrs = mViewModel.getObservableMtbColt().get().getMtbColr(); mBinding.textviewArtCounter.setText(String.valueOf(mtbColrs.size())); mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size())); + mViewModel.calcPesi(); } public BottomSheetFragmentLUContentView setListener(Listener listener) { @@ -131,12 +132,12 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie @Override public void onMtbColrEdit(MtbColr mtbColr) { - if(mListener != null) this.mListener.onMtbColrEdit(mtbColr); + if (mListener != null) this.mListener.onMtbColrEdit(mtbColr); } @Override public void onMtbColrDelete(MtbColr mtbColr) { - if(mListener != null) this.mListener.onMtbColrDelete(mtbColr); + if (mListener != null) this.mListener.onMtbColrDelete(mtbColr); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java index 9a99aa4c..9996722b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java @@ -2,16 +2,24 @@ package it.integry.integrywmsnative.view.bottom_sheet__lu_content; import androidx.databinding.ObservableField; +import java.math.BigDecimal; +import java.math.RoundingMode; + +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbTCol; public class BottomSheetFragmentLUContentViewModel { public ObservableField mtbColt = new ObservableField<>(); + public ObservableField pesoKg = new ObservableField<>(); + public ObservableField pesoNettoKg = new ObservableField<>(); private Listener mListener; private MtbColrListener mMtbColrListener; public void closeCurrentLU() { - if(this.mListener != null) this.mListener.onBottomSheetLUClose(); + if (this.mListener != null) this.mListener.onBottomSheetLUClose(); } public BottomSheetFragmentLUContentViewModel setMtbColt(MtbColt mtbColt) { @@ -33,6 +41,26 @@ public class BottomSheetFragmentLUContentViewModel { return this; } + public void calcPesi() { + MtbColt collo = this.mtbColt.get(); + if (collo != null) { + MtbTCol tipoPedana = collo.getMtbTCol(); + BigDecimal taraPedana = tipoPedana != null ? tipoPedana.getTaraKg() : BigDecimal.ZERO; + BigDecimal pesoNetto = BigDecimal.ZERO; + for (MtbColr mtbColr : collo.getMtbColr()) { + MtbAart articolo = mtbColr.getMtbAart(); + if (articolo != null) { + BigDecimal pesoRiga = articolo.isFlagQtaCnfFissaBoolean() ? mtbColr.getNumCnf().multiply(articolo.getPesoKg()) : mtbColr.getQtaCol(); + BigDecimal pesoTara = articolo.getTaraKg().multiply(mtbColr.getNumCnf()); + pesoRiga = pesoRiga.add(pesoTara); + pesoNetto = pesoNetto.add(pesoRiga); + } + } + this.pesoNettoKg.set(pesoNetto.setScale(2, RoundingMode.CEILING).toString()); + this.pesoKg.set(pesoNetto.add(taraPedana).setScale(2, RoundingMode.CEILING).toString()); + } + } + public interface Listener { void onBottomSheetLUClose(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java new file mode 100644 index 00000000..75155e02 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialog.java @@ -0,0 +1,146 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.AdapterView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; + +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; + +import org.jetbrains.annotations.NotNull; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.core.utility.UtilityObservable; +import it.integry.integrywmsnative.databinding.DialogNoteAggiuntiveNuovaUlBinding; +import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloAdapter; +import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloListModel; + +public class InfoAggiuntiveLUDialog extends BaseDialogFragment implements InfoAggiuntiveLUDialogViewModel.Listener { + + @Inject + InfoAggiuntiveLUDialogViewModel mViewModel; + + private DialogNoteAggiuntiveNuovaUlBinding mBindings; + private final RunnableArgss mOnComplete; + + private DialogInputLUProdTipoColloAdapter codTcolArrayAdapter = null; + public ObservableField additionalNotes = new ObservableField<>(); + public ObservableField selectedMtbTcol = new ObservableField<>(); + public ObservableField currentMtbTCol = new ObservableField<>(); + + public static InfoAggiuntiveLUDialog newInstance(@NotNull RunnableArgss onComplete) { + return new InfoAggiuntiveLUDialog(onComplete); + } + + private InfoAggiuntiveLUDialog(@NotNull RunnableArgss onComplete) { + super(); + this.mOnComplete = onComplete; + + } + + + @Override + public void onStart() { + super.onStart(); + this.init(); + + UtilityDialog.setTo90PercentWidth(requireActivity(), this); + this.mViewModel.setListener(this); + this.mViewModel.init(); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_note_aggiuntive_nuova_ul, container, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .infoAggiuntiveLUDialogComponent() + .create() + .inject(this); + + mBindings.setView(this); + mBindings.setViewModel(this.mViewModel); + + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + getDialog().setCanceledOnTouchOutside(false); + getDialog().setCancelable(false); + getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + + return mBindings.getRoot(); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + if (mOnComplete != null) + mOnComplete.run(additionalNotes.get(), mViewModel.getInternalTipoPed()); + super.onDismiss(dialog); + } + + + private void init() { + + + UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> { + if (this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) { + Optional selectedItem = Stream.of(this.codTcolArrayAdapter.getDataset()) + .filter(x -> x.toString().equals(value)) + .findFirst(); + + if (selectedItem.isPresent()) { + currentMtbTCol.set(selectedItem.get()); + this.mViewModel.setInternalTipoPed(selectedItem.get().getOriginalModel()); + } + } + }); + + this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> { + + codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo); + mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); + + }); + + this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView adapterView, View view, int i, long l) { + currentMtbTCol.set(codTcolArrayAdapter.getItem(i)); + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + currentMtbTCol.set(null); + } + }); + + mBindings.buttonConfirm.setOnClickListener(v -> { + dismiss(); + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java new file mode 100644 index 00000000..e5f7969c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import dagger.Subcomponent; + +@Subcomponent +public interface InfoAggiuntiveLUDialogComponent { + + @Subcomponent.Factory + interface Factory { + InfoAggiuntiveLUDialogComponent create(); + } + + void inject(InfoAggiuntiveLUDialog infoAggiuntiveLUDialog); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java new file mode 100644 index 00000000..737399cc --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogModule.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; + +@Module(subcomponents = InfoAggiuntiveLUDialogComponent.class) +public class InfoAggiuntiveLUDialogModule { + + @Provides + InfoAggiuntiveLUDialogViewModel providesInfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) { + return new InfoAggiuntiveLUDialogViewModel(magazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java new file mode 100644 index 00000000..715ee8bb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/info_aggiuntive_lu/InfoAggiuntiveLUDialogViewModel.java @@ -0,0 +1,72 @@ +package it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.MtbTCol; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; + +public class InfoAggiuntiveLUDialogViewModel { + + public final MutableLiveData> tipiCollo = new MutableLiveData<>(); + + private MtbTCol internalTipoPed; + + private Listener mListener; + + private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; + + @Inject + public InfoAggiuntiveLUDialogViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer) { + this.mMagazzinoRESTConsumer = magazzinoRESTConsumer; + } + + public void init() { + new Thread(this::sendOnLoadingStarted).start(); + + mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> { + this.tipiCollo.postValue(tipiCollo); + this.sendOnLoadingEnded(); + }, this::sendError); + } + + public MutableLiveData> getTipiCollo() { + return this.tipiCollo; + } + + + public void setInternalTipoPed(MtbTCol internalTipoPed) { + this.internalTipoPed = internalTipoPed; + } + + + public MtbTCol getInternalTipoPed() { + return internalTipoPed; + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + public void setListener(Listener listener) { + this.mListener = listener; + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java index 9b6c620b..1c72ce25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java @@ -100,7 +100,6 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI } - @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -154,12 +153,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> { - if(this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) { + if (this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) { Optional selectedItem = Stream.of(this.codTcolArrayAdapter.getDataset()) .filter(x -> x.toString().equals(value)) .findFirst(); - if(selectedItem.isPresent()) { + if (selectedItem.isPresent()) { currentMtbTCol.set(selectedItem.get()); this.mViewModel.setInternalTipoPed(selectedItem.get().getOriginalModel()); } @@ -171,12 +170,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.selectedLineaProd, (value) -> { - if(this.lineeProdArrayAdapter != null && this.lineeProdArrayAdapter.getDataset() != null) { + if (this.lineeProdArrayAdapter != null && this.lineeProdArrayAdapter.getDataset() != null) { Optional selectedItem = Stream.of(this.lineeProdArrayAdapter.getDataset()) .filter(x -> x.toString().equals(value)) .findFirst(); - if(selectedItem.isPresent()) { + if (selectedItem.isPresent()) { currentLineaProd.set(selectedItem.get()); this.mViewModel.setInternalLineaProd(selectedItem.get().getOriginalModel()); } @@ -196,7 +195,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.currentPesoNetto, (value) -> { - if(value != null) { + if (value != null) { this.currentPesoNetto.set(value.setScale(0, RoundingMode.HALF_UP)); } if (this.mEnableDataCallback) { @@ -217,7 +216,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI }); UtilityObservable.addPropertyChanged(this.currentPesoLordo, (value) -> { - if(value != null) { + if (value != null) { this.currentPesoLordo.set(value.setScale(0, RoundingMode.HALF_UP)); } if (this.mEnableDataCallback) { @@ -322,12 +321,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo); mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); - if(mDialogInputLUProdDTO.getCodTcol() != null) { + if (mDialogInputLUProdDTO.getCodTcol() != null) { Optional optTCol = Stream.of(tipiCollo) .filter(x -> x.getCodTcol().equalsIgnoreCase(mDialogInputLUProdDTO.getCodTcol())) .findFirst(); - if(optTCol.isPresent()) + if (optTCol.isPresent()) selectedMtbTcol.set(new DialogInputLUProdTipoColloListModel().setOriginalModel(optTCol.get()).toString()); } @@ -341,12 +340,12 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI lineeProdArrayAdapter = new DialogInputLULineeProdAdapter(getActivity(), R.layout.array_adapter_single_item, lineeProd); mBindings.filledExposedDropdownCodJfas.setAdapter(lineeProdArrayAdapter); - if(mDialogInputLUProdDTO.getSuggestedCodJfas() != null) { + if (mDialogInputLUProdDTO.getSuggestedCodJfas() != null) { Optional optFas = Stream.of(lineeProd) .filter(x -> x.getCodJfas().equalsIgnoreCase(mDialogInputLUProdDTO.getSuggestedCodJfas())) .findFirst(); - if(optFas.isPresent()) + if (optFas.isPresent()) selectedLineaProd.set(new DialogInputLULineeProdListModel().setOriginalModel(optFas.get()).toString()); } }); @@ -372,9 +371,6 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI } - - - public void resetValues() { this.mViewModel.blockedNumCnf.set(false); this.mViewModel.blockedPesoLordo.set(false); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 6c9073f1..3dbac6b5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -3,8 +3,6 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import android.content.Context; import android.content.DialogInterface; import android.content.res.ColorStateList; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.text.Html; import android.text.InputType; @@ -12,9 +10,7 @@ import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import android.view.inputmethod.EditorInfo; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -30,6 +26,7 @@ import com.pedromassango.doubleclick.DoubleClickListener; import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; +import java.util.Calendar; import java.util.Date; import javax.inject.Inject; @@ -42,10 +39,10 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -55,9 +52,12 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Inject DialogInputQuantityV2ViewModel mViewModel; - private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; - private RunnableArgss mOnComplete; - private Runnable mOnAbort; + private final DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; + private final RunnableArgss mOnComplete; + private final Runnable mOnAbort; + + public ObservableField currentTextNumCnfToTake = new ObservableField<>(0); + public ObservableField currentTextNumPezziToTake = new ObservableField<>(0); public ObservableField currentPartitaMag = new ObservableField<>(); public ObservableField currentNotes = new ObservableField<>(); @@ -67,9 +67,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public ObservableField currentQtaCnf = new ObservableField<>(); public ObservableField currentQtaTot = new ObservableField<>(); + public ObservableField currentTaraTot = new ObservableField<>(); + public ObservableField currentTaraArticolo = new ObservableField<>(); + public ObservableField currentPesoLordo = new ObservableField<>(); + public ObservableField enabledNumCnf = new ObservableField<>(true); public ObservableField enabledQtaCnf = new ObservableField<>(true); public ObservableField enabledQtaTot = new ObservableField<>(true); + public ObservableField enabledPesoLordo = new ObservableField<>(false); public ObservableField enabledChangePartitaMag = new ObservableField<>(true); public ObservableField enabledNotes = new ObservableField<>(false); @@ -144,7 +149,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } - if (mDialogInputQuantityV2DTO.isSaveOnImeDone()){ + if (mDialogInputQuantityV2DTO.isSaveOnImeDone()) { mBindings.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_DONE) { @@ -206,21 +211,41 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia } private void init() { + UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> { if (this.mEnableDataCallback) { this.mViewModel.setPartitaMag(value); } }); - UtilityObservable.addPropertyChanged(this.currentNotes, (value) -> { + UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> { if (this.mEnableDataCallback) { - this.mViewModel.setNote(value); + MtbAart mtbAart = this.mViewModel.getMtbAart(); + if (value != null && mtbAart != null && mtbAart.getGgScadPartita() != null && mtbAart.getGgScadPartita() > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, mtbAart.getGgScadPartita()); + Date minDataScad = calendar.getTime(); + if (minDataScad.after(value) && value.after(new Date())) { + DialogSimpleMessageView + .makeWarningDialog(new SpannableString("La data selezionata è precedente alla data di scadenza consigliata per l'articolo scelto ( " + mtbAart.getGgScadPartita() + " giorni) . Continuare?"), null, () -> { + this.mViewModel.setDataScad(value); + }, () -> { + this.currentDataScad.set(null); + }) + .show(requireActivity().getSupportFragmentManager(), "tag"); + } else { + this.mViewModel.setDataScad(value); + } + } else { + this.mViewModel.setDataScad(value); + } + } }); - UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> { + UtilityObservable.addPropertyChanged(this.currentNotes, (value) -> { if (this.mEnableDataCallback) { - this.mViewModel.setDataScad(value); + this.mViewModel.setNote(value); } }); @@ -351,6 +376,11 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mViewModel.shouldAskDataScad = this.mDialogInputQuantityV2DTO.isDataScadMandatory(); this.enabledNotes.set(this.mDialogInputQuantityV2DTO.isNotesAllowed()); this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); + this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); + + this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue()); + int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue(); + this.currentTextNumPezziToTake.set(qtaText); } @@ -376,11 +406,17 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.currentPartitaMag.set(this.mViewModel.getPartitaMag()); this.currentNotes.set(this.mViewModel.getNote()); this.currentDataScad.set(this.mViewModel.getDataScad()); - this.currentNumCnf.set(this.mViewModel.getNumCnf()); this.currentQtaCnf.set(this.mViewModel.getQtaCnf()); this.currentQtaTot.set(this.mViewModel.getQtaTot()); + MtbAart articolo = this.mViewModel.getMtbAart(); + if (articolo != null && !articolo.isFlagQtaCnfFissaBoolean()) { + BigDecimal taraTot = this.mViewModel.getNumCnf().multiply(articolo.getTaraKg()); + this.currentTaraTot.set(taraTot); + this.currentPesoLordo.set(this.mViewModel.getQtaTot().add(taraTot)); + } + this.mBindings.executePendingBindings(); this.mEnableDataCallback = true; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index a696b4cc..0e486126 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -63,7 +63,7 @@ public class DialogInputQuantityV2ViewModel { private String internalNote; private Date internalDataScad; - private RunnableArgsWithReturn suggestPartitaMagRunnable; + private RunnableArgsWithReturn suggestPartitaMagRunnable; private boolean canOverflowOrderQuantity; private boolean canPartitaMagBeChanged; @@ -102,7 +102,7 @@ public class DialogInputQuantityV2ViewModel { this.internalQtaTot = totalQtaOrd; } - if (this.shouldAskDataScad == null){ + if (this.shouldAskDataScad == null) { this.shouldAskDataScad = mtbAart.get().isFlagTracciabilitaBoolean() && mtbAart.get().getGgScadPartita() != null && mtbAart.get().getGgScadPartita() > 0; } this.shouldShowDataScad = this.shouldAskDataScad || this.internalDataScad != null; @@ -151,7 +151,7 @@ public class DialogInputQuantityV2ViewModel { return; } - if(canPartitaMagBeChanged) { + if (canPartitaMagBeChanged) { if (!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { this.setPartitaMag(ean128Model.BatchLot); @@ -334,10 +334,11 @@ public class DialogInputQuantityV2ViewModel { this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); break; - case UPDATE_QTA_TOT:if (!this.blockedQtaTot.get() && this.internalQtaCnf != null) - this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); - else if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalQtaTot != null) - this.internalQtaCnf = UtilityBigDecimal.divide(internalQtaTot, newValue); + case UPDATE_QTA_TOT: + if (!this.blockedQtaTot.get() && this.internalQtaCnf != null) + this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf); + else if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalQtaTot != null) + this.internalQtaCnf = UtilityBigDecimal.divide(internalQtaTot, newValue); break; } @@ -403,13 +404,13 @@ public class DialogInputQuantityV2ViewModel { return false; } else if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { - if (suggestPartitaMagRunnable != null){ + if (suggestPartitaMagRunnable != null) { internalPartitaMag = suggestPartitaMagRunnable.run(this); - if (internalPartitaMag == null){ + if (internalPartitaMag == null) { this.mListener.onError(new InvalidBatchLotException()); return false; } - }else{ + } else { this.mListener.onError(new InvalidBatchLotException()); return false; } @@ -480,11 +481,16 @@ public class DialogInputQuantityV2ViewModel { return this; } - public DialogInputQuantityV2ViewModel setSuggestPartitaMagRunnable(RunnableArgsWithReturn suggestPartitaMagRunnable) { + public DialogInputQuantityV2ViewModel setSuggestPartitaMagRunnable(RunnableArgsWithReturn suggestPartitaMagRunnable) { this.suggestPartitaMagRunnable = suggestPartitaMagRunnable; return this; } + + public MtbAart getMtbAart() { + return this.mtbAart.get(); + } + public interface Listener { void onDataChanged(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java deleted file mode 100644 index 01f390d5..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/note_aggiuntive_lu/NoteAggiuntiveLUDialog.java +++ /dev/null @@ -1,47 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu; - -import android.app.Dialog; -import android.content.Context; - -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; - -import androidx.databinding.DataBindingUtil; -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDialog; -import it.integry.integrywmsnative.databinding.DialogNoteAggiuntiveNuovaUlBinding; - -public class NoteAggiuntiveLUDialog { - - private Dialog mDialog; - - public static Dialog make(Context context, final RunnableArgs onComplete) { - return new NoteAggiuntiveLUDialog(context, onComplete).mDialog; - } - - private NoteAggiuntiveLUDialog(Context context, final RunnableArgs onComplete){ - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - DialogNoteAggiuntiveNuovaUlBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_note_aggiuntive_nuova_ul, null, false); - - - mDialog = new Dialog(context); - mDialog.setContentView(bindings.getRoot()); - - mDialog.setCanceledOnTouchOutside(false); - mDialog.setCancelable(false); - mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - UtilityDialog.setTo90PercentWidth(context, mDialog); - - - bindings.buttonConfirm.setOnClickListener(v -> { - mDialog.dismiss(); - if(onComplete != null) onComplete.run(bindings.additionalNotesText.getText().toString()); - }); - - } - -} diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index a5bfb9f0..688eaf0e 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -13,6 +13,10 @@ + + + + @@ -27,10 +31,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" + android:background="@android:color/white" android:orientation="vertical" app:cardCornerRadius="12dp" - app:cardElevation="0dp" - android:background="@android:color/white"> + app:cardElevation="0dp"> + + + + + + + + + + + + + + + + + + + + + + @@ -536,7 +628,89 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" - > + android:visibility="@{viewmodel.mtbAart.isFlagQtaCnfFissaBoolean() ? View.GONE : View.VISIBLE}" + android:weightSum="3"> + + + + + + + + + + + + + + + + + + + + + + + + android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"> + + + + + @@ -262,7 +267,8 @@ + android:layout_height="wrap_content" + android:visibility="@{UtilityString.isNullOrEmpty(viewModel.mtbColt.posizione) ? View.GONE : View.VISIBLE}"> + android:layout_height="wrap_content" + android:visibility="@{UtilityString.isNullOrEmpty(viewModel.mtbColt.ragSocCliente) ? View.GONE : View.VISIBLE}" + + > + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 3846c6ce..6f0683a7 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -2,8 +2,7 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -15,6 +14,10 @@ + + + + @@ -70,16 +73,17 @@ android:text="@{viewmodel.mtbAart.codMart}" android:textColor="@color/colorPrimary" tools:text="COD MART (Partita mag)" /> + @@ -191,6 +195,95 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -514,9 +607,9 @@ android:layout_height="wrap_content" android:hint="@string/qty_x_pck" android:imeOptions="actionDone" - android:selectAllOnFocus="true" - android:nextFocusForward="@+id/input_qta_tot_text" android:inputType="numberDecimal" + android:nextFocusForward="@+id/input_qta_tot_text" + android:selectAllOnFocus="true" app:binding="@{view.currentQtaCnf}" /> @@ -553,7 +646,89 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" - > + android:visibility="@{viewmodel.mtbAart.isFlagQtaCnfFissaBoolean() ? View.GONE : View.VISIBLE}" + android:weightSum="3"> + + + + + + + + + + + + + + + + + + + + + + + + android:visibility="@{view.enabledNotes ? View.VISIBLE : View.GONE }"> + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/input_cod_tcol"> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ea39924b..a8d9bb89 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -99,8 +99,8 @@ pezzi - collo - colli + confezione + confezioni Unt mis col @@ -117,7 +117,6 @@ Pezzo - deve essere tra 3 e 30 caratteri inserire un username valido inserire un codice azienda valido @@ -137,6 +136,7 @@ Qtà Peso netto (KG) Peso lordo (KG) + Peso Collo (KG) Tipo pedana Totale ordinato @@ -158,6 +158,7 @@ Peso totale Tara pedana Tara collo + Tara articolo Salvataggio Salvataggio completato diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4959bd0d..f896ab54 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -46,6 +46,9 @@ #BBDEFB #64B5F6 + #42A5F5 + #2196F3 + #1E88E5 #1976D2 #1565C0 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cef9b618..a48cef4c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -134,6 +134,7 @@ Qty Net weight (KG) Gross weight (KG) + LU weight (KG) LU type Total ordered @@ -156,6 +157,7 @@ Qty x pck Tot qty Tare LU + Tare product Tare pckg Saving diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 68c46eb4..82f65226 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -32,7 +32,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/build.gradle b/build.gradle index 94b01d9c..95264602 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext { - kotlin_version = '1.5.21' + kotlin_version = '1.6.10' } repositories { @@ -10,13 +10,14 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.0.4' + classpath 'com.android.tools.build:gradle:7.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.3.5' - classpath 'com.google.firebase:perf-plugin:1.3.5' + classpath 'com.google.gms:google-services:4.3.10' + + classpath 'com.google.firebase:perf-plugin:1.4.1' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2' + classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/dynamic__base/build.gradle b/dynamic__base/build.gradle index 2edefc68..e3f751bf 100644 --- a/dynamic__base/build.gradle +++ b/dynamic__base/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 diff --git a/dynamic_vgalimenti/build.gradle b/dynamic_vgalimenti/build.gradle index db6c8f05..74caf549 100644 --- a/dynamic_vgalimenti/build.gradle +++ b/dynamic_vgalimenti/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 } @@ -18,5 +18,5 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(':app') - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index abc62726..78eb53b7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index d259f2d0..48543a16 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -32,7 +32,7 @@ dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation project(":honeywellsdk") - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index cfae7fc2..57f18f1d 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -31,7 +31,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index aacf18eb..51b0f771 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -29,7 +29,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { diff --git a/pointmobilescannerlibrary/src/main/AndroidManifest.xml b/pointmobilescannerlibrary/src/main/AndroidManifest.xml index 6e9286be..e20b179e 100644 --- a/pointmobilescannerlibrary/src/main/AndroidManifest.xml +++ b/pointmobilescannerlibrary/src/main/AndroidManifest.xml @@ -14,7 +14,8 @@ android:name="it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader$ScanResultReceiver" android:enabled="true" android:permission="it.integry.pointmobilescannerlibrary.permission.SCANNER_RESULT_RECEIVER" - android:priority="0" > + android:priority="0" + android:exported="true"> diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index 828bde64..c77b13fc 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 + compileSdkVersion 31 defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -31,7 +31,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {