Finish v1_10_6(109)

This commit is contained in:
Giuseppe Scorrano 2019-12-13 09:18:47 +01:00
commit 15332ee349
16 changed files with 496 additions and 42 deletions

View File

@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 108
def appVersionName = '1.10.5'
def appVersionCode = 109
def appVersionName = '1.10.6'
signingConfigs {
release {

View File

@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_recover;
import android.content.Context;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.android.gms.common.util.IOUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@ -16,6 +18,7 @@ import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.model.MtbColt;
@ -24,12 +27,22 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
public class ColliDataRecover {
private static class RecoverDTO {
private int id;
private int numCollo;
private String serCollo;
private String dataCollo;
private String gestioneCollo;
private String filtro;
public int getId() {
return id;
}
public RecoverDTO setId(int id) {
this.id = id;
return this;
}
public int getNumCollo() {
return numCollo;
}
@ -92,26 +105,12 @@ public class ColliDataRecover {
return mtbColtsSessions.size() > 0;
}
public static Integer getFirstSessionID() {
if(thereIsAnExistantSession()){
return 0;
} else return null;
}
public static List<Integer> getAllSessionIDs() {
if(thereIsAnExistantSession()) {
List<Integer> sessionIDs = new ArrayList<>();
for(int i = 0; i < mtbColtsSessions.size(); i++){
sessionIDs.add(i);
}
return sessionIDs;
return Stream.of(mtbColtsSessions)
.map(RecoverDTO::getId)
.toList();
} else return null;
}
@ -120,7 +119,7 @@ public class ColliDataRecover {
if(sessionID == null) return null;
RecoverDTO dto = mtbColtsSessions.get(sessionID);
RecoverDTO dto = getIfExists(sessionID);
return new MtbColt()
.setNumCollo(dto.getNumCollo())
@ -130,9 +129,27 @@ public class ColliDataRecover {
.setFiltroOrdini(dto.getFiltro());
}
private static RecoverDTO getIfExists(int id) {
Optional<RecoverDTO> recoverDTOOptional = Stream.of(mtbColtsSessions)
.filter(x -> x.getId() == id)
.findSingle();
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
}
public static int startNewSession(MtbColt mtbColtSession) {
Integer newId = null;
while(newId == null) {
int randomId = new Random().nextInt(1000);
RecoverDTO dto = getIfExists(randomId);
if(dto == null) newId = randomId;
}
RecoverDTO recoverDTO = new RecoverDTO()
.setId(newId)
.setDataCollo(mtbColtSession.getDataColloS())
.setNumCollo(mtbColtSession.getNumCollo())
.setSerCollo(mtbColtSession.getSerCollo())
@ -141,12 +158,16 @@ public class ColliDataRecover {
mtbColtsSessions.add(recoverDTO);
updateLocalFile();
return mtbColtsSessions.indexOf(recoverDTO);
return newId;
}
public static void closeSession(int ID) {
mtbColtsSessions.remove(ID);
updateLocalFile();
RecoverDTO dto = getIfExists(ID);
if(dto != null) {
mtbColtsSessions.remove(dto);
updateLocalFile();
}
}

View File

@ -52,6 +52,7 @@ public class MtbColt extends EntityBase {
private Integer numDoc;
private Integer numDocProvv;
private BigDecimal pesoKg;
private BigDecimal pesoNettoKg;
private BigDecimal lunghezzaCm;
private BigDecimal larghezzaCm;
private BigDecimal altezzaCm;
@ -427,6 +428,15 @@ public class MtbColt extends EntityBase {
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public MtbColt setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getLunghezzaCm() {
return lunghezzaCm;
}

View File

@ -36,4 +36,24 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
}
});
}
public static void getTipiCollo(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol ";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType();
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() {
@Override
public void onSuccess(List<MtbTCol> values) {
if(onComplete != null) {
onComplete.run(values);
}
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@ -26,6 +26,7 @@ public class DBSettingsModel {
private boolean flagCanAutoOpenNewULAccettazione;
private boolean flagCanAddExtraQuantitySpedizione;
private boolean flagEnableCheckDepositoSpedizione;
private boolean flagForceAllToColli;
public List<String> getAvailableProfiles() {
return availableProfiles;
@ -150,4 +151,13 @@ public class DBSettingsModel {
this.flagEnableCheckDepositoSpedizione = flagEnableCheckDepositoSpedizione;
return this;
}
public boolean isFlagForceAllToColli() {
return flagForceAllToColli;
}
public DBSettingsModel setFlagForceAllToColli(boolean flagForceAllToColli) {
this.flagForceAllToColli = flagForceAllToColli;
return this;
}
}

View File

@ -218,6 +218,10 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("ENABLE_CHECK_DEPOSITO"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SETUP")
.setKeySection("FLAG_FORCE_ALL_TO_COLLI"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@ -231,6 +235,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "ENABLE_CHECK_DEPOSITO", Boolean.class));
dbSettingsModelIstance.setFlagForceAllToColli(getValueFromList(list, "FLAG_FORCE_ALL_TO_COLLI", Boolean.class));
if(onComplete != null) onComplete.run();
}, onFailed);

View File

@ -50,7 +50,7 @@ public class UtilityBarcode {
}
public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) {
return isEan13(barcodeScanDTO) && barcodeScanDTO.getStringValue().startsWith("2");
return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("2");
}
public static boolean isEan13(BarcodeScanDTO barcodeScanDTO) {

View File

@ -155,8 +155,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
cyclicRecover(sessionsIterator, onComplete, onFailed);
}, ex -> {
if(ex.getMessage().contains("Dati collo non corretti")) {
if(ex.getMessage().contains("Dati collo non corretti") || (ex.getMessage().contains("Il collo numero") && ex.getMessage().contains("non esiste"))) {
ColliDataRecover.closeSession(recoveredMtbColtID);
onFailed.run(ex);
} else {
onFailed.run(ex);
}

View File

@ -5,19 +5,29 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputQuantityToReturnBinding;
public class InputQuantityToReturnDialog {
private Context mContext;
private Dialog currentDialog;
public static Dialog make(final Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs<BigDecimal> onDialogDismiss) {
@ -25,6 +35,8 @@ public class InputQuantityToReturnDialog {
}
private InputQuantityToReturnDialog(Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs<BigDecimal> onDialogDismiss) {
this.mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogInputQuantityToReturnBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_to_return, null, false);
@ -55,7 +67,6 @@ public class InputQuantityToReturnDialog {
}
public class InputQuantityToReturnViewModel {
public MtbAart mtbAart;

View File

@ -77,7 +77,7 @@ public class VenditaOrdineInevasoHelper {
if(tmpList.get(i).isHidden() == null || forceHiddenCheck) {
PickingObjectDTO tmpItem = tmpList.get(i);
tmpItem.setHidden(tmpItem.getQtaCollo().floatValue() < 0);
tmpItem.setHidden(tmpItem.getQtaCollo().compareTo(BigDecimal.ZERO) <= 0 || (!tmpItem.getMtbAart().isFlagQtaCnfFissa() && tmpItem.getNumCnfCollo().compareTo(BigDecimal.ZERO) <= 0));
tmpItem.setTempHidden(false);
}
}

View File

@ -69,6 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
@ -357,18 +358,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
//dell'etichetta anonima
this.executeEtichettaAnonimaNotOpenedLU(data, progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)) {
//Creo una nuova ul e cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.createNewUL(null, null, progressDialog, false, false, () -> {
this.executeEtichettaEan128(data, progressDialog);
});
} else if(UtilityBarcode.isEanPeso(data)) {
//Creo una nuova ul e cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.createNewUL(null, null, progressDialog, false, false, () -> {
this.executeEtichettaEanPeso(data, progressDialog);
});
} else if(UtilityBarcode.isEtichetta128(data)) {
//Creo una nuova ul e cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.createNewUL(null, null, progressDialog, false, false, () -> {
this.executeEtichettaEan128(data, progressDialog);
});
} else {
this.createNewUL(null, null, progressDialog, false, false, () -> {
this.loadArticolo(data.getStringValue(), null, progressDialog);
@ -380,16 +381,16 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
this.executeEtichettaLU(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(data, progressDialog);
} else if(UtilityBarcode.isEanPeso(data)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEanPeso(data, progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(data, progressDialog);
} else if(UtilityBarcode.isEtichettaPosizione(data)) {
//Cerco l'UL presente all'interno della posizione
this.executeEtichettaPosizione(data.getStringValue(), progressDialog);
@ -867,7 +868,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
ColliMagazzinoRESTConsumer.doesColloContainsAnyRow(currentMtbColt, containRows -> {
if(containRows) {
ColliMagazzinoRESTConsumer.updateDataFine(
DialogInputPeso.make(mActivity, currentMtbColt.getCodTcol(), currentMtbColt.getPesoNettoKg(), currentMtbColt.getPesoKg(), (newCodTcol, newNetWeight, newGrossWeight) -> {
currentMtbColt.setCodTcol(newCodTcol);
currentMtbColt.setPesoNettoKg(newNetWeight);
currentMtbColt.setPesoKg(newGrossWeight);
ColliMagazzinoRESTConsumer.updateDataFine(
mActivity,
progress,
currentMtbColt,
@ -878,6 +885,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.dismiss();
}
}));
}).show();
} else {
if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID);
deleteCollo(progress, onComplete);
@ -1045,6 +1053,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
public void onOrdineRowDispatch(final PickingObjectDTO item) {
if(mArticoliInColloBottomSheetViewModel.mtbColt.get() != null){
List<MtbColr> currentMtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr();
List<MtbColr> filteredMtbColrs = Stream.of(currentMtbColrs).filter(
@ -1115,6 +1124,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
if(item.getTempPickData() != null) {
PickingObjectDTO.PickData tmpPickData = item.getTempPickData();
if(tmpPickData.getQtaCnf() == null && tmpPickData.getNumCnf() != null && tmpPickData.getQtaTot() != null) {
tmpPickData.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf(), 3, RoundingMode.HALF_EVEN));
}
boolean isTakenFromUL = tmpPickData.getSourceMtbColt() != null;
if(tmpPickData.getMtbPartitaMag() != null) {
if (!UtilityString.isNullOrEmpty(tmpPickData.getMtbPartitaMag().getPartitaMag())) {
@ -1132,16 +1147,21 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
boolean useQtaDaEvadere = false;
if(tmpPickData.getQtaTot() != null) {
useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa();
useQtaDaEvadere = isTakenFromUL || (qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa());
if (useQtaDaEvadere) {
dto.setQtaTot(qtaDaEvadere);
dto.setMaxQta(qtaDaEvadere);
if(isTakenFromUL) {
dto.setNumCnf(qtaDaEvadere.divide(tmpPickData.getQtaCnf(), 0, RoundingMode.HALF_UP).intValue());
}
} else {
dto.setQtaTot(tmpPickData.getQtaTot());
dto.setMaxQta(tmpPickData.getQtaTot());
if(tmpPickData.getNumCnf() != null) {
dto.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf()));
dto.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf(), 3, RoundingMode.HALF_UP));
} else {
dto.setQtaCnf(tmpPickData.getQtaTot());
}
@ -1206,6 +1226,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setNumColloRif(sourceMtbColt.getNumCollo())
.setGestioneRif(UtilityString.empty2null(sourceMtbColt.getGestione()))
.setDataColloRif(UtilityString.empty2null(sourceMtbColt.getDataColloS()));
MtbColt currentOpenedMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
if( currentOpenedMtbColt.getCodTcol() == null &&
currentOpenedMtbColt.getPesoKg() == null &&
currentOpenedMtbColt.getPesoNettoKg() == null) {
currentOpenedMtbColt.setCodTcol(sourceMtbColt.getCodTcol());
currentOpenedMtbColt.setPesoKg(sourceMtbColt.getPesoKg());
currentOpenedMtbColt.setPesoNettoKg(sourceMtbColt.getPesoNettoKg());
}
} else if(item.getNumCollo() != null) {
mtbColr
.setCodJcom(UtilityString.empty2null(item.getCodJcom()))
@ -1219,7 +1251,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setMtbColr(new ObservableArrayList());
cloneMtbColt.getMtbColr().add(mtbColr);

View File

@ -0,0 +1,136 @@
package it.integry.integrywmsnative.view.dialogs.input_peso_lu;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding;
public class DialogInputPeso {
private Context mContext;
private DialogInputPesoLuBinding mBindings;
private DialogInputPesoViewModel mViewModel;
private Dialog currentDialog;
private List<MtbTCol> codTcolList = null;
private ArrayAdapter<String> codTcolArrayAdapter = null;
public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog;
}
private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
this.mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_peso_lu, null, false);
currentDialog = new Dialog(context);
currentDialog.setContentView(mBindings.getRoot());
currentDialog.setCanceledOnTouchOutside(false);
currentDialog.setCancelable(false);
currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mViewModel = new DialogInputPesoViewModel();
mViewModel.codTcol.set(codTcol);
mViewModel.netWeight.set(UtilityNumber.decimalToString(netWeight));
mViewModel.grossWeight.set(UtilityNumber.decimalToString(grossWeight));
mBindings.setViewModel(mViewModel);
mBindings.buttonConfirm.setOnClickListener(v -> {
currentDialog.dismiss();
String newCodTcol = null;
if(mViewModel.codTcol.get() != null) {
Optional<MtbTCol> newCodTcolOptional = Stream.of(codTcolList)
.filter(x -> (x.getCodTcol() + " - " + x.getDescrizione()).equalsIgnoreCase(mViewModel.codTcol.get()))
.findSingle();
if(newCodTcolOptional.isPresent()) newCodTcol = newCodTcolOptional.get().getCodTcol();
}
BigDecimal netWeightDecimal = new BigDecimal(mViewModel.netWeight.get());
BigDecimal grossWeightDecimal = new BigDecimal(mViewModel.grossWeight.get());
onDialogDismiss.run(newCodTcol, netWeightDecimal, grossWeightDecimal);
});
this.init();
}
private void init() {
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
MagazzinoRESTConsumer.getTipiCollo(codTcols -> {
this.codTcolList = codTcols;
List<String> codTcolDescriptions = Stream.of(codTcols)
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.toList();
if(mViewModel.codTcol.get() != null) {
Optional<String> newCodTcol = Stream.of(codTcols)
.filter(x -> x.getCodTcol().equalsIgnoreCase(mViewModel.codTcol.get()))
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.findSingle();
if(newCodTcol.isPresent()) mViewModel.codTcol.set(newCodTcol.get());
}
codTcolArrayAdapter = new ArrayAdapter(mContext, R.layout.array_adapter_single_item);
codTcolArrayAdapter.addAll(codTcolDescriptions);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
progressDialog.dismiss();
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
});
}
public class DialogInputPesoViewModel {
public BindableString codTcol = new BindableString();
public BindableString netWeight = new BindableString();
public BindableString grossWeight = new BindableString();
}
}

View File

@ -0,0 +1,8 @@
<androidx.appcompat.widget.AppCompatTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"
style="@style/AppTheme.NewMaterial.Text"/>

View File

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.text.Html" />
<import type="it.integry.integrywmsnative.R" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable
name="mContext"
type="android.content.Context" />
<variable
name="viewModel"
type="it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso.DialogInputPesoViewModel" />
</data>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_blue_300"
android:gravity="center_horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_error_white_24dp"
android:layout_margin="24dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="24dp"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/action_insert_weight"
android:gravity="center_horizontal"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial"
android:text="@string/dialog_input_peso_lu_description"
android:gravity="center"
android:layout_marginTop="16dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_tcol"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/lu_type">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cod_tcol"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
app:binding="@{viewModel.codTcol}"/>
</com.google.android.material.textfield.TextInputLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_center_1"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.49"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_center_2"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.51"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="@id/guide_center_1"
android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/gross_weight"
android:inputType="numberDecimal"
app:binding="@{viewModel.grossWeight}"
style="@style/TextInputEditText.OutlinePrimary"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/guide_center_2"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/net_weight"
android:inputType="numberDecimal"
app:binding="@{viewModel.netWeight}"
style="@style/TextInputEditText.OutlinePrimary"/>
</com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingTop="12dp"
android:paddingBottom="8dp"
android:gravity="bottom|center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
app:icon="@drawable/ic_save_24dp"
android:text="@string/confirm"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -45,6 +45,8 @@
<string name="action_orderBy">Ordina</string>
<string name="action_create_ul">Crea nuova UL</string>
<string name="action_insert_quantity">Inserisci quantità</string>
<string name="action_insert_weight">Inserisci peso</string>
<string name="dialog_input_peso_lu_description">Inserisci le informazioni del TIPO UL e il peso NETTO e LORDO</string>
<string name="action_show_created_ul">Mostra UL già create</string>
<string name="action_recover_ul">Recupera UL</string>
<string name="action_print_ul">Stampa UL</string>
@ -119,6 +121,9 @@
<string name="quantity">Quantità</string>
<string name="packages">Confezioni</string>
<string name="quantity_short">Qtà</string>
<string name="net_weight">Peso netto (KG)</string>
<string name="gross_weight">Peso lordo (KG)</string>
<string name="lu_type">Tipo pedana</string>
<string name="ordered_abbr">Ord</string>
<string name="to_dispatch_abbr">Da ev</string>

View File

@ -71,7 +71,9 @@
<string name="action_orderBy">Order</string>
<string name="action_create_ul">Create new LU</string>
<string name="action_insert_quantity">Insert quantity</string>
<string name="action_insert_weight">Insert weight</string>
<string name="action_show_created_ul">Show already created LU</string>
<string name="dialog_input_peso_lu_description">Insert info about LU TYPE and NET / GROSS weight</string>
<!-- SETTINGS -->
@ -116,6 +118,9 @@
<string name="quantity">Quantity</string>
<string name="packages">Packages</string>
<string name="quantity_short">Qty</string>
<string name="net_weight">Net weight (KG)</string>
<string name="gross_weight">Gross weight (KG)</string>
<string name="lu_type">LU type</string>
<string name="ordered_abbr">Ord</string>
<string name="to_dispatch_abbr">To disp</string>