From 33a01b2c15e99940ee8c75e3fba5b6e59fe96988 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Fri, 27 May 2022 09:45:35 +0200 Subject: [PATCH 01/15] spedizione: bugfix calcolo qta residua in picking da collo --- .../integrywmsnative/gest/spedizione/SpedizioneViewModel.java | 3 +++ 1 file changed, 3 insertions(+) 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 be80c0ea..fa09f2a6 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 @@ -757,6 +757,9 @@ public class SpedizioneViewModel { this.getPickingList().postValue(pickingList); } else { MtbColt refMtbColt = matchedItem.getRefMtbColt(); + if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) { + refMtbColt = matchedItem.getMtbColts().get(0); + } MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null); } From 344fc42d035529e3809ad20d223865b0a260f88d Mon Sep 17 00:00:00 2001 From: ValerioC Date: Fri, 27 May 2022 16:22:34 +0200 Subject: [PATCH 02/15] bugfix in schermata dialog_input_quantity_v2 --- .../integrywmsnative/core/rest/model/SitArtOrdDTO.java | 10 ++++++++++ .../input_quantity_v2/DialogInputQuantityV2View.java | 8 ++++++-- .../res/layout-land-hdpi/dialog_input_quantity_v2.xml | 2 +- app/src/main/res/layout/dialog_input_quantity_v2.xml | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java index baff542f..2c7b0003 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java @@ -26,6 +26,7 @@ public class SitArtOrdDTO { private String descrizioneMsgr; private String codMsfa; private String descrizioneMsfa; + private String untord; private final HashMap extraInfo = new HashMap<>(); @@ -212,4 +213,13 @@ public class SitArtOrdDTO { public HashMap getExtraInfo() { return extraInfo; } + + public String getUntord() { + return untord; + } + + public SitArtOrdDTO setUntord(String untord) { + this.untord = untord; + return this; + } } 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 4d285878..9cddf4ea 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 @@ -24,6 +24,7 @@ import com.pedromassango.doubleclick.DoubleClick; import com.pedromassango.doubleclick.DoubleClickListener; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Calendar; import java.util.Date; @@ -57,6 +58,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia private Runnable mOnAbort; public ObservableField currentTextNumCnfToTake = new ObservableField<>(0); + public ObservableField flagShowCnfToTakeLabel = new ObservableField<>(true); public ObservableField currentTextNumPezziToTake = new ObservableField<>(0); public ObservableField currentPartitaMag = new ObservableField<>(); @@ -408,8 +410,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); if (this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null && !this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().equals(BigDecimal.ZERO) && !(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue() == 0)) { - this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue()); - int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue(); + int numCnftoTake = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().divide(this.mDialogInputQuantityV2DTO.getQtaCnfOrd(), 0, RoundingMode.DOWN).intValue(); + this.currentTextNumCnfToTake.set(numCnftoTake); + int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getQtaCnfOrd().intValue(); this.currentTextNumPezziToTake.set(qtaText); } else { this.currentTextNumCnfToTake.set(0); @@ -451,6 +454,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia BigDecimal taraTot = this.mViewModel.getNumCnf().multiply(articolo.getTaraKg()); this.currentTaraTot.set(taraTot); this.currentPesoLordo.set(this.mViewModel.getQtaTot().add(taraTot)); + this.flagShowCnfToTakeLabel.set(false); } this.mBindings.executePendingBindings(); diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml index c749808e..e1cea0f0 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml @@ -193,7 +193,7 @@ android:layout_gravity="center" android:layout_marginTop="2dp" android:gravity="center" - android:visibility="@{view.currentTextNumCnfToTake > 0 || view.currentTextNumPezziToTake > 0 ? View.VISIBLE : View.GONE}"> + android:visibility="@{view.flagShowCnfToTakeLabel && (view.currentTextNumCnfToTake > 0 || view.currentTextNumPezziToTake > 0 )? View.VISIBLE : View.GONE}"> + android:visibility="@{view.flagShowCnfToTakeLabel && (view.currentTextNumCnfToTake > 0 || view.currentTextNumPezziToTake > 0) ? View.VISIBLE : View.GONE}"> Date: Wed, 1 Jun 2022 19:22:32 +0200 Subject: [PATCH 03/15] =?UTF-8?q?aggiunte=20funzionalit=C3=A0=20versamento?= =?UTF-8?q?=20e=20recupero=20alla=20gestione=20linee=20di=20produzione?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 11 +- .../MainApplicationComponent.java | 7 +- .../MainApplicationModule.java | 7 + .../core/expansion/BaseFragment.java | 11 +- .../ProductionLinesRESTConsumer.java | 21 ++ .../core/settings/SettingsManager.java | 4 +- .../ProdDettaglioLineaActivity.java | 321 +++++++++++++++++ .../ProdDettaglioLineaComponent.java | 15 + .../ProdDettaglioLineaModule.java | 19 + .../ProdDettaglioLineaViewModel.java | 238 ++++++++++++ .../dialogs/BottomSheetLineAction.java | 37 +- .../dialogs/DialogRecoverUl.java} | 10 +- .../dialogs/DialogStartProduction.java | 117 ++++++ .../ProdLineeProduzioneFragment.java | 56 +-- .../ProdLineeProduzioneModule.java | 13 +- .../ProdLineeProduzioneViewModel.java | 48 +-- .../dto/ProdLineStatusDTO.java | 33 ++ .../ProdRecuperoMaterialeFragment.java | 37 +- .../ProdRecuperoMaterialeViewModel.java | 62 +++- .../ProdRecuperMaterialeRESTConsumer.java | 13 +- .../DialogInputQuantityV2DTO.java | 10 + .../DialogInputQuantityV2View.java | 4 +- .../dialogs/scan_art/DialogScanArtView.java | 2 +- .../DialogScanOrCreateLUView.java | 14 +- .../layout/activity_prod_dettaglio_linea.xml | 341 ++++++++++++++++++ .../res/layout/bottom_sheet_line_actions.xml | 31 +- .../res/layout/dialog_start_production.xml | 1 + app/src/main/res/values-it/strings.xml | 7 +- app/src/main/res/values/strings.xml | 5 + 29 files changed, 1331 insertions(+), 164 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java rename app/src/main/java/it/integry/integrywmsnative/gest/{prod_linee_produzione => prod_dettaglio_linea}/dialogs/BottomSheetLineAction.java (73%) rename app/src/main/java/it/integry/integrywmsnative/gest/{prod_linee_produzione/dialogs/DialogStartProduction.java => prod_dettaglio_linea/dialogs/DialogRecoverUl.java} (86%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java create mode 100644 app/src/main/res/layout/activity_prod_dettaglio_linea.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b0409f1f..72c1b25c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,11 +27,18 @@ android:screenOrientation="portrait" android:theme="@style/Light" android:windowSoftInputMode="adjustNothing" /> - - + diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 26d9a408..57b9f360 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -41,6 +41,8 @@ import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent; import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoComponent; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoModule; +import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaComponent; +import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaModule; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent; @@ -134,7 +136,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogAskClienteModule.class, DialogEditArticoloModule.class, DialogPrintOrderSSCCListModule.class, - ProdLineeProduzioneModule.class + ProdLineeProduzioneModule.class, + ProdDettaglioLineaModule.class }) public interface MainApplicationComponent { @@ -226,6 +229,8 @@ public interface MainApplicationComponent { ProdLineeProduzioneComponent.Factory prodLineeProduzioneComponent(); + ProdDettaglioLineaComponent.Factory prodDettaglioLineaComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index 66a9c84d..130336d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -25,6 +25,7 @@ import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.core.update.UpdatesManager; @@ -200,4 +201,10 @@ public class MainApplicationModule { return new InventarioService(giacenzaRESTConsumer); } + @Provides + @Singleton + ProductionLinesRESTConsumer provideProductionLinesRESTConsumer() { + return new ProductionLinesRESTConsumer(); + } + } 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 7923a94f..dfcb3aea 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 @@ -100,8 +100,13 @@ public abstract class BaseFragment extends Fragment { } protected void popMe() { - requireActivity().runOnUiThread(() -> { - ((IPoppableActivity) requireActivity()).pop(); - }); + if (requireActivity() instanceof IPoppableActivity) { + requireActivity().runOnUiThread(() -> { + ((IPoppableActivity) requireActivity()).pop(); + }); + } else { + requireActivity().getSupportFragmentManager().popBackStack(); + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java index 035536f1..0b802557 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ProductionLinesRESTConsumer.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.rest.consumers; +import com.annimon.stream.Stream; import com.google.gson.JsonObject; import java.util.List; @@ -88,4 +89,24 @@ public class ProductionLinesRESTConsumer extends _BaseRESTConsumer { } + public void getLineDetails(ProdLineStatusDTO lineaProd, RunnableArgs onComplete, RunnableArgs onFailed) { + ProductionLinesRESTConsumerService restService = RESTBuilder.getService(ProductionLinesRESTConsumerService.class); + Call>> callable = restService.getStatoLinee(lineaProd.getCodMdepLav()); + callable.enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getLineDetails", (lines) -> { + ProdLineStatusDTO newLine = Stream.of(lines).filter(dto -> dto.getCodJfas().equalsIgnoreCase(lineaProd.getCodJfas())).findFirstOrElse(null); + onComplete.run(newLine); + }, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 86c32edd..80b4447f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -342,8 +342,8 @@ public class SettingsManager { String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", codMdep, (value) -> { dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(value); - GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", codMdep, (gestSetupDTO) -> { - dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(value); + GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", codMdep, (setupValue) -> { + dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(setupValue); if (onComplete != null) onComplete.run(); }, onFailed); }, onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java new file mode 100644 index 00000000..17b95d99 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java @@ -0,0 +1,321 @@ +package it.integry.integrywmsnative.gest.prod_dettaglio_linea; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.Html; +import android.text.InputType; +import android.text.SpannableString; +import android.widget.Toast; + +import androidx.databinding.Observable; +import androidx.databinding.ObservableField; + +import com.google.android.material.chip.Chip; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +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.di.BindableBoolean; +import it.integry.integrywmsnative.core.di.BindableString; +import it.integry.integrywmsnative.core.expansion.BaseActivity; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.ActivityProdDettaglioLineaBinding; +import it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs.BottomSheetLineAction; +import it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs.DialogStartProduction; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; +import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; +import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; + +public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDettaglioLineaViewModel.Listener { + + private static final String DATA_KEY_LINE = "keyLinea"; + + private ActivityProdDettaglioLineaBinding mBinding; + public final ObservableField listaOrd = new ObservableField<>(); + public final BindableString lineaLabel = new BindableString(); + public final BindableBoolean isStarted = new BindableBoolean(false); + public final BindableBoolean isPaused = new BindableBoolean(false); + public final BindableBoolean flagShowProdInfo = new BindableBoolean(false); + public final BindableString hrNum = new BindableString(); + public final BindableString codMart = new BindableString(); + public final BindableString partitaMag = new BindableString(); + public final BindableString productDescription = new BindableString(); + + private int barcodeScannerIstanceID = -1; + + @Inject + ProdDettaglioLineaViewModel mViewModel; + + @Inject + DialogInputQuantityV2View mDialogInputQuantityV2View; + + + public static Intent newInstance(Context context, ProdLineStatusDTO prodLine) { + Intent myIntent = new Intent(context, ProdDettaglioLineaActivity.class); + String keyLine = DataCache.addItem(prodLine); + myIntent.putExtra(DATA_KEY_LINE, keyLine); + return myIntent; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mBinding = ActivityProdDettaglioLineaBinding.inflate(getLayoutInflater()); + setContentView(mBinding.getRoot()); + setSupportActionBar(mBinding.toolbar); + setTitle(R.string.line_details); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + ProdLineStatusDTO lineaProd = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_LINE)); + if (lineaProd == null) { + Toast.makeText(this, "Selezionare una linea di produzione e riprovare", Toast.LENGTH_SHORT).show(); + close(); + return; + } + + MainApplication.appComponent + .prodDettaglioLineaComponent() + .create() + .inject(this); + + + mViewModel.setListener(this); + mBinding.setViewModel(mViewModel); + mBinding.setView(this); + this.init(); + mViewModel.init(lineaProd); + + } + + private void init() { + initBarcodeReader(); + mViewModel.lineaProd.observe(this, lineaProd -> { + this.listaOrd.set(lineaProd.getListaOrd()); + this.lineaLabel.set(lineaProd.getLabel()); + this.isStarted.set(lineaProd.isStarted()); + this.isPaused.set(lineaProd.isPaused()); + this.partitaMag.set(lineaProd.getPartitaMag()); + this.codMart.set(lineaProd.getCodMart()); + this.productDescription.set(lineaProd.getDescrizioneProd()); + this.flagShowProdInfo.set(lineaProd.isStarted() && !UtilityString.isNullOrEmpty(lineaProd.getCodMart())); + this.hrNum.set(lineaProd.getQtaAllocate().toString()); + }); + listaOrd.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + renderOrdersChips(); + } + }); + } + + private void renderOrdersChips() { + mBinding.ordersList.removeAllViews(); + String listaOrdString = listaOrd.get(); + if (!UtilityString.isNullOrEmpty(listaOrdString)) { + for (String ord : listaOrdString.split("\\|")) { + Chip chip = new Chip(this); + chip.setClickable(false); + chip.setText(ord); + mBinding.ordersList.addView(chip); + } + } + } + + + @Override + public boolean onSupportNavigateUp() { + onBackPressed(); + return true; + } + + + public void onSettingsRequest(ProdLineStatusDTO lineaProd) { + BottomSheetLineAction.newInstance(lineaProd, this::requestResources, this::requestOrderChange, this::requestProductionStop, this::requestMaterialRecover, BarcodeManager::enable).show(getSupportFragmentManager(), "BottomSheetLineAction"); + } + + @Override + public void requestQtaVersamento(MtbColr mtbColr, + RunnableArgs onComplete) { + onLoadingStarted(); + DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() + .setMtbAart(mtbColr.getMtbAart()) + .setInitialNumCnf(mtbColr.getNumCnf()) + .setInitialQtaCnf(mtbColr.getQtaCnf()) + .setInitialQtaTot(mtbColr.getQtaCol()) + .setTotalQtaAvailable(mtbColr.getQtaCol()) + .setTotalNumCnfAvailable(mtbColr.getNumCnf()) + .setQtaCnfAvailable(mtbColr.getQtaCnf()) + .setPartitaMag(mtbColr.getPartitaMag()) + .setDataScad(mtbColr.getDataScadPartitaD()) + .setCanOverflowOrderQuantity(false) + .setCanPartitaMagBeChanged(false) + .setCanLUBeClosed(false) + .setFocusOnStart(false); + + if (!mDialogInputQuantityV2View.isVisible()) + this.runOnUiThread(() -> { + onLoadingEnded(); + mDialogInputQuantityV2View + .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) + .setOnComplete((resultDTO, shouldCloseLU) -> { + + PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() + .setNumCnf(resultDTO.getNumCnf()) + .setQtaCnf(resultDTO.getQtaCnf()) + .setQtaTot(resultDTO.getQtaTot()) + .setPartitaMag(resultDTO.getPartitaMag()) + .setDataScad(resultDTO.getDataScad()); + + onComplete.run(pickedQuantityDTO); + + }) + .setOnAbort(this::onLoadingEnded) + .show(this.getSupportFragmentManager(), "tag"); + }); + else this.onLoadingEnded(); + } + + public void onLineStop() { + onBackPressed(); + } + + public void askForLUBarcode() { + this.onLoadingEnded(); + this.runOnUiThread(() -> { + DialogStartProduction.newInstance((dto) -> { + this.mViewModel.checkBarcodeAndStartOrdine(dto); + }, + UtilityResources.getString(R.string.title_open_lu), + UtilityResources.getString(R.string.scan_lu_to_recover) + ).show(getSupportFragmentManager(), "DialogStartProduction"); + }); + } + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(onScanSuccessful) + .setOnScanFailed(this::onError)); + + BarcodeManager.enable(); + } + + + public void requestResources() { + this.onLoadingEnded(); + BarcodeManager.disable(); + this.runOnUiThread(() -> { + + DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il numero di risorse da allocare", qta -> { + this.onLoadingStarted(); + try { + Integer hrNum = Integer.parseInt(qta); + this.mViewModel.startProductionLine(hrNum); + } catch (NumberFormatException ex) { + this.onError(new Exception("Inserire un numero di risorse valido")); + } + }, BarcodeManager::enable, InputType.TYPE_CLASS_NUMBER).show(); + }); + } + + public void requestOrderChange() { + this.onLoadingEnded(); + this.runOnUiThread(() -> { + DialogStartProduction.newInstance((dto) -> { + this.mViewModel.checkBarcodeAndStartOrdine(dto); + }).show(getSupportFragmentManager(), "DialogStartProduction"); + }); + } + + public void requestProductionStop() { + this.onLoadingEnded(); + BarcodeManager.disable(); + ProdLineStatusDTO lineaProd = mViewModel.getLineaProd(); + if (UtilityString.isNullOrEmpty(lineaProd.getListaOrd())) { + mViewModel.stopProduction(); + } else { + this.confirmOrderClose(() -> { + mViewModel.stopProduction(); + }); + } + + + } + + public void requestMaterialRecover() { + this.onLoadingEnded(); + BarcodeManager.disable(); + this.runOnUiThread(() -> { + getSupportFragmentManager() + .beginTransaction() + .add(R.id.frame_layout_container, + ProdRecuperoMaterialeFragment.newInstance(mViewModel.lineaProd.getValue().getCodJfas())) + .addToBackStack("ProdRecuperoMaterialeFragment") + .commit(); + + }); + + + } + + @Override + public void successDialog(String message, Runnable onComplete) { + BarcodeManager.disable(); + + this.runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog(getResources().getString(R.string.success), + new SpannableString(message), null, onComplete).show(getSupportFragmentManager(), "successDialog")); + + } + + private final RunnableArgs onScanSuccessful = data -> { + this.onLoadingStarted(); + + this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded); + + }; + + + @Override + public void confirmOrderClose(Runnable onConfirm) { + this.onLoadingEnded(); + this.runOnUiThread(() -> { + DialogSimpleMessageView.makeWarningDialog( + Html.fromHtml("Per completare l'operazione è necessario chiudere gli ordini attualmente aperti sulla linea." + + "

" + + "Continuare?"), + null, + onConfirm, + BarcodeManager::enable + ).show(getSupportFragmentManager(), "confirmOrderClose"); + }); + } + + + public void close() { + onBackPressed(); + } + + @Override + public void onBackPressed() { + int count = getSupportFragmentManager().getBackStackEntryCount(); + if (count > 0) { + getSupportFragmentManager().popBackStack(); + } else { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + super.onBackPressed(); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaComponent.java new file mode 100644 index 00000000..af42745c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.prod_dettaglio_linea; + +import dagger.Subcomponent; + +@Subcomponent +public interface ProdDettaglioLineaComponent { + + @Subcomponent.Factory + interface Factory { + + ProdDettaglioLineaComponent create(); + } + + void inject(ProdDettaglioLineaActivity prodDettaglioLineaActivity); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaModule.java new file mode 100644 index 00000000..9151d9bd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaModule.java @@ -0,0 +1,19 @@ +package it.integry.integrywmsnative.gest.prod_dettaglio_linea; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; + +@Module(subcomponents = ProdDettaglioLineaComponent.class) +public class ProdDettaglioLineaModule { + + + @Provides + ProdDettaglioLineaViewModel providesProdDettaglioLineaViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) { + return new ProdDettaglioLineaViewModel(productionLinesRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer, mesRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java new file mode 100644 index 00000000..6b32581a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java @@ -0,0 +1,238 @@ +package it.integry.integrywmsnative.gest.prod_dettaglio_linea; + +import androidx.lifecycle.MutableLiveData; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.exception.NoLUFoundException; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +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.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; +import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; + +public class ProdDettaglioLineaViewModel { + + private Listener mListener; + + private final ProductionLinesRESTConsumer productionLinesRESTConsumer; + private final ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer; + private final MesRESTConsumer mesRESTConsumer; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + public final MutableLiveData lineaProd = new MutableLiveData<>(); + + + @Inject + public ProdDettaglioLineaViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer magazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) { + this.productionLinesRESTConsumer = productionLinesRESTConsumer; + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.colliMagazzinoRESTConsumer = magazzinoRESTConsumer; + this.mesRESTConsumer = mesRESTConsumer; + } + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + this.executeEtichettaAnonima(barcodeScanDTO, onComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.executeEAN128(barcodeScanDTO, onComplete); + } else { + onComplete.run(); + } + } + + private void executeEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + handleSSCCBarcode(barcodeScanDTO.getStringValue(), onComplete); + } + + private void handleSSCCBarcode(String sscc, Runnable onComplete) { + this.colliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> { + + if (mtbColt == null) { + this.sendError(new NoLUFoundException()); + } else { + if (mtbColt.getMtbColr().size() <= 0) { + this.sendError(new Exception("E' stata scansionata una UL già vuota")); + } + onComplete.run(); + this.sendOnLUSelected(mtbColt); + } + + }, this::sendError); + } + + private void sendOnLUSelected(MtbColt mtbColt) { + this.sendOnLoadingStarted(); + this.checkOrdersCompatibility(mtbColt, () -> { + MtbColr row = mtbColt.getMtbColr().get(0); + mListener.requestQtaVersamento( + row, + dto -> { + sendOnLoadingStarted(); + row.setQtaCnf(dto.getQtaCnf()); + row.setNumCnf(dto.getNumCnf()); + row.setQtaCol(dto.getQtaTot()); + row.setPesoLordoKg(null); + row.setPesoNettoKg(null); + ProdLineStatusDTO prodLine = lineaProd.getValue(); + MtbDepoPosizione posizione = new MtbDepoPosizione(); + posizione.setPosizione(prodLine.getCodJfas()); + posizione.setCodMdep(prodLine.getCodMdepLav()); + posizione.setFlagLineaProduzione("S"); + this.colliMagazzinoRESTConsumer.createColloScaricoDaCarico(mtbColt, posizione, + generatedMtbColt -> { + this.sendOnLoadingEnded(); + this.mListener.successDialog("Versamento completato!", BarcodeManager::enable); + }, this::sendError); + }); + }); + } + + private void checkOrdersCompatibility(MtbColt mtbColt, Runnable onComplete) { + mesRESTConsumer.getOrdiniLavorazioneMateriale(lineaProd.getValue().getCodJfas(), getIdMaterialeFromCollo(mtbColt), ordini -> { + if (ordini != null && ordini.size() > 0) { + onComplete.run(); + } else { + this.sendError(new Exception("Nessun ordine compatibile disponibile sulla linea selezionata")); + } + }, this::sendError); + } + + private String getIdMaterialeFromCollo(MtbColt mtbColt) { + MtbAart articolo = mtbColt.getMtbColr().get(0).getMtbAart(); + return UtilityString.isNullOrEmpty(articolo.getIdArtEqui()) ? articolo.getCodMart() : articolo.getIdArtEqui(); + } + + + private void executeEAN128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + if (ean128Model != null && !UtilityString.isNullOrEmpty(ean128Model.Sscc)) { + handleSSCCBarcode(ean128Model.Sscc, onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + + }, this::sendError); + } + + public void settings() { + this.mListener.onSettingsRequest(lineaProd.getValue()); + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + public void startProductionLine(Integer hrNum) { + this.sendOnLoadingStarted(); + ProdLineStatusDTO prodLine = lineaProd.getValue(); + this.productionLinesRESTConsumer.avviaLineaDiProduzione(prodLine.getCodJfas(), + hrNum, + () -> this.mListener.successDialog("Operazione completata", this::loadLineDetails), + this::sendError); + } + + + private void startProduction(String codMart, String partitaMag) { + this.sendOnLoadingStarted(); + ProdLineStatusDTO prodLine = lineaProd.getValue(); + this.productionLinesRESTConsumer.avviaProduzioneArticoloSuLinea(prodLine.getCodJfas(), codMart, partitaMag, + () -> this.mListener.successDialog("Operazione completata", this::loadLineDetails), + this::sendError); + } + + public void stopProduction() { + this.sendOnLoadingStarted(); + ProdLineStatusDTO prodLine = lineaProd.getValue(); + this.productionLinesRESTConsumer.arrestaLineaDiProduzione(prodLine.getCodJfas(), + () -> this.mListener.successDialog("Operazione completata", this::onLineStop), + this::sendError); + } + + private void onLineStop() { + this.mListener.onLineStop(); + } + + public void checkBarcodeAndStartOrdine(BarcodeScanDTO dto) { + this.sendOnLoadingStarted(); + ProdLineStatusDTO prodLine = lineaProd.getValue(); + mBarcodeRESTConsumer.decodeEan128(dto, (ean128) -> { + String codMart = ean128.Content; + String partitaMag = ean128.BatchLot; + if (!prodLine.isStarted()) { + this.sendError(new Exception("Impossibile avviare una produzione su una linea ferma!")); + } else if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) { + this.startProduction(codMart, partitaMag); + } else { + this.mListener.confirmOrderClose(() -> { + this.startProduction(codMart, partitaMag); + }); + } + }, this::sendError); + } + + public void loadLineDetails() { + sendOnLoadingStarted(); + if (lineaProd.getValue() == null) { + this.sendError(new Exception("Nessuna linea selezionata!")); + return; + } + productionLinesRESTConsumer.getLineDetails(lineaProd.getValue(), linea -> { + this.lineaProd.postValue(linea); + sendOnLoadingEnded(); + }, this::sendError); + } + + public void init(ProdLineStatusDTO lineaProd) { + this.lineaProd.setValue(lineaProd); + this.loadLineDetails(); + } + + public ProdLineStatusDTO getLineaProd() { + return lineaProd.getValue(); + } + + public void beginMaterialRecover() { + this.mListener.askForLUBarcode(); + } + + public interface Listener extends ILoadingListener { + void onError(Exception ex); + + void successDialog(String message, Runnable onComplete); + + void requestQtaVersamento(MtbColr mtbColr, RunnableArgs onComplete); + + void onSettingsRequest(ProdLineStatusDTO lineaProd); + + void onLineStop(); + + void askForLUBarcode(); + + void confirmOrderClose(Runnable onConfirm); + } + + public ProdDettaglioLineaViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/BottomSheetLineAction.java similarity index 73% rename from app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/BottomSheetLineAction.java index 07f3f01c..6a41b8ac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/BottomSheetLineAction.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/BottomSheetLineAction.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs; +package it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs; import android.content.DialogInterface; import android.os.Bundle; @@ -11,7 +11,6 @@ import androidx.annotation.Nullable; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.databinding.BottomSheetLineActionsBinding; import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; @@ -20,17 +19,19 @@ public class BottomSheetLineAction extends BottomSheetDialogFragment { private BottomSheetLineActionsBinding mBinding; private ProdLineStatusDTO prodLine; - private RunnableArgs onChangeResourcesRequest; - private RunnableArgs onChangeOrdersRequest; - private RunnableArgs onLineCloseRequest; + private Runnable onChangeResourcesRequest; + private Runnable onChangeOrdersRequest; + private Runnable onLineCloseRequest; + private Runnable onRecoverRequest; private Runnable onCancelAction; - public static BottomSheetLineAction newInstance(ProdLineStatusDTO dto, RunnableArgs onChangeResourcesRequest, RunnableArgs onChangeOrdersRequest, RunnableArgs onLineCloseRequest, Runnable onCancel) { + public static BottomSheetLineAction newInstance(ProdLineStatusDTO dto, Runnable onChangeResourcesRequest, Runnable onChangeOrdersRequest, Runnable onLineCloseRequest, Runnable onRecoverRequest, Runnable onCancel) { BottomSheetLineAction fragment = new BottomSheetLineAction(); fragment .setProdLine(dto) .setOnChangeResourcesRequest(onChangeResourcesRequest) .setOnChangeOrdersRequest(onChangeOrdersRequest) + .setOnRecoverRequest(onRecoverRequest) .setOnLineCloseRequest(onLineCloseRequest) .setOnCancelAction(onCancel); return fragment; @@ -53,19 +54,24 @@ public class BottomSheetLineAction extends BottomSheetDialogFragment { return this; } - public BottomSheetLineAction setOnChangeResourcesRequest(RunnableArgs onChangeResourcesRequest) { + public BottomSheetLineAction setOnChangeResourcesRequest(Runnable onChangeResourcesRequest) { this.onChangeResourcesRequest = onChangeResourcesRequest; return this; } - public BottomSheetLineAction setOnChangeOrdersRequest(RunnableArgs onChangeOrdersRequest) { + public BottomSheetLineAction setOnChangeOrdersRequest(Runnable onChangeOrdersRequest) { this.onChangeOrdersRequest = onChangeOrdersRequest; return this; } + public BottomSheetLineAction setOnRecoverRequest(Runnable onRecoverRequest) { + this.onRecoverRequest = onRecoverRequest; + return this; + } - public BottomSheetLineAction setOnLineCloseRequest(RunnableArgs onLineCloseRequest) { + + public BottomSheetLineAction setOnLineCloseRequest(Runnable onLineCloseRequest) { this.onLineCloseRequest = onLineCloseRequest; return this; } @@ -81,7 +87,7 @@ public class BottomSheetLineAction extends BottomSheetDialogFragment { public void onResourcesClicked() { if (this.onChangeResourcesRequest != null) { - this.onChangeResourcesRequest.run(prodLine); + this.onChangeResourcesRequest.run(); } this.dismiss(); @@ -89,14 +95,21 @@ public class BottomSheetLineAction extends BottomSheetDialogFragment { public void onPlayClicked() { if (this.onChangeOrdersRequest != null) { - this.onChangeOrdersRequest.run(prodLine); + this.onChangeOrdersRequest.run(); } this.dismiss(); } public void onStopClicked() { if (this.onLineCloseRequest != null) { - this.onLineCloseRequest.run(prodLine); + this.onLineCloseRequest.run(); + } + this.dismiss(); + } + + public void onRecoverClicked() { + if (this.onRecoverRequest != null) { + this.onRecoverRequest.run(); } this.dismiss(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogRecoverUl.java similarity index 86% rename from app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogRecoverUl.java index d1fa80ba..6a1c292a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dialogs/DialogStartProduction.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogRecoverUl.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs; +package it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs; import android.content.DialogInterface; import android.graphics.Color; @@ -19,16 +19,16 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.databinding.DialogStartProductionBinding; -public class DialogStartProduction extends BaseDialogFragment { +public class DialogRecoverUl extends BaseDialogFragment { private int barcodeScannerIstanceID = -1; private RunnableArgs onScanSuccessful; private DialogStartProductionBinding mBinding; - public static DialogStartProduction newInstance(RunnableArgs onScanSuccessful) { + public static DialogRecoverUl newInstance(RunnableArgs onScanSuccessful) { Bundle args = new Bundle(); - DialogStartProduction fragment = new DialogStartProduction(); + DialogRecoverUl fragment = new DialogRecoverUl(); fragment.setArguments(args); fragment.setOnScanSuccessful(onScanSuccessful); return fragment; @@ -41,7 +41,7 @@ public class DialogStartProduction extends BaseDialogFragment { super.onDismiss(dialog); } - public DialogStartProduction setOnScanSuccessful(RunnableArgs onScanSuccessful) { + public DialogRecoverUl setOnScanSuccessful(RunnableArgs onScanSuccessful) { this.onScanSuccessful = onScanSuccessful; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java new file mode 100644 index 00000000..a90fb0b4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java @@ -0,0 +1,117 @@ +package it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogStartProductionBinding; + +public class DialogStartProduction extends BaseDialogFragment { + private int barcodeScannerIstanceID = -1; + private RunnableArgs onScanSuccessful; + private DialogStartProductionBinding mBinding; + private String title; + private String label; + + public static DialogStartProduction newInstance(RunnableArgs onScanSuccessful) { + + Bundle args = new Bundle(); + + DialogStartProduction fragment = new DialogStartProduction(); + fragment.setArguments(args); + fragment.setOnScanSuccessful(onScanSuccessful); + return fragment; + } + + public static DialogStartProduction newInstance(RunnableArgs onScanSuccessful, String title, String label) { + + Bundle args = new Bundle(); + + DialogStartProduction fragment = new DialogStartProduction(); + fragment.setTitle(title); + fragment.setLabel(label); + fragment.setArguments(args); + fragment.setOnScanSuccessful(onScanSuccessful); + return fragment; + } + + public String getTitle() { + return title; + } + + public DialogStartProduction setTitle(String title) { + this.title = title; + return this; + } + + public String getLabel() { + return label; + } + + public DialogStartProduction setLabel(String label) { + this.label = label; + return this; + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + super.onDismiss(dialog); + } + + public DialogStartProduction setOnScanSuccessful(RunnableArgs onScanSuccessful) { + this.onScanSuccessful = onScanSuccessful; + return this; + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mBinding = DialogStartProductionBinding.inflate(inflater, container, false); + mBinding.setLifecycleOwner(this); + this.initBarcodeReader(); + setCancelable(true); + getDialog().setCanceledOnTouchOutside(true); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + if (!UtilityString.isNullOrEmpty(title)) { + mBinding.titleText.setText(title); + } + + if (!UtilityString.isNullOrEmpty(label)) { + mBinding.scanLabel.setText(label); + } + return mBinding.getRoot(); + } + + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(this::processBarcode) + .setOnScanFailed(this::onError)); + BarcodeManager.enable(); + } + + private void processBarcode(BarcodeScanDTO barcodeScanDTO) { + if (UtilityBarcode.isEan128(barcodeScanDTO)) { + this.onScanSuccessful.run(barcodeScanDTO); + this.dismiss(); + } else { + this.onError(new Exception("Il barcode scansionato non è valido!")); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java index 92fa730b..6211e578 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java @@ -2,7 +2,6 @@ package it.integry.integrywmsnative.gest.prod_linee_produzione; import android.content.Context; import android.os.Bundle; -import android.text.Html; import android.text.InputType; import android.text.SpannableString; import android.view.LayoutInflater; @@ -10,7 +9,6 @@ import android.view.View; import android.view.ViewGroup; import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; @@ -27,10 +25,8 @@ import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentLineeProdBinding; -import it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs.BottomSheetLineAction; -import it.integry.integrywmsnative.gest.prod_linee_produzione.dialogs.DialogStartProduction; +import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaActivity; import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; import it.integry.integrywmsnative.gest.prod_linee_produzione.ui.LinesListAdapter; import it.integry.integrywmsnative.ui.ElevatedToolbar; @@ -60,8 +56,7 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - - mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_linee_prod, container, false); + mBinding = FragmentLineeProdBinding.inflate(inflater, container, false); MainApplication.appComponent .prodLineeProduzioneComponent() .create() @@ -71,11 +66,17 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled mBinding.setLifecycleOwner(this); this.initRecyclerView(); this.initBarcodeReader(); - mViewModel.init(); return mBinding.getRoot(); } + @Override + public void onStart() { + super.onStart(); + mViewModel.init(); + } + + private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessful(onScanSuccessful) @@ -123,28 +124,6 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled }); } - public void requestOrderChange(ProdLineStatusDTO prodLine) { - this.onLoadingEnded(); - requireActivity().runOnUiThread(() -> { - DialogStartProduction.newInstance((dto) -> { - this.mViewModel.checkBarcodeAndStartOrdine(prodLine, dto); - }).show(getChildFragmentManager(), "DialogStartProduction"); - }); - } - - public void requestProductionStop(ProdLineStatusDTO prodLine) { - this.onLoadingEnded(); - BarcodeManager.disable(); - if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) { - mViewModel.stopProduction(prodLine); - } else { - this.confirmOrderClose(() -> { - mViewModel.stopProduction(prodLine); - }); - } - - } - @Override public void successDialog(String message, Runnable onComplete) { BarcodeManager.disable(); @@ -160,25 +139,10 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled if (!dto.isStarted()) { this.requestResources(dto); } else { - BottomSheetLineAction.newInstance(dto, this::requestResources, this::requestOrderChange, this::requestProductionStop, BarcodeManager::enable).show(getChildFragmentManager(), "BottomSheetLineAction"); + requireActivity().startActivity(ProdDettaglioLineaActivity.newInstance(requireActivity(), dto)); } } - @Override - public void confirmOrderClose(Runnable onConfirm) { - this.onLoadingEnded(); - requireActivity().runOnUiThread(() -> { - DialogSimpleMessageView.makeWarningDialog( - Html.fromHtml("Per completare l'operazione è necessario chiudere gli ordini attualmente aperti sulla linea." - + "

" + - "Continuare?"), - null, - onConfirm, - BarcodeManager::enable - ).show(getChildFragmentManager(), "confirmOrderClose"); - }); - } - @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java index a36e3629..3d75435a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneModule.java @@ -1,10 +1,7 @@ package it.integry.integrywmsnative.gest.prod_linee_produzione; -import javax.inject.Singleton; - import dagger.Module; import dagger.Provides; -import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent; @@ -12,14 +9,8 @@ import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceCompo public class ProdLineeProduzioneModule { @Provides - ProdLineeProduzioneViewModel providesProdRientroMerceViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { - return new ProdLineeProduzioneViewModel(productionLinesRESTConsumer, barcodeRESTConsumer); - } - - @Provides - @Singleton - ProductionLinesRESTConsumer providesProductionLinesRESTConsumer() { - return new ProductionLinesRESTConsumer(); + ProdLineeProduzioneViewModel providesProdRientroMerceViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer) { + return new ProdLineeProduzioneViewModel(productionLinesRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java index d2ac9714..326c8ed2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneViewModel.java @@ -11,40 +11,34 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; -import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; public class ProdLineeProduzioneViewModel { private final ProductionLinesRESTConsumer productionLinesRESTConsumer; - private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final MutableLiveData> prodLines = new MutableLiveData<>(); private Listener mListener; @Inject - public ProdLineeProduzioneViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { + public ProdLineeProduzioneViewModel(ProductionLinesRESTConsumer productionLinesRESTConsumer) { this.productionLinesRESTConsumer = productionLinesRESTConsumer; - this.mBarcodeRESTConsumer = barcodeRESTConsumer; } public void init() { - this.sendOnLoadingStarted(); reloadLines(); - } private void reloadLines() { - BarcodeManager.disable(); sendOnLoadingStarted(); + BarcodeManager.disable(); this.productionLinesRESTConsumer.getStatoLinee(SettingsManager.i().getUserSession().getDepo().getCodMdep(), lineeProdList -> { - this.sendOnLoadingEnded(); BarcodeManager.enable(); prodLines.postValue(lineeProdList); + this.sendOnLoadingEnded(); }, this::sendError); } @@ -58,15 +52,12 @@ public class ProdLineeProduzioneViewModel { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) { String codJfas = barcodeScanDTO.getStringValue(); - ProdLineStatusDTO prodLine = prodLines.getValue() != null ? Stream.of(prodLines.getValue()).filter(x -> x.getCodJfas().equalsIgnoreCase(codJfas)).findFirstOrElse(null) : null; if (prodLine != null) { this.onLineSelected(prodLine); } else { this.sendError(new Exception("Linea di produzione " + codJfas + " non trovata")); } - - } @@ -94,37 +85,6 @@ public class ProdLineeProduzioneViewModel { mListener.selectLine(lineSelected); } - public void checkBarcodeAndStartOrdine(ProdLineStatusDTO prodLine, BarcodeScanDTO dto) { - this.sendOnLoadingStarted(); - mBarcodeRESTConsumer.decodeEan128(dto, (ean128) -> { - String codMart = ean128.Content; - String partitaMag = ean128.BatchLot; - if (!prodLine.isStarted()) { - this.sendError(new Exception("Impossibile avviare una produzione su una linea ferma!")); - } else if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) { - this.startProduction(prodLine, codMart, partitaMag); - } else { - this.mListener.confirmOrderClose(() -> { - this.startProduction(prodLine, codMart, partitaMag); - }); - } - }, this::sendError); - } - - private void startProduction(ProdLineStatusDTO prodLine, String codMart, String partitaMag) { - this.sendOnLoadingStarted(); - this.productionLinesRESTConsumer.avviaProduzioneArticoloSuLinea(prodLine.getCodJfas(), codMart, partitaMag, - () -> this.mListener.successDialog("Operazione completata", this::reloadLines), - this::sendError); - } - - public void stopProduction(ProdLineStatusDTO prodLine) { - this.sendOnLoadingStarted(); - this.productionLinesRESTConsumer.arrestaLineaDiProduzione(prodLine.getCodJfas(), - () -> this.mListener.successDialog("Operazione completata", this::reloadLines), - this::sendError); - } - public interface Listener extends ILoadingListener { @@ -134,8 +94,6 @@ public class ProdLineeProduzioneViewModel { void selectLine(ProdLineStatusDTO prodLineStatusDTO); - void confirmOrderClose(Runnable onConfirm); - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java index 10808248..eee545c4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/dto/ProdLineStatusDTO.java @@ -16,12 +16,18 @@ public class ProdLineStatusDTO { private Date datetimeEnd; + private String codMart; + + private String partitaMag; + private BigDecimal maxAllocazione; private Integer qtaAllocate; private String listaOrd; + private String descrizioneProd; + public String getCodJfas() { return codJfas; @@ -126,4 +132,31 @@ public class ProdLineStatusDTO { return qtaAllocate + (maxAllocazione != null && maxAllocazione.compareTo(BigDecimal.ZERO) > 0 ? "/" + maxAllocazione : ""); } + public String getCodMart() { + return codMart; + } + + public ProdLineStatusDTO setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getPartitaMag() { + return partitaMag; + } + + public ProdLineStatusDTO setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + + public String getDescrizioneProd() { + return descrizioneProd; + } + + public ProdLineStatusDTO setDescrizioneProd(String descrizioneProd) { + this.descrizioneProd = descrizioneProd; + return this; + } } 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 557c217f..2aab53aa 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 @@ -59,6 +59,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl private FragmentProdRecuperoMaterialeBinding mBinding; private int barcodeScannerIstanceID = -1; + private String codJfas; private final ObservableArrayList mHistoryULMutableData = new ObservableArrayList<>(); @@ -67,7 +68,12 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl } public static ProdRecuperoMaterialeFragment newInstance() { + return newInstance(null); + } + + public static ProdRecuperoMaterialeFragment newInstance(String codJfas) { ProdRecuperoMaterialeFragment fragment = new ProdRecuperoMaterialeFragment(); + fragment.setCodJfas(codJfas); return fragment; } @@ -96,8 +102,12 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl @Override public void onStart() { super.onStart(); - - mViewModel.init(); + this.addOnPreDestroy(() -> { + if (barcodeScannerIstanceID > -1) { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + } + }); + mViewModel.init(codJfas); } @@ -115,6 +125,15 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl BarcodeManager.enable(); } + public String getCodJfas() { + return codJfas; + } + + public ProdRecuperoMaterialeFragment setCodJfas(String codJfas) { + this.codJfas = codJfas; + return this; + } + private final RunnableArgs onScanSuccessful = data -> { this.onLoadingStarted(); @@ -133,7 +152,9 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl mBinding.prodRecuperoMaterialeMainList.setAdapter(adapter); - mToolbar.setRecyclerView(mBinding.prodRecuperoMaterialeMainList); + if (mToolbar != null) + mToolbar.setRecyclerView(mBinding.prodRecuperoMaterialeMainList); + } private void refreshList(List filteredList) { @@ -230,11 +251,11 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl public void onLUPrintError(Exception ex, Runnable onComplete) { this.onLoadingEnded(); DialogSimpleMessageView.makeErrorDialog( - new SpannableString(ex.getMessage()), - null, - null, - R.string.button_ignore_print, - onComplete) + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java index 5ea748b6..ba014ab2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java @@ -51,11 +51,11 @@ public class ProdRecuperoMaterialeViewModel { this.mPrinterRESTConsumer = printerRESTConsumer; } - public void init() { + public void init(String codJfas) { this.sendOnLoadingStarted(); new Thread(() -> { - mProdRecuperMaterialeRESTConsumer.loadLastULVersate(ulList -> { + mProdRecuperMaterialeRESTConsumer.loadLastULVersate(codJfas, ulList -> { this.mUlList.setValue(ulList); this.sendOnLoadingEnded(); @@ -151,27 +151,64 @@ public class ProdRecuperoMaterialeViewModel { BigDecimal totalSumOfQtaCol = BigDecimal.ZERO; BigDecimal totalSumOfNumCnf = BigDecimal.ZERO; - for (HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) { + if (SettingsManager.iDB().isFlagVersamentoDirettoProduzione()) { + for (HistoryVersamentoProdULDTO.OrdineDto ordine : item.getOrdini()) { + BigDecimal qtaColToSave; + BigDecimal numCnfToSave; + + if (SettingsManager.iDB().isFlagForceAllToColli() || (item.getMtbAart() != null && !item.getMtbAart().isFlagQtaCnfFissaBoolean())) { + numCnfToSave = UtilityBigDecimal.divideAndRoundToInteger(inputNumCnf.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR); + qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, BigDecimal.ROUND_FLOOR); + } else { + qtaColToSave = UtilityBigDecimal.divideAndRoundToInteger(inputQtaTot.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR); + numCnfToSave = UtilityBigDecimal.divide(qtaColToSave, item.getQtaCnf(), RoundingMode.FLOOR); + } + + + totalSumOfQtaCol = totalSumOfQtaCol.add(qtaColToSave); + totalSumOfNumCnf = totalSumOfNumCnf.add(numCnfToSave); + + numCnfToSave = numCnfToSave.multiply(BigDecimal.valueOf(-1)); + qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1)); + + + final MtbColr mtbColrScarico = new MtbColr() + .setCodMart(item.getCodMart()) + .setPartitaMag(UtilityString.empty2null(item.getPartitaMag())) + .setQtaCol(qtaColToSave) + .setQtaCnf(inputQtaCnf) + .setNumCnf(numCnfToSave) + .setDescrizione(UtilityString.isNullOrEmpty(item.getMtbAart().getDescrizioneEstesa()) ? item.getMtbAart().getDescrizione() : item.getMtbAart().getDescrizioneEstesa()) + .setDatetimeRow(UtilityDate.getDateInstance()) + .setNumColloRif(item.getNumColloRif()) + .setDataColloRif(item.getDataColloRif()) + .setGestioneRif(item.getGestioneRif()) + .setSerColloRif(item.getSerColloRif()) + .setDataOrd(ordine.getData()) + .setNumOrd(ordine.getNumero()) + .setRigaOrd(ordine.getRigaOrd()); + + mtbColrScarico.setOperation(CommonModelConsts.OPERATION.INSERT); + mtbColtScarico.getMtbColr().add(mtbColrScarico); + } + } else { BigDecimal qtaColToSave; BigDecimal numCnfToSave; - if (SettingsManager.iDB().isFlagForceAllToColli() || (item.getMtbAart() != null && !item.getMtbAart().isFlagQtaCnfFissaBoolean())) { - numCnfToSave = UtilityBigDecimal.divideAndRoundToInteger(inputNumCnf.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR); + numCnfToSave = inputNumCnf; qtaColToSave = numCnfToSave.multiply(inputQtaCnf).setScale(0, BigDecimal.ROUND_FLOOR); } else { - qtaColToSave = UtilityBigDecimal.divideAndRoundToInteger(inputQtaTot.multiply(BigDecimal.valueOf(ordine.getPercentageHr())), BigDecimal.valueOf(100), RoundingMode.FLOOR); + qtaColToSave = inputQtaTot; numCnfToSave = UtilityBigDecimal.divide(qtaColToSave, item.getQtaCnf(), RoundingMode.FLOOR); } - - totalSumOfQtaCol = totalSumOfQtaCol.add(qtaColToSave); - totalSumOfNumCnf = totalSumOfNumCnf.add(numCnfToSave); + totalSumOfQtaCol = qtaColToSave; + totalSumOfNumCnf = numCnfToSave; numCnfToSave = numCnfToSave.multiply(BigDecimal.valueOf(-1)); qtaColToSave = qtaColToSave.multiply(BigDecimal.valueOf(-1)); - final MtbColr mtbColrScarico = new MtbColr() .setCodMart(item.getCodMart()) .setPartitaMag(UtilityString.empty2null(item.getPartitaMag())) @@ -183,10 +220,7 @@ public class ProdRecuperoMaterialeViewModel { .setNumColloRif(item.getNumColloRif()) .setDataColloRif(item.getDataColloRif()) .setGestioneRif(item.getGestioneRif()) - .setSerColloRif(item.getSerColloRif()) - .setDataOrd(ordine.getData()) - .setNumOrd(ordine.getNumero()) - .setRigaOrd(ordine.getRigaOrd()); + .setSerColloRif(item.getSerColloRif()); mtbColrScarico.setOperation(CommonModelConsts.OPERATION.INSERT); mtbColtScarico.getMtbColr().add(mtbColrScarico); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java index 9d707a58..18276dc9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java @@ -16,6 +16,9 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDB; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULRestDTO; @@ -32,6 +35,10 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { public void loadLastULVersate(RunnableArgs> onComplete, RunnableArgs onFailed) { + loadLastULVersate(null, onComplete, onFailed); + } + + public void loadLastULVersate(String codJfas, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "WITH ul_list AS ( " + " SELECT jtb_fasi.cod_jfas, " + @@ -68,7 +75,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { " AND mtb_colr.data_collo = mtb_colt.data_collo " + " AND mtb_colr.ser_collo = mtb_colt.ser_collo " + " AND mtb_colr.gestione = mtb_colt.gestione " + - " INNER JOIN dtb_ord_steps ON dtb_ord_steps.data_ord = mtb_colr.data_ord " + + " " + (SettingsManager.iDB().isFlagVersamentoDirettoProduzione() ? "INNER" : "LEFT OUTER") + " join dtb_ord_steps ON dtb_ord_steps.data_ord = mtb_colr.data_ord " + " AND dtb_ord_steps.gestione = mtb_colr.gestione " + " AND dtb_ord_steps.num_ord = mtb_colr.num_ord " + " AND dtb_ord_steps.data_iniz is not null " + @@ -76,6 +83,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { " INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart " + " LEFT OUTER JOIN jtb_fasi ON mtb_colt.cod_jfas = jtb_fasi.cod_jfas " + " WHERE jtb_fasi.cod_jfas IS NOT NULL " + + (UtilityString.isNullOrEmpty(codJfas) ? "" : " AND jtb_fasi.cod_jfas = " + UtilityDB.valueToString(codJfas)) + " AND segno = -1 " + " AND mtb_colr.data_collo > DATEADD(DAY, -5, GETDATE()) " + " GROUP BY jtb_fasi.cod_jfas, " + @@ -177,7 +185,8 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { " ISNULL(max_ul.hr, '') = ISNULL(ul_list.hr, '') AND " + " max_ul.max_datetime_row = ul_list.datetime_row"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); this.mSystemRESTConsumer.>processSql(sql, typeOfObjectsList, ulList -> { if (ulList == null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index 2333b838..08213283 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -31,6 +31,7 @@ public class DialogInputQuantityV2DTO { private boolean isDataScadMandatory = false; private boolean isNotesAllowed = false; private boolean isNotesMandatory = false; + private boolean isFocusOnStart = true; private boolean canLUBeClosed; private boolean saveOnImeDone = false; @@ -131,6 +132,15 @@ public class DialogInputQuantityV2DTO { return this; } + public boolean isFocusOnStart() { + return isFocusOnStart; + } + + public DialogInputQuantityV2DTO setFocusOnStart(boolean focusOnStart) { + isFocusOnStart = focusOnStart; + return this; + } + public BigDecimal getTotalQtaAvailable() { return UtilityBigDecimal.round(totalQtaAvailable); } 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 9cddf4ea..a06b1b65 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,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia }); } this.onLoadingEnded(); - mBindings.inputNumCnfText.requestFocus(); + if (mDialogInputQuantityV2DTO.isFocusOnStart()) { + mBindings.inputNumCnfText.requestFocus(); + } return mBindings.getRoot(); } 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 f62f9a16..6d0ff184 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 @@ -98,7 +98,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(this::onError)); - + BarcodeManager.enable(); 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 cec29798..6ac64921 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 @@ -115,7 +115,7 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial public void onDismiss(@NonNull DialogInterface dialog) { BarcodeManager.removeCallback(mBarcodeScannerIstanceID); BarcodeManager.enable(); - if(openedMtbColt == null) { + if (openedMtbColt == null) { mOnComplete.run(null, false); } super.onDismiss(dialog); @@ -126,7 +126,7 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessful(onScanSuccessfull) .setOnScanFailed(this::onError)); - + BarcodeManager.enable(); setBarcodeListener(true); } @@ -150,11 +150,11 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial @Override public void onLUVenditaConfirmRequired(RunnableArgs onConfirm) { DialogSimpleMessageView.makeWarningDialog(new SpannableString(getString(R.string.lu_gest_v_loading_alert)), - null, () -> { - onConfirm.run(true); - }, () -> { - onConfirm.run(false); - }) + null, () -> { + onConfirm.run(true); + }, () -> { + onConfirm.run(false); + }) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/res/layout/activity_prod_dettaglio_linea.xml b/app/src/main/res/layout/activity_prod_dettaglio_linea.xml new file mode 100644 index 00000000..ecfd6b83 --- /dev/null +++ b/app/src/main/res/layout/activity_prod_dettaglio_linea.xml @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_line_actions.xml b/app/src/main/res/layout/bottom_sheet_line_actions.xml index 9bd37c8e..873ff9d3 100644 --- a/app/src/main/res/layout/bottom_sheet_line_actions.xml +++ b/app/src/main/res/layout/bottom_sheet_line_actions.xml @@ -8,18 +8,19 @@ + + - + android:padding="16dp"> + + + + + + + + diff --git a/app/src/main/res/layout/dialog_start_production.xml b/app/src/main/res/layout/dialog_start_production.xml index f9894f3a..a06b151c 100644 --- a/app/src/main/res/layout/dialog_start_production.xml +++ b/app/src/main/res/layout/dialog_start_production.xml @@ -59,6 +59,7 @@ android:layout_height="wrap_content" /> Picking non disponibile
Scansiona il codice a barre di un articolo Prima di procedere apri una nuova UL + Scansiona il codice a barre di una UL per versarla Articolo extra Info Info UL @@ -396,12 +397,16 @@ In lavorazione In pausa Ferma - Risorse allocate + Risorse assegnate Ordini in lavorazione + Lavorazione in corso Assegna risorse Avvia nuova produzione Arresta produzione Inizio produzione Ultima produzione Nessuna linea disponibile + Dettaglio linea + Materiali versati + Scansiona il codice a barre della UL da recuperare \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 56d8af0c..50b7eab4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -118,6 +118,7 @@ Please scan an item barcode Extra item Piece + Please scan a LU barcode to deposit between 3 and 30 alphanumeric characters enter a valid username @@ -404,10 +405,14 @@ Stopped Resources set Orders in progress + Production in progress Set resources Start production Stop production Production start Last production No production line available + Line details + Deposited products + Please scan the LU barcode to recover From 7a6097fa69dbd58038f202c367d2711e363cb02b Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 1 Jun 2022 19:23:49 +0200 Subject: [PATCH 04/15] -> v1.27.4 (291) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b576cdb8..94e29d29 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 290 - def appVersionName = '1.27.3' + def appVersionCode = 291 + def appVersionName = '1.27.4' signingConfigs { release { From b9001790beb1a2c89d7fe35812f13528203d8a3a Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 7 Jun 2022 12:56:26 +0200 Subject: [PATCH 05/15] corretto funzionamento rettifica giacenza al clik del pulsante indietro --- .../gest/rettifica_giacenze/RettificaGiacenzeFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3ef3d80f..b1b7d6bc 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 @@ -495,6 +495,6 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr @Override public void onPreDestroy(Runnable onComplete) { BarcodeManager.removeCallback(barcodeScannerIstanceID); - mViewModel.closeLU(false, onComplete); + mViewModel.closeLU(false); } } From 08d332e2c63ad9c42fe446e141729c768639e817 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 7 Jun 2022 17:33:32 +0200 Subject: [PATCH 06/15] Quando creo una pedana dalla funzione di rientro merce non inserendo il tipo collo, l'app si blocca. --- .../order_detail/ProdRientroMerceOrderDetailViewModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java index bbadeb59..86a613cd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java @@ -70,7 +70,7 @@ public class ProdRientroMerceOrderDetailViewModel { .setCodJcom(currentOrder.getCodJcom()) .setCodJfas(pickedQuantityDTO.getJtbFasi() != null ? pickedQuantityDTO.getJtbFasi().getCodJfas() : null) .setCodMart(currentOrder.getCodProd()) - .setCodTcol(pickedQuantityDTO.getMtbTCol().getCodTcol()) + .setCodTcol(pickedQuantityDTO.getMtbTCol() != null ? pickedQuantityDTO.getMtbTCol().getCodTcol() : null) .setDataCollo(new Date()) .setDataOrd(currentOrder.getDataOrdD()) .setNumOrd(currentOrder.getNumOrd()) From 0dd662518e6e264a5205898d65c47eef93c89de0 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 8 Jun 2022 12:26:20 +0200 Subject: [PATCH 07/15] =?UTF-8?q?In=20versamento=20se=20si=20versa=20una?= =?UTF-8?q?=20pedana=20gi=C3=A0=20versata=20l'app=20crasha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit permettere il versamento di un articolo non compatibile con gli ordini aperti dopo richiesta conferma precompilare input risorse da allocare in input qta mantenere fissa la qtaCnf in entrambe le direzioni di calcolo togliere popup di notifica versamento completato --- .../core/settings/DBSettingsModel.java | 10 +++++++ .../core/settings/SettingsManager.java | 9 ++++++ .../ProdDettaglioLineaActivity.java | 30 +++++++++++++++++-- .../ProdDettaglioLineaViewModel.java | 13 ++++---- .../ProdLineeProduzioneFragment.java | 2 +- .../DialogInputQuantityV2View.java | 11 ++----- .../DialogInputQuantityV2ViewModel.java | 24 +++++++++++---- .../res/layout/dialog_input_quantity_v2.xml | 2 +- 8 files changed, 79 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index b36c11e2..619ec067 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -45,6 +45,7 @@ public class DBSettingsModel { private boolean flagPrintPackingListOnOrderClose; private boolean flagPrintEtichetteOnOrderClose; private int onNumCnfInputChanged = 1; + private int onQtaTotInputChanged = 1; private boolean flagAccettazioneUseQtaOrd = false; private boolean flagPickLiberoAllowEmptyDest = false; @@ -309,6 +310,15 @@ public class DBSettingsModel { return this; } + public int getOnQtaTotInputChanged() { + return onQtaTotInputChanged; + } + + public DBSettingsModel setOnQtaTotInputChanged(int onQtaTotInputChanged) { + this.onQtaTotInputChanged = onQtaTotInputChanged; + return this; + } + public List getNotePerditaDocInterni() { return notePerditaDocInterni; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 80b4447f..34423a2b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -278,6 +278,10 @@ public class SettingsManager { .setGestName("PICKING") .setSection("SETUP") .setKeySection("ON_NUM_CNF_INPUT_CHANGED")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PICKING") + .setSection("SETUP") + .setKeySection("ON_QTA_TOT_INPUT_CHANGED")); stbGestSetupList.add(new StbGestSetup() .setGestName("PVM") .setSection("DOC_INTERNI") @@ -339,6 +343,11 @@ public class SettingsManager { if (onNumCnfInputChanged != null) { dbSettingsModelIstance.setOnNumCnfInputChanged(onNumCnfInputChanged); } + + Integer onQtaTotInputChanged = getValueFromList(list, "SETUP", "ON_QTA_TOT_INPUT_CHANGED", Integer.class); + if (onQtaTotInputChanged != null) { + dbSettingsModelIstance.setOnQtaTotInputChanged(onQtaTotInputChanged); + } String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", codMdep, (value) -> { dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(value); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java index 17b95d99..015a646f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java @@ -28,6 +28,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityProdDettaglioLineaBinding; import it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs.BottomSheetLineAction; import it.integry.integrywmsnative.gest.prod_dettaglio_linea.dialogs.DialogStartProduction; @@ -141,11 +142,28 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett return true; } - + @Override public void onSettingsRequest(ProdLineStatusDTO lineaProd) { BottomSheetLineAction.newInstance(lineaProd, this::requestResources, this::requestOrderChange, this::requestProductionStop, this::requestMaterialRecover, BarcodeManager::enable).show(getSupportFragmentManager(), "BottomSheetLineAction"); } + @Override + public void confirmInconsistentDeposit(Runnable onConfirm) { + this.runOnUiThread(() -> { + DialogSimpleMessageView.makeWarningDialog( + Html.fromHtml("L'articolo che si vuole versare non è compatibile con nessun ordine presente sulla linea!" + + "

" + + "Vuoi versarlo comunque?"), + null, + onConfirm, + () -> { + onLoadingEnded(); + BarcodeManager.enable(); + } + ).show(getSupportFragmentManager(), "confirmOrderClose"); + }); + } + @Override public void requestQtaVersamento(MtbColr mtbColr, RunnableArgs onComplete) { @@ -218,7 +236,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett BarcodeManager.disable(); this.runOnUiThread(() -> { - DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il numero di risorse da allocare", qta -> { + DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il numero di risorse da allocare", this.hrNum.get(), "n. risorse", qta -> { this.onLoadingStarted(); try { Integer hrNum = Integer.parseInt(qta); @@ -279,6 +297,14 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett } + @Override + public void showToast(String message, Runnable onComplete) { + this.runOnUiThread(() -> { + UtilityToast.showToast(message); + onComplete.run(); + }); + } + private final RunnableArgs onScanSuccessful = data -> { this.onLoadingStarted(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java index 6b32581a..fc69734e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java @@ -63,11 +63,10 @@ public class ProdDettaglioLineaViewModel { } else { if (mtbColt.getMtbColr().size() <= 0) { this.sendError(new Exception("E' stata scansionata una UL già vuota")); + } else { + this.sendOnLUSelected(mtbColt); } - onComplete.run(); - this.sendOnLUSelected(mtbColt); } - }, this::sendError); } @@ -92,7 +91,7 @@ public class ProdDettaglioLineaViewModel { this.colliMagazzinoRESTConsumer.createColloScaricoDaCarico(mtbColt, posizione, generatedMtbColt -> { this.sendOnLoadingEnded(); - this.mListener.successDialog("Versamento completato!", BarcodeManager::enable); + this.mListener.showToast("Versamento completato!", BarcodeManager::enable); }, this::sendError); }); }); @@ -103,7 +102,7 @@ public class ProdDettaglioLineaViewModel { if (ordini != null && ordini.size() > 0) { onComplete.run(); } else { - this.sendError(new Exception("Nessun ordine compatibile disponibile sulla linea selezionata")); + this.mListener.confirmInconsistentDeposit(onComplete); } }, this::sendError); } @@ -219,10 +218,14 @@ public class ProdDettaglioLineaViewModel { void successDialog(String message, Runnable onComplete); + void showToast(String message, Runnable onComplete); + void requestQtaVersamento(MtbColr mtbColr, RunnableArgs onComplete); void onSettingsRequest(ProdLineStatusDTO lineaProd); + void confirmInconsistentDeposit(Runnable onConfirm); + void onLineStop(); void askForLUBarcode(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java index 6211e578..7c07a7ce 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java @@ -112,7 +112,7 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled BarcodeManager.disable(); requireActivity().runOnUiThread(() -> { - DialogSimpleInputHelper.makeInputDialog(requireContext(), "Inserisci il numero di risorse da allocare", qta -> { + DialogSimpleInputHelper.makeInputDialog(requireContext(), "Inserisci il numero di risorse da allocare", prodLine.getQtaAllocate().toString(), "n. risorse", qta -> { this.onLoadingStarted(); try { Integer hrNum = Integer.parseInt(qta); 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 a06b1b65..b233b829 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 @@ -89,7 +89,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia private boolean mObservablesInitated = false; private int mBarcodeScannerIstanceID; - private boolean mFirstStart = true; private boolean mAbort = true; @@ -185,9 +184,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia private final RunnableArgs onScanSuccessful = data -> { this.onLoadingStarted(); - this.mViewModel.processBarcodeDTO(data, () -> { - this.onLoadingEnded(); - }); + this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded); }; public void save() { @@ -217,15 +214,13 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia public void onStart() { super.onStart(); -// if(!mFirstStart) { this.init(); -// mFirstStart = false; -// } int onNumCnfInputChanged = SettingsManager.iDB().getOnNumCnfInputChanged(); + int onQtaTotInputChanged = SettingsManager.iDB().getOnQtaTotInputChanged(); this.mViewModel.setListener(this); - this.mViewModel.init(onNumCnfInputChanged); + this.mViewModel.init(onNumCnfInputChanged, onQtaTotInputChanged); } private void initViewObservables() { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 3c9c017a..2f780888 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -70,6 +70,7 @@ public class DialogInputQuantityV2ViewModel { private boolean canOverflowOrderQuantity; private boolean canPartitaMagBeChanged; private int onNumCnfInputChanged; + private int onQtaTotInputChanged; private Listener mListener; @@ -80,8 +81,9 @@ public class DialogInputQuantityV2ViewModel { this.mBarcodeRESTConsumer = barcodeRESTConsumer; } - public void init(int onNumCnfInputChanged) { + public void init(int onNumCnfInputChanged, int onQtaTotInputChanged) { this.onNumCnfInputChanged = onNumCnfInputChanged; + this.onQtaTotInputChanged = onQtaTotInputChanged; if (this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) { this.internalNumCnf = this.initialNumCnf; @@ -379,10 +381,22 @@ public class DialogInputQuantityV2ViewModel { } - if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalNumCnf != null) - this.internalQtaCnf = UtilityBigDecimal.divide(newValue, internalNumCnf); - else if (!this.blockedNumCnf.get() && this.internalQtaCnf != null) - this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf); + switch (onNumCnfInputChanged) { + case UPDATE_QTA_CNF: + if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalNumCnf != null) + this.internalQtaCnf = UtilityBigDecimal.divide(newValue, internalNumCnf); + else if (!this.blockedNumCnf.get() && this.internalQtaCnf != null) + this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf); + break; + + case UPDATE_QTA_TOT: + if (!this.blockedNumCnf.get() && this.internalQtaCnf != null) + this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf); + else if (!this.blockedQtaCnf.get() && !this.mtbAart.get().isFlagQtaCnfFissaBoolean() && this.internalNumCnf != null) + this.internalQtaCnf = UtilityBigDecimal.divide(newValue, internalNumCnf); + break; + + } this.mListener.onDataChanged(); } diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 7fd1fa20..41fbe1e6 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -624,7 +624,6 @@ android:layout_weight="@{!viewmodel.mtbAart.flagQtaCnfFissaBoolean ? 1f : 1.5f}" android:enabled="@{view.enabledQtaTot}" android:focusableInTouchMode="false" - android:imeOptions="actionDone" tools:layout_weight="1"> From bbc81f3d9996ae792bbaf92bde9da213ed246711 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 8 Jun 2022 12:50:18 +0200 Subject: [PATCH 08/15] -> v1.27.5 (292) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 94e29d29..82a22cd5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 291 - def appVersionName = '1.27.4' + def appVersionCode = 292 + def appVersionName = '1.27.5' signingConfigs { release { From c3274a4311b9f4a84d0a405160db9a112653078a Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 29 Jun 2022 16:01:51 +0200 Subject: [PATCH 09/15] corretto bug per in gestione linee e aggiu ta richiesta di recupero prima di chiudere gli ordini --- .../ProdDettaglioLineaActivity.java | 36 +++++++++++-------- .../ProdDettaglioLineaViewModel.java | 5 --- .../dialogs/DialogStartProduction.java | 14 +------- .../ProdRecuperoMaterialeFragment.java | 33 ++++++++++++++--- 4 files changed, 52 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java index 015a646f..a9c5b5b0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java @@ -26,7 +26,6 @@ import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColr; -import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityProdDettaglioLineaBinding; @@ -43,6 +42,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDettaglioLineaViewModel.Listener { private static final String DATA_KEY_LINE = "keyLinea"; + private static final String DATA_KEY_FRAGMENT_LISTENER = "onFragmentClose"; private ActivityProdDettaglioLineaBinding mBinding; public final ObservableField listaOrd = new ObservableField<>(); @@ -54,6 +54,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett public final BindableString codMart = new BindableString(); public final BindableString partitaMag = new BindableString(); public final BindableString productDescription = new BindableString(); + private Runnable onResumeRunnable = null; private int barcodeScannerIstanceID = -1; @@ -120,6 +121,13 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett renderOrdersChips(); } }); + getSupportFragmentManager() + .setFragmentResultListener(DATA_KEY_FRAGMENT_LISTENER, this, (requestKey, result) -> { + if (onResumeRunnable != null) { + onResumeRunnable.run(); + onResumeRunnable = null; + } + }); } private void renderOrdersChips() { @@ -210,17 +218,6 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett onBackPressed(); } - public void askForLUBarcode() { - this.onLoadingEnded(); - this.runOnUiThread(() -> { - DialogStartProduction.newInstance((dto) -> { - this.mViewModel.checkBarcodeAndStartOrdine(dto); - }, - UtilityResources.getString(R.string.title_open_lu), - UtilityResources.getString(R.string.scan_lu_to_recover) - ).show(getSupportFragmentManager(), "DialogStartProduction"); - }); - } private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() @@ -279,7 +276,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett getSupportFragmentManager() .beginTransaction() .add(R.id.frame_layout_container, - ProdRecuperoMaterialeFragment.newInstance(mViewModel.lineaProd.getValue().getCodJfas())) + ProdRecuperoMaterialeFragment.newInstance(mViewModel.lineaProd.getValue().getCodJfas(), DATA_KEY_FRAGMENT_LISTENER)) .addToBackStack("ProdRecuperoMaterialeFragment") .commit(); @@ -322,7 +319,18 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett + "

" + "Continuare?"), null, - onConfirm, + () -> { + DialogSimpleMessageView.makeInfoDialog( + null, + Html.fromHtml("Vuoi recuperare del materiale prima di chiudere gli ordini?"), + null, + () -> { + onResumeRunnable = onConfirm; + this.requestMaterialRecover(); + }, + onConfirm + ).show(getSupportFragmentManager(), "confirmOrderClose"); + }, BarcodeManager::enable ).show(getSupportFragmentManager(), "confirmOrderClose"); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java index fc69734e..77e031d7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java @@ -209,9 +209,6 @@ public class ProdDettaglioLineaViewModel { return lineaProd.getValue(); } - public void beginMaterialRecover() { - this.mListener.askForLUBarcode(); - } public interface Listener extends ILoadingListener { void onError(Exception ex); @@ -228,8 +225,6 @@ public class ProdDettaglioLineaViewModel { void onLineStop(); - void askForLUBarcode(); - void confirmOrderClose(Runnable onConfirm); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java index a90fb0b4..6f2d2eb7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java @@ -37,18 +37,6 @@ public class DialogStartProduction extends BaseDialogFragment { return fragment; } - public static DialogStartProduction newInstance(RunnableArgs onScanSuccessful, String title, String label) { - - Bundle args = new Bundle(); - - DialogStartProduction fragment = new DialogStartProduction(); - fragment.setTitle(title); - fragment.setLabel(label); - fragment.setArguments(args); - fragment.setOnScanSuccessful(onScanSuccessful); - return fragment; - } - public String getTitle() { return title; } @@ -108,8 +96,8 @@ public class DialogStartProduction extends BaseDialogFragment { private void processBarcode(BarcodeScanDTO barcodeScanDTO) { if (UtilityBarcode.isEan128(barcodeScanDTO)) { - this.onScanSuccessful.run(barcodeScanDTO); this.dismiss(); + this.onScanSuccessful.run(barcodeScanDTO); } else { this.onError(new Exception("Il barcode scansionato non è valido!")); } 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 2aab53aa..5be7785c 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 @@ -60,6 +60,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl private int barcodeScannerIstanceID = -1; private String codJfas; + private String fragmentResultKeyString; private final ObservableArrayList mHistoryULMutableData = new ObservableArrayList<>(); @@ -68,13 +69,20 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl } public static ProdRecuperoMaterialeFragment newInstance() { - return newInstance(null); + return newInstance(null, null); + } + + public static ProdRecuperoMaterialeFragment newInstance(String codJfas, String keyString) { + ProdRecuperoMaterialeFragment fragment = new ProdRecuperoMaterialeFragment(); + if (keyString != null) { + fragment.setFragmentResultKeyString(keyString); + } + fragment.setCodJfas(codJfas); + return fragment; } public static ProdRecuperoMaterialeFragment newInstance(String codJfas) { - ProdRecuperoMaterialeFragment fragment = new ProdRecuperoMaterialeFragment(); - fragment.setCodJfas(codJfas); - return fragment; + return newInstance(codJfas, null); } @Override @@ -95,6 +103,14 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl this.initBarcodeReader(); this.initRecyclerView(); + this.addOnPreDestroy(() -> { + if (!UtilityString.isNullOrEmpty(fragmentResultKeyString)) { + Bundle result = new Bundle(); + result.putString(fragmentResultKeyString, "result"); + getParentFragmentManager().setFragmentResult(fragmentResultKeyString, result); + } + }); + return mBinding.getRoot(); } @@ -134,6 +150,15 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl return this; } + public String getFragmentResultKeyString() { + return fragmentResultKeyString; + } + + public ProdRecuperoMaterialeFragment setFragmentResultKeyString(String fragmentResultKeyString) { + this.fragmentResultKeyString = fragmentResultKeyString; + return this; + } + private final RunnableArgs onScanSuccessful = data -> { this.onLoadingStarted(); From 57900a9617f2a5efc2fc4b9769dc6e15bcc406c2 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 29 Jun 2022 16:36:46 +0200 Subject: [PATCH 10/15] bug fix: Nel picking da ordine, quando sparano alcune referenze (100142-100171), l'app si chiude in maniera anomala. --- .../dialogs/input_quantity_v2/DialogInputQuantityV2View.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b233b829..b823f403 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 @@ -406,7 +406,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed()); this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg()); - if (this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null && !this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().equals(BigDecimal.ZERO) && !(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue() == 0)) { + if (this.mDialogInputQuantityV2DTO.getMtbAart().isFlagQtaCnfFissaBoolean() && this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null && !this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().equals(BigDecimal.ZERO) && !(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue() == 0)) { int numCnftoTake = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().divide(this.mDialogInputQuantityV2DTO.getQtaCnfOrd(), 0, RoundingMode.DOWN).intValue(); this.currentTextNumCnfToTake.set(numCnftoTake); int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getQtaCnfOrd().intValue(); From 23c98d92185c4f4aebc87825aa743127b40da776 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Wed, 29 Jun 2022 16:39:17 +0200 Subject: [PATCH 11/15] -> v1.27.6 (293) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 82a22cd5..33304de4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 292 - def appVersionName = '1.27.5' + def appVersionCode = 293 + def appVersionName = '1.27.6' signingConfigs { release { From 71f6dc83fb7d40ff3933e27557f07cd4878d562d Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 29 Jun 2022 18:54:11 +0200 Subject: [PATCH 12/15] Vario --- .../integrywmsnative/core/rest/CommonRESTException.java | 2 -- .../ProdRecuperoMaterialeViewModel.java | 5 ++++- .../gest/spedizione/SpedizioneViewModel.java | 1 + app/src/main/res/layout/layout_filter_agente.xml | 4 ++-- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java index bffd491f..65806503 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java @@ -26,8 +26,6 @@ public class CommonRESTException { put(MESSAGE_KEY, "Barcode non letto correttamente"); put(EXCEPTION_KEY, NoResultFromBarcodeException.class); }}); - - }}; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java index ba014ab2..8921513d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java @@ -115,7 +115,10 @@ public class ProdRecuperoMaterialeViewModel { qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol()); if (!UtilityBigDecimal.equalsTo(qtaDaEvadere, BigDecimal.ZERO)) { - numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf()); + + if(item.getMtbAart().isFlagQtaCnfFissaBoolean()) + numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf()); + else numCnfDaEvadere = item.getNumCnf(); } this.sendOnItemDispatched(item, 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 fa09f2a6..506c6a36 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 @@ -1882,6 +1882,7 @@ public class SpedizioneViewModel { .setCodAnag(ord.getCodAnagOrd()); return ordV; }).toList(); + dto.setPrintList(closedOrders); printClosedOrders(dto, this::sendOnOrderClosed, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded)); } diff --git a/app/src/main/res/layout/layout_filter_agente.xml b/app/src/main/res/layout/layout_filter_agente.xml index e0d28e0f..ef214486 100644 --- a/app/src/main/res/layout/layout_filter_agente.xml +++ b/app/src/main/res/layout/layout_filter_agente.xml @@ -79,8 +79,7 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/title_layout"> + app:layout_constraintStart_toStartOf="parent"> Date: Thu, 7 Jul 2022 17:51:46 +0200 Subject: [PATCH 13/15] Creata UI per smartphone del rientro merce --- .idea/deploymentTargetDropDown.xml | 23 +- .../core/expansion/BaseFragment.java | 5 +- .../IOrdersLoadingListener.java | 9 + .../core/rest/consumers/MesRESTConsumer.java | 2 +- .../ProdRientroMerceFragment.java | 92 ++- .../ProdRientroMerceViewModel.java | 17 +- .../ProdRientroMerceOrderDetailFragment.java | 15 +- .../ProdRientroMerceOrderListFragment.java | 25 +- app/src/main/res/drawable/ripple_effect.xml | 13 - ...agment_prod_rientro_merce_order_detail.xml | 712 ++++++++++++++++++ .../activity_contab_doc_interni_edit.xml | 2 +- .../layout/activity_prod_dettaglio_linea.xml | 2 +- .../activity_pv_ordine_acquisto_edit.xml | 2 +- .../main/res/layout/activity_spedizione.xml | 4 +- .../dialog_basket_lu__mtb_colt_model.xml | 2 +- .../layout/fragment_prod_rientro_merce.xml | 16 +- ...agment_prod_rientro_merce_order_detail.xml | 17 +- ...erce_order_detail__mtb_colt_item_model.xml | 2 +- ...fragment_prod_rientro_merce_order_list.xml | 122 +-- ...tro_merce_order_list__list_group_model.xml | 166 ++-- .../res/layout/lista_bancali_list_model.xml | 2 +- .../layout/picking_resi_main_list__item.xml | 2 +- app/src/main/res/values-large/values.xml | 6 + app/src/main/res/values/values.xml | 6 + 24 files changed, 1054 insertions(+), 210 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/IOrdersLoadingListener.java delete mode 100644 app/src/main/res/drawable/ripple_effect.xml create mode 100644 app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml create mode 100644 app/src/main/res/values-large/values.xml create mode 100644 app/src/main/res/values/values.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 2850b67a..6d7535b1 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,13 +1,34 @@ + + + + + + + + + + + + - + + + + + + + + + + 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 dfcb3aea..a6f5dd6a 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 @@ -99,6 +99,10 @@ public abstract class BaseFragment extends Fragment { } } + public boolean onBackPressed() { + return false; + } + protected void popMe() { if (requireActivity() instanceof IPoppableActivity) { requireActivity().runOnUiThread(() -> { @@ -107,6 +111,5 @@ public abstract class BaseFragment extends Fragment { } else { requireActivity().getSupportFragmentManager().popBackStack(); } - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/IOrdersLoadingListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/IOrdersLoadingListener.java new file mode 100644 index 00000000..ae6e0e50 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/IOrdersLoadingListener.java @@ -0,0 +1,9 @@ +package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; + +public interface IOrdersLoadingListener { + + void onOrderLoadingStarted(); + + void onOrderLoadingEnded(); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java index 85d91398..c48bbd10 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java @@ -50,7 +50,7 @@ public class MesRESTConsumer extends _BaseRESTConsumer { MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class); mesRESTConsumerService.getOrdiniLavorazione(flagEvaso, codJfas) - .enqueue(new Callback>>() { + .enqueue(new Callback<>() { @Override public void onResponse(Call>> call, Response>> response) { analyzeAnswer(response, "getOrdiniLavorazione", (m) -> onComplete.run(response.body().getDto()), onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java index 735dd909..2914278a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableField; import java.util.ArrayList; import java.util.List; @@ -19,7 +20,9 @@ import javax.inject.Inject; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.model.MtbColr; @@ -32,9 +35,18 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -public class ProdRientroMerceFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ProdRientroMerceViewModel.Listener, BottomSheetFragmentLUContentView.Listener, BottomSheetMtbColrEditView.Listener { +public class ProdRientroMerceFragment extends BaseFragment implements + ITitledFragment, + IScrollableFragment, + ILifecycleFragment, + ProdRientroMerceViewModel.Listener, + BottomSheetFragmentLUContentView.Listener, + BottomSheetMtbColrEditView.Listener, + ProdRientroMerceOrderListFragment.OnRefreshListener { + public final ObservableField isLargeLayout = new ObservableField<>(false); + @Inject ProdRientroMerceViewModel mViewModel; @@ -56,20 +68,47 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra super.onCreate(savedInstanceState); setRetainInstance(true); + boolean isLargeLayout = getResources().getBoolean(R.bool.large_layout); + this.isLargeLayout.set(isLargeLayout); + mProdRientroMerceOrderListFragment = ProdRientroMerceOrderListFragment.newInstance(mToolbar); mProdRientroMerceOrderDetailFragment = ProdRientroMerceOrderDetailFragment.newInstance(); - mProdRientroMerceOrderListFragment.setOnItemSelectedRunnable(mProdRientroMerceOrderDetailFragment::setOrder); + + + mProdRientroMerceOrderListFragment + .setOnItemSelectedRunnable(order -> { + if (!isLargeLayout) { + getChildFragmentManager() + .beginTransaction() + .show(mProdRientroMerceOrderDetailFragment) + .addToBackStack(ProdRientroMerceOrderDetailFragment.class.getName()) + .commit(); + } + + mProdRientroMerceOrderDetailFragment.setOrder(order); + }) + .setOnRefreshListener(this); mProdRientroMerceOrderDetailFragment.setOnMtbColtClicked(item -> { mBindings.bottomSheetMtbColrEdit.setMtbColr(item.getMtbColr().get(0)); mBindings.bottomSheetMtbColrEdit.expand(); }); - getChildFragmentManager() - .beginTransaction() - .replace(R.id.order_list_fragment, mProdRientroMerceOrderListFragment) - .replace(R.id.order_detail_fragment, mProdRientroMerceOrderDetailFragment) - .commit(); + if (isLargeLayout) { + getChildFragmentManager() + .beginTransaction() + .replace(R.id.left_side_fragment_container, mProdRientroMerceOrderListFragment) + .replace(R.id.right_side_fragment_container, mProdRientroMerceOrderDetailFragment) + .commit(); + } else { + getChildFragmentManager() + .beginTransaction() + .add(R.id.full_width_container, mProdRientroMerceOrderListFragment) + .add(R.id.full_width_container, mProdRientroMerceOrderDetailFragment) + .hide(mProdRientroMerceOrderDetailFragment) + .commit(); + } + MainApplication.appComponent .prodRientroMerceComponent() @@ -82,6 +121,8 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra @Nullable Bundle savedInstanceState) { mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_prod_rientro_merce, container, false); mBindings.setLifecycleOwner(this); + mBindings.setView(this); + mBindings.setViewmodel(mViewModel); mViewModel.setListener(this); @@ -94,13 +135,13 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - if(savedInstanceState == null) { + if (savedInstanceState == null) { this.mViewModel.getOrdiniLavorazioneAperti().observe(this.getViewLifecycleOwner(), this::ordersUpdated); - - mViewModel.init(); + mViewModel.refreshOrderList(); } } + @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { mAppBarTitle = titleText; @@ -139,7 +180,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra } - private void initBottomSheet() { mBindings.bottomSheetMtbColrEdit.setListener(this); mBindings.bottomSheetMtbColrEdit.disableEditButton(); @@ -157,7 +197,33 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra DialogSimpleMessageView.makeWarningDialog(new SpannableString(text), null, () -> mProdRientroMerceOrderDetailFragment.deleteMtbColr(mtbColr), - () -> {} - ).show(getActivity().getSupportFragmentManager(), "tag"); + () -> { + } + ).show(requireActivity().getSupportFragmentManager(), "tag"); + } + + @Override + public void onOrderLoadingStarted() { + BarcodeManager.disable(); + this.mProdRientroMerceOrderListFragment.onOrderLoadingStarted(); + } + + @Override + public void onOrderLoadingEnded() { + BarcodeManager.enable(); + this.mProdRientroMerceOrderListFragment.onOrderLoadingEnded(); + } + + @Override + public void onRefresh() { + this.mViewModel.refreshOrderList(); + } + + @Override + public void onPreDestroy(Runnable onComplete) { + if(getChildFragmentManager().getBackStackEntryCount() > 0) + getChildFragmentManager().popBackStack(); + + else onComplete.run(); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java index 8d8a13a5..4e3160bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java @@ -7,6 +7,7 @@ import java.util.List; import javax.inject.Inject; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.IOrdersLoadingListener; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException; @@ -25,12 +26,12 @@ public class ProdRientroMerceViewModel { this.mMesRESTConsumer = mesRESTConsumer; } - public void init() { - new Thread(this::sendOnLoadingStarted).start(); + public void refreshOrderList() { + new Thread(this::sendOnOrdersLoadingStarted).start(); this.mMesRESTConsumer.getOrdiniLavorazione("I", null, ordiniLavorazioneList -> { this.mOrdiniLavorazioneAperti.postValue(ordiniLavorazioneList); - this.sendOnLoadingEnded(); + this.sendOnOrdersLoadingEnded(); }, ex -> this.sendError(new OrdersLoadException(ex))); } @@ -51,12 +52,20 @@ public class ProdRientroMerceViewModel { if (this.mListener != null) mListener.onLoadingEnded(); } + private void sendOnOrdersLoadingStarted() { + if (this.mListener != null) mListener.onOrderLoadingStarted(); + } + + private void sendOnOrdersLoadingEnded() { + if (this.mListener != null) mListener.onOrderLoadingEnded(); + } + private void sendError(Exception ex) { if (this.mListener != null) mListener.onError(ex); } - public interface Listener extends ILoadingListener { + public interface Listener extends ILoadingListener, IOrdersLoadingListener { void onDataSaved(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java index 59c2bef7..0330c007 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java @@ -113,11 +113,14 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements mViewModel.setListener(this); + if(currentOrder.getValue() != null) + refreshOrder(); this.mViewModel.mtbColtsOfOrder.observe(getViewLifecycleOwner(), this::refreshList); this.initRecyclerView(); this.initULScaleBluetoothConnection(); + mBindings.executePendingBindings(); return mBindings.getRoot(); } @@ -182,11 +185,15 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements } public void setOrder(OrdineLavorazioneDTO order) { - currentOrder.postValue(order); - mBindings.invalidateAll(); - mAdapter.clearDataset(); + currentOrder.setValue(order); - mViewModel.setOrder(order); + refreshOrder(); + } + + private void refreshOrder() { + if(mBindings != null) mBindings.invalidateAll(); + if(mAdapter != null) mAdapter.clearDataset(); + if(mViewModel != null) mViewModel.setOrder(currentOrder.getValue()); } private void refreshList(List mtbColts) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java index 1c81cd5b..7592d2d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java @@ -36,12 +36,10 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; public class ProdRientroMerceOrderListFragment extends Fragment { private final ObservableArrayList mOrdiniApertiMutableData = new ObservableArrayList<>(); - private FragmentProdRientroMerceOrderListBinding mBindings = null; - private RunnableArgs mOnItemSelectedRunnable; - private ElevatedToolbar mToolbar; + private OnRefreshListener onRefreshListener; public ProdRientroMerceOrderListFragment() { // Required empty public constructor @@ -93,6 +91,10 @@ public class ProdRientroMerceOrderListFragment extends Fragment { this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(getActivity())); this.mToolbar.setRecyclerView(mBindings.mainList); + + this.mBindings.swiperefresh.setOnRefreshListener(() -> { + if(onRefreshListener != null) onRefreshListener.onRefresh(); + }); } public void pushOrderList(List orderList) { @@ -101,6 +103,14 @@ public class ProdRientroMerceOrderListFragment extends Fragment { } + public void onOrderLoadingStarted() { + this.mBindings.swiperefresh.setRefreshing(true); + } + + public void onOrderLoadingEnded() { + this.mBindings.swiperefresh.setRefreshing(false); + } + private List convertDataModelToListModel(List dataList) { @@ -164,4 +174,13 @@ public class ProdRientroMerceOrderListFragment extends Fragment { public RecyclerView getList() { return mBindings.mainList; } + + public ProdRientroMerceOrderListFragment setOnRefreshListener(OnRefreshListener onRefreshListener) { + this.onRefreshListener = onRefreshListener; + return this; + } + + public interface OnRefreshListener { + void onRefresh(); + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ripple_effect.xml b/app/src/main/res/drawable/ripple_effect.xml deleted file mode 100644 index de3ca6a0..00000000 --- a/app/src/main/res/drawable/ripple_effect.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml new file mode 100644 index 00000000..a1a00a53 --- /dev/null +++ b/app/src/main/res/layout-large/fragment_prod_rientro_merce_order_detail.xml @@ -0,0 +1,712 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contab_doc_interni_edit.xml b/app/src/main/res/layout/activity_contab_doc_interni_edit.xml index 8fec2e0d..de1e7a22 100644 --- a/app/src/main/res/layout/activity_contab_doc_interni_edit.xml +++ b/app/src/main/res/layout/activity_contab_doc_interni_edit.xml @@ -60,7 +60,7 @@ android:layout_width="wrap_content" android:layout_height="50dp" android:layout_gravity="end" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" android:adjustViewBounds="true" android:src="@drawable/ic_search_black_24dp" android:onClick="@{()->view.manualSearch()}" diff --git a/app/src/main/res/layout/activity_prod_dettaglio_linea.xml b/app/src/main/res/layout/activity_prod_dettaglio_linea.xml index ecfd6b83..c60edf24 100644 --- a/app/src/main/res/layout/activity_prod_dettaglio_linea.xml +++ b/app/src/main/res/layout/activity_prod_dettaglio_linea.xml @@ -85,7 +85,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:adjustViewBounds="true" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" android:onClick="@{()->viewModel.settings()}" android:src="@drawable/ic_settings_24dp" android:tint="@color/colorPrimaryGray" /> 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 0eafc37c..26a62561 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 @@ -53,7 +53,7 @@ android:layout_height="50dp" android:layout_gravity="end" android:adjustViewBounds="true" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" android:onClick="@{()->viewModel.manualSearch()}" android:src="@drawable/ic_search_black_24dp" android:tint="@color/colorPrimaryGray" /> diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml index ada4900c..bfd765b7 100644 --- a/app/src/main/res/layout/activity_spedizione.xml +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -61,7 +61,7 @@ android:layout_height="50dp" android:layout_gravity="end" android:adjustViewBounds="true" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" android:src="@drawable/ic_add_24dp" android:tint="@color/colorPrimaryGray" app:visibility="@{spedizioneView.addExtraItemsEnabled}" @@ -73,7 +73,7 @@ android:layout_height="50dp" android:layout_gravity="end" android:adjustViewBounds="true" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" app:singleClick="@{() -> spedizioneView.startManualSearch()}" android:src="@drawable/ic_black_barcode" android:tint="@color/colorPrimaryGray" diff --git a/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml b/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml index 34f42761..76990136 100644 --- a/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml +++ b/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml @@ -21,7 +21,7 @@ android:paddingEnd="12dp" android:paddingBottom="12dp" android:clickable="true" - android:background="@drawable/ripple_effect"> + android:background="?attr/selectableItemBackground"> + android:orientation="horizontal" + app:visibility="@{view.isLargeLayout}"> + + + + diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml index 1eb6787a..e70038f2 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml @@ -23,8 +23,7 @@ @@ -93,22 +92,12 @@ - + android:padding="16dp"> @@ -701,7 +691,6 @@ - diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml index ff182c70..2281031e 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml @@ -23,7 +23,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" android:clickable="true" android:paddingTop="12dp" android:paddingEnd="12dp" diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml index e738d5b7..743ee057 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml @@ -1,74 +1,84 @@ - - - - - - - + tools:context=".gest.prod_rientro_merce.order_list.ProdRientroMerceOrderListFragment"> - + - + - + - + - - - + + + + + + - + android:orientation="vertical" + app:layout_constraintEnd_toStartOf="@id/guideline_empty_right" + app:layout_constraintStart_toEndOf="@id/guideline_empty_left" + app:layout_constraintTop_toTopOf="@id/guideline_empty_top"> - + - + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml index 061f4ca0..0e5ce981 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml @@ -16,110 +16,100 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/ripple_effect" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:focusable="true" android:orientation="horizontal" - android:paddingStart="2dp" - android:paddingEnd="4dp"> + android:paddingVertical="8dp" + android:paddingStart="4dp" + android:paddingEnd="12dp"> - + + + + android:layout_toEndOf="@id/ordine_state_icon" + android:orientation="vertical"> - - - - - + android:layout_height="wrap_content"> - - - - - - - + android:layout_alignParentEnd="true" + tools:text="Cons 07 nov 2018" /> - + - - + + + + + + - + + + + + android:layout_height="wrap_content" + android:layout_toStartOf="@id/right_sub_descrizione" + android:paddingEnd="6dp" + tools:text="TextView" /> + - +
- - - -
- - diff --git a/app/src/main/res/layout/lista_bancali_list_model.xml b/app/src/main/res/layout/lista_bancali_list_model.xml index d3382ba4..33f36c99 100644 --- a/app/src/main/res/layout/lista_bancali_list_model.xml +++ b/app/src/main/res/layout/lista_bancali_list_model.xml @@ -26,7 +26,7 @@ android:paddingEnd="12dp" android:paddingBottom="12dp" android:clickable="true" - android:background="@drawable/ripple_effect"> + android:background="?attr/selectableItemBackground"> diff --git a/app/src/main/res/values-large/values.xml b/app/src/main/res/values-large/values.xml new file mode 100644 index 00000000..66a72ee4 --- /dev/null +++ b/app/src/main/res/values-large/values.xml @@ -0,0 +1,6 @@ + + + + true + + \ No newline at end of file diff --git a/app/src/main/res/values/values.xml b/app/src/main/res/values/values.xml new file mode 100644 index 00000000..f2329703 --- /dev/null +++ b/app/src/main/res/values/values.xml @@ -0,0 +1,6 @@ + + + + false + + \ No newline at end of file From 19e2d5b8694e02a73f3c5d66719ee3fa878ce078 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 7 Jul 2022 18:21:30 +0200 Subject: [PATCH 14/15] Creata login page per layout large --- .../main/res/layout-large/activity_login.xml | 150 +++++++++++++ app/src/main/res/layout/activity_login.xml | 198 +++++++++--------- 2 files changed, 250 insertions(+), 98 deletions(-) create mode 100644 app/src/main/res/layout-large/activity_login.xml diff --git a/app/src/main/res/layout-large/activity_login.xml b/app/src/main/res/layout-large/activity_login.xml new file mode 100644 index 00000000..53392ec0 --- /dev/null +++ b/app/src/main/res/layout-large/activity_login.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index f6af0a95..a2dc8a90 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -10,122 +10,124 @@ - + - - - - - - - - - + android:orientation="vertical" + android:paddingLeft="24dp" + android:paddingTop="56dp" + android:paddingRight="24dp"> - - + - - - - - - - - - - + + android:layout_marginBottom="8dp" + app:errorText="@{view.usernameError}" + app:hintTextAppearance="@style/hint_text"> + android:hint="Username" + android:inputType="textEmailAddress" + app:binding="@{view.username}" /> - + + - + + + + + + + + + + + + + + + + + + - + + + + + - - \ No newline at end of file From 56c54d3cde9582c98df6d3d7f2bb0db88fce5e32 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 7 Jul 2022 18:56:13 +0200 Subject: [PATCH 15/15] -> v1.28.0 (294) --- .idea/deploymentTargetDropDown.xml | 12 ------------ app/build.gradle | 4 ++-- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 6d7535b1..f933bcae 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,18 +1,6 @@ - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index 33304de4..92aeffef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 293 - def appVersionName = '1.27.6' + def appVersionCode = 294 + def appVersionName = '1.28.0' signingConfigs { release {