diff --git a/app/build.gradle b/app/build.gradle index 28adf0b0..c2cd13e9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,12 +24,12 @@ android { } } - compileSdkVersion 29 + compileSdkVersion 30 defaultConfig { applicationId "it.integry.integrywmsnative" minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode appVersionCode versionName appVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -104,15 +104,15 @@ dependencies { implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'androidx.recyclerview:recyclerview:1.2.0' implementation 'androidx.preference:preference-ktx:1.1.1' - implementation 'com.squareup.okhttp3:okhttp:4.9.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.1' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0' + implementation 'com.annimon:stream:1.2.2' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' - implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.0' + implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1' implementation 'org.apache.commons:commons-text:1.9' //MVVM @@ -127,16 +127,16 @@ dependencies { implementation 'com.github.clans:fab:1.6.4' //CUSTOM VIEWS implementation 'com.github.NaimishTrivedi:FBToast:1.0' - implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2' + implementation 'com.github.cachapa:ExpandableLayout:2.9.2' implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar' - implementation 'com.fede987:status-bar-alert:1.0.1' - implementation 'com.fxn769:stash:1.2' - testImplementation 'junit:junit:4.13.1' + implementation 'com.github.fede87:StatusBarAlert:1.0.1' + implementation 'com.github.akshay2211:Stash:master' + testImplementation 'junit:junit:4.13.2' implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3' implementation 'com.github.pedromassango:doubleClick:3.0' //SQLite ROOM - def room_version = "2.2.6" + def room_version = "2.3.0" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" @@ -150,11 +150,12 @@ dependencies { implementation project(':barcode_base_android_library') implementation project(':honeywellscannerlibrary') implementation project(':keyobardemulatorscannerlibrary') - implementation project(':barcode_kaiteki') - androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - androidTestImplementation 'org.testng:testng:7.3.0' + androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1' + androidTestImplementation 'org.testng:testng:7.4.0' } + repositories { mavenCentral() google() + maven { url 'https://jitpack.io' } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1439c8a7..90a5623f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ + getAll(); - @Query("SELECT *, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id") + @Query("SELECT griglie.*, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id") GrigliaWrapper findByCodAlis(String codAlis); @Insert diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java index 093507c0..b056d387 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java @@ -11,6 +11,7 @@ import androidx.room.PrimaryKey; @Index(value = "cod_alis", unique = true) } ) + public class Griglia { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "griglia_id") diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java index cdc2bee5..4bb3dc50 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java @@ -40,12 +40,14 @@ public class BaseActivity extends AppCompatActivity { protected void openProgress() { + BarcodeManager.disable(); if (this.mCurrentProgress == null) { this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); } } protected void closeProgress() { + BarcodeManager.enable(); if (mCurrentProgress != null) { mCurrentProgress.dismiss(); mCurrentProgress = null; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java index cbbeea5b..53e7ceb2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java @@ -23,7 +23,7 @@ public class UtilityString { } public static String empty2null(String stringToCheck) { - return (stringToCheck != null && stringToCheck.trim().length() == 0 || stringToCheck == null) ? null : stringToCheck.trim(); + return (stringToCheck == null || stringToCheck.trim().length() == 0) ? null : stringToCheck.trim(); } public static String capitalizeWords(String capString){ diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java index f4a5ab67..5219400b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java @@ -7,7 +7,6 @@ import android.text.SpannableString; import androidx.core.content.ContextCompat; import androidx.databinding.ObservableField; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import it.integry.integrywmsnative.R; @@ -24,6 +23,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import static android.app.Activity.RESULT_OK; @@ -66,7 +66,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked mContext.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(mContext)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); mContext.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java index 274129ea..6f4fc2ca 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java @@ -2,22 +2,22 @@ package it.integry.integrywmsnative.gest.lista_bancali.viewmodel; import android.app.Dialog; -import androidx.databinding.ObservableArrayList; import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; import it.integry.integrywmsnative.gest.lista_bancali.core.MainListListaColliAdapter; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; public class ListaBancaliViewModel implements IRecyclerItemClicked { @@ -42,7 +42,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked { mContext.bindings.listaColliMainList.setHasFixedSize(true); mContext.bindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(mContext)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); mContext.bindings.listaColliMainList.addItemDecoration(itemDecorator); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index ee558fd1..7e319cd8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -13,7 +13,6 @@ import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableList; import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import com.tfb.fbtoast.FBToast; @@ -52,6 +51,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -168,7 +168,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme mBindings.pickingLiberoMainList.setHasFixedSize(true); mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); mBindings.pickingLiberoMainList.addItemDecoration(itemDecorator); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index 4da7c280..a8f24976 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -9,7 +9,6 @@ import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.ArrayList; @@ -40,6 +39,7 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAc import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -114,7 +114,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); mBinding.articoliOrdineList.addItemDecoration(itemDecorator); mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::selectAction); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index 065c665c..8246e7cf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -15,7 +15,6 @@ import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.ArrayList; @@ -46,6 +45,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPv import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.DialogAskAction; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -169,7 +169,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator); mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, this::selectAction); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 0d4e5772..edaaf44d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -17,7 +17,6 @@ import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableField; import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import com.google.android.material.textfield.TextInputLayout; @@ -57,13 +56,14 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; -import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; 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.scan_or_create_lu.DialogScanOrCreateLUView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; @@ -153,7 +153,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme mBinding.rettificaGiacenzeMainList.setHasFixedSize(true); mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index a613a931..c5225a75 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; @@ -68,7 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPosi import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -import it.integry.integrywmsnative.view.dialogs.camera_barcode_reader.DialogCameraBarcodeReader; +import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @@ -642,13 +643,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }, BarcodeManager::enable).show(); } - public void startCameraBarcode() { - DialogCameraBarcodeReader.newInstance(this, data -> { - this.onScanSuccessful.run(data); - }) - .show(getSupportFragmentManager(), "camera_barcode"); - } - public void removeListFilter() { this.mViewmodel.resetMatchedRows(); } @@ -724,7 +718,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); DialogSimpleMessageView .makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null) - .show(getSupportFragmentManager(), "tag");; + .show(getSupportFragmentManager(), "tag"); } @Override @@ -765,7 +759,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo () -> onComplete.run(true), () -> onComplete.run(false) ) - .show(getSupportFragmentManager(), "tag"); + .show(getSupportFragmentManager(), "tag"); } @Override @@ -859,6 +853,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }).show(); } + @Override + public void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete) { + DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete) + .show(getSupportFragmentManager(), "tag"); + } + @Override public void onRowSaved() { FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index cf516e7e..4357e998 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -395,6 +395,11 @@ public class SpedizioneViewModel { if (this.mListener != null) mListener.onLUPositionChangeRequest(onComplete); } + private void sendBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete) { + if (this.mListener != null) + mListener.onBatchLotSelectionRequest(availableBatchLots, onComplete); + } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { //Se non c'è una UL aperta @@ -758,6 +763,69 @@ public class SpedizioneViewModel { public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, boolean canPartitaMagBeChanged) { + //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta + + if (pickingObjectDTO.getTempPickData() != null && + pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && + pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null) { + + + List availableBatchLot = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr()) + .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && ( + x.getPartitaMag() == null || UtilityString.isNullOrEmpty(x.getMtbPartitaMag().getDataScadS()) || UtilityDate.getDateInstance().before(x.getMtbPartitaMag().getDataScadD()) + )) + .distinctBy(MtbColr::getPartitaMag) + .map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag()) + .toList(); + + if(availableBatchLot.size() > 1) { + this.sendOnLoadingStarted(); + + List tmp = new ArrayList<>(); + + if(Stream.of(availableBatchLot).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) { + tmp.addAll( + Stream.of(availableBatchLot) + .filter(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()) && UtilityDate.getDateInstance().before(x.getDataScadD())) + .sortBy(MtbPartitaMag::getDataScadD) + .toList()); + } + + if(Stream.of(availableBatchLot).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) { + tmp.addAll( + Stream.of(availableBatchLot) + .filter(x -> UtilityString.isNullOrEmpty(x.getDataScadS())) + .sortBy(MtbPartitaMag::getPartitaMag) + .toList()); + } + + this.sendBatchLotSelectionRequest(tmp, selected -> { + this.sendOnLoadingEnded(); + + if(selected != null) { + MtbColr scannedMtbColr = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr()) + .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && + ((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag())) || + (x.getPartitaMag() == null && selected.getPartitaMag() == null))) + .toList() + .get(0); + + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, scannedMtbColr, canPartitaMagBeChanged); + } + }); + + } else { + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, null, canPartitaMagBeChanged); + } + + } else { + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, null, canPartitaMagBeChanged); + } + + + } + + private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd(); @@ -791,21 +859,13 @@ public class SpedizioneViewModel { Date dataScad = null; - //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta - MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData() != null && - pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && - pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null && - pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ? - pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null; - - if (refMtbColt == null && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() == 1) { refMtbColt = pickingObjectDTO.getMtbColts().get(0); } MtbColr refMtbColr = null; - if (refMtbColt != null && refMtbColt.getMtbColr().size() > 0) { + if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) { Optional optionalMtbColr = Stream.of(refMtbColt.getMtbColr()) .filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) && UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) && @@ -933,7 +993,6 @@ public class SpedizioneViewModel { }); } - public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model, MtbColr mtbColrToUse) { PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() @@ -1460,7 +1519,7 @@ public class SpedizioneViewModel { MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone(); - if(mCurrentMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) { + if (mCurrentMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) { mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE); } else { mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT); @@ -1540,7 +1599,7 @@ public class SpedizioneViewModel { } else { distribuisciLU(mtbColts -> { - if(this.mIsNewLU) { + if (this.mIsNewLU) { this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { if (shouldChangePosition) { @@ -1702,7 +1761,7 @@ public class SpedizioneViewModel { this.mCurrentMtbColt = null; - if(mEnableQuantityReset) { + if (mEnableQuantityReset) { for (PickingObjectDTO pickingObjectDTO : mPickingList.getValue()) { List withdrawMtbColrList = pickingObjectDTO.getWithdrawMtbColrs(); @@ -1864,6 +1923,8 @@ public class SpedizioneViewModel { void onLUPositionChangeRequest(RunnableArgss onComplete); + + void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/SimpleDividerItemDecoration.java b/app/src/main/java/it/integry/integrywmsnative/ui/SimpleDividerItemDecoration.java new file mode 100644 index 00000000..40d664b5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/ui/SimpleDividerItemDecoration.java @@ -0,0 +1,165 @@ +package it.integry.integrywmsnative.ui; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.util.Log; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +public class SimpleDividerItemDecoration extends RecyclerView.ItemDecoration { + public static final int HORIZONTAL = LinearLayout.HORIZONTAL; + public static final int VERTICAL = LinearLayout.VERTICAL; + + private static final String TAG = "DividerItem"; + private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; + + private Drawable mDivider; + + /** + * Current orientation. Either {@link #HORIZONTAL} or {@link #VERTICAL}. + */ + private int mOrientation; + + private final Rect mBounds = new Rect(); + + /** + * Creates a divider {@link RecyclerView.ItemDecoration} that can be used with a + * {@link LinearLayoutManager}. + * + * @param context Current context, it will be used to access resources. + * @param orientation Divider orientation. Should be {@link #HORIZONTAL} or {@link #VERTICAL}. + */ + public SimpleDividerItemDecoration(Context context, int orientation) { + final TypedArray a = context.obtainStyledAttributes(ATTRS); + mDivider = a.getDrawable(0); + if (mDivider == null) { + Log.w(TAG, "@android:attr/listDivider was not set in the theme used for this " + + "DividerItemDecoration. Please set that attribute all call setDrawable()"); + } + a.recycle(); + setOrientation(orientation); + } + + /** + * Sets the orientation for this divider. This should be called if + * {@link RecyclerView.LayoutManager} changes orientation. + * + * @param orientation {@link #HORIZONTAL} or {@link #VERTICAL} + */ + public void setOrientation(int orientation) { + if (orientation != HORIZONTAL && orientation != VERTICAL) { + throw new IllegalArgumentException( + "Invalid orientation. It should be either HORIZONTAL or VERTICAL"); + } + mOrientation = orientation; + } + + /** + * Sets the {@link Drawable} for this divider. + * + * @param drawable Drawable that should be used as a divider. + */ + public void setDrawable(@NonNull Drawable drawable) { + if (drawable == null) { + throw new IllegalArgumentException("Drawable cannot be null."); + } + mDivider = drawable; + } + + /** + * @return the {@link Drawable} for this divider. + */ + @Nullable + public Drawable getDrawable() { + return mDivider; + } + + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + if (parent.getLayoutManager() == null || mDivider == null) { + return; + } + if (mOrientation == VERTICAL) { + drawVertical(c, parent); + } else { + drawHorizontal(c, parent); + } + } + + private void drawVertical(Canvas canvas, RecyclerView parent) { + canvas.save(); + final int left; + final int right; + //noinspection AndroidLintNewApi - NewApi lint fails to handle overrides. + if (parent.getClipToPadding()) { + left = parent.getPaddingLeft(); + right = parent.getWidth() - parent.getPaddingRight(); + canvas.clipRect(left, parent.getPaddingTop(), right, + parent.getHeight() - parent.getPaddingBottom()); + } else { + left = 0; + right = parent.getWidth(); + } + + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount - 1; i++) { + final View child = parent.getChildAt(i); + parent.getDecoratedBoundsWithMargins(child, mBounds); + final int bottom = mBounds.bottom + Math.round(child.getTranslationY()); + final int top = bottom - mDivider.getIntrinsicHeight(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(canvas); + } + canvas.restore(); + } + + private void drawHorizontal(Canvas canvas, RecyclerView parent) { + canvas.save(); + final int top; + final int bottom; + //noinspection AndroidLintNewApi - NewApi lint fails to handle overrides. + if (parent.getClipToPadding()) { + top = parent.getPaddingTop(); + bottom = parent.getHeight() - parent.getPaddingBottom(); + canvas.clipRect(parent.getPaddingLeft(), top, + parent.getWidth() - parent.getPaddingRight(), bottom); + } else { + top = 0; + bottom = parent.getHeight(); + } + + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount - 1; i++) { + final View child = parent.getChildAt(i); + parent.getLayoutManager().getDecoratedBoundsWithMargins(child, mBounds); + final int right = mBounds.right + Math.round(child.getTranslationX()); + final int left = right - mDivider.getIntrinsicWidth(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(canvas); + } + canvas.restore(); + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, + RecyclerView.State state) { + if (mDivider == null) { + outRect.set(0, 0, 0, 0); + return; + } + if (mOrientation == VERTICAL) { + outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); + } else { + outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java index e110c041..78d73165 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java @@ -5,7 +5,6 @@ import android.view.View; import androidx.core.content.ContextCompat; import androidx.databinding.ViewDataBinding; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; @@ -14,9 +13,8 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; -import it.integry.integrywmsnative.core.utility.UtilityDialog; -import it.integry.integrywmsnative.databinding.DialogBasketLuBinding; import it.integry.integrywmsnative.databinding.DialogBasketLuPage1Binding; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.DialogBasketLU_BaseViewModel; import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel; @@ -82,7 +80,7 @@ public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel mBinding.dialogBasketLuMainList.setHasFixedSize(true); mBinding.dialogBasketLuMainList.setLayoutManager(new LinearLayoutManager(mContext)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); mBinding.dialogBasketLuMainList.addItemDecoration(itemDecorator); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java index ccc4653e..1094644f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java @@ -5,7 +5,6 @@ import android.view.View; import androidx.core.content.ContextCompat; import androidx.databinding.ViewDataBinding; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; @@ -15,6 +14,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.databinding.DialogBasketLuPage2Binding; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.DialogBasketLU_BaseViewModel; import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel; @@ -79,7 +79,7 @@ public class DialogBasketLU_Page2_ViewModel extends DialogBasketLU_BaseViewModel mBinding.dialogBasketLuMtbColrList.setHasFixedSize(true); mBinding.dialogBasketLuMtbColrList.setLayoutManager(new LinearLayoutManager(mContext)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); mBinding.dialogBasketLuMtbColrList.addItemDecoration(itemDecorator); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java deleted file mode 100644 index 785fe3e2..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java +++ /dev/null @@ -1,146 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.camera_barcode_reader; - -import android.content.Context; -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 androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.DialogFragment; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.Result; -import com.kroegerama.kaiteki.bcode.BarcodeResultListener; -import com.orhanobut.logger.Logger; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.barcode_base_android_library.model.BarcodeScanDTO; -import it.integry.barcode_base_android_library.model.BarcodeType; -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDialog; -import it.integry.integrywmsnative.databinding.DialogCameraBarcodeReaderBinding; - -public class DialogCameraBarcodeReader extends DialogFragment implements BarcodeResultListener { - - private Context mContext; - - private DialogCameraBarcodeReaderBinding mBindings; - private final RunnableArgs onComplete; - - public static DialogCameraBarcodeReader newInstance(@NonNull Context context, @NonNull final RunnableArgs onComplete) { - return new DialogCameraBarcodeReader(context, onComplete); - } - - private DialogCameraBarcodeReader(@NonNull Context context, @NonNull final RunnableArgs onComplete){ - this.mContext = context; - this.onComplete = onComplete; - } - - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_camera_barcode_reader, container, false); - - - getDialog().setCanceledOnTouchOutside(false); - getDialog().setCancelable(false); - getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - this.initBarcodeView(); - - mBindings.buttonConfirm.setOnClickListener(v -> { - dismiss(); - }); - - return mBindings.getRoot(); - } - - @Override - public void onStart() { - super.onStart(); - - UtilityDialog.setTo95PercentWidth(mContext, this); - } - - @Override - public void onStop() { - super.onStop(); - this.mBindings.bcode.unbind(); - } - - private void initBarcodeView() { - List availableBarcodeFormats = new ArrayList<>(); - availableBarcodeFormats.add(BarcodeFormat.QR_CODE); - availableBarcodeFormats.add(BarcodeFormat.CODE_128); - availableBarcodeFormats.add(BarcodeFormat.UPC_E); - availableBarcodeFormats.add(BarcodeFormat.CODABAR); - availableBarcodeFormats.add(BarcodeFormat.EAN_8); - availableBarcodeFormats.add(BarcodeFormat.EAN_13); - availableBarcodeFormats.add(BarcodeFormat.ITF); - availableBarcodeFormats.add(BarcodeFormat.UPC_A); - - mBindings.bcode.setFormats(availableBarcodeFormats); - mBindings.bcode.setBarcodeInverted(false); - mBindings.bcode.setBarcodeResultListener(this); - mBindings.bcode.bindToLifecycle(this); - } - - @Override - public boolean onBarcodeResult(@NotNull Result result) { - - BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO() - .setByteValue(result.getRawBytes()) - .setStringValue(result.getText()); - - BarcodeType type = null; - - switch (result.getBarcodeFormat()) { - case CODE_128: - type = BarcodeType.CODE128; - break; - case CODE_39: - type = BarcodeType.CODE39; - break; - - case EAN_13: - type = BarcodeType.EAN13; - break; - case EAN_8: - type = BarcodeType.EAN8; - break; - - case UPC_A: - type = BarcodeType.UPCA; - break; - case UPC_E: - type = BarcodeType.UPCE; - break; - default: - Logger.e("Barcode type " + result.getBarcodeFormat().toString() + " was not mapped in DialogCameraBarcodeReader.java"); - type = null; - break; - } - - barcodeScanDTO.setType(type); - - this.dismiss(); - this.onComplete.run(barcodeScanDTO); - return true; - } - - @Override - public void onBarcodeScanCancelled() { - - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java index b1d82cea..493b36a3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java @@ -2,15 +2,14 @@ package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts; import android.app.Dialog; import android.content.Context; -import androidx.databinding.DataBindingUtil; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; - import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; +import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.LinearLayoutManager; + import java.util.List; import it.integry.integrywmsnative.R; @@ -19,6 +18,7 @@ import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.utility.UtilityDialog; import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; public class DialogChooseArtFromListaArts { @@ -61,7 +61,7 @@ public class DialogChooseArtFromListaArts { binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider)); binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java index b9872432..22480a72 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java @@ -8,7 +8,6 @@ import android.view.LayoutInflater; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; @@ -19,6 +18,7 @@ import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.utility.UtilityDialog; import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; public class DialogChooseArtFromListaMtbColrView { @@ -61,7 +61,7 @@ public class DialogChooseArtFromListaMtbColrView { binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext)); - DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL); + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL); itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider)); binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotAdapter.java new file mode 100644 index 00000000..70f90566 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotAdapter.java @@ -0,0 +1,74 @@ +package it.integry.integrywmsnative.view.dialogs.choose_batch_lot; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; +import it.integry.integrywmsnative.databinding.DialogChooseBatchLotItemModelBinding; + +public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter { + + protected Context mContext; + + private final List mDataset; + private final IRecyclerItemClicked mOnItemClickListener; + + + public static class ViewHolder extends RecyclerView.ViewHolder { + protected DialogChooseBatchLotItemModelBinding mViewDataBinding; + + + public ViewHolder(DialogChooseBatchLotItemModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(MtbPartitaMag mtbPartitaMag) { + mViewDataBinding.setMtbPartitaMag(mtbPartitaMag); + mViewDataBinding.executePendingBindings(); + } + } + + public DialogChooseBatchLotAdapter(List myDataset, IRecyclerItemClicked onItemClickListener) { + mDataset = myDataset; + mOnItemClickListener = onItemClickListener; + } + + @Override + public DialogChooseBatchLotAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + DialogChooseBatchLotItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_batch_lot_item_model, parent, false); + return new DialogChooseBatchLotAdapter.ViewHolder(viewDataBinding); + } + + @Override + public void onBindViewHolder(DialogChooseBatchLotAdapter.ViewHolder holder, int position) { + MtbPartitaMag item = mDataset.get(position); + holder.bind(item); + + holder.mViewDataBinding.getRoot().setOnClickListener(x -> { + if(mOnItemClickListener != null) { + mOnItemClickListener.onItemClick(item, position); + } + }); + } + + @Override + public void onViewRecycled(DialogChooseBatchLotAdapter.ViewHolder holder) { + super.onViewRecycled(holder); + } + + @Override + public int getItemCount() { + return mDataset.size(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotComponent.java new file mode 100644 index 00000000..8a055734 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.choose_batch_lot; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogChooseBatchLotComponent { + + @Subcomponent.Factory + interface Factory { + DialogChooseBatchLotComponent create(); + } + + void inject(DialogChooseBatchLotView dialogChooseBatchLotView); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotModule.java new file mode 100644 index 00000000..3e118b75 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.choose_batch_lot; + +import dagger.Module; +import dagger.Provides; + +@Module +public class DialogChooseBatchLotModule { + + @Provides + DialogChooseBatchLotViewModel providesDialogChooseBatchLotViewModel() { + return new DialogChooseBatchLotViewModel(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java new file mode 100644 index 00000000..2a7d8fb1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java @@ -0,0 +1,111 @@ +package it.integry.integrywmsnative.view.dialogs.choose_batch_lot; + +import android.content.Context; +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 androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.LinearLayoutManager; + +import java.util.List; + +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.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; +import it.integry.integrywmsnative.databinding.DialogChooseBatchLotBinding; +import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; + +public class DialogChooseBatchLotView extends BaseDialogFragment { + + @Inject + DialogChooseBatchLotViewModel mViewModel; + + private List mAvailableBatchLot; + private RunnableArgs mOnItemSelected; + + private Context mContext; + private DialogChooseBatchLotBinding mBindings; + + private DialogChooseBatchLotAdapter mAdapter; + + private MtbPartitaMag mSelectedItem; + + public static DialogChooseBatchLotView newInstance(List availableBatchLot, RunnableArgs onItemSelected) { + return new DialogChooseBatchLotView(availableBatchLot, onItemSelected); + } + + private DialogChooseBatchLotView(List availableBatchLot, RunnableArgs onItemSelected) { + super(); + + this.mAvailableBatchLot = availableBatchLot; + this.mOnItemSelected = onItemSelected; + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + this.mContext = getActivity(); + + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_batch_lot, container, false); + + MainApplication.appComponent + .dialogChooseBatchLotComponent() + .create() + .inject(this); + + mBindings.setView(this); + mBindings.setViewmodel(this.mViewModel); + + getDialog().setCanceledOnTouchOutside(false); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + return mBindings.getRoot(); + } + + @Override + public void onStart() { + super.onStart(); + + this.initRecyclerView(); + } + + @Override + public void dismiss() { + super.dismiss(); + + if(mOnItemSelected != null) { + this.mOnItemSelected.run(mSelectedItem); + } + } + + private void initRecyclerView() { + mBindings.mainList.setNestedScrollingEnabled(false); + mBindings.mainList.setHasFixedSize(true); + mBindings.mainList.setLayoutManager(new LinearLayoutManager(mContext)); + + SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); + mBindings.mainList.addItemDecoration(itemDecorator); + + mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLot, onItemClicked); + mBindings.mainList.setAdapter(mAdapter); + } + + private final IRecyclerItemClicked onItemClicked = (item, position) -> { + mSelectedItem = item; + dismiss(); + }; + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotViewModel.java new file mode 100644 index 00000000..9889a0c3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotViewModel.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.view.dialogs.choose_batch_lot; + +public class DialogChooseBatchLotViewModel { +} diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml index 3eefc481..ada4900c 100644 --- a/app/src/main/res/layout/activity_spedizione.xml +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -79,23 +79,11 @@ android:tint="@color/colorPrimaryGray" android:visibility="@{BuildConfig.DEBUG ? View.VISIBLE : View.GONE}" /> - - - - - + - - + diff --git a/app/src/main/res/layout/dialog_camera_barcode_reader.xml b/app/src/main/res/layout/dialog_camera_barcode_reader.xml deleted file mode 100644 index 19c3372f..00000000 --- a/app/src/main/res/layout/dialog_camera_barcode_reader.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml b/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml index 7f739823..811e9ff8 100644 --- a/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml +++ b/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml @@ -12,7 +12,7 @@ type="it.integry.integrywmsnative.core.model.MtbAart"/> - - - + - + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_batch_lot.xml b/app/src/main/res/layout/dialog_choose_batch_lot.xml new file mode 100644 index 00000000..0936ccfa --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_batch_lot.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml b/app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml new file mode 100644 index 00000000..361ceb0c --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 36aed500..c3f6e08f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -275,6 +275,7 @@ Lav. terzi / Trasf. interni Produzione Linea di produzione + Seleziona un lotto Movimentazione interna Accettazione da ordine Picking da ordine diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 781a9637..fe0256d6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -280,6 +280,7 @@ Manufacture / Internal movement Production Production line + Select a batch lot Internal handling Production picking Manufacture picking diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 36e6a5ac..6de1224c 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.2.0' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/barcode_kaiteki/build.gradle b/barcode_kaiteki/build.gradle index 36fe6c65..ebc5e92b 100644 --- a/barcode_kaiteki/build.gradle +++ b/barcode_kaiteki/build.gradle @@ -1,13 +1,12 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 29 + compileSdkVersion 30 defaultConfig { minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode 1 versionName "1.1.1" } diff --git a/build.gradle b/build.gradle index 2d07a2ab..0a12c5ee 100644 --- a/build.gradle +++ b/build.gradle @@ -2,12 +2,12 @@ buildscript { ext { - kotlin_version = '1.4.31' + kotlin_version = '1.5.0' } repositories { - jcenter() google() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:4.2.0' @@ -16,7 +16,7 @@ buildscript { classpath 'com.google.firebase:perf-plugin:1.3.5' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.1' + classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -25,9 +25,9 @@ buildscript { allprojects { repositories { - jcenter() google() maven { url 'https://jitpack.io' } + mavenCentral() } } diff --git a/dynamic_gramm/build.gradle b/dynamic_gramm/build.gradle index 88d9fdcc..c0e13cb7 100644 --- a/dynamic_gramm/build.gradle +++ b/dynamic_gramm/build.gradle @@ -21,8 +21,8 @@ android { dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation project(":app") - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' - androidTestImplementation 'androidx.annotation:annotation:1.1.0' + androidTestImplementation 'androidx.annotation:annotation:1.2.0' } \ No newline at end of file diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index 4df057fa..2ed73626 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation 'androidx.appcompat:appcompat:1.2.0' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index 0462a7f5..7eee9b11 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -32,7 +32,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.2.0' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index 629e95ea..df257659 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -31,7 +31,7 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.2.0' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index 886038c7..5095fdf2 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -32,7 +32,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.2.0' - testImplementation 'junit:junit:4.13.1' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations'