diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 2850b67a..f933bcae 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -7,7 +7,16 @@
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index b576cdb8..92aeffef 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 = 294
+ def appVersionName = '1.28.0'
signingConfigs {
release {
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..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,9 +99,17 @@ public abstract class BaseFragment extends Fragment {
}
}
+ public boolean onBackPressed() {
+ return false;
+ }
+
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/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/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/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/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/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/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 86c32edd..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,11 +343,16 @@ 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);
- 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..a9c5b5b0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaActivity.java
@@ -0,0 +1,355 @@
+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.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;
+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 static final String DATA_KEY_FRAGMENT_LISTENER = "onFragmentClose";
+
+ 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 Runnable onResumeRunnable = null;
+
+ 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();
+ }
+ });
+ getSupportFragmentManager()
+ .setFragmentResultListener(DATA_KEY_FRAGMENT_LISTENER, this, (requestKey, result) -> {
+ if (onResumeRunnable != null) {
+ onResumeRunnable.run();
+ onResumeRunnable = null;
+ }
+ });
+ }
+
+ 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;
+ }
+
+ @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) {
+ 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();
+ }
+
+
+ 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", this.hrNum.get(), "n. risorse", 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(), DATA_KEY_FRAGMENT_LISTENER))
+ .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"));
+
+ }
+
+ @Override
+ public void showToast(String message, Runnable onComplete) {
+ this.runOnUiThread(() -> {
+ UtilityToast.showToast(message);
+ onComplete.run();
+ });
+ }
+
+ 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,
+ () -> {
+ 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");
+ });
+ }
+
+
+ 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..77e031d7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/ProdDettaglioLineaViewModel.java
@@ -0,0 +1,236 @@
+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"));
+ } else {
+ 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.showToast("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.mListener.confirmInconsistentDeposit(onComplete);
+ }
+ }, 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 interface Listener extends ILoadingListener {
+ void onError(Exception ex);
+
+ 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 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_dettaglio_linea/dialogs/DialogRecoverUl.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogRecoverUl.java
new file mode 100644
index 00000000..6a1c292a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogRecoverUl.java
@@ -0,0 +1,77 @@
+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.databinding.DialogStartProductionBinding;
+
+public class DialogRecoverUl extends BaseDialogFragment {
+ private int barcodeScannerIstanceID = -1;
+ private RunnableArgs onScanSuccessful;
+ private DialogStartProductionBinding mBinding;
+
+ public static DialogRecoverUl newInstance(RunnableArgs onScanSuccessful) {
+
+ Bundle args = new Bundle();
+
+ DialogRecoverUl fragment = new DialogRecoverUl();
+ fragment.setArguments(args);
+ fragment.setOnScanSuccessful(onScanSuccessful);
+ return fragment;
+ }
+
+
+ @Override
+ public void onDismiss(@NonNull DialogInterface dialog) {
+ BarcodeManager.removeCallback(barcodeScannerIstanceID);
+ super.onDismiss(dialog);
+ }
+
+ public DialogRecoverUl 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));
+ 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/dialogs/DialogStartProduction.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_dettaglio_linea/dialogs/DialogStartProduction.java
similarity index 79%
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/DialogStartProduction.java
index d1fa80ba..6f2d2eb7 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/DialogStartProduction.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;
@@ -17,12 +17,15 @@ 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) {
@@ -34,6 +37,23 @@ public class DialogStartProduction extends BaseDialogFragment {
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) {
@@ -55,6 +75,14 @@ public class DialogStartProduction extends BaseDialogFragment {
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();
}
@@ -68,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_linee_produzione/ProdLineeProduzioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java
index 92fa730b..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
@@ -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)
@@ -111,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);
@@ -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..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
@@ -59,6 +59,8 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
private FragmentProdRecuperoMaterialeBinding mBinding;
private int barcodeScannerIstanceID = -1;
+ private String codJfas;
+ private String fragmentResultKeyString;
private final ObservableArrayList mHistoryULMutableData = new ObservableArrayList<>();
@@ -67,10 +69,22 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
}
public static ProdRecuperoMaterialeFragment newInstance() {
+ 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) {
+ return newInstance(codJfas, null);
+ }
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -89,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();
}
@@ -96,8 +118,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 +141,24 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
BarcodeManager.enable();
}
+ public String getCodJfas() {
+ return codJfas;
+ }
+
+ public ProdRecuperoMaterialeFragment setCodJfas(String codJfas) {
+ this.codJfas = codJfas;
+ return this;
+ }
+
+ public String getFragmentResultKeyString() {
+ return fragmentResultKeyString;
+ }
+
+ public ProdRecuperoMaterialeFragment setFragmentResultKeyString(String fragmentResultKeyString) {
+ this.fragmentResultKeyString = fragmentResultKeyString;
+ return this;
+ }
+
private final RunnableArgs onScanSuccessful = data -> {
this.onLoadingStarted();
@@ -133,7 +177,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 +276,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..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
@@ -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();
@@ -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,
@@ -151,27 +154,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 +223,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/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_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())
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/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);
}
}
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..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
@@ -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);
}
@@ -1879,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/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 4d285878..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
@@ -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<>();
@@ -87,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;
@@ -168,7 +169,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
});
}
this.onLoadingEnded();
- mBindings.inputNumCnfText.requestFocus();
+ if (mDialogInputQuantityV2DTO.isFocusOnStart()) {
+ mBindings.inputNumCnfText.requestFocus();
+ }
return mBindings.getRoot();
}
@@ -181,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() {
@@ -213,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() {
@@ -407,9 +406,10 @@ 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)) {
- this.currentTextNumCnfToTake.set(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue());
- int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue();
+ 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();
this.currentTextNumPezziToTake.set(qtaText);
} else {
this.currentTextNumCnfToTake.set(0);
@@ -451,6 +451,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/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/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/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-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}">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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_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
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..c60edf24
--- /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/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/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_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:visibility="@{view.flagShowCnfToTakeLabel && (view.currentTextNumCnfToTake > 0 || view.currentTextNumPezziToTake > 0) ? View.VISIBLE : View.GONE}">
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" />
+ 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/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">
+ android:background="?attr/selectableItemBackground">
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index ced4feb4..eac001d1 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -39,6 +39,7 @@
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-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/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
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
diff --git a/build.gradle b/build.gradle
index c6257b55..79f859b9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.1.3'
+ classpath 'com.android.tools.build:gradle:7.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.10'
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 78eb53b7..48be369b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip