diff --git a/app/build.gradle b/app/build.gradle index e27b7d5b..143e59d1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 264 - def appVersionName = '1.23.9' + def appVersionCode = 265 + def appVersionName = '1.23.10' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 05d0c4dc..fe6f998e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -51,6 +51,8 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamento import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloComponent; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent; @@ -122,7 +124,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogSelectDocInfoModule.class, DocInterniEditFormModule.class, DialogSelectDocRowsModule.class, - DialogAskClienteModule.class + DialogAskClienteModule.class, + DialogEditArticoloModule.class }) public interface MainApplicationComponent { @@ -206,6 +209,8 @@ public interface MainApplicationComponent { InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent(); + DialogEditArticoloComponent.Factory dialogEditArticoloComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java index 624f4b3c..aa0a61d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java @@ -23,7 +23,7 @@ public class BarcodeCallbackDTO { return onScanSuccessfull; } - public BarcodeCallbackDTO setOnScanSuccessfull(RunnableArgs onScanSuccessfull) { + public BarcodeCallbackDTO setOnScanSuccessful(RunnableArgs onScanSuccessfull) { this.onScanSuccessfull = onScanSuccessfull; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index c69bda7d..89343310 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -24,8 +24,6 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; }) public abstract class AppDatabase extends RoomDatabase { -// private AppDatabase mRoomInstance; - public abstract ArticoloGrigliaDao articoloGrigliaDao(); public abstract GrigliaDao grigliaDao(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java index 42c01e96..7e5d5d74 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java @@ -39,15 +39,15 @@ public interface ArticoloGrigliaDao { @Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1") ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia); - @Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan )AND id_griglia = :idGriglia LIMIT 1") + @Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan) AND id_griglia = :idGriglia LIMIT 1") ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia); - @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1") + @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode) AND id_griglia = :idGriglia LIMIT 1") Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart); @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") List getArticoliFromGriglia(int grigliaId); - @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId and new_no_promo = 1") + @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND new_no_promo = 1") List getNewArticoliInGriglia(int grigliaId); } 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 72dd32e1..f10d2341 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 @@ -21,6 +21,8 @@ public class BaseActivity extends AppCompatActivity { @Inject public DialogProgressView mCurrentProgress; + private boolean progressOpened; + @Nullable @Override public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) { @@ -56,36 +58,38 @@ public class BaseActivity extends AppCompatActivity { protected void openProgress() { - runOnUiThread(() -> { - BarcodeManager.disable(); - if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) { + BarcodeManager.disable(); + if (!progressOpened) { + this.progressOpened = true; + runOnUiThread(() -> { this.mCurrentProgress.show(getSupportFragmentManager(), "tag"); - } - }); + }); + } } protected void closeProgress() { - runOnUiThread(() -> { - BarcodeManager.enable(); - if (mCurrentProgress.isVisible()) { + BarcodeManager.enable(); + if (progressOpened) { + this.progressOpened = false; + runOnUiThread(() -> { mCurrentProgress.dismiss(); - } - }); + }); + } } public void onLoadingStarted() { - new Thread(() -> { +// new Thread(() -> { BarcodeManager.disable(); this.openProgress(); - }).start(); +// }).start(); } public void onLoadingEnded() { - new Thread(() -> { +// new Thread(() -> { this.closeProgress(); BarcodeManager.enable(); - }).start(); +// }).start(); } public void onError(Exception ex) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java index a11f7412..1b9213e6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java @@ -29,6 +29,7 @@ public abstract class BaseFragment extends Fragment { protected ElevatedToolbar mToolbar; protected final List mOnPreDestroyList = new ArrayList<>(); + private boolean progressOpened; public void setScrollToolbar(ElevatedToolbar toolbar) { @@ -81,19 +82,21 @@ public abstract class BaseFragment extends Fragment { } protected void openProgress() { - requireActivity().runOnUiThread(() -> { - if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) { + if (!progressOpened) { + this.progressOpened = true; + requireActivity().runOnUiThread(() -> { this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag"); - } - }); + }); + } } protected void closeProgress() { - requireActivity().runOnUiThread(() -> { - if (mCurrentProgress.isVisible()) { + if (progressOpened) { + this.progressOpened = false; + requireActivity().runOnUiThread(() -> { mCurrentProgress.dismiss(); - } - }); + }); + } } protected void popMe() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index c50ac071..41f2105c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -8,6 +8,8 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; @@ -27,10 +29,15 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; +@Singleton public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { - public static void getArticoliListino(String codAlis, RunnableArgs onSuccess, RunnableArgs onFailed) { + public void getArticoliListino(String codAlis, RunnableArgs onSuccess, RunnableArgs onFailed) { + getArticoliListinoStatic(codAlis, onSuccess, onFailed); + } + + public static void getArticoliListinoStatic(String codAlis, RunnableArgs onSuccess, RunnableArgs onFailed) { PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); ordiniARestService .getArticoliListino(codAlis) @@ -46,7 +53,9 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { .distinct() .withoutNulls() .forEach(art -> { - List inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList(); + List inList = Stream.of(griglia.getGrigliaAcquistiChild()) + .filter(x -> x.getCodMart().equalsIgnoreCase(art)) + .toList(); if (inList.size() > 1) { for (ArticoloDTO articolo : inList) { if (!articolo.getBarCode().endsWith(articolo.getCodMart())) { @@ -72,7 +81,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { }); } - public static void saveOrdine(Ordine ordine, List articoli, Griglia griglia, RunnableArgs onSuccess, RunnableArgs onFailed) { + public void saveOrdine(Ordine ordine, List articoli, Griglia griglia, RunnableArgs onSuccess, RunnableArgs onFailed) { SaveDTO saveDTO = new SaveDTO(); OrdineDTO ordineDTO = new OrdineDTO(); List artRows = new ArrayList<>(); @@ -126,7 +135,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { } - private static ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) { + private ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) { ArtDTO dto = new ArtDTO(); dto.setRigaOrd(rigaOrd); dto.setCodMart(art.getCodMart()); 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 a4da4222..eccb6cb4 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 @@ -355,7 +355,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false))); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 04f4a5c4..5b3c3323 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -190,7 +190,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(this.viewModel::processBarcode) + .setOnScanSuccessful(this.viewModel::processBarcode) .setOnScanFailed(this::onError)); this.viewModel.fetchDocumentRows(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 22b501d8..1c0dfdcb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -237,7 +237,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); BarcodeManager.enable(); 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 228518b4..a62b7ba0 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 @@ -156,7 +156,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); BarcodeManager.enable(); 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 12f32316..cfa358d5 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 @@ -167,7 +167,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false))); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index 42a8ae32..a3d8a7b0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -109,7 +109,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(this::onError)); BarcodeManager.enable(); 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 257cfba6..e5c792f3 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 @@ -10,11 +10,12 @@ import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; import com.annimon.stream.Stream; -import java.util.ArrayList; +import java.math.BigDecimal; import java.util.List; import javax.inject.Inject; @@ -26,46 +27,34 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; -import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; -import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; -import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; -import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; -import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.expansion.BaseActivity; -import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; -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.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListAdapter; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListModel; 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; -public class PVOrdineAcquistoEditActivity extends BaseActivity { +public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdineAcquistoEditViewModel.Listener { private static String DATA_KEY_ORDER = "keyOrdine"; + private Ordine mOrdine; - private Griglia mGriglia; - private List mArticoli = new ArrayList<>(); - private PVEditOrderHelper mhelper; private ActivityPvOrdineAcquistoEditBinding mBinding; - private int mBarcodeScannerIstanceID; - private OrdineAcquistoArtListAdapter mAdapter; + + private int barcodeScannerIstanceID; @Inject - OrdineRepository mOrdineRepository; - @Inject - GrigliaRepository mGrigliaRepository; - @Inject - ArticoliOrdineRepository mArticoliOrdineRepository; - @Inject - ArticoloGrigliaRepository mArticoloGrigliaRepository; + PVOrdineAcquistoEditViewModel mViewModel; + + private final ObservableArrayList mArticoliMutableData = new ObservableArrayList<>(); public static Intent newInstance(Context context, Ordine ordine) { @@ -84,7 +73,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { .create() .inject(this); - mhelper = new PVEditOrderHelper(mGrigliaRepository, mArticoliOrdineRepository, mArticoloGrigliaRepository); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit); mBinding.setViewModel(this); @@ -95,25 +83,40 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { if (mOrdine == null) { Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show(); - closeEdit(); + close(); } if (mOrdine.isTransmitted()) { Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show(); - closeEdit(); + close(); } String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString)); FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp); + initBarcodeReader(); initRecyclerView(); - fetchDetails(); - mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(this::onScanSuccessful) - .setOnScanFailed(this::handleException)); + this.mViewModel.setListener(this); + + this.mViewModel.getCurrentGriglia().observe(this, griglia -> { + mBinding.codAlis.setText(griglia.getCodAlis()); + }); + + this.mViewModel.getArticoli().observe(this, articoli -> { + mBinding.countArtOrd.setText(String.valueOf(articoli.size())); + mBinding.pvOrdineExport.setVisibility(articoli.size() > 0 ? View.INVISIBLE : View.GONE); + mBinding.closeActivityFab.close(false); + mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE); + + if (articoli.isEmpty() && isOrderNewProdsForced()) { + this.mViewModel.orderNewProducts(); + } + }); + + this.mViewModel.init(mOrdine); } - + @Override public boolean onSupportNavigateUp() { @@ -121,186 +124,133 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { return true; } - private void initRecyclerView() { - mBinding.articoliOrdineList.setHasFixedSize(true); + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(onScanSuccessful) + .setOnScanFailed(this::onError)); + BarcodeManager.enable(); + } + + private void initRecyclerView() { + this.mViewModel.getArticoli().observe(this, updatedData -> { + this.mArticoliMutableData.clear(); + this.mArticoliMutableData.addAll(convertDataModelToListModel(updatedData)); +// this.noItemsToPick.set(!isThereAnyItemToPick(updatedData)); + }); + + var mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoliMutableData) + .setOnItemClicked(this::selectAction); + + mBinding.articoliOrdineList.setAdapter(mAdapter); + mBinding.articoliOrdineList.setHasFixedSize(true); mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this)); 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); - mBinding.articoliOrdineList.setAdapter(mAdapter); } + private List convertDataModelToListModel + (List dataList) { + return Stream.of(dataList) + .distinctBy(ArticoloOrdine::getArticoloOrdineId) + .sortBy(x -> x.getDataIns().getTime()) + .map(x -> new OrdineAcquistoArtListModel() + .setBadge1(x.getCodMart()) + .setDescription(x.getDescrizione()) + .setQuantity(BigDecimal.valueOf(x.getQtaOrd())) + .setUntMis(x.getUntMis()) + .setOriginalModel(x)) + .toList(); + } + + private void selectAction(ArticoloOrdine articoloOrdine) { mBinding.closeActivityFab.close(false); BarcodeManager.disable(); - runOnUiThread(() -> DialogAskAction.make(this, - articoloOrdine.getDescrizione(), - articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(), - () -> this.addArticolo(articoloOrdine), - () -> this.deleteArticolo(articoloOrdine)).show()); + runOnUiThread(() -> { + DialogAskAction.make(this, + articoloOrdine.getDescrizione(), + articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(), + () -> { + this.onItemDispatched(articoloOrdine); + BarcodeManager.enable(); + }, + () -> { + this.deleteArticolo(articoloOrdine); + BarcodeManager.enable(); + }).show(); + }); } private void deleteArticolo(ArticoloOrdine articoloOrdine) { String text = "Stai per eliminare l'articolo " + articoloOrdine.getDescrizione() + " dall'ordine,
sei sicuro?"; - DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> this.runOnUiThread(() -> { - this.openProgress(); - mhelper.removeArticoloFromOrdine(articoloOrdine, () -> { - this.closeProgress(); - BarcodeManager.enable(); - runOnUiThread(this::fetchArticoli); - }, e -> { - this.closeProgress(); - runOnUiThread(() -> UtilityExceptions.defaultException(this, e)); - }); - }), () -> { + DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> { + this.mViewModel.deleteArticolo(articoloOrdine); + }, () -> { + }).show(getSupportFragmentManager(), "tag"); } - private void handleException(Exception ex) { - runOnUiThread(() -> { - this.closeProgress(); - BarcodeManager.enable(); - UtilityExceptions.defaultException(this, ex, false); + private final RunnableArgs onScanSuccessful = data -> { + mBinding.closeActivityFab.close(false); + this.onLoadingStarted(); + + this.mViewModel.processBarcodeDTO(data, () -> { + this.onLoadingEnded(); + }); + + }; + + @Override + public void onItemDispatched(ArticoloOrdine articoloOrdine) { + + DialogEditArticoloView + .newInstance(articoloOrdine, articolo -> { + runOnUiThread(() -> { + if (articolo != null) { + Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show(); + } + + this.mViewModel.saveArticolo(articolo); + }); + }, () -> { + + }).show(this.getSupportFragmentManager(), "tag"); + } + + + public void exportOrdine() { + this.mViewModel.exportOrdine(() -> { + runOnUiThread(() -> { + Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show(); + close(); + }); }); } - private void onScanSuccessful(BarcodeScanDTO dto) { - mBinding.closeActivityFab.close(false); - BarcodeManager.disable(); - this.openProgress(); - mhelper.checkArticolo( - mOrdine, - dto.getStringValue(), - articoloOrdine -> { - this.closeProgress(); - addArticolo(articoloOrdine); - }, - e -> { - this.closeProgress(); - handleException(e); - } - ); - } - private void addArticolo(ArticoloOrdine articoloOrdine) { - - runOnUiThread(() -> EditArticoloDialog.newInstance(this, mhelper, articoloOrdine, articolo -> { - BarcodeManager.enable(); - if (articolo != null) { - Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show(); - } - fetchArticoli(); - }).show(this.getSupportFragmentManager(), "tag")); - } - - private void fetchDetails() { - fetchGriglia(); - fetchArticoli(); - } - - private void orderNewProducts() { - this.openProgress(); - mhelper.getNewArticoli(mOrdine.getIdGriglia(), articoli -> { - if (articoli != null && !articoli.isEmpty()) { - List articoliToSave = new ArrayList<>(); - Stream.of(articoli).forEach(articolo -> { - if ( - Stream.of(mArticoli).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() - && Stream.of(articoliToSave).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() - ) { - ArticoloOrdine dto = articolo.convertToArticoloOrdine(mOrdine); - dto.setQtaOrd(dto.getQtaCnf()); - articoliToSave.add(dto); - } - }); - if (!articoliToSave.isEmpty()) { - mhelper.saveArticoliToOrdine(articoliToSave, this::fetchArticoli, this::handleException); - } else { - this.closeProgress(); - } - } else { - this.closeProgress(); - } - }, this::handleException); - } - - private void fetchGriglia() { - mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> { - runOnUiThread(() -> { - mGriglia = griglia; - mBinding.codAlis.setText(mGriglia.getCodAlis()); - }); - }, this::handleException); - } - - private void fetchArticoli() { - this.openProgress(); - mhelper.loadArticoli(mOrdine, articoli -> { - this.closeProgress(); - mArticoli = articoli; - runOnUiThread(() -> { - mAdapter.updateItems(mArticoli); - mBinding.countArtOrd.setText(String.valueOf(mArticoli.size())); - mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE); - mBinding.closeActivityFab.close(false); - mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE); - if (mArticoli.isEmpty() && isOrderNewProdsForced()) { - orderNewProducts(); - } - }); - }, this::handleException); - } - - public void closeEdit() { + public void close() { onBackPressed(); } - public void exportOrdine() { - this.openProgress(); - PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine, mArticoli, mGriglia, (ordine) -> { - - mOrdineRepository.updateOrder(ordine, ord -> { - this.closeProgress(); - runOnUiThread(() -> { - Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show(); - onBackPressed(); - }); - }, e -> runOnUiThread(() -> { - this.closeProgress(); - UtilityExceptions.defaultException(this, e); - })); - - }, e -> runOnUiThread(() -> { - this.closeProgress(); - UtilityExceptions.defaultException(this, e); - })); - } - @Override public void onBackPressed() { - BarcodeManager.removeCallback(mBarcodeScannerIstanceID); + BarcodeManager.removeCallback(barcodeScannerIstanceID); super.onBackPressed(); } public void manualSearch() { BarcodeManager.disable(); DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> { - this.openProgress(); - mhelper.checkArticolo( - mOrdine, - codice, - articoloOrdine -> { - this.closeProgress(); - addArticolo(articoloOrdine); - }, - e -> { - this.closeProgress(); - handleException(e); + this.onLoadingStarted(); + this.mViewModel.loadArticolo(codice, + () -> { + this.onLoadingEnded(); + BarcodeManager.enable(); } ); }, BarcodeManager::enable).show(); @@ -309,4 +259,5 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { private boolean isOrderNewProdsForced() { return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia(); } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditModule.java index 455e4dde..cc5271e0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditModule.java @@ -1,7 +1,34 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit; +import javax.inject.Singleton; + import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; +import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; @Module(subcomponents = PVOrdineAcquistoEditComponent.class) public class PVOrdineAcquistoEditModule { + + + + @Provides + @Singleton + PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer() { + return new PVOrdiniAcquistoRESTConsumer(); + } + + @Provides + @Singleton + PVOrdineAcquistoEditViewModel providesPvOrdineAcquistoEditViewModel(OrdineRepository ordineRepository, + GrigliaRepository grigliaRepository, + ArticoliOrdineRepository articoliOrdineRepository, + ArticoloGrigliaRepository articoloGrigliaRepository, + PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer) { + return new PVOrdineAcquistoEditViewModel(ordineRepository, grigliaRepository, articoliOrdineRepository, articoloGrigliaRepository, pvOrdiniAcquistoRESTConsumer); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java new file mode 100644 index 00000000..51b25773 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -0,0 +1,262 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit; + +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; +import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; + +public class PVOrdineAcquistoEditViewModel { + + @Inject + OrdineRepository mOrdineRepository; + + @Inject + GrigliaRepository mGrigliaRepository; + + @Inject + ArticoliOrdineRepository mArticoliOrdineRepository; + + @Inject + ArticoloGrigliaRepository mArticoloGrigliaRepository; + + @Inject + PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer; + + private Ordine mCurrentOrdine; + + + private Listener mListener; + + + private final MutableLiveData mCurrentGriglia = new MutableLiveData<>(); + private final MutableLiveData> mArticoli = new MutableLiveData<>(); + + + public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository, + GrigliaRepository grigliaRepository, + ArticoliOrdineRepository articoliOrdineRepository, + ArticoloGrigliaRepository articoloGrigliaRepository, + PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer) { + this.mOrdineRepository = ordineRepository; + this.mGrigliaRepository = grigliaRepository; + this.mArticoliOrdineRepository = articoliOrdineRepository; + this.mArticoloGrigliaRepository = articoloGrigliaRepository; + this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer; + } + + public void init(Ordine ordine) { + this.mCurrentOrdine = ordine; + + this.sendOnLoadingStarted(); + + this.loadGriglia(ordine.getIdGriglia(), griglia -> { + mCurrentGriglia.postValue(griglia); + + this.loadArticoli(mCurrentOrdine, articoli -> { + this.mArticoli.postValue(articoli); + this.sendOnLoadingEnded(); + + }); + }); + } + + public MutableLiveData getCurrentGriglia() { + return mCurrentGriglia; + } + + public MutableLiveData> getArticoli() { + return mArticoli; + } + + public void saveArticolo(ArticoloOrdine articolo) { + var newList = this.mArticoli.getValue(); + + var alreadySavedItem = Stream.of(newList) + .filter(x -> Objects.equals(x.getArticoloOrdineId(), articolo.getArticoloOrdineId())) + .findFirst(); + + if(alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get()); + + newList.add(articolo); + this.mArticoli.postValue(newList); + } + + + public void loadArticolo(String barcode, Runnable onSuccess) { + try { + mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, barcode, (articolo) -> { + if (articolo != null) { + onSuccess.run(); + this.sendOnItemDispatched(articolo); + } else { + mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, mCurrentOrdine.getIdGriglia(), artGrid -> { + if (artGrid != null) { + onSuccess.run(); + this.sendOnItemDispatched(artGrid.convertToArticoloOrdine(mCurrentOrdine)); + } else { + this.sendError(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); + } + }, this::sendError); + } + }, this::sendError); + + } catch (Exception e) { + this.sendError(e); + } + } + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + this.checkArticolo( + mCurrentOrdine, + barcodeScanDTO.getStringValue(), + articoloOrdine -> { + this.sendOnItemDispatched(articoloOrdine); + onComplete.run(); + }, + this::sendError + ); + } + + + private void loadGriglia(int idGriglia, RunnableArgs onLoad) { + try { + mGrigliaRepository.findGrigliaById(idGriglia, onLoad, this::sendError); + } catch (Exception e) { + this.sendError(e); + } + } + + private void loadArticoli(Ordine ordine, RunnableArgs> onLoad) { + try { + mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, this::sendError); + } catch (Exception e) { + this.sendError(e); + } + } + + private void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { + try { + mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> { + if (articolo != null) { + onSuccess.run(articolo); + } else { + mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> { + if (artGrid != null) { + onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); + } else { + onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); + } + }, onFail); + } + }, onFail); + + } catch (Exception e) { + onFail.run(e); + } + } + + private void getNewArticoli(int idGrigla, RunnableArgs> onSuccess, RunnableArgs onError) { + mArticoloGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError); + } + + public void orderNewProducts() { + this.sendOnLoadingStarted(); + + this.getNewArticoli(mCurrentOrdine.getIdGriglia(), articoli -> { + if (articoli != null && !articoli.isEmpty()) { + List articoliToSave = new ArrayList<>(); + + Stream.of(articoli).forEach(articolo -> { + if ( + Stream.of(mArticoli.getValue()) + .filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())) + .findFirst() + .isEmpty() + + && Stream.of(articoliToSave) + .filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())) + .findFirst() + .isEmpty() + ) { + ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine); + dto.setQtaOrd(dto.getQtaCnf()); + articoliToSave.add(dto); + } + }); + if (!articoliToSave.isEmpty()) { + mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> { + Stream.of(articoliToSave).forEach(this::saveArticolo); + + this.sendOnLoadingEnded(); + + }, this::sendError); + + } else this.sendOnLoadingEnded(); + } else this.sendOnLoadingEnded(); + }, this::sendError); + } + + public void deleteArticolo(ArticoloOrdine articoloOrdine) { + mArticoliOrdineRepository.deleteArticolo(articoloOrdine, () -> { + this.mArticoli.getValue().remove(articoloOrdine); + this.mArticoli.postValue(this.mArticoli.getValue()); + }, this::sendError); + } + + public void exportOrdine(Runnable onComplete) { + this.sendOnLoadingStarted(); + pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), mCurrentGriglia.getValue(), (ordine) -> { + + mOrdineRepository.updateOrder(ordine, ord -> { + this.sendOnLoadingEnded(); + onComplete.run(); + }, this::sendError); + + }, this::sendError); + } + + private void sendOnItemDispatched(ArticoloOrdine articoloOrdine) { + if (this.mListener != null) mListener.onItemDispatched(articoloOrdine); + } + + 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 interface Listener extends ILoadingListener { + void onItemDispatched(ArticoloOrdine articoloOrdine); + + void onError(Exception ex); + } + + public PVOrdineAcquistoEditViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloComponent.java new file mode 100644 index 00000000..66251c97 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogEditArticoloComponent { + + @Subcomponent.Factory + interface Factory { + DialogEditArticoloComponent create(); + } + + void inject(DialogEditArticoloView dialogEditArticoloView); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloModule.java new file mode 100644 index 00000000..200bc6e3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloModule.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; + +@Module(subcomponents = DialogEditArticoloComponent.class) +public class DialogEditArticoloModule { + + + @Provides + DialogEditArticoloViewModel providesDialogEditArticoloViewModel(ArticoliOrdineRepository articoliOrdineRepository) { + return new DialogEditArticoloViewModel(articoliOrdineRepository); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java new file mode 100644 index 00000000..fbc9b8bd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java @@ -0,0 +1,180 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.text.InputType; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; +import androidx.fragment.app.DialogFragment; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityObservable; +import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; + +public class DialogEditArticoloView extends BaseDialogFragment implements DialogEditArticoloViewModel.Listener { + + @Inject + DialogEditArticoloViewModel mViewModel; + + private final ArticoloOrdine mArticolo; + private final RunnableArgs mOnComplete; + private final Runnable mOnAbort; + + public ObservableField currentNumCnf = new ObservableField<>(); + public ObservableField currentQtaCnf = new ObservableField<>(); + public ObservableField currentQtaTot = new ObservableField<>(); + + private DialogPvEditArticoloBinding mBindings; + private boolean mEnableDataCallback = true; + + public static DialogEditArticoloView newInstance(ArticoloOrdine articolo, RunnableArgs onComplete, Runnable onAbort) { + return new DialogEditArticoloView(articolo, onComplete, onAbort); + } + + private DialogEditArticoloView(ArticoloOrdine articolo, RunnableArgs onComplete, Runnable onAbort) { + super(); + + this.mArticolo = articolo; + this.mOnComplete = onComplete; + this.mOnAbort = onAbort; + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, container, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .dialogEditArticoloComponent() + .create() + .inject(this); + + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + mBindings.toolbar.setTitle("Inserimento articolo"); + mBindings.inputQtaOrd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); + + + this.mViewModel + .setListener(this) + .setCurrentArticolo(this.mArticolo) + .setInitialQtaCnf(BigDecimal.valueOf(mArticolo.getQtaCnf())) + .setInitialNumCnf(UtilityBigDecimal.divide(BigDecimal.valueOf(mArticolo.getQtaOrd()), BigDecimal.valueOf(mArticolo.getQtaCnf())).setScale(0, RoundingMode.CEILING)) + .setInitialQtaTot(BigDecimal.valueOf(mArticolo.getQtaOrd())); + + mBindings.setView(this); + + this.onDataChanged(); + + this.initBindings(); + + return mBindings.getRoot(); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); + } + + @Override + public void onStart() { + super.onStart(); + + this.mViewModel.setListener(this); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + this.mOnAbort.run(); + super.onDismiss(dialog); + } + + private void initBindings() { + + UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> { + if (this.mEnableDataCallback) { + this.mViewModel.setNumCnf(value); + } + }); + + UtilityObservable.addPropertyChanged(this.currentQtaCnf, (value) -> { + if (this.mEnableDataCallback) { + this.mViewModel.setQtaCnf(value); + } + }); + + UtilityObservable.addPropertyChanged(this.currentQtaTot, (value) -> { + if (this.mEnableDataCallback) { + this.mViewModel.setQtaTot(value); + } + }); + + + mBindings.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + mBindings.inputNumCnfText.requestFocus(); + return true; + } + return false; + }); + + mBindings.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + saveAndExit(); + return true; + } + return false; + }); + } + + public ArticoloOrdine getArticolo() { + return mArticolo; + } + + @Override + public void onDataChanged() { + this.mEnableDataCallback = false; + + this.currentNumCnf.set(this.mViewModel.getNumCnf()); + this.currentQtaCnf.set(this.mViewModel.getQtaCnf()); + this.currentQtaTot.set(this.mViewModel.getQtaTot()); + + this.mBindings.executePendingBindings(); + + this.mEnableDataCallback = true; + } + + + public void saveAndExit() { + this.onLoadingStarted(); + + this.mViewModel.save(newArticolo -> { + this.mOnComplete.run(newArticolo); + this.onLoadingEnded(); + dismiss(); + }); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java new file mode 100644 index 00000000..ce11e3ca --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java @@ -0,0 +1,122 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; + +public class DialogEditArticoloViewModel { + + ArticoliOrdineRepository mArticoliOrdineRepository; + + private Listener mListener; + + private ArticoloOrdine mCurrentArticolo; + + private BigDecimal internalNumCnf; + private BigDecimal internalQtaCnf; + private BigDecimal internalQtaTot; + + @Inject + public DialogEditArticoloViewModel(ArticoliOrdineRepository articoliOrdineRepository) { + this.mArticoliOrdineRepository = articoliOrdineRepository; + } + + public DialogEditArticoloViewModel setCurrentArticolo(ArticoloOrdine currentArticolo) { + this.mCurrentArticolo = currentArticolo; + return this; + } + + public DialogEditArticoloViewModel setInitialNumCnf(BigDecimal numCnf) { + this.internalNumCnf = numCnf; + return this; + } + + public DialogEditArticoloViewModel setInitialQtaCnf(BigDecimal qtaCnf) { + this.internalQtaCnf = qtaCnf; + return this; + } + + public DialogEditArticoloViewModel setInitialQtaTot(BigDecimal qtaTot) { + this.internalQtaTot = qtaTot; + return this; + } + + public void setNumCnf(BigDecimal newValue) { + this.internalNumCnf = newValue; + if (newValue == null) return; + + this.internalQtaTot = UtilityBigDecimal.multiply(newValue, internalQtaCnf) + .setScale(2, RoundingMode.CEILING); + + this.mListener.onDataChanged(); + } + + public void setQtaCnf(BigDecimal newValue) { + this.internalQtaCnf = newValue; + if (newValue == null) return; + + this.mListener.onDataChanged(); + } + + public void setQtaTot(BigDecimal newValue) { + this.internalQtaTot = newValue; + + this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf) + .setScale(0, RoundingMode.CEILING); + + this.mListener.onDataChanged(); + } + + public BigDecimal getNumCnf() { + return this.internalNumCnf; + } + + public BigDecimal getQtaCnf() { + return this.internalQtaCnf; + } + + public BigDecimal getQtaTot() { + return this.internalQtaTot; + } + + + public interface Listener { + void onDataChanged(); + + void onError(Exception ex); + } + + + public Listener getListener() { + return mListener; + } + + public DialogEditArticoloViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + + public void save(RunnableArgs onComplete) { + if(UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) { + this.mListener.onError(new Exception("La quantità ordinata deve essere maggiore di 0")); + return; + } + + this.mCurrentArticolo.setQtaOrd(this.internalQtaTot.floatValue()); + + try { + mArticoliOrdineRepository.saveArticoloToOrdine(this.mCurrentArticolo, () -> { + onComplete.run(this.mCurrentArticolo); + }, this.mListener::onError); + } catch (Exception ex) { + this.mListener.onError(ex); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java deleted file mode 100644 index a9a4fa8b..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java +++ /dev/null @@ -1,188 +0,0 @@ -package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; - -import android.app.Activity; -import android.content.DialogInterface; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.os.Bundle; -import android.text.InputType; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.view.inputmethod.EditorInfo; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.DialogFragment; -import androidx.lifecycle.MutableLiveData; - -import java.math.BigDecimal; -import java.math.RoundingMode; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; -import it.integry.integrywmsnative.core.di.BindableBigDecimal; -import it.integry.integrywmsnative.core.di.BindableInteger; -import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; -import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; - -public class EditArticoloDialog extends BaseDialogFragment { - - private final Activity mContext; - private DialogPvEditArticoloBinding mBinding; - private final PVEditOrderHelper mHelper; - private final MutableLiveData mArticolo = new MutableLiveData<>(); - private final RunnableArgs onDialogDismiss; - private boolean mLockedInput = false; - - public final BindableBigDecimal qtaOrd = new BindableBigDecimal(BigDecimal.ZERO); - public final BindableInteger numCnf = new BindableInteger(0); - public final BindableBigDecimal qtaCnf = new BindableBigDecimal(BigDecimal.ZERO); - - public static EditArticoloDialog newInstance(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) { - return new EditArticoloDialog(context, helper, articolo, onDialogDismiss); - } - - private EditArticoloDialog(Activity context, PVEditOrderHelper helper, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) { - mContext = context; - mArticolo.setValue(articolo); - mHelper = helper; - qtaOrd.set(BigDecimal.valueOf(articolo.getQtaOrd())); - numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()), 0, RoundingMode.CEILING).intValue()); - qtaCnf.set(BigDecimal.valueOf(articolo.getQtaCnf())); - - this.onDialogDismiss = onDialogDismiss; - - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); - - } - - @Override - public void onDismiss(@NonNull DialogInterface dialog) { - super.onDismiss(dialog); - /*ArticoloOrdine articolo = mArticolo.getValue(); - if (articolo != null && articolo.getQtaOrd() <= 0f) { - articolo = null; - } - onDialogDismiss.run(articolo);*/ - } - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false); - mBinding.setView(this); - mBinding.toolbar.setTitle("Inserimento articolo"); - mBinding.inputQtaOrd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); - getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - initBindings(); - return mBinding.getRoot(); - } - - @Override - public void onStart() { - super.onStart(); - } - - private void initBindings() { - - BindableBigDecimal.registerListener(qtaOrd, qta -> { - if (!mLockedInput) { - mLockedInput = true; - - ArticoloOrdine articoloOrdine = mArticolo.getValue(); - BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf()); - int cnf = 0; - if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0) { - cnf = qtaOrd.get().divide(qtaCnf, 0, RoundingMode.CEILING).intValue(); - } - this.numCnf.set(cnf); - this.mBinding.executePendingBindings(); - - mLockedInput = false; - } - }); - BindableInteger.registerListener(numCnf, qta -> { - if (!mLockedInput) { - mLockedInput = true; - - ArticoloOrdine articoloOrdine = mArticolo.getValue(); - BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf()); - this.qtaOrd.set(BigDecimal.valueOf(numCnf.get() * qtaCnf.floatValue()).setScale(2, RoundingMode.CEILING)); - this.mBinding.executePendingBindings(); - - mLockedInput = false; - } - }); - mBinding.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { -// saveAndExit(); - mBinding.inputNumCnfText.requestFocus(); - return true; - } - return false; - }); - - mBinding.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - saveAndExit(); - return true; - } - return false; - }); - } - - public void saveAndExit() { - this.onLoadingStarted(); - try { - ArticoloOrdine articolo = mArticolo.getValue(); - if (articolo == null) { - throw new Exception("Articolo non valido"); - } - if (qtaOrd.get().compareTo(BigDecimal.ZERO) <= 0) { - throw new Exception("La quantità ordinata deve essere maggiore di 0"); - } - - articolo.setQtaOrd(qtaOrd.get().floatValue()); - mArticolo.setValue(articolo); - mHelper.saveArticoloToOrdine(mArticolo.getValue(), () -> { - this.onLoadingEnded(); - requireActivity().runOnUiThread(() -> { - onDialogDismiss.run(articolo); - }); - this.dismiss(); - }, e -> { - mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)); - this.onLoadingEnded(); - }); - } catch (Exception e) { - mContext.runOnUiThread(() -> UtilityExceptions.defaultException(mContext, e)); - this.onLoadingEnded(); - return; - } - ; - } - - public ArticoloOrdine getArticolo() { - return mArticolo.getValue(); - } - - public void cancel() { - mArticolo.postValue(null); - requireActivity().runOnUiThread(() -> { - onDialogDismiss.run(null); - }); - this.dismiss(); - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java index daf89bc9..32c6abbf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java @@ -4,7 +4,6 @@ import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; -import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; @@ -43,26 +42,6 @@ public class PVEditOrderHelper { } } - public void loadGriglia(int idGriglia, RunnableArgs onLoad, RunnableArgs onError) { - try { - mGrigliaRepository.findGrigliaById(idGriglia, onLoad, onError); - } catch (Exception e) { - onError.run(e); - } - } - - public void loadArticoli(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) { - try { - mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, onError); - } catch (Exception e) { - onError.run(e); - } - } - - - public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onFail) { - mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail); - } public void saveArticoliToOrdine(List articoli, Runnable onSave, RunnableArgs onFail) { mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java index 93da5ee1..e23bd757 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/ui/OrdineAcquistoArtListAdapter.java @@ -5,17 +5,19 @@ import android.view.LayoutInflater; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; -import com.annimon.stream.Stream; import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; +import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding; import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; @@ -23,9 +25,10 @@ import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - private Context mContext; + private final Context mContext; + + private final List mDataset = new ArrayList<>(); - private List mDataset; RunnableArgs mOnItemSelect; @@ -51,28 +54,26 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter myDataset, RunnableArgs onItemSelect) { + public OrdineAcquistoArtListAdapter(Context context, ObservableArrayList myDataset) { mContext = context; - mDataset = orderItems(myDataset); - mOnItemSelect = onItemSelect; + + myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @Override + public void onChanged(ObservableList sender) { + mDataset.clear(); + mDataset.addAll(sender); + notifyDataSetChanged(); + notifyDataChanged(); + } + }); } - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); + public OrdineAcquistoArtListAdapter setOnItemClicked(RunnableArgs onItemSelect) { + this.mOnItemSelect = onItemSelect; + return this; } - private List orderItems(List dataset) { - return Stream.of(dataset) - .distinctBy(ArticoloOrdine::getArticoloOrdineId) - .sortBy(x -> UtilityDate.formatDate(x.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) - .toList(); - - } - @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -94,7 +95,7 @@ public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter UtilityExceptions.defaultException(mContext, ex, false))); mDialog.setBarcodeListener(true); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java index 7d968e41..051bd880 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java @@ -41,7 +41,7 @@ public class OrdineAcquistoPvHelper { } public void updateGriglia(Griglia griglia, RunnableArgs onSave, RunnableArgs onFail) { - PVOrdiniAcquistoRESTConsumer.getArticoliListino(griglia.getCodAlis(), dto -> { + PVOrdiniAcquistoRESTConsumer.getArticoliListinoStatic(griglia.getCodAlis(), dto -> { mContext.runOnUiThread(() -> { if (dto.getGrigliaAcquistiChild().size() <= 0) { onFail.run(new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli")); 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 38cdcd44..3edea0ab 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 @@ -144,7 +144,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); } 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 b0628b83..b8e85a7d 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 @@ -249,7 +249,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(this::onError)); BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java index ae47ce73..d33f5ca1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java @@ -138,7 +138,7 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java index 8ea4c517..f8bb6c07 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java @@ -143,7 +143,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index 1cb12a44..760777b4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -123,7 +123,7 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java index 445f2153..691b8d63 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java @@ -61,7 +61,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod public void onShow() { mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false))); BarcodeManager.enable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java index 56f044dd..f3e968ba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java @@ -130,7 +130,7 @@ public class DialogAskPositionOfLU { private void setupBarcode() { int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessfull) + .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false))); mDialog.setOnDismissListener(dialog -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index 835431de..99c5bca1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -242,7 +242,7 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { BarcodeManager.enable(); mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessfull) + .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, 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 cd26fd90..77f25a64 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 @@ -170,7 +170,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia private void initBarcode() { mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessful) + .setOnScanSuccessful(onScanSuccessful) .setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false))); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java index d62bdc9d..d7f7d333 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java @@ -95,7 +95,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA private void initBarcode() { mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessfull) + .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(this::onError)); setBarcodeListener(true); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java index e2e05f48..3270801e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java @@ -126,7 +126,7 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial private void initBarcode() { mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() - .setOnScanSuccessfull(onScanSuccessfull) + .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(this::onError)); setBarcodeListener(true); diff --git a/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml index 4f504331..c637ec46 100644 --- a/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml +++ b/app/src/main/res/layout/activity_pv_ordine_acquisto_edit.xml @@ -198,10 +198,12 @@ diff --git a/app/src/main/res/layout/dialog_pv_edit_articolo.xml b/app/src/main/res/layout/dialog_pv_edit_articolo.xml index ed37da18..03ae4922 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -12,7 +12,7 @@ + type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView" /> + app:binding="@{view.currentNumCnf}" /> @@ -575,7 +575,7 @@ android:hint="@string/qty_x_pck" android:imeOptions="actionDone" android:inputType="numberDecimal" - app:binding="@{view.qtaCnf}" /> + app:binding="@{view.currentQtaCnf}" /> @@ -597,7 +597,7 @@ android:hint="@string/tot_qty" android:inputType="number" android:selectAllOnFocus="true" - app:binding="@{view.qtaOrd}" /> + app:binding="@{view.currentQtaTot}" /> @@ -621,7 +621,7 @@ android:layout_marginStart="4dp" android:layout_marginEnd="4dp" android:layout_weight="1" - android:onClick="@{() -> view.cancel()}" + android:onClick="@{() -> view.dismiss()}" app:icon="@drawable/ic_close_24dp" app:iconGravity="textStart" app:layout_constraintTop_toTopOf="parent" />