Finish V1_0_32(35)

This commit is contained in:
Giuseppe Scorrano 2019-02-07 18:27:10 +01:00
commit 57768a8f71
22 changed files with 2310 additions and 60 deletions

Binary file not shown.

View File

@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 34 def appVersionCode = 35
def appVersionName = '1.0.31' def appVersionName = '1.0.32'
signingConfigs { signingConfigs {
release { release {

View File

@ -12,9 +12,9 @@
android:name=".MainApplication" android:name=".MainApplication"
android:allowBackup="true" android:allowBackup="true"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher" android:icon="@drawable/integry_round_icon"
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@drawable/integry_round_icon"
android:supportsRtl="true" android:supportsRtl="true"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">

View File

@ -121,8 +121,7 @@ public class MainActivity extends AppCompatActivity
@Override @Override
public boolean onNavigationItemSelected(MenuItem item) { public boolean onNavigationItemSelected(MenuItem item) {
mBinding.appBarMain.waterfallToolbar.resetElevation(); mBinding.appBarMain.waterfallToolbar.resetAll();
mBinding.appBarMain.waterfallToolbar.setRecyclerView(null);
// Handle navigation view item clicks here. // Handle navigation view item clicks here.
Fragment fragment = null; Fragment fragment = null;

View File

@ -5,6 +5,7 @@ import android.util.Base64;
import java.io.IOException; import java.io.IOException;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityString;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.Request; import okhttp3.Request;
@ -19,7 +20,7 @@ public class HttpInterceptor implements Interceptor {
@Override @Override
public Response intercept(Chain chain) throws IOException { public Response intercept(Chain chain) throws IOException {
final String PROFILE_DB = SettingsManager.i().userSession.profileDB; final String PROFILE_DB = SettingsManager.i().userSession == null ? null : SettingsManager.i().userSession.profileDB;
final String USERNAME = SettingsManager.i().user.username; final String USERNAME = SettingsManager.i().user.username;
final String PASSWORD = SettingsManager.i().user.password; final String PASSWORD = SettingsManager.i().user.password;

View File

@ -1,14 +1,21 @@
package it.integry.integrywmsnative.core.di; package it.integry.integrywmsnative.core.di;
import java.math.BigDecimal;
import java.math.RoundingMode;
import androidx.databinding.BaseObservable; import androidx.databinding.BaseObservable;
public class BindableFloat extends BaseObservable { public class BindableFloat extends BaseObservable {
Float value; private Float value;
public Float get() { public Float get() {
return get(true); return get(true);
} }
public BigDecimal getBigDecimal() {
return new BigDecimal(get()).setScale(3, RoundingMode.CEILING);
}
public Float get(boolean defaultIfNull) { public Float get(boolean defaultIfNull) {
if(value == null){ if(value == null){

View File

@ -4,6 +4,7 @@ import android.content.Context;
import com.google.firebase.perf.metrics.Trace; import com.google.firebase.perf.metrics.Trace;
import java.net.SocketTimeoutException;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
@ -84,7 +85,7 @@ public class SettingsManager {
RunnableArgs<Exception> tmpOnFailed = ex -> { RunnableArgs<Exception> tmpOnFailed = ex -> {
perfTrace.putAttribute("failed", "true"); perfTrace.putAttribute("failed", "true");
onFailed.run(ex); if(!(ex instanceof SocketTimeoutException)) onFailed.run(ex);
}; };
loadDatiAzienda(() -> loadDatiAzienda(() ->

View File

@ -118,8 +118,7 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
private void init() { private void init() {
final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), getText(R.string.loading) + " ...", true);
getText(R.string.loading) + " ...", true);
helper = new AccettazioneHelper(getActivity()); helper = new AccettazioneHelper(getActivity());

View File

@ -765,7 +765,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
.setCodMart(item.mtbAart.getCodMart()) .setCodMart(item.mtbAart.getCodMart())
.setPartitaMag(quantityDTO.batchLot.get()) .setPartitaMag(quantityDTO.batchLot.get())
.setDataScadPartita(quantityDTO.expireDate) .setDataScadPartita(quantityDTO.expireDate)
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())) .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
.setDescrizione(item.descrizioneEstesa) .setDescrizione(item.descrizioneEstesa)
.setNumOrd(item.numOrd) .setNumOrd(item.numOrd)
.setDataOrd(item.getDataOrd()) .setDataOrd(item.getDataOrd())

View File

@ -12,6 +12,7 @@ import android.view.ViewGroup;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
@ -83,6 +84,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment {
@Override @Override
public void onDestroyView() { public void onDestroyView() {
mViewModel.closeLU();
BarcodeManager.removeCallback(barcodeScannerIstanceID); BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onDestroyView(); super.onDestroyView();
} }

View File

@ -395,9 +395,9 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> { DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
mtbColr mtbColr
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())) .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get())) .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
.setNumCnf(new BigDecimal(quantityDTO.numCnf.get())) .setNumCnf(quantityDTO.numCnf.getBigDecimal())
.setDatetimeRow(new Date()); .setDatetimeRow(new Date());
onComplete.run(mtbColr); onComplete.run(mtbColr);

View File

@ -316,7 +316,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
.setCodMart(mtbAart.getCodMart()) .setCodMart(mtbAart.getCodMart())
.setPartitaMag(quantityDTO.batchLot.get()) .setPartitaMag(quantityDTO.batchLot.get())
.setDataScadPartita(quantityDTO.expireDate) .setDataScadPartita(quantityDTO.expireDate)
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())) .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
.setDescrizione(mtbAart.getDescrizioneEstesa()); .setDescrizione(mtbAart.getDescrizioneEstesa());
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
@ -499,7 +499,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
mtbColrToEditClone mtbColrToEditClone
.setRiga(null) .setRiga(null)
.setDatetimeRow(new Date()) .setDatetimeRow(new Date())
.setQtaCol(new BigDecimal(value.qtaTot.get()).subtract(mtbColrToEditClone.getQtaCol())) .setQtaCol(value.qtaTot.getBigDecimal().subtract(mtbColrToEditClone.getQtaCol()))
.setOperation(CommonModelConsts.OPERATION.INSERT); .setOperation(CommonModelConsts.OPERATION.INSERT);
MtbColt mtbColtClone = (MtbColt) mtbColt.get().clone(); MtbColt mtbColtClone = (MtbColt) mtbColt.get().clone();
@ -514,7 +514,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
mtbColt.get().getMtbColr().remove(index); mtbColt.get().getMtbColr().remove(index);
mtbColrToEditClone mtbColrToEditClone
.setQtaCol(new BigDecimal(value.qtaTot.get())) .setQtaCol(value.qtaTot.getBigDecimal())
.setOperation(CommonModelConsts.OPERATION.NO_OP); .setOperation(CommonModelConsts.OPERATION.NO_OP);
mtbColt.get().getMtbColr().add(index, mtbColrToEditClone); mtbColt.get().getMtbColr().add(index, mtbColrToEditClone);

View File

@ -24,6 +24,7 @@ import it.integry.integrywmsnative.core.REST.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PosizioneRESTonsumer;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
@ -34,11 +35,13 @@ import it.integry.integrywmsnative.core.model.FiltroOrdineDTO;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
@ -147,8 +150,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.toList(); .toList();
if(foundGestioni != null && foundGestioni.size() > 1){ if(foundGestioni != null && foundGestioni.size() > 1){
UtilityExceptions.defaultException(mActivity, new Exception("Impossibile caricare ordini di diverse gestioni")); DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString("Impossibile caricare ordini di diverse gestioni"), null, () -> {
mActivity.finish(); mActivity.finish();
}).show();
// UtilityExceptions.defaultException(mActivity, new Exception("Impossibile caricare ordini di diverse gestioni"));
// mActivity.finish();
return; return;
} else if(foundGestioni != null && foundGestioni.size() == 1){ } else if(foundGestioni != null && foundGestioni.size() == 1){
defaultGestioneOfUL = foundGestioni.get(0); defaultGestioneOfUL = foundGestioni.get(0);
@ -334,10 +340,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
if(UtilityBarcode.isEtichettaAnonima(data)){ if(UtilityBarcode.isEtichettaAnonima(data)){
//Cerco gli articoli presenti nell'ul dell'etichetta anonima //Cerco gli articoli presenti nell'ul dell'etichetta anonima
this.executeEtichettaLU(data.getStringValue(), progressDialog); this.executeEtichettaLU(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)) {
} else if(UtilityBarcode.isEtichetta128(data)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(data, progressDialog); this.executeEtichettaEan128(data, progressDialog);
} else if(UtilityBarcode.isEtichettaPosizione(data)) {
//Cerco l'UL presente all'interno della posizione
this.executeEtichettaPosizione(data.getStringValue(), progressDialog);
} else { } else {
this.loadArticolo(data.getStringValue(), null, progressDialog); this.loadArticolo(data.getStringValue(), null, progressDialog);
} }
@ -377,6 +391,65 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
UtilityExceptions.defaultException(mActivity, ex, progressDialog); UtilityExceptions.defaultException(mActivity, ex, progressDialog);
BarcodeManager.enable(); BarcodeManager.enable();
}); });
}
private void executeEtichettaPosizione(String posizione, ProgressDialog progressDialog) {
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(posizione);
if(foundPosizione != null) {
if(foundPosizione.isFlagMonoCollo()) {
PosizioneRESTonsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> {
if(mtbColtList == null || mtbColtList.size() == 0 || mtbColtList.size() > 1) {
progressDialog.dismiss();
//Nessuna UL trovata oppure più UL nella stessa posizione
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString("Nessuna UL trovata"), null, BarcodeManager::enable).show();
} else {
ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
searchArtFromUL(mtbColt, progressDialog);
} else {
progressDialog.dismiss();
showNoArtFoundDialog();
}
BarcodeManager.enable();
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progressDialog);
BarcodeManager.enable();
});
}
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progressDialog);
BarcodeManager.enable();
});
} else {
progressDialog.dismiss();
//La posizione non è Mono-UL
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString("La posizione scelta non è Mono-UL"), null, BarcodeManager::enable).show();
}
} else {
progressDialog.dismiss();
//Nessuna posizione trovata con questo barcode
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString("Nessuna posizione trovata con il barcode scansionato"), null, BarcodeManager::enable).show();
}
} }
@ -418,7 +491,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} else { } else {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) { if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1, barcodeProd.length()); barcodeProd = barcodeProd.substring(1);
} }
this.loadArticolo(barcodeProd, PickingObjectDTO.PickData.fromEan128(ean128Model), progressDialog); this.loadArticolo(barcodeProd, PickingObjectDTO.PickData.fromEan128(ean128Model), progressDialog);
@ -998,9 +1071,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
final MtbColr mtbColr = new MtbColr() final MtbColr mtbColr = new MtbColr()
.setCodMart(item.getCodMart()) .setCodMart(item.getCodMart())
.setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get())) .setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())) .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get())) .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
.setNumCnf(new BigDecimal(quantityDTO.numCnf.get())) .setNumCnf(quantityDTO.numCnf.getBigDecimal())
.setDescrizione(item.getDescrizioneEstesa()) .setDescrizione(item.getDescrizioneEstesa())
.setDatetimeRow(new Date()); .setDatetimeRow(new Date());
@ -1023,7 +1096,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();

View File

@ -327,9 +327,9 @@ public class VersamentoMerceViewModel {
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> { DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
mtbColr mtbColr
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())) .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get())) .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
.setNumCnf(new BigDecimal(quantityDTO.numCnf.get())) .setNumCnf(quantityDTO.numCnf.getBigDecimal())
.setDatetimeRow(new Date()); .setDatetimeRow(new Date());
onComplete.run(mtbColr); onComplete.run(mtbColr);

View File

@ -176,7 +176,7 @@ public class ArticoliInColloBottomSheetViewModel {
final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting), final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting),
mContext.getText(R.string.loading) + " ...", true); mContext.getText(R.string.loading) + " ...", true);
itemToEdit.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get())); itemToEdit.setQtaCol(quantityDTO.qtaTot.getBigDecimal());
ColliMagazzinoRESTConsumer.updateRiga(itemToEdit, () ->{ ColliMagazzinoRESTConsumer.updateRiga(itemToEdit, () ->{
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);

View File

@ -25,6 +25,7 @@ import android.widget.EditText;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
@ -328,7 +329,9 @@ public class DialogInputQuantity {
} }
if(quantityDTO.numCnf.get(false) == null) { if(quantityDTO.numCnf.get(false) == null) {
quantityDTO.numCnf.set(quantityDTO.qtaTot.get() / quantityDTO.qtaCnf.get()); float numCnf = (float) Math.ceil(quantityDTO.qtaTot.get() / quantityDTO.qtaCnf.get());
if(numCnf < 1) numCnf = 1;
quantityDTO.numCnf.set(numCnf);
} }
quantityDTO.canPartitaMagBeChanged.set(dto.getCanPartitaMagBeChanged()); quantityDTO.canPartitaMagBeChanged.set(dto.getCanPartitaMagBeChanged());
@ -457,7 +460,7 @@ public class DialogInputQuantity {
if(quantityDTO.numCnfNotificationEnabled) { if(quantityDTO.numCnfNotificationEnabled) {
quantityDTO.blockedNumDiCnf.set(!(quantityDTO.numCnf.get(true) == 0 || quantityDTO.numCnf.get().toString() == "")); quantityDTO.blockedNumDiCnf.set(!(quantityDTO.numCnf.get(true) == 0 || quantityDTO.numCnf.get().toString().equals("")));
toggleTextInputLayoutError(txlInputNumDiCnf, quantityDTO.blockedNumDiCnf.get()); toggleTextInputLayoutError(txlInputNumDiCnf, quantityDTO.blockedNumDiCnf.get());
@ -492,7 +495,7 @@ public class DialogInputQuantity {
if(quantityDTO.qtaCnfNotificationEnabled) { if(quantityDTO.qtaCnfNotificationEnabled) {
quantityDTO.blockedQtaPerCnf.set(!(quantityDTO.qtaCnf.get(true) == 0 || quantityDTO.qtaCnf.get().toString() == "")); quantityDTO.blockedQtaPerCnf.set(!(quantityDTO.qtaCnf.get(true) == 0 || quantityDTO.qtaCnf.get().toString().equals("")));
toggleTextInputLayoutError(txlInputQtaPerCnf, quantityDTO.blockedQtaPerCnf.get()); toggleTextInputLayoutError(txlInputQtaPerCnf, quantityDTO.blockedQtaPerCnf.get());
@ -527,7 +530,7 @@ public class DialogInputQuantity {
if (quantityDTO.qtaTotNotificationEnabled) { if (quantityDTO.qtaTotNotificationEnabled) {
quantityDTO.blockedQtaTot.set(!(quantityDTO.qtaTot.get(true) == 0 || quantityDTO.qtaTot.get().toString() == "")); quantityDTO.blockedQtaTot.set(!(quantityDTO.qtaTot.get(true) == 0 || quantityDTO.qtaTot.get().toString().equals("")));
toggleTextInputLayoutError(txlInputQtaTot, quantityDTO.blockedQtaTot.get()); toggleTextInputLayoutError(txlInputQtaTot, quantityDTO.blockedQtaTot.get());

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -30,16 +30,18 @@
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" android:src="@drawable/integry_round_icon"
android:paddingTop="12dp" android:adjustViewBounds="true"
android:paddingBottom="12dp" android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_gravity="center"/> android:layout_gravity="center"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toolbar_title" android:id="@+id/toolbar_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/app_name" android:text="@string/integry"
android:layout_marginStart="8dp"
android:letterSpacing="-0.05" android:letterSpacing="-0.05"
style="@style/AppTheme.NewMaterial.Text.ToolbarTitle" style="@style/AppTheme.NewMaterial.Text.ToolbarTitle"
android:layout_gravity="center"/> android:layout_gravity="center"/>
@ -56,7 +58,6 @@
android:visibility="gone" android:visibility="gone"
style="@style/AppTheme.NewMaterial.Text.ToolbarTitle"/> style="@style/AppTheme.NewMaterial.Text.ToolbarTitle"/>
<androidx.appcompat.widget.SearchView <androidx.appcompat.widget.SearchView
android:id="@+id/main_search" android:id="@+id/main_search"
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -300,7 +300,7 @@
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="numberDecimal" android:inputType="number"
android:hint="@string/num_pcks" android:hint="@string/num_pcks"
android:gravity="end" android:gravity="end"
app:binding="@{quantityViewModel.numCnf}" > app:binding="@{quantityViewModel.numCnf}" >

View File

@ -1,5 +1,6 @@
<resources> <resources>
<string name="app_name" translatable="false">Integry WMS</string> <string name="app_name" translatable="false">Integry WMS</string>
<string name="integry" translatable="false">Integry</string>
<string name="navigation_drawer_open">Open navigation drawer</string> <string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string> <string name="navigation_drawer_close">Close navigation drawer</string>

2131
images/RoundLogoWithText.ai Normal file

File diff suppressed because one or more lines are too long

View File

@ -8,6 +8,7 @@ import androidx.annotation.RequiresApi
import androidx.core.widget.NestedScrollView import androidx.core.widget.NestedScrollView
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import android.view.ViewTreeObserver
import android.widget.ScrollView import android.widget.ScrollView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -33,6 +34,15 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
addRecyclerViewScrollListener() addRecyclerViewScrollListener()
} }
var recyclerViewScrollListener : RecyclerView.OnScrollListener = object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
// real position must always get updated
realPosition.value = realPosition.value + dy
mutualScrollListenerAction()
}
}
/** /**
* The scroll view whose scroll is going to be listened * The scroll view whose scroll is going to be listened
*/ */
@ -42,13 +52,25 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
addScrollViewScrollListener() addScrollViewScrollListener()
} }
var scrollViewScrollListener : ViewTreeObserver.OnScrollChangedListener = ViewTreeObserver.OnScrollChangedListener {
// real position must always get updated
realPosition.value = scrollView!!.scrollY
mutualScrollListenerAction()
}
/** /**
* The scroll view whose scroll is going to be listened * The scroll view whose scroll is going to be listened
*/ */
var nestedScrollView: NestedScrollView? = null var nestedScrollView: NestedScrollView? = null
set(value) { set(value) {
field = value field = value
addNestedScrollViewScrollListener() if (value != null) addNestedScrollViewScrollListener()
}
var nestedScrollViewScrollListener : ViewTreeObserver.OnScrollChangedListener = ViewTreeObserver.OnScrollChangedListener {
// real position must always get updated
realPosition.value = nestedScrollView!!.scrollY
mutualScrollListenerAction()
} }
/** /**
@ -144,11 +166,24 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
init(context, attrs) init(context, attrs)
} }
public fun resetElevation() { fun resetElevation() {
realPosition = Px(0) realPosition = Px(0)
cardElevation = 0f cardElevation = 0f
} }
fun resetAll() {
resetElevation()
removeNestedScrollViewScrollListener()
nestedScrollView = null
removeRecyclerViewScrollListener()
recyclerView = null
removeScrollViewScrollListener()
scrollView = null
}
private fun init(context: Context?, attrs: AttributeSet?) { private fun init(context: Context?, attrs: AttributeSet?) {
// leave card corners square // leave card corners square
radius = 0f radius = 0f
@ -183,29 +218,27 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
} }
private fun addRecyclerViewScrollListener() { private fun addRecyclerViewScrollListener() {
recyclerView?.addOnScrollListener(object : RecyclerView.OnScrollListener() { recyclerView?.addOnScrollListener(recyclerViewScrollListener)
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
// real position must always get updated
realPosition.value = realPosition.value + dy
mutualScrollListenerAction()
} }
})
private fun removeRecyclerViewScrollListener() {
recyclerView?.removeOnScrollListener(recyclerViewScrollListener)
} }
private fun addScrollViewScrollListener() { private fun addScrollViewScrollListener() {
scrollView?.viewTreeObserver?.addOnScrollChangedListener { scrollView?.viewTreeObserver?.addOnScrollChangedListener(scrollViewScrollListener)
// real position must always get updated
realPosition.value = scrollView!!.scrollY
mutualScrollListenerAction()
} }
private fun removeScrollViewScrollListener() {
scrollView?.viewTreeObserver?.removeOnScrollChangedListener(scrollViewScrollListener)
} }
private fun addNestedScrollViewScrollListener() { private fun addNestedScrollViewScrollListener() {
nestedScrollView?.viewTreeObserver?.addOnScrollChangedListener { nestedScrollView?.viewTreeObserver?.addOnScrollChangedListener(nestedScrollViewScrollListener)
realPosition.value = nestedScrollView!!.scrollY
mutualScrollListenerAction()
} }
private fun removeNestedScrollViewScrollListener() {
nestedScrollView?.viewTreeObserver?.removeOnScrollChangedListener(nestedScrollViewScrollListener)
} }
/** /**